只需把一张Slack讨论串的截图交给OpenAI的Codex,再问一句“你能直接把这个做出来吗?”,就在4分2秒内得到了一款可以运行的macOS实时翻译应用。同一个编程智能体在云服务器上独自运行一整夜,花了15个多小时为400人规模的现场观众搭建了一个实时问答网站。OpenAI开发者体验团队的成员认为,这类成果与令人失望的结果之间的差别,与其说在于巧妙的提示词,不如说在于三件事:交给智能体的上下文、它可以调用的插件,以及人工介入的检查点。

先给上下文,而不是提示词

这款翻译应用起源于Slack上的一次头脑风暴。一位同事提议做一个实时翻译器,另一位同事建议用OpenAI Agents SDK和GPT Realtime API来构建。工程师没有复制粘贴这段对话,而是使用了appshot:在Mac上同时按下左右两个Command键,即可截取当前窗口,连同其中的文字和元数据一起直接发送给Codex。

Codex随即开始搭建原生macOS应用的框架。从编写代码、构建、验证到打包,总共用时4分2秒。这款名为StageTranslate的应用基于Swift、SwiftUI和AppKit开发,集成了麦克风采集、WebSocket客户端、音频播放和OpenAI Realtime API。用户用英语说话,它会实时转写,给出德语译文,并把译文朗读出来。

它并非一次就完美运行。在macOS的声音设置中手动调整麦克风输入和音频输出之前,音频权限和设备路由一直不匹配。这个细节值得记住:智能体能在几分钟内做出应用,但确认它能否在真实硬件和真实环境中运行,似乎仍是人的工作。

开发这款应用的工程师是数据科学家出身,几乎没有Swift、AppKit或WebSocket的经验。填补这一空白的是“Build macOS Apps”插件,它集成了11项技能,涵盖AppKit互操作、构建与调试、Liquid Glass样式以及签名和公证等内容。

该团队把语音输入和appshot称为AI开发工具中最被低估的两项效率功能。人说话比打字快得多,而当前的语言模型能把零散的口语整理成清晰的指令。据该团队介绍,Codex仅凭一张appshot就能正确理解用户意图的比例超过90%。

让上下文持续保留的四种机制

有几项功能可以把上下文从一个任务延续到下一个任务。

功能 作用 值得了解的要点
插件 打包技能(可复用的指令和团队工作方法)、外部应用连接以及MCP服务器(把外部工具接入AI的标准方式) 内置目录中列有Gmail、Slack、GitHub、Figma、Google Drive等插件
Memories 跨不同会话线程记住用户的选择,例如管理Python包时用uv而不用pip 默认关闭;“Skip tool-assisted chats”设置可以让外部工具和网络搜索的结果不进入记忆
Chronicle 捕捉短时的屏幕上下文,推断用户正在做什么,例如诊断失败的GitHub Actions运行 面向Pro订阅用户、需主动开启的研究预览功能
个性化设置 为所有对话应用自定义指令 作用与在主目录放置AGENTS.md文件基本相同

Memories和Chronicle会消耗更多token(模型处理文本的单位),但该团队认为,能换来一个记得项目来龙去脉的智能体,这笔额外成本是值得的。如果经常处理来自工具或网络搜索的敏感数据,开启“Skip tool-assisted chats”更为稳妥。

借助OpenAI Developers插件,Codex无需让用户跳转到浏览器控制台,就能创建和配置OpenAI API密钥,从而避免密钥丢失和工作被打断。此外,在某个线程中解决了棘手问题后,可以让Codex把相关步骤保存为新的技能或插件,下次无需指导就能完成同样的工作。

Codex操作电脑的三种方式

在大型企业中,有价值的数据可能被困在没有API的老旧内部仪表盘里。在一个为说明这一问题而制作的模拟示例中,要从代码仓库分析仪表盘导出报告,就得逐一点击日历日期选择器,并按类别逐个点击下载按钮。

承担这项工作的是Codex的computer use功能,即像人一样查看屏幕并操作鼠标和键盘的能力。工程师通过语音要求以CSV文件导出最近7天的提交记录,并以JSON导出从6月初至今的拉取请求数据。Codex检查了界面布局和无障碍标识符,然后用自己的软件光标操作日期选择器。当多个正在运行的应用共用同一个bundle标识符时,它没有猜测,而是按窗口名称锁定目标。在macOS上,computer use不会占用用户的光标,因此人可以继续在其他窗口中工作。

