目录

AI Agent 失控:从模型崇拜到环境工程

一个真实场景。

你让一个 AI Agent 负责代码审查,第一天它干得还不错。第二天你让它继续,它忘了昨天的审查标准,开始用另一套逻辑评分。第三天它直接在 PR 里删代码,理由是"看起来没用"。第四天你发现它悄悄改了 config.yaml,完全没人要求它这么做。一周后你得到一堆风格不一致的代码、一个报废的测试套件,和一个不知道为什么走偏了的 Agent。

你开始怀疑模型不够强。换了个更强的模型,同样的问题重复出现。

问题不在模型。在运行环境

模型很强,Agent 却总出问题

过去几年行业焦点一直是"模型能力"。GPT-4o 比 GPT-4 强,Claude Sonnet 4.x 比上一代强,这个逻辑没问题。

但模型强不代表 Agent 强。

一个只训练过单轮对话的模型,你让它跑一周的代码任务,它不会天然理解"任务状态需要持久化"、“不要修改你没要求改的模块”、“每次提交前跑测试”。这些不是模型的缺陷,是运行环境没有提供约束

2026 年越来越清楚的一件事:决定 Agent 是否可靠的,是 Harness,不是模型版本。Agent Harness 是一套围绕模型的工程化脚手架——管理上下文、强制约束、持久化记忆、闭合反馈回路。

行业逐渐形成的共识:Agent = 模型(大脑)+ Harness(身体/环境)。模型负责推理,Harness 负责让推理结果可靠地执行。

Harness Engineering 的核心命题是:如何为 AI Agent 构建一个可靠的、可控的、出了问题能追踪的运行环境。

Harness 的四大支柱

1. 上下文架构:别往模型脑子里塞垃圾

“context 越来越长,输出质量却越来越差”——这是"context rot(上下文腐烂)"。

常见的做法是把所有东西都塞进 context:系统 prompt、几十个 few-shot examples、项目所有文档、最近的对话历史。Context 越来越长,模型在无关信息里打转,开始出现"幻觉指令"——它开始执行 context 里根本没让你做的事。

即使用 Claude 的 200K token 超长上下文窗口,“lost in the middle"问题也会出现:模型在中间段信息的注意力显著下降,关键约束被悄悄忽略。更多 token 不等于更好的输出。

上下文架构的核心是分层、渐进式披露,配合 RAG 动态检索

系统层:固定规范(编码风格、架构约束、不变量)
   ↓ 按需注入
任务层:当前目标的背景、验收标准
   ↓ 按需注入
执行层:具体某一步的输入/输出,通过 Tool 调用传递
   ↑ RAG 检索
向量知识库:项目文档、历史决策、依赖关系(按需拉取,不预塞)

这样 model 在每一步只看到它真正需要的信息。RAG(检索增强生成)解决了"文档太多、全塞进去又撑死"的矛盾——模型问什么,向量库就找什么,而不是让模型在 300 页文档里自己筛。

更进一步的方案是分层记忆:短期的 context window + 情景式外部记忆(向量库)+ 动态摘要。Agent 只在需要时加载特定的记忆块,避免 context 无限膨胀。

2. 机械化约束:代码能拦住的事,别靠嘴说

Prompt 说"不要修改 tests 目录”,模型在压力下可能忽略。

这不是模型的错。Prompt 本质上是在"请求"行为,不是"强制"行为。模型在推理时可能会权衡:写这个测试是否对任务有帮助?然后决定跳过。

机械化约束是用工具强制执行

  • Linter 拦住违规提交:CI 里跑静态检查,Agent 写了不符合规范的代码 → 门禁 fail
  • 架构测试:ArchUnit 用代码定义组件边界,Agent 试图跨层调用 → 测试 fail
  • 沙箱隔离:Agent 只能在受控环境里运行,无法触及不该碰的系统资源
  • 强制门禁:没有 human override 选项,Agent 不能绕过验证

Prompt = 建议,机械约束 = 规则。 建议可以被忽略,规则不能。

3. 持久化记忆:解决 AI 的失忆症

模型没有持久化状态。每次对话都是从零开始。

上一轮改了什么、做到了哪一步、下一步该做什么——模型不知道。Session 之间完全割裂,第二天启动和新人入职一样。

