作者:智药深瞳

持续重构:驱动技术自我进化

摘要

以 Agent Coding 为案例,讨论自进化系统的结构、发生机制,以及 AI 时代人类劳动关系的未来走向

约 1,866 字6 分钟阅读

持续重构的测试金字塔:单元测试、集成测试与端到端测试构成递进式反馈系统
持续重构依赖分层测试构成的高密度反馈闭环来源: 智药深瞳据测试金字塔原则重绘

深度实践 Agent Coding 的工程团队往往会快速意识到其对整体架构和标准软件工程提出的要求“不降反增”的事实。本文以 AI 渗透最快的软件工程领域为切口,尝试为 AI 时代下的自我进化系统形态与人类劳动关系的未来走向提供一些有依据的猜想。

正如 OpenAI 在 2026 年 2 月 11 日发表在其官方博客上的《Harness engineering: leveraging Codex in an agent-first world》所完整记录的那样,从一个完全空白的零代码仓库出发,Codex 独立完成了全部工程工作。顶级 AI Coding 工程研究社区的成员无一不注意到如今的 Coding Agent 已经具备完全放手进行编码的有效性。以往意义中的 Human in-the loop 中的程序员显然是那个拖累工程进度的因素,然而将 Coding Agent 真正部署于生产环境,远非自媒体鼓吹的“一人 App”那般轻松。

首先是 Context 管理。由于上下文的天然限制,人们永远都不能期望 AI 在单次交互中能完整理解整个代码库。事实上,缺乏 Context 管理的 Coding Agent,其实际能力会迅速退化至“初级程序员水平”,这在复杂工程中远远不够。与工程师们通常的体感一致的是在使用 Coding Agent 前 30% Context Window 时模型智能明显更高;随着上下文的堆积,生成新代码的难度也随着在 Token Space 中结果组合的爆炸而指数上升。

OpenAI Agent 工程中的仓库内知识库目录结构高清重绘
仓库内知识库以简短入口提供地图,并将详细信息组织成可版本化、可渐进披露的结构。来源

工程实践中,应对这一问题的有效解法是维护增量语义索引:

One of the earliest lessons we learned was simple: give Codex a map, not a 1,000-page instruction manual.

https://openai.com/index/harness-engineering/

可以是 Markdown 格式的操作文档,可以是 git commit 触发后对变更文件的自动语义解析,也可以是 Claude Code 结合 OpenSpec 的 Spec 管理组合。在严格的操作规程下,模型自身负责 memory 管理,并通过结构化索引实现对上下文的渐进式披露(Progressive Disclosure),从而在信息密度与推理质量之间保持动态平衡。

OpenAI 分层领域架构与跨层边界示意图
显式的架构边界、固定依赖方向与跨层入口,为 Coding Agent 定义了可操作的工程结构。来源

Codex 和 Claude Code 都在安全处理上给出了良好的示范:它们会把 AI 生成的代码放到隔离的容器中运行,shell 命令需要请求用户审批。但抛开老生常谈的安全性,在真实业务场景中,安全只是边界管理的最低层要求。更为本质的问题在于给定预先定义的作用域,在作用域中我们如何更加高效地寻找可能采取的动作。实操中,这通常通过定义明确的 SKILL 集合、MCP 工具链,乃至利用 Hook 机制实现的预定义操作集与精细化 Shell 权限控制来落地。

与 RL 系统中提供 Reward 类似,如何获得真实的 Reward 本身的重要性因为 Agent 的快速 Coding 成为新的瓶颈。有趣的是,DevOps 运动在软件工程领域已经实践了十多年——持续集成、持续部署、自动化测试,其本质上就是在压缩反馈周期。AI 只是让这个过程变得不可忽视,甚至迫切。一个同时覆盖 CPU/GPU 测试、Unit Test、Intergration Test 和 E2E Test 的完整测试体系需要在正确的变更后高效触发正确的测试子集,并快速给出可信具有信息的反馈,这对测试架构的设计和精度均提出了极高要求。