网页任务同样如此。Codex读取Google Docs文档中起草的问卷题目,把它们在Google Forms中做成单选题、线性量表题和开放式问题,并把每道题都设为必答。这类工作重复点击多,开关也容易漏设。

方式 调用方法 适用场景
原生computer use @computer 或 @应用名 没有API的桌面应用和老旧软件
Chrome扩展 @chrome 在已登录的浏览器中完成网页任务
应用内浏览器 @browser 本地网页开发、布局与DOM检查、交互测试

用headless Chromium(不显示窗口运行的浏览器)做自动化,常常会陷入无休止的CAPTCHA和登录拦截。Chrome扩展在用户已经登录的会话中运行,因此适合Gmail这类服务以及启用了多因素认证的应用。

AI控制的光标在显示器上操作日历日期选择器,人则用另一只鼠标在其他窗口中工作

▲ 与用户光标并行运行的computer use

长时间任务需要目标与监督

大型工程任务可能持续5到20小时。前一天晚上在云服务器上启动的三项任务,可以说明其规模。

任务 运行时间 Codex完成的成果
实时问答网站 15小时30分55秒 为400人规模现场观众全新搭建的网站,用Convex做实时同步,用Vercel托管,并使用OpenAI Moderation API
内部表单构建工具 5小时57秒 把一款开源表单构建工具改造成需ChatGPT登录的内部工具
最优决策树软件包 7小时1分40秒 一个带Rust后端的Python软件包,实现了原本用Julia和R编写的研究算法

没有人能一直盯着一次15小时的运行,因此监督机制必须从一开始就内置:

  1. 目标文件:让Codex把计划和里程碑写入GOALS.md文件。
  2. 进度仪表盘:让它生成并持续更新progress-dashboard.html文件,显示里程碑状态(已完成、进行中、待处理)、测试通过率和尚未解决的阻碍。
  3. 审查线程:不要只用一条长线程,而是让Codex另开专门负责代码审查和目标审查的线程。到达里程碑时,审查线程会把工作内容与GOALS.md对照,一旦偏离就把主线程拉回正轨。
  4. Slack通报:让Codex把已完成的里程碑、进行中的工作以及缺少API密钥之类的阻碍发到Slack频道。周末可以用手机查看该线程,在需要时为智能体解除阻碍。
  5. 旁支线程:用 /side 命令在主线程旁开一个临时对话,询问过去一小时发生了什么、下一步做什么、什么在阻碍进展。旁支线程会消失,因此需要长期保留的决定要移回主线程。

当部署因缺少凭据而停滞时,被阻碍的事项被发送到旁支线程,并要求给出分步解决办法。Codex给出了一条shell命令,把Convex部署密钥直接写入远程环境文件,这样密钥就不会出现在聊天记录中。

云端线程无法访问开发者自己电脑上的Chrome浏览器。取而代之的是,远程线程请本地工作线程运行浏览器测试并回报结果。在一个案例中,本地工作线程在开发者熟睡的凌晨3点打开Chrome,从头到尾验证了完整的表单创建流程。

让“完成”变成程序可以检验的标准

/goal 命令用于设定一个持续存在的目标,Codex在每一轮推理中都会对照成功标准检查工作,再决定某个里程碑是否完成。模糊的目标容易招致“猴爪”式的结果,即智能体满足了字面要求却违背了本意,因此标准应当可以由程序检验,例如测试套件或精确的字符串匹配。一位开发者用这种方法让Codex连续运行40小时,用Swift重新实现了Doom。典型用途包括大规模代码库迁移、重构、部署重试循环和自动化实验。

让这些长时间运行成为可能的是压缩机制:随着线程变长,它保留项目的关键状态,丢弃无关信息。这一机制于2025年11月19日随GPT-5.1-Codex-Max推出,该模型经过训练,可以跨越多个上下文窗口(模型一次能考虑的文本量上限)工作。该团队表示,这能让智能体不忘记先前的要求,并节省token。

发光的中央球体连接着设计、测试和审查工位以及里程碑看板

▲ 主线程与审查线程的分工

拆分工作:子智能体、线程交接与钩子

