陌生仓库先别让 Agent 改文件。用 read-only 沙箱按固定提问顺序摸清结构、指令来源与一条关键路径,再决定要不要开写。

要点
- 官方 sandbox 文档写明:未把工作目录标为可信前,CLI 默认偏只读;也可显式
--sandbox read-only(可配--ask-for-approval on-request)。只读可检查文件与回答问题,编辑/部分命令需批准(Codex sandbox.md)。证据强度:高。 - 提问顺序建议(本稿工作流):①先问加载了哪些指令文件 → ②自上而下要子系统地图 → ③追一条业务路径并要求
path:line证据 → ④要可复现的 build/test/lint 命令 → ⑤明确“本回合禁止改文件”。证据强度:中(可抄,非单一官方清单)。 - Codex 启动时会合并
AGENTS.md/AGENTS.override.md(全局→仓库根→子目录,后出现者覆盖前者;默认合计约 32 KiB 上限)(Custom instructions with AGENTS.md)。过时或恶意仓库指令会带偏第一轮答案。证据强度:高。 - OpenAI Cookbook 的探索提示强调:先想清楚要读哪些文件,再并行批量读,避免无必要的逐文件串行;交付偏工作代码而非空计划(Codex Prompting Guide)。证据强度:高(官方 cookbook)。
- 迭代工作流 recipe 给了“Perform a read-only discovery pass…”模板:以仓库现状为准,读 AGENTS/计划类文件与清单,写之前先汇总(Iterating development workflows with Codex)。证据强度:高。
- 与已上站“AGENTS.md 最小模板”“先读再改开工清单”错开:本稿只谈陌生仓第一小时的提问顺序,不展开长期规则怎么维护。
正文
场景
接手一个从没见过的 monorepo,README 写着“跑起来很简单”。你随手开 Agent,三分钟后它已经在改配置、装依赖。更稳的做法是:这一回合只允许读,按顺序把“谁在指挥它、目录怎么分、一条请求怎么走、怎么验证”问清楚,再开第二回合动手。
可跟做步骤/可抄工作流
证据强度:沙箱旗标与 AGENTS 发现=官方高;五步提问顺序=本稿工作流(中)。
0. 开只读会话(先锁手)
在仓库根(假设示例;请按你本机 Codex 版本用 codex --help 核对旗标):
codex --sandbox read-only --ask-for-approval on-request
官方表意:只读浏览时可读文件、答问题;要改文件、跑部分命令或访问网络时再要你批准。也可用 /approvals 把可信仓临时切回 Read Only,用 /status 看当前可写根。未信任的供应商代码/收购仓:不要急着点 Trust;不信任时项目内 AGENTS.md 的加载行为以你当前版本说明为准,先问清它读了什么。
1. 第一问:你现在听谁的?
先不要改任何文件。列出本回合已加载的指令来源(全局与仓库内 AGENTS.md/AGENTS.override.md 等),按优先级说明。若某文件过时或互相打架,只指出冲突,不要自行调和后开改。
目的:避免过时 AGENTS 把“必须跑某套已删除脚本”写进第一轮结论。learn.chatgpt.com 建议可用类似 “List the instruction sources you loaded.” 做核对。
2. 第二问:给我一张可核对的地图
只读探索本仓库。输出:
1) 顶层目录各自职责(一句话);
2) 主要应用/包入口文件路径;
3) 你尚不确定的三点。
每条结论附 path:line 或具体路径;不要臆造不存在的包名。
Cookbook 提醒:先规划要读的文件,再并行读取;只有下一步依赖上一步结果时才串行。
3. 第三问:追一条真实路径
选一个你真正关心的用户动作(登录、下单、导出报表……):
只读追踪“【具体用户动作】”的调用链。从入口(路由/CLI/job)列到持久化或外部调用。每一步给 path:line。若中断,标明断在哪、还缺读哪些文件。不要提修复补丁。
一条链比“帮我全面了解架构”更不容易得到正确的废话。
4. 第四问:怎么证明它还活着
根据仓库内现有脚本与文档,列出:安装依赖、启动、单测、lint 的**实际命令**(原文引用路径)。命令在文件中找不到就写 UNKNOWN,禁止按其他项目习惯编造。
把确认过的命令,之后再考虑写进精简版 AGENTS.md(另回合、可写会话);本回合仍只读。
5. 第五问:收束,并显式禁止写
汇总:子系统地图、已追踪的那条路径、验证命令、开放问题。本回合禁止创建/修改任何文件,包括文档与 AGENTS.md。若要落盘 ARCHITECTURE 笔记,先给出草稿文本,等我批准后再开可写会话。
OpenAI 迭代 recipe 里的 discovery pass 也要求:先呈范围与路径,写之前等人确认。
真实用户诀窍/反例
- 诀窍:地图 → 单路径 → 验证命令,这个顺序别反。 先要“全面重构建议”时,模型更容易跳过证据直接开改(在可写模式下伤害更大)。
- 诀窍:每条重要结论要 path:line。 没有行号的“大概在 auth 附近”下一步很难复查。
- 诀窍:并行读,串行只留给真正依赖的步骤。 Prompting Guide 把“先想齐再一批读完”写成探索默认。
- 诀窍:陌生仓先不要 Trust + Full Access。 sandbox 文档把 Full Access/
--yolo标成需非常慎重。 - 反例:第一句就 “fix the build”。 构建脚本都还没核对时,Agent 可能改错包管理器锁文件。
- 反例:默认信任仓库里的 AGENTS.md。 收购代码或过时说明会变成高优先级用户消息。
- 反例:只读回合里顺手让它“顺便写个 ARCHITECTURE.md”。 那已是写操作;先拿草稿,再开 workspace-write。
适用边界
- 本稿覆盖:Codex CLI/Agent 面对陌生仓库时的只读提问顺序;云端 Codex、IDE 内嵌面板的按钮文案可能不同,以你客户端为准。
--sandbox与审批策略组合以 sandbox.md 与当前codex --help为准;版本升级后旗标别名可能变化,待核本机帮助。- 不覆盖:具体语言栈的架构评审清单、安全审计(密钥扫描等需另流程)。
- 只读不是形式:若配置了可能绕过边界的审批自动化,请按官方/发行说明自查;不确定时保持人工批准。