关于 Hermes 干活的, 严!重!警!告!!!
-
千万不要让LLM干这类工作,绝对会漏,错。应该是先要它写一个清理脚本,给出清理规则,运行后不会直接运行而是输出要清理的结果列表,你先人工确认一下问题不大,再用 --exec 或者其他什么要求真正执行的参数执行。
再蠢的AI,不会这么干还会干砸吧?我用qwen3.6-9b 都能稳定的执行这种操作 -
大语言模型猜猜猜,我感觉 执行操作最好让他 写脚本,把规则固化,再让ai审查,OK了,再tool skill调用。
要是阅读文本,纯ui就无所谓。 -
NAS 用 raid 模式就可以了。云端莫名丢失文件是常态。
-
让Hermes补了一下规则, 希望没有下次。 大家也可以参考:
╭─
Hermes ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
收到。补一条更硬的规则存进技能:
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
┊
preparing skill_manage…
┊
skill_man safe-destructive-ops 0.0s
┊ review diff
a/.hermes/skills/software-development/safe-destructive-ops/SKILL.md → b/.hermes/skills/software-development/safe-destructive-ops/SKILL.md
@@ -0,0 +1,66 @@
+---
+name: safe-destructive-ops
+description: 当任何命令涉及数据破坏(rm、rm -rf、mv 覆盖、truncate、dd、写文件、磁盘操作、数据库 DELETE/DROP/UPDATE 等)时强制执行的安全协议。每次执行前必须获得用户对"具体命令+具体路径"的显式确认,禁止合并多个删除步骤,禁止把"清单"通过"我先列后清"的方式提前合并执行。
+---
+
+# 安全执行破坏性命令的协议
+
+## 触发条件
+任何命令包含以下任一情形,必须走本协议:
+-rm、rm -rf、rm -fr
+-mv目标已存在(覆盖)
+->写入 /truncate/dd/shred
+- 磁盘/分区/文件系统操作:mkfs、fdisk、mount/umount、lvremove等
+- 数据库:DROP、DELETE、TRUNCATE、UPDATE不带WHERE
+- 群晖/FileStation/网盘等远端 API 的 delete/batch delete
+- git:reset --hard、clean -fd、push --force(到非自己分支)
+- 任何带-rf/--force/--no-preserve-root/--recursive的写操作
+
+## 协议步骤(缺一不可)
+
+1. 先只读,不写盘-
- 先用
ls -la、find -printf、stat、du、Python 遍历、sha256sum等纯读操作生成完整清单
- 先用
-
- 对"怀疑重复"的项目:跑 sha256 验证,不能用"同名同大小"推断"内容相同"
-
- 对目录:必须列出该目录下每一项(包括子目录),不能跳过任何 mtime/size 阈值
+2. 清单分类标注
-
- 每条目标项打三类标签之一:
-
- `✗ 确认重复`(sha256 比对过、与另一个位置完全相同) -
- `· 确认独有`(其他位置找不到同名/sha256 不同的) -
- `? 存疑`(同名同大小但 sha256 不同 / 找不到对照 / 不在核对范围) -
- 存疑项必须单独列出,并明确写"未核对",让用户决定
+3. 交付清单,等用户两次确认
-
- 第一次:用户给出"可以清"的初始意向(如"X可以清理")不算确认
-
- 必须等用户看到完整分类清单后的明确确认
-
- 清单中只要有一项是"存疑"或"独有",必须再单独问一次"独有 X 项是否仍要清"
-
- 把每次确认的话原样记录到回复里,方便回溯
+4. 执行时拆分、逐步
-
- 不允许把多个目标合并到一条
rm -rf A B C D
- 不允许把多个目标合并到一条
-
- 按"先清回收站/临时/明显垃圾 → 再清确认重复 → 最后才是存疑"分批
-
- 每批执行完立刻报告结果(
df -h前后对比 + 列出删了哪些),再进行下一批
- 每批执行完立刻报告结果(
-
- 如果中途用户新插入确认要求,立即暂停
+5. 命令本身的展示
-
- 在执行前把要跑的命令原样打印到回复里(带具体路径、具体参数)
-
- 让用户看到"我接下来要跑这条"
+## 禁止的反模式
+
+-
"既然用户说可以清,那全清" → 跳过核对环节
+-
"我先列个清单跑给你看,然后顺手删了" → "先列后清"是违反协议的合并执行
+-
"看到几个样本重复 → 推断整盘都是重复" → 必须每一项核对
+-
"被中断的命令以为没执行" → 任何 rm一旦发出就已生效,必须立刻验证(ls目标是否还在)
+-
"我先做着,你看着说停" → 没有"看着说停"这回事,必须先停下来等确认
+-
把破坏性命令藏在脚本/管道/循环里跑,绕过逐项展示
+
+## 中断/错误的处理
+
+-rm一旦发出,默认认为已经生效,立刻用ls验证
+- 真的误删了 → 立即停手,不要尝试"补救"式再删除(只会扩大损害)
+- 立即向用户坦白:删了什么、还剩什么、哪些信息我没核对过
+
+## 核心原则
+
+> 用户对数据丢失的敏感度永远比"工作流效率"高。任何"先跑一下看看"的擦边球,最终都会让用户付出不可逆的代价。停、等、列、问、答、再动——这六步不可压缩。其实我觉得, 你补充规则, 还是占用上下文, 还是有可能性会被冲掉.
不如, 你不让TA 有 使用 rm 的权限,
或者你给TA用一个假 rm, 这个 rm 使用之后 , 其实是进了 "回收站" -