搞懂这 11 个概念,你才算真正会用 Claude Code
🌈个人主页:一条泥憨鱼(欢迎各位大佬莅临)
🎬精选专栏:数据结构与算法,Java ,苍穹外卖日记,AI与Agent,JavaWeb
![]()
前言:
用了一段时间的Claude Code,同时总结了一下各领域大佬们的经验,容易踩的坑基本都在这篇文章里了。
先讲一件真事。有一次我让 Claude Code 帮我写一个用户登录模块,它写得很快,没什么问题。然后我说:把密码校验逻辑改成支持 bcrypt,它重写了整个 UserService,把我之前手动调的 JWT 过期时间也覆盖了。我当时没注意到,上线后所有用户两分钟后就被踢出登录。
我气的不是 Claude——是气我自己没先告诉它游戏规则。
Claude Code 不是一个聊天框。它是一个 Agent——有记忆机制、有权限体系、有工具调用能力、能并行干活。你把它当聊天框用,它就给你聊天框的水平。你把它当 Agent 用,它能一个人干一个模块。
好了,进入正题。
我们先看一眼这 11 个概念怎么串在一起的:
Claude Code Agent (主进程)
|
┌───────────┴───────────┐
记忆 & 配置层 执行 & 控制层
CLAUDE.md / 上下文 权限 / 计划模式
检查点 钩子 / 斜杠命令
|
能力扩展层
MCP / 技能 / 插件 / 子代理
左边是让 Claude 知道该怎么做,右边是控制 Claude 怎么做,下面是让 Claude 能做更多事。记住这个三层结构,后面的概念就好理解了。
01. CLAUDE.md —— 你的项目说明书
每次启动 Claude Code,它第一件事就是读项目根目录下的 CLAUDE.md。你可以把它理解成新员工的入职手册——公司技术栈、代码规范、什么不能做,写清楚了,不用每次嘴对嘴交代。
这是来自一个项目的 CLAUDE.md:
# 项目信息
Spring Boot 3.x + MyBatis-Plus 的电商后台。
# 技术栈
- Java 17
- Maven 构建
# 代码规范
- Service 方法加 @Transactional
- Controller 层不写业务逻辑
- 统一返回 Result<T>
- 命名全部驼峰,禁止缩写(DTO/VO/PO 除外)
# 禁止事项
- 不要改 pom.xml 里已有的依赖版本
- 不要删除 TODO 注释
- 生成 SQL 不要用 SELECT *
有了这个,你不用每次都说我们用 Java 17,不要 SELECT *。Claude 自己知道。
一个容易被忽略的点:CLAUDE.md 的内容会占上下文窗口。写得太多太啰嗦,反而挤掉了真正有用的对话空间。我的经验是重点规则控制在 20 条以内,够用就行。
02. 权限 —— 管好 Claude 的手
Claude Code 是真的能读写你硬盘上的文件、执行 Shell 命令的。这是它强的地方,也是你需要小心的原因。
权限系统说白了就是一句话:告诉 Claude 哪些文件能碰,哪些绝对不能碰。
{
"permissions": {
"allow": ["src/**", "test/**", "docs/**"],
"deny": [".env", ".env.production", "secrets/**", "*.pem"]
},
"requireConfirmation": ["git push", "rm -rf", "DROP TABLE"]
}
deny 的优先级高于 allow。所以你把 src/** 放进白名单,但把 .env 放进黑名单,Claude 永远碰不到你的密钥文件。
容易犯的错误:最初没把 *.pem 加黑名单,Claude 在做代码分析时把整个项目文件树输出了一遍,密钥文件名出现在日志里。不是什么大事故,但足够让我们把黑名单配置变成每个项目的第一个提交。
03. 计划模式 —— 先想清楚再动手
普通模式下,你一句话下去 Claude 就开始改代码。如果方向不对,等你发现的时候已经动了十几个文件。
计划模式就是:让 Claude 先把方案列出来,你确认了再执行。
- 在提示词里加一句:先出计划,不要改代码
- 用命令 /plan 帮我把 UserService 拆成读写分离的两个 Service
Claude 会输出类似这样的东西:
1. 分析现有 UserService 的接口定义
2. 创建 UserReadService(只读操作)
3. 创建 UserWriteService(写操作)
4. 更新所有调用方的引用
5. 运行单元测试验证
确认执行?
对于重构、跨模块改动、或者你不太确定要怎么实现的任务,5 分钟看计划比改崩了再回滚划算得多。但对于加一行日志这种小事就别开计划模式了——杀鸡用牛刀。
04. 检查点 —— AI 的「存档读档」
玩过 RPG 的都知道打 Boss 前先存档。检查点就是 Claude Code 的游戏存档。
# 手动存档
/checkpoint save "重构支付模块前的稳定版本"
# 查看存档列表
/checkpoint list
# 读档
/checkpoint restore "重构支付模块前的稳定版本"
底层就是 Git。Claude 帮你自动 git commit,改坏了就 git reset 回去。我对自己的要求是:只要改动超过 5 个文件,先打检查点。养成习惯就不容易翻车。
Claude 有时候也会自动打检查点——比如在执行高风险操作之前。但不要全指望自动的,重要的节点自己手动存一个。
05. 技能 —— 把重复操作封装成模板
我每周都要让 Claude 写 CRUD 接口。每次都得重复说:用 Result 返回格式、加参数校验、写好注释、Controller 路径用 RESTful 风格。说多了就很烦。
技能就是把这些重复指令打包成一个文件,以后一个命令就能调用。
# skills/crud-generator.md
## 输入参数
3. 生成 Service 接口 + ServiceImpl
4. 生成 Controller(Result<T> 返回)
5. 生成单元测试
## 规范约束
- 主键 @TableId(type = IdType.ASSIGN_ID)
- 软删除字段 is_deleted
- 时间字段 LocalDateTime
- Controller 路径 RESTful
/skill crud-generator entity=Product fields=name,price,stock,categoryId
一套代码直接生成,格式统一,团队成员之间也能共用。说到底是 DRY 原则——连跟 AI 的对话都别重复。
06. 钩子 —— 关键时机自动触发
"post-edit": [
{
"name": "auto-format",
"command": "mvn spotless:apply",
"when": "*.java files changed"
},
{
"name": "run-tests",
"command": "mvn test -q",
"on-failure": "notify-claude"
}
],
"post-task": [
{
"name": "send-summary",
"command": "node scripts/notify-feishu.js"
}
]
}
}
钩子最让我兴奋的用法是:Claude 写代码 → 自动跑测试 → 测试红了自己修 → 再跑 → 直到全绿。一个完全自动的 TDD 循环。不过前提是你的测试覆盖得够好,不然 Claude 修的可能是错的。
实用一点的场景:每次 Claude 完成任务后自动发一条飞书/钉钉通知。你不需要盯着屏幕,干完活自然收到消息。
07. MCP —— AI 工具调用的 USB 接口
MCP(Model Context Protocol)是 Anthropic 定义的一套标准协议。理解它的价值很简单:以前每个 AI 工具的接入方式都不一样,MCP 出来之后,工具实现一次,所有支持 MCP 的模型都能用。
MCP 之于 AI 工具调用,就像 HTTP 之于互联网通信。
举个最小实现:
@RestController
@RequestMapping("/mcp")
public class UserMcpServer {
@Autowired
private UserMapper userMapper;
@GetMapping("/tools")
public List<McpTool> listTools() {
}
@PostMapping("/call")
public McpResult callTool(@RequestBody McpCallRequest req) {
if ("get_user_count".equals(req.getTool())) {
long count = userMapper.selectCount(null);
return McpResult.success("当前用户总数:" + count);
}
return McpResult.error("未知工具");
}
}
有了 MCP,Claude 不只是生成代码的工具。它能查你的数据库、调内部 API、读 Confluence 文档、操作 Jira。MCP Server 怎么写、怎么部署,值得另开一篇文章来讲。
08. 插件 —— 现成的能力包
code-executor 让 Claude 运行代码看结果
file-reader 读 PDF、Word、Excel
browser-control 操作浏览器(点击、填表、截图)
git-manager 自动 commit、push、创建 PR
实际项目里两个一起用:私有业务数据走 MCP,通用能力走插件。不冲突。
09. 上下文 —— Claude 的白板,用完就擦
上下文窗口是 Claude 每次能记住的内容上限。把它想象成一块固定大小的白板——对话记录、代码文件、CLAUDE.md 都写在上面。写满了,最早的内容就被擦掉。
这就是为什么聊久了 Claude 突然忘了你一开始说的规范——你的 CLAUDE.md 被挤出去了。
几个好用的办法:
- 关键规则写进 CLAUDE.md,每次自动加载,不占对话空间
- 大任务拆成小任务,每个任务开新对话。别把所有东西堆在一个窗口里
- /compact 压缩历史,保留结论,清掉细节
- 喂代码只喂相关的那几十行,别把整个项目倒进去
10. 斜杠命令 —— 常用操作的快捷键
以 / 开头的快捷指令,跟 VS Code 的命令面板一个思路:
/plan 先出方案不动代码
/compact 压缩对话,释放上下文
/clear 清空对话,重来
/checkpoint 存档 / 读档 / 列表
/read 读取文件到上下文
/diff 查看当前改动
你可以自定义斜杠命令,放在 .claude/commands/ 目录下。团队常用的操作封装成命令,/gen-api、/review 直接调用。
11. 子代理 —— AI 多线程
子代理是 Claude Code 区别于普通 AI 助手最核心的能力:主 Claude 可以并行派出多个子实例,各自执行子任务,最后汇总结果。
说个实际场景。让 Claude 做一次全项目代码审查,检查安全漏洞、性能瓶颈和代码规范:
主 Claude(项目经理)
├── 子代理 A:扫 SQL 注入 / XSS / 权限绕过
├── 子代理 B:找慢查询 / N+1 / 内存泄漏
└── 子代理 C:检查命名 / 注释 / 代码结构
三个子代理并行跑,各自返回报告,主 Claude 汇总。
跟多线程的思路一样,但有本质区别:多线程共享内存,存在竞态;子代理每个实例有独立上下文,天然隔离。代价是子代理之间沟通成本高,而且每个子代理都烧 Token。
适合复杂的一次性大任务。简单任务别滥用——为了格式化一个文件开三个子代理,属于浪费。
常见问题
AI Agent 和普通 AI 聊天有什么区别?
普通聊天是一问一答,你没有问它不会动。Agent 是给你一个目标,它自己想办法完成——会制定计划、调用工具、处理异常。核心区别在于 Agent 有工具调用、循环执行和自主决策的能力。
MCP 和 Function Calling 有什么区别?
Function Calling 是厂商私有的,OpenAI 一套格式、Anthropic 另一套。MCP 是开放标准,工具实现一次,支持 MCP 的模型都能调用。跟 HTTP 一样,标准的意义在于通用。
上下文满了会怎样?
最早的对话被截断,Claude 开始失忆——输出质量下降,或者违反你之前定的规则。解法就几个:/compact 压缩、CLAUDE.md 存关键规则、大任务拆分、或者用 RAG 把文档放向量库里按需检索。
思路一样:并行、分解、汇总。区别在于多线程共享内存有竞态,子代理独立上下文天然隔离。子代理的调度由 AI 自己决定,多线程的调度是人写的代码。
建议的学习顺序:
CLAUDE.md → 权限 → 斜杠命令 → 计划模式 → 检查点 → 钩子 → MCP → 子代理。
不用一口气全学完。先用好前三层(CLAUDE.md + 权限 + 斜杠命令),你的效率就已经比 90% 的用户高了。后面的一步一步来,用到的时候再深挖。
现在,把 CLAUDE.md 写到你的项目根目录里去。不用很复杂,先写 10 条,够用了。
更多推荐



所有评论(0)