搜索文章

输入关键词开始搜索

解读 Codex-maxxing for long-running work

AI#AI Coding#Agent#Workflow

最近看了一份 OpenAI 的白皮书,标题是 Codex-maxxing for long-running work。一开始我以为它会讲很多具体技巧,比如怎么写 prompt、怎么开线程、怎么安排自动化。但读完之后发现,它真正想讲的不是某个功能,而是一个更大的变化:

Codex 不再只是一个“帮你改代码的聊天窗口”,而是在变成一个可以承载长期工作的地方。

这个判断对我挺重要。因为现在很多人讨论 Agent,还是停留在“这次能不能把任务做完”。但这份白皮书讨论的是另一个问题:如果一件事不是一次 prompt 能做完的,Codex 要靠什么让它继续往前走?

这份白皮书的核心

白皮书里列了 10 个模块:durable threads、voice input、steering、memory、computer and browser use、remote control、thread automations、three examples of loops、goals、side panel。

如果逐个看,它们像是一组产品功能。但把它们放在一起看,逻辑其实很清楚:

长程 Agent 的 durable thread 与反馈控制回路

  • durable thread 让工作有一个固定位置;
  • voice input 把人的原始想法、模糊判断和临时反馈放进去;
  • steering 允许你在 Codex 正在工作时继续调整方向;
  • memory 把重要上下文沉淀到可编辑、可 diff 的地方;
  • browser / computer / connectors 让线程可以接触真实工作表面;
  • remote control 让长任务不再被绑定在桌面前;
  • thread automation 让 Codex 可以按节奏回来检查变化;
  • goals 给长程任务一个可验证的完成标准;
  • side panel 则把产物变成可查看、可评论、可继续修改的对象。

这些东西组合起来,才是 long-running work。它不是“让模型一直跑”,而是给工作补上几个必要部件:位置、记忆、工具、节奏、验收和 review 面。

这跟我之前理解的 Loop Engineering 很接近,只是这份白皮书更产品化。它不讲太多架构词,而是直接把用户在日常工作里会遇到的断点列出来:线程断了、上下文丢了、人在外面、工具打不开、反馈没人跟、结果没地方看、目标没法验收。

Durable thread:先给工作一个家

我觉得全文最关键的一句话是:Codex gives work somewhere to live。

这句话比“Codex can code”更有意思。代码任务当然重要,但很多真正麻烦的工作不是“写一段代码”,而是持续跟进一件事:一个 PR、一组 issue、一个客户反馈、一个开源项目、一组会议后续、一个需要反复打磨的文档。

这些任务的问题不是一次性能力不够,而是每次重启都要重新解释背景。项目是什么、之前为什么这么决策、哪些人有什么偏好、现在卡在哪一步、哪些 loop 已经关闭,这些信息如果只留在聊天历史里,后面会越来越难管理。

所以 durable thread 的作用不是省几句 prompt,而是让一个长期工作流有固定入口。重要工作就放在一个 pinned thread 里,让上下文、偏好、决策和未完成事项慢慢累积。

当然这里也有代价。长线程会更贵,也可能带来更重的上下文负担。所以不是所有任务都值得 durable。一次性的改文案、查资料、生成小脚本,开新线程更干净。只有那些确定会反复回来、需要连续判断的任务,才值得给它一个固定线程。

Voice 和 steering:把真实工作里的混乱放进去

白皮书里讲 voice input 的部分我很喜欢。它没有把语音输入包装成“效率提升”,而是说语音能把更真实的思考放进 Codex。

很多工作刚开始时,本来就是混乱的。你可能只记得“Slack 里好像有个人提过这个问题”,但不记得是谁;你可能在看一个页面时觉得“这里不对劲”,但还没想清楚怎么描述;你可能边走边想,脑子里都是半成型的判断。

如果强迫自己把这些东西整理成正式 prompt,反而会损失信息。语音的价值在这里:它允许你把没整理好的线索先倒进去。

但语音本身还不够,关键是配合 steering。Codex 在工作时,你可以继续补充指令:这个文案不对、间距太大、先等 preview deployment、做完后打开 PR、发出去前让我看一眼。

这件事的本质是:人不再只在任务开始时输入一次要求,而是在任务运行过程中持续校准队列。

以前我们把 Agent 想成“我给它一个任务,它给我一个结果”。白皮书里的工作方式更像是:我把方向、反馈、限制、下一步判断不断加进一个正在运行的工作流里。这个交互形态更接近真实协作。

Memory:不要让长期线程偷偷变成玄学

长线程最容易出问题的地方是 memory。

如果所谓“记忆”只是聊天历史里一些模糊印象,那它迟早会变成风险。模型可能记错,也可能把不重要的东西当成重要背景。更麻烦的是,人很难 review 它到底记了什么。

白皮书给的方案很朴素:把 memory 做成 vault。里面可以有 TODO.md、people、projects、agent、notes。人的偏好、项目状态、决策原因、关闭的 loop,都应该写到可打开、可编辑、可 diff 的文件里。

