乐于分享
好东西不私藏

AI工具再强,不会用Harness也是白搭

AI工具再强,不会用Harness也是白搭

为什么你的 Claude Code 总是在”单轮对话”里打转?为什么花了大钱订阅的 AI 工具,用起来却像个高级搜索引擎?

答案很简单:你缺的不是模型,是 harness。


一个问题搞清楚一切

先问自己:Claude Code 和 ChatGPT,到底有什么区别?

表面看,都能聊天,都能写代码。但 Claude Code 关掉窗口后,下次打开还记得上次在哪、改了什么文件、做到哪一步了吗?

记得。 这就是本质差别。

Claude Code 不只是一个 LLM,它有一个”外壳”在持续运行,这个外壳负责记住状态、调用工具、控制节奏——这个外壳,就是 harness。


模型不是 agent

这是理解一切的前提:

  • LLM = 会推理和生成的大脑,只能”回答一轮”
  • Agent = LLM + 工具 + 状态,能力超出”回答”
  • Harness = 让 LLM 持续工作的运行时外壳

没有 harness,LLM 再强,也只是一个能聊天的工具。有了 harness,它才开始”真正工作”。

用一个公式记住:

Harness = Brain(模型)+ Hands(工具)+ Memory(状态)+ Loop(循环)+ Judge(验证)


看一个真实案例

你跟 Claude Code 说:”帮我把用户模块重构一下。”

没有 harness 的情况: Claude Code 读了几百行代码,开始重构,做到一半上下文满了,模型开始”失忆”,后面改的代码和前面风格不一致,甚至引入新的 bug。

有 harness 的情况: Claude Code 读代码,把重构计划写进 .planning/ 文件,一个阶段一个阶段推进,中间任何一步崩溃了,新会话读取 .planning/,从断点继续,最后用 8 维验证门检查交付质量。

区别在哪里? 不是模型变聪明了,是 harness 把”持续工作”这件事管起来了。


一个最小 harness 长什么样

真正跑起来的 harness,核心只有 7 个模块:

接收目标 → 组装上下文 → 模型决策 → 工具执行 → 状态更新 → 验证 → 循环或停止

最简化到代码层面,就 6 行:

whilenot done:    context = build_context(goal, state)    decision = model(context)if decision.needs_tool:        result = run_tool(decision.tool)        state = update(state, result)else:        state = update(state, decision.text)    done = should_stop(state)

两个分叉决定一切:模型输出普通文本还是模型请求调用工具。所有 agent 的逻辑,都在这两个分叉里绕。


为什么很多人用不好 AI 编程工具

不是工具不够强,是 harness 意识太弱。

多数人把 AI 当”搜索引擎++”,问一句答一句,用完就关。这种用法,模型能力利用率不超过 20%。

真正用好 Claude Code 的人,都在用 harness 的思路在做事:

  • 把任务拆成阶段,不是一次性丢给 AI
  • 让 AI 把中间结论写进文件,不全存在脑子里
  • 给 AI 设定”什么时候停”,不让它无限制地跑
  • 让 AI 自己验证自己的输出,而不是靠人眼检查

这些都是 harness 的思维方式。


一个原则判断你缺不缺 harness

如果关掉当前对话,任务能从断点继续吗?

能继续,说明你有 harness 意识。不能继续,说明你的”AI 工作流”其实全靠上下文撑着,一旦上下文崩溃,进度全丢。

这个判断标准,适用于一切 AI 编程工具。


下一步

搞清楚了 harness 是什么,下一篇文章我们拆解它最核心的五个组成部分——Brain、Hands、Memory、Loop、Judge。这五个词搞懂,你就有了评价任何 AI 编程工具的底层框架。

核心结论:

  • 模型不是 agent,harness 才是让模型持续工作的外壳
  • Harness = Brain + Hands + Memory + Loop + Judge
  • 能从断点继续的工作流,才是真正的 harness 工作流