前言
相信大家在刷技术社区的时候,都刷到过Claude Code的产品信息。"最强AI编程助手"、"SWE-bench跑出80.9%得分"等等标签,看起来非常诱人。
于是你麻溜地去安装了。
刚用一天,你可能就跟我当初一样发现了------这玩意它根本不听话。
让它改三个文件,它自己脑抽去改了十几个;让它加个功能,它把你核心代码都重构了;交代的编码规范,聊了十几轮它又开始用单引号;让它别动package.json,它顺手就给"优化"了六百多行diff。
今天,我就把那些真正让Claude Code"从失控到起飞"的技巧,一条一条分享给你。
希望对你会有所帮助。
更多项目实战在我的技术网站:susan.net.cn/project
一、Claude Code是怎么工作的?
有些小伙伴可能会觉得Claude Code就是一个"超级Copilot"------你发个指令,它写代码,仅此而已。
但Claude Code的底层运作方式跟大家想的完全不一样。
Claude Code的核心是一个极简的while循环------调模型、跑工具、把结果喂回去、再调模型。没有状态图、没有任务队列、没有预设pipeline。
决策逻辑只占整个代码库的1.6%,剩下98.4%全是"运行时护甲"(权限、压缩、工具、安全)。
整个循环的运行模式属于ReAct模式(Reasoning + Acting),每一轮循环分四步走:

