真诚友善团结专业,共建你我引以为荣之社区。《社区准则》
View as nested
1 / 32
4月 12 日

由 Soei 于 1 天前 发布

据网上传,目前Anthropic的所有产品均为harness模式,不过最近他们推了一个harness产品,原本把我吓了一跳,但实质一看,并不是干货,多少有点恶心人了,好东西都藏起来。我昨晚也成功验证了自己的第二个harness,工程量比是一开始做demo的100倍,平均跑完要30-50M token,10个小时左右(glm-5),并且效果还挺好。不过还是有很多优化点的,这也正是本贴的由来,在接下来这段时间,我将对第二个harness工程进行总结以及优化,形成harness固定体系。可能会涉及harness的以下层面,如共识记忆、规划层、执行层、评估层、调度器、外部资源、状态等等,我均会在此贴中不断累计。


【0.1.1】理论篇

理论先行:请各位佬们先阅读以下harness理论文章,我觉得很好,我也是阅读这几篇,没有藏其它的。
Anthropic harness 工程实践:harness设计长时间运行的应用程序开发(2026.03.24):

OpenAI harness工程实践:工程技术:在智能体优先的世界中利用 Codex(2026.02.11):
https://openai.com/zh-Hans-CN/index/harness-engineering/

构建长时间高效运行的智能体(2025.11.26):


【0.1.2】理论篇

我的harness将全是基于claude code的,因为claude code是个很好的执行层,而我正好懒得写。像openAI是基于openAI SDK写的(最后还是改成了codex开始自举,这也是我参考因素之一),Anthropic是基于anthropic SDK写的,而我觉得claude code本身具备那些SDK所有的功能,我也不追求原生态。在这里也是想告诉各位佬,此时,卿面临第一道选择题,
1.claude code类的编程智能体,以插件或skill的形式编写harness工程【本人选择】
2.以openAI/anthropic等等SDK、langgraph、springAI、agentScope等纯原生形式编写harness【大厂选择】
选1的,需要熟读以下文档,选2的需要佬们各自找对应文档,该贴后续两条路线均可实施


【0.2.1】记忆篇(后面配合案例细讲)

我是软件行业出身,做工程先做表关系,开始第一个实践,共识记忆,以下是我个人设计的一个web应用harness的共识记忆目录,大家需要先做好这层构想,后续就需要开始走流程设计了:
.web-builder/
├── feature_list.json # 功能注册表 — 唯一可信来源
├── spec.md # 产品规格
├── design_tokens.json # 视觉标识(调色板、字体、反模式)
├── sprint_plan.json # 冲刺分解
├── progress.md # 持续构建日志
└── sprint_N_*.md # 各冲刺的合约、交接、QA 报告


【0.2.2】架构篇(后面配合案例细讲)

了解harness的佬们肯定都知道有三层架构,规划(planner)、生成(generator)、评估(Evaluator),在这之外还有一层协同调度(Orchestration),协同调度是启动harness的开关。在claude code中,可以使用command作为协同调度,以明确的命令启动harness,有助于使用者清醒此时为harness运行时,而其它三层架构使用subagent的由command引用,注意这里绝对不能使用background模式,claude code的bg有毒,会有跳步风险。另外这三层架构分类需要做哪一个领域的就是佬们自己想要的了,以下给的示例,是web应用领域的。


【0.3.1】长时间运行机制篇(后面配合案例细讲)

佬们有了理论,数据库,架构都搭建好了吧,好的,我们可以开始了,没想到吧佬们,是不是前面就已经够头痛的了,居然现在才是开始。这一步,是架构设计后的增补,却也是至关重要的一步,希望佬们不要卡住。我们需要充分利用claude code的agent、skill、hook机制,使流程保持在一个正向迭代循环中运行。比如:
planner:

  • 1.收集需求
  • 2.扩展验证
  • 3.评估合理性
  • 4.不合理
  • 5.撤销
  • 2.回到扩展验证
  • 4.合理
  • 6.开始分配sprint
  • 7.sprint分配不合理
  • 6.回到开始分配sprint
  • 7.合理
  • 8.planner完成

这里也是harness的关键,相信佬们看到过关于harness的文章,harness工程就是引导AI代替自己完成,而自己只需要优化harness即可,优化,指的就是这里。


【0.3.2】流程调度(这块太复杂,我不一定讲得好,佬们仅做参考)

以上我们就是完成了三层架构的内容了,不过我们还需要把三层架构给串起来,才是一个完整的harness工程,也就是网上一直传的很火的Orchestration,但是我这认为这里不能直译,仅作为harness的一个抽象概念。往细了讲我也有点不知所谓,大家就先保留一个这个概念吧。直接讲实现。
前面提到,我是使用claude code command + subagent完成调度的,这里为了照顾不使用claude code佬们,我提下两个点。

  • command可以直接启动subagent,不断开与subagent的连接并保持subagent的独立上下文
  • subagent任务进行中,command进程阻塞,subagent任务完成时,command恢复运行
    我如何去保持自动迭代并完成任务的呢,这里就不丢原码了,我直接说流程:

