Harness · AI Coding 2026

模型是大脑
Harness 是身体

在 AI Coding 链路里,模型只是冰山一角。真正决定 agent 能不能交付生产代码的, 是它周围的 Harness —— 工具、上下文、子代理、评估、权限、记忆。 下一代 Coding 团队的差距,不在模型层,而在 Harness 工程。

🧠 模型层 GPT-5 / Claude 4 / Gemini 2.5 ⚙️ Harness 层 工具 · 上下文 · 编排 🎯 目标 从辅助到自主团队

Harness 到底是什么?

一句话:Harness 是把模型变成 agent 的所有非模型组件。 它决定了模型"能不能干活"、"干得好不好"、"干得安不安全"。

A · 字面意思

马具 · 把力量变成动力

Harness 本意是"马具"——把马的力传导到车上。没有 harness,马就是马; 有了 harness,马才能拉车。LLM 本身只是"会说话的马", Harness 才是让它真正干活的那套传动系统

在 AI Coding 语境里,Harness 包括工具调用、上下文组装、子代理调度、 权限沙箱、记忆持久化、评估反馈、用户界面、等等

B · 类比人类工程师

人类工程师需要什么?

一个能干的工程师,背后是一整套看不见的支撑系统: IDE、终端、版本控制、设计稿、文档、CI/CD、Code Review、PM 协作。 模型也一样——它需要被"武装起来"

人类 IDE · 终端 · Git · 文档
Agent Tool · Bash · Edit · Read
人类 项目规范 · 历史 PR
Agent rules · CLAUDE.md
人类 CI · 测试 · Code Review
Agent Hooks · Eval Harness
人类 同事协作 · 分工
Agent Subagents · Skills

当下 Harness 在做的六件事

不管是 Claude Code、Codex CLI、Gemini CLI 还是 Cursor Composer, 头部 harness 都在围绕这六个维度内卷。这是 2026 年的主战场

01
Tool Surface

工具集成层

Harness 给模型装上"手脚":文件读写、终端执行、grep 搜索、git 操作、网络请求。 工具不是越多越好——好的 harness 提供少量、原子、组合性强的工具。

代表设计:Bash + Edit + Read + Grep + WebFetch
02
Context Engineering

上下文工程

怎么把对的代码、对的规范、对的历史塞进有限的窗口。 从 Prompt Engineering 进化到 Context Engineering——管理整个上下文图谱, 包括 rules、memory、@-files、动态加载。

代表机制:CLAUDE.md · .claude/rules · @file 引用
03
Subagents

子代理编排

一个父代理负责拆解任务,分发给"搜索代理"、"编辑代理"、"测试代理"、"审查代理"。 每个子代理有独立上下文、独立工具集、独立目标。 这是从"单体 agent"走向"agent 团队"的关键。

代表模式:Explore + Plan + General-purpose
04
Hooks & Feedback

Hooks 与反馈回路

在工具调用前后插入自动化检查:pre-tool 校验权限、post-tool 跑 lint、 stop 时跑测试。Hooks 让 harness 变成一个 "每一步都被验证"的系统,而不是信任模型的输出。

代表事件:PreToolUse · PostToolUse · Stop · Notification
05
Permission & Sandbox

权限与沙箱

哪些操作需要确认?哪些文件不能动?哪些命令要拦? Harness 必须给模型划定可操作边界——既不能太严(agent 啥都做不了), 也不能太松(agent rm -rf 整个仓库)。

代表机制:Allowlist · workspace trust · container
06
Plan / Execute

Plan 与执行分离

先出方案、再动手。Plan Mode 让用户先看到 agent 的计划、确认或修改, 然后进入执行。这把"决策权"和"操作权"分离—— agent 提出方案,人来做最终判断。

代表流程:EnterPlanMode → ExitPlanMode → 执行

一次请求背后的六层链路

用户输入一句话后,harness 里发生了什么?下面是从输入到落盘的完整执行路径。

L1Input

输入接收 · 用户意图解析

CLI / IDE / Web 输入 + 当前会话历史 + 工作目录环境变量。最朴素的一层,但决定了起始上下文

"重构 src/auth 目录,把 JWT 改成 RS256"
L2Context