这个循环的问题是:Claude Code按设计是无状态的。每一次新会话,它对项目一无所知。
每一次会话都以干净的上下文窗口开始。如果没有任何规则约束它,Claude的工作方式就是------读什么代码,就决定下一步写什么代码。
它根本不知道团队的规范是什么、不知道哪些文件不能碰、不知道项目的测试要求是什么。
"失控"是必然的,不是偶然。
解决方案:把规则写进CLAUDE.md,让Claude从第一条消息就懂你。
二、CLAUDE.md
它是让AI"懂你"的核心文件。
2.1 一句话说清CLAUDE.md的作用
CLAUDE.md是Claude Code在每个会话开始时读取的配置文件。
它在你的第一条消息之前就加载到系统提示词里,让Claude拥有关于你的项目的持久知识------你再也不用每次开会都从头交代一遍背景了。
关键认知 :CLAUDE.md在压缩(/compact)后会被从磁盘重新读取并重新注入。而你在对话框中口头交代的指令,压缩后就丢失了。
这也是为什么重要规则必须放在CLAUDE.md中,而不是反复在对话框里念叨。
2.2 四层配置体系
Claude Code会从多个位置读取CLAUDE.md,每一层有不同的作用范围:
| 层级 | 文件位置 | 作用范围 | 是否纳入版本控制 |
|---|---|---|---|
| Managed(受管策略) | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md |
组织级强制策略 | 由IT管理 |
| Global(全局) | ~/.claude/CLAUDE.md |
所有项目、所有机器 | 否(个人偏好) |
| Project(项目) | ./CLAUDE.md 或 ./.claude/CLAUDE.md |
当前项目,所有团队成员 | 是(必须提交) |
| Local(本地) | ./CLAUDE.local.md |
仅你个人对本项目的偏好 | 否(自动gitignore) |
项目根目录的./CLAUDE.md必须提交到Git仓库。
当新成员clone代码库并运行Claude Code时,他们获得跟团队其他成员一样的上下文。
2.3 用/init一键生成初稿
一个经常被忽略的命令:/init。
运行/init后,Claude Code会自动扫描本地代码库,分析项目结构、依赖项和技术栈特征,然后在项目根目录自动生成CLAUDE.md初稿。
这是让Claude"快速上手"一个陌生项目的最短路径。
2.4 Java项目的CLAUDE.md示例
CLAUDE.md建议控制在200行以内。
超过200行会消耗更多上下文且降低遵从度。用要点式,不用长段落。
下面是简洁的Java项目配置:
markdown
# Java Spring Boot 项目开发规范
## 构建与运行
- 使用Maven 3.9+构建:`mvn clean install`
- 本地开发运行:`mvn spring-boot:run`
- 跳过测试构建:`mvn clean install -DskipTests`
## 代码规范
- 所有REST API返回统一的Result<T>包装类
- 使用Lombok的@Data注解替代手写getter/setter
- Service层统一抛出BusinessException
- 严禁在Controller中写业务逻辑
## 测试要求
- 单元测试覆盖率不低于80%
- 核心Service方法必须有对应的单元测试
## 架构约束
- Controller → Service → Repository三层架构,禁止跨层调用
- 数据库表前缀统一为`t_`
## 目录访问限制
- 禁止修改`/src/main/generated/`目录下的任何文件
- 配置文件只读,不允许自动修改
有了这份配置,Claude就明白了------统一返回Result格式、禁止Controller写业务逻辑、测试覆盖率80%这些是硬性要求,不是可选项。
2.5 规则模块化:拆到.claude/rules/里
对于更大的项目,可以把不同领域的规则拆到.claude/rules/目录下:
bash
.claude/
├── CLAUDE.md # 主配置
└── rules/
├── testing.md # 测试相关
├── api-design.md # API设计规范
├── security.md # 安全约束
└── database.md # 数据库操作规范
路径过滤机制 :可以在规则文件的YAML前置字段中通过paths指定生效目录。例如api-design.md配置paths: "src/main/java/com/example/api/**",则该规则只在API层被读取时才注入上下文。
三、三大工作模式:告别"弹窗地狱"
我见过太多人把Claude Code当"黑盒",直接交给它去重构------结果代码炸了,到处是Bug。
这完全是因为没搞懂三种工作模式。
Shift+Tab可以循环切换三种模式:
| 模式 | 行为 | 最佳场景 | 提示标志 |
|---|---|---|---|
| Default(默认) | 每次编辑文件或执行命令都需要确认 | 敏感项目、首次接触代码库 | ? for shortcuts |
| Auto-Accept(自动接受) | 文件修改自动执行,shell命令仍需确认 | 批量改代码、生成业务代码 | accept edits on |
| Plan Mode(计划模式) | 只读分析,不修改任何文件 | 阅读陌生项目、架构分析 | plan mode on |
3.1 Plan Mode------最推荐的"保命模式"
Plan Mode是Claude Code里最被低估的功能。纯只读模式------AI只分析不动手。
我曾在一次涉及12个文件的Spring Security重构任务中,先跑Plan Mode让Claude梳理完整方案:
shell
> /plan
> 分析当前项目中Spring Security的配置,识别所有需要迁移到新版SecurityFilterChain的配置类,生成迁移计划
Claude读完所有相关文件,给你一份完整的迁移清单和步骤。
你预览确认没问题后,再切到Auto-Accept执行。
推荐工作流:Plan Mode理架构 → 确认方案 → Auto-Accept执行 → 切回Default保安全。
3.2 配置默认权限模式
默认安装几乎每次工具调用都要手动确认。有用户反映一个上午弹出47次确认提示。
打开~/.claude/settings.json,把默认模式改为acceptEdits(可信仓库)或plan(不熟悉的代码库):
json
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
3.3 Allow和Deny规则------把边界硬编码清楚
没有显式规则,Claude连git status这种基础命令都会停下来要许可。而且它还会悄悄读取.env和.ssh目录。
可以在settings.json中把边界硬编码清楚:
json
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(git *)",
"Bash(mvn *)",
"Bash(npm *)"
],
"deny": [
"Bash(rm -rf *)",
"Read(.env)",
"Read(.ssh/**)"
]
}
}
四、Hooks、Skills、Agents
让Claude变成"自带SOP的高级工程师"。
CLAUDE.md解决的是"让Claude懂项目"的问题。
Hooks、Skills、Agents解决的是"让Claude会做事、能守规矩、可并行干活"的问题。
我喜欢用一个团队管理的类比来理解这三者:
- Hooks = 自动化守卫。它不做决策,只在特定时机执行检查。就像公司的CI/CD流程------代码提交前自动跑lint,部署前自动跑测试。
- Skills = 知识注入。它把你的经验、规范、最佳实践打包成可复用的"知识包"。
- Agents = 并行执行。当任务可以拆分成多个独立子任务时,你可以派出多个专职Agent同时干活。
一句话总结:Hooks管"不能做什么",Skills管"应该怎么做",Agents管"谁来做"。
4.1 Hooks:让Claude自己守规矩
Hooks是Claude Code最被低估的功能之一。
它能在特定时机自动运行脚本------文件保存后自动格式化、危险命令执行前拦截、任务完成时发送通知。
更重要的是------它不占用上下文窗口。
Claude Code支持9种生命周期事件:
| 事件 | 触发时机 | 核心用途 |
|---|---|---|
| PreToolUse | 工具执行前 | 拦截危险操作、修改输入参数 |
| PostToolUse | 工具执行后 | 自动格式化、跑linter |
| UserPromptSubmit | 用户提交prompt时 | 注入上下文、安全警告 |
| Stop | 主Agent准备停止时 | 检查是否跑了测试/build |
| SubagentStop | 子Agent准备停止时 | 验证子任务完成度 |
| SessionStart | 会话开始时 | 加载环境变量、设置项目上下文 |
| SessionEnd | 会话结束时 | 清理临时文件、记录日志 |
| PreCompact | 上下文压缩前 | 保留关键信息不被丢弃 |
| Notification | 通知发送时 | 桌面提醒 |
Hooks配置在.claude/settings.json中:
json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"command": "npx prettier --write $FILE"
}
],
"PreToolUse": [
{
"matcher": "Bash(rm *)",
"command": "echo '危险操作被拦截' && exit 1"
}
]
}
}
配置效果:Claude每次写完代码自动运行Prettier格式化;执行rm *类危险命令时自动拦截。
4.2 Skills:可复用的"知识包"
Skills是Claude Code的一种扩展机制。
说白了就是个Markdown文件,你把"Claude该怎么做某件事"写进去,之后用/skill-name直接调用,或者Claude觉得合适的时候自己加载进来。
创建Skill的目录结构:
bash
.claude/skills/
└── api-design/
└── SKILL.md
SKILL.md示例:
markdown
---
name: api-design
description: 指导RESTful API设计规范,包括URL命名、HTTP方法选择、状态码使用
---
# API设计规范
## URL命名
- 使用名词复数:/api/v1/users, /api/v1/orders
- 资源嵌套:/api/v1/users/{userId}/orders
## HTTP方法
- GET:查询,幂等
- POST:创建,非幂等
- PUT:全量更新,幂等
- PATCH:部分更新,非幂等
- DELETE:删除,幂等
## 状态码
- 200:成功
- 201:创建成功
- 400:参数错误
- 401:未认证
- 403:无权限
- 404:资源不存在
- 500:服务器错误
使用方式:/api-design 帮我设计一个订单API,Skill自动加载。
4.3 Subagents:上下文隔离的"独立工人"
Subagent(子代理)的工作核心是"主从协同+独立隔离"。
本质是主代理通过Task工具spawn的独立AI实例。
它与主代理上下文完全隔离,避免相互污染。
为什么需要子Agent?
主会话会累积一切:文件读取、工具输出、中间推理、死胡同。
上下文窗口里的每个token都在花钱,而且挤占了真正需要的空间。
自动压缩在95%容量时触发,作为安全网没问题,但实际使用中会丢失信息。
子Agent的做法是:主Agent决定什么工作需要做,把范围严格限定的任务交给子Agent。
子Agent在自己独立的"画布"上操作。
完成后,只有结果返回给主Agent ,而那4000行的堆栈跟踪、15个grep结果、所有错误分支都留在子Agent的上下文中------永远不会污染主会话。

