AI在线 AI在线

OpenAI官方揭秘:我们这样用Codex写代码「7大核心用法、6条最佳实践首次公开」

Codex已深入OpenAI各大技术团队的日常工作,包括安全、产品工程、前端、API、基础设施和性能工程等本文基于对OpenAI工程师的访谈和内部使用数据,汇编了多个用例和最佳实践,展示Codex如何帮助团队更快地行动、提高工作质量,并大规模地管理复杂性:代码理解Codex帮助我们的团队在新员工入职、调试或调查事故时,快速熟悉代码库的陌生部分。 工程师们常用Codex来定位功能的核心逻辑、梳理服务或模块间的关系,并追踪系统中的数据流。 它还能揭示架构模式或缺失的文档,而这些通常需要大量手动工作才能生成。

Codex已深入OpenAI各大技术团队的日常工作,包括安全、产品工程、前端、API、基础设施和性能工程等

本文基于对OpenAI工程师的访谈和内部使用数据,汇编了多个用例和最佳实践,展示Codex如何帮助团队更快地行动、提高工作质量,并大规模地管理复杂性

https://cdn.openai.com/pdf/6a2631dc-783e-479b-b1a4-af0cfbd38630/how-openai-uses-codex.pdf

OpenAI官方揭秘:我们这样用Codex写代码「7大核心用法、6条最佳实践首次公开」

7大核心用法

用法一:代码理解

Codex帮助我们的团队在新员工入职、调试或调查事故时,快速熟悉代码库的陌生部分。

工程师们常用Codex来定位功能的核心逻辑、梳理服务或模块间的关系,并追踪系统中的数据流。它还能揭示架构模式或缺失的文档,而这些通常需要大量手动工作才能生成。

在事故响应期间,Codex通过揭示组件间的交互或追踪故障状态在系统间的传播路径,帮助工程师快速进入新的代码领域

团队成员分享:

性能工程师, 检索系统:“修复一个bug时,用‘提问模式’(Ask mode)看看代码库里还有哪些地方可能出现同样的问题。”

网站可靠性工程师, API平台:“值班时,我会把堆栈跟踪粘贴进去,然后问Codex认证流程在哪里。它能直接跳转到正确的文件,让我可以快速进行分类处理。”

DevOps工程师, 基础设施服务:“对于‘我该在哪里做这件事?’这类跨Terraform和Python仓库的问题,Codex的回答比grep快得多。”

示例提示:

这个仓库中的认证逻辑是在哪里实现的?

总结一下请求是如何从入口点到响应流经这个服务的。

哪些模块与 [插入模块名] 交互,故障是如何处理的?

用法二:重构与迁移

Codex常被用于执行跨多个文件或包的变更。例如,当工程师更新API、更改模式实现方式或迁移到新的依赖项时,Codex可以轻松地保证变更的一致性。

当同一更新需要在数十个文件中进行,或者更新需要感知那些无法用正则表达式或查找替换轻松捕捉的结构和依赖关系时,它尤其有用。

工程师们也用它来进行代码清理,比如将过大的模块拆分成小块、用现代模式替换旧模式,或为更好的可测试性准备代码。

团队成员分享:

后端工程师, ChatGPT Web:“Codex把所有旧的getUserById()调用都换成了我们新的服务模式,然后打开了PR。这在几分钟内就完成了,而手动做的话需要几个小时。”

产品工程师, ChatGPT Enterprise:“为了清除上线阻碍,我让Codex扫描旧模式的每一个实例,用Markdown总结其影响,然后直接用修复方案打开PRs。”

示例提示:

按功能将此文件拆分为独立的模块,并为每个模块生成测试。

将所有基于回调的数据库访问转换为async/await模式。

用法三:性能优化

Codex被用于识别和解决性能瓶颈。

在性能调优或可靠性工作中,工程师会提示Codex分析缓慢或内存密集型的代码路径,如低效循环、冗余操作或高成本查询,并建议优化方案,这通常会带来显著的效率和可靠性提升

Codex还通过识别仍在使用的高风险或已弃用的模式来支持代码健康。团队依靠它来帮助减少长期技术债务并主动预防回归。

团队成员分享:

基础设施工程师, API可靠性:“我用Codex扫描重复的高成本数据库调用。它非常擅长标记热点路径和起草批处理查询,我稍后可以对其进行微调。”

