Claude Code + DeepSeek:AI 编程助手配置
本文摘要:本文是《Windows 下 AI 开发工具实战指南》系列第 3 篇,手把手教你从零安装 Claude Code,并配置 DeepSeek 作为模型后端,以极低成本在终端中获得强大的 AI 编程助手。文章覆盖了从安装配置、项目初始化(
/init)、常用指令速查,到高级功能(自动循环、Skills、MCP、Subagents、Hooks)的完整使用指南,并整理了新手常见踩坑与省钱实战技巧,助你快速上手并高效使用 Claude Code。
title: “Claude Code + DeepSeek:AI 编程助手配置”
description: “在终端中拥有 AI 编程助手:从零安装 Claude Code,配置 DeepSeek 作为模型后端。覆盖新手痛点、常见踩坑、省钱技巧、常用指令详解(init/loop/resume/模型配置/skill/mcp),以及真实场景最佳实践。”
keywords:
- Claude Code
- DeepSeek
- AI 编程助手
- 终端 AI
- Anthropic API
- DeepSeek API
- Claude Code 安装
- Claude Code 避坑
- CLAUDE.md
- MCP
series: “Windows 下 AI 开发工具实战指南”
series_order: 3
date: “2026-07-21”
prev: “02-wsl2-setup-advanced.md”
next: “04-hermes-agent.md”
系列第 3 篇 · 共 6 篇| ← 上一篇 | 下一篇 →
前两篇文章 我们已经把 WSL2 环境打磨得面面俱到。现在,是时候让它发挥真正的威力了——安装 Claude Code,接入 DeepSeek 模型后端,在终端中拥有一个全天候的 AI 编程助手。
3.1 为什么你需要 Claude Code
如果你遇到过以下场景,这篇文章就是为你写的:
- 接手陌生项目,半天看不懂架构:几万行代码,不知道从哪里开始读,问同事又不好意思总打扰
- 反复写样板代码:CRUD 接口、测试用例、配置文件……机械重复,浪费时间
- Debug 到崩溃:一个报错翻了 10 个 Stack Overflow 页面,试了 5 种方案都不对
- 想用 AI 编程工具但被价格劝退:官方 Claude Code 按 token 计费,复杂任务一个月轻松上百美元
- 用了 AI 工具但总觉得不好用:生成的代码不符合项目规范,上下文经常丢失,改了东墙塌西墙
Claude Code 是 Anthropic 推出的终端 AI 编程助手。与网页版聊天机器人不同,它能直接读取你的项目文件、运行命令、修改代码、执行测试——你描述想要什么,它自己探索、规划并实现。
借助 DeepSeek 提供的兼容 API,你可以用经济得多的成本获得同样的体验。这也是本系列选择 DeepSeek 后端的核心原因——避开高昂的官方定价,同时享受 Claude Code 的全部功能。
参考文档:Claude Code 快速入门 · 接入 DeepSeek | DeepSeek API 文档
3.2 从零安装 Claude Code
安装步骤
在 WSL 终端中执行以下命令,一键安装:
curl-fsSLhttps://claude.ai/install.sh|bash安装过程会自动完成依赖检查、下载和配置,无需手动干预。
安装常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
curl: command not found | 系统缺少 curl | sudo apt update && sudo apt install curl -y |
| 安装卡住不动 | 网络连接不稳定 | 检查 WSL2 网络配置,或配置代理后重试 |
permission denied | 权限不足 | sudo curl -fsSL https://claude.ai/install.sh | bash |
安装后claude命令找不到 | PATH 未更新 | 运行source ~/.bashrc或重启终端 |
| Node.js 版本过低 | Claude Code 需要 Node.js 18+ | 运行nvm install 18 && nvm use 18升级 |
小白提示:如果安装后运行
claude报错,先运行claude doctor(安装诊断命令),它会告诉你具体哪里出了问题以及如何修复。
3.3 迁移至 DeepSeek 后端
为什么要用 DeepSeek 而不是官方 API
官方 Claude API 按 token 计费,一个复杂重构任务跑下来,账单可能让你怀疑人生。很多用户反馈第一个月就花了 50-200 美元。而 DeepSeek 提供兼容 API,价格大幅降低,同时完全兼容 Claude Code 的所有功能。
获取 API Key
前往 DeepSeek Platform 创建你的 API Key。注册后会赠送一定额度的免费体验金,足够你完成本文的所有练习。
配置环境变量
Linux / Mac 用户(在 WSL 中操作):
exportANTHROPIC_BASE_URL=https://api.deepseek.com/anthropicexportANTHROPIC_AUTH_TOKEN=<你的 DeepSeek API Key>exportANTHROPIC_MODEL=deepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flashexportCLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flashexportCLAUDE_CODE_EFFORT_LEVEL=maxWindows PowerShell 用户:
$env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"$env:ANTHROPIC_AUTH_TOKEN="<你的 DeepSeek API Key>"$env:ANTHROPIC_MODEL="deepseek-v4-pro[1m]"$env:ANTHROPIC_DEFAULT_OPUS_MODEL="deepseek-v4-pro[1m]"$env:ANTHROPIC_DEFAULT_SONNET_MODEL="deepseek-v4-pro[1m]"$env:ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash"$env:CLAUDE_CODE_SUBAGENT_MODEL="deepseek-v4-flash"$env:CLAUDE_CODE_EFFORT_LEVEL="max"持久化配置(重要):上面的
export命令只在当前终端有效,关掉就没了。把它加到~/.bashrc里才能一劳永逸:echo'export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic'>>~/.bashrc# 其他变量同理,逐条追加source~/.bashrc
环境变量说明
| 变量名 | 作用 | 小白理解 |
|---|---|---|
ANTHROPIC_BASE_URL | API 地址 | 告诉 Claude Code "去 DeepSeek 问问题"而不是去官方 |
ANTHROPIC_AUTH_TOKEN | API 密钥 | 你的 DeepSeek 门禁卡 |
ANTHROPIC_MODEL | 默认模型 | 平时用什么模型回答 |
ANTHROPIC_DEFAULT_OPUS_MODEL | Opus 级模型 | 最难的任务用什么模型 |
ANTHROPIC_DEFAULT_SONNET_MODEL | Sonnet 级模型 | 日常任务用什么模型 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Haiku 级模型 | 简单快速任务用什么模型 |
CLAUDE_CODE_SUBAGENT_MODEL | 子代理模型 | 后台帮忙干活的"助手"用什么模型 |
CLAUDE_CODE_EFFORT_LEVEL | 推理努力等级 | max = 让 Claude 多想想再动手 |
配置常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
启动后报401 Unauthorized | API Key 错误或过期 | 检查 Key 是否完整复制,有无多余空格 |
启动后报403 Forbidden | 账户余额不足 | 去 DeepSeek Platform 充值或确认免费额度是否用完 |
| 回答内容看起来像官方 Claude | 环境变量未生效 | 运行echo $ANTHROPIC_BASE_URL确认是否指向 DeepSeek |
| 中文回复质量差 | 模型语言偏好问题 | 在 CLAUDE.md 中写明 “使用中文回复” |
| 连接超时 | 网络问题 | 检查 WSL2 能否正常访问外网 |
3.4 启动与验证
配置完成后,进入你的项目目录并启动:
cd/path/to/my-project claude首次启动时,Claude Code 会进行一些初始化操作。如果一切正常,你会进入交互式终端界面。试着输入:
你好,请用中文介绍一下你自己,以及你能帮我做什么如果返回了来自 DeepSeek 模型的回答,说明配置成功!
小白提示:第一次进入项目时,Claude Code 可能会询问是否信任当前目录。选择 Yes 即可——这只是一个安全确认,表示你允许 Claude Code 读取这个项目的文件。
3.5 新手第一步:/init 让 Claude 认识你的项目
痛点场景
“我装好了 Claude Code,兴冲冲地让它帮我改代码,结果它完全不了解我的项目——用了什么框架、怎么跑测试、有哪些特殊约定。每次都要从头解释,太累了。”
解决方案
进入项目后,第一件事就是运行/init:
/init它会自动扫描你的项目结构,检测构建系统、测试框架和代码模式,然后生成一份CLAUDE.md文件。这个文件相当于 Claude 的"项目说明书",每次对话开始时都会自动读取。
CLAUDE.md 怎么写才对
很多新手会犯一个错误:把 CLAUDE.md 当成什么都往里塞的"百科全书",写了 500 甚至 800 行。结果每次对话都把这 800 行塞进上下文,白白浪费大量 token,Claude 反而开始忽略后半段的重要内容。
核心原则:只写 Claude 读代码读不出来的信息,控制在 100-200 行以内。
| 应该写 | 不应该写 |
|---|---|
构建命令:npm run build、mvn clean test | 标准语言语法(Claude 本来就知道) |
| 项目特殊规范:“用 MyBatis 不用 JPA” | 通用编码规范(如"写干净的代码") |
不能动的文件:src/legacy/DataMigration.java | 详细的 API 文档(改为链接到文档) |
分支命名规范:feature/xxx、fix/xxx | Claude 读代码就能推断出的架构 |
| 开发环境怪癖:“需要先启动 Redis” | 经常变化的信息 |
一份好的 CLAUDE.md 示例:
# 代码风格 - 使用 ES modules (import/export),不用 CommonJS (require) - 优先解构导入:import { foo } from 'bar' # 工作流 - 改完代码后运行 typecheck - 优先跑单个测试,不要跑整个测试套件 # 项目约定 - 数据库操作只用 Prisma,不要直接写 SQL - 所有金额用整数(分为单位),不要用浮点数 - 错误返回格式:{ success: false, error: string }小白避坑:判断一条规则该不该写进 CLAUDE.md,问自己一个问题——"删掉这条,Claude 会做出不同的决定吗?“如果答案是"不会”,就删掉。
参考文档:Claude Code 最佳实践
3.6 常用指令速查
Claude Code 的指令以/开头,在会话中输入即可执行。以下按你遇到的问题来分类整理。
场景一:会话太长,Claude 开始"忘事"
“对话进行到第 30 轮,Claude 突然把我们二十条消息前说好的’所有金额用整数’给忘了,又生成了用浮点数处理价格的代码。”
这是 Claude Code 最常见的痛点。Claude 没有真正的"记忆",它只能看到上下文窗口里的内容。对话越长,早期的内容越容易被"挤出"注意力范围。
| 指令 | 解决什么问题 | 使用时机 |
|---|---|---|
/compact [说明] | 总结历史对话,释放上下文空间 | 对话超过 20 轮,或 Claude 开始犯低级错误 |
/clear [名称] | 清空上下文开始新对话(旧的还能找回) | 当前任务做完,要开始完全不相关的新任务 |
/context | 查看上下文用了多少、被什么占了 | 感觉 Claude 响应变慢或变笨 |
/resume [名称] | 恢复之前的会话 | 想回到之前中断的任务继续 |
省钱技巧:每完成一个子任务就/compact一次,能清掉 50-70% 的冗余上下文。一个 session 跑 3 小时不清理,后半段的 token 基本都在烧钱。
关键约束重申:如果发现 Claude 开始忘事,最有效的操作是在当前位置重新声明关键约束——因为最新的消息注意力权重最高:
提醒一下关键约定: - 金额用整数(分为单位) - 错误返回格式:{ success: false, error: string } 继续之前的任务。场景二:任务太大,不知道从哪下手
“我想给项目加一个 OAuth 登录功能,但不确定要改哪些文件,怕 Claude 一通乱改。”
| 指令 | 解决什么问题 | 使用方式 |
|---|---|---|
/plan [描述] | 进入规划模式,只分析不改动 | /plan 在 user-service 里添加手机号登录功能 |
/branch [名称] | 从当前对话分叉,保留原始进度 | 想尝试不同方案但不丢失当前路径 |
推荐的四步工作流:
# 第 1 步:探索(Plan 模式下,只读不改) > 读一下 src/auth 目录,理解现有的登录和 session 管理方式 # 第 2 步:规划 > 我想加 Google OAuth,需要改哪些文件?session 流程是什么?做个计划 # 第 3 步:实现(退出 Plan 模式) > 按你的计划实现 OAuth 流程,写测试,跑一遍 # 第 4 步:提交 > 用描述性的 commit message 提交,并创建 PR小白提示:按
Shift+Tab可以快速切换 Plan 模式。在 Plan 模式下,Claude 只读代码不做任何修改,你可以安全地让它分析。看完计划后按Ctrl+G可以在编辑器中直接修改计划,再让它执行。
场景三:需要切换模型或调整推理强度
“简单任务用强模型太浪费钱,复杂任务用弱模型又搞不定。”
| 指令 | 作用 | 适用场景 |
|---|---|---|
/model [别名] | 切换模型 | 简单任务切 haiku 省钱,复杂任务切 opus |
/effort [等级] | 调整推理努力 | 简单改动用 low,架构设计用 max |
模型选择速查:
| 模型别名 | 适合什么 | 成本 |
|---|---|---|
haiku | 简单快速任务、格式化、重命名 | 最低 |
sonnet | 日常编码、写功能、改 Bug(默认推荐) | 中等 |
opus | 复杂推理、架构设计、疑难 Bug | 较高 |
opusplan | 规划用 Opus,执行用 Sonnet(省钱兼顾质量) | 中等 |
推理努力等级:low→medium→high→xhigh→max
省钱技巧:日常编码用
sonnet+medium,只有遇到疑难 Bug 或架构设计时才临时切到opus+max。任务做完后切回来,别一直开着最高档烧钱。
参考文档:模型配置
场景四:提交前检查代码质量
| 指令 | 作用 | 使用场景 |
|---|---|---|
/diff | 查看未提交的代码变更 | 提交前检查改了什么 |
/code-review | 审查差异中的错误和优化点 | PR 前的质量检查 |
/code-review --fix | 审查并自动修复问题 | 快速清理代码 |
/batch <指令> | 大规模并行代码变更 | 跨多文件的重构、框架迁移 |
场景五:遇到问题需要排障
| 指令 | 作用 | 使用场景 |
|---|---|---|
/doctor | 诊断安装和配置问题 | 安装后验证、遇到异常行为 |
/debug [描述] | 启用调试日志并排查 | 运行时报错需要定位原因 |
/feedback | 提交反馈或报告 Bug | 发现 Claude Code 自身的问题 |
其他常用指令
| 指令 | 作用 |
|---|---|
/memory | 编辑 CLAUDE.md,管理自动记忆 |
/mcp | 管理 MCP 服务器连接 |
/permissions | 管理工具权限的允许/拒绝规则 |
/export [文件名] | 导出当前对话为纯文本 |
/rewind | 回退到之前的对话和代码状态 |
/help | 显示帮助和所有可用命令 |
3.7 自动循环:让 Claude 无人值守工作
痛点场景
“部署后要反复检查 CI 是否通过、测试有没有挂,一直盯着屏幕等,太浪费时间了。”
/loop:按时间间隔重复执行
# 每隔 5 分钟检查部署是否完成/loop 5m checkifthe deploy finished# 让 Claude 自动调整节奏,反复跑测试直到全部通过/loop run tests and fix any failures典型使用场景:
- CI 监控:
/loop 10m check CI status and fix failing tests— 每 10 分钟检查一次 CI,失败了自动修复 - 反复调试:
/loop run the test suite and fix failures until all pass— 跑测试、修 Bug、再跑,循环直到全过 - 文档同步:
/loop 30m check if API docs need updating based on code changes— 定期检查文档是否需要更新
/goal:按条件判断是否完成
# 设置目标:所有测试通过/goal all tests pass# Claude 会持续工作直到目标达成implement the new feature,writetests, and iterateuntileverything passes区别:
/loop按时间间隔重复执行,/goal按条件判断是否完成。两者可组合使用——/goal在每次迭代后检查条件,Claude 继续工作直到条件成立。这样你就可以去喝杯咖啡,回来发现任务已经完成了。
3.8 Skills:教 Claude 你的项目规范
痛点场景
“每次让 Claude 写 API,它都不按我们的规范来——URL 路径用驼峰、JSON 用下划线、不分页……每次都要纠正一遍。”
解决方案:创建 Skill
Skills 是 Claude Code 的知识扩展机制。你创建一个SKILL.md文件,写上项目规范,Claude 会在相关时自动加载并遵守。
# 创建 skill 目录mkdir-p.claude/skills/api-conventions# 编写 SKILL.mdcat>.claude/skills/api-conventions/SKILL.md<<'EOF' --- name: api-conventions description: REST API 设计规范,编写 API 时自动应用 --- # API 设计规范 - URL 路径使用 kebab-case(如 /user-profiles) - JSON 属性使用 camelCase(如 userId) - 列表接口必须支持分页 - API 版本放在 URL 路径中(/v1/、/v2/) EOF创建后,Claude 在编写 API 代码时会自动参考这些规范,不需要你每次提醒。
两种 Skill 类型
参考型(自动触发)——提供知识供 Claude 参考:
---name:api-conventionsdescription:API 设计规范---# Claude 在相关场景自动加载任务型(手动调用)——定义可重复执行的工作流,加disable-model-invocation: true防止自动触发:
---name:fix-issuedescription:修复 GitHub Issuedisable-model-invocation:trueargument-hint:"[issue-number]"---1. 运行 `gh issue view $ARGUMENTS` 获取详情 2. 搜索相关代码 3. 实现修复 4. 运行测试验证 5. 提交并创建 PR使用方式:/fix-issue 1234— 一个命令完成从看 Issue 到提 PR 的全流程。
动态上下文注入
Skill 支持!`命令`语法在加载时执行命令并注入结果,让 Skill 内容随实际情况变化:
---description:总结未提交的变更---## 当前变更!`git diff HEAD`## 指示总结上述变更,标记任何风险内容。参考文档:Skills
3.9 MCP:让 Claude 直接连你的数据库和工具
痛点场景
“让 Claude 查一下数据库里的数据,它说它连不了。我只能自己跑 SQL,把结果复制粘贴给它。太麻烦了。”
“我想让 Claude 从 Jira 里看需求、从 GitHub 上看 PR 评论、从 Sentry 里看错误日志……每次都要手动搬运数据。”
解决方案:MCP 服务器
MCP(Model Context Protocol)让 Claude Code 直接连接外部工具和数据源,无需手动复制粘贴。
# 连接 Notionclaude mcpadd--transporthttp notion https://mcp.notion.com/mcp# 连接 GitHub(带认证)claude mcpadd--transporthttp github https://api.github.com/mcp\--header"Authorization: Bearer your-token"# 连接本地 PostgreSQL 数据库claude mcpadd--envDB_URL=postgres://localhost/mydb\--transportstdio postgres -- npx-ypostgres-mcp-server管理 MCP 服务器
claude mcp list# 列出所有服务器claude mcp get github# 查看详情claude mcp remove github# 删除/mcp# 会话中查看连接状态三种安装范围
| 范围 | 命令 | 谁能用 |
|---|---|---|
| 本地(默认) | claude mcp add -s local ... | 仅你在当前项目 |
| 项目 | claude mcp add -s project ... | 团队所有人(通过 .mcp.json 共享) |
| 用户 | claude mcp add -s user ... | 你的所有项目 |
连接后能做什么
- “从 Jira Issue ENG-4521 获取需求并实现,然后在 GitHub 上创建 PR”
- “查询 PostgreSQL 数据库,找出使用该功能的 10 个用户”
- “检查 Sentry 中的错误,修复最严重的那个”
参考文档:MCP
3.10 Subagents:让助手有"助手"
痛点场景
“让 Claude 探索一个陌生模块,它读了 50 个文件,把我的上下文窗口全占满了。之后做什么都受影响。”
解决方案
Subagents 在独立的上下文中运行,读取的文件不会污染你的主对话。主会话只收到最终结论。
mkdir-p.claude/agentscat>.claude/agents/security-reviewer.md<<'EOF' --- name: security-reviewer description: 审查代码安全漏洞 tools: Read, Grep, Glob, Bash model: opus --- 你是一名资深安全工程师。审查代码中的: - 注入漏洞(SQL、XSS、命令注入) - 认证和授权缺陷 - 代码中的密钥或凭证 - 不安全的数据处理 提供具体行号引用和修复建议。 EOF使用方式:直接告诉 Claude “用 subagent 审查这段代码的安全问题”。
Writer/Reviewer 模式:一个 Session 写代码,写完用另一个 Subagent 来 Review。因为 Reviewer 没有参与写代码,不会带入"我觉得这样写是对的"的偏见,Review 质量更高。
省 token 技巧:凡是"先搞清楚某件事,再告诉我结果"的任务都适合用 Subagent。子 Agent 读了 100 个文件也不影响你的主 Session,总 token 消耗可能只有硬跑完整任务的 1/3。
3.11 Hooks:让自动化 100% 可靠
痛点场景
“我在 CLAUDE.md 里写了’每次改完代码要运行 lint’,但 Claude 经常忘记执行,尤其是上下文快满的时候。”
解决方案
CLAUDE.md 里的规则是"建议"——Claude 会尽量遵守,但不保证。而 Hooks 是程序级触发,无论 Claude 愿不愿意,脚本都会执行。
// .claude/settings.json{"hooks":{"PostToolUse":[{"matcher":"Write|Edit","command":"eslint --fix $FILE"}]}}什么时候用 Hooks vs CLAUDE.md:
| 用 Hooks | 用 CLAUDE.md |
|---|---|
| 每次改完代码必须跑 lint | 代码风格偏好(用 ES modules) |
| 禁止写入 migrations 目录 | 分支命名规范 |
| Session 结束时自动记录摘要 | 项目架构约定 |
也可以直接让 Claude 编写 hooks:“编写一个在每次文件编辑后运行 eslint 的 hook”。
3.12 新手避坑指南
基于大量用户的真实踩坑经历,整理出以下最常见的坑和解决方案。
坑一:一个 Session 做太多事
症状:修完 Bug 顺手加功能,加完功能顺手写测试,几个小时后 Claude 开始犯奇怪的错误——说好的变量名换成了另一个,已经修好的问题又冒出来了。
原因:所有对话都累积在上下文里。读了 10 个文件、尝试了 3 种方案、来回改了 2 次——这些全在消耗上下文空间。上下文快满时,Claude 会触发自动压缩,但压缩是有损的,临时决定和特定约束可能就丢了。
解决:养成按任务切换 Session 的习惯:
# 任务 A:修复登录 Bugclaude# 完成后/clear# 任务 B:新增支付功能claude涉及大量文件阅读的任务(比如理解陌生模块),用 Subagent 去读,只把结论带回来。
坑二:CLAUDE.md 写得太长
症状:写了 500 行 CLAUDE.md,Claude 开始忽略后半段的内容,说好不要改的文件照样改。
原因:CLAUDE.md 每次会话都注入上下文,500 行大约消耗 5000-8000 tokens。文件越长,重要规则被稀释的概率越高。
解决:控制在 100-200 行。如果规则确实多,用.claude/rules/目录做路径隔离——只在修改特定文件时才加载对应规则。
坑三:让 Claude 自己"找"文件
症状:说"帮我修一下登录的 Bug",Claude 开始 grep 整个项目,读了十几个文件,花了大量 token 才找到问题。
解决:用@直接引用你知道相关的文件:
@src/api/UserController.java @src/service/UserService.java 登录接口在高并发下出现了 token 不一致的问题,帮我看一下这样 Claude 直接拿到你指定的上下文,不用到处搜索。
坑四:不给 Claude 验证手段
症状:让 Claude 改完代码,自己跑测试看结果,再回来告诉它"有个测试失败了"。这个来回就是效率损耗。
解决:在 prompt 里明确告诉 Claude 验证方法,让它自己跑测试、看错误、继续修:
修改 UserService 的 findByPhone 方法,让它在手机号格式不对时 抛出 InvalidPhoneException。改完运行 mvn test -pl user-service -Dtest=UserServiceTest,确保测试通过。如果失败,看错误信息继续修。坑五:权限全开或全关
症状:嫌权限确认烦,直接全开权限,结果 Claude 误删了重要文件。或者全关,每一步都要确认,烦到放弃。
解决:只放行你真正信任的操作:
// .claude/settings.json{"permissions":{"allow":["Bash(npm test *)","Bash(npm run lint)","Bash(git commit *)","Bash(git push *)"]}}坑六:忘记 CLAUDE.md 里的临时决策会过期
症状:项目刚开始时在 CLAUDE.md 写了"暂时不做 OAuth 登录",两个月后已经决定加 OAuth 了,但忘了更新 CLAUDE.md。Claude 看到这条约束,把 OAuth 入口全注释掉了。
解决:CLAUDE.md 只写"永久规范"(如"金额用整数"),不写"临时决策"(如"暂时不做 OAuth")。临时决策放在.claude/decisions/目录里,定期 review。
坑七:管道输入数据被忽略
症状:有一个很长的错误日志想分析,复制粘贴到对话框里格式全乱了。
解决:直接管道输入:
caterror.log|claude"分析这个错误日志,找出根本原因"坑八:多开 Claude Code 互相踩脚
症状:同时开两个 Claude Code 改同一个项目,文件修改互相覆盖。
解决:并行任务用 Worktree 隔离,每个 Worktree 是独立的 git 分支和文件系统:
# 终端 1:处理认证模块claude--worktreeauth-refactor# 终端 2:处理支付模块claude--worktreepayment-feature3.13 省钱实战技巧
使用 DeepSeek 后端已经大幅降低了成本,但良好的使用习惯能让你进一步省钱。
| 技巧 | 怎么做 | 省多少 |
|---|---|---|
| 写好 CLAUDE.md | 把项目背景写进文件,不用每次重复解释 | 每次省 300-800 token |
| 用简明模式 | 在 CLAUDE.md 写 “回答简洁,不要客套话” | 每条回复省 30-50% |
| 定期 /compact | 每完成一个子任务就压缩一次 | 清掉 50-70% 冗余上下文 |
| 限制文档搜索 | 在 CLAUDE.md 写明"不要自行搜索 API 文档" | 每次省 10-20k token |
| 用 Subagent 拆任务 | 大任务拆成子任务并行跑 | 总消耗省 50-70% |
| 简单任务切低档 | 用/model haiku+/effort low | 单次消耗降低数倍 |
一句话总结:省 token 的核心不是"省",是"不浪费"。每次让 Claude 读它不需要的东西、说你不爱听的话、搜你已经知道答案的文档,都是在烧钱。
3.14 日常使用最佳实践
先探索,再规划,最后编码
对于复杂任务,推荐四步工作流:
# 1. 探索(Plan 模式,只读不改)>read/src/auth and understand how we handle sessions# 2. 规划>I want toaddGoogle OAuth. Create a plan.# 3. 实现(退出 Plan 模式)>implement the OAuth flow from your plan,writetests, run them# 4. 提交>commit with a descriptive message andopena PR判断标准:如果你能用一句话描述改动(如"修复拼写错误"),跳过计划直接做。当你对方法不确定、改动涉及多个文件、或你不熟悉被改的代码时,规划最有用。
给 Claude 具体上下文
# 差的做法>"实现一个验证邮箱的函数"# 好的做法>"编写 validateEmail 函数,测试用例:user@example.com 为真, > invalid 为假,user@.com 为假。实现后运行测试"善用 Esc 键纠偏
Esc:中途停止 Claude,保留上下文,可以重定向。一旦发现 Claude 偏离轨道,立即按 Esc 纠正,比等它做完再改快得多Esc + Esc或/rewind:回退到之前的对话和代码状态
用 /btw 问附带问题
有时候你想问一个不相关的小问题,但不想污染当前对话的上下文:
/btw JavaScript 的 Map 和 Object 有什么区别?这个问题不会加入对话历史,不影响当前任务的上下文。
参考文档:Claude Code 最佳实践
下一步
AI 编程助手已就位。下一篇 Hermes Agent:自我进化的 AI 智能体 将介绍如何部署一个具备持续学习和长期记忆能力的 AI 智能体。
📮系列目录:Windows 下 AI 开发工具实战指南