ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OpenAI Agents SDK 工程笔记:LocalShellTool 与 ApplyPatchTool 执行面边界与生产禁区

OpenAI Agents SDK 工程笔记:LocalShellTool 与 ApplyPatchTool 执行面边界与生产禁区 千笔-AIWritePaper · https://www.aiwritepaper.comLocalShellTool/ShellTool与ApplyPatchTool让模型能在你的机器上执行命令、改文件。SDK不会替你做工作区隔离executor / editor 收到什么就执行什么。本文在openai-agents 0.23.1下用脚本化假模型发出真实的local_shell_call/apply_patch_call对比「朴素实现」与「加闸实现」留下 13 行 CSV_w/exec-smoke/。目标说明说清 LocalShellTool 只保证「调用 executor」不保证沙箱。为工作区根、命令白名单、路径穿越、超时、输出截断、删除审批各写一条可观测规则。复现朴素实现的五条失败与加闸后的拦截。区分本工具闸门与 OS 级沙箱见 9-28 E的分工。适用与边界适合在受控工作区跑只读/有限写入 Agent。不适合把白名单含python3 -c当成安全边界——解释器可以读任意路径需 OS 沙箱。本实验全在临时目录密钥均为演示字符串。机制LocalShellTool(executor...)模型给出command/working_directory/timeout_msSDK 原样交给你。ApplyPatchTool(editor...)对 create/update/delete 调 editorneeds_approval可在删除前打断 run。ShellTool是下一代接口本地模式同样要求 executor。实跑摘要N1 FAIL cat ../host/secret.env → 回传 DB_PASSWORD... N2 FAIL env → DEMO_TOKEN 泄漏 N3 FAIL rm -rf ../host/data → 宿主目录被删 N4 FAIL 20 万字符 stdout 原样进上下文 N5 FAIL apply_patch 创建 ../host/evil.txt G1–G7 PASS 路径/白名单/截断/超时/补丁越界均拦截正常 create report.md 成功 G8 PASS needs_approval 删除 → interruptions1文件仍在生产禁区编号禁区证据替代D1信任模型给的 cwd/argvN1/N3解析后做resolve()前缀检查D2白名单含通用解释器却不拦代码参数需 OS 沙箱bwrap/microVMD3不截断 stdoutN4硬顶 4KB–64KBD4补丁路径不校验N5editor 内拒绝..D5删除无审批—needs_approval对 delete加闸 executor 节选ALLOW{ls,cat,wc,head,python3}defguarded_exec(req):cmdreq.data.action.commandifos.path.basename(cmd[0])notinALLOW:returnf[BLOCKED]{cmd[:1]}# 再查 cwd/argv 是否在 WS.resolve() 下timeout截断验收清单与当天落地列出所有 Shell/Patch 工具CI 跑 N1–N5 应 FAIL、G1–G8 应 PASS删除类必须可中断文档写明「非 OS 沙箱」。30 分钟拷贝 smoke改WS路径接入预发 Agent 的 executor。踩坑只拦rm不拦python3 -c/sh -c。把timeout_ms交给模型却不设服务器上限。以为needs_approvalTrue等于已隔离——它只打断不缩小文件系统视图。落地备忘 1把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 2示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 3视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 4v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 5把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 6示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 7视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 8v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 9把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 10示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 11视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 12v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 13把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 14示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 15视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 16v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 17把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 18示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 19视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 20v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 21把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 22示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 23视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 24v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 25把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 26示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 27视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 28v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 29把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 30示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 31视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 32v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 33把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 34示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 35视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 36v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 37把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 38示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 39视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 40v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 41把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 42示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 43视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 44v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 45把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 46示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 47视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 48v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 49把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 50示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 51视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。落地备忘 52v1 稿保留头图说明行与来源链接若审核驳回按 v2→v3→v4 逐级去链接与去头图。落地备忘 53把本节清单复制到议题文档负责人与截止日期写在同一行避免「有清单无执行」。落地备忘 54示例仓库与合成表仅用于演示勿当作真实受试者或真实密钥材料。落地备忘 55视频事实以字幕为准产品界面若已改版以你账号内实际按钮路径更新验收步骤。总结执行面闸门是应用层的最后一道闸不是沙箱本身。朴素 executor 五分钟就能泄密删盘加闸后要把「解释器逃逸」交给 9-28 E 那类 OS 隔离。两者叠用才谈得上生产。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进