平台工程师, 模型服务:“Codex非常适合快速发现性能问题——我花5分钟写一个prompt,就能节省30分钟的工作量。”

示例提示:

优化此循环以提高内存效率,并解释为什么你的版本更快

在此请求处理程序中找到重复的高成本操作,并建议缓存机会

建议一种更快的方式来批量处理此函数中的数据库查询。

用法四:提升测试覆盖率

Codex帮助工程师更快地编写测试,尤其是在覆盖率很低或完全缺失的地方

在修复bug或进行重构时,工程师经常要求Codex建议能够覆盖边缘案例或潜在失败路径的测试。对于新代码,它可以根据函数签名和周围逻辑生成单元测试或集成测试

Codex在识别边界条件方面特别有用,例如空输入、最大长度或不寻常但有效的状态,这些在初步测试中常常被忽略。

团队成员分享:

前端工程师, ChatGPT Desktop:“我让Codex在夜间处理低覆盖率的模块,早上醒来就能看到可运行的单元测试PRs。”

后端工程师, 支付与账单:“在单一代码库(mono-repo)里切换分支很痛苦,所以我让Codex编写测试并启动CI,而我则继续在我的分支上工作。”

示例提示:

为此函数编写单元测试,包括边缘案例和失败路径

为此排序工具生成一个基于属性的测试

扩展此测试文件,以覆盖关于null输入和无效状态的缺失场景。

用法五:提升开发速度

Codex通过加速开发周期的开始和结束阶段,帮助团队更快地行动。

在启动新功能时,工程师用它来搭建样板代码——生成文件夹、模块和API存根,从而快速获得可运行的代码,无需手动连接每个部分。

当项目接近发布时,Codex通过处理一些虽小但必不可少的任务来帮助满足紧张的截止日期,例如分类bug、填补最后的实现空白,以及生成部署脚本、遥测钩子或配置文件。

它也被用来将产品反馈转化为初始代码。工程师经常粘贴用户请求或规格说明,让Codex生成一个可以后续返回并完善的草稿。

团队成员分享:

产品工程师, ChatGPT Enterprise:“我开了一整天的会,但仍然合并了4个PRs,因为Codex在后台帮我工作。”

全栈工程师, 内部工具:“Codex完美地帮助我们交付了3-4个低优先级的修复,这些修复本来可能会在待办事项列表中被搁置,这感觉非常有赋能感。”

示例提示:

为 POST /events 搭建一个新的API路由,包含基本的验证和日志记录

为跟踪新用户引导流程的成功/失败生成一个遥测钩子,使用这个模板 [插入你的遥测代码示例]

基于此规格说明创建一个存根实现:[插入规格说明或产品反馈]

用法六:保持心流

当工程师的日程被碎片化和中断填满时,Codex帮助他们保持生产力。

它被用来捕捉未完成的工作、将笔记转化为可工作的原型,或分拆出可供日后回顾的探索性任务。这使得暂停和恢复工作变得更加容易,而不会丢失上下文,尤其是在他们需要值班或会议繁多的时候。

团队成员分享:

后端工程师, ChatGPT API:“如果我发现一个可以顺手修复的问题,我会创建一个Codex任务,而不是切换分支。等我有空时再审查它的PR。”

API工程师, 基础设施可观测性:“我习惯性地将Slack话题、Datadog追踪、问题单等转发给Codex,这样我就可以专注于高优先级的工作。”

示例提示:

生成一个重构此服务的计划,并将其拆分为更小的模块

为重试逻辑创建存根,并添加一个TODO——我稍后会填写退避逻辑

总结这个文件,这样我明天就知道该从哪里继续了

用法七:探索与构思

Codex对于开放式工作也很有用,比如寻找替代解决方案或验证设计决策。你可以提示它提供解决问题的不同方法、探索不熟悉的模式,或对假设进行压力测试。这有助于揭示权衡、扩展设计选项,并使实现选择更加清晰

它还被用来识别相关的bug。给定一个已知问题或已弃用的方法,Codex可以在代码中识别其他地方的类似模式,从而更容易地捕获回归或完成清理工作

团队成员分享:

产品工程师, ChatGPT Desktop:“Codex帮助我解决了冷启动问题——我粘贴一个规格说明和一些文档,它就能搭建出代码框架或指出我遗漏了什么。”

