程序员站在数字海浪前,身边环绕着多个专业分身:有人拿着文档、有人盯着数据、有人敲着代码

如何用好Codex

很多人在用AI编程助手的时候,其实只发挥了它两成功力。

怎么讲?就是那种「写代码、检查、提PR」的固定套路,来了走走了来,每次都像第一次见面。这也不能怪大家,因为AI助手刚出来那会儿,确实就是这么用的。

程序员面对无数个空的聊天窗口,每个窗口都显示初次见面的问候语

但你有没有想过一个问题——你在电脑上干的那些事,有几样是跟代码完全没关系的?

打开终端敲命令,是代码。 浏览网页,是代码。 发Slack消息,是代码。 导出一份文档,是代码。 响应一个事件触发自动化,还是代码。

你发现没有,所谓「写代码」这件事,其实只是冰山露出水面的那一角。Codex真正的能力,藏在水面下面那些你可能从来没让它碰过的领域。

这篇文章,不讲怎么让它帮你写函数。我们聊点更野的——怎么把这玩意儿变成一个真正能帮你扛活的「全能打工人」。


持久对话流,才是真正的资产

先说一个大多数人踩过的坑:每次打开对话,恨不得从盘古开天地讲起。「我的代码库在xxx,架构是yyy,技术栈是zzz,我们团队五个人……」

讲完这些,人已经累了。

Codex现在支持一种叫「持久对话流」的东西,你可以理解成给它装了一个长期记忆。聊天记录不再是一次性的,对话流会记住你们之前做过的决定、你个人的偏好、项目当前卡在哪一步。

怎么用?置顶它。

Command-1到Command-9,按下去直接穿越回某个专属对话流继续干活。一个「幕僚长」对话流处理日常杂务,一个专门盯产品发布,一个负责审查文档,一个盯着外部数据。

它们不是那种聊完即焚的对话框,而是持久的工作空间。随着时间推移,Codex可以随时回来,它记得你之前定的方向,记得谁负责哪个模块,记得上次卡在哪个接口文档没写完。

这听起来好像没什么,但用过之后你会发现——以前那种每次从零开始的痛苦,突然就没了。

语音输入这个功能,被严重低估了

Codex内置了语音输入。坦率的讲,这个功能我用到现在,最大的感受是:它能捕捉到你脑子里最原始的那个念头。

不是你想好怎么表达的那个,是那个你还没组织好语言的、有点模糊的、乱七八糟的想法。

比如:

我记得有个叫Ben的人在Slack上提过这事儿。 细节我忘了。 你去帮我找找看。

说真的,你让一个人类同事帮你干这事,你得打多少字?但对于一个会自己搜索、收集上下文然后汇报给你的AI来说,这几句话够了。

有时候脑子里有个大概方向但还没成型,对着它碎碎念两三分钟,把思绪一股脑倒出来,效果出奇的好。那些犹豫的语气、强调的重点、没讲完的灵光一现,往往比一份精炼的总结更有价值。

录音转写也是这个道理。一份未经修饰的会议记录,比一份短总结有用得多。

任务干预和排队,这是两码事但都救命

当你把语音输入和对运行中任务的直接控制结合起来的时候,威力才真正显现。

先说「任务干预」。

就是字面意思:AI正在跑任务,你中途打断它,给它一个新方向。这玩意在什么场景下最好用?你发现它跑偏了,得在它撞南墙之前拉回来。

比如,你在让它审查一个网站,一边在侧边栏指指点点一边直接开口打断:

把这个调小一点。 这两个元素之间的间距不太对劲。 这句文案写错了。

Codex会接收这些指令,在当前任务里直接响应。不需要等它跑完,不需要开一个新的对话,不需要解释上下文。

一个年轻女性伸手打断正在执行任务的AI机器人,在它撞墙前拉回方向

然后是「任务排队」,这个不太一样。

排队不会打断正在进行的任务,而是把新任务放在队伍后面。你可以这么说:

等这活干完了,把预览链接发到Slack给审核人看看。

简单讲,「干预」是改变它眼下正在做的事,「排队」是安排它接下来要做的事。前者是踩刹车,后者是挂挡。

两种能力叠加,你就获得了一种人机合一的掌控感——不是那种「点了发送然后不知道它会干嘛」的失控状态,而是始终知道它在干什么、随时可以接管方向盘。

它的手能伸到哪?

持久对话流解决了记忆问题,接下来一个问题就是:它能碰到什么?

Codex的触角现在可以向外延伸好几层。

@browser是内置浏览器,适合在侧边栏审查网页、做标注。

