SOP(Standard Operating Procedure / 门禁策略)

SOP —— 必须遵守的规则

SOP(Standard Operating Procedure) 是 Hermes 系统的策略与门禁层,定义不可绕过或需要审批的安全边界。它回答"哪些事不能做"以及"做之前必须经过谁同意"。

与 Agent(谁执行)、Skill(怎么做)、MCP(用什么做)不同,SOP 是 负空间——它不定义能做什么,而定义不能做什么以及通过条件。SOP 可以是代码级的强制门禁,也可以是 AI 流程级的约定确认。


当前实例中的 SOP 清单

层次SOP 系统位置触发方式用户感知可绕过?
🛡️ 终端门禁 HARDLINE(无条件阻止) tools/approval.py 12 条硬编码正则 每次 terminal() 自动匹配 直接拒绝,说明原因 ❌ 不可绕过(连 --yolo 也无效)
Tirith(内容安全扫描) tools/tirith_security.py + bin/tirith 每次 terminal() 自动执行 扫描出 block/warn → 弹审批窗 ⚠️ tirith_fail_open 控制是否放过
DANGEROUS_PATTERNS(危险命令审批) tools/approval.py ~47 条正则 每次 terminal() 自动匹配 CLI → TTY 确认 / Gateway → 按钮 approve ✅ 可审批通过 / approvals.mode: off 关闭
📁 文件门禁 Write Approval(敏感文件写入) tools/write_approval.py write_file/patch 调用时 阻止覆盖 config.yaml、.env、~/.ssh/ 等 ⚠️ 特定配置可关闭
🤖 AI 流程 STDD Gates(3 道确认门) .stdd/skills/_shared/confirm-gate.md AI Agent 在 STDD 流程中主动加载 skill 对话中输出确认清单,等用户回复"确认" ❌ skill 明确要求不可跳过

当前配置

# config.yaml
approvals:
  mode: false                     # 关闭审批弹窗
  cron_mode: approve              # cron 自动批准危险命令
  mcp_reload_confirm: false
  destructive_slash_confirm: false

hooks_auto_accept: true

security:
  tirith_enabled: true            # Tirith 开启
  tirith_fail_open: true          # 失败时放行(不阻塞)
  tirith_timeout: 5

# 已批准的白名单命令
command_allowlist:
  - stop/restart system service
  - kill hermes/gateway process
  - recursive delete
  - force kill processes
  - shell command via -c/-lc flag
  - ...

SOP 设计要点

  • 代码级 SOP 是隐式的:用户不需要做任何事,每次 terminal() 自动经过 HARDLINE → Tirith → DANGEROUS → 审批全流水线
  • AI 流程级 SOP 是约定的:由 AI 主动加载 skill 文档,在对话中等待用户确认——不是代码强制
  • 配置级 SOP 是策略开关approvals.cron_mode / tirith_fail_open 等控制无用户场景下的行为
  • HARDLINE 是最后的物理防线:防止 AI 自我攻击(shutdown/rm -rf / / fork bomb),--yolo 也过不了