【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 完整流程

approve

reject

Agent 发起技能写入

暂存到 pending/skills/
不直接落地

通知用户
N 个待审批变更

用户审查

skills pending
查看暂存列表

skills diff id
查看 unified diff

决定

写入落地

丢弃变更

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,暂存的变更也不会丢失——下次启动后仍然可以审查和批准。

用户Hermes 重启pending/skills 暂存区Agent用户Hermes 重启pending/skills 暂存区Agent即使重启进程写入暂存 create/patch/delete启动时重新加载暂存变更完整保留重启后仍可审查批准

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 尝试

小模型

企业生产

团队共享库

个人开发

实验探索

write_approval 决策

使用场景

开启

关闭 默认

每次写入进暂存区
人工审批落地

自我改进核心价值
自由写入

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 维护——多工具共享技能库和技能生命周期管理。


如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