模型选得再贵,不如这副“马具“调得好——实测 Harness 带来的 10 倍差距
模型越贵越好我一开始也是这么想。最早折腾大模型编程那阵子我换着花样把 GPT-4、Claude Opus、Gemini Pro 轮番塞进同一个脚本里跑结果发现换个模型顶多快个 20%但同一个模型换套外壳效率能差出 10 倍。这个反差是从我正在做的 App 雷达鸭上发现的——那是个收录中国一人公司真实赚钱案例的鸿蒙应用技术栈是 Uni-app 加 arkTS 插件加 UniCloud。当时我死活调不通一条稳定的代码审查流水线反复横跳在各种模型之间直到翻到黄佳那本《Claude Code 实战Harness 工程之道》才意识到自己一直在错的地方使劲。书里把这件事说得特别直白Harness 比模型更重要。同一模型在不同 Harness 下的表现差异远大于不同模型在同一 Harness 下的差异。模型是马Harness 是马具同一匹马换副马具跑出来的成绩天差地别。我以前只盯着马看根本没想过马具才是那个真正决定成绩的变量。这个比喻之后作者摆出一张冰山模型。水面之上是claude -p ...这样的命令行交互大概只占 10% 的能力水面之下压着 8 大机制占了 90%。我盯着水面那 10% 折腾了大半年难怪一直在原地打转。你看到的命令行越简单水面下藏的东西往往越深——这条规律放在很多基础设施上其实都成立。Harness 的心脏是 Agentic Loop一个循环走六步读取输入 → 加载记忆 → LLM 推理 → 工具调用 → 结果回写 → 循环。所有上层机制都长在这个 Loop 的某个环节上——记忆系统挂在加载记忆Skills 挂在LLM 推理决策注入领域知识子智能体是 Loop 内部派生出的子 Loop 做上下文隔离Hooks 挂在工具执行前后做拦截和审计MCP 扩展的是工具池Headless 和 SDK 则是 Loop 的程序化驱动方式。理解了 Loop 这张图再去看那堆名词就不会觉得散。Loop 之上是四层架构从下往上垒。第一层是记忆层靠 CLAUDE.md 体系让模型不再失忆是所有上层机制的基石。第二层是扩展层塞进去 Skills、子智能体、Hooks、MCP 四大组件遵循单一职责、叠加协作而非互斥单选。第三层是集成层Headless 模式接 CI/CD 流水线让 Agent 能无人值守跑在 Unix 管道里。第四层是编程层用 Agent SDK 把 Harness 当组件编程式构建自己的智能体。四层不是平行关系是地基往上叠——抽掉记忆层上面三层全是空中楼阁。四层架构背后有根暗线叫控制粒度演进。从左到右排开CLAUDE.md → Skills → 子智能体 → Hooks → MCP → Headless → Agent SDK → Plugins → 组织策略。最左是自然语言提示模型愿不愿意听全看心情最右是代码级强制模型绕不过去。越往右越硬越往右越可审计。我个人特别讨厌那种纯靠 prompt 祈求模型别干坏事的方案写起来爽跑起来全靠运气。书里这条演进路径正好把硬约束从软到硬铺开逻辑顺得很——能上 Hook 就别用提示词能上 SDK 就别留交互缺口。放个 MVP 示例对照一下四层怎么落地。最底层先把项目记忆固化下来# 项目记忆 ## 技术栈 - 语言TypeScript 5.x严格模式 - 框架Fastify Prisma - 测试Vitest所有公共函数必须有单元测试 - 包管理pnpm不要使用 npm 或 yarn ## 提交信息格式type(scope): description这一层最便宜效果却立竿见影——模型从第一次对话就知道你这个项目的脾气不用每次重新解释一遍技术栈和提交规范。很多人嫌 CLAUDE.md 占上下文殊不知这点 token 换来的是无数次重复说明。第二层扩展层写一个 Skill 把领域知识按需注入---name:code-reviewingdescription:Review code for best practices and potential issues. Use when the user asks for code review or mentions reviewing changes.allowed-tools:-Read-Grep-Glob---# Code Review Guidelines你是一个专业的代码审查员...allowed-tools这块要盯死权限收到最小。我一开始写得很蠢所有 Skill 都给全套工具结果模型动不动就跑偏去改文件回头还理直气壮说我觉得这里也该顺手优化。收成只读三件套之后世界清净了。这就是控制粒度从左往右挪一档的真实手感。第三层集成层把 Claude 塞进 CI/CD 跑无人值守# 在 CI/CD 流水线中调用 Claudeclaude-p审查最近一次提交的代码变更关注安全隐患和性能问题\--output-format json\--max-turns10\--allowed-tools Read,Grep,Glob--max-turns是预算开关--allowed-tools是最小权限。这两行参数就是 Headless 模式能跑在生产流水线上的底气——别小看它们少了任何一个半夜被叫起来救火是常事。冰山水面之上那 10% 长这样看着朴素得很。第四层编程层直接用 Python SDK 编程式驱动importclaude_code# 用 SDK 构建一个代码健康度检查 Agentresultclaude_code.query(prompt分析 src/ 目录下所有 Python 文件的代码质量给出健康度评分,allowed_tools[Read,Grep,Glob],max_turns15)print(result)四层叠起来才是一个完整的 Harness。单拎任何一层出来都只是 Loop 上的一个挂点从第一层到第四层控制粒度从自然语言一路走硬到代码级强制这条线才是 Harness 工程真正的骨架。回到开头那个问题。模型选得再贵本质上还是同一匹马马具调得好才能让马真正跑起来。下次你看到一个 Agent 跑得磕磕绊绊先别急着换模型也先别急着加 token——问问自己这副马具你真的调过吗还是只换了匹更贵的马继续空跑Claude CodeHarness工程Agentic LoopAI Agent模型工程10 年软件开发经验软件设计师人工智能应用工程师专注鸿蒙 ArkTS 北向开发与 Web 前端业余折腾 AI 自动化不定期在 CSDN 分享踩坑笔记。本文遵循 MIT 协议转载请注明出处。