Claude Code内置了三个子Agent:
- Explore:只读权限,用Haiku模型。Claude需要搜索代码库但不想改东西时自动调用它,速度快、省钱
- Plan:只读权限。进入plan mode时使用
- general-purpose:通用子Agent
创建自定义子Agent :运行/agents打开管理界面,选择作用域(项目.claude/agents/或用户~/.claude/agents/),然后编写markdown文件定义行为。
五、额度管理
别让你的钱包偷偷流水。
Claude Code的额度消耗问题一直被用户诟病。
网上传过"3分钟消耗5小时额度"的事件。
下面几个技巧能让你少花冤枉钱:
5.1 配置Effort参数
2026年3月,Anthropic悄悄把默认effort从"high"降到了"medium"。
Agent会主动规避深度推理,输出质量明显下降。
修复方法:
bash
# 强制使用最高推理强度(会话内临时)
> /effort high
# 永久生效(推荐)
export CLAUDE_CODE_DEFAULT_EFFORT=high
5.2 关闭自适应思考
2026年2月起,Claude开始自主决定每轮分配多少算力。
遇到它判定为"简单"的任务,直接跳过思考步骤。
bash
# 给每一轮固定推理预算,不让Claude"自作聪明"
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1
5.3 子Agent单独配置模型
Claude Code一个任务可能自动开出3-5个子Agent。如果全部使用高端模型,账单会飙升。
解法:把子Agent的后端模型单独指向更便宜的模型。主Agent继续用推理能力强的模型。
bash
# DeepSeek API配置
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_API_KEY="sk-你的Key"
# 主Agent用V4-Pro保证推理质量
export ANTHROPIC_MODEL="deepseek-v4-pro[1m]"
5.4 日常省钱小技巧汇总
| 技巧 | 操作方法 | 效果 |
|---|---|---|
| 按任务切换模型 | /model sonnet日常用,/model opus复杂任务用 |
Opus比Sonnet贵5-10倍 |
主动执行/compact |
上下文超过100K时手动执行 | 避免自动压缩因超限损失更多token |
| 设置压缩阈值 | 在settings.json中配置 |
提前压缩避开损失窗口 |
| 避免Web搜索浪费 | 明确告诉Claude不要搜索 | 减少无效token消耗 |
| 利用Prompt Cache | 连续在同一会话内工作 | 再降约50-60%成本 |
六、2026年三大新功能
Dynamic Workflows(动态工作流)
2026年5月,Anthropic推出了动态工作流功能。
当单一智能体无法解决问题时,它可以把任务拆分成多个子任务,并在单个会话中通过数十到数百个并行子Agent来运行。
两种触发方式:
- 直接让Claude创建(例如"Create a workflow")
- 在effort菜单中开启Ultracode设置
/goal:不让任务半途而废
在/goal中设定条件后,Claude会持续工作直到任务完成。从Codex到Claude Code,三家顶级AI实验室在短短11天内都上线了同一条命令。
跨设备无缝切换
Claude App支持手机端查看和远程控制正在运行的Claude Code会话。
通过/remote-control生成QR码,用手机扫码即可实时控制。
七、完整实战工作流
我用一个完整的实战案例把上面所有技巧串起来:
场景:Spring Boot项目从Logback迁移到Log4j2
Step 1 - 初始化项目记忆
bash
cd /your-project
claude
> /init # 扫描代码库生成CLAUDE.md
Step 2 - 配置规则
编辑CLAUDE.md,补充硬性约束:
markdown
## 日志迁移约束
- 严禁修改任何业务逻辑代码,只改日志声明
- 必须保留原始日志级别(INFO/DEBUG/ERROR等)不变
- 如果使用了@Slf4j Lombok注解,改为显式声明Log4j2的Logger
Step 3 - Plan Mode确认方案
shell
> /plan
> 分析当前项目中所有使用@Slf4j的Java文件,生成完整的迁移清单
> 给我一个分批执行的迁移计划
Step 4 - Auto-Accept执行
shell
> /auto
> 按照迁移计划逐批执行,每改完一个文件立即执行mvn compile验证
Step 5 - 子Agent验证
markdown
> 启动一个子Agent分析整个项目的日志迁移情况
> 生成报告:已迁移文件列表、遗漏文件、问题文件
八、优缺点与适用场景
优点
- SWE-bench Verified得分80.9%,真实GitHub问题修复能力同类工具中第一
- 100万token超长上下文,放得下整个微服务代码库
- 支持跨平台(Windows/macOS/Linux)与多模型自由切换
- MCP协议 + Skills + 子Agent构建灵活可扩展的AI工具链
- Hooks零上下文成本自动化
缺点
- 响应速度差异:复杂推理时比Cursor/Copilot耗时更长
- 成本敏感:重度使用需要精细管理额度
- 规则文件不是万能的:有时仍会"自作主张",需要人工把关
适用场景
| 场景 | 推荐程度 | 理由 |
|---|---|---|
| 大型代码库重构/迁移 | 强烈推荐 | 超长上下文+子Agent隔离 |
| 跨系统异常排查 | 推荐 | 理解依赖链和调用链路的能力极强 |
| 快速原型/脚本开发 | 适度使用 | 启动和思考延迟较高 |
| 常规日常编码 | 不推荐 | Copilot/Cursor更高效 |
更多项目实战在我的技术网站:susan.net.cn/project
九、最后
大家现在应该明白了------Claude Code这个工具,不是拿到手就无敌的。
真正的价值在于通过工程化的手段(CLAUDE.md配置、三大工作模式、Hooks/Skills/Agents三驾马车)去约束它,让它成为真正懂你的项目、懂你的团队规范的AI伙伴。
如果你的项目还没配置CLAUDE.md,现在就可以花10分钟写一份。
从那以后,你再看到Claude的输出,就不会再把原因归结为"AI不靠谱"了。你会发现,AI一直在那里等你正确使用它。
配置文件、运行模式、权限规则------这几天的配置可能感觉有点麻烦,但是比起接下来每个月反复规范和管控成本,这点折腾真的不算什么。
如果觉得有帮助,欢迎点赞、在看、转发三连支持一波~