Claude Code 跑通 12 个 Harness 课程,Key 统一走 TaoToken 1. 先建立判断模型就是 Agent代码是 Harness想搞懂什么是真正的 AI Agent建议直接上手 Claude Code 的 Harness 课程。打开 TaoToken 拿一把 Key克隆learn-claude-code仓库跑 s01 脚本你会在终端里看到一个while True循环——模型决定下一步动作代码负责执行。这个循环就是 Agent 的骨架也是模型就是 Agent代码是 Harness这句话最直接的证明。接下来从 s01 跑到 s12把 Agent 循环、Tool Use、子智能体、Skill、上下文压缩、任务系统、团队协作和 Worktree 隔离逐个跑通Key 统一走 TaoToken 的兼容通道不用再为每个脚本各维护一把 API Key。1.1 为什么说模型才是 Agent支撑这个结论的案例有三个DeepMind 的 DQN 只看游戏画面和分数就学会多款 Atari 游戏OpenAI Five 自己跟自己打了四万五千年 Dota 2 然后击败世界冠军AlphaStar 在信息不完全的星际争霸里打到宗师段位。这些系统都没有人工编写策略真正做决策的始终是模型本身。到了 LLM 时代Claude、GPT 这些模型被部署成编程 Agent能读代码、写实现、调试故障决策主体依然是模型。我们能改的是模型外面那层叫 Harness 的东西。1.2 提示词水管工不是 Agent市面上大量Agent 平台做的事情本质是写一堆 if-else如果红灯就停如果绿灯就行。遇到没写过的分支就崩代码量巨大且难以维护。这种设计被称作鲁布·戈德堡机械——过度工程化、脆弱的过程式规则流水线。Claude Code 的 Harness 正好相反它没有替模型做判断只给模型准备工具、知识、上下文和权限边界。跑 s01 的时候你会看到循环里没有任何业务分支模型说用工具就执行工具模型说停就返回。1.3 心智转换从开发 Agent 到开发 Harness训练模型是 DeepMind、OpenAI 在做的事我们大多数人做的是构建 Harness。Harness 包含五部分Tools 给模型一双手Knowledge 给模型领域资料Observation 让模型看到 git diff 和报错日志Action 把决策变成 CLI 命令和 API 调用Permissions 做沙箱隔离和审批。这个五件套就是 12 节课的骨架每节课往里面加一块。理解了这一点再看learn-claude-code的目录就不会迷路。2. 对照 12 节课看 Harness 的完整工作清单learn-claude-code仓库把 Harness 工程拆成 12 节递进课程每一节只加一个机制。仓库给每节课配了一句格言这些格言后来成了跑课时的检查点跑完 s03 会刻意把 TodoWrite 的任务列表打出来看跑完 s06 会故意塞一段超长上下文观察它怎么压缩。2.1 循环基础s01 Agent 循环与 s02 Tool Uses01 讲 Agent 循环格言是One loop Bash is all you need核心就一个while True加 bash 工具。s02 讲 Tool Use加一个工具就只加一个 handler不碰其他代码。这两节课跑通后你就有了一个能自己读文件、执行命令的最小 Agent。2.2 规划与知识s03 TodoWrite 到 s06 上下文压缩s03 讲 TodoWrite没有计划的 Agent 走哪算哪。s04 子智能体解决上下文污染问题——大任务拆成小任务每个小任务有干净独立的上下文。s05 Skill 做知识按需加载用到什么知识临时加载什么不提前塞进系统提示。s06 上下文压缩最实用上下文总会满你要有办法腾地方。这个阶段的核心是给模型减负让它别被无关信息干扰。2.3 持久化s07 任务系统与 s08 后台任务s07 任务系统把大目标拆成小任务、排好序、记在磁盘上Agent 重启后目标还在。s08 后台任务把慢操作丢到后台Agent 继续想下一步。这两节课解决的是Agent 怎么记住长期目标和Agent 怎么不卡在耗时操作上。2.4 团队协作s09 到 s12 的四个机制s09 智能体团队让任务分给多个队友s10 团队协议统一队友之间的沟通格式s11 自治智能体让队友自己看看板认领任务s12 Worktree 隔离让每个 Agent 各干各的目录互不干扰。跑完 s12 再回头看 s01同一个模型从单兵作战变成了带团队的负责人这就是 Harness 的全部意义。3. 拆解 s_full.py 的核心那个 while True 的 Agent 循环整个仓库的灵魂是agent_loop函数所有课程都在这个循环上做加法。完整版s_full.py把 12 节课的机制全部打开但核心循环仍然是那五步调模型、记录输出、判断 stop_reason、执行工具、把结果放回消息继续循环。def agent_loop(messages): Agent 循环 - 模型做决策代码做执行 while True: response client.messages.create( modelMODEL, systemSYSTEM, messagesmessages, toolsTOOLS, ) messages.append({role: assistant, content: response.content}) if response.stop_reason ! tool_use: return results [] for block in response.content: if block.type tool_use: output TOOL_HANDLERS[block.name](**block.input) results.append({ type: tool_result, tool_use_id: block.id, content: output, }) messages.append({role: user, content: results})3.1 循环里没有任何业务判断这段代码核心逻辑只有五步没有 if-else 业务分支。模型说用工具就执行工具模型说停就返回文本。真正的智能在模型参数里Harness 只保证模型的每次决策都有足够的工具和上下文。你可以把这套循环直接复制到自己的项目里把TOOL_HANDLERS替换成你的函数模型会自己学会怎么用它们。3.2 12 节课在循环外面做了什么s03 往系统提示里注入 TodoWrite 任务列表s04 在循环内部起独立上下文的子循环s06 在消息超过阈值时调用压缩组件改写 messagess09 给多个循环之间加共享邮箱s12 给每个循环单独分配 worktree 目录。骨架从未改变变的只是骨架周围的 Harness 零件。跑s_full.py时你能在输出里清楚看到这些零件依次生效。4. 快速开始克隆 learn-claude-code 后把 Key 统一走 TaoToken仓库的快速开始是克隆、装依赖、配置ANTHROPIC_API_KEY。这里把 Key 这一步统一走 TaoToken 的通道12 节课全程只需要维护一把 Key中途换模型也不用改代码。4.1 克隆仓库并安装依赖git clone https://github.com/shareAI-lab/learn-claude-code cd learn-claude-code pip install -r requirements.txt4.2 在 TaoToken 创建 API Key打开 TaoToken 注册并登录进入控制台创建 API Key创建后先复制保存。模型 ID 不要自己猜以模型广场当时列表为准把要用的模型 ID 一并记下来下一步要填进.env。4.3 修改 .env把 Base URL 指向 https://taotoken.net/apicp .env.example .env编辑.envANTHROPIC_BASE_URLhttps://taotoken.net/api ANTHROPIC_API_KEYYOUR_API_KEY ANTHROPIC_MODELYOUR_MODEL_ID注意 Base URL 填https://taotoken.net/api末尾不要加/v1。learn-claude-code的脚本通过 Anthropic Python SDK 读取环境变量不需要改任何源码。提示如果.env.example里没有ANTHROPIC_BASE_URL直接追加这一行。SDK 会优先读取环境变量其次是.env文件里的值。YOUR_API_KEY换成你在 TaoToken 创建的那把 KeyYOUR_MODEL_ID换成模型广场上真实存在的模型 ID。4.4 先跑 s01 验证通道再一路跑到 s_fullpython agents/s01_agent_loop.py看到模型正常回复说明 Key 和 Base URL 都通了。接着跑完整课程python agents/s12_worktree_task_isolation.py python agents/s_full.pys_full.py会依次演示循环、工具、子智能体、Skill、压缩、任务系统和团队协作。第一次跑建议开着终端输出你能明显感觉到同一个模型在不同 Harness 机制下行为不同不加 TodoWrite 时模型想到哪做到哪加了之后它会先列计划再动手不加子智能体时模型被长上下文拖慢加了之后每个子任务都清爽。5. 跑课时报错401、404、连接超时逐个排查跑这 12 节课时遇到的报错九成出在 Key 和 Base URL 的填写方式上。5.1 401 Unauthorized这个错几乎都是 Key 无效。检查两个地方一是.env是否真的被脚本加载如果脚本只用os.environ不加载.env你需要先export ANTHROPIC_API_KEYYOUR_API_KEY再跑二是 Key 是否在 TaoToken 控制台创建成功复制时有没有带上空格或前后换行。5.2 404 model not found模型 ID 填错会直接报这个错。打开模型广场看当前可用的模型 ID填回.env的ANTHROPIC_MODEL。如果脚本里硬编码了默认模型名确认它读的是环境变量还是代码常量后者就改代码里那一行。5.3 连接重置或超时确认 Base URL 是https://taotoken.net/api而不是https://taotoken.net也不要加/v1。可以用 curl 快速验证通道是否可达curl https://taotoken.net/api能拿到可读响应就说明网络通剩下的问题多半在环境变量覆盖顺序上。6. 跑通后回控制台核对调用量再带走 Harness 工具箱12 节课全部跑通后回 TaoToken 控制台的用量页面看刚才产生的请求记录。这一步不只是确认有没有记上账更重要的是对照课程设计理解每个脚本各打了多少次模型调用s01 只有几次循环s04 会多出子智能体的额外调用s09 团队协作的调用量明显上涨。调用量本身就能侧面反映 Harness 机制的复杂度。如果接下来想继续调试模型行为可以在 TaoToken 模型对话 里用同一把 Key 发一条测试消息确认模型 ID 和 Base URL 没填错要长期写代码可以看 Coding Plan 是否够用Key 管理在 控制台 API Keys 页面Claude Code 的环境变量对照见 接入文档。最后回到开头那句话模型就是 Agent代码是 Harness。跑完这 12 节课你手里会多一套能拆能装的 Harness 工具箱既能复制 Claude Code 的设计也能把这个五件套改写到自己的项目里。模型通道统一交给 TaoToken 承载不用再为不同课程、不同脚本各维护一把 Key。