传统解法是"上下文传递",把历史对话塞进新请求。但这解决不了根本问题:上下文会满、传的是消息不是状态、跨 session 依然无法共享。

Harness 的解法是文件系统优先

/workspace/
  AGENTS.md          # 项目规约,机器可读
  progress.json      # 当前进度状态
  memory/
    20260414.md      # 每日工作日志
    MEMORY.md        # 长期记忆(偏好、决策、技能)

Agent 启动时先读 AGENTS.md 和 progress.json,形成对项目状态的完整认知。执行后把结果写回文件。下一个 session 读同一份文件,无缝衔接。

一项实证研究表明,使用 AGENTS.md / CLAUDE.md 配置文件的团队,Agent 可靠性显著高于没有这类文件的团队——不是因为模型更聪明,而是因为环境给了模型清晰的行为边界。

4. 自验证反馈回路:让 Agent 重新理解需求,而不是重跑

传统开发:写代码 → 跑测试 → 失败 → 看错误 → 修代码 → 重跑

Agent 开发多了一步:写代码 → 跑测试 → 失败 → 重新理解需求 → 修代码 → 验证

最后一步是核心差异。Agent 犯的错往往不是"写错了",而是"理解偏了"。它在错误的假设下写出了逻辑上自洽但不符合需求的代码。

Claude Code 2.0 引入了 Checkpoints(重大编辑前的还原点,出错可以回滚)和 Subagents(将子任务并行分发给多个 agent 执行)——这是反馈回路在架构层面的强化:失败了可以回滚到检查点,子任务失败不影响主任务,验证结果可以自动触发下一轮修复。

行业实践:不只是在概念

Stripe Minions:每周 1300+ 个 AI 写的 PR

Stripe 的 Minions 系统是目前已公开的规模最大的生产 Agent 系统之一。每周超过 1300 个 PR 全部由 AI 写成,没有一行由人类手写——但每个 PR 在合并前都经过人工审查。

触发方式极其简单:在 Slack 消息上加一个 emoji 反应,Minion 就会启动并独立完成整个任务,无需进一步的人类提示。工程师可以同时启动多个 Minion 并行执行不同的任务。

技术核心是 Blueprints——一种编排流,把任务拆分成确定性节点(固定逻辑)和灵活的 agent 任务(开放式 AI 决策)的组合。Stripe 据此决定哪些步骤用严格规则控制,哪些步骤交给 AI 自由发挥。

底层 Harness 是定制版的 Goose(Block 开源的 agent harness),针对 Stripe 规模进行了深度定制。每个 Minion 运行在隔离的 AWS EC2 实例中,具备完整的 shell 访问权限,但通过容器边界控制风险。

工具层叫 Toolshed:约 500 个内部工具和 API,系统会根据当前任务动态只暴露所需工具,而不是把 500 个工具全部扔给模型。每个 PR 都必须通过严格的自动化测试、静态分析和代码审查门禁才能合并。

这是机械约束的完整实现:Slack 触发 → Minion 自主执行 → CI 全量检查 → 人工审查 → 合并。没有人类介入执行循环,只有人类审查最终产物。

OpenAI Codex:3000 万周活跃用户,90% 的财富 100 强

OpenAI Codex CLI 于 2025 年 4 月发布。到 2026 年 4 月,已达到 3000 万周活跃用户、74,000 GitHub Stars,被 90% 的财富 100 强企业采用。

每个任务运行在一个预装了用户代码的隔离云沙箱中,支持代码执行、linting、测试,并生成可追溯的命令日志。任务完成时间在 1–30 分钟之间,输出包含详细的命令日志、diff 和测试结果供人工审查。

GPT-5.3-Codex 在 Terminal-Bench 上得分 77.3%,在 SWE-bench Pro 上得分 56.8%——目前公开最强的 coding agent 基准之一。2026 年起支持并行任务执行和多模态输入。

人类在做什么?设计 Harness,设计反馈回路,定义验证标准,然后让 Agent 在这个框架里跑。这是 Harness Engineering 的理想状态:人类做架构,Agent 做实现,环境做验证。

Anthropic Claude Code:Scala 迁移到 Java,几分钟完成

