专题篇章
拆开 OpenAI Codex
理解 Coding Agent 如何用架构治理上下文、审批、工具执行、MCP 和沙箱。最后带走一份把安全放进系统本身的检查清单。
专题篇章32篇札记
本页解决的问题
先给结论「拆开 OpenAI Codex」AI 学习路径适合解决什么问题?
理解 Coding Agent 如何用架构治理上下文、审批、工具执行、MCP 和沙箱。最后带走一份把安全放进系统本身的检查清单。 路线包含 32 篇免费札记,每篇聚焦一个可以独立搜索、理解和验证的问题。
判断标准
核心主题包括:治理与循环、上下文、工具、沙箱。
下一步
从「把 Coding Agent 读成一套边界系统」开始,再按当前任务选择下一篇。
常见误区
不要为了完成目录而跳过实践;能用自己的例子解释一个取舍,比读完更多标题更重要。
这条路径会练什么
从第一篇打开
每个章节都围绕一类真实决策展开。可以顺着走,也可以从正在处理的工作切入。
01把 Coding Agent 读成一套边界系统从上下文、轮次、工具、审批和沙箱开始读源码。重点是看 Coding Agent 如何靠明确边界赢得信任,而不只是靠一个友好的界面。↗02三层 Turn Loop:谁有资格决定继续你看到的是一轮对话。内部叠了任务壳、轮次、采样三层循环。各层只回答自己那一个问题,控制权每次只在一层。↗03流还在走,工具已经开工模型还在打字,读文件的声音已经响了。采样循环的时序是:流内建 future,流后统一 drain。先 persist,再等结果。↗04中途插话:这句话进本轮、下一轮,还是被拒Agent 正在改第三个文件,你看见方向偏了,补了一句:配置用 YAML。回车之后,这句话是开工、插进当前轮,还是当场被拒,Core 当场拍板,不等模型开口。↗05按下取消之后,各层怎么收手工具失败回给模型,用户按 Esc 才停 turn。取消令牌从任务传到采样再传到工具。已完成的结果留在历史里,100 毫秒之后的硬拆不可逆。↗06往模型上下文里塞东西,先给它造一个类型每一种注入都是一个类型,自己知道 role、marker 和 body;组装按字段分拣,事后靠同一对 marker 认回↗07把上下文治理写进 code review长度、频率、前缀稳定这些编译器证明不了的事,用六条禁令加评审规则守住↗08满窗之后,砍哪一段留哪一段三个时机共用一个分发器,三种实现由开关选中。同一份摘要在中途必须停在历史最后一项。↗09JSONL 是真相,SQLite 是镜像昨天关了终端,今天列表还在,对话也能接着改。这两件事看起来像同一份存储,落盘时却走两条轨。上轨按行追加,下轨只抄封面。中途拔电之后,能捡回来的永远是已经过了闸门的那几行。↗10模型看见的工具清单,是一次采样算出来的同一段对话、同一份配置,下一轮采样却可能多出 MCP 名字、协作入口或 tool_search。变的是这一次允许广告哪些 handler。↗11对模型说随便并行,底下用锁管住模型看见的、实际执行的、历史记录的,是三套顺序。一面旗允许一次发多个调用,一把读写锁决定谁能叠着进。↗12统一入口:一条命令按特征分叉模型只看见 exec_command 和 write_stdin。进门之后,tty、远程环境和 150 毫秒窗口会把同一条命令送到 PTY、pipe、exec-server,或者送进重试门。↗13沙箱管理器:把权限档案编译成一行命令工作区可写,网络收紧。同一条 git status,Mac 套上 sandbox-exec,Linux 套上 helper,Windows 可能原样出门。差别出在编译器。↗14macOS:把安全策略拼成一个字符串Seatbelt 吃的是一段文本。文本由静态基线加现拼的读写网段组成。路径不进这段文本,走旁边的参数表。↗15Linux:先建视图,再上 seccomp,最后 exec同一条读取,Mac 上回 Operation not permitted,Linux 上回 No such file or directory。差别在于 Linux 先换进程能看见的文件树,再收紧它能调用的系统接口。↗16Windows:受限令牌、防火墙过滤器与两个专用系统用户没有 seatbelt 和 bubblewrap 的平台怎么叠出沙箱,以及 AppContainer 为什么被否掉↗17execpolicy:让策略文件自带测试用例正反例写进规则本身,加载期就跑一遍;前缀精确匹配,多规则取最严↗18审批策略:同一条命令,问不问看哪两颗旋钮默认问不问跟沙箱种类绑在一起。问过一次之后,记住的是完整命令,还是一段前缀。↗19Guardian:让一个模型去审批另一个模型四步法、失败关闸、超时与拒绝分账,以及按 turn 计数的熔断器↗20网络与凭据代理:模型看不见的那把钥匙出站要过几道门。真 token 不进子进程。模型看见的是假值和一句 403。↗21apply-patch,给模型设计一种 diff一份没有行号的补丁语言:定位靠上下文锚点,应用靠四级匹配,单文件对不上就不写盘↗22exec 与 wait:跑不完的程序怎么收场能力做减法的 V8 isolate,以及跑不完就让出 cell、用 wait 续跑的长任务协议↗23宿主拆分:程序挂在谁身上上一课讲 exec 和 wait 的语义。这一课问另一件事:这段 JavaScript 到底挂在谁身上,挂点换了之后,故障域和状态归属怎么变。↗24多 Agent 是一张要持久化的图派出去的是节点,边一出生就是 Open。信先入队,followup 才叫醒。关掉的是边,历史还在。↗25挂钩点能改什么,由事件合同决定一次 turn 会经过十一个挂钩。协议认四种处理器,运行表只装命令和 MCP。超时默认放行,拆卸期丢掉 stdout。↗26MCP 接进来:模型看见翻译过的名字外部 server 的工具要先过一层翻译才进模型眼睛。skill 目录常在,缺 MCP 时另问人。↗27搬家只搬对得上的字段换到 Codex 的第一周,最怕去年攒的 hook、MCP 和插件还在不在。检测会列出一份清单。导入只收下能映射的那一部分。↗28SQ 进、EQ 出:同一件事两副面孔命令走进程内的 Submission Queue。事件走能写成 JSON 的 Event Queue。Rust 名叫 TurnStarted,磁盘上仍写 task_started。↗29对外协议是投影IDE 看见的是 Thread / Turn / Item,不是内核 EventMsg。一次 turn/start 先回响应,再推事件流;审批是反向请求,不回包这一轮就停住。↗30流式输出怎么在终端两区之间定稿模型按 token 往外推,终端却是一个写出去就改不了的字符网格。已经不会变的行交给 scrollback,还可能变的尾巴留在活动 cell,表格没闭合之前整段扣住。↗31把架构决策写成 lint同一份 AGENTS.md 里,有命令的规则会在三台操作系统上亮红。只有路径的那条,重命名之后没人发现。↗32两种安全视角:同一条命令,两套判词出事之前有没有门可以拒绝,出事之后能不能复原模型当时看见的世界。同一条危险命令上,这两套视角会一致,也会给出相反结论。↗