Table of contents
Open Table of contents
你在怎么用它?
装上 Claude Code,打开终端,输入”帮我写一个函数”,看着代码出来,按回车,完事。
如果你的使用方式和这个差不多,那你大概只用了它 20% 的功能。剩下的 80%,不是什么高深技巧,只是没人告诉你它们存在。
这篇文章把 Claude Code 的功能摊开来,按”大多数人知道 → 很多人不知道 → 几乎没人用”三层排,你对号入座。
第一层:你可能已经知道的
这层不细讲,点到为止。
对话改代码。说需求,它改文件。这是大多数人的起点,也是大多数人的终点。
读文件、跑命令。它可以直接读你项目里的文件,也可以跑 npm test、git diff 这类 shell 命令。不用你复制粘贴,它自己看。
解释报错。把错误信息直接丢给它,通常比 Stack Overflow 快。
第二层:很多人没发现的
这层是大多数人漏掉的部分,也是真正拉开差距的地方。
CLAUDE.md:给它写一份入职手册
你有没有遇到过这种情况:这次对话里跟它说了”我们用 Zod 做校验,不要用 Yup”,下次新对话又要重说一遍?
解决方案是在项目根目录放一个 CLAUDE.md 文件。Claude Code 每次启动都会自动读它,相当于给 AI 一份永久生效的入职文档。
## 技术栈
- TypeScript + React 19
- 校验:Zod(禁止用 Yup)
- 测试:Vitest
## 约定
- 不要修改 src/legacy/ 下的文件
- 禁止 console.log,用 logger 模块
关键原则:只写 AI 会猜错的东西。语言规范、框架选型它能从代码里看出来。“我们的测试不用 --watch”这种项目特有的约定,不写就一定猜错。
Plan Mode:先对齐,再动手
改一个功能涉及十个文件,AI 开始噼里啪啦地改,改到一半你发现方向不对——这种情况是可以避免的。
Shift+Tab 切换到 Plan Mode,AI 只输出方案,不写代码。你确认方向没问题再执行,省掉大量反复 undo 的时间。
把它理解成”工程师评审”:30 秒确认方案,比改完之后纠偏便宜得多。
多终端并发:真正的提速
Claude Code 支持同时开多个终端,各自处理独立任务。
比如你要重构 auth 模块:一个终端改实现,另一个同时写测试,第三个更新文档。三件事串行要等,并行跑只花最长那个的时间。
前提是任务之间真的没有依赖。如果任务 A 的输出是任务 B 的输入,强行并行两个 AI 会在同一个文件上互相覆盖,场面很混乱。拆任务的时候先想清楚依赖关系。
权限配置:不要每次都点确认
默认情况下,每个工具调用都要你手动允许。在熟悉的项目里,这会很烦。
在 .claude/settings.json 里配置一次,之后不再问:
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff*)",
"Bash(npm test*)",
"Bash(npm run lint*)"
]
}
}
只允许只读操作和确定性命令。git push、数据库写入、rm -rf 这类永远需要你确认,不要图省事全放开。
第三层:几乎没人用到的
Hooks:把重复动作变成系统行为
每次 AI 改完文件,你都要提醒它”别忘了跑 lint”。这句话说第二十次之后,你应该意识到可以自动化了。
Hooks 系统可以在特定事件触发时自动执行命令。在 .claude/settings.json 里:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "npm run lint --fix 2>/dev/null || true"
}
]
}
]
}
}
这个配置的效果:每次 AI 写或改文件,自动跑 lint 修复。你不说它也做。
除了 lint,常见的 Hook 场景还有:对话结束后自动跑测试,把结果写进文件供下次对话参考;或者记录 AI 执行过的所有命令,做审计用。
MCP:接入外部工具
MCP(Model Context Protocol,一套让 AI 连接外部工具的协议)可以让 Claude Code 直接操作数据库、读 Figma 设计稿、查 Linear 里的 issue,而不只是看你的本地文件。
你可以把它理解成给 AI 装插件。官方维护了一批常用的 MCP server,比如 Postgres、GitHub、Slack。在 ~/.claude/settings.json 里配置:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
配置完之后,你可以直接问它”用户表里有多少条记录”,它自己去查。
/ 斜杠命令
在对话框里输入 /,会出现一批内置命令。几个最有用的:
/clear:清除上下文,开始新任务。完成一个独立任务后养成用它的习惯,避免上下文里塞了太多不相关的历史。/compact:压缩上下文,保留关键信息但释放 token 空间,适合对话变长但还没结束的时候。/cost:看这次对话花了多少 token。
常见误区
误区一:上下文越长越好。
很多人觉得让 AI 看的背景越多越好,所以一个对话从头聊到尾。实际上上下文太长之后,AI 能”记住”的有效信息会变少,反而容易出现前后矛盾的情况。完成独立任务之后用 /clear 开新对话,是正确的做法。
误区二:AI 说对了就是对了。
Claude Code 会自信地给出错误答案。它不知道的东西,它不会说”我不知道”,它会猜,猜得很像真的。涉及业务逻辑、数据库 schema、线上配置这类 AI 没有直接信息的东西,必须自己验证。
误区三:描述越模糊越灵活。
“帮我优化一下这个功能”——AI 不知道优化是指性能、安全、可读性还是代码量,只能猜。你说得越精确,它跑偏的概率越低。好的描述应该包含:改什么、在哪里改、不要碰什么。
如果你只记住一句话
Claude Code 不是聊天框,是一个需要被配置和管理的工具——CLAUDE.md 决定它懂不懂你的项目,Plan Mode 决定它跑不跑偏,权限配置决定它能不能伤到你。
FAQ
Q:Claude Code 和直接在 claude.ai 里对话有什么区别?
最大的区别是 Claude Code 能直接操作你的本地文件和运行命令。claude.ai 里你要自己复制代码、自己改文件;Claude Code 直接改,改完你 review diff 就行。对开发者来说效率差很多。
Q:CLAUDE.md 会不会占用太多 token?
会,但值得。一份精简的 CLAUDE.md 通常在 500 token 以内,省掉的是每次对话重复解释约定的时间。写 CLAUDE.md 的原则是越短越好——只写 AI 会猜错的东西。
Q:多终端并发会不会产生冲突?
会,如果你没把任务拆干净。同一个文件被两个 AI 同时修改,后保存的会覆盖先保存的。拆任务时先想清楚依赖关系,文件级别的隔离最安全。
Q:Hooks 的命令如果跑失败了会怎样?
默认情况下会打断 AI 的操作流程。如果你希望失败了也继续,在命令末尾加 || true,让它强制返回成功。lint --fix 这类命令适合加,因为 lint 失败不应该阻止 AI 继续工作。