Agent Harness 从原理到实战:大模型不干活,全靠智能体运行框架在撑

大家好,我是晚安code。

这层壳,就是今年 AI 编程圈最值得弄明白的概念:Agent Harness。官方用一句话概括它的定位:Model + Harness = Agent------模型负责思考,Harness 负责把事做完。

我写这篇文章的时候,自己就运行在 Agent Harness 里。下面从原理讲到实战,看完你就能看懂 Claude Code、DeepSeek Harness 这些工具到底在忙什么。先点个收藏,我们开始。

一、Agent Harness 是什么:给只会读书的模型装上手

大模型本身不会干活,真正在干活的,是模型外面那层 Harness。

Agent Harness(智能体运行框架):Anthropic 官方术语表给出的定义是「把语言模型变成能干活的编码代理所需的工具、上下文管理和执行环境」。你可以把它理解为「给只会思考的模型装上的手脚和缰绳」。

Anthropic 说得更直白:Claude Code 是 harness,Claude 是里面的模型。Claude 负责想,harness 负责把想出来的每一步落到实处。

我举个生活的例子。想象公司里来了个绝顶聪明、但没手没脚的研究员:他脑子转得快,可拿不了笔、开不了门、翻不了资料。你得给他配个助理------递文件、抄结果、把关哪些门能进。这个助理,就是 Harness。

所以别把 Agent 想成「一个更聪明的模型」,它其实是「一个模型 + 一个替它干活的框架」:

ini 复制代码
Agent = Model + Harness

这个视角一旦建立,你再看 Claude Code、Codex、DeepSeek Harness 这些工具,就不会问「它是什么模型」,而是问「它给模型装了什么手脚」。

二、核心机制:工具调用循环

模型永远不会自己执行任何操作------它只发出请求,执行、反馈、再决策,全靠一个循环完成。

Agent Loop(代理循环):也叫工具调用循环,是模型「思考→调用工具→看结果→再思考」的循环,直到它认为任务完成。你可以把它想成跑腿办事:想一步,走一步,看看结果,再想下一步。

Anthropic 官方文档里有句话我印象很深:「模型永远不会自己执行任何操作。它发出一个结构化请求(tool_use),由你的代码(或 Anthropic 的服务器)来执行,再把结果回填进对话。」

也就是说,你让 AI「帮我把这个报错修了」,模型哪怕胸有成竹,也没能力动你电脑上一个字节。真正动手的,是 harness 里的这个循环。看图 1,注意「权限检查」这一环------它是 Harness 区别于普通脚本的关键。

循环什么时候停?三选一:模型自己认为任务完成,输出最终回复;触达最大轮数;或者烧到预算上限被强制叫停。

我试过把同样的任务直接喂纯 API:模型给出一堆高质量建议,但就是不会动手改文件------因为没有循环替它执行。那一刻我懂了,会调 API 和会干活是两码事。

可能有人会问:模型不都会调 API 吗,为什么还需要 Harness?

会调 API 不等于会干活。调 API 是一次性的:你发请求、拿回复,中间没有循环。Harness 提供的是循环、工具执行、权限和上下文管理------就像会打电话订餐,不等于会经营一家餐厅。

三、三大支柱:工具、上下文、权限

Harness 的价值不在某个工具,而在于把工具、上下文、权限三件事拧成一套能转的循环。

模型能干活,靠的是三根支柱。少一根,循环就转不顺。

1)工具层:模型的「手」 harness 给模型预装一双手:Bash(跑命令)、Read / Write / Edit(读写文件)、Grep / Glob(搜代码)、WebSearch(联网查资料)。在 Claude Code 里,只读工具(Read、Grep)可以并行跑,会改状态的(Edit、Write、Bash)要串行,防止互相踩脚。

2)上下文管理:模型的「工作台」 上下文压缩(Context Compaction):对话快接近窗口上限时,harness 把前面一大段历史总结成一份摘要继续干活,避免「聊太久忘了开头」。就像整理书桌:东西多到放不下时,把旧资料归档成一张便签。Claude Code 默认上下文窗口 200k token,快满时自动压缩,也可以手动 /compact 指定保留什么、/clear 彻底重开。

3)权限模型:模型的「门卫」 权限模型(Permission Model):模型想调用工具时,harness 按规则决定「放行、询问还是拒绝」。就像进门要过门卫,门卫按名单决定你能不能进。Claude Code 提供几种模式:default 每个危险操作都问你;acceptEdits 自动批准改文件,但 shell 大多还要问;bypassPermissions 跳过全部检查(官方只建议在容器、沙箱里用)。你每点一次「Allow」,都是权限模型在工作。

四、演进:为什么以前不需要 Harness

四代演进看下来,Harness 不是谁一拍脑袋想出来的,是模型变强之后的必然。

看实战之前,先回答一个很自然的问题:为什么以前的 AI 不需要 Harness?因为模型以前只会「回答」。

  • 第 1 代,纯 API:你发 prompt,模型回一段文本。干不干活,全看人。
  • 第 2 代,+记忆:加 system prompt、RAG,模型「记得住背景」,可手还是没有。
  • 第 3 代,+Harness:给模型工具和循环,它开始「动手干活」。
  • 第 4 代,+目标驱动 Loop:不光干活,还能自己盯着长期任务,做完才停。

看图 2:每一代,都解决上一代最痛的问题。

有意思的是,Anthropic 对 harness 的态度很「反直觉」:Less scaffolding, more model------少搭架子,多信模型。他们写 Claude Code 时,主循环就是最简单的一个 while 循环。Claude Code 负责人 Boris Cherny 甚至说过:每六个月,删掉你的 CLAUDE.md、skills、hooks 再重新加。脚手架有保质期,别把它当成永远有效的护城河。

