# 我用Claude Code写了30天代码,总结了这10条血泪教训 上周三凌晨两点,我的CI pipeline炸了。 不是那种"跑一下就好了"的小问题——是17个test case集体挂掉,而本地跑得好好的。我盯着那个红色的failed看了大概10秒钟,然后打开终端敲了一行命令: ```bash claude "17个测试在CI上全挂了但本地正常,帮我看看GitHub Actions日志找到根因" ``` 然后我就去泡咖啡了。等我回来,它已经:读了workflow配置文件,发现是CI环境的Node版本和本地不一致,改了`.nvmrc`,提交了修复,还顺手把CI配置加了Node版本校验。 push,green。 那一刻我突然意识到——这玩意跟我之前用的所有AI编程助手都不一样。 ## 先说说Claude Code到底是个啥 Claude Code是Anthropic出品的命令行AI编程工具。你不需要打开IDE,不需要拖拽窗口,就在终端里跑。它能读你的整个代码仓库,改文件,跑命令,甚至帮你发PR。 安装就一行: ```bash # macOS / Linux curl -fsSL https://claude.ai/install.sh | bash # 或者用npm npm install -g @anthropic-ai/claude-code # Windows (PowerShell) irm https://claude.ai/install.ps1 | iex ``` 装完之后`cd`到你的项目目录,敲`claude`,就进去了。 说真的,一开始我是拒绝的。一个命令行的AI编程工具?我Cursor用得好好的,为什么要换?但后来发生了一件事改变了我的想法—— 我接手了一个8000多行的Python legacy项目。没有文档,原作者已经离职,变量名是那种`tmp1`、`tmp2`、`data_final_v3_real`的风格。Cursor的补全在这种项目面前基本废了,因为它看不到全局。而Claude Code直接扫描了整个项目,花了大概40秒理解了调用链,然后告诉我:"这个`data_final_v3_real`其实是用户行为日志的聚合结果,上游在`etl/pipeline.py`的第247行"。 那一刻我服了。 ## 教训1:CLAUDE.md不是可选的,是必需的 我第一周完全没用CLAUDE.md。结果就是——每次新对话,Claude都要重新理解项目结构,反复问一样的问题。浪费了大量token和时间。 CLAUDE.md就是Claude Code的"项目记忆"。你把项目约定、技术栈、代码规范写在里面,它每次启动都会自动读取。 后来我学乖了,花了一个下午整理出了这么一个模板: ```markdown # 项目:xxx ## 技术栈 - 后端:Python 3.11 + FastAPI + SQLAlchemy - 前端:React 18 + TypeScript + TanStack Query - 数据库:PostgreSQL 15 ## 开发命令 - 启动后端:`cd backend && poetry run uvicorn main:app --reload` - 启动前端:`cd frontend && npm run dev` - 跑测试:`pytest tests/ -xvs` - lint:`ruff check .` ## 代码规范 - 用ruff做linting和formatting - 所有API endpoint必须有类型标注 - commit message用Conventional Commits格式 ## 已知坑 - 本地PostgreSQL要用15版本,14的JSONB查询行为不同 - 不要动`legacy/`目录下的代码,那是有专人维护的 ``` **核心原则:不要写大段文档,写Claude容易犯错的点。** 一个好的CLAUDE.md不是面面俱到的手册,而是一份"避坑指南"。 有个细节很多人忽略了——CLAUDE.md要控制在200行以内,大约2000个token。太长了反而会让Claude的注意力被稀释,什么都看等于什么都不看。 ## 教训2:Plan Mode是你的好朋友(但我一开始不知道) Claude Code有两种模式:正常模式和Plan Mode(按Shift+Tab切换)。 我头两周压根不知道有Plan Mode这回事。每次上来就让它改代码,改完发现方向错了,回退,重新来。浪费了不知道多少时间。 后来我在Reddit上看到一个哥们说"complex task without plan mode is like driving blindfolded",我才开始用。 Plan Mode的核心思路是:**先让Claude思考,不要急着动手。** 实际操作: 1. 进Plan Mode 2. 告诉它:"我要给用户系统加一个邮箱验证功能,先别写代码,给我讲讲你的实现思路" 3. 它会分析现有代码,提出2-3个方案,列优缺点 4. 你选一个方案,它再细化 5. 退出Plan Mode,让它执行 这个过程看起来多了一步,但实际上**能避免70%的返工**。尤其当你在一个不熟悉的项目里工作时,让Claude先"逛逛"代码库再做决定,效果完全不一样。 对了,你可以用"think"、"think hard"、"think harder"来控制它的思考深度。遇到复杂的架构决策,来一个"think harder about this",你会发现它的分析质量明显上了一个台阶。 ## 教训3:Context窗口不是无限的,学会/clear Claude Code有200K token的上下文窗口。听起来很大对吧? 我之前做了一个重构任务,从上午10点一直聊到下午3点。到后面Claude开始"精神错乱"——忘记之前的约定,改了刚改过的代码,甚至开始建议我删掉它两小时前刚写的函数。 原因很简单:**上下文被撑爆了。** 200K token听起来多,但一个中等项目光文件内容就能吃掉一半。再加上对话历史,很容易就满了。 解决方案很暴力但很有效: 1. 当你感觉Claude开始"忘事"了,或者你看到context usage超过60%,直接`/clear` 2. 但清之前,让它先把当前进度写到一个markdown文件里(比如`PROGRESS.md`) 3. clear之后,开新会话,让它先读`PROGRESS.md`再继续 有人说用`/compact`也行。但我的经验是——`/compact`的压缩质量不稳定,有时候会丢关键信息。直接`/clear` + 文档化是最靠谱的做法。 ## 教训4:模型选择——不要所有活都用Opus Claude Code支持多个模型: | 模型 | 输入价格/MTok | 输出价格/MTok | 适合场景 | |------|-------------|-------------|---------| | Haiku | $1 | $5 | 快速探索、简单任务 | | Sonnet | $3 | $15 | 日常编码(默认) | | Opus | $5 | $25 | 架构设计、疑难杂症 | 默认用Sonnet,性价比最优。但很多人(包括我)一开始图省事全程Opus——直到账单来了。 我现在的工作流: - **Sonnet**:写业务代码、修bug、加测试、重构(日常80%的工作) - **Opus**:架构决策、跨模块重构、调试诡异bug、性能优化 - **Haiku**:快速问答、文件查找、简单格式化 切换模型用`/model opus`或`/model sonnet`,随时可以换。 一个省钱技巧:先用Sonnet跑,跑不通了再切Opus。很多时候Sonnet已经够用了,你不需要为简单的CRUD操作付Opus的价格。 ## 教训5:别把Claude当打字员,把它当架构师 很多人的用法是:"帮我写一个xxx函数"。这其实浪费了Claude Code最大的优势——它能看到你整个项目。 更好的用法是给上下文、给目标,让它自己决定怎么做: ``` ❌ 帮我写一个分页查询的函数 ✅ 用户列表页面需要分页功能,前端已经用TanStack Query了, 后端用的是FastAPI + SQLAlchemy。你看看现有的代码风格, 用一致的方式加上分页,记得加测试。 ``` 第二种写法为什么更好?因为Claude会: - 看你现有的API风格(REST还是RPC-like) - 看你用的ORM写法 - 看你测试是怎么组织的 - 然后用**和项目一致**的方式来实现 出来的代码不需要你大改就能merge。第一种写法?它给你生成一个完美但不沾地气的"教科书分页",你得手动改半小时。 ## 教训6:Hooks——用好了是神器,用不好是灾难 Hooks是Claude Code的自动化钩子,可以在特定事件(比如文件修改后、命令执行前)触发自定义脚本。 比如你可以配置:每次Claude改完TypeScript文件,自动跑一遍`ruff check`。 ```json // .claude/settings.json { "hooks": { "afterFileEdit": [ { "pattern": "*.ts", "command": "npx tsc --noEmit $FILE" } ] } } ``` 听起来很美好对吧?但这里有个坑——**如果hook本身执行慢或者输出量大,它会疯狂消耗token。** 我之前配了一个自动格式化hook,它在一次会话里跑了3轮,吃了160K token。是的,光hook就吃了80%的上下文。 **建议:** hook只做轻量级检查(类型检查、lint),不要放格式化和构建命令。格式化在commit前手动跑一遍就行。 ## 教训7:MCP让Claude Code如虎添翼 MCP(Model Context Protocol)是让Claude Code连接外部工具的协议。通过MCP服务器,Claude可以操作数据库、访问Jira、读Slack消息、甚至打开浏览器做UI测试。 我最常用的几个MCP服务器: ```bash # 用claude命令一键配置 claude mcp add playwright -- npx @anthropic-ai/claude-code-mcp-adapter @anthropic-ai/mcp-playwright claude mcp add github -- npx @anthropic-ai/claude-code-mcp-adapter @anthropic-ai/mcp-github ``` 加了Playwright MCP之后,Claude可以直接打开浏览器,点点看你的UI有没有问题。这个在写前端的时候太香了——以前写完前端代码要自己切过去看效果,现在直接跟Claude说"帮我看看按钮对齐了没",它自己打开浏览器检查。 ## 教训8:Git工作流——让Claude帮你commit,但别让它自己push ```bash claude "把我刚才改的认证模块提交一下,用Conventional Commits格式" ``` Claude Code特别擅长写commit message——因为它能看到完整的diff,理解每一处改动的原因。比你手动写`git commit -m "fix bug"`强一万倍。 但是!**不要让它自动push。** 我曾经让它自动push了代码,结果它把一个带`console.log`的debug代码推到了main分支。虽然很快回退了,但那次事故让我明白——push这个动作必须经过人的确认。 安全配置: ```json // .claude/settings.json { "permissions": { "allow": ["Read", "Write", "Bash"], "deny": ["git push"] } } ``` ## 教训9:Headless模式——CI/CD的好搭档 Claude Code不只能交互式使用,它还支持headless模式,可以直接嵌入你的自动化流程: ```bash # 分析日志 tail -200 app.log | claude -p "有异常吗?有的话给我发Slack" # PR review git diff main --name-only | claude -p "review这些文件的改动,重点看安全问题" # 自动翻译 claude -p "把新增的文案翻译成法语,然后提一个PR" ``` 我在团队里搭了一个GitHub Actions workflow:每次提PR自动触发Claude Code做代码review。虽然不能完全替代人工review,但它能先帮你过一遍,揪出明显的问题(硬编码密钥、未处理的异常、SQL注入风险之类的),节省了大量review时间。 ## 教训10:它不是万能的——知道什么时候该自己写 用了30天,我最深的感触是:Claude Code很强,但它不是银弹。 **它擅长的:** - 大规模代码重构(扫全仓库级别的) - 理解和解释legacy代码 - 写测试(尤其TDD流程下) - 排查诡异bug(它有耐心一个文件一个文件地翻) - 生成commit message和PR描述 **它不擅长的:** - 需要产品直觉的UI/UX设计 - 涉及业务领域知识的决策(它不了解你们公司的业务逻辑) - 超长上下文后的连贯性(超过200K就开始"失忆") - 对性能极度敏感的底层优化(它倾向于写"正确"的代码而非"快"的代码) 说到底,Claude Code是一个**放大器**——它放大你的工程能力,但不能替代你的工程判断。用得好,10倍效率提升不是吹的;用得不好,它会让你花更多时间在修它写的代码上。 ## 实用命令速查表 用了一个月,我把最常用的命令整理出来了: | 命令 | 用途 | |------|------| | `claude` | 启动交互式会话 | | `claude -p "问题"` | 单次提问模式 | | `Shift+Tab` | 切换Plan Mode | | `/model opus` | 切换模型 | | `/clear` | 清空上下文 | | `/cost` | 查看当前会话花费 | | `/compact` | 压缩上下文(慎用) | | `@文件名` | 引用特定文件 | | `# 内容` | 添加到持久记忆 | | `Esc Esc` | 回退上一次修改 | ## 价格方案一览 如果你准备入手,这里是最新的价格(2026年4月): | 方案 | 价格 | 说明 | |------|------|------| | Pro | $20/月 | 适合个人开发者,有使用时长限制 | | Max 5x | $100/月 | 5倍用量,适合重度用户 | | Max 20x | $200/月 | 20倍用量,适合全天候使用 | | API | 按token计费 | 适合自动化和CI/CD场景 | | Team | $30-45/人/月 | 团队版,有管理后台 | Pro方案对大多数个人开发者够用了。但如果你像我一样每天6小时以上泡在Claude Code里,Max 5x会更安心——Pro的限额在下午三四点就会用完。 --- 写了这么多,其实就一句话:**Claude Code改变了我的编码方式,但它改变不了编码的本质——你还是得知道你在做什么。** 工具再强,脑子不能偷懒。 对了,你们在实际使用中有什么心得?评论区聊聊,我挺想知道别人是怎么搭配工作流的——我现在还在探索最优解。
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