五分钟跑通最小 Coding Agent:learn-claude-code 的 17 节 Agent Harness 课程完全指南
【免费下载链接】learn-claude-codeBash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1项目地址: https://gitcode.com/GitHub_Trending/an/learn-claude-code
learn-claude-code 是一套 17 节渐进式开源课程,教你从零拼出一个能跑的 agent harness,也就是把模型包成一个 coding agent 的那层外围框架。读完可以按顺序跑通仓库里 s01 到 s17 的脚本,并看懂这类智能体的内部结构。
🚀 它解决什么问题
先想个场景。你写了个调模型的 while 循环,但它只会 bash。怎么让它读文件、跑测试、记住上次干了什么?每接一个新能力就往上堆 if-else,循环很快会变得没法读,主循环也被改得面目全非。
learn-claude-code 的思路很直接:智能交给模型,其余一切交给外围框架,也就是agent harness。工具、知识、上下文、权限都由 harness 铺好,模型只负责决定调不调工具、什么时候停,代码则执行模型的请求并把结果喂回去。
换句话说,你不用写决策树,只要给模型一双手、一张工作台,智能自己会在里面表达。具体讲,harness 递了五样东西:摸文件和命令的工具、查领域资料的知识的、看当前状态的上下文、真正动手的动作接口,以及不出格的权限边界。
⏱️ 五分钟跑起来
先克隆仓库装依赖,就三个包(anthropic、python-dotenv、pyyaml):
git clone https://gitcode.com/GitHub_Trending/an/learn-claude-code cd learn-claude-code pip install -r requirements.txt再把仓库里的.env.example模板复制成.env,填好这几个字段:
| 字段 | 必填 | 说明 |
|---|---|---|
ANTHROPIC_API_KEY | 是 | Anthropic 或兼容提供方的 API Key |
MODEL_ID | 是 | 模型 ID,默认示例claude-sonnet-4-6 |
ANTHROPIC_BASE_URL | 否 | 指向兼容端点,可换 GLM、Kimi、DeepSeek |
然后运行python s01_agent_loop/code.py。输入一个问题回车,你会看到终端打印带$的命令、执行它、回显输出,几轮之后它自己停下并给出一句文字答复。这就是一个最小可运行的 Agent。
📚 17 节课到底在教什么
别逐节罗列,把 17 节看成五层递进的能力,每层往同一个循环上加几个 harness 机制就好:
| 层次 | 包含的节 | 一句话说明 |
|---|---|---|
| 让 Agent 动手 | s01–s04 | 从单循环 + bash 到工具分派、权限边界与钩子扩展点 |
| 让它想清楚 | s05–s07 | 先计划再执行、子任务隔离子 Agent、按需加载知识 |
| 让它记得住、能恢复 | s08–s09 | 上下文四级压缩,加选择 / 提取 / 整理的记忆子系统 |
| 让它长跑、能协作 | s10–s13 | 任务图落盘、慢操作丢后台、定时触发、多 Agent 协作 |
| 让它扩展与收尾 | s14–s17 | MCP 接外部能力、收进一个 harness、编排工作流、目标闭环 |
贯穿始终的是那个循环,s01 里第一次出现:
def agent_loop(messages): while True: response = client.messages.create( model=MODEL, system=SYSTEM, messages=messages, tools=TOOLS) messages.append({"role": "assistant", "content": response.content}) if response.stop_reason != "tool_use": return # 执行工具,把结果塞回 messages有三个机制特别值得琢磨。工具分派:s02 起把工具名和 handler 放进一张表,加工具只是加一行,循环不动,这是 coding agent 能从 1 个工具扩到几十个而不重写循环的原因。上下文压缩:s08 做四级,先整理工具结果(只留最近几条),超限再摘要旧历史,因为上下文迟早溢出,总得有个腾地方的手段。目标闭环:s17 里 worker 模型想停时,一个独立 evaluator 读整段对话判断目标达没达成,没达成就把没干完的活送回同一个循环,避免"模型觉得完事了就提前收工"。
走完五层你会发现,s15 只是把前面攒下的机制重新收进一个循环,s16、s17 再在这个循环上补编排与收尾。循环是骨架,机制是血肉。
💡 工程上的几个亮点
这个项目最显眼的就是克制——每节只加一个机制,循环几乎不动。挑三个讲。
s01 只给一个工具。问题是怎么用最少的复杂度把 agent 跑起来。做法:只留 bash,退出条件完全交给模型(不调工具就停),边界就三条:危险命令黑名单、120 秒超时、输出截断到 5 万字符。效果:最小 Agent 跑起来了,安全底线也在。
s02 用一张分派表扩展。把工具调用写死在循环里,加工具就得改循环。做法:名字和 handler 进表,按工具名分派:
TOOL_HANDLERS = { "bash": run_bash, "read_file": run_read, "write_file": run_write, "edit_file": run_edit, "glob": run_glob, }效果:加工具等于往表里加一行,像给排插多接一个插位,循环形态一点没变。
s17 用独立 evaluator 判终止。worker 自己说"我完事了"容易提前收工。做法:挂一个会话级 Stop hook,由一个独立 evaluator(它甚至不拿工具)读整段对话判完成,不可行、失败或超继续上限时把控制权交还用户。效果:"该不该结束"由目标说了算,不由 worker 的嘴说了算。
这些单点机制的价值,最终会收进同一个 harness,也就是 s15 的形态:
🎯 适合谁、怎么继续
这套课适合刚接触 LLM Agent 的开发者,也适合想看懂 coding agent 内部机制的工程师,会点 Python 就能跟。
推荐路径:先连跑 s01 到 s05,把循环、工具分派、边界、计划这几样走熟;再挑你最好奇的机制深挖——想搞长时运行看 s10 到 s12,想看多 Agent 协作看 s13,想看整体收口看 s15 到 s17。
延伸阅读方面,仓库带了一个web/平台,能从课程生成阅读、源码和架构视图;tests/目录里有 14 个测试文件,想核对某个机制的行为,直接看对应测试就行,不用真调模型。
别停在"能跑",把 s01 到 s17 一路走完,亲手拼一个 coding agent。一个循环足以承载全部智能,剩下的,是你替模型搭的那层框架。
【免费下载链接】learn-claude-codeBash is all you need - A nano claude code–like 「agent harness」, built from 0 to 1项目地址: https://gitcode.com/GitHub_Trending/an/learn-claude-code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考