本文并不期望对 Coding 这一话题做过多技术上的讨论,到此我们已经可以得到一些“如何像训练 RL 一样让软件工程进入自驱动进化”这一问题的整体面貌。让我们再次回顾经典的 RL 三要素从而进行下面的类比,从而对 Agent Coding 的整体结构做一次剖析:

状态(State):增量驱动的 Context + 代码本身。软件工程天然具备良好的状态记录机制,只需补充语义层 Context,即可还原系统的完整状态视图。

动作(Action):工程“边界”,通常被具象化为某一个沙盒(Sandbox),用来定义可以完成的动作集合。

奖励(Reward):测试体系与优化目标的总和,涵盖常规的测试金字塔以及与系统最终性能相关的目标如冒烟测试。

由单元测试、集成测试和端到端测试组成的测试金字塔
测试金字塔:大量快速单元测试构成底座,集成测试与端到端测试逐层验证更宽的系统边界。参考

回到文章开头提到的自我进化,为什么软件工程最先实现自我进化,而其他领域却举步维艰?

答案简单明了——软件工程本身已经对如何做 State、Action 和 Reward 做了良定义,经过了从 1960-1970s 的软件危机、Winston W. Royce 的瀑布模型。到 Alan Kay 引领的面向对象抽象革命,再到 DevOps 与 Infrastructure as Code 的全面普及。这条路走了半个世纪,才走到今天可以“像训练 RL 一样驱动软件工程进化”的起点,而现实世界的其他问题却不是如此。

AI 正在逼迫现实世界完成同样的转变,这里我们回顾软件工程的发展史给出三个阶段:

  1. 抽象(Abstraction):将复杂的现实世界问题剥离具体细节,提炼出可操作的符号表示。

  2. 显式定义(Definition/Formulation):将抽象后的概念明确地形式化:状态是什么?动作(约束)是什么?目标(奖励)是什么?

  3. 操作赋予(Actionability):为系统划定可执行的动作边界,使自动化得以真正介入并驱动进化循环。

对照不同领域的系统设计即是如此,结合斯图尔特·考夫曼(Stuart Alan Kauffman)在《A World Beyond Physics》中的观点可以得到在生物学问题中的解。

  1. 抽象:对应命过程从湿性化学(wet chemistry)中抽象为信息表示的过程。但生物抽象具有无法穷举、高度扩张与涌现的本质属性,因此抽象只能在局部完成,无法在全局上完备。

  2. 显式定义:对应为细胞行为划定可测量的状态空间与适应度景观(Fitness Landscape)。难点在于生物的“奖励信号”并非外部给定的,而是系统自身演化而成——物种(宏观进化)或细胞(微观进化)既是选择者也是被选择者。

  3. 操作赋予:对应生物学工程实践,不是强行指定演化轨迹,而是扩展相邻可能的边界(expanding the adjacent possible),让系统在自催化闭合中自主涌现新功能。

依次打开并层层嵌套的俄罗斯套娃公共领域照片
俄罗斯套娃所呈现的层层嵌套,映射了生物系统在微观与宏观尺度上的持续更新。来源

正如持续演化的社会经济活动,生物系统同样在非稳态中不断进行微观与宏观层面的自我更新。而研究这一过程本身,如同俄罗斯套娃般层层嵌套,边界永远开放,需要人们不断靠双手进行扩展。最优秀的 AI Coding 团队已经发现,围绕系统本身的构造所涌现出的新型工作形态,正在深刻重塑“程序员”这一角色与边界。类似的转变将在不远的将来以同样深远而持久的方式,向其他行业传导,从而让人类劳动进入新的形态。


引用本文

来源: Alex Su · 2026 · 智药深瞳

Su, A. (2026, March 1). 持续重构:驱动技术自我进化. 智药深瞳. https://ssooop.github.io/zh/blog/2026/continuous-refactoring/cn