@chrome可以获取你Chrome浏览器的登录状态,处理那些需要账号登录信息的浏览器内工作流。

@computer专门搞定那些只能通过桌面图形界面完成的任务——就是那种必须得在桌面上点来点去的活儿。

三个工具各有各的地盘:browser适合做网页审查和预览;chrome适合需要你账号登录状态的自动化浏览器操作;computer是最后的兜底方案,桌面GUI的事儿都找它。

然后是MCP服务器和各类连接器。这个是Codex能力延伸的关键一步。

Slack集成、各种MCP工具连接器之所以重要,是因为很多关键任务在变成代码之前,最初往往只是一条聊天消息、一封邮件,或者一个日程安排。当Codex能接入这些工具的时候,它就不再只是一个「写代码的」,而是一个真正能帮你处理日常工作的角色。

还有技能(Skills)。当某个工作流被验证好用之后,你可以把它固化成技能,下次Codex直接跑通,不需要从头教它一遍。这个对重复性高的任务特别有价值。

你不在电脑前的时候,它还在干活

这是我觉得最有意思的一个能力:随时随地与Codex协同。

一个任务可以在你装满文件、权限和本地环境的Mac上启动,然后当你离开工位、用手机查看时,它依然在默默推进。

场景是这样的:你让Codex在电脑上跑一个耗时的任务,自己去喝咖啡。在外面的时候它有问题问你,你直接手机回复、批准它的下一步行动,或者在回座位前就给它指派新的方向。本地环境安安静静地跑着,人却可以自由移动。

这打破了「必须坐在电脑前才能干活」这个传统限制。

自动化:让它自己跑,别盯着了

自动化功能让Codex可以按照你设定的时间表自动干活。这里有两种模式:

定时自动化适合每天从零开始的例行任务——生成日报、跑代码库检查。但如果需要在一个带有历史记忆的对话中继续推进,那就用对话流自动化。

对话流自动化像一种定时唤醒的「心跳」机制。它会按照设定的时间表,定期回到同一个Codex对话流里继续工作。

把对话流置顶是很好用,但说到底它还是等你回去找它。而对话流自动化可以每隔几分钟或几小时自己去查岗,一直跑到满足某个条件为止。

举一个具体的例子,你的「幕僚长」对话流可以每30分钟跑一次:

每30分钟,去查一下我的Slack和Gmail里有没有需要处理但还没回的消息。 帮我排个优先级。 如果有人向我提问,尽可能深入查资料,然后帮我起草一份回复,但不要直接发送。

AI助手化身小精灵,同时在处理Slack消息、Gmail邮件和各种待办事项

等你回到电脑前,最耗时耗力的「收集背景资料」的工作已经做完了。你只需要做最后拍板发出去的决定。

对话流自动化也特别适合处理反馈循环。它可以默默盯着代码合并请求、Google文档或者Slack里的评论,趁你不在的时候自动推进后续的修改工作。

想象一个动画制作的场景:审核人在Slack发了一条视频意见。对话流自动化定时检查讨论进度,一旦有修改意见进来,自动渲染一版新的,然后在原贴里艾特审核人并发上新视频链接。如果某个软件的集成接口没法自动完成最终上传,它甚至能调动电脑桌面自动化,通过图形界面把最后一步走完。

整个闭环跨了三个系统——接收反馈的Slack、负责渲染的代码库、负责最终上传的桌面自动化工具。

目标设定:画一条终点线

当一个任务有一个清晰的终点线、Codex可以不断朝着那个终点努力的时候,目标的威力就彻底爆发了。

一个糟糕的目标是这样定的:「把这个Markdown文件里的计划实现一下。」

就这一句话。没有标准,没有终点,没有信号。

那什么是一个好的目标?它必须有一个可以被衡量的成功标准。

比如,一位工程师想把一个内部工具从Python迁移到Rust,他可以建好新目录,设定好目标,然后画一条明确的终点线:

直到所有单元测试全部通过,这个新版本的开发才算完成。

目标设定本质上是把「持续执行」和「验证器」结合在一起。你来定义想要的结果和何时停止的条件,然后给Codex一个信号,让它知道有没有离终点更近。

好用的验证器包括:一套完整的测试用例、一项基准性能测试、一个能稳定复现的Bug、一个验证矩阵,以及一个必须始终跑通的端到端工作流。

有野心当然重要,但没有验证机制的野心,就只是在许愿而已。

侧边栏——不用切来切去了

侧边栏这个功能很多人忽略了,但它其实非常好用。

