Skip to content

F3|周末最小切片:先能跑完一轮,再谈记忆和插件市场 ​

先别按目录做一周 ​

F2 列了该抄的层。动手时最容易把 P0 做成「TUI + MCP + 宠物 + 语音」。一周结束时有皮肤、没有可中断的 turn,也没有能 resume 的日志。

判断先说清楚:最小可运行的 coding agent 是一条事件循环,能按 Prompt 三块采样,能可恢复地 exec、能结构化打补丁、能问人、能在 JSON 里把 Event 按职讲完。 AGENTS.md 和 compact 是第二天。MCP/Skills/Hooks 是你已经不怕 spawn 的时候。Memories、子代理、worktree 是工作区开始打架之后。第一周明确不做 Pets、Voice、Computer Use、插件市场。

对照 Codex 是为了对齐概念,不是为了复刻 crate 数。


P0:循环 + Prompt + 可恢复 exec/patch + 沙箱审批 + Event 流 ​

对应 A2 B1 B2 B3 B7 E1。执行环境用本机 local 即可(B6)。推理客户端概念看 G1,P0 可以先 stub 成一次 HTTP SSE,不必抄 WS / sticky / daemon。

必须能:

  1. 用户输入进队列,模型按 Prompt 三块采样(历史投影 / 这一 Step 的 tools / base 指令),工具结果再进模型,直到本轮结束(Turn 循环,不是一次 HTTP)。AGENTS.md 若出现,在 input 里,不进 base。
  2. 两类核心副作用:可恢复地跑命令(打开 PTY、头尾有顶、Interrupt 不杀进程)、apply_patch 改文件。可选的计划清单(update_plan 那种 Event 即可,不必做 /plan 协作模式)。不要用 sed 当改文件正路。
  3. 审批和沙箱是两套旋钮;至少 read-only vs 可写工作区(内置 permission profile 即可);拒绝后不要把 exit 2 当成「升出沙箱」。
  4. 对外只有事件流(JSONL 就够),按职投影:文本、工具生命周期、审批、turn 完/中断。oneshot 的 start/steer/reject 不是 Event。stdout 纪律学 codex exec:答案或 JSONL,别的进 stderr。

P0 完成定义:用 CLI 无头跑一句「在仓库里加一个文件并列出 diff」,能在日志里看到审批(或 Never)、patch、完成;另起一个后台命令,Interrupt 之后进程仍在;关掉进程,不要求 还能 resume。

不要:TUI 主题、MCP、Skill 目录、子代理、远程 exec-server。Plan mode(先调查再改)可以晚于 P0——P0 的 plan 只是步骤条。

P0 对照本仓库:不要对着 TUI 手工点。B7 讲合同,附录 F 把失败分流和 apply_patch_tool_executes_and_emits_patch_events 钉了什么写开。抄循环时断言文件和 Event,用 just test -p codex-core apply_patch_tool_executes_and_emits_patch_events 看样板;不要为此跑全量套件。


P1:AGENTS.md + 指令栈差量 + compact + resume ​

对应 C1 B4 B5 B7 G2。

必须能:

  1. 从 git root 到 cwd 发现 AGENTS.md,有标记地注入 input;未信任则不读项目说明书。Skill 只给目录,Memories 默关——不是每轮把三份全文焊进 base。
  2. 历史是事件日志(JSONL),resume = 重放重建,不是把 transcript 贴回对话框。reasoning 当历史 item,不当用户原话。sqlite 只做列表/索引(G2),不要当第二种 transcript。
  3. 窗口要满时在 采样前 compact;失败要保住还没入历史的用户最后一句。注入是类型/标记,禁止 system +=。

P1 完成定义:写一份 20 行 AGENTS.md(测试命令+禁区),跑到需要压缩,关掉终端,resume 后模型仍认得说明书和上一轮补丁,不会把摘要当成用户原话。

不要:Memories、Chronicle、远程 compact v2。本地一段总结提示就够。


P2:MCP 白名单 + Skills + Hooks ​

对应 D1 D3 D4。插件包装盒(D2)仍可推迟。

必须能:

  1. MCP client:stdio 在 initialize 就执行,所以默认 白名单 + enabled 才能 spawn;模型名 mcp__server__tool;超时和输出有顶。
  2. Skill:目录里只有 name+description,点名再加载 SKILL.md。
  3. Hook:至少 PreToolUse 同步 command,exit 2 = block;项目 hook 跟未信任闸走。

P2 完成定义:只允许一个文档类 MCP;一个 SKILL.md 能被 $name 注入;一条 hook 能拦住指定前缀之外、ExecPolicy 看不清的参数。clone 未信任仓库,项目 .mcp.json / hooks.json 不会跑。

不要:插件市场、Apps/OAuth 全家桶、把 Codex 自己再暴露成 mcp-server。


P3:Memories / Subagents / Worktree ​

对应 C2 D5 E2 C5。

必须能(仍可再拆三个晚上):

  1. Memories 默关;读/写分开;本机目录;不替代 AGENTS.md。
  2. 子代理只显式 spawn;深度 1;回摘要;角色只能减权。
  3. 并行写靠第二份 checkout(worktree),不靠第二套沙箱政策。Goal 是完成条件,不是 cron(E7 更晚)。

P3 完成定义:开记忆后跨 thread 能读到一条偏好;spawn_agent 一次 explorer 只读;两条长任务不能写同一 cwd。

不要:自动乱 spawn、记忆当政策、两条 Goal 共 Local。


第一周不做 ​

不做为什么以后看
Pets零智能,还要图像协议E8
Voice / Realtime又一条输入通道,不是循环E5
Computer UseOS 辅助功能 + 白名单,闭源壳E4
插件市场安装单元,P2 先会连一个 MCP 即可D2
云端 / Remote / Security 扫描不在这棵 harness 里E3 E11
远程 exec-server / Noise第一周只用 localB6
本机 app-server daemonP0 一条无头循环即可;多窗口共享是以后的事G3
Network Proxy先抄 B3 有没有网;出站代理是第三套旋钮G6
Guardian 评审员 SessionP0 有「问人」就够B3
--yolo 当开发默认F2 反模式B3

TUI 可以用最瘦的 transcript + 审批 prompt;JSONL 比漂亮 TUI 更早证明总线对了。


结语:带走一句话 ​

周末切片是 P0 先交出可中断、可审批、JSON 可观测的 patch + 可恢复 exec 循环(Prompt 三块、Event 按职)——说明书差量和 resume 是 P1,外部工具是 P2,记忆和并行工作区是 P3;宠物、语音、看屏幕、插件市场不配占用第一周。