审批
当策略判定为询问时,智能体的调用会一直等到有人做出决定。在此之前什么都不会执行,之后也不会执行任何其他内容:bssh 只执行被批准的内容。
| 级别 | 在哪里决定 | 适用于 |
|---|---|---|
| 自动 | 无需决定:策略允许 | 读取操作,以及临时授权覆盖的调用 |
| 在智能体客户端中 | 智能体自己的确认对话框 | approval.in_client 中所列标签主机上的低风险变更 |
| 带外 | 桌面应用,或终端中的 bssh ai approve |
其余所有变更 |
| 双人 | 团队中两名不同的管理员 | approval.two_person 中所列标签的主机(Teams) |
带外渠道才是值得信赖的:智能体进程无法触及它。在客户端中确认更快,适合你正在盯着智能体的时候;但如果客户端被设置为自动批准一切,它也会批准这类请求。因此该级别在你列出标签之前不会启用,从不适用于破坏性、提权或网络类变更,并且会被记录为在客户端中确认。如果客户端无法显示确认对话框,请求会转为带外。
修复很少只需要一条命令。智能体通过 propose_change 发送一个变更计划:
- 步骤:要执行的命令、以统一 diff 表示的文件修改、服务操作;
- 验证:如何确认修复生效,例如
curl -fsS localhost/health; - 回滚:如何撤销。
在询问任何人之前,策略会先判定每个步骤;只要有一步被拒绝,整个计划就被拒绝。你只需批准一次计划。批准只针对这个确切的计划:apply_change 会拒绝事后被改动的计划,按顺序执行步骤,在第一次失败时停止,然后执行验证步骤。涉及多台主机的计划会先在第一台上执行并验证,然后才会处理其余主机。
被修改的文件在写入前会先备份,主机上和你的电脑上各一份。undo 会恢复这些文件并执行回滚步骤;它和其他变更一样需要审批。
智能体对变更原因的说明会标明出自智能体。请阅读命令和 diff:那才是将要执行的内容。
在终端中审批
Section titled “在终端中审批”bssh ai approve # 选择一个待审批请求,查看完整内容,做出决定bssh ai approve --list # 只列出等待中的请求bssh ai approve <id> --deny --reason "发布冻结期间不做变更"只需输入 id 的前缀。智能体会收到决定,拒绝时还会附带你的理由,以便它尝试其他做法。
在桌面应用中审批
Section titled “在桌面应用中审批”桌面应用有一个 AI 区域,显示每个正在运行的智能体、其调用及判定的时间线,以及一个停止按钮。新请求会弹出审批对话框并发出通知:命令和主机、分析结果,对于计划还会显示每个步骤及其 diff、验证和回滚步骤,并把智能体的理由与事实分开显示。
一次又一次地批准同类调用,会让人养成不看就批准的习惯。临时授权在有限时间内放行一类调用:
bssh ai approve <id> --grant 30这会批准该请求,并在 30 分钟内放行同一主机、同一目标上的同一工具调用,不再询问。bssh ai status 会列出有效的临时授权。它们和审批一样会被记录。
无人回应的请求
Section titled “无人回应的请求”请求在 approval_timeout_secs(默认 300 秒)内无人回应即被拒绝。智能体会被告知请求已过期。
跟踪和停止运行
Section titled “跟踪和停止运行”bssh ai status # 运行中的智能体、待审批请求、临时授权bssh ai stop # 结束唯一的运行,或指定一个,或 --allbssh ai log # 最近的运行bssh ai log <run> --report # 变更内容,含 diff、审批和回滚点bssh ai replay <run> # 回放其命令录制的输出