我第一次用 Claude Code 被权限弹窗拦下时,才意识到「批准/拒绝」这个动作本身就是 Harness 的一部分------它不只是框架,还是一套「谁说了算」的制度。

五、实战:Claude Code 的 Harness 长什么样

Claude Code 不是模型,它是一个把 Claude 变成能干活同事的 Harness。

光讲原理没意思,来点真的。装好 Claude Code,在项目目录敲 claude 启动,给一句人话任务,比如「给这个项目加一个 --verbose 命令行参数,跑测试验证」。

bash 复制代码
claude

接下来你会看到 harness 自己开工:

  1. 先 Grep 找入口文件在哪;
  2. Read 读相关代码,判断该在哪加;
  3. 改文件前,Edit 默认要过权限:终端弹出允许/拒绝,等你说「Allow」;
  4. 改完自动跑 Bash 测试,不行就自己回头再改;
  5. 中途上下文快满了,它会提示你压缩,把历史总结成摘要继续。

全程你要做的,就是批准和看结果------你每点一次「Allow」,都是权限模型在把关。

权限弹窗多了确实烦人,我一般给常用命令配规则白名单(比如把 Bash(git *) 加进 allow 列表),把小事自动化。注意权限规则是「最严格者胜出」:deny > ask > allow,可以精确到某个工具和某段路径。

上下文这块我踩过坑:有次任务很长,我没留意压缩提示,等它压缩完发现前期的取舍细节被摘要掉了,只能让它重跑一遍。

自那以后我养成两个习惯:关键信息写进 CLAUDE.md(项目记忆文件,会话启动自动读入),任务太长就拆给子代理------子代理用独立上下文,不占主会话窗口。

可能有人会问:上下文被压缩了,关键信息会不会丢?

压缩前会有提示,你也可以用 /compact 指定「保留 X 丢弃 Y」,或者 /clear 重开一个干净窗口。真正重要的东西写进 CLAUDE.md 或拆给子代理,别全指望上下文记着。

六、新玩家:DeepSeek Harness v0.1

DeepSeek Harness 的意义不是又一个 Claude Code,而是第一次把 harness 本身做成了可拆装的产品。

如果你以为「Agent Harness」只是 Anthropic 一家的概念,那就错过了最近的热点。2026 年 8 月 13 日晚,DeepSeek 开源了 DeepSeek Harness v0.1(MIT 协议,GitHub 仓库 deepseek-ai/deepseek-harness),发布半小时星数破万。它想回答一个更大的问题:能不能把 harness 变成一台可以自由组装的机器?

DeepSeek 的答案是「一切皆插件」:模型、工具、技能、会话、沙箱、存储,甚至 Agent Loop 本身,全是插件,框架里没有特权组件。想换模型?改配置。想加工具?装插件。官方默认带 100 多个可单独开关的插件,仓库包含 230+ 个成员包。

它预置了四种运行模式(本质是四套插件组合):

模式 干什么用
标准模式 全套工具,通用开发
PTC 模式 模型生成代码编排工具链,中间数据不进上下文,省 token
极简模式 只留 Shell 和文件编辑,做模型基准测试
创造模式 让 Agent 检查、改装自己的运行时

想试一下很简单,一行命令(需要 Node 22.19+):

bash 复制代码
npx @deepseek-ai/dsh web   # 默认地址 http://127.0.0.1:3080

把三个选项摆在一起,就看清 Harness 这条赛道的分层了:

方案 核心定位 循环与权限 上手成本 适合谁
裸模型 API 模型本身 全都要你自己写 只调接口生成文本
Claude Code 极简 harness 内置完整 想立刻有人帮写代码
DeepSeek Harness 可拆装 harness 插件化 想自己搭 Agent 产品

七、把公式记住:Agent = Model + Harness

把「Model + Harness = Agent」这个公式记住,你就拿到了 2026 年 AI 编程所有争论的钥匙。

在我看来,选型的问题早就不该是「哪个模型最强」,而是「哪个 Agent Harness 能让模型把活干得最利索」------Claude Code 把循环做到了极致的简单,DeepSeek Harness 则第一次把 harness 本身做成了可拆装的商品。两者都不完美,但方向很一致:模型负责思考,框架负责把活干完。

想继续深挖,可以去翻 Claude Code 官方术语表(搜:code.claude.com glossary)和 DeepSeek Harness 的 GitHub 仓库(搜:deepseek-harness),前者有「agentic harness」的权威定义,后者能看「一切皆插件」的源码。


我是晚安code,持续分享编程干货。觉得有用的话记得点赞收藏和关注~也欢迎在评论区聊聊:你第一次意识到「是 Agent Harness 在替模型干活」,是在哪个瞬间?

相关推荐
刘立军1 小时前
依赖注入:禁止 AI 硬编码实例化,提升可测试性与扩展性
架构·ai编程
晚安code2 小时前
上下文工程是什么?从提示词工程到上下文,一文讲透 AI 不跑偏
ai编程
晓得迷路了2 小时前
栗子前端技术周刊第 142 期 - DeepSeek Harness、pnpm 12 RC、crypto‑js...
前端·javascript·ai编程
必须会一定会3 小时前
Node.js Agent Handoff 仓库扫描 MVP:忽略规则、include 通配与稳定输出实现
人工智能·node.js·ai编程
AINative软件工程3 小时前
Agent 上下文账本工程:别让工具结果把 128K 窗口塞成垃圾场
后端·架构·ai编程
程序员黑豆3 小时前
Java正则表达式详解
java·前端·ai编程
全栈弄潮儿12 小时前
如何向 AI 清楚描述一个编程需求
chatgpt·openai·ai编程
candyTong13 小时前
Claude Code 如何恢复一段会话
后端·架构·ai编程