1.启动command
2.由command带动环境初始化,如初始化目录,claude.md、setting.json、.git等基础文件
3.启动planner解构并放大(业务需要)用户需求,并分解为多个sprint(我原文写了6-8个),形成上述记忆文件
4.进入rahlp loop,启动generator,读取各类记忆文件并生成代码、playwright代码等
5.generator完成后启动evaluator,执行playwright,总结bug list,并评分,评分达到阈值则继续下一个loop,如未达到则启动generator修复,再往复
6.one more time直至结束。

command

你正在启动 web-builder 工作框架,构建目标:$ARGUMENTS 本工作框架按顺序运行三个智能体: 1. **策划者**(Planner)—— 将描述扩展为完整产品规格 2. **生成者**(Generator)—— 按冲刺逐步实现功能 3. **评估者**(Evaluator)—— 通过 Playwright 对每个冲刺进行 QA 审查 ## 你的首要任务 将以下提示委派给 `web-builder-planner` 子智能体: " 构建此应用:$ARGUMENTS 在开始前先读取 web-builder 技能中的完整指令。 创建所有必要的 .web-builder/ 文件,完成后输出「策划者完成」。 " 策划者完成后,读取 `.web-builder/sprint_plan.json` 查看冲刺总数, 然后将冲刺 1 委派给 `web-builder-generator` 开始实现。 工作框架仅在 `.web-builder/feature_list.json` 中所有功能的 `"passes"` 字段均为 `true` 时才视为完成。

省略中间git / pr等步骤,其实我觉得也可以不做这一步,本来就是AI一个人写代码,搞这些还浪费token。不过Anthropic和OpenAI都强调工作区干净概念,才会对有的git \ pr这些,各位佬也可自行决策,此处非harness核心概念

然后这里也是harness优化的关键


【0.3.3】状态设计

{这里是占位符,太复杂了,一时不知道该怎么写,先跳过}


【0.4.1】能力设计

这一块就是写提示词,相信佬们已经很熟悉了,结合上面的理论,这里给个参考,没啥好讲的。
注意:请不要直接使用,中文提示词用在模型上很费token,我这是为了方便理解翻译过来的。

planner Agent

你是 web-builder 工作框架中的**策划者**智能体。 你的唯一职责:在任何代码编写之前,读取 `web-builder` 技能, 然后创建完整的 `.web-builder/` 项目基础文件。 ## 必须生成的文件 ## 完成标准

generator Agent

你是 web-builder 工作框架中的**生成者**智能体。 你的职责:实现当前冲刺的功能,然后交接给评估者进行 QA。 ## 每次会话必须按顺序执行的定向步骤 ## 冲刺工作流 ## 实现规则 ## 交接信号

evaluator Agent

你是 web-builder 工作框架中的**评估者**智能体。 你的职责:严格测试生成者的工作成果并诚实评分。 你**发现问题**,而不是赞美工作。 ## 评估者心态(至关重要) ## 合约审查(每个冲刺前) 批准(添加时间戳)或写 xx 要求修改。最多 x 轮修改。 ## QA 流程(每次交接后) ## 评分维度 **通过阈值:75/100** ## 输出格式

【0.4.2】skill引入

skill是Anthropic公司设计的,大家都很了解了,简单提下,其主旨为为上下文减负,运行时只加载每个skill的前250个字符,所以大家在写description时,最好一句话描述该skill的能力即可,更多的放在script里面,然后在agent引用

by the way,不要安装太多无意义的skill在本地,无形中已吃掉了你大多数的token,比如agency-agent、superpower、everything-claude-code等大型框架


【0.4.3】mcp引入

mcp是Anthropic公司设计的,大家都很了解了,简单提下,基主旨为AI链接真实世界,但这里面是harness,我个人的理解应该是用harness的产物才链接真实世界。不过呢,现实大于理想,在harness设计中,为了补齐AI短板,我们还是需要通过MCP增强能力,推荐以下几点:

  • figma MCP,增加页面设计能力
  • playwright MCP 增加端到端验证能力,也就是保证产出无Bug(本人目前写的静态playwright代码测试的,mcp不成功,我也懒得去追查)

【1.0.0】工程实操

主体内容已经讲完,这里给几个主题,等待佬来交作业

  • AI知识库,该知识库不允许利用RAG,同时提供chat能力、web搜索能力,对已上传文档进行二次创作,比如PPT、word、excel、图片、视频 等
  • AI音频,该harness同样需要chat能力、web搜索能力,能够产出乐谱、音频文件
  • AI空间,该harness为空间类型,同样需要chat能力,能够生成空间文件
  • AI排版,该harness内容较为简单,但量大,排版要求高,与知识库差距胜在排版
  • 这只是举例,怕佬们像无头苍蝇,大家也可自由发挥

