一Claude Code 到底是什么?
Cal 给出的心智模型:Claude Code 就像一个"什么都在终端里完成"的同事——从不开 GUI,所有操作都靠 bash、Vim、CLI。他举了个例子:作为初级工程师时,他常去找同事 Tony 帮忙调 bug。Tony 会"啪"地打开终端,一通 bash + Vim 操作,问题就解决了。Claude Code 就相当于把 Tony 永远摆在你电脑旁边。
Anthropic 的工程哲学:do the simple thing that works
Anthropic 自己定义的 Agent = 一份指令 + 一组强大的工具 + 让模型在循环里跑到它自己觉得"做完了"。Claude Code 就是这个定义的极简实现。
关键澄清:不做 codebase 索引、不做 embedding RAG。 Claude 像一个新入职的工程师一样主动探索——用glob/grep/find这种你我都会用的搜索工具,搜一轮、读一段、判断"还需要看什么",再搜一轮。这就是 agentic search:搜索本身是模型驱动的迭代过程。
二Claude Code 适合做哪些事?
Cal 用一句话总结:几乎什么都能干。 展开看,至少这五个场景特别合身:
| 场景 | 怎么用 | 为什么有效 |
|---|---|---|
| 探索陌生代码库 | "这个 feature 在哪里实现的?""结合 git 历史告诉我这段代码最近几周的演化故事" | agentic search + bash 同时具备 |
| 当思考伙伴 | "我想加这个 feature,别动手,先帮我搜一搜、给出 2~3 个方案" | 让 Claude 先 plan 再执行,便于人工审计 |
| 写新功能 / 维护老代码 | 在已有代码库里加测试、写 commit / PR message、修 bug | 单元测试覆盖率自然变高 |
| CI/CD 与运维 | 通过 Claude Code SDK 程序化集成进 GitHub Actions、内部脚本 | headless / non-interactive 模式 |
| 大版本迁移 / 重构 | Java 升级、PHP→React/Angular、大规模重命名 | 让原本"难启动"的项目变得可消化 |
Cal 补充:很多客户来跟我们讲的不是"帮我们写新 feature",而是"我们拖了好几年的老代码迁移,现在敢动了"。这是 Claude Code 给团队带来的心理预算层面的变化。
CLI 工具是它真正的超能力
因为 Claude 在终端里特别熟练,所以它顺手就能用 git、docker、gh、bq、kubectl——任何有 CLI 的工具它都会用。以前遇到棘手的 git rebase 冲突就头大,现在直接把情况描述给 Claude Code,让它收拾就行。
三最佳实践 #1:CLAUDE.md 文件
Claude Code 是个 agent,没有跨会话记忆。在同一个仓库里反复用、想让团队共享行为习惯——靠的就是 CLAUDE.md。
CLAUDE.md 里写什么
| 类型 | 例子 |
|---|---|
| 项目入口指引 | "测试这样跑:pnpm test -- --watch" |
| 代码地图 | "测试在 tests/,业务模块在 src/services/" |
| 风格 / 约定 | "禁用 any,用 unknown 配合 narrowing" |
| 内部 CLI 知识 | "我们用内部工具 coup 做 X、Y、Z" |
可以慢慢长起来——每次 Claude 走错路、你纠正它一次,那一条规则就值得沉淀到 CLAUDE.md 里。
关于多个 CLAUDE.md
- 默认只读当前目录那一份——因为 Anthropic 是 monorepo,早期一次性加载全部子目录的 CLAUDE.md 会爆上下文;
- 子目录的 CLAUDE.md 是 Claude 自己探索到了、判断相关,才会读;
- 想强制注入额外文件?在 CLAUDE.md 里用
@filename语法引用即可。
四最佳实践 #2:权限管理与速度的取舍
启动时 Claude Code 默认对工具行为分两档:
| 行为类型 | 默认权限 | 说明 |
|---|---|---|
| 读 / 搜索 | 直接放行 | 不打扰你 |
| 写文件 / bash / 改环境 | 弹确认 | "是 / 总是允许 / 否" |
调出更顺手的权限策略
Shift+Tab:进入 auto-accept 模式,让 Claude 一路自己走;- settings 里加白名单:例如
npm run test永久放行; - 配合
escape键,整个工作流可以做到"放手 + 关键节点拉回"的节奏。
工具接入:CLI 优先于 MCP
如果一个工具既有成熟的 CLI 又有 MCP server,优先装 CLI。 Claude 用 bash 调 CLI 比走 MCP 更直接、上下文也更省。
gh(GitHub CLI)就是经典代表。MCP 真正适合的是"内部没有 CLI、必须封装一层"或"多 Agent 共享治理"那种场景。
五最佳实践 #3:context 管理
Claude 模型默认 200K token 的上下文窗口。长会话里随着 Claude 来回搜、读、写,上下文会持续吃满。窗口底部右下会出现警告。这时候有两条路:
| 命令 | 适用场景 | 效果 |
|---|---|---|
/compact | 任务还没做完,需要保留思路 | Claude 自己总结「交接给下一个工程师」,新会话带着摘要继续 |
/clear | 换个新任务 | 全清,但保留 CLAUDE.md |
Cal 提到 Anthropic 团队专门花了很多精力调 /compact 的 prompt,目标是即使你把上下文用爆,compact 出来的摘要也能让下一段对话无缝继续。
六最佳实践 #4:先 plan 再做,看着 todo 不对就拍 escape
让 Claude 先做计划
打开 Claude Code,别说"修这个 bug"——先说:
"我有个 bug,先 搜一下原因,给我一个修复计划,先别动代码。"
这样你能审计它要做什么,比直接让它写完再 review 省事得多。
利用 todo 列表的"可观测性"
- 看到不对的条目,立刻按
Esc打断,让它改 todo; - 不要等它把错的事都干完了再回滚。
「smart vibe coding」的几个小习惯
| 做法 | 为什么有用 |
|---|---|
| TDD:让 Claude 改一点跑一遍测试 | 早期发现回归,避免一锅端 |
| 频繁 commit | 走偏了能快速回退 |
| 让 Claude 自己跑 type check 和 lint | 把"形式正确性"的负担甩给机器 |
| 喂截图 / 设计稿 | Claude 4 多模态,可直接看 mock 实现 UI |
七进阶玩法
多开 Claude 并行
Cal 自己最多并行 2 个,他认识的客户开过 4 个 Claude Code 并行——用 tmux 或多个终端 tab。挑战自己 try 一下,他说很 fun。
Escape 是你的好朋友
- 单按
Esc:打断当前操作,告诉 Claude 你要换方向; - 连按两下
Esc:跳回会话历史的更早位置,从那儿开始 fork 新分支(很多人不知道的隐藏功能)。
什么时候才该上 MCP?
bash + 内置工具搞不定 + 真的需要外部能力的时候。 不要一上来就堆 MCP server。
Headless / 程序化使用
通过 Claude Code SDK 让它无 UI 跑——CI、内部脚本、batch 处理。Cal 说这是 Anthropic 内部都还在摸索的方向:"希望你们也来试试,告诉我们能玩出什么花。"
八Claude 4 / 最新版本带来的新东西
| 新能力 | 怎么用 | 价值 |
|---|---|---|
/model 即时切换 | default(Sonnet)↔ Opus | 重活上 Opus,常规活省钱 |
| Tool call 之间能思考 | 任务里加一句"think hard" 触发 extended thinking | Claude 4 之前的模型只在最末端思考,4 系列开始在工具调用中间也思考——这才是真正用得上的地方 |
| VS Code / JetBrains 集成 | 编辑器知道你当前打开的文件,Claude 上下文里自然带上 | 减少手动指明文件 |
跟住更新
anthropic/claude-code 这个 GitHub 仓库的 changelog 是 Cal 自己每周必看的。Anthropic 出货很快,他本人都跟不上——所以养成每周扫一眼的习惯。
九Q&A 精华
Q:CLAUDE.md 里写的规则,Claude 当面违反怎么办?
Cal 的回答有两层:
- 这其实是模型问题,不是 prompt 问题。 比如老模型特别爱写解释 "what" 的注释,3.7 在系统提示里写了一大段"别留注释"都压不住;
- Claude 4 在"听话"这件事上明显变好。 早期 4 的测试者反馈是"我 CLAUDE.md 突然真的被认真执行了"。所以借升级 Claude 4 的机会,回头审视一下你 CLAUDE.md 里哪些规则可以删了——可能不再需要那么多防御式叮嘱。
Q:多 Agent 之间能不能共享上下文?比如 agent2、agent3 都用 agent1 的结果?
- 目前没有原生机制,团队还在想这件事;
- 务实做法:让 Agent 之间通过共享 markdown 文件交流。 比如让 A 写
ticket.md,再启动 B "读ticket.md,另一位工程师给你留了 todo"; - 长期可能会有更原生的产品形态,但今天的最佳实践就是用文件当通信总线。
Q:TDD 和 Claude 怎么配?
让 Claude 写 端到端、最简单的 3 个用例(happy path / 两种 error),别让它自己生成实现相关的细测——那种测试容易跑偏。只读 test 不读 implementation 就能给你足够信心。
十总结:从入门到熟练的清单
| 步骤 | 操作 | 关键点 |
|---|---|---|
| 1 | 用 CLAUDE.md 沉淀团队/项目知识 | 慢慢长,每次纠正一次就沉淀一条 |
| 2 | 调权限策略,允许常用命令 | Shift+Tab 自动通过,白名单常用操作 |
| 3 | 先 plan 再做,盯着 todo | 不对就 Esc,别等做完再回滚 |
| 4 | 长会话用 /compact | 压摘要继续,而不是开新会话从头来 |
| 5 | 加 CLI 工具,优先于 MCP | bash 能搞定的就不走 MCP |
| 6 | 多开 / headless 进阶玩法 | 并行 + SDK 自动化 |
| 7 | 每周看 changelog | Anthropic 出货快,跟住更新 |
一句话外带:Claude Code 不是给你一段代码,而是给你一位永远在终端里干活的同事。 和它一起工作的核心姿势,不是"指挥它写代码",而是"像带新人那样喂它上下文、定流程、看进度、关键节点拉回"。