使用 Codex 自动化 OpenAI 的重复性工作
我职业生涯的大部分时间都是作为一名软件工程师,要么在做重复性工作——部署和运维软件——要么在构建软件来替我完成这些重复性工作。
我在 OpenAI 的第一份工作是在云基础设施团队,为应用团队搭建新的 Kubernetes 集群。我会花一周时间准备一批集群,处理私有链接、配额和 Terraform 相关的问题。一旦这些集群准备就绪,我就开始处理下一批。
我的下一份工作是在 API 团队,针对我们最新的模型运行评估。我会处理评分器、配额、配置和 PyTorch 相关的问题。当评估成功运行且模型发布后,我又会从下一个模型开始重复这个过程。
现在我使用 Codex 来帮助完成这些重复性工作。我仍然在构建软件——或者更准确地说,是 Codex 帮助我构建软件——但我不再为每个任务创建单独的自动化脚本,而是构建 Runme 来:
- 收集并整理围绕工作流的上下文信息。
- 保持适当的审查和批准边界。
- 利用早期运行中学到的经验来改进未来的 Codex 运行。
使用 Codex 运行评估
在 OpenAI,我们在发布新模型和功能时会运行评估,以检查它们是否按预期工作。要运行评估,我会创建一个 Runme 笔记本,并写下目标的简要大纲:
# Goal: Run the evaluation against the current model
- Review a previous run to understand the workflow.
- Write a detailed plan in this notebook.
- Wait for me to review and approve the plan before beginning.
- Document the commands you run, their output, and how you interpret the results.然后我让 Codex 将该笔记本单元格作为其目标:
Read the goal cell in the Runme notebook open in the browser. Treat it as the
goal, write your plan in the notebook, and wait for my approval before starting.Codex 会读取笔记本并在工作推进时更新它。当计划准备好后,我会审查它,并在需要时进行修改。通常,我参与的有用之处在于帮助 Codex 在备选方案之间做出决定:使用哪个评估系统、是否需要配置新基础设施,或者现有资源是否足以完成任务。
当 Codex 工作时,我会监控它的进展——有时是从手机上——偶尔在它卡住时给它一些提示。例如,如果因为配额耗尽而无法配置开发环境,我可能会建议重用现有环境或寻找其他已获批准的选项。
最终得到的是一个笔记本,记录了完成任务所需的步骤,以及那些走不通的路径。在收尾之前,我会与 Codex 一起记录下那些原本会消失在对话中的决策:为什么选择某个方案、现在更倾向于哪种方法,以及下次应该怎么做。
与 Codex 协作编写笔记本
Runme 项目是一个开源 Web 应用程序,用于与 Codex 一起创建笔记本。与 Jupyter 和 Colab 一样,它支持 Markdown、代码单元格和 HTML,这使得创建结合了说明、命令、结果、表格和图表的文档成为可能。
这些笔记本可以直接保存到 Google Drive。这为与我共事的人提供了一种熟悉的方式来查找和共享生成的成果,而无需引入另一个文档仓库。
对于每个笔记本,Runme 还会写入一个名为 *.index.md 的配套 Markdown 索引文件。Google Drive 可以索引该文件,这使得智能体在需要示例、操作上下文或早期运行的结果时,更容易发现之前的笔记本。
智能体通过 WebMCP 与 Runme 交互。当应用程序加载时,它会注册浏览器端工具,智能体可以使用这些工具来:
- 读取有关使用 Runme 及其笔记本的说明。
- 运行有边界的 JavaScript 程序,以读取或更新笔记本内容。
- 读取应用程序的文档。
这种架构之所以重要,是因为 Runme 是一个作为静态网站提供的客户端应用程序。仅仅为了暴露传统的 MCP 端点而添加服务器,会引入额外的基础设施和运维复杂性,并且会改变笔记本数据的处理位置。WebMCP 让应用程序能够直接从浏览器暴露其能力。
收集和整理有用的上下文
每次运行评估时,我都有机会记录工作是如何完成的,让下一次运行变得更轻松。随着工作流程的改进,它会产生更有用的上下文。而这些上下文,反过来又能帮助 Codex 更有效地处理下一个版本的任务。
评估飞轮:运行评估、记录工作流程、利用该记录改进 Codex,然后更快地运行下一次评估。
许多本可以帮助智能体的信息已经存在于日常工作中,但它们分散在终端历史记录、Slack、运维手册、文档和仪表板中。困难的不在于证明文档有用,而在于让文档在工作进行时的创建成本足够低。
Runme 将意图、操作、决策和结果整合到同一个工件中。持久目标让 Codex 专注于任务,而自动审批审查可以在不改变现有权限边界的情况下审查符合条件的操作。
我仍然决定计划何时就绪,以及何时需要人类判断的重要选择。Codex 负责重复性的执行,并记录发生的事情,其详细程度超过我自己会写下的内容。由于生成的笔记本易于分享,这些实践知识就不必困在某个人的聊天记录中。
找回我的心跳时间
我职业生涯中很大一部分时间都在琢磨那些能让挑剔的机器按我意愿行事的神奇咒语。云基础设施和 Kubernetes 本应让软件的部署和运维变得更简单。结果,我们还得到了一个庞大的工具生态系统,CNCF landscape 很好地捕捉了这一点。解决一个问题往往会带来新的问题:选择、学习和运维解决它所需的工具。
对我来说,Codex 的吸引力在于它能帮助处理那些重复性的运维工作,同时让我继续参与重要的决策。
希望我能找回一些心跳时间——并用它们来陪我的狗狗玩耍。