Claude Code 目前部署在 10 万+ Cognizant 员工,用于编码、文档、DevOps 自动化。

一个真实案例:Scala → Java 的代码迁移,原本需要多个工程师数周完成,Claude Code 在几分钟内独立完成了迁移。它能读取日志和 stack trace,诊断生产事故,提出修复命令并执行。

Claude Code 2.0 的核心能力:Checkpoints(重大编辑前的还原点,出错可以回滚)、Subagents(将子任务分发给多个 agent 并行执行)、自验证循环。Anthropic 团队内部就是这样使用的:CI 集成 + 事故响应 + 日常代码审查,全部作为 Agent 工作流的一部分。

关键配置是 CLAUDE.md:一个项目级的配置文件,定义 agent 的行为边界、项目规范、工具调用约束。实证研究显示,有 CLAUDE.md 的项目 agent 可靠性显著更高——不是模型更聪明,是环境更清晰。

这不是 agent 变聪明了,是环境帮 Agent 记住了上下文、划定了边界、提供了回滚能力

GitHub Copilot Agent Mode:生产规模最广的 Harness 实践

GitHub Copilot 到 2025 年 7 月累计用户突破 2000 万,同样被 90% 的财富 100 强采用。

数据说话:使用 Copilot 的开发者任务完成速度提升 51–55%;PR 周期从 9.6 天缩短到 2.4 天,降幅 75%。用户代码中平均 46% 由 Copilot 生成,开发者对建议的保留率达到 88%

Agent Mode 是 Copilot 的 Harness 层——不只是自动补全,而是能够规划任务、调用工具、修改文件、运行测试、自我校验的完整 Agent 环境。截至 2025 年中,16–23% 的活跃 GitHub 项目已经启用了 Agent Mode。

Copilot 的 Harness 把 IDE、CI、代码搜索、测试执行全部串联起来,形成一个完整的反馈回路。模型做推理,工具链做约束,环境做验证。

为什么 Prompt Engineering 不够用了

Prompt Engineering Harness Engineering
关注点 单次交互的质量 整个系统生命周期的可靠性
范围 模型 prompt 环境、工具、约束、状态
失效方式 prompt 被忽略 门禁 fail
持久性 无状态,每次重头开始 有状态,跨 session 持续
扩展性 单任务优化 多 agent、多任务协同

这不是说 Prompt Engineering 没用。两者不在同一层。Prompt Engineering 是战术优化,Harness Engineering 是战略架构。

你可以在一个没有 Harness 的系统里优化 Prompt,效果有限。你也可以在一个 Harness 完整的系统里用朴素 Prompt,系统依然可靠运行。

Stripe、OpenAI、Anthropic 的实践都在说同一件事:Prompt 写得再好,也无法替代一个严格的运行环境。

工具链现状

  • AGENTS.md / CLAUDE.md:行业标准,存放项目规约和机器可读指令集。实证研究证实有效性显著

  • MCP(Model Context Protocol)modelcontextprotocol.io——连接 Agent 与外部工具的标准化协议,月 SDK 下载量达 9700 万次,已索引近 2 万个 server,2025 年 12 月移交 Linux Foundation Agentic AI Foundation 治理,被称为"AI 的 USB-C"。2026 路线图包含无状态传输、session 迁移、/.well-known 服务发现

  • Goose(by Block):开源 agent harness,支持中间件和工具约束;Stripe Minions 的底层即基于 Goose 的定制版本

  • GitHub Copilot Agent Mode:生产规模最广的 Harness 实践,90% 的财富 100 强已采用

最后

Harness Engineering 的本质是把"如何让 AI 可靠工作"从玄学变成工程。

当 Agent 出问题时,你该检查的不是模型够不够强,而是 Harness 够不够严:上下文有没有泄漏、约束有没有被绕过、状态有没有丢失、反馈回路有没有闭环。

Stripe 每周 1300 个 AI PR、OpenAI Codex 3000 万周活跃用户、Copilot 75% 的 PR 周期缩短——这些数字背后不是更强的模型,而是更严格的运行环境工程。

模型是大脑,Harness 是身体。没有 Harness 的模型是一个会说话的空壳——看起来能动,遇到真实压力就散架。