Appearance
Claude Code用了大半年,摸出5条原则
CLAUDE.md从500行砍到47行的实录
原则一:把上下文当内存管理
上下文过了四成,Claude开始变笨。过了六成,它会选择性漏掉指令。
原因:大模型一次能顾好的指令数量约一百多条,Claude Code自己的系统指令就占了不少。
| 错误做法 | 正确做法 |
|---|---|
| 一个会话干一整天 | 50%就手动/compact |
| 同一上下文修正错误 | Esc Esc回滚重来 |
| 所有规则堆CLAUDE.md | 控制在60行以内 |
| 主会话里反复文件读取+搜索 | 子代理隔离中间过程 |
推导技巧:
- 回退比纠正有效——走偏了按Esc Esc回滚
- 子代理的价值在上下文隔离,不在炫技
- CLAUDE.md是上下文预算表,不是文档库
原则二:让Claude自己验证自己
Boris说最重要的建议。加上自验证闭环,产出质量翻两三倍。
反馈回路对决:
❌ 人工循环:Claude写→人跑→人检查→人描述偏差→Claude理解→修改
✅ 自验证循环:Claude写→自己跑→自己看结果→自己改(几分钟一轮)推导技巧:
- 遇到报错,贴错误信息打一个字"修",别指导
- 让Claude写验证脚本自动检查输出
- Stop hook自动跑测试数据,结果不对自己修
原则三:并行不是多开窗口
Boris同时跑5个本地+10个网页端——真正的并行是把任务拆成相互独立的单元。
正确案例:重构代码管线时开3个会话
- 读代码、画数据流图、设计方案
- 写具体重构代码
- 以第三方身份审查代码(关键——审查不接触前面上下文)
推导技巧:
- 代码审查开多个子代理:查风格、翻历史、找bug
- git worktree让多个实例在不同分支并行
- 每个子任务有独立输入输出,不需要频繁同步
原则四:规则是长出来的,不是写出来的
CLAUDE.md进化史:
| 版本 | 行数 | 核心变化 |
|---|---|---|
| V1 | 498 | 疯狂塞规则——什么都有 |
| V5 | 180 | 发现200行后Claude选择性忽略 |
| V10 | 90 | 从"预设犯错"到"真犯了再记" |
| V18 | 50+拆分 | .claude/rules/按路径懒加载 |
| V25 | 50 | Gotchas成为最有价值的内容 |
| V30 | 47 | 每条规则都是被验证过的 |
现在47行结构:
- 8行:构建/测试命令
- 12行:跨语言通用规则
- 3行:PR规范
- 6行:MCP配置
- 18行:Gotchas——实际犯过的错
几条教训:
- CLAUDE.md是上下文预算表——每加一行就有多一行能被忽略
- 规则的价值跟精确程度成正比——"测试放tests/用test_前缀"远好于"写规范的代码"
- Gotchas是最值得维护的部分——每一条背后都是真实踩过的坑
- 别用CLAUDE.md代替Code Review——静态检查交给Linter
原则五:简单任务别上重武器
| 档位 | 时长 | 策略 |
|---|---|---|
| 一档 | ≤5分钟 | 直接说需求,不用任何编排 |
| 二档 | 半小时~几小时 | Plan Mode讨论→确认→执行 |
| 三档 | 跨天跨模块 | 工作流+Subagent+Worktree |
坑:容易把二档误判成一档,或三档误判成二档。如果不确定,升一档。
五条原则串起来
把Claude当成一个团队成员——它资源有限、需要反馈、能并行工作、会从错误中学习、但不该被过度设计。
工具用完会放下。团队成员你会不断改善协作方式。
关键词:Claude Code, 原则, 上下文管理, CLAUDE.md, 最佳实践
