Skip to content

Claude Code 踩坑实录 #134

Description

@peng-yin

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

基础环境配置

/init

老生常谈了,大家都知道。用来初始化项目架构和规范,适用于新的项目或者新的模块。

1. 跳过繁琐的权限确认

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

调整回车换行

3. 多会话区分标记

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

多会话区分标记

4. 监控 Token

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

项目地址:claude-hud

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

/plugin marketplace add jarrodwatts/claude-hud
/plugin install claude-hud
/claude-hud:setup

无需重启 cc 即可生效。

监控Token

让 Claude 更懂项目

1. CLAUDE.md

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

CLAUDE.md

小技巧:

  • 不要大篇幅去写它,可以把细分的 rules 总结到 .claude/rules 文件夹中。然后在 CLAUDE.md 中引用它们即可。
  • 可以让它在会话过程中必须全程尊称您为"哥们",而不是"用户",当你发现它不再称呼您为"哥们"时,说明它已经开始降智了,此时记得关闭并重新启动新的会话。

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 不能做什么,怎么样做。
  • 使用 todolist 列表的形式指导 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 状态。

使用!执行简单命令

进阶工作流

1. 任务队列

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

任务队列

2. 快速回滚 (/rewind)

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

3. IDE 联动

  • /ide 的使用

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

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

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

  • /diff 的使用

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

IDE联动

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

subagent

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

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

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

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 等。

agent team 的使用

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

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

agent team

claudecode --worktree 的使用

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

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

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

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

worktree

推荐个好用的终端软件

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

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

lazygit: github.com/jesseduffield/lazygit

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 是否可用,免得因为部分连接失败导致任务失败

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions