Humans steer. Agents execute.
程序员的职责正在从直接编写代码,转向设计能让 AI Agent 持续推进与验证的环境。
Humans steer. Agents execute.
这句话准确概括了程序员职责的变化:从直接编写代码,转向构建让 Agent 持续推进的环境、明确表达意图并建立可靠的反馈回路。代码仍然重要,但工程重心正转移到支撑模型稳定运行的上下文与执行边界上。
要让 AI Agent 编码工具保持自主、长效地运行,需要面对几个基本的工程现实。
开发形式会不断变化
底层模型的发展会持续重塑开发形态。
针对当前模型短板(如上下文受限、推理漂移、执行脆弱)所设计的方法论和流程,往往会随着下一代模型能力的跃升而迅速过时甚至成为负担。因此,工程设计的重心应当放在保持系统演进弹性上,构建能随模型升级而低成本调整的环境,而非固化特定阶段的执行流水线。
少一点方法论崇拜,多一点工具现实主义
前沿工程团队往往更早触达可行的技术方案,原因在于他们具备更长的真实反馈链路与工具迭代机会。Codex、Claude Code 等工具已经逐步将 Skill 规范、脚手架、任务拆分和反馈闭环内化为产品原生能力。与其在外部反复叠加抽象包装,不如深入理解成熟工具的生效前提与失效边界。
“Less is more”在这里体现为务实的工程克制。
上下文决定了执行质量
模型的实际输出上限,高度受限于所提供的上下文质量。输入越模糊,模型越倾向于补全出看似合理却偏离意图的内容。
在工作流中,“研究”与“实现”应当严格物理拆分:
- 研究阶段:梳理问题空间、收集代码约束、理解现有架构;
- 实现阶段:基于经过过滤和确认的上下文精准修改代码。
若将二者混合在同一会话,Agent 会在边探索边修改中迅速污染上下文,导致执行目标发散。
需求保持中立,反馈引入对抗
模型存在天然的迎合偏好。例如输入“找出数据库中的所有 bug”,模型倾向于迎合这种预设,产出大量疑似缺陷的噪声。提示词应当保持中立,例如“梳理当前数据库各组件的运行逻辑,并列出与预期不符的行为”。前者奖励主观结论,后者促成客观验证。
在需要深度排查问题的场景中,对抗式评估结构能有效抑制这种倾向:
- 生成 Agent:负责挖掘潜在缺陷,按发现严重度获得正向反馈,逼近候选缺陷的超集;
- 反驳 Agent:负责证伪提出的缺陷,反驳失败承担更高惩罚,逼近有效缺陷的子集;
- 裁判 Agent:基于静态测试或形式化基准裁决双方论据并打分。
通过环境激励的相互制衡,系统可以在概率模型固有偏差下收敛出更稳健的结果。
明确的终止条件是持续运行的前提
长程任务的稳定性,核心在于终止条件的确定性。一个可持续的 Agent 任务必须具备明确的退出判断:
- 自动化测试全部通过
- 界面渲染与基准截图完成像素或 DOM 校验
- 接口契约或文件改动满足预设的验收标准
缺乏客观终止条件的“长程自治”,本质上是让模型在退化的上下文窗口中无序漂移。
避免单智能体长会话,关注 Harness Engineering
单智能体在超长会话中必然面临上下文腐化:历史噪音累积导致注意力分散,早期错误在滚动窗口中被固化。更合理的架构是把工作拆解为类似 Issue 的短周期任务,在隔离的执行分支中运行并验证,最后汇总合并。
因此,工程精力应集中在 Harness Engineering 上:
- 任务的边界定义与上下文裁剪;
- 研究阶段与实现阶段的隔离;
- 验收与退出条件的自动化校验;
- 多 Agent 的协作与对比机制;
- 异常发生时的状态重置与快照恢复。
最终,决定系统产出质量的,是这套支持 Agent 稳定、可验证运行的环境基础设施。