上下文组装 · Context Engineering

加载 CLAUDE.md、项目 .claude/rules、相关 @files、近期会话摘要。控制 token 预算,决定"哪些进窗口"。

system_prompt + rules + files + history ≈ 60K tokens
L3Plan

规划 · 任务拆解

模型推理 → 拆成子任务(先调研、再设计、再实现、再测试)→ 进入 Plan Mode 让用户确认。不确认不执行

TaskList: [explore src/auth, design RS256 schema, implement, write tests]
L4Dispatch

派发 · 子代理 / 工具调用

父代理分发任务给子代理(独立上下文),或直接调用工具。每一步都有 PreToolUse hook 校验。

subagent: Explore(src/auth) → subagent: Coder(plan) → Bash(npm test)
L5Feedback

反馈 · Hooks & 评估

PostToolUse 跑 lint/format,Stop 跑测试套件。结果回灌到下一轮推理,形成闭环

PostToolUse(Edit) → bash lint.sh → result: 3 warnings
L6Memory

记忆持久化 · 跨会话

把这次会话的结论("我们项目用 RS256 JWT")写入 user/project memory。下次新会话自动加载。

memory.user: "项目偏好:JWT 用 RS256、TS strict、测试覆盖率 ≥80%"

Harness 四年,从补全到团队

AI Coding 的演进,本质是 Harness 的演进。 模型能力是地基,harness 才是上层建筑。下面是已经走过和正在走的四步。

P1
Phase One 2021 – 2023

Copilot 时代 · 单行补全

Harness 的雏形:光标位置 + 上下文窗口 → 模型 → 补全建议。几乎没有"系统",就是 IDE 插件。

  • 工具:仅 IDE 内联补全
  • 上下文:当前文件 + 光标前后
  • 权限:受 IDE 控制
  • 用户角色:驾驶员,模型是副驾
代表产品:GitHub Copilot · Tabnine · Codeium
P2
Phase Two 2023 – 2024

Chat IDE 时代 · 对话式编辑

Harness 开始成形:侧边栏对话 + 文件引用 + Apply 按钮。模型能读懂项目,局部重构成为可能。

  • 工具:文件引用、多文件编辑
  • 上下文:手动 @-file + 项目索引
  • 权限:用户在 IDE 里 review diff
  • 用户角色:编辑,模型是协作者
代表产品:Cursor · Cody · Continue · JetBrains AI
P3
Phase Three 2024 – 2025

CLI Agent 时代 · 仓库级自主

Harness 完整化:完整 Bash 权限 + 子代理 + Plan Mode + Hooks + Skills。整个仓库变成 agent 的工作面。

  • 工具:Bash · Edit · Read · Grep · Web
  • 上下文:CLAUDE.md + rules + 动态加载
  • 权限:细粒度 allowlist + 沙箱
  • 用户角色:指挥,agent 是执行者
代表产品:Claude Code · Codex CLI · Gemini CLI · Aider
P4
Phase Four 2026 →

Swarm 时代 · 自主团队

Harness 走向团队:多个 agent 长期协作,每个专精一项(PM / Architect / Coder / Reviewer / Tester)。人类监督而非执行。

  • 工具:浏览器 + IDE + 终端 + SaaS API
  • 上下文:跨会话记忆 + 共享知识库
  • 权限:基于角色 RBAC + 审计日志
  • 用户角色:客户,agent 是承包方
代表探索:Devin · Factory · Codegen · 多 agent 编排框架

九个绕不开的硬骨头

Harness 工程没有银弹。下面九个问题,是当下所有 harness 团队都在反复撞墙的地方。 理解它们的难度,比"再加一个 tool"重要得多。

CH · 01
Context Rot

上下文腐烂

塞进窗口的内容越多,模型表现反而越差。噪声淹没了信号。重要的规范、文件位置、历史决策被堆在大量无关内容里,模型开始忽略关键约束。

当下尝试 · 分层 rules · 动态 @file · 上下文压缩 · 检索式加载
CH · 02
Verification Gap

验证缺口

模型不知道自己写的代码对不对。它可以"看起来合理",但缺一个边界条件、改错一个变量名、漏一个并发问题。没人测 = 不能上生产。

