AI工具再强,不会用Harness也是白搭
答案很简单:你缺的不是模型,是 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 工作流
夜雨聆风