第 18 章 · Diff、打断、转向与审计
本章目标:理解 Agent UI 不只是把模型文字打印出来,而是让人类看见状态、证据、风险并在正确时机介入。
1. 人类需要看到什么
长任务中只显示“思考中”会让人无法判断是否跑偏。界面至少应展示当前目标、正在执行的动作、权限请求、计划进度、修改 diff、验证结果和停止原因。展示不等于暴露模型私有推理,而是呈现可审计事件。
好的进度更新说明“正在读取认证入口以定位失败测试”,而不是每秒输出无意义心跳。信息量应与决策价值匹配。
2. Diff 审查界面
文件修改需要按文件和 hunk 展示,支持行级评论、接受、撤销和暂存。用户应能区分本轮 Agent 变化与任务开始前已有变化。删除大量内容、改动测试和修改敏感配置应有明显提示。
审查不是结束后才发生。对于迁移和高风险文件,可以在关键步骤暂停,让人类批准设计或中间 diff。
3. Interrupt 与 Steer 的体验
打断按钮要说明会停止什么:模型生成、当前命令还是整个任务。对可安全终止的命令发送信号,对数据库迁移等操作不能假装瞬间撤销。界面在中断后应汇报已发生的副作用。
转向输入允许用户补充:“只修后端,不改前端。”Runtime 把它注入活动 Turn,并更新计划。新要求与旧要求冲突时,应明确以最新要求为准,同时保留决策记录。
4. 审批请求的时机
请求必须发生在副作用之前。界面展示规范化动作、目标、理由和边界。把十个低风险读取逐个弹窗会制造疲劳;把“安装依赖、执行脚本、上传结果”打成一个模糊总批准又过宽。
可以允许窄范围持久规则,例如本任务内允许运行 pytest,但不自动允许所有 shell 命令。用户可以随时查看和撤销当前授权。
5. 审计日志
审计事件应包含时间、Thread、Turn、工具、参数摘要、权限决定、结果状态和文件变更。敏感值脱敏,但保留足够信息复盘。日志服务于故障诊断、安全调查和评测,不只是合规存档。
事件最好采用追加写,避免模型或普通工具修改过去记录。外部操作还应保存目标系统返回的对象 id,便于核对和撤销。
6. 从 CLI 到桌面 App
CLI 适合快速本地操作,IDE 适合结合当前文件和诊断,桌面 App 适合任务管理、diff 审查、多任务和浏览器,云端适合离线并行。它们共享 Agent 内核与事件协议,但人类控制面不同。
产品判断
界面最重要的不是动画,而是让用户在三秒内回答:Agent 正在做什么、为什么做、已经改变了什么、我现在能否安全打断。