Claude Code Agent 开发完整指南:12 节从零到多智能体
title: Claude Code Agent 开发完整指南:12 节从零到多智能体(learn-claude-code 56.8k Stars 精讲,2026) description: 基于 GitHub 56.8k Stars 项目 shareAI-lab/learn-claude-code 的 Claude Code Agent 开发完整指南:Harness Engineering 核心理念、12 节渐进式课程路线图(从最小 Agentic Loop 到 Worktree 隔离多智能体)、关键代码示例、与 LangChain/AutoGPT 的定位对比、国内直连 Claude API 方案,以及配套 Kode CLI 工具(2026 年 4 月实测)。 shareAI-lab/learn-claude-code 是目前 GitHub 上 Star 数最高的 Claude Code Agent 开发教程项目,截至 2026 年 4 月:56,800+ Stars、9,300+ Forks、MIT 开源、支持中英日三语。 项目的核心论点是:"Agency(自主能力)来自模型训练,而非外部代码编排——模型是司机,Harness(运行基础设施)是车辆。" 这一理念颠覆了 LangChain、AutoGPT 等"节点流程图"式框架的设计思路,12 节渐进式课程从最简单的 while 循环出发,一步步构建出能自主领取任务、并行执行、跨会话记忆的多智能体系统。 Harness Engineering(运行基础设施工程)是 learn-claude-code 提出的 Agent 开发范式:开发者负责为模型构建"工具集、领域知识、观测接口、操作能力和权限边界",模型本身负责推理和决策——开发者不写决策逻辑,只写执行基础设施。 项目将 12 节课分为四个阶段,每个阶段在不修改核心 Agent 循环的前提下叠加新能力——这是理解"Harness 可扩展性"最直观的方式。 learn-claude-code s01 课程的核心示例证明了一个反直觉的结论:一个 while 循环 + 一个 Bash 工具 = 一个功能完整的 AI Agent。 以下是基于 Anthropic SDK 的最小实现: 这段代码的关键设计: s04 课程引入的子代理(Subagents)解决了一个实际痛点:当主 Agent 的对话历史积累到数万 tokens 时,每次工具调用都会携带全部历史,导致延迟增加、成本飙升、模型"遗忘"早期指令。 子代理的解决方案是:每个子任务获得独立的、干净的消息历史。 s06 课程的三层压缩策略是 learn-claude-code 贡献的原创工程方案,解决了"Agent 对话历史无限增长"这个所有长期运行 Agent 都会遇到的问题: s09 到 s11 构建了一个完整的多智能体团队框架:每个 Agent 有固定角色(架构师、编码员、审查员等),通过 JSONL 格式的"邮箱"文件异步通信,主 Agent 协调任务分配,子 Agent 自主领取并完成任务。 learn-claude-code 项目附带开源伴侣工具 Kode CLI,将课程中的 Agent 架构打包成可直接使用的命令行工具,支持 npm 全局安装: Claude 官方 API( 七牛云 AI 推理 API 支持 Anthropic 原生协议( 适合需要数据完全自控的团队,但需要维护一台境外服务器。 Q1:learn-claude-code 和 Claude Code(官方 CLI)是什么关系? 两者不同:Claude Code 是 Anthropic 官方发布的 AI 编程 CLI( Q2:12 节课程需要什么基础? 需要 Python 基础(变量、函数、类)和基本的 API 调用经验。不需要了解 LangChain 或其他 Agent 框架。s01 的最小 Agent Loop 只有约 20 行代码,任何有 Python 基础的开发者都能跟上;后期的多智能体部分(s09–s12)会涉及并发和文件 I/O,有一定工程经验会更容易理解。 Q3:Harness Engineering 和"Prompt Engineering"有什么区别? Prompt Engineering 优化的是"给模型什么输入";Harness Engineering 关注的是"给模型什么能力环境"。前者是措辞技巧,后者是系统设计:如何让模型可以看到文件、执行命令、调用 API、读写数据库、与其他 Agent 通信——这些基础设施决定了 Agent 能做什么,而 Prompt 决定了它做得好不好。 Q4:课程的代码在生产环境可以直接用吗? 课程代码是教学实现,项目 README 明确说明有意省略了生产细节:完整的事件总线、高级权限治理、Session 生命周期控制、MCP Transport 细节等。可以把课程代码作为原型,再根据实际需求补充生产级的错误处理、日志、监控和安全边界。 Q5:learn-claude-code 支持 DeepSeek / GPT-4 等其他模型吗? 支持。课程代码使用 Anthropic SDK,但 Agentic Loop 的核心逻辑(while 循环、工具调用、结果回传)对任何支持 Tool Use / Function Calling 的模型通用。替换 SDK 和 learn-claude-code 的核心贡献是把"构建 AI Agent"这件事从"拼积木"变成了"工程问题":不是学习哪个框架的 API,而是理解 Agent 的底层运行机制,然后用最少的代码精确实现它。 从 s01 的 20 行 while 循环到 s12 的 Worktree 隔离并行多智能体,12 节课程证明了"一个循环 + 工具调度 + 逐步叠加机制"可以构建出覆盖绝大多数实际场景的 Agent 系统。56.8k Stars 的社区规模也验证了:理解原理比会用框架更有价值。 数据来源:shareAI-lab/learn-claude-code GitHub(2026.04);Anthropic Claude Code 官方文档(code.claude.com/docs,2026.04)| 信息时效:2026 年 4 月 相关资源:
date: 2026-04-27
keywords: learn-claude-code, Claude Code Agent开发, Harness Engineering, Agentic Loop, Claude Code教程, Claude Code多智能体, Agent框架对比, Claude Code安装, 子代理Claude, Claude Code上下文管理, 自主AI Agent, shareAI-labClaude Code Agent 开发完整指南:12 节从零到多智能体
数据来源:shareAI-lab/learn-claude-code GitHub(github.com/shareAI-lab/learn-claude-code,2026.04);Anthropic Claude Code 官方文档(code.claude.com/docs,2026.04)

核心定义:Harness Engineering 是什么,和 LangChain 有什么不同
对比维度 Harness Engineering(本项目) LangChain / LangGraph 等框架 核心理念 模型决策,Harness 执行 代码编排决策流,模型填充节点 决策权在哪 模型(来自训练) 开发者写的 Chain / Graph 结构 最小实现 while 循环 + Bash 工具 = 功能性 Agent 节点图、路由函数、记忆模块、向量库…… 可扩展方式 追加工具和知识,不修改核心循环 修改 Chain 结构或增加节点类型 适合场景 需要模型真正自主推理的任务 有明确规则流程、需要精确控制路径的任务 可引用结论:learn-claude-code 项目定义 Harness 的五个组成部分:工具(Tools)、领域知识(Domain Knowledge)、观测接口(Observation Interfaces)、操作能力(Action Capabilities)、权限边界(Permission Boundaries)——这一模式可泛化到编程、农业、医疗、制造等任意垂直领域(来源:shareAI-lab/learn-claude-code,2026.04)。
12 节课程路线图:四个阶段渐进构建
阶段一:循环基础(s01–s02)
节次 核心机制 关键原则 s01 最小 Agent 循环 + Bash 工具 "One loop & Bash is all you need" s02 工具调度映射表(Dispatch Map) 多工具注册,不修改核心循环 阶段二:规划与知识(s03–s06)
节次 核心机制 关键原则 s03 TodoWrite 任务规划 执行前先规划,完成率更高 s04 子代理(Subagents)隔离上下文 每个子任务独立消息历史,防止上下文污染 s05 按需知识注入(Skills) 用工具结果注入知识,而非塞进 System Prompt s06 三层上下文压缩策略 处理无上界对话历史 阶段三:持久化(s07–s08)
节次 核心机制 关键原则 s07 文件型任务图(依赖管理) 任务之间有前置关系 s08 后台守护进程执行 并发思考,不阻塞主线程 阶段四:团队与隔离(s09–s12)
节次 核心机制 关键原则 s09 多智能体邮箱通信(JSONL 邮箱) 异步协调,持久化团队成员 s10 共享通信 FSM(有限状态机) 团队通信协议统一 s11 自主任务领取机制(Idle Cycle) 空闲时自动认领新任务 s12 Worktree 隔离并行执行 目录级隔离,防止并行任务互相干扰 最简 Agentic Loop:20 行代码实现功能性 Agent
import anthropic
client = anthropic.Anthropic(api_key="YOUR_KEY")
TOOLS = [{
"name": "bash",
"description": "在 shell 中执行命令并返回输出",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string", "description": "要执行的 bash 命令"}},
"required": ["command"]
}
}]
def run_bash(command: str) -> str:
import subprocess
result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=30)
return (result.stdout + result.stderr)[:50000] # 限制输出长度
def agent_loop(messages: list) -> str:
while True:
response = client.messages.create(
model="claude-opus-4-7",
system="你是一个自主 Agent,可以通过 bash 工具完成编程任务。",
messages=messages,
tools=TOOLS,
max_tokens=8000
)
messages.append({"role": "assistant", "content": response.content})
if response.stop_reason != "tool_use":
# 模型停止调用工具 → 给出最终答案
return next(b.text for b in response.content if hasattr(b, "text"))
# 执行所有工具调用,将结果批量回传
results = []
for block in response.content:
if block.type == "tool_use":
output = run_bash(block.input["command"])
results.append({"type": "tool_result", "tool_use_id": block.id, "content": output})
messages.append({"role": "user", "content": results})
# 使用示例
messages = [{"role": "user", "content": "帮我统计当前目录下所有 .py 文件的行数"}]
print(agent_loop(messages))stop_reason != "tool_use"(模型主动停止),而非外部超时子代理与上下文隔离:防止"上下文污染"

def spawn_subagent(task: str, context: str = "") -> str:
"""
为独立子任务创建隔离的 Agent 实例。
主 Agent 的历史不会传入,避免上下文污染。
"""
subagent_messages = []
if context:
subagent_messages.append({"role": "user", "content": f"背景信息:{context}"})
subagent_messages.append({"role": "assistant", "content": "明白,我会参考这些背景信息。"})
subagent_messages.append({"role": "user", "content": task})
return agent_loop(subagent_messages) # 独立循环,独立历史
# 主 Agent 调用示例:并发拆分大任务
import concurrent.futures
subtasks = [
"分析 src/auth/ 目录的安全风险",
"检查 src/api/ 目录的性能瓶颈",
"审查 src/db/ 目录的 SQL 注入风险"
]
with concurrent.futures.ThreadPoolExecutor() as executor:
results = list(executor.map(spawn_subagent, subtasks))三层上下文压缩策略(s06)
压缩层级 触发条件 策略 保留内容 层级 1:工具输出截断 单次工具输出 > 50,000 字符 截断 + 附加摘要行 输出头尾 + 关键错误 层级 2:历史滚动 消息总 tokens > 压缩阈值(默认 80K) 保留最近 N 轮 + 压缩摘要 最近对话 + 任务目标 层级 3:会话摘要 会话终止 / 手动触发 /compress生成结构化会话摘要并持久化 任务结果 + 关键决策 + 未完成项 多智能体团队协作(s09–s11)
import json
from pathlib import Path
from datetime import datetime
MAILBOX_DIR = Path("./agent_mailboxes")
def send_message(to: str, content: str, task_id: str):
"""向另一个 Agent 的邮箱发送消息"""
MAILBOX_DIR.mkdir(exist_ok=True)
msg = {"from": "coordinator", "to": to, "task_id": task_id,
"content": content, "ts": datetime.utcnow().isoformat()}
with open(MAILBOX_DIR / f"{to}.jsonl", "a") as f:
f.write(json.dumps(msg, ensure_ascii=False) + "\n")
def claim_task(agent_name: str) -> dict | None:
"""从邮箱中领取第一条未处理消息(Idle Cycle 核心)"""
mailbox = MAILBOX_DIR / f"{agent_name}.jsonl"
if not mailbox.exists():
return None
lines = mailbox.read_text().splitlines()
if not lines:
return None
task = json.loads(lines[0])
mailbox.write_text("\n".join(lines[1:])) # 消费第一条
return task
# s11:自主任务领取循环(Idle Cycle)
def autonomous_agent(name: str):
"""空闲时自动扫描邮箱并领取任务"""
import time
while True:
task = claim_task(name)
if task:
result = agent_loop([{"role": "user", "content": task["content"]}])
send_message("coordinator", result, task["task_id"])
else:
time.sleep(2) # 无任务时等待 2 秒再检查Kode CLI:learn-claude-code 的配套实战工具
# 安装 Kode CLI
npm i -g @shareai-lab/kode
# 在任意项目目录运行 AI 编码 Agent
cd your-project
kode "帮我重构 auth 模块,添加 JWT 刷新 Token 逻辑"国内开发者接入 Claude API
api.anthropic.com)国内无直连节点,开发者在运行 learn-claude-code 课程代码时需要解决这个问题。 两种主要方案:方案 A:七牛云 AI 推理 API(推荐,零配置)
import anthropic
# 将 base_url 替换为七牛云国内直连节点,API Key 换成七牛云 Key
client = anthropic.Anthropic(
api_key="YOUR_QINIU_KEY",
base_url="https://api.qnaigc.com" # Anthropic 原生协议,国内直连
)
# 其余代码完全不变——learn-claude-code 的所有课程代码可直接运行
response = client.messages.create(
model="claude-opus-4-7",
messages=[{"role": "user", "content": "你好"}],
max_tokens=1000
)tool_use、extended thinking、stop_reason 字段完全一致),learn-claude-code 的 12 节课程代码无需修改任何业务逻辑,只需替换 api_key 和 base_url 两个参数。新用户有 300 万 tokens 免费资源包,足够跑完全部 12 节课程的示例代码。方案 B:自建境外代理节点 + LiteLLM
FAQ
curl -fsSL https://claude.ai/install.sh | bash 安装),用于日常编码辅助。learn-claude-code 是一个开源教学项目,教你用 Claude 的 API 从零构建类似 Claude Code 内部架构的 AI Agent 系统——不是使用 Claude Code,而是理解并亲手实现它的底层机制。model 参数即可切换到 DeepSeek V4 Pro 或 GPT-4o,唯一需要注意的差异是工具结果的消息格式(Anthropic 使用 role: "user" 包裹 tool_result,OpenAI/DeepSeek 使用 role: "tool")。总结
npm i -g @shareai-lab/kode,learn-claude-code 的配套实战工具,开箱即用的编码 Agentcurl -fsSL https://claude.ai/install.sh | bash)及完整功能说明