Skip to content

2小时速通Harness工程:从零搭建Claude Code智能体系统

2026年4月27日

2小时速通Harness工程:从零搭建Claude Code智能体系统

开发智能体不是写一堆 if-else。智能体就是大模型本身,你要做的是给它搭一个干活的环境——Harness。这个项目 12 节课,从零开始造这辆车。

什么是 Harness 工程?

Harness = 工具 + 知识 + 上下文管理 + 权限边界

打个比方:模型是司机,Harness 是车。你不需要教司机怎么开车,只需要造一辆好车。

12 章节总结

阶段课节干了什么解决的问题
让它跑起来S01一个循环智能体能运转了
S02工具箱 + 围栏能干活,有边界了
让它干得好S03Todo 清单不跑偏了
S04子智能体能分工,上下文不臃肿
S05技能文件夹有知识储备,按需取用
S06三层压缩聊多久都不爆
让它记得住S07任务图关机了任务还在
S08后台线程不傻等了
让它带团队S09队友 + 收件箱一个人忙不过来,招人
S10通信规矩关机要握手,大事要审批
S11自动认领不用老板盯着,自己找活
S12独立目录各写各的,别打架

S01:最小智能体 — 一个循环就够了

核心就是一个循环:让智能体不断调用工具,直到它自己判断不再需要调用为止。

整个 Agent:把用户问题丢给大模型 → 大模型觉得需要用工具就用 → 用完把结果喂回去 → 大模型继续想 → 要么继续用工具,要么直接给答案。

什么时候停:大模型自己决定,不需要你写任何判断逻辑。

S02:工具箱 — 能用什么、不能碰什么

两件事:

  1. 建工具箱,把所有允许用的工具注册进去(读文件、写文件、编辑文件、跑命令),没注册的根本看不见
  2. 给文件工具加围栏,只能操作项目目录里的文件,防止越界访问系统文件

加新工具:往工具箱里多注册一条就行,循环代码一行不变。

S03:Todo 清单 — 防止注意力漂移

智能体干着干着容易跑偏,忘记最初目标,开始即兴发挥、重复做事、跳步。

解决办法:加 Todo 清单。接到任务后先列出步骤,然后一步一步打勾。

规则:同一时间只能有一个任务「进行中」。

兜底:连着 3 轮没更新 Todo,系统悄悄塞一条提醒进去。

S04:子智能体 — 上下文隔离与分工

所有工作产生的中间内容都堆在同一个上下文里,越来越臃肿。

解决方案:在工具箱里增加 task 工具。父 Agent 创建子 Agent,把子任务交出去。

子 Agent 拥有全新、干净的上下文,独立工作。最终传回给父 Agent 的只是一段简短摘要,所有中间过程直接丢弃。

防套娃:子 Agent 的工具箱里没有 task 工具。

S05:技能加载 — 按需加载的知识体系

Harness 有自己的文件系统结构。所有 Skill 以文件夹形式组织,每个文件夹里有 SKILL.md 文件。

两层加载

层次时机内容
第一层启动时扫描所有 SKILL.md,把技能名称和简短描述注入系统提示,几十 token
第二层执行时智能体确定需要某个技能时,调用 load_skill,完整 SKILL.md 内容注入上下文

核心思想:启动时只给菜单,点菜时才上完整食谱。

S06:上下文压缩 — 三层机制保证无限会话

上下文窗口有限,读几十个文件、跑几十条命令,轻松突破上限。

三道防线

防线说明
第一道每轮自动把 3 轮以前的工具返回内容替换成标记
第二道token 总量超阈值时自动触发,存完整对话到磁盘,用摘要替换历史消息
第三道智能体自己觉得太乱,可主动调用压缩工具

关键:历史信息存在磁盘上,没有真正丢失。

S07:任务系统 — 任务之间有依赖关系

任务之间不是单纯线性关系,更像一张图:任务 A 完成后才能执行 B,C 和 D 完成后才能执行 E。

核心设计:每个任务创建单独的 JSON 文件管理,分配唯一 ID 和三种状态(pending、in_progress、completed)。

依赖检查:执行时检查是否有前置依赖,有依赖就标记为待做;任务完成后自动查找其他任务的 blockedBy 列表,删掉依赖 ID,解锁任务。

四个工具:task_create、task_update、task_list、task_get。

S08:后台任务 — 别傻等

执行耗时较长的任务时,智能体只能干等,什么事都不干。

核心机制三步

  1. 后台启动:background_run 把命令丢到后台线程,立即返回
  2. 结果进队列:后台命令跑完后,结果存进通知队列
  3. 每轮自动注入:调用模型前,Harness 自动检查队列,把完成的后台任务结果注入消息

S09:组建团队 — 一个人忙不过来,招人

大型任务一个人干不完,需要分工协作。

设计:默认对话的 Agent 为领导 Agent,只有领导才能创建队友。不同队友各自拥有独立线程,运行独立循环。

通信:每个 Agent 单独配置文件夹作为收件箱,每次调用模型前,将收件箱内容注入上下文,每个 Agent 都可以收发消息。

S10:团队规矩 — 不能想停就停

直接杀掉队友线程,可能正写到一半,留下烂摊子。重大操作也没有审批。

两个规矩(请求-响应 + 唯一 ID):

规矩流程
关机领导发请求(带 ID),队友收到后收尾完毕再回复同意(引用同一个 ID)
审批队友提交方案(带 ID),领导审核后回复批准或拒绝(引用同一个 ID)

S11:自治 — 别等老板分配,自己找活

让队友更有自主性:不需要领导逐个分配任务,队友自己找活干。

任务看板机制

  • 工作阶段每轮检查收件箱
  • 空闲阶段每 5 秒轮询收件箱和任务看板
  • 有新消息或可认领任务,自动领取并回到工作状态
  • 持续 60 秒无新消息无任务,自动关机

防失忆:上下文压缩可能导致队友忘记自己是谁,系统检测到上下文过短时自动重新注入身份信息。

S12:Worktree 任务隔离 — 各干各的目录

多个智能体同时干活时,会互相干扰:智能体 A 在改一个文件,智能体 B 也在改同一个文件,未提交的改动互相污染。

解决方案:给每个任务划分独立工作空间,用 git worktree。每个目录都是独立的 git 分支:

  • 各自改动在各自分支上,可以独立提交
  • 完成后通过 git merge 合回主分支
  • 出了问题可以干净地回滚整个分支

关联:每个 worktree 通过任务 ID 和任务系统绑定——任务管「做什么」,worktree 管「在哪做」。


总结

起点:30 行代码的循环。

终点:有工具、有记忆、有团队、能自治的完整系统。

核心:自始至终,循环那几行代码一行都没变过,变的全是 Harness。

这大概就是项目想说的:别去「开发」智能体,去给它造一个好用的工作环境。模型够聪明,你把环境搭好,剩下的它自己会搞定。


关键词:Harness工程, Claude Code智能体, Agent开发, 工具箱, 上下文压缩, git worktree

不要孤军奋战啦!

加入微信群一起学习交流 AI

与大神一起使用 OpenClaw、Hermes、Claude Code、Seedance 2.0、GPT-Image-2 等

微信公众号

扫码关注微信公众号
私信 "加群",将自动获取微信群二维码

探索 AI 世界,掌握智能未来