性能工程师, 检索系统:“修复一个bug后,我会问Codex类似的问题可能潜伏在哪里,然后创建后续任务。”

示例提示:

如果系统是事件驱动而不是请求/响应模式,这个功能会如何工作?

找出所有手动构建SQL字符串而不是使用我们查询构建器的模块

用更函数式的风格重写此代码,避免突变和副作用

最佳实践

当获得结构、上下文和迭代空间时,Codex的效果最好。以下是OpenAI团队为在日常工作中持续获得价值而培养的一些习惯

1.从“提问模式”开始 (Start with Ask Mode)

对于大型变更,先提示Codex生成一个实现计划(使用Ask模式),这个计划随后会成为你切换到Code模式时后续提示的输入。这种两步流程能让Codex的输出更有根据,并有助于避免错误。Codex最适合处理那些需要你或团队成员花费大约一小时或几百行代码来完成的、范围明确的任务。随着模型的改进,它能承担的任务规模有望增加

2.迭代式改进Codex的开发环境

设置启动脚本、环境变量和网络访问能显著降低Codex的错误率。在运行任务时,注意那些可以在Codex环境配置中纠正的构建错误。这可能需要几次迭代,但从长远来看会带来显著的效率提升

3.像写Github Issue一样构建你的提示

当提示模仿你描述PR或Issue的方式时,Codex的响应会更好。这意味着在相关时要包含文件路径、组件名称、diffs和文档片段。使用像“用[模块X]中的同样方式实现这个”这样的模式可以改善结果

4.将Codex任务队列用作轻量级待办事项列表

分派任务来捕捉切题的想法、部分完成的工作或偶然发现的修复。没有必要一次性生成一个完整的PR。Codex可以作为一个暂存区,当你重新集中注意力时可以随时返回。

5.使用 AGENTS.md 提供持久上下文

维护一个AGENTS.md文件,以帮助Codex在你的仓库中跨多个提示更有效地操作。这些文件通常包含命名约定、业务逻辑、已知的怪癖,或Codex无法仅从代码中推断出的依赖关系

6.利用“N选最佳” (Best of N) 提升输出质量

“N选最佳”功能允许你为单个任务同时生成多个响应,以便快速探索多种解决方案并选择最佳方案。对于更复杂的任务,你可以审查多个迭代版本,并结合不同响应的部分来获得更强的结果

source:

https://cdn.openai.com/pdf/6a2631dc-783e-479b-b1a4-af0cfbd38630/how-openai-uses-codex.pdf

相关资讯

OpenAI发布代码Agent:开启自动化编程时代,超强智能体!

OpenAI在官网发布了一个全新基于云端的代码Agent——Codex。 Codex可以为开发人员自动执行多种任务,例如,编写功能代码、回答有关代码库的问题、修复错误以及提出拉取请求审查等;每个任务都在自己的云端沙盒环境中运行,同时能预加载用户的代码库。 据悉,Codex由Codex-1模型提供支持,这是OpenAI-o3的一个微调版本,专门针对软件工程进行了优化。
5/19/2025 9:10:00 AM

刚刚,OpenAI首个智能体提前曝光!高级编码AI剑指400万年薪L6级工程师

AGI或许就在本周? 刚刚外媒爆料称,OpenAI暗藏的首个智能体项目「Operator」即将发布。 网友发现Operator已登陆ChatGPT,不过可能Pro用户最先用上这款AI智能体将与ChatGPT深度集成,直接可以接管你的屏幕,自动化完成任务。
1/24/2025 9:00:00 AM
新智元

比尔盖茨自述曾是熊孩子:16岁徒步数百英里,边走脑中边写BASIC代码

步入70岁之际,比尔·盖茨终于出版了自己人生中的首部自传《源代码》。 不同于以往的商业发展视角,无关对微软成就的宏大叙事,在这本书里,比尔·盖茨自己的成长历程和创业故事一一铺陈开:生在一个优秀的家庭,撞上历史性技术变革与乐观情绪弥漫的时代,自己在个人电脑革命方兴未艾之时步入成年……过去十几年,比尔·盖茨一直站在技术发展的潮头浪尖,他关于科技、计算机、AI的每一次预测和思考都引人注目。 今年1月13日,他在阿联酋的阿布扎比CNN学院,分享了自己关于AI基数的最新洞见。
2/14/2025 9:05:00 AM
量子位
  • 1