从 Annotation Cycle 到 Hooks 系统,掌握现代 AI 编程的核心工作流
自从 Anthropic 推出 Claude Code 以来,这款 AI 编程助手已经成为开发者工具链中不可或缺的一环。但随着功能不断增加,如何高效使用它却成了一门学问。本文基于社区最新实践,为你梳理一套系统化的 Claude Code 使用方法论。
一、核心理念:Context 是你的最稀缺资源
很多开发者在使用 Claude Code 时犯的第一个错误,就是把 200K 的上下文窗口当成无限资源。实际上,质量在达到 20-40% 容量时就开始下降,远未到硬性限制。
60% 黄金法则
- 绝不让 context 超过 60% 容量
- Auto-compaction 在 ~83.5% 触发,会丢失 70-80% 的细节
- 一个任务一次对话,重新开始的成本(~20K tokens)远低于质量损失
信号识别:Context 正在 degraded
- 回复比平时更短
- 重复已经讨论过的信息
- 遗漏之前的指令
- Claude 询问你 already told 的内容
二、The Annotation Cycle:最可靠的实现流程
经过社区大量实践验证,"注释循环"是目前最高成功率的开发模式:
步骤详解
1. 要求 Claude 起草计划 → 不实现
2. 在编辑器中打开计划,标注错误之处
3. 发回:"address all notes, don't implement yet"
4. 重复步骤 2-3,直到每个决策都解决
5. 最后:"现在实现这个最终计划"
什么时候用?什么时候跳过?
| 场景 | 策略 |
|---|---|
| 复杂任务、多文件改动、需求模糊 | 必须使用 Annotation Cycle |
| 小改动、路径明确 | 可以直接实现 |
| 直接尝试结果混乱 | 重启,加上计划步骤 |
轻量级替代:按 Shift+Tab 两次进入 Plan Mode,适合较小任务。
三、CLAUDE.md 与 Skills 架构
CLAUDE.md 设计原则
这是 Claude Code 启动时自动读取的项目配置文件,遵循以下规则:
# 保持 200 行以内(每行都是全天消耗的 token)
# 使用 bullet points,避免段落
## 技术栈
- React 18 + TypeScript
- Tailwind CSS
- Next.js App Router
## 命名约定
- 组件:PascalCase
- Hooks:useCamelCase
- 工具函数:camelCase
## 强制规则
- 始终使用 @company/ui 的 <Button>
- 不要直接调用 console.log,使用 logger.ts
Skills 系统:可复用的领域知识
当解释同一件事三次后,就该创建一个 Skill:
最佳实践:
- 使用反向提示:让 Claude 阅读你的 skill 并找出歧义
- 包含 2-3 个具体示例 — Claude 对示例的锚定优于抽象指令
- 保持 500-2,000 tokens(未优化的 skill 可能超过 5K,加速 context rot)
- 存储在 GitHub 以便版本控制和团队共享
推荐项目结构
.claude/
├── settings.json # Hooks、权限配置
├── memory.md # 当前工作状态
├── knowledge-base.md # 系统级规则
├── commands/ # Slash 命令 (/deploy, /test)
├── skills/ # 领域知识文件
├── agents/ # 子代理定义
└── hooks/ # 钩子脚本
四、Hooks:100% 强制执行的规则
CLAUDE.md 的指令遵守率约 70%。对于关键规则,必须使用 Hooks。
Essential Hooks
1. 阻止凭据访问(立即设置)
#!/bin/bash
# .claude/hooks/pre-tool-use.sh
INPUT="$1"
if echo "$INPUT" | grep -qE '\.(env|key|pem|credentials)'; then
echo "BLOCKED: Cannot access credential files"
exit 1
fi
2. 阻止危险操作
# 阻止推送到 main
if echo "$INPUT" | grep -q "git push.*main"; then
echo "BLOCKED: Direct push to main is not allowed. Create a PR."
exit 1
fi
3. 自动格式化
# 每次编辑后自动运行 linter
# 将输出自动反馈给 Claude
⚠️ 陷阱警告
绝不要在 Claude 写文件中途阻止 — 这会破坏多步推理。让它写完,然后验证。
五、测试驱动开发(TDD)与 Claude Code
测试创造了一个外部真相源,不受 context 填充影响。
实施步骤
- 先写测试,确认全部失败
- 提交失败的测试作为检查点
- 要求 Claude 实现:
"实现功能直到所有测试通过。 重要:不要修改测试文件。" - 全部通过后再次提交
前端视觉验证
对于 UI 工作,给 Claude 一个设计参考 + 浏览器自动化:
- Claude 截图
- 与参考图对比
- 迭代直到匹配
六、模型选择策略
| 模型 | 最佳场景 | 备注 |
|---|---|---|
| Sonnet | 日常编码、实现、大多数任务 | 默认选择 |
| Opus | 复杂多文件推理、架构规划 | 更贵但更深度 |
| Haiku | 只读子代理、快速探索 | 便宜并行 |
Opusplan Mode: 自动用 Opus 做规划,切回 Sonnet 实现。
七、高级效率模式
The Document and Clear Pattern
当 session 变得沉重:
# 1. 将当前计划/进度 dump 到 markdown
> 把当前实现计划保存到 plan.md
# 2. 运行 /clear 重置
/clear
# 3. 重新开始,让 Claude 读取文件
> 阅读 plan.md,继续开发
Cost Optimization Through Model Switching
三阶段方法可降低 60-70% 成本:
- Claude CLI → 研究并创建
FEATURE_plan.md - 便宜模型 (GPT-4 Mini, GLM) → 实现计划
- Claude → 润色和最终调整
Parallel Sessions 模式
在独立的 git 分支上运行 4-5 个并行 session:
- 每个 session 有清晰的独立计划
- 比较不同实现方案
- 只适用于探索阶段
八、安全与会话卫生
安全配置
- 使用
/permissions白名单安全命令(停止为npm run lint点"approve") - 使用
/sandbox进行操作系统级隔离(限制写入、网络) - Bash 白名单:预批准安全命令,阻止危险命令 (
rm -rf,sudo) - 版本控制你的
.claude/配置用于审计
Session 管理
- 频繁提交;把每个 session 当作一次性的
- 在结束 session 前保存有价值的探索结果到文件
- 使用
Backlog.md集中任务 — Claude 可直接引用 - 保持 backlog 项目小而可执行;已完成项目单独归档
九、2026 推荐 Skills
根据社区热度,这些 Skills 值得一试:
- Vercel React Best Practices: 57 条性能优化规则(先消除 waterfalls 再考虑
useMemo) - Vercel Composition Patterns: 用 compound components 替代 boolean props
- Remotion Best Practices: 程序化视频生成(动画、音频、字幕)
- Git Workflow: 自动化的分支管理和 PR 创建流程
十、快速上手 Checklist
立即执行(30 分钟):
- 创建 CLAUDE.md,包含技术栈和约定
- 添加阻止凭据访问的 hook(5 分钟)
本周内:
- 创建 memory.md 用于 session 间持久化状态
- 为常见工作流构建命令(
/deploy,/test) - 设置
/safe-clear模式用于 context 重置
结语
Claude Code 不是魔法,而是一套需要正确使用的工具。最大的质量杠杆在于:给 Claude 项目上下文让它在启动时读取,而不是每次 session 重新解释一切。
掌握 Annotation Cycle、Context 管理和 Hooks 系统,你将从"AI 辅助编程"跃迁到"AI 原生开发"。
本文基于 Builder.io、Claudify.tech、Smart WebTech 等来源的最新实践整理。持续更新中。