它让生成的工作成果始终和对话窗口并排在一起。你再也不用把文件导出来,然后在不同软件之间痛苦地切来切去。生成的成果可能是代码,也可能是幻灯片、PDF文件、网页、表格,或者任何其他东西。

它特别擅长处理四种工作:检查生成的文件、标注需要修改的地方、操作网页界面、审查代码或文件的变更。

而且应用内浏览器让Codex可以直接检查渲染好的网页,控制它,甚至直接响应你在网页上做的标注。对网页或文件的评论全部留在这个工作闭环里,不用像以前那样拆成一个个单独的交接任务。

网页既变成了它的输出结果,也变成了你可以操控的控制面板。Codex可以建好一个页面,在侧边栏打开它,自己检查它,修Bug,然后原地不断迭代优化同一个东西。

下面这些场景配合侧边栏尤其好用:

用单个index.html做轻量级静态展示。跑Storybook审查UI组件。用Remotion Studio做代码生成的动画。在浏览器里放映的幻灯片演示。用于数据分析流的数据应用。

创作者站在工作台中央,周围漂浮着网页、UI组件、动画和数据图表各种成果

一个简简单单的index.html文件就能变成一个交互式小应用,服务器都不用搭。而且对话流自动化还能随着时间推移悄悄更新这些静态文件,等你回来时总能看到最新进展。

共享记忆:让上下文真正持久

当长时间运行的对话流能够打破单次聊天的界限,把记忆共享出去时,它们的作用会发生质的飞跃。

一个相对稳妥的做法是把这些持久对话流「锚定」在一个Obsidian知识库里。说白了就是建一个存放纯文本文件的文件夹。它简单直白,方便你随时查看、修改、移动,而且能保存很久。团队可以把这个文件夹放在任何喜欢的云盘里——Git、Dropbox、Google Drive都行。

你的知识库可能长这样:

vault/
├── TODO.md
├── people/
├── projects/
├── agent/
└── notes/

在最外层目录下放一个AGENTS.md文件。这里定义Codex的运行规则:当它了解到关于人员、项目、决策和待办事项的新情况时,应该如何更新这个知识库。

别死板地照抄某一种知识库结构。你需要做的是「教」你的AI智能体:那些持久的上下文该放在哪,哪些需要保留,以及什么时候不要瞎折腾去改文件。

一份实用的AGENTS.md里可以这么写:

把vault当作你长期的工作记忆区。 尽量把笔记整理得有条理,别搞得到处都是碎片记录。 准确地把待办事项、人员、项目、每日总结和草稿分类放好。 把做过的决定、遇到的卡点、负责人、日期和有用的链接好好保存下来。 如果没有实质性的新进展,不要随意修改知识库里的文件。

代码库是用来存代码的。而这个知识库,是用来存不断滚动的上下文的——牵涉到哪些人、改了什么、卡在哪里、接下来谁跟进,以及那些如果在两次聊天中间断掉就会彻底消失的细节。

重要的上下文绝不应该仅仅锁死在某一次聊天的文字记录里。把它们写下来,放在下一个对话流能够立刻接手的地方。

Codex自己也提供了官方的记忆功能——在设置>个性化>记忆里。它们像是系统自带的本地记事本,用来记住你的个人偏好、常用的工作流和经常踩的坑。不过这个功能是用来辅助你清晰写下来的上下文的,而不是取代它。Chronicle记忆组件也是同样的思路,帮Codex从你最近屏幕上发生的事情中提取并构建记忆。


写到最后我想说一件事。

Codex从诞生到现在,给很多人的印象还是一个「写代码的」。这个标签当然没错,它写代码确实很强。但如果你只让它干这一件事,就像买了一辆越野车然后只在柏油路上开。

现在围绕代码的那些周边工作——MCP服务器、网页界面、电脑桌面控制、对话流自动化、侧边栏直接审查文件——全都可以在同一套系统里搞定。

「任务干预」可以在中途打断它的动作;「任务排队」可以帮它安排好下一步;「对话流自动化」能让你人不在场时系统依然运转;「目标设定」给它画了一条清晰的终点线,让它知道要一直往哪里冲。

今天的Codex已经可以扛起一个完整的工作流:从听取指令、执行任务,到最终文件的审查和迭代。哪怕这些工作远远超出了代码库的范畴,它依然游刃有余。

一个人类在摇椅上悠闲地喝咖啡,Codex机器人完成了整个流水线:听指令→执行→产出→审查

剩下的,就是看你愿意把多少活儿交给它了。


以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~

谢谢你看我的文章,我们,下次再见。