Claude Code 踩坑实录:我流的泪,你别再流

0 阅读9分钟

Claude Code (CC) 是 Anthropic 官方推出的 CLI 工具。用了大半个月,它确实能提升效率,但默认配置比较繁琐。这里总结一些让它更顺手的配置和工作流建议。

基础环境配置

/init

老生常谈了,大家都知道

用来初始化项目架构和规范,适用于新的项目或者新的模块。

1. 跳过繁琐的权限确认

image.png

CC 默认的安全机制很严,每条命令都要问 y/n,非常打断心流。建议直接在 .zshrc.bashrc 中加个别名:

echo 'alias cc="claude --dangerously-skip-permissions"' >> ~/.zshrc
source ~/.zshrc

以后敲 cc 就能直接执行。当然,执行删除或破坏性操作时自己要看着点。

2. 调整回车换行

默认回车是发送,很容易手抖把没写完的 Prompt 发出去。

运行 /terminal-setup (需要关闭所有终端,重新打开才生效)。后续打开cc, 可以在按下 Option + Enter时插入新行,而不是发送 Prompt。

发送还是按 Enter

image.png

3. 多会话区分标记

image.png

如果同时开几个 CC 终端(比如一个修 Bug,一个写文档),很容易切错窗口。 使用 /color 指令给不同用途的会话标记不同颜色,一眼就能区分。

4. 监控 Token

image.png

可以安装 claude-hud 插件或者习惯性输入 /status。主要是关注 Context 占用量,心里有数,避免 Token 用量意外爆炸。

项目地址:claude-hud

安装方式也很简单,打开cc, 会话中依次执行:

/plugin marketplace add jarrodwatts/claude-h

/plugin install claude-hud

/claude-hud:setup

无需重启cc即可生效。

让 Claude 更懂项目

1. CLAUDE.md

这是最重要的一点。在项目根目录创建 CLAUDE.md,把架构、代码规范、常用命令写进去。 Claude 启动时会读取它。这能大幅减少"它写的代码风格和我不一致"的问题,省去很多 Review 和纠正的时间。

小技巧:

  • 不要大篇幅去写它,可以把细分的rules总结到 .claude/rules 文件夹中。然后在CLAUDE.md中引用它们即可。

  • 可以让它在会话过程中必须全程尊称您为"哥们",而不是"用户", 当你发现它不再称呼您为"哥们"时,说明它已经开始降智了,此时记得关闭并重新启动新的会话。

image.png

2. 让cc记住常用的工作区目录

由于/add-dir 只能针对单独的会话使用,所以如果想在多个会话中共享项目目录,需要每个会话都执行一次,很麻烦.

可以直接修改 .claude/settings.local.json 文件,添加常用的工作区目录:

  • settings.local.json 示例
{
  "permissions": {
    "additionalDirectories": [
      "/Users/xxx/apps/work/xxx-project"
    ]
  }
}

然后重新打开新的cc会话,无需再次 /add-dir 添加项目目录了。

注意,.gitignore文件需要添加