当下尝试 · 测试驱动 · Eval Harness · 自动 Code Review agent
CH · 03
Goal Drift

目标漂移

长任务跑了几十步后,agent 开始"忘了最初的目标"。它可能在解决一个不再存在的问题,或者追求一个"看起来对"但偏离原意的子目标。

当下尝试 · 显式 goal 复述 · 检查点回溯 · Plan 状态机
CH · 04
Tool Explosion

工具爆炸

工具越多,模型越不会选。100 个工具时,agent 经常调错工具、忽略关键工具、把工具拼起来用错。工具设计的组合性 vs 表达力是核心权衡。

当下尝试 · 少量原子工具 · 工具分组 · 语义路由
CH · 05
Cost Spiral

成本螺旋

子代理编排 + 长会话 + 多轮反思 = token 爆炸。一个简单任务可能消耗 100K+ tokens。多 agent 不是"越多越强",而是"调度越精越省"。

当下尝试 · 模型分层路由 · 缓存复用 · 子代理任务边界
CH · 06
Permission Tension

权限拉锯

太严 → agent 啥都做不了;太松 → agent 一行 rm -rf 干废仓库。人类被频繁的"是否允许"打断时,会直接"全部允许",等于裸奔。

当下尝试 · 路径级 allowlist · 容器沙箱 · 不可逆操作拦截
CH · 07
Eval Paradox

评估悖论

怎么衡量 harness 的好坏?SWE-bench 测的是"模型 + 一次性 prompt",而 harness 是"模型 + 工具 + 上下文 + 编排"。评估 harness 比评估模型难一个数量级

当下尝试 · 真实仓库回放 · 失败轨迹分析 · 人评混合
CH · 08
Prompt Injection

提示注入

工具结果里塞恶意指令(来自网页、用户输入、第三方文件),模型可能被骗。harness 必须假定"所有外部内容都是不可信输入",而非上下文。

当下尝试 · 内容消毒 · 工具结果沙箱 · 用户指令优先级
CH · 09
State Recovery

状态恢复

agent 跑到一半崩溃了、用户换了设备、网络断了几小时。怎么从断点恢复?纯靠日志回放既慢又贵,需要结构化的会话状态

当下尝试 · Checkpoint 快照 · 增量恢复 · 任务 DAG 持久化

做对这五件事,避开最常见的弯路

Harness 工程最大的敌人是"把模型当全部"。 下面是过去一年踩过的坑里出现频率最高的五条经验。

不要做

  • ×
    工具堆砌 加 20 个工具 ≠ harness 强。模型选错工具的概率随数量指数增长。宁少勿杂,每个工具语义清晰。
  • ×
    无验证发布 "agent 跑完了"不等于"代码可以 merge"。没有测试、lint、review 的 harness 就是在生产埋雷。
  • ×
    全部允许 频繁打断 → 用户疲劳 → 一律点"是" → agent 删库。设计权限时优先考虑默认值就安全
  • ×
    无脑调模型 任务失败第一反应是"换更强的模型"。但 80% 的失败是上下文没给对,而不是模型不够聪明。
  • ×
    会话无限增长 不做 compaction、不设上限,token 跑爆、长任务越来越慢、目标越来越糊。节制是工程美德

坚持做

  • 先 Plan 后 Execute 大任务强制进入 Plan Mode。让用户看到方案、确认或修改,再动手。决策权留给人类
  • Hooks 闭环 PostToolUse 跑 lint、Stop 跑测试。让 harness 自带"每一步都被验证"的肌肉记忆。
  • 写好 CLAUDE.md 把项目规范、技术栈偏好、命名约定写进 rules。一次书写,长期受益。上下文是 harness 的肥料
  • 记忆分层 User Memory(你的偏好)/ Project Memory(这个项目)/ Session Memory(这次会话)。分层管理,不混淆。
  • 持续评估 跑自己的 eval 套件,记录每次失败的任务、原因。Harness 是可观测系统,不是黑盒。

模型决定了 AI Coding 的上限
Harness 决定了 AI Coding 的下限
真正交付生产代码的,是把两者捏在一起的那套工程

— Harness Engineering Notes · 2026