由 mantian 于 1 天前 发布

佬,如何评估harness的对话效果呢,是否符合预期

由 Soei 于 1 天前 发布

1.你觉得实现的效果,有没有超出/平均/低于你的需求描述范围
2.你体验是否存在很弱智的bug,业务bug要算在你身上,需求描述得让大模型理解错了。
3.你给的skill/tool/script是不是你的harness流程缺的

就这几点原因

由 shstones 于 1 天前 发布

谢谢佬友的讲解和分享!收藏学习,期待长期更新。

由 boyoi 于 1 天前 发布

收藏一下,刚好准备做一个类似的工具,学习一下

由 zhizq 于 1 天前 发布

谢谢佬友分享学习 有机会学习一下 研究一下

由 lyz231566 于 1 天前 发布

怎么部署,跟openclaw一样吗?有教程吗?

由 W.W 于 1 天前 发布

寫得很好,對於小白的我,佬友能總結一下結論嗎?奈於自己踏入編程也大概知道harness馬繮繩理念,還是不太明白,還請大佬多費心些,好人一生平安~感謝分析 :saluting_face:

由 bill32026 于 1 天前 发布

佬的agent用甚么架构?
是直接在Claude Code/Codex 里面开始,还是另外配一个Coding Agent 来调用CLI?

你觉得有没有必要分层Agent? 有没有验证过这方面利敝取舍?

由 Soei 于 1 天前 发布

佬,你这个问题问得太早了,这时回答感觉会跳题,另外我也觉得佬对harness工程还不太了解,建议先等等帖子更新。

由 Soei 于 1 天前 发布

由 Soei 于 1 天前 发布

harness是一种理论,中文名叫驾驭工程。直白地说,你要如何如何给大模型指路,去代替你实现你的目标。
比如你现在要写一个ppt,但是呢,你需要搜索、调研、汇总、编写、润色,完成。那你就写一个command,6个subagent,去完成。
就这个意思。

由 W.W 于 1 天前 发布

這個我知道,簡單易俗的就是不脫離原本核心為初衷,就像韁繩一樣控制angets不偏離主題,haha我就只能理解成這樣

由 ViiTetrix 于 1 天前 发布

先收藏学习一下 希望能长期更新 多谢佬的分享

由 goodstudy 于 1 天前 发布

由 Soei 于 1 天前 发布

是引导agent去代替你完成你的目标,而不只是控制,这点需要注意,有本质的区别

由 W.W 于 1 天前 发布

由 moyan7864 于 1 天前 发布

由 zzqq9921 于 1 天前 发布

好厉害啊,学习一下大佬的思路,哈哈,这不就来了吗

由 zerosir 于 1 天前 发布

佬您好,请问有没有什么基准测试类的呢?纯靠人工的话一方面是需要精力,一方面是人工可能判断不稳定。

由 Soei 于 1 天前 发布

playwright,我是用的playwright 编码来解决这个问题的,不过其它人好像是用的playwright mcp,不过我mcp没成功过

由 yarxl 于 1 天前 发布

mark一下,刚好在学习相关的知识,有时间再好好看

由 zquanz 于 19 小时前 发布

由 charvar 于 1 小时前 发布

[quote=“coldingcode, post:1, topic:1951277, username:Soei”]
$ARGUMENTS
[/quote]佬 我用skill编排subagent 现在command底层也是subagent了吧

由 Soei 于 23 分钟前 发布

由 ukhack 于 14 分钟前 发布

我看佬是没有区分模型的,也就是说规划、执行和评估都是同一个模型。
在我实际使用GLM-5的过程中,尤其是前端问题是一直有bug的,一个任务完成后我要人工检查并指出问题反复要他修四五次才行,opus和codex可以一次全部生成完整个项目且不借助任何额外skill并且没有bug。
我认为这不是规划或评估的问题,而是模型本身的幻觉在那。这是harness做不到的

由 Soei 于 13 分钟前 发布

由 ukhack 于 12 分钟前 发布

也不能说没有skill,我跟opus说使用uniapp开发xx项目,需求是xxx(gemini产出的详细开发功能点)。
opus知道调用默认的context7,可以写出没有任何语法问题的代码。但是glm-5它自负(或者没意识到)的不调用,乱写以及使用不存在的properties

由 Soei 于 10 分钟前 发布

由 ukhack 于 4 分钟前 发布

由 BaaBaaY 于 4 分钟前 发布

由 JoJoJotarou 于 2 分钟前 发布

其实我的理解,模型是能力的提升,token上的节约(例如真实coding可能5.4-mini就够了),问题关键就是要让AI只能怎么才能成功,test,真实的e2e(我认为这个很重要特别是web等),你给个题目,AI解了可能不对,但是有了成功标准,就会引发修正,实现loop,这种感觉就和现实一样要有验收标准