{"schema_version":1,"id":"article:codex-loop-engineering","kind":"article","slug":"codex-loop-engineering","title":"关于 Codex 的一点思考：为什么需要拥抱 Loop Engineering？","author":"晨旭","url":"https://chenxu.xin/writing/codex-loop-engineering","date":"2026-06-15","updated":"2026-06-15","description":"Loop Engineering 是取代你自己去 prompt Agent 的那个角色，转而设计执行这件事的系统。用 Codex 的 Skills、Worktrees、Automations 三层机制看它如何落地。","position":null,"group":null,"series":"入门系列文章","tags":["agent","product-teardown"],"publication_status":"public","maturity":"evergreen","body_sha256":"7191929fd71adf90a2c8c39ca5fec7a6681d78419f13e26d93b44a6836063661","paragraph_rule":"src/lib/paragraphs.mjs@1","paragraphs":[{"id":"p1","kind":"paragraph","text":"最近看了很多关于 Loop Engineering 的系列探讨，Peter Steinberger 和 Anthropic Claude Code 的负责人 Boris Cherny 都曾指出类似的观点：AI 时代工程师的核心交互方式，正在经历一次底层的范式转移。","raw":"最近看了很多关于 Loop Engineering 的系列探讨，Peter Steinberger 和 Anthropic Claude Code 的负责人 Boris Cherny 都曾指出类似的观点：AI 时代工程师的核心交互方式，正在经历一次底层的范式转移。"},{"id":"p2","kind":"paragraph","text":"这篇文章，就是我对 Loop Engineering 这个概念，再结合 Codex 这个真实产品做的一次思考复盘。","raw":"这篇文章，就是我对 Loop Engineering 这个概念，再结合 Codex 这个真实产品做的一次思考复盘。"},{"id":"p3","kind":"heading","text":"一、什么是 Loop Engineering","raw":"## 一、什么是 Loop Engineering"},{"id":"p4","kind":"paragraph","text":"首先，如何定义 Loop Engineering 呢？","raw":"首先，如何定义 Loop Engineering 呢？"},{"id":"p5","kind":"quote","text":"Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead.\n（循环工程就是取代你作为提示代理人的角色。你去设计执行该任务的系统。）","raw":"> Loop engineering is replacing yourself as the person who prompts the agent. You design the system that does it instead.\n>\n> （循环工程就是取代你作为提示代理人的角色。你去设计执行该任务的系统。）"},{"id":"p6","kind":"heading","text":"1、Prompt 工程与 Loop 工程","raw":"### 1、Prompt 工程与 Loop 工程"},{"id":"p7","kind":"paragraph","text":"过去，我们与大模型交互的主流方式是对话式。这种模式的优势在于极低的门槛和即时的正反馈。","raw":"过去，我们与大模型交互的主流方式是对话式。这种模式的优势在于极低的门槛和即时的正反馈。"},{"id":"p8","kind":"paragraph","text":"但它的劣势也很明显：人类成为了整个系统的性能天花板。","raw":"但它的劣势也很明显：人类成为了整个系统的性能天花板。"},{"id":"p9","kind":"paragraph","text":"之前为了优化大模型的生成效果，需要花大量时间坐在屏幕前进行人工的 prompt 调优和数据分析。敲下一段指令，等待模型返回，阅读结果，再敲下一段。Agent 只是一个被动的工具，你必须全程紧紧握住它。一旦你停下，工作流就停止了。","raw":"之前为了优化大模型的生成效果，需要花大量时间坐在屏幕前进行人工的 prompt 调优和数据分析。敲下一段指令，等待模型返回，阅读结果，再敲下一段。Agent 只是一个被动的工具，你必须全程紧紧握住它。一旦你停下，工作流就停止了。"},{"id":"p10","kind":"paragraph","text":"而 Loop Engineering 恰好相反。它的突破点在于你不再微操每一步，而是建立一个小型系统：让这个系统去发现工作、分发任务、检查结果、记录状态，并自主决定下一步。","raw":"而 Loop Engineering 恰好相反。它的突破点在于你不再微操每一步，而是建立一个小型系统：让这个系统去发现工作、分发任务、检查结果、记录状态，并自主决定下一步。"},{"id":"p11","kind":"paragraph","text":"之前探讨过的拉尔夫循环（Ralph Loop）中，那个无限运行的 while true 脚本就是为了抵抗上下文腐烂而设计的系统级脚手架（Harness）。而 Loop Engineering，就是跑在这个脚手架之上、更高维度的业务流水线。","raw":"之前探讨过的[拉尔夫循环](/writing/agent-model-plus-harness)（Ralph Loop）中，那个无限运行的 `while true` 脚本就是为了抵抗上下文腐烂而设计的系统级脚手架（Harness）。而 Loop Engineering，就是跑在这个脚手架之上、更高维度的业务流水线。"},{"id":"p12","kind":"heading","text":"2、从 Chat 到 Loop：架构的演进","raw":"### 2、从 Chat 到 Loop：架构的演进"},{"id":"p13","kind":"paragraph","text":"当面对复杂的软件工程需求，单纯的聊天窗口是远远不够的。于是就有了以下工具架构的演进：","raw":"当面对复杂的软件工程需求，单纯的聊天窗口是远远不够的。于是就有了以下工具架构的演进："},{"id":"p14","kind":"list","text":"- 纯 LLM Chat：一问一答。受限于人类的耐心和模型的注意力衰减。\n- 任务委派：给模型一个明确的单一任务（比如「修这个 bug」），模型在本地或沙盒中执行完毕，人类来 Review 代码。\n- Loop Engineering：设定一个目标（如「迁移某个旧模块」），定义好验收测试，然后系统自动派生多个子智能体，在隔离的环境中并行修改、自测、相互审查，直到达成目标。","raw":"- **纯 LLM Chat**：一问一答。受限于人类的耐心和模型的注意力衰减。\n- **任务委派**：给模型一个明确的单一任务（比如「修这个 bug」），模型在本地或沙盒中执行完毕，人类来 Review 代码。\n- **[Loop Engineering](/writing/loop-engineering-optio)**：设定一个目标（如「迁移某个旧模块」），定义好验收测试，然后系统自动派生多个子智能体，在隔离的环境中并行修改、自测、相互审查，直到达成目标。"},{"id":"p15","kind":"heading","text":"二、「设计循环」：AI 开发者的新范式","raw":"## 二、「设计循环」：AI 开发者的新范式"},{"id":"p16","kind":"paragraph","text":"理解了上述的演进，会发现一个问题：如果系统如此自动化，那人类工程师的价值在哪呢？","raw":"理解了上述的演进，会发现一个问题：如果系统如此自动化，那人类工程师的价值在哪呢？"},{"id":"p17","kind":"paragraph","text":"答案是：工作从「执行者」变成了「循环设计师 + 审核员」。","raw":"答案是：工作从「执行者」变成了「循环设计师 + 审核员」。"},{"id":"p18","kind":"paragraph","text":"这与在做产品时的思路很像。比如开发一个需求文档自动化生成工具时，单纯靠一段超长的 prompt 效果会极不稳定。真正的解法是把「写文档」这个大动作，拆解成结构化的 SOP 工作流。","raw":"这与在做产品时的思路很像。比如开发一个需求文档自动化生成工具时，单纯靠一段超长的 prompt 效果会极不稳定。真正的解法是把「写文档」这个大动作，拆解成结构化的 SOP 工作流。"},{"id":"p19","kind":"paragraph","text":"在代码世界也是一样。Boris Cherny 说：「我不再 Prompt Claude，而是让运行中的循环驱动 Claude 自主决策。我的工作已转变为编写循环逻辑。」","raw":"在代码世界也是一样。Boris Cherny 说：「我不再 Prompt Claude，而是让运行中的循环驱动 Claude 自主决策。我的工作已转变为编写循环逻辑。」"},{"id":"p20","kind":"paragraph","text":"过去，是通过写具体的代码来定义产品；在 AI 早期，是通过写 Prompt 来指导模型；而现在，是通过设计 Evals（评测）和 Stopping Conditions（停止条件）来校准和约束系统。","raw":"过去，是通过写具体的代码来定义产品；在 AI 早期，是通过写 Prompt 来指导模型；而现在，是通过设计 Evals（评测）和 Stopping Conditions（停止条件）来校准和约束系统。"},{"id":"p21","kind":"paragraph","text":"你的判断力、你的系统审美品味，以及你对错误边界的定义，构成了这个 Loop 的底线。","raw":"你的判断力、你的系统审美品味，以及你对错误边界的定义，构成了这个 Loop 的底线。"},{"id":"p22","kind":"heading","text":"三、在 Codex 中如何实践 Loop Engineering？","raw":"## 三、在 Codex 中如何实践 Loop Engineering？"},{"id":"p23","kind":"paragraph","text":"Codex 这个产品，就是 Loop Engineering 理论在真实工程环境中的完美映射。它不是一个聊天工具，而是一个「Loop-native 的软件工程控制台」。","raw":"Codex 这个产品，就是 Loop Engineering 理论在真实工程环境中的完美映射。它不是一个聊天工具，而是一个「Loop-native 的软件工程控制台」。"},{"id":"p24","kind":"paragraph","text":"可以将 Codex 的核心机制提炼为三个维度的关注点。","raw":"可以将 Codex 的核心机制提炼为三个维度的关注点。"},{"id":"p25","kind":"heading","text":"1、Skills 与 State：解决 Agent 失忆问题","raw":"### 1、Skills 与 State：解决 Agent 失忆问题"},{"id":"p26","kind":"paragraph","text":"面对长周期任务，上下文污染一直是一个致命的问题。在处理庞杂且动态的文档上下文时，如果只是把所有的背景信息全塞给大模型，它的注意力很快就会崩溃。","raw":"面对长周期任务，上下文污染一直是一个致命的问题。在处理庞杂且动态的文档上下文时，如果只是把所有的背景信息全塞给大模型，它的注意力很快就会崩溃。"},{"id":"p27","kind":"paragraph","text":"Skills（AGENTS.md）：这是给 Agent 的黄金规范。不需要每次都在对话框里重复「我们的代码规范是什么」，而是把它写在项目目录下的 SKILL.md 中。这其实就是将领域知识前置做了一次「预处理切块」，Agent 在需要时才会隐式或显式地调用它。","raw":"**Skills（AGENTS.md）**：这是给 Agent 的黄金规范。不需要每次都在对话框里重复「我们的代码规范是什么」，而是把它写在项目目录下的 SKILL.md 中。这其实就是将领域知识前置做了一次「预处理切块」，Agent 在需要时才会隐式或显式地调用它。"},{"id":"p28","kind":"paragraph","text":"State（状态机）：这就像之前在多智能体协作中提到的，需要一个团队白板来同步共识。在 Codex 中，一个简单的 Markdown 文件或 Linear 面板就是这个状态机。它记录了「尝试了什么，通过了什么，还剩下什么」。明天早上你的 Automation 醒来时，读的就是这个状态文件，而不是昨天几万 token 的废话日志。","raw":"**State（状态机）**：这就像之前在多智能体协作中提到的，需要一个团队白板来同步共识。在 Codex 中，一个简单的 Markdown 文件或 Linear 面板就是这个状态机。它记录了「尝试了什么，通过了什么，还剩下什么」。明天早上你的 Automation 醒来时，读的就是这个状态文件，而不是昨天几万 token 的废话日志。"},{"id":"p29","kind":"heading","text":"2、Worktrees 与 Sub-agents：定义「Maker-Checker」的隔离机制","raw":"### 2、Worktrees 与 Sub-agents：定义「Maker-Checker」的隔离机制"},{"id":"p30","kind":"paragraph","text":"在并行工作流中，两个 Agent 同时修改同一个文件，就像是人类工程师在毫无沟通的情况下修改同一个代码仓库。","raw":"在并行工作流中，两个 Agent 同时修改同一个文件，就像是人类工程师在毫无沟通的情况下修改同一个代码仓库。"},{"id":"p31","kind":"paragraph","text":"Worktrees：Codex 内置了 Git worktree 支持，为每个并行的子任务分配了绝对干净的、物理隔离的工作目录。这完美呼应了 Anthropic 在 Managed Agents 架构中「把沙盒变成牛」的设计哲学：沙盒只是一个干脏活的隔离环境，大脑（Harness）可以在一个又一个隔离环境里调度代码，彼此绝不干扰。","raw":"**Worktrees**：Codex 内置了 Git worktree 支持，为每个并行的子任务分配了绝对干净的、物理隔离的工作目录。这完美呼应了 Anthropic 在 [Managed Agents 架构](/writing/anthropic-managed-agents)中「把沙盒变成牛」的设计哲学：沙盒只是一个干脏活的隔离环境，大脑（Harness）可以在一个又一个隔离环境里调度代码，彼此绝不干扰。"},{"id":"p32","kind":"paragraph","text":"Sub-agents：这是对结果质量的保障。自己写代码的模型，往往会陷入幻觉，觉得自己写得无懈可击。Codex 允许拉起平行的 Sub-agents（比如一个探索者、一个实现者、一个安全审查员），这就相当于在产品中设定的自动化负面评测系统，用另一个带有批判视角的 Agent 来守住质量的下限。","raw":"**Sub-agents**：这是对结果质量的保障。自己写代码的模型，往往会陷入幻觉，觉得自己写得无懈可击。Codex 允许拉起平行的 Sub-agents（比如一个探索者、一个实现者、一个安全审查员），这就相当于在产品中设定的自动化负面评测系统，用另一个带有批判视角的 Agent 来守住质量的下限。"},{"id":"p33","kind":"heading","text":"3、Automations 与 /goal：驱动系统的「目标函数」","raw":"### 3、Automations 与 /goal：驱动系统的「目标函数」"},{"id":"p34","kind":"paragraph","text":"这是 Loop 真正跑起来的引擎。","raw":"这是 Loop 真正跑起来的引擎。"},{"id":"p35","kind":"paragraph","text":"Automations：这个自动化功能就像产品的定时跑批任务。设定好频率和对应的 Skill，让 Agent 每天早上自己去扫 CI 失败日志、提炼 Bug，把结果推送到 Triage 收件箱，以供审查。","raw":"**Automations**：这个自动化功能就像产品的定时跑批任务。设定好频率和对应的 Skill，让 Agent 每天早上自己去扫 CI 失败日志、提炼 Bug，把结果推送到 Triage 收件箱，以供审查。"},{"id":"p36","kind":"paragraph","text":"/goal：这是最能体现这个新范式的指令。我们给出的不再是「改这行代码」，而是「跑到所有测试全绿为止」。Codex 会在每次流转后，用一个独立的模型来评判当前状态是否满足了你设定的 Stopping Condition。","raw":"**/goal**：这是最能体现这个新范式的指令。我们给出的不再是「改这行代码」，而是「跑到所有测试全绿为止」。Codex 会在每次流转后，用一个独立的模型来评判当前状态是否满足了你设定的 Stopping Condition。"},{"id":"p37","kind":"heading","text":"四、循环，新一代工程师的核心杠杆","raw":"## 四、循环，新一代工程师的核心杠杆"},{"id":"p38","kind":"paragraph","text":"从理论到 Codex 的产品落地，我们可以清晰地看到技术范式的转变：Build the loop. Stay the engineer.","raw":"从理论到 Codex 的产品落地，我们可以清晰地看到技术范式的转变：Build the loop. Stay the engineer."},{"id":"p39","kind":"paragraph","text":"当 Loop 运行得越来越顺畅，我们很容易陷入一种舒适的「Cognitive Surrender（认知放弃）」：停止思考，全盘接受 AI 的产出。","raw":"当 Loop 运行得越来越顺畅，我们很容易陷入一种舒适的「Cognitive Surrender（认知放弃）」：停止思考，全盘接受 AI 的产出。"},{"id":"p40","kind":"paragraph","text":"但这是危险的。","raw":"但这是危险的。"},{"id":"p41","kind":"paragraph","text":"Loop 只是放大了杠杆。同样一个自动修复 Bug 的 Loop，懂业务的人用它来快速清理技术债，将精力投入到更底层的架构思考中；而试图逃避思考的人，只会用它在代码库里埋下更多看不见的隐患。","raw":"Loop 只是放大了杠杆。同样一个自动修复 Bug 的 Loop，懂业务的人用它来快速清理技术债，将精力投入到更底层的架构思考中；而试图逃避思考的人，只会用它在代码库里埋下更多看不见的隐患。"},{"id":"p42","kind":"heading","text":"最后","raw":"## 最后"},{"id":"p43","kind":"paragraph","text":"在 AI 优先的世界里，系统的壁垒不再是敲击键盘的速度，而是我们如何定义正确的品味，以及设计这些循环。","raw":"在 AI 优先的世界里，系统的壁垒不再是敲击键盘的速度，而是我们如何定义正确的品味，以及设计这些循环。"}],"authored_claims":[{"id":"human-is-the-ceiling-in-chat-mode","text":"对话式交互门槛低、正反馈快，但人类成为了整个系统的性能天花板。一旦你停下，工作流就停止了。","stance":"judgment","confidence":"high","supersedes":null,"note":null,"formed_at":"2026-06-15"},{"id":"engineer-becomes-loop-designer","text":"工程师的角色从「执行者」变成「循环设计师加审核员」。过去写代码定义产品，AI 早期写 Prompt 指导模型，现在设计 Evals 和停止条件来约束系统。","stance":"judgment","confidence":null,"supersedes":null,"note":null,"formed_at":"2026-06-15"},{"id":"state-file-beats-token-log","text":"解决 Agent 失忆不靠塞更多上下文，而靠一个状态文件记录「尝试了什么、通过了什么、还剩什么」。第二天 Agent 醒来读的是这个，而不是昨天几万 token 的废话日志。","stance":"judgment","confidence":null,"supersedes":null,"note":null,"formed_at":"2026-06-15"},{"id":"models-need-adversarial-reviewers","text":"自己写代码的模型往往会陷入幻觉，觉得自己写得无懈可击。要拉起带批判视角的 Sub-agent 来守住质量下限，这就是自动化的负面评测。","stance":"judgment","confidence":null,"supersedes":null,"note":null,"formed_at":"2026-06-15"},{"id":"loop-only-amplifies-leverage","text":"Loop 只是放大了杠杆。懂业务的人用它清理技术债、把精力投入更底层的架构思考；试图逃避思考的人只会用它埋下更多看不见的隐患。","stance":"judgment","confidence":"high","supersedes":null,"note":null,"formed_at":"2026-06-15"}],"claim_ids":["human-is-the-ceiling-in-chat-mode","engineer-becomes-loop-designer","state-file-beats-token-log","models-need-adversarial-reviewers","loop-only-amplifies-leverage"],"revision":"37a735805f34ec0204ba218ca4fc76006eaa30e6a6573dd51c985736d49733fa"}