跳至正文
教程 / Step 4

工作区、会话与权限确认

理解 Agent 能看到什么、哪些操作需要批准,以及如何建立安全试用边界。

简要结论

理解 Agent 能看到什么、哪些操作需要批准,以及如何建立安全试用边界。

工作区决定文件能力的主要边界;会话记录一次任务的事件历史;权限策略决定哪些副作用需要人工确认。这三者共同定义了 Agent 的实际操作面。

工作区不是装饰性设置

选择工作区后,Agent 可能读取文件、修改内容、运行命令或调用插件。第一次试用时:

  • 使用专门的测试目录;
  • 不放 .env、私钥、生产数据或密码导出文件;
  • 提交或备份原始状态;
  • 先要求只读分析,再逐步允许修改。

Session Log 为什么重要

官方架构把 Session Log 作为模型上下文的事实来源。用户消息、模型输出、工具调用和工具结果都以事件形式记录,恢复、Fork、回放和 UI 展示由此派生。

这意味着“模型看到的内容”原则上应当能够从日志重建。排查问题时,比起只看最终回答,更应该查看调用链和工具结果。

官方生命周期把两类事实分开:需要回放的用户消息、模型输出和工具结果进入 session/* 事件;只用于当前运行协调的状态进入 agent/*。这能帮助你判断“重启后应该恢复什么”。

权限预设包含两个旋钮

权限预设同时组合:

  • Sandbox mode:进程在文件系统上实际能做什么;
  • Approval policy:什么时候需要向用户请求批准。

二者不能互相替代。即使提示词写着“不要修改”,没有沙箱时仍只是软约束;即使采用只读沙箱,审批策略仍决定某些调用是否需要人工确认。官方默认预设包括 workspace-writedanger-full-access,后者应只在你理解全部影响时使用。

如何处理审批

审批不是“不断点同意”的流程,而是检查操作是否符合原始目标:

  1. 命令将读取或修改哪些文件?
  2. 是否会连接网络或上传数据?
  3. 是否会安装第三方代码?
  4. 是否可能删除、覆盖或移动大量文件?
  5. 是否有更小权限的替代方案?

不理解的命令不要批准。可以要求 Agent 先解释影响、缩小范围,或改成只读检查。

一个安全的练习

在测试仓库里让 Agent:

读取 README 和 package.json,总结项目;列出你下一步想执行的命令,但先不要运行。

确认计划后,再逐条允许只读命令。这个练习能帮助你认识 Harness 的权限交互,而不需要立即修改项目。

第二阶段:有限写入

复制一个测试文件,然后要求:

只修改 sandbox-demo/README.md,在末尾增加一行“harness test”。
不要运行安装命令,不要访问网络,不要修改其他文件。
完成后给出 diff,并列出实际调用的工具。

验收时同时检查:

  1. diff 是否只有一个文件;
  2. 会话日志是否出现了对应工具调用和结果;
  3. 是否发生未声明的命令或网络操作;
  4. 拒绝一次审批后,Agent 是否能调整方案而非绕过限制。

最后删除测试目录或恢复该文件。生产仓库开始前,先提交或备份干净基线。

一手来源