说实话,Claude Code 刚火起来的时候,我是抱着怀疑态度试的。一个跑在终端里的 AI 编程工具,真的能帮我干活?结果第一次用就被打脸了——它确实能改代码、跑命令、读文件,像个随叫随到的结对程序员。但问题也随之而来:有时候任务跑到一半突然停住,有时候越改越乱,有时候明明给了很简单的需求,它却理解偏到姥姥家。
我一度以为是模型不够聪明,后来才想明白,大多数“翻车”根本不是模型的问题,而是使用方式的问题。Claude Code 是一个强大的 AGENT 工具,但它对输入质量极其敏感。同样一件事,用不同的方式描述,成功率可以差出好几倍。
这篇文章,我把自己这段时间踩坑踩出来的 11 个实战技巧整理出来。它们不是什么高深理论,全是能直接用的操作习惯。无论你是刚装好 Claude Code 的新手,还是已经用它写了几周代码但总感觉不稳定的人,照着调整一下用法,效果很快就能看到。
1. 重新定义“成功率”:先把目标写清楚再放手
我刚用 Claude Code 的时候,经常丢一句话就让它干活,比如“帮我写一个登录页”。结果它确实生成了登录页,但用了我不想要的技术栈,样式也跟项目完全不搭。那时候我只会抱怨它笨,后来才意识到,是我给的需求太模糊了。
Claude Code 不是你肚子里的蛔虫,它只能依据你提供的信息做决策。任务目标写得越具体,它的成功率就越高。我现在有个习惯:每个任务都会写一个“任务卡”,包含任务背景、输入输出、技术约束、规避事项、验收标准这五个要素。
举个例子,同样是写登录页,我现在的描述是:
text复制任务背景:现有项目中需要新增一个登录页面。
技术栈:Vue3 + TypeScript,样式沿用项目现有的 button 和 input 组件,不要新增任何 UI 库。
功能要求:支持记住密码,提交失败时保持输入内容不清空。
规避事项:不要改动 router 配置,不要创建新目录。
验收标准:npm run test 通过,新增两个用例覆盖登录成功和登录失败场景。
这样写完,它几乎不会跑偏。所以我把“成功率”重新定义为:任务完成后我几乎不需要手动改代码。想达到这个标准,第一步就是花 2 分钟把任务卡写好,而不是急着让它开工。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 控制上下文预算:别让历史记录挤爆工作记忆
很多人用 Claude Code 都会遇到这种情况:任务跑着跑着,它突然开始犯低级错误,或者完全忘记了最开始的需求。我排查了一圈,发现八成是上下文窗口被无关内容塞爆了。
最典型的场景是项目里有一个超大的配置文件,你让它直接打开看,结果它花掉了大量上下文去理解这个 2000 行的 JSON,真正写代码的时候,注意力已经被分散了。Claude Code 的上下文窗口再大也是有限的,而且它会保留前面所有的对话历史,这些历史既包括你的指令,也包括它读过的文件内容。
我的做法是:不要让 Claude Code 直接读取巨大的整个文件。如果它需要了解某个文件的关键部分,我会先用 grep 或者 sed 提取出相关的片段,再丢给它。比如:
bash复制grep -n "api" src/config/index.ts | head -50
这样传递的就是精华信息,而不是海量原始数据。另外,每次新任务尽量开一个新会话。上个任务的历史记录如果不清理,会一直占用上下文空间,导致后续任务越做越差。遇到这类情况,我一般也会用会话压缩功能,把它对历史对话的理解压缩成摘要,而不是逐字保留。这个操作能瞬间释放大量上下文空间。
3. 为任务写清楚“完成定义”:DoD 比什么都重要
这一条是从敏捷开发里借来的概念,但放在 Claude Code 身上意外好用。DoD 全称是 Definition of Done,就是“完成定义”。很多任务之所以失败,是因为 Claude Code 觉得自己干完了,但你觉得它根本没干完,两边对“完成”的理解不一样。
比如你让它改一个函数,它改完能跑就收工了。但你可能还希望它补上对应的注释、更新相关文档、确认没有破坏其他调用方。如果这些验收条件不提,它默认都是不需要做的。
我现在每次写任务,都会在末尾附加一段“完成标准”。例如:
text复制完成标准:
1. 现有测试全部通过;
2. 新增两个用例覆盖边界场景;
3. 代码通过 eslint 检查且有 warning 必须处理;
4. 如果有修改对外接口,需要更新对应的 README 文档。
这看起来只是多加了几行字,但它给 Claude Code 设定了一个明确的收尾动作。它会在任务结束前主动做自查,而不是“跑通了就当完事”。尤其是团队协作时,这个做法能减少很多扯皮。它做的事,不再只是“能跑”,而是“符合约定标准”。
4. 选对执行模式:先出方案,再动手改代码
Claude Code 有不同的执行模式,其中一个非常重要的操作是:先让它出方案,不要一上来就改代码。我见过太多人直接丢一句“帮我修一下这个 bug”,结果它想都没想就动手,删掉了几十行代码,最后发现改错了地方。
我最常用的流程是,如果面对的是一个不熟悉的代码库,或者改动范围比较大的功能,我一定会先让 Claude Code 进入“计划模式”。在这个模式下,它只读代码、梳理逻辑、输出改造方案,不会动任何文件。它会把方案拆成步骤列出来,比如“第一步修改 xxx 文件,第二步新增 xxx 函数,第三步调整 xxx 调用方”。
我拿到方案之后,先花一分钟过一遍,看它理解得对不对。如果理解有偏差,这时候纠正代价最小。确认无误后,再切到执行模式让它动手。这个“先想清楚再做”的流程,其实跟我自己写代码的习惯完全一样。唯一不同的是,Claude Code 想得比我还快,但如果没人拦着它,它也会像我年轻时候一样,想得不够深就冲出去写。
5. 把权限与工具使用策略前置:别让它为所欲为
Claude Code 的能力很强,它默认能执行终端命令、修改文件、安装依赖。但我很快就发现,如果不加约束,它会为了修一个小 bug,顺手升级一堆依赖,然后整个项目就炸了。这种事我碰到过不止一次。
所以我现在会在配置里提前设置好权限边界。常见的做法是在设置文件里配置 permissions 的 allow 和 deny 规则。两个我强烈建议的默认值:一是把无副作用的命令拉入白名单,比如 git status、npm test、npm run build;二是把破坏性较强的命令设置为“执行前必须经过我确认”,比如 npm install、rm -rf、git push。
另外一个很重要的习惯:它每次执行命令前,都会在终端里展示将要运行的命令。很多人习惯无脑回车,我就吃过这个亏。有一次它准备执行一条 git reset --hard 的命令,我差点回车,后来发现它竟然想重置我的本地修改。从那次以后,我每次都盯着它要执行的命令多看两秒,这比任何权限配置都重要。
给 Claude Code 设置权限,不是为了限制它的能力,而是为了把它可能造成的破坏控制在可控范围内。它能干的事很多,但并不意味着每件事都该在没有监督的情况下干。
6. 用 CLAUDE.md 固化项目偏好,让记忆持久化
你有没有这种感觉:每次开一个新会话,都要重新跟 Claude Code 解释一遍项目的情况。比如“我们用 pnpm,不用 npm”“组件放在 src/components 目录”“接口定义在 server/api 目录”。最开始我以为必须这样,后来才发现有个更聪明的办法:在项目根目录放一个 CLAUDE.md 文件。
这个文件是 Claude Code 的长期记忆。每次启动会话,它会自动读取这个文件,了解项目的架构、命令、约定和风格。这意味着你不需要在每个任务里重复这些信息,省下来的上下文可以全部用来处理真正的业务逻辑。
我项目里的 CLAUDE.md 长这样:
markdown复制# 项目约定
## 包管理
- 使用 pnpm,禁止使用 npm
- 新增依赖必须经过负责人确认
## 目录结构
- 组件放在 src/components,按功能分子目录
- 类型定义统一放在 src/types
- 工具函数放在 src/utils
## 代码风格
- TypeScript 必须开启 strict 模式
- 组件使用函数式写法,禁止 class 组件
- 样式使用 CSS Modules,不引入组件库
## 常用命令
- 开发:pnpm dev
- 测试:pnpm test
- 类型检查:pnpm typecheck
有了这个文件之后,Claude Code 每次开工前就像读了一遍项目手册。我实测下来,它的理解准确度提升非常明显,尤其是项目复杂度高的时候。这个文件里写的信息越多,它做出来的东西就越贴合项目原有的风格。
7. 设计输入指令的方式:给它鱼竿,而不是直接给鱼
Claude Code 处理自然语言的能力很强,但指令的结构化程度直接决定输出质量。我试过两种说法:一种很泛,比如“帮我优化一下这个函数”;另一种很具体,比如“打开 src/utils/format.ts,找到 40 到 60 行的 dateFormat 函数,把时间格式化逻辑抽成独立函数,并补充两个边界用例”。
结果毫无悬念,后者的成功率高出太多。原因是 Claude Code 本质上是个“按图施工”的工具,它需要一个清晰的位置、范围和目标,而不是一个模糊的方向。
另外,我还总结出一个重要的沟通原则:告诉它“不要做什么”,往往比“要做什么”更能防止翻车。比如“只修改 src/feature 目录下的文件,不要动 src/shared 里的公共组件”“重构时保持对外接口不变,不要改函数签名”。这些约束看起来像是在限制它,实际上是在帮它避开那些容易踩雷的区域。它知道了边界,就不会在无关文件里画蛇添足。
8. 用测试驱动方式验收代码:让测试做裁判
这是我个人最推崇的一条,也是让 Claude Code 产出稳定性的关键。每当我需要它实现一个新功能,我都会要求它先写测试,再实现功能。如果它不太理解这个功能,写测试的过程就会暴露出来。
你想想,如果让它直接写一个函数,它可能稀里糊涂就写完了。但如果让它先写这个函数的测试用例,它就必须仔细考虑函数的输入是什么、输出是什么、边界条件怎么处理。这个过程是在逼它把需求分析清楚。等测试写好了,再让实现去通过测试,整个任务的质量就有了客观标准。
我现在的习惯是,任务描述里固定带上这一句:为这个函数补充单元测试,覆盖成功路径、失败路径和边界条件。写完代码后,必须运行测试并展示结果。有测试做裁判,我就不需要逐行去审查它改了什么代码,只需要看测试是否通过,以及覆盖的场景是否符合预期。
这条方法对大型任务尤其有效。你不可能把每次改动都从头到尾读一遍,但测试可以告诉你它有没有破坏现有的功能。
9. 灵活切换模型与本地模型:别死磕一个模型
很多人对 Claude Code 有误解,觉得它是绑死某一个模型的。实际上,你可以通过配置对接不同的模型服务,比如用第三方切换工具在 DeepSeek、Qwen、GLM 等模型之间来回切换。如果你有本地硬件条件,也可以把 LM Studio 里跑的本地模型接进来用。
这个灵活性的价值在于,不同模型的特点不同,适合的任务也不同。写个简单的脚本,用本地小模型就够了,响应还快;做复杂的大型重构,可能旗舰模型的推理能力更强,更稳。我个人的习惯是:简单任务尽量用成本低的模型,复杂的任务才换上更强的模型。
本地模型还有一个额外的好处:敏感代码数据不需要离开机器。涉及隐私或者尚未公开的项目代码,放到本地模型上处理,心里踏实得多。不过要注意的是,本地模型对硬件要求不低,一般建议至少 16GB 内存,否则跑起来会非常吃力。
切换模型后,最好先用一个小样本任务测试一下它的工具调用能力。有些模型确实很强,但对 Claude Code 特有的工具理解不到位,用起来效果甚至会打对折。先测再上,是我摸出来的经验。
10. 交互时别急着打断:利用日志和进度反馈来引导
一开始用 Claude Code 的时候,我有个坏毛病:它每次输出一行,我就紧盯着看。只要看到它做的事情和我心里预期不一样,就立刻按中断,然后重新下指令。结果就是它反复被打断,每轮上下文都是半截子,任务越做越混乱。
后来我终于学会管住自己的手。Claude Code 在执行长任务时,终端里会有大量日志输出,它也会自己拆解步骤并逐步报告。我现在会先忍住,让它把当前的步骤走完。如果只是过程路径和我预想的稍有不同,但方向是对的,就让它继续。
如果真的发现它跑偏了,我也不会粗暴地打断,而是先问它一句:停一下,不要继续改代码,先告诉我你现在认为目标是什么。让它复述一遍自己的理解,然后再纠正偏差的部分。这个方法比我直接说“你错了”好用得多。因为它纠正的是一个具体的理解偏差,而不是盲目重启一次任务。频繁打断真的会严重影响成功率,这一点我体会太深了。
11. 从日志与复盘中学习:记录你的“失败模式”
这最后一个技巧,在我看来价值最高。你用了 Claude Code 一段时间之后,一定会积累出一些“失败模式”,比如“它总是忘了给新增函数加导出”“它总在修改公共组件的时候影响到其他页面”“它遇到时间格式化请求时,总喜欢自己造轮子而不是用项目里的工具函数”。
我之前总是把这些失败当成偶尔的运气不好,过两天又遇到同样的问题,才意识到不记录下来、不形成约束,问题就永远在那里。后来我开始做一个失败笔记,每踩一个坑就记录下来:这次为什么失败,是需求不够具体,还是权限不够,还是上下文被撑爆了。然后我会有意识地做两件事。
第一,把能固化的规则写进 CLAUDE.md。比如“新增工具函数必须导出”“禁止修改 src/shared 目录下的公共组件”“遇到日期格式化统一使用 utils/date.ts 里的函数”。
第二,把每次踩坑的教训变成任务卡里的一句规避说明。久而久之,我的任务描述越来越精确,Claude Code 的成功率也一路往上涨。它其实是一个学习系统,你的纠错反馈就是它的训练数据。你的输入质量提升一分,它的输出质量就提升三分。
如果你现在还在为 Claude Code 的不稳定而头疼,我强烈建议你先别急着换模型或者卸载工具,而是从任务描述、上下文管理、权限配置、验收标准这四个维度去调整自己的使用方式。我现在的默认工作流是:先写任务卡,切到计划模式确认方案,再切换到执行模式,用测试验收结果,最后把踩坑经验记录进 CLAUDE.md。整套流程跑下来,我的改代码一次通过率比最早高了何止一倍。
最后再多说一句,虽然现在很多人讨论 AI 编程工具会不会取代程序员,但以我自己的使用体验来看,现阶段它更像是要求极高管理水平的“资深实习生”。你的需求定义能力、上下文管理能力、复盘总结能力,直接决定了它的产出上限。把这些基本功练好了,它就能成为你极其靠谱的搭档。