.claude/*.local.*
*.local.*

节省 Token 的习惯

0. 能给明确指令,就别含糊其词

  • 使用 @ 指令,指定文件路径,而不是直接输入文件内容。
  • 明确告知cc不能做什么,怎么样做。
  • 使用todol列表的形式指导cc完成任务。

1. 及时清除上下文 (/clear)

不要在同一个会话里处理互不相干的任务。

修完 Bug A 转去做 Feature B 时,务必执行 /clear。清理无关上下文不仅省钱,更能减少模型幻觉,让 Claude 聚焦在当前任务上。

2. 60% 警戒线

/compact 提示出现,或者感觉到 Context 消耗超过 60% 时,Claude 的响应会变慢,智商也会下降。建议直接关闭并开启新的会话。

3. 使用 ! 执行简单命令

ls, pwd, git status 这种不需要 LLM 思考的命令,直接以 ! 开头输入(如 !ls -la)。

这样做,第一:不需要退出会话,第二:完全不消耗 Token,第三:也没必要让 cc帮你解释一遍。

比如执行 !git status ,可以直接查看当前项目的git状态。

image.png

进阶工作流

1. 任务队列

可以在会话中执行时候,继续输入新的任务,会陆续进入任务队列中,等待前一个任务完成后再执行。

image.png

2. 快速回滚 (/rewind)

如果 Claude 把代码改崩了,或者上下文聊乱了,直接 /rewind 回滚到之前的对话状态。这比手动 git checkout 或者告诉它"你改错了"要快得多。

3. IDE 联动

  • /ide的使用

    /ide 可以生成链接到某个IDE,比如vscode / trae。

    这样的好处是,可以自动定位当前active的文件,不用手动@文件路径。

    也可以选中某个文件中若干代码,cc会自动把选中的代码关联到当前会话中。

  • /diff的使用

    通过 /diff 直接在终端快速扫一眼变更,可以快速review。或者直接:ghottsy + Lazygit + yazi(后面会写文章单独介绍)

image.png

4. Vim 模式

嫌命令行输入框太小、编辑长 Prompt 不方便的话,输入 /vim 进入 Vim 模式, 直接使用vim快捷键进行编辑。

5. /sandbox指令

/sandbox 是个啥?

简单说,就是给 Claude 加上的一道安全围栏。

没开沙箱的时候,Claude 每跑个命令都得弹窗问你“允许吗?”,稍微复杂点的任务能把你烦死。开了沙箱,它就能在安全范围内自己干活,不用动不动就打断你。

它主要防两件事:

  1. 乱动文件: Claude 只能读写你当前的项目目录。你电脑里的其他东西(像 ~/.ssh/ 密钥或者系统配置)它是碰不到的。
  2. 乱连网: 它只能访问你批准过的域名。想连新的?得先问你。

怎么选模式? 一般直接选 Auto-Allow 就行,沙箱内的安全命令它自己就跑了,适合想快点干完活的人。如果你控制欲比较强,想每条命令都亲自过目,那就选普通模式。

怎么用? 敲 /sandbox 就能呼出菜单。 macOS 直接能用。Linux 或 WSL2 得装俩包:bubblewrap 和 socat。

会影响开发吗? 基本没感觉。平时跑个 flutter run、git status 啥的都在项目里,沙箱不会拦着。它主要防的是万一你装了个带毒的 npm 包,或者 Claude 脑抽了想执行个 rm -rf /,沙箱能把爆炸范围控制在项目文件夹里,不至于把你整个系统带走。

一句话:开了它,Claude 干活更利索,你也更放心它不会越界瞎搞。

6. 让cc自我总结

  • /insights

结合你的会话,cc会自我总结,并提供相关优化建议,生成的报告在:~/.claude/usage-data/report.html

报告主要包含:概述、你的工作内容、如何使用 Claude Code、你做的那些令人印象深刻的事、哪里出了问题、现有 CC 功能可供尝试、使用 Claude Code 的新方法 等内容。

其中最值得关注的是:哪里出了问题、现有 CC 功能可供尝试,可以帮我改善cc的使用。

  • /export 导出会话

适用于分享(比如做了一个特别有意思的功能/工具/演示demo,需要分享的时候)

  • find-skills

find-skills

可以查找你感兴趣的技能。

  • planning-with-files

planning-with-files

cc内置的plan模式是不会自动导出计划的,当你开启新的会话后,上下文会丢失

planning-with-files会把你的工作流变成使用持久化的 Markdown 文件来进行规划、进度跟踪和知识存储——这正是让 Manus 市值数十亿美元的模式。

高级功能

创建自定义的skill

比如通过 /skill-creator 创建一个auto-image-upload skill, 这样再也不用手动切图传 COS 了

具体请戳: 我写了个 Claude Code Skill,再也不用手动切图传 COS 了

sugagent

俗称智能体,每个智能体都在单独的上下文中运行,互不干扰。

我们可以创建一个sugagent,来帮我们自动完成一些任务, 比如自动读取figma设计稿,还原代码。

具体实践可以看cc官方文档: 创建一个sugagent

custom command

比如我们可以创建一个 /git-push 指令,来自动提交并推送当前改动,生成结构清晰的 commit message。

同时可以设置一些前置条件,比如:

  • 必须有 unstaged 或 staged 改动
  • 提交前先运行lint检查
  • 提交前先执行git pull,如果有冲突则停止,并告知用户

hooks使用

比如在Stop的时候执行代码 lint检查,确保代码质量。

~/settings.local.json

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm run lint"
          }
        ]
      }
    ]
  }
}

mcp的使用

mcp 是 claude code 可以访问外部服务的一个协议,通过它可以调用外部服务,比如:figma-mcp, chrome-devtools-mcp, dart mcp 等。

实战应用请看我的文章:一句话生成整套 API:我用 Claude Code 自定义 Skill + MCP 搞了个接口代码生成器

agent team的使用

这是真正的并行任务,多个会话可以同时运行,互不干扰。使用其实很简单,比方说:

请创建一个2人团队,分别查询nuxtjs和nextjs的官方文档,总结出它们的使用区别。

实战应用请看我的文章:一句话生成整套 API:我用 Claude Code 自定义 Skill + MCP 搞了个接口代码生成器

image.png

claudecode --worktree的使用

和agent team不同的是,claudecode --worktree 是单独的指令,只能开启一个会话,并且会创建一个worktree目录,用来存储会话的代码, 默认保存在.claude/worktrees目录下。

其实git worktree早就有了,只是cc将其集成到了cli中,用户使用时是无感知的。

worktree可以用来并行执行互不干扰的需求功能。

image.png

claudecode --worktree --tmux 可以开启一个会话,并且配合agent team自动拆分会话窗口(效果参考:agent team的使用一节中的图片)。

推荐个好用的终端软件

cmux,用过ghottsy的人就会明白它的优势(并且任务完成后它是有消息通知的)。直接上一张图,自行体会~


image.png

右侧是两个插件分别是:lazygit / yazi

lazygit: github.com/jesseduffie…

yazi: github.com/sxyazi/yazi

需要订阅的功能

  1. /chrome — 可以用 chrome-devtools-mcp 代替
  2. /desktop — 用桌面应用继续当前会话
  3. /login 和 /logout
  4. claude remote-control

总结

Claude Code 本质上是一个可以通过自然语言编程的终端环境。新手建议先配好 alias 和回车设置,习惯用 /clear 控制上下文;进阶的话,重点在于维护好 CLAUDE.md,把它当成一个需要 onboarding 的新员工来对待。

附一些坑(持续更新):

  1. 有时候会遇到对话框无法输入,按ctrl+shift+v即可
  2. 在开始提问前,最好通过/mcp查看所有mcp是否可用,免得因为部分连接失败导致任务失败