尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从Plan Mode到Harness Engineering:TaoToken视角拆解Claude代码能力为何这么强

从Plan Mode到Harness Engineering:TaoToken视角拆解Claude代码能力为何这么强 1. 为什么 Claude Code 在 Agent 场景里像换了个模型如果你最近在搭 AI 编码工作流大概率会有一种割裂感同一个 Claude 模型放在普通对话窗口里写代码和放进 Claude Code 里跑任务产出质量完全不是一个量级。前者经常给你一段看着能跑、一接真实项目就崩的代码后者能自己读文件、跑测试、改到通过为止。这个差距不是玄学核心检索词就两个Plan Mode 和 Harness Engineering。Plan Mode 解决的是「方向」问题。模型一上来就写代码最大的风险不是写错语法而是写错方向——它没搞清楚你的项目结构、依赖关系、既有约定就开始输出。Plan Mode 强制它先只读探索把任务拆成可执行的步骤生成计划文件等人确认后再动手。Harness Engineering 解决的是「稳定性」问题。它是一整套驾驭模型的工程框架工具调用循环、上下文压缩、错误恢复、终止条件、权限控制。模型再强如果没有这层缰绳多步任务跑到第三步就会因为上下文爆炸或者工具调用格式错误而崩掉。这篇文章面向正在搭建 AI 编码工作流的开发者。我会从这两个角度拆开讲清楚 Claude Code 的代码能力为什么强然后给出可以直接复制的 Plan Mode 提示词模板和 Harness 配置片段最后在 TaoToken 的统一 Key/API 通道下完整跑一次多步代码任务的验证。你不需要有 Claude Code 的官方订阅只要有一个能走 Anthropic 兼容协议的 API 通道就能跟做。先说结论Claude 的代码能力强模型训练是一部分但真正拉开差距的是工程层。Anthropic 自己在源码注释里写过一句话大意是我们不需要更聪明的模型我们需要更好的缰绳。这句话是整个 Claude Code 设计哲学的浓缩。下面我按「问题场景 → 通道准备 → 配置落地 → 验证 → 排障 → 后续」的顺序展开每一步都给可复制的片段。2. Plan Mode 的任务拆解机制与提示词模板Plan Mode 的本质是把「探索」和「执行」两个阶段在权限层面隔离开。进入 Plan Mode 后Agent 的权限降为只读它能读文件、搜索代码库、查看目录结构但不能修改任何文件、不能执行会改变系统状态的命令。这个约束看起来是限制实际上是提升质量的关键。因为模型在只读阶段被迫先建立对代码库的完整认知而不是边猜边写。我实测下来Plan Mode 对多步任务的成功率提升非常明显。一个典型的多步任务比如「给现有 API 加一个限流中间件并补测试」如果不走 Plan Mode模型经常直接开始改路由文件改到一半发现限流配置需要读环境变量、测试框架用的是项目自定义的 fixture然后开始来回打补丁。走 Plan Mode 的话它会先读路由定义、读配置文件、读现有测试的写法然后产出一份计划第一步加依赖第二步写中间件第三步挂到路由第四步补测试第五步跑测试。你确认后它再执行基本一次过。Plan Mode 的提示词模板可以直接复制。核心是让模型先输出结构化的探索结论和计划而不是直接动手你正在一个真实代码库中工作。请先进入只读探索模式不要修改任何文件。 任务{在这里写你的需求例如为 /api/users 接口增加基于内存的限流中间件并补充单元测试} 请按以下结构输出 1. 代码库现状列出与任务相关的文件路径说明每个文件的职责。 2. 依赖情况项目使用的框架、测试库、配置加载方式。 3. 风险点这次改动可能影响到的其他模块。 4. 执行计划拆成 3-6 个可独立验证的步骤每步说明改哪个文件、做什么、怎么验证。 5. 需要我确认的问题如果有信息缺失列出来。 输出计划后停下等我确认再进入执行模式。这个模板的关键在于第 4 步「可独立验证」。很多计划写得漂亮但没法验证执行到一半你不知道对不对。要求每步都能独立验证模型就会把任务拆得更细比如「加中间件」会拆成「写中间件文件 → 写一个最小测试验证中间件单独可用 → 挂到路由 → 跑集成测试」。在 Claude Code 里Plan Mode 可以通过快捷键切换也可以让模型自主判断任务复杂度后进入。如果你是通过 API 自己搭 Agent就需要在系统提示里显式约束只读阶段并在工具层做权限拦截——只放行 Read、Grep、Glob 这类只读工具把 Write、Edit、Bash 的写操作挡在计划确认之前。这个权限分层是 Harness 的一部分下一节展开。有一点要注意Plan Mode 不是越复杂越好。对于「改个变量名」这种单步任务走 Plan Mode 反而浪费一轮往返。判断标准是任务是否涉及多个文件、是否有不确定的依赖关系、是否需要跑测试验证。满足任意两条就值得走 Plan Mode。3. Harness Engineering 的可复制配置片段Harness Engineering 这个词听起来抽象落到配置上其实很具体。它由几层组成项目级记忆文件、任务级指令文件、确定性钩子、工具权限、以及 Agent 循环本身的参数。我按能直接复制的顺序给出来。第一层是项目级记忆文件 CLAUDE.md放在项目根目录。它告诉 Agent 这个项目的架构决策和编码规范避免每次都要重新解释# 项目约定 ## 技术栈 - 运行时Node.js 20包管理用 pnpm - 框架Fastify - 测试Vitest测试文件放在 __tests__ 目录命名 *.test.ts ## 编码规范 - 所有异步函数必须处理错误边界不允许裸 await 不接 catch - 禁止在业务代码里直接读 process.env统一走 src/config.ts - 新增依赖前先在计划里说明理由 ## 禁止模式 - 不要修改 migrations 目录下的历史文件 - 不要用 any 类型绕过类型检查第二层是任务级指令文件 SKILL.md针对特定任务类型给出更细的约束比如写测试时用哪种断言风格、代码审查时重点查哪些安全项。它和 CLAUDE.md 的区别是前者是项目长期约定后者是任务类型约定。第三层是确定性钩子 Hooks这是 Harness 里最容易被忽略但收益很高的一环。钩子是在特定事件触发时自动执行的命令比如写入文件后自动格式化、提交前自动 lint。它把「模型可能忘记做的事」变成「系统一定会做的事」。配置片段如下{ hooks: { PostToolUse: [ { matcher: Write|Edit, hooks: [ { type: command, command: pnpm exec prettier --write \$CLAUDE_FILE_PATH\ } ] } ], PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: echo \即将执行: $CLAUDE_TOOL_INPUT\ .claude/audit.log } ] } ] } }第四层是工具权限配置也就是 settings 文件。它决定 Agent 能用哪些工具、哪些操作需要人工确认。这是 Plan Mode 权限降级能生效的底层机制{ permissions: { allow: [ Read, Grep, Glob ], ask: [ Bash(pnpm test:*), Bash(pnpm lint:*) ], deny: [ Bash(rm -rf:*), Bash(git push:*) ] } }这份配置的含义是读文件、搜索代码库直接放行跑测试和 lint 需要确认删除和推送这类危险操作直接拒绝。你可以根据团队情况调整。注意 allow 里只放了只读工具这就是 Plan Mode 的权限基础——计划阶段模型只能用这三个工具想写文件也写不了。第五层是 Agent 循环参数包括最大轮次、token 预算、连续失败熔断阈值。这些参数决定了多步任务能跑多远、跑崩了怎么恢复。不同实现方式参数名不一样但核心就三个最大迭代次数、上下文压缩触发阈值、连续失败上限。设置连续失败上限很重要我踩过的坑就是没设熔断一个任务因为环境问题连续失败几十次白白烧掉大量 token。把这五层配好你的 Agent 就从「能跑」变成「跑得稳」。下面进入通道准备和实际验证。4. 在 TaoToken 统一通道下完成一次多步代码任务验证这一节是实操。目标是在 TaoToken 的统一 Key/API 通道下用 Anthropic 兼容协议跑一次完整的多步代码任务验证 Plan Mode 加 Harness 配置的效果。TaoToken 在这里的作用是提供一个统一的 API 入口你不需要分别管理多个厂商的 KeyBase URL 和 Key 配一次模型 ID 按需切换。先准备通道。访问官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解接入方式然后在控制台创建 API Keyhttps://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。Key 创建后复制保存后面配置要用。API 基础地址是 https://taotoken.net/api 注意这个地址不带 UTM 参数直接填。如果你用的是 Claude Code 这类客户端配置三件套是 Base URL、API Key、Model ID。Base URL 填 https://taotoken.net/api API Key 填刚创建的 KeyModel ID 填你要用的 Claude 模型标识。这三件套缺一不可尤其是 Model ID填错了会直接报模型不存在。如果你用的是 Cline 或者带 MCP 的编辑器插件配置方式类似在设置里找到 Anthropic 兼容的 Provider填入同样的三件套。Codex 用户如果走 auth.json结构大致如下{ provider: anthropic-compatible, baseUrl: https://taotoken.net/api, apiKey: 你的 TaoToken Key, model: 你的 Model ID }配置完成后先做一次最小验证确认通道是通的。用 curl 发一个最简单的请求curl https://taotoken.net/api/v1/messages \ -H Content-Type: application/json \ -H x-api-key: 你的 TaoToken Key \ -H anthropic-version: 2023-06-01 \ -d { model: 你的 Model ID, max_tokens: 128, messages: [ {role: user, content: 回复两个字通了} ] }如果返回里有正常的文本内容说明通道没问题。如果报 401检查 Key 是否复制完整如果报模型不存在检查 Model ID。通道通了之后跑多步任务。我准备了一个最小可复现的场景一个 Fastify 项目需要给现有接口加一个请求日志中间件并补一个测试。按第 2 节的 Plan Mode 模板发起任务模型会先输出探索结论和计划。确认计划后进入执行它会依次写中间件文件、挂到路由、写测试、跑测试。整个过程你能看到它调用了哪些工具、改了哪些文件。验证成功的标志有三个第一测试命令返回通过第二中间件文件确实被创建且内容符合项目规范第三路由文件被正确修改且没有破坏原有逻辑。如果这三条都满足说明 Plan Mode 加 Harness 配置在你的环境里跑通了。这一步跑通后你可以把同样的流程套到更复杂的任务上比如重构一个模块、修一个跨文件的 bug。任务越复杂Plan Mode 和 Harness 的收益越明显。5. 常见报错排查401、local proxy failed 与 reading choices多步任务跑不起来八成是配置或环境问题。我把实际遇到过的几类报错和排查路径列出来对照着查能省不少时间。第一类是 401 未授权。报错信息通常是401 Unauthorized或者invalid api key。原因基本是三个Key 复制时带了空格或换行、Key 已经失效、请求头字段名写错。Anthropic 协议用的是x-api-key头不是Authorization: Bearer这两个混用会直接 401。排查方法是用第 4 节的 curl 命令单独测一次把 Key 换成明文确认。如果 curl 通了但客户端不通那就是客户端配置里的 Key 字段填错了位置。第二类是 local proxy failed。这个报错通常出现在客户端配置了本地代理但代理没起来或者 Base URL 填成了本地地址。排查顺序先确认 Base URL 是不是 https://taotoken.net/api 再确认本地没有多余的代理配置覆盖了它。有些客户端会读环境变量里的代理设置如果你之前配过记得清掉。这个报错和网络环境无关纯粹是配置指向问题。第三类是 reading choices 相关报错比如cannot read property choices of undefined。这类报错一般出现在用 OpenAI 协议格式去请求 Anthropic 兼容接口的时候。Anthropic 的响应结构是content数组OpenAI 是choices数组两者不兼容。如果你用的客户端默认走 OpenAI 格式需要在 Provider 设置里显式切换到 Anthropic 兼容模式。切换后请求体和响应体的字段名都会对上报错消失。第四类是 OAuth 相关报错。如果你用的是需要 OAuth 登录的客户端报错可能是OAuth token expired或者failed to refresh token。这类问题不在 API Key 通道的范围内处理方式是重新走一遍客户端的登录流程或者改用 API Key 方式接入。用 TaoToken 的 Key 通道可以绕开 OAuth 的刷新问题配置更简单。第五类是任务跑到一半中断报上下文超限。这不是配置错误是 Harness 的上下文压缩没配好。检查你的最大 token 预算和压缩触发阈值把压缩阈值调低一点让它在上下文快满之前就开始压缩。如果用的是 Claude Code这部分是内置的一般不用手动调如果是自己搭的 Agent就需要在循环里加压缩逻辑。排查的核心思路是分层先确认通道通不通curl 测再确认客户端配置对不对三件套最后确认任务参数合不合理预算和熔断。大部分问题在前两层就能定位。6. 把 Plan Mode 和 Harness 变成你的默认工作流跑通一次验证只是开始真正有价值的是把 Plan Mode 和 Harness 变成默认工作流。我的做法是所有涉及两个以上文件的任务一律先走 Plan Mode所有项目都放一份 CLAUDE.md把团队约定写进去所有写操作都配 Hooks 做自动格式化和审计日志。这三件事做完Agent 的产出稳定性会有肉眼可见的提升。如果你还在选通道TaoToken 的统一 Key 方式省去了多厂商管理的麻烦Base URL 和 Key 配一次就能切换模型。需要长期跑编码任务或者搭 Agent 的可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。想先验证模型对话效果的用模型对话入口https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite API Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。最后一个实用技巧Plan Mode 产出的计划文件别删留在仓库里当任务记录。下次遇到类似任务可以直接把旧计划喂给模型当参考它会更快理解你的项目结构。这个习惯坚持一段时间你的 Agent 会越来越懂你的代码库。
返回列表