Anthropic Claude Code 101:一门免费课把 Loop Engineering 讲透
posts posts 2026-07-11T20:54:22+08:00Anthropic 免费课 Claude Code 101 的笔记:agentic loop 三阶段、5 类内置工具 + 4 类扩展、hooks 的 31 个事件、Explore/Plan 内置 sub-agent,再加上 Draft PR、声音输入、Fable 5 的非代码用法和 5 条工程经验。技术笔记Anthropic, Claude Code, Loop Engineering, Hooks, MCP, Skills, AI Coding AgentAnthropic Claude Code 101:一门免费课把 Loop Engineering 讲透
目录
- 这门课
- Loop Engineering 是什么
- agentic loop 三阶段
- Hooks:99% 开发者忽略的功能
- Sub-agents:把子任务委派给专门的子代理
- 为什么声音胜于写作
- Draft PR:自动代码评审
- Fable 5 用于非代码工作
- 给独立 Agent 项目作者的 5 条工程经验
- 关键资源与延伸阅读
1. 这门课
2026 年 7 月,Anthropic 在 Skilljar 上架了免费课程 Claude Code 101,讲的是 loop engineering,配 Claude Fable 5 和 Claude Code。precis0x 在 X 上转发推荐,原话是西语:“Este curso gratuito reemplaza cualquier tutorial de pago de claude code”(这门免费课能替代任何付费的 Claude Code 教程)。
视频 1 小时 1 分 04 秒,按 6 段展开:
00:00— Claude Code 内部如何工作05:01— agentic loop 详解16:21— 99% 开发者忽略的功能(hooks)19:01— 为什么声音胜于写作32:34— 用 Draft PR 自动审代码58:39— Fable 5 用于非代码工作
这门课的加分项在配套资料。Anthropic 把 Claude Code 文档从 docs.claude.com 迁到 code.claude.com/docs/en/,hooks、sub-agents、MCP、skills 四个扩展点的 reference 和 quickstart 都写得很细。课程里的每个示例,都能在文档里找到对应章节的真实代码。
2. Loop Engineering 是什么
听多了 prompt engineering、context engineering、agent engineering,第一反应是:loop engineering 又是新词?
Anthropic 在 2024 年底的 Building Effective Agents 里,把 agent 工作流拆成 5 类:
| 工作流 | 描述 | 适用场景 |
|---|---|---|
| Prompt chaining | 任务分解为顺序步骤,中间加 programmatic check(“gate”) | 任务可清晰分解为固定子任务 |
| Routing | 输入分类后定向到专门 follow-up 任务 | 输入有清晰类别,分类可准确完成 |
| Parallelization | 多个 LLM 同时处理同一任务(sectioning / voting) | 任务可独立并行 + 需要多视角 |
| Orchestrator-workers | 中央 LLM 拆解任务 + workers 并行执行 | 任务结构未知、需动态分解 |
| Evaluator-optimizer | 一个 LLM 生成 + 另一个 LLM 评分,迭代改进 | 有清晰评价标准、迭代可收敛 |
loop engineering 是这 5 类工作流之上抽出来的一条共通主线:一个 agent 要反复执行"决策 → 行动 → 评估"循环,问题在于怎么把循环本身工程化。核心不是把 prompt 写得更好,而是让每次循环都可观测、可中断、可改进。Claude Code 的 agentic loop + hooks + sub-agents 三件套,是它第一次有了可运行的参考实现。
3. agentic loop 三阶段
课程 00:00 段对应文档的 How Claude Code works 一节。文档原文讲得很简单:
When you give Claude a task, it works through three phases: gather context, take action, and verify results. These phases blend together. Claude uses tools throughout, whether searching files to understand your code, editing to make changes, or running tests to check its work.
三阶段:
- Gather context(收集上下文)——读文件、搜代码、看 git 状态、读 CLAUDE.md
- Take action(采取行动)——改文件、跑命令、搜网页、调子代理
- Verify results(验证结果)——跑测试、检查 type error、对比预期
文档还补了一句:
The loop adapts to what you ask. A question about your codebase might only need context gathering. A bug fix cycles through all three phases repeatedly. A refactor might involve extensive verification.
意思很直白:循环的形状随任务变。问问题可能只跑阶段 1,改 bug 三个阶段反复跑,重构可能要大量阶段 3。走哪个阶段、走多远,由 Claude 自己决定。
5 类内置工具是循环能跑起来的基础:
| 类别 | 能做什么 |
|---|---|
| File operations | 读文件、编辑代码、创建新文件、重命名重组 |
| Search | 按 pattern 找文件、regex 搜内容、探索 codebases |
| Execution | 跑 shell 命令、启服务、跑测试、用 git |
| Web | 搜索网页、抓文档、查错误信息 |
| Code intelligence | 看 type error 和 warning、跳转到定义、找引用 |
4 类扩展是循环能扩出去的关键:
- Skills —— 给 Claude 加载领域知识(自定义工作流)
- MCP —— 连接外部服务(database / API / SaaS 工具)
- Hooks —— 在循环的关键节点自动跑命令(自动验证 / 自动 lint / 自动格式化)
- Sub-agents —— 把子任务委派给专门的子代理(探索 / 规划 / 实现)
把三阶段和这些工具拼起来,一个典型改动任务的长相是这样:Claude 先读目标文件和相关调用,定位改动点(Gather,靠 File operations 和 Search);然后改代码、跑测试(Act,靠 Execution);测试没过,它读报错、再改、再跑(Verify,又回到 Gather / Act)。文档里那句 “A bug fix cycles through all three phases repeatedly” 落到实操,就是这一圈一圈的循环。任务越大,循环嵌套得越深,hooks 和 sub-agent 的价值也越明显——它们是往这个循环里插工程挂点的东西。
下面几节逐个展开 hooks、sub-agents、voice、Draft PR、Fable 5 五块。
4. Hooks:99% 开发者忽略的功能
课程 16:21 段对应 Hooks reference。这是整门课最需要花时间学的部分。
Hooks 是 Claude Code 在 agentic loop 关键节点自动触发的用户定义命令。它们能:
- 每个工具调用前 拦截(
PreToolUse) - 每个工具调用后 触发(
PostToolUse) - 每个 session 开始/结束时(
SessionStart/SessionEnd) - 每条 prompt 提交时(
UserPromptSubmit) - 每次 context 压缩前后(
PreCompact/PostCompact)
官方文档目前列出了 31 个 hook 事件(截至 2026-08),按触发节奏大致分几组:
once per session: SessionStart, Setup, InstructionsLoaded, SessionEnd
once per turn: UserPromptSubmit, UserPromptExpansion, Stop, StopFailure,
Notification, MessageDisplay
per tool call: PreToolUse, PostToolUse, PostToolUseFailure, PostToolBatch,
PermissionRequest, PermissionDenied
sub-agent / team: SubagentStart, SubagentStop, TaskCreated, TaskCompleted,
TeammateIdle
worktree / dir: WorktreeCreate, WorktreeRemove, DirectoryAdded, CwdChanged,
FileChanged, ConfigChange
context: PreCompact, PostCompact
MCP elicitation: Elicitation, ElicitationResult事件数量一直在涨,这套分组只是便于理解,以官方文档为准。
文档给了一个很实用的例子:写一个 PreToolUse hook,拦掉所有 rm -rf 命令。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"if": "Bash(rm *)",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh",
"args": []
}
]
}
]
}
}block-rm.sh:
#!/bin/bash
COMMAND=$(jq -r '.tool_input.command')
if echo "$COMMAND" | grep -q 'rm -rf'; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "Destructive command blocked by hook"
}
}'
else
exit 0
fi整段链路是这样:
- Claude Code 决定跑
Bash "rm -rf /tmp/build" - PreToolUse 事件触发
- Claude Code 把工具调用以 JSON 形式通过 stdin 发给 hook
block-rm.sh读 stdin,检查命令包含rm -rf- 脚本输出
permissionDecision: "deny"+ 原因 - Claude Code 取消这次工具调用,改走别的路径
这种"在 loop 里插入自定义决策点"的能力,是 loop engineering 工程化的标志。没有 hooks 的 agent 是个黑盒——你能看到它做了什么,但没法在它做之前拦截、做完之后审查。有了 hooks,每一步都变成可观测、可干预的工程对象。
实战里最常用的 4 个 hook 类型:
PostToolUse跑 lint / format —— 每次 Claude 改完文件,自动跑 ESLint / Prettier / gofmtPreToolUse拦危险命令 ——rm -rf/git push --force/chmod 777/> /etc/...PostToolUse自动 commit —— 文件改完跑git add -p+git commit(带结构化 message)UserPromptSubmit注入上下文 —— 自动加载当天的 issue / CHANGELOG / standup notes
5. Sub-agents:把子任务委派给专门的子代理
课程 05:01 段对应 Sub-agents。这是 Claude Code 把 loop engineering 提到多 agent 层面的一步。
Claude Code 内置了 Explore 和 Plan 两个 sub-agent:
- Explore —— 专门做 codebase 搜索和理解,不修改文件,把结果留在主对话 context 之外
- Plan —— 专门做实施计划,把方案留在主对话 context 之外
文档原文:
When invoking Explore, Claude specifies a thoroughness level: quick for targeted lookups, medium for balanced exploration, or very thorough for comprehensive analysis.
Explore 分三个 thoroughness 级别,对应快查 / 平衡 / 全量。
自定义 sub-agent 的方式,文档说得很清楚:
Subagents are Markdown files with YAML frontmatter. To create one, ask Claude to write it for you, or write the file yourself.
sub-agent 就是 Markdown 文件 + YAML frontmatter,路径在 .claude/agents/(项目级)或 ~/.claude/agents/(用户级)。一个完整的例子:
---
name: code-reviewer
description: Reviews code changes for quality and security
tools: Read, Grep, Glob, Bash
model: sonnet
---
You are a senior code reviewer. For each diff:
1. Check for security vulnerabilities (OWASP top 10)
2. Verify test coverage for new code paths
3. Flag complexity hotspots (cyclomatic > 10)
4. Suggest concrete refactors
Return a structured report with sections:
- Critical issues (must fix)
- Warnings (should fix)
- Suggestions (nice to have)YAML frontmatter 字段:
| 字段 | 作用 |
|---|---|
name | sub-agent 名,Claude 用来引用 |
description | 关键——决定父 agent 何时调用这个 sub-agent |
tools | 限制可用的工具(不是全部 = 更安全 + 更省钱) |
model | 指定模型(haiku / sonnet / opus) |
permissionMode | 权限模式(acceptEdits / bypassPermissions / default) |
hooks | sub-agent 专属 hooks |
tools 字段值得单独拎出来说。一个 code reviewer 不该有 Write 工具,因为它的职责是"读 + 评论",不是"读 + 改"。这种最小权限是 sub-agent 设计的关键。
sub-agent 的 context 还是隔离的。Explore / Plan 拿到结果后,只把摘要返回主对话,自己的完整 context 不进主对话,避免探索性操作把主对话 context 灌满。
6. 为什么声音胜于写作
课程 19:01 段是"软"的一块,Anthropic 在多处强调:写 prompt 不如说 prompt。
这和 hooks 的工程哲学一致:
- Hooks 是"机器可读的语言" —— 用 JSON schema、命令、shell 表达意图
- Voice 是"自然语言的高密度变体" —— 说话比打字带的信息密度高
落到 loop engineering 上:如果你发现自己反复输入同一段 prompt,先想 hooks 能不能把它机械化掉,再想 voice 能不能说得更省,剩下的纯重复 prompt 才值得封装成 / 命令。
7. Draft PR:自动代码评审
课程 32:34 段对应 Claude Code 的 draft pull request 自动评审功能。
流程是这样:Claude 改完一组相关文件 → 自动跑 hooks(lint / format / type-check)→ 把 diff 推到远端开一个 Draft PR → 通知 reviewer 审阅。
这套链路把"agent 写代码 → CI 验证 → 团队审阅"接起来,人不用从 IDE 跳出来。loop engineering 在这里落在团队协作上:agent 不是替开发者写代码,而是把开发者从"写完再手动验证"里解放出来,改成评审 agent 写的代码。
文档给的一句定义:
Hooks are user-defined shell commands, HTTP endpoints, or LLM prompts that execute automatically at specific points in Claude Code’s lifecycle.
容易踩的坑是 hook 写得太激进(比如 PostToolUse 直接 push force)。如果不写 if matcher,所有 Bash 调用都会触发 hook。最小权限 + 最小触发面是写 hook 的核心。
8. Fable 5 用于非代码工作
课程 58:39 段讲一个事实:Fable 5(Claude 5)不只能写代码。
Claude Code 底层不只是"代码 agent"——它的 agentic loop + tools 框架是 model-agnostic 的,任何命令行任务都能跑。文档原文:
Claude Code is an agentic assistant that runs in your terminal. While it excels at coding, it can help with anything you can do from the command line: writing docs, running builds, searching files, researching topics, and more.
项目里常见的非代码用法:
- 文档维护 —— 改 README / CHANGELOG / doc site,自动 commit + 开 draft PR
- Issue 分类 —— 读新 issue,跑 hooks 调 jira API 自动加 label / assign
- 数据清洗 —— 读 CSV / 数据库,输出清洗后的结构化数据
- 运维脚本生成 —— 用户说"我需要一个 cron 脚本每天备份 X",Claude 生成 + 自我测试
- 研究 agent —— 搜网页 + 抓文档 + 写 summary,写到本地 markdown 文件
loop engineering 比 prompt engineering 强的地方在这里:循环是 agent 的核心,写什么 prompt 只是循环的第一步。
9. 给独立 Agent 项目作者的 5 条工程经验
把课程和文档合在一起,再加上我在 Claude Code 和写 Agent 项目里踩过的坑,给独立 Agent 作者 5 条可复用的经验:
1. Hooks 是 Claude Code 最大的杠杆,但也是最容易写错的地方。 一个项目至少要有 lint hook(PostToolUse)和危险命令拦截 hook(PreToolUse)。这两条能把大部分"agent 改坏代码"的事故挡在萌芽,先写这两个再加别的。
2. Sub-agent 的 description 字段是它能否被调用的唯一信号。 写得模糊的 sub-agent 永远不会被父 agent 调用。这跟 Claude API 工具设计的建议一致:description 是模型决定何时调用的唯一信号。写 description 时把自己代入父 agent,问"我看到这个描述,会不会调用它?"
3. 用 Explore / Plan 内置 sub-agent 之前,先确认你的 Claude Code 版本带这两个。 更早的版本不内置,Claude 自己探索 / 规划会把主对话 context 灌满。版本太旧就升级,或者手动写两个 .claude/agents/explore.md / .claude/agents/plan.md 顶上。
4. Loop engineering 的核心是"让循环可观测"。 一个好的 agent 系统应该能回答三个问题:
- agent 现在在哪个 phase(gather / act / verify)?
- 它刚才用了什么 tool?返回了什么?
- 它为什么停下来 / 为什么继续?
Hooks + sub-agent + MCP 共同提供了这三个问题的答案。如果你写完 agent 还是答不上来,说明 loop 还没被工程化。
5. Fable 5 / Claude 5 不只是代码模型。 把 Claude Code 当成"终端里的通用 agent"——任何能用命令行表达的任务,都能让它跑。这意味着你投入的 hooks / sub-agents / skills 不只服务代码场景,而是服务所有命令行工作,这是 hook 体系性价比最高的回报。
10. 关键资源与延伸阅读
课程入口:
- Claude Code 101(Skilljar 免费课):
https://anthropic.skilljar.com/claude-code-101 - precis0x 整理的 6 段大纲推文:
https://x.com/precisox/status/2075824818440519692
Claude Code 官方文档(已迁到 code.claude.com/docs/en/):
- 总目录:
https://code.claude.com/docs/en/ - Overview:
https://code.claude.com/docs/en/overview - How Claude Code works:
https://code.claude.com/docs/en/how-claude-code-works - Best practices:
https://code.claude.com/docs/en/best-practices - Sub-agents:
https://code.claude.com/docs/en/sub-agents - Hooks reference:
https://code.claude.com/docs/en/hooks - Changelog:
https://code.claude.com/docs/en/changelog
Anthropic 关于 Agent 的官方博客:
- Building Effective Agents:
https://www.anthropic.com/engineering/building-effective-agents
横向对比框架:
- Google ADK —— 官方框架,5 SDK 一致 + graph workflow + MemoryService
- LangChain / LangGraph —— 最广泛采用的链式 / 图式框架,model 无关
- CrewAI —— role-based 多 agent 编排
- AutoGen(Microsoft) —— 多 agent 对话范式
延伸阅读建议:
- 想深入 hooks 的全部事件:
https://code.claude.com/docs/en/hooks#hook-events - 想写 custom sub-agent:
https://code.claude.com/docs/en/sub-agents#quickstart-create-your-first-subagent - 想把 Claude Code 跑成 server:
https://code.claude.com/docs/en/agent-sdk
本文基于 Anthropic 官方 Claude Code 文档(2026-08 版本)与免费课 Claude Code 101。所有代码示例与 hook 事件清单均来自 code.claude.com/docs/en/ 原文。文档会随版本变化,建议以当前版本为准。
参与讨论
使用 GitHub 登录。欢迎补充事实、异议与实践。
讨论暂时无法加载。