第33篇-写入审批门控-skills-write-approval安全审查
·
【Skills 系统从入门到精通】第 33 篇:写入审批门控——skills.write_approval 安全审查
本篇你将学到
- 为什么需要写入审批门控
- skills.write_approval 的配置和审批流程
- 暂存区机制和持久化
- 审批命令的完整使用
- 何时开启审批的安全策略建议
读完本篇,你将能够安全地控制 Agent 对技能的修改权限。
一、问题与方案
1.1 问题
Agent 的自我改进会自动创建和修改技能。大多数情况下这是好的——Agent 在不断学习。但有些场景需要人工把关:
- 小模型容易误判:能力较弱的模型可能把不值得保存的操作保存为技能
- 安全环境:在高安全要求的环境中,任何知识变更都需要审查
- 质量标准:团队有统一的技能质量标准,需要人工审核
1.2 方案:写入审批门控
# ~/.hermes/config.yaml
skills:
write_approval: false # false=自由写入(默认) | true=需要审批
开启后,Agent 的每次技能写入(create/edit/patch/delete/write_file/remove_file)都不会直接落地,而是进入暂存区等待人类审批。
二、审批流程
2.1 完整流程
2.2 审批命令详解
# 在交互式会话中
/skills pending # 列出所有暂存的技能变更 + 一行摘要
/skills diff <id> # 查看完整 unified diff(CLI 中最佳体验)
/skills approve <id> # 批准某个变更
/skills approve all # 批准所有变更
/skills reject <id> # 拒绝某个变更
/skills reject all # 拒绝所有变更
/skills approval on # 开启审批门控(持久化)
/skills approval off # 关闭审批门控
2.3 暂存区持久化
暂存的变更保存在 ~/.hermes/pending/skills/ 目录下。即使重启 Hermes,暂存的变更也不会丢失——下次启动后仍然可以审查和批准。
2.4 后台审查的暂存
后台自改进审查(不是来自前台对话的技能写入)也会被暂存。暂存机制对所有来源一视同仁——无论写入来自前台还是后台。
三、Diff 查看
3.1 CLI 中的 Diff
CLI 中查看 diff 体验最好——完整的 unified diff 可以清晰展示变更:
/skills diff abc123
--- a/SKILL.md
+++ b/SKILL.md
@@ -15,6 +15,10 @@
## Pitfalls
1. **Log rotation**: check app.log.1.gz
2. **Encoding**: use LANG=C grep
+3. **Port conflict**: 端口可能被旧版本进程占用
+ 排查: lsof -i :8080
+ 解决: kill 旧进程 PID 后重新启动
+
## Verification
- [ ] Error count matches
新增行用 + 标记,删除行用 - 标记。
3.2 Gateway 中的 Diff
在消息平台中,diff 输出会因消息长度限制而截断。建议在 CLI 或 Dashboard 中查看完整 diff。
四、安全策略建议
4.1 何时开启审批
| 场景 | 建议 | 原因 |
|---|---|---|
| 个人开发环境 | 关闭(默认) | Agent 的自我改进是核心价值 |
| 小模型使用 | 开启 | 小模型容易误判 |
| 企业生产环境 | 开启 | 安全合规要求 |
| 团队共享技能库 | 开启 | 统一质量标准 |
| 实验/探索阶段 | 关闭 | 鼓励 Agent 尝试 |
4.2 Memory 的类似门控
Memory 写入有相同的门控机制:
memory:
write_approval: true
开启后 Agent 的 Memory 写入也需要审批。两个门控独立配置、独立运作。
本篇小结
| 知识点 | 核心内容 |
|---|---|
| 门控配置 | skills.write_approval: true |
| 暂存机制 | 写入暂存到 ~/.hermes/pending/skills/,不直接落地 |
| 持久化 | 暂存变更重启后不丢失 |
| 审批命令 | pending / diff / approve / reject |
| CLI 体验 | diff 查看在 CLI 中最佳 |
| 适用场景 | 小模型 / 企业环境 / 团队共享 → 开启 |
| Memory 门控 | memory.write_approval 独立配置 |
下篇预告
下一篇讲解外部技能目录与 Curator 维护——多工具共享技能库和技能生命周期管理。
如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。
更多推荐



所有评论(0)