这里有一个边界说得很好:

  • repo 保存代码;
  • vault 保存围绕工作的滚动上下文。

这点很重要。很多人会下意识把所有东西塞进项目仓库,最后 repo 里混进大量过程性记忆;也有人完全不落盘,导致每次都靠聊天历史续命。比较合理的做法是把代码、文档、工作记忆分清楚:项目事实进入 repo,长期协作状态进入 vault。

而且 memory 必须能 review。Codex 认为某个信息值得写下来,人应该能看到 diff,判断它写得对不对。这一步如果省掉,长程任务就会慢慢变成不可审计的黑箱。

工具、自动化和 remote control:让 loop 可以真的跑起来

白皮书后面讲 browser、Chrome、computer use、connectors、skills、remote control 和 thread automations。这里不是在炫工具多,而是在回答一个现实问题:长期任务往往不只发生在代码仓库里。

反馈可能在 Slack,确认邮件可能在 Gmail,会议在 Calendar,issue 在 GitHub,预览在浏览器,渲染在本地项目,上传还可能只能点 GUI。

所以要先分清楚线程能碰什么:

  • 本地 web surface 用 browser;
  • 需要登录态和多个认证 tab 时用 Chrome;
  • 只有 GUI 能完成时才用 computer use;
  • 重复工作沉淀成 skill;
  • 外部系统通过 connector 接进来。

remote control 解决的是另一个问题:长任务跑起来之后,人不可能一直坐在电脑前。你可以从手机上看它卡在哪个判断点,批准下一步,或者改方向。但白皮书也强调,remote control 不是为了跳过 review,而是为了让你能在关键节点继续介入。

thread automation 则是 loop 的心跳。它不是“现在做一次”,而是“每隔一段时间回来检查,如果有变化就继续推进”。比如每 30 分钟检查 Slack 和 Gmail,找出需要回复的消息,研究上下文并起草回复,但不经过批准不能发送。

这个例子很准确。长程自动化最危险的不是检查,而是不可逆动作。所以合适的边界应该是:Codex 准备材料、总结状态、起草建议;人负责批准、语气、时机和最终决策。

Goals 和 side panel:长程任务必须能验收

白皮书里关于 goals 的部分很短,但我觉得是防止 Agent 跑偏的关键。

弱目标是:“按这个 Markdown 里的计划实现。”

强目标是:“迁移这个库,保持 public API 兼容,并用原始单元测试作为成功标准。测试通过、差异写清楚,才算 ready for review。”

差别很大。前者只是让 Codex 执行一个计划,后者给了它一个可以验证的完成标准。长程任务如果没有验收标准,跑得越久越危险,因为你很难判断它是在接近目标,还是只是在制造更多产物。

side panel 解决的是 review 面的问题。Markdown、CSV、PDF、slides、网页、Storybook、Streamlit、Jupyter,这些产物如果只能以文本形式夹在聊天里,review 体验很差。side panel 的意义是让你和 Codex 看同一个对象,评论变成下一轮指令,产物本身也变成上下文。

这也是为什么 Codex 不只是 chat。真正的工作不是发生在对话框里,而是发生在 artifact 上。聊天只是调度入口。

我读完后的判断

这份白皮书最有价值的地方,不是告诉你“Codex 又多了哪些功能”,而是把长程工作的结构讲清楚了。

一个能跑长任务的 Codex 工作流,大概需要这几样东西:

  • 一个固定线程,承载连续上下文;
  • 一套可 review 的 memory,而不是只靠聊天历史;
  • 能接触真实工作表面的工具;
  • 可以按节奏回来的 automation;
  • 明确哪些动作必须人批准;
  • 可验证的 goal;
  • 一个能直接看产物、改产物、评论产物的 review 面。

少其中任何一个,长程任务都容易退化。

只有 durable thread,没有 memory,后面会越来越玄学。只有 automation,没有目标和 review,容易变成无人看管的执行器。只有工具权限,没有边界,风险会变大。只有 goal,没有 side panel,验收成本会很高。

所以我后面用 Codex 跑长任务时,会更明确地区分三件事:

第一,哪些任务值得 durable。不是所有事都要开长期线程,只有会反复回来、需要持续判断的工作才值得。

第二,memory 必须落到文件里。重要偏好、决策、项目状态、open loops,不应该只藏在聊天历史。

第三,自动化只负责把下一步准备好,不能默认替人做不可逆决策。发送、发布、合并、付款、删除这类动作,必须保留人工确认。

以前我会把“让 Agent 长时间工作”理解成一种能力问题:模型够不够强,工具够不够多,能不能一次跑很久。现在看,这更像是一个工作流设计问题。

Codex-maxxing 的重点不是把 Codex 用满,而是把工作拆成它能持续推进、你能持续 review、最后还能验收的形态。这个转变比单个功能本身更值得记录。