把你手写的技能锁上:Hermes 现在能拦住 agent 改它,连 --yolo 也不行

你花了一个下午,把团队踩过的坑写成一份部署 runbook:先备份、再切流、回滚窗口只有五分钟、哪些表必须最后迁移。它跑得很好,agent 每次上线都照着做。
然后某天它“自我改进”了一次。curator 觉得这份技能太啰嗦,把步骤合并了;自改进审阅又补了一段“更高效的顺序”。等你发现的时候,“先备份”这一步已经被挪到了切流之后——而这次上线已经跑完了。
问题不在于 agent 学不会规矩,而在于你写的技能和 agent 写的技能放在同一个池子里,权限也一样。Hermes 一直有 pin(钉住),但 pin 只挡住删除和自动归档,编辑和打补丁照旧放行。v0.22.6 补上了真正的那把锁。
pin 和 lock 的区别,一句话说清
- pin:curator 不再自动把它标记为过时或归档,agent 也不能删它;但改内容还是可以。
- lock:agent 完全不能改它,同时技能仍然可读、出现在技能索引里、能被自动加载、正常使用——一分不少。
换句话说,pin 是“别扔了它”,lock 是“别动它”。
怎么锁
hermes curator lock <skill> # 锁上
hermes curator unlock <skill> # 解开
hermes curator status # 看当前锁了哪些
桌面端不用敲命令:打开 Capabilities → Skills,选中技能,用它旁边的锁开关。
锁记录存在当前 profile 的 skills/.usage.json 里,就是 pinned 用的那个 sidecar 文件,字段是 "locked": true。这意味着它是按 profile 隔离的:
hermes -p work curator lock deploy-runbook # 只锁 work 这个 profile 里的副本
能锁的范围很宽:手写的、agent 自己创建的、内置的、从 hub 装的,只要这个 profile 里能解析到这个技能名就能锁。反过来,lock 会拒绝解析不到的名字——所以打错字不会凭空造出一条记录。
锁上之后,哪些路被堵死
被锁的技能,每一条 agent 写入路径都会被拒,覆盖范围比很多人预期的广:
skill_manage的所有变更动作(新建、编辑、打补丁、删除);write_file/patch指向该技能目录内任何路径的写入;terminal里任何会写进去的命令——包括重定向、tee、cp/mv/rm、sed -i这类原地编辑、在技能目录里执行git变更操作、先cd进去再动手、以及内联解释器代码里点名那个路径的写法。
这些限制在 --yolo 模式下同样生效,而且覆盖正常回合、cron 任务、子代理、后台自改进审阅和 curator 流程本身。curator 也不会归档一个被锁的技能。
还有一个细节值得单独说:agent 不能自己解锁。它执行 hermes curator unlock 会被终端层直接拒绝;只要还有技能处于锁定状态,锁记录文件本身也受同样保护。被拒的时候它会被告知:把你想要的改动描述出来,让用户决定。
而你自己的编辑完全不受影响:用编辑器改文件、用桌面的技能编辑器改、用命令行改,都可以。锁约束的是 agent,不是你。
锁不是哪些东西
三点边界,官方文档写得很直接:
- 它只约束 agent,不约束你自己,所以别指望它防住手动误操作。
- 它是一次策略检查,不是沙箱:终端检查读的是命令的写入目标(重定向、
tee、cp/mv/rm、sed -i、技能树里的 git 操作、cd、内联代码里点名的路径)。如果一个脚本通过自己的逻辑去写那个目录,检查看不到。想真正隔离,还是要靠容器或受限终端后端。 .usage.json损坏时的行为是“关键路径失败关闭,日常路径继续”:后台那些会改技能的流程(自改进审阅、curator)会被拒绝执行,而正常对话不受影响——这样一个坏文件不会把所有技能编辑一起冻住。修好文件,或者hermes curator unlock <skill>重写它。
什么时候值得用
- 生产 runbook、合规流程、事故处置手册:错一步代价很大的技能,锁上;
- 你自己维护的团队技能库:你希望 agent 用它,但不希望它“顺手优化”;
- 第三方 skill 刚审完:先用一阵子,确认行为符合预期之后再决定要不要放开。
反过来说,如果你就是希望 agent 帮你迭代某个技能,别锁它,改用 pin 保护它不被归档即可。
关于技能信任边界,站内还有两篇可以接着读:技能守卫的盲区 讲的是“检查器本身漏掉什么”,技能完整性与供应链投毒 讲的是装进来的技能怎么被掉包。锁解决的是第三个问题:它装好之后,谁能改它。
这个能力在 v0.22.6 这个 tag 里,升级后即可使用;hermes curator status 会直接列出当前所有被锁的技能名。