子智能体在自己的上下文窗口中承担任务的一部分,因此不会让主对话变得杂乱。subagents.toml 文件用于定义每个子智能体的描述、工具权限、沙箱策略和推理强度。可以设立前端、后端、测试、文档调研或代码审查等角色,让常规检查使用小而快的模型,把推理能力更强的模型留给细致的审查。虽然这并不是推荐做法,但只发送一张早期版本的截图并配上“not very good”就已足够:Codex认同聊天区域过于局促,主线程把修复工作交给负责界面的子智能体,后者调整了布局并在浏览器中验证了结果。

线程间交接让委派过程对人保持可见。经验法则是:如果需要亲眼看到委派过程,就用交接;如果只需要主模型知道,就用子智能体。在一个周末游戏项目中,“创意总监”线程统筹美术、音乐、动画和游戏机制等线程,并通过AGENTS.md要求每个线程在宣布完成前获得总监的认可。

钩子在Codex生命周期的固定节点运行固定脚本,在 config.toml 中配置。常见用途包括:

  • 拦截提示词,防止API密钥等机密信息泄露
  • 将拟执行的shell命令与批准清单进行比对
  • 把对话日志发送到公司的可观测性或分析系统
  • 在每轮结束时运行测试和代码检查工具(按风格规则检查代码的工具)

在OpenAI Agents SDK的代码仓库中,每当Codex结束一轮工作,钩子就会运行一个Python清理脚本。该团队强调,智能体获得的自主权越大,越需要这类不依赖模型判断的护栏。

按计划运行的自动化

Codex支持两类自动化。

类型 工作方式 示例
线程内心跳 在现有线程中按定时器唤醒并检查某项状态 持续检查新服务器直至就绪;每天把Slack、邮件和Linear中的变化汇总到Obsidian笔记
新线程定时任务 在设定时间新开线程执行批处理任务,审阅后归档 每周团队总结和分析汇总

通过DigitalOcean插件开通云服务器需要几分钟,因此Codex自行设置了每5分钟检查一次的心跳。服务器就绪后,它删除了心跳任务,并配置好SSH密钥。

把Slack、定时任务和git worktree(同一代码仓库的独立工作副本)结合起来,维护工作就能变成后台任务。有一个自动化每30分钟读取一次翻译应用的Slack反馈频道,把消息分为表扬、缺陷报告和功能需求。对于缺陷和需求,它会创建分支和worktree,实现修改,提交拉取请求并指派审阅人,如果24小时内没有审阅还会跟进提醒。

个人自动化同样适用。每周五运行的任务可以回顾本周对话,在AGENTS.md中添加、完善或删除技能。另一项自动化先起草邮件回复,之后再把草稿与用户实际发出的邮件对比,把差异记录为下次使用的偏好。

这一切的底层是开源的app-server协议。它是一座基于JSON-RPC的桥梁,把桌面应用、终端CLI和Visual Studio Code扩展连接到同一个智能体运行框架。JetBrains IDE和Xcode等工具也能以同样方式接入,开发者还可以构建运行在现有ChatGPT套餐上的自有客户端。作为这一思路的演示,一次4小时的后台运行做出了一个复古风格的自定义Codex客户端,其会话可与常规桌面应用同步。

把工作交给Codex之前要做好的准备

这些例子的共同点似乎在于,智能体周围的结构比任何一条提示词的措辞都更重要。该团队认为,现代推理模型不需要提示词技巧,需要的是充分、清晰的上下文和毫不含糊的目标。团队还建议反复追问以下几个问题:

  • 在自己动手之前,是否真的试过把任务交给Codex?
  • 阻碍它完成任务的是权限、上下文还是工具?
  • 一次性的提示能否变成反复运行的循环?
  • 此时真的需要人来介入吗?

现在就可以采取的实用步骤:

  1. 用appshot和语音输入传递上下文,而不是复制粘贴。
  2. 对于需要数小时的工作,事先要求准备目标文件、进度仪表盘和审查线程。
  3. 用测试等程序可检验的条件来定义完成。
  4. 让Codex给出把密钥写入文件的命令,避免机密信息出现在聊天中。
  5. 用钩子自动运行测试和代码检查工具,作为自主工作的护栏。

即便智能体能在几分钟内做出应用,仍需要人来确认它能否在真实设备上运行、是否真正达成目标。事先决定在哪里进行这些检查,是放心把更长时间的工作交给Codex的第一步。