Agent 安全:审批、权限与沙盒边界
解释 Agent 沙盒的安全边界与常见实现,并结合 Codex 源码说明权限配置、平台后端、审批策略与 Full Access 的关系。
解释 Agent 沙盒的安全边界与常见实现,并结合 Codex 源码说明权限配置、平台后端、审批策略与 Full Access 的关系。
上一篇完成了 Session JSONL、上下文预算和自动 Compaction。Agent 已经能调用 read_file、run_bash 与 write_file,但工具循环里还藏着一个故障窗口:
1 | 保存 Assistant Tool Call |
假设文件已经替换成功,程序却在保存 Tool Result 前崩溃。重启后的 Session 只有 Tool Call,没有回执。Agent 无法判断工具根本没运行,还是已经运行但丢了结果。
这不是普通的 failed:
1 | failed = 已确认工具执行失败 |
如果把 unknown 当成失败并自动重跑,邮件可能发两次,付款可能扣两次,echo x >> audit.log 也会追加两行。本章要解决的就是这段空白:让工具执行留下可恢复的证据,再用证据完成原来的 Agent Turn。
先分清 Agent 要保存的八类数据,再根据访问模式选择 JSONL、SQLite、Redis、PostgreSQL 或服务端续接。
Agent 一次测试输出 10MB,一次工具轮次包含几十条消息,一个会话运行几小时后远远超过模型窗口。随后可能出现以下三个故障:
这三个故障指向同一条主线: 完整事实留在持久层;模型每次只看完成当前任务所需的 Prompt View。
上一课使用一个不断覆盖的 Checkpoint JSON。本课把它迁移为 append-only Session JSONL,并从 Pi、OpenClaw 与 Hermes 的当前实现中校正工具输出、Prompt View 和 Compaction 的边界。
源码结论核验于 2026-08-28:Pi e54d45d、OpenClaw 74d1852、Hermes 0abecf7。不同项目、同一项目的不同包也可能采用不同 Backend,不能只用项目名推断存储格式。
用安全的整数乘法工具,跑通一次有限步、可观察、协议完整的 OpenAI-compatible Tool Calling Agent Loop。
沿一次 Anthropic Tool Calling 交互,拆开 model、harness、tool 与 environment 的职责和协议边界。
单独看大语言模型,它很像一个“缸中大脑”:可以读懂输入并生成文本,却不会真的打开文件、访问天气接口或发送邮件。外部动作来自模型之外的程序。
这个程序通常称为 Agent Harness。它保存会话,向模型描述可用工具,执行模型请求的动作,再把环境结果送回模型。模型根据新结果决定下一步,直到任务结束。
模型可以提出“删除数据库”,却不能批准自己的请求。Harness 必须独立检查参数、权限和审批规则;提出动作的人不能同时成为授权动作的人。
1 | 用户目标 |
从工程运行时看,可以先记住四个部分:
1 | model 判断下一步 |
这是一种运行时拆法,不是行业唯一标准。规划、记忆、感知和行动则是另一种“能力视角”,用来描述 Agent 表现出了什么。一个最小 Agent 未必有独立规划器、长期记忆或反思模块,但一定要有人组织模型与环境之间的循环。Anthropic 对 Agent 运行时的拆解
沿着行动、工具协议、评测、上下文、持久状态与可靠性,理解 LLM Agent 工程为何一步步长成今天的形态。