已有基础 → 系统掌握。每天1小时,理论 + 动手 + 测验。覆盖上下文工程、Subagents、Hooks、Skills、MCP。
Transformer 架构对 n 个 token 产生 n² 个注意力关系。上下文越长,注意力被稀释,模型召回精度持续下降。这不是"突然崩掉",而是渐进退化——就像人读了 10 万字后开始走神。
每加载一个 token 都在消耗"注意力预算"。系统提示词、工具定义、MCP 配置、消息历史——全部占用。200K 窗口听起来很大,但 有效工作区远小于标称值。
点击按钮模拟对话中 token 累积,观察不同压力等级的行为变化:
0-50% 正常工作,自由对话
50-70% 开始注意,避免加载大文件
70-85% 精度下降,执行 /compact
85-90% 幻觉增加,必须 compact 或 handoff
90%+ 不可靠输出,执行 /clear 重新开始
不要把整个文件 @mention 进上下文。让 Claude Code 用 grep / glob / head / tail 按需检索。这就像人类用搜索引擎而不是背诵百科全书。
@src/index.tsx @src/utils.ts @src/api.ts @src/config.ts
↑ 4个文件全量加载,可能消耗 20K+ tokens
"先 grep 找到所有 API 调用点,只读相关函数"
↑ Claude 用工具按需检索,消耗 < 2K tokens
关掉 auto-compact(它在 45K 处自动触发,打断你的节奏)。改用:
1. 手动 /compact 在自然停顿点压缩
2. 写 HANDOFF.md 传给下一个 session
Effective Context Engineering for AI Agents — Anthropic 官方博客,Claude Code 团队写的上下文管理策略。这是本课所有理论的源头。
在 Claude Code 中执行:
/config
找到 auto-compact 选项,关闭它。
打开一个真实项目,工作 15 分钟后执行:
/cost
记录当前 context 使用量和 token 消耗。这是你的基线。
在项目根目录创建,包含三段:
# HANDOFF
## 已完成
- [列出已完成的工作]
## 未完成
- [下一步要做什么]
## 关键决策
- [做了哪些技术选择,为什么]
在 Claude Code 中不要用 @mention 加载文件,改为:
"grep 找到所有包含 'useState' 的文件,
然后只读取 hooks 相关的那个函数"
第一层 — CLAUDE.md(项目根目录):每个 session 自动加载。技术栈、规范、已知坑。
第二层 — ~/.claude/rules/(全局):跨项目的个人偏好。
第三层 — Session 内记忆:对话中的上下文,session 结束即消失。
写 CLAUDE.md 像调焦距——太高(太具体)= 脆弱的 if-else 规则;太低(太泛化)= 无信号噪音。最佳点:具体到能指导行为,灵活到覆盖边界情况。
# Project Rules Be careful with the code. Use good variable names. Always test your changes. Don't break anything. If the file is a .py file, use Python 3.10 syntax. If it's a .ts file, use strict typing. Remember to be helpful.
# VoiceInput — WPF .NET 10 ## Stack C# 12, .NET 10, WPF Paraformer ASR (streaming) ## Commands - Build: dotnet build - Test: dotnet test - Run: dotnet run ## Rules - UI changes need screenshot verification - MVVM: ViewModel 先写 - Commit: conventional commits
# [项目名] — [一句话描述]
## 技术栈
[语言/框架/关键依赖]
## 常用命令
- 构建: [cmd]
- 测试: [cmd]
- 运行: [cmd]
## 编码规范
[3-5 条最重要的规则]
## 已知坑
[踩过的坑,避免重复]
不要一开始就写满。从 10 行开始,只在 Claude Code 重复犯错时才加规则。每条规则应该对应一个真实的错误案例。
Claude Code Best Practices — 官方推荐的 CLAUDE.md 写法和项目配置最佳实践。
AI Prompt Engineering Deep Dive — Anthropic 内部专家 1 小时对谈,含系统提示词设计哲学(可直接跳到 12:17 "Refining prompts" 段)。
选择一个你正在用的项目,在根目录创建 CLAUDE.md。
# 在你的项目根目录
touch CLAUDE.md
按上面的模板,填写:技术栈、常用命令、编码规范、已知坑。控制在 50 行以内。
新开一个 Claude Code session,问它:
"这个项目用什么技术栈?怎么跑测试?"
如果它能正确回答,说明 CLAUDE.md 被成功读取了。
把跨项目的个人偏好放到全局:
mkdir -p ~/.claude/rules
echo "永远使用中文回复" > ~/.claude/rules/language.md
Subagent 是 Claude Code 的「分身」。它获得一个全新的 messages[]——没有主对话的历史包袱,只有你给它的任务描述。完成后返回摘要,不污染主上下文。
想象你在写一个功能,同时需要代码审查。如果不分身,审查的 5000 token 会挤占你的工作上下文。用 subagent,审查在隔离环境完成,只返回结论(~500 token)。
- 代码审查(独立判断) - 写测试(可验证) - 技术调研(大量搜索) - 文档生成(格式化任务) - 并行独立子任务
- 连续修改同一文件 (需要前序上下文) - 快速小修改 (启动开销 > 收益) - 需要深度对话的 设计讨论
触发 subagent 最简单的方式——直接对 Claude Code 说:
"use a subagent to review this code for edge cases"
在一个真实项目中,让 Claude Code 审查你的代码:
"use a subagent to review src/auth.ts
for security vulnerabilities
and edge cases"
观察:subagent 完成后,主上下文只多了摘要,不是完整审查过程。
做同一任务两次:
① 内联执行(正常对话)→ 记录 /cost
② Subagent 执行 → 记录 /cost
对比两者 context 消耗差异。
尝试让 Claude Code 并行处理:
"同时做两件事:
1. Subagent A: 给 utils.py 写单元测试
2. Subagent B: 检查 API 错误处理
两件事互不依赖"
Hooks 是 Claude Code 工具生命周期的扩展点。在工具执行前/后插入确定性逻辑——不经过 LLM,纯执行,零 token 成本。
PreToolUse — 工具执行前触发。用途:安全校验、参数预处理、危险命令拦截。
PostToolUse — 工具执行后触发。用途:自动格式化、自动 lint、日志记录、自动测试。
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"command": "prettier --write $FILE"
}]
}
}
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"command": "echo $COMMAND | grep -q 'rm -rf' && exit 1 || exit 0"
}]
}
}
Hooks 只做确定性逻辑。如果需要"理解"或"判断",那不是 Hook 的工作——那是 Skill 或 Command 的领域。
Ultimate Guide: examples/hooks/ — 37 个生产级 Hook 模板(bash + PowerShell),含自动格式化、安全拦截、日志等。
在你的项目中创建或编辑设置文件:
# 如果还没有 .claude 目录
mkdir -p .claude
touch .claude/settings.json
根据你的技术栈选择工具:
// Python 项目 → ruff
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"command": "ruff format $FILE && ruff check --fix $FILE"
}]
}
}
// JS/TS 项目 → prettier
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"command": "npx prettier --write $FILE"
}]
}
}
让 Claude Code 修改一个文件,观察是否自动格式化:
"在 main.py 末尾加一个空函数 test_placeholder"
检查文件是否被自动格式化了。
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"command": "bash -c 'echo \"$COMMAND\" | grep -qE \"rm -rf|DROP TABLE|git push --force\" && { echo \"BLOCKED\"; exit 1; } || exit 0'"
}]
}
}
在 .claude/commands/ 目录下放一个 .md 文件,就变成了一个 /命令名 斜杠命令。里面写的是给 Claude 的结构化指令。
$ARGUMENTS — 用户在命令后输入的参数
$FILE — 当前打开的文件路径
Command(入口)→ Agent(执行)→ Skill(知识)。命令定义"做什么",Agent 定义"怎么做",Skill 提供"领域知识"。
对当前改动执行结构化代码审查:
1. 运行 git diff 查看所有未提交改动
2. 检查以下维度:
- 安全漏洞(SQL注入、XSS、硬编码密钥)
- 性能问题(N+1查询、不必要的循环)
- 代码风格(与项目规范一致性)
3. 输出格式:
## 🔴 必须修复
## 🟡 建议改进
## 🟢 做得好的
参数: $ARGUMENTS
执行发布流程:
1. 运行全量测试,确保通过
2. 检查是否有未提交的改动
3. 用 conventional commits 格式提交
4. 推送到远程
5. 输出发布摘要
如果任何步骤失败,停止并报告原因。
Superpowers(23万★)— brainstorm → plan → TDD → review → verify 全链路
gstack(11万★)— plan-review → spec → ship → canary 发布流水线
不需要从零写,可以安装现成的:在 Claude Code 中执行 /plugin marketplace add anthropics/skills
mkdir -p .claude/commands
把上面的 review.md 模板复制进去:
cat > .claude/commands/review.md << 'EOF'
对当前改动执行结构化代码审查:
1. 运行 git diff 查看所有未提交改动
2. 检查安全、性能、风格
3. 输出红/黄/绿三级报告
EOF
在 Claude Code 中输入:
/review
观察它是否按定义的流程执行。
# .claude/commands/test.md
为 $ARGUMENTS 编写单元测试:
- 覆盖正常路径和边界情况
- 使用项目现有的测试框架
- 先写测试再运行确认通过
使用:/test src/auth.py
Skill 是一个 SKILL.md 文件 + 可选的子目录(references/scripts)。Claude Code 遇到匹配场景时自动加载,用完即弃,不占常驻上下文。
加载与否完全由 description 字段决定。Claude Code 扫描所有 skill 的 description,与当前任务匹配度高的自动加载。写好 description = 写好触发条件。
CLAUDE.md — 常驻加载,项目级通用规则
Skill — 按需加载,特定任务的专业知识
Hook — 确定性自动化,不需要 LLM 理解
Command — 手动触发的流程编排
---
name: python-testing
description: >
Python 单元测试最佳实践。
当用户需要写测试、运行测试、
或讨论测试覆盖率时触发。
---
# Python 测试规范
## 框架
- pytest(主框架)
- pytest-asyncio(异步测试)
## 规则
1. 测试文件命名: test_*.py
2. 每个函数至少 3 个测试用例
3. 使用 fixture 共享 setup
## 示例
(代码示例...)
主文件保持精简(< 200行)。详细参考放在 references/ 子目录,Claude Code 需要时自动读取。这控制了上下文消耗。
mkdir -p .claude/skills/my-first-skill
cat > .claude/skills/my-first-skill/SKILL.md << 'EOF'
---
name: commit-format
description: >
Git 提交消息格式化。当用户需要
提交代码、写 commit message 时触发。
---
# Conventional Commits 规范
格式: type(scope): description
type 可选:
- feat: 新功能
- fix: 修复 bug
- refactor: 重构
- docs: 文档
- test: 测试
- chore: 杂项
示例: feat(auth): 添加 JWT 刷新令牌
EOF
在 Claude Code 中说:
"帮我提交当前的改动"
观察 Claude Code 是否自动使用了 conventional commits 格式。
/plugin marketplace add anthropics/skills
浏览可用 skills,安装一个你觉得有用的。
.claude/skills/dax-patterns/
├── SKILL.md # 精简主文件
└── references/
└── dax-cookbook.md # 详细参考
SKILL.md 里只写概要,references/ 里放详细内容。Claude Code 需要时会自动读 references。
Model Context Protocol — 让 Claude Code 连接外部工具和数据的开放标准。装一个 MCP server,Claude Code 就多了一项能力(浏览器控制、数据库查询、API 调用等)。
Tools(模型控制)— Claude 自主决定何时调用。如:数据库查询、API 请求。
Resources(应用控制)— 只读数据,由应用决定何时提供。如:配置文件。
Prompts(预定义)— 指令模板,用户选择触发。
stdio — 本地进程通信。适合本地工具(文件系统、本地数据库)。
Streamable HTTP — 远程服务。适合云端 API、Web 服务。
Claude Code 生态已发现 28 个 CVE 和 655 个恶意 Skills。
5 分钟审计清单:
1. ☐ 所有 MCP server 来源可信?(只用官方或社区验证的)
2. ☐ Hooks 中的命令没有硬编码密钥?
3. ☐ CLAUDE.md 不含敏感信息?
4. ☐ Skills 来源已审查?
5. ☐ 权限模式设置正确?(不要全局 auto-approve)
Phase 1(第1-2周)— 基础:CLAUDE.md + 几个 Command
Phase 2(第3-4周)— 加 Hooks(自动格式化/安全守卫)
Phase 3(第5-6周)— 加 Subagents(多任务并行)
Phase 4(第7周+)— 加 MCP(外部工具集成)
每个阶段在生产环境跑 至少 2 周再进下一阶段。不要一次性配齐所有功能。
推荐从 filesystem 开始(最安全、最实用):
# 在 Claude Code 中
/mcp add filesystem --command npx --args @anthropic/mcp-filesystem --args /path/to/allowed/dir
验证:让 Claude Code 列出指定目录的文件。
结合 Day 1-6 的所有知识:
# 项目结构
.claude/
├── settings.json # Hooks (Day 4)
├── commands/
│ ├── review.md # Command (Day 5)
│ └── ship.md
├── skills/
│ └── commit-format/ # Skill (Day 6)
│ └── SKILL.md
├── agents/ # Subagent (Day 3)
│ └── code-reviewer.md
CLAUDE.md # 项目记忆 (Day 2)
HANDOFF.md # 上下文交接 (Day 1)
用 5 分钟审计清单检查你的 .claude/ 配置:
① 有没有硬编码的密钥?
② MCP server 都是可信来源吗?
③ 权限模式是 yolo(全局自动批准)吗?改回去。
用一个命令完成完整的开发循环:
/ship
这个命令应该:跑测试 → 代码审查(subagent)→ 格式化(hook)→ 提交(skill 格式化 commit)→ 推送。
如果全部跑通,恭喜——你已经建立了生产级 Claude Code 工作流。