Claude Code 使用技巧:从入门到精通

2026年1月19日

来源:翻译

我之前分享的 10 条技巧 反响不错,所以我决定在这里扩展到 25 条。

GitHub 仓库:https://github.com/ykdojo/claude-code-tips

技巧 0:自定义状态栏

你可以自定义 Claude Code 底部的状态栏,显示实用信息。我的状态栏设置会显示模型、当前目录、git 分支(如果有)、未提交文件数、与远程仓库的同步状态,还有 token 使用进度条。

第二行显示我上一条消息,方便我回顾对话内容:

Opus 4.5 | 📁claude-code-tips | 🔀main (scripts/context-bar.sh uncommitted, synced 12m ago) | ██░░░░░░░░ 18% of 200k tokens
💬 This is good. I don't think we need to change the documentation as long as we don't say that the default color is orange el...

这对监控上下文使用情况和回顾工作内容特别有帮助。脚本还支持 10 种色彩主题(橙色、蓝色、青色、绿色、薰衣草色、玫瑰色、金色、石板色、青绿色或灰色)。

设置方法:使用示例脚本,查看设置说明

技巧 1:掌握几个核心斜杠命令

内置了很多斜杠命令(输入 / 可以查看全部)。以下是几个值得了解的:

/usage

查看你的速率限制:

 Current session
 ███████                                            14% used
 Resets 3:59pm (Asia/Tokyo)

 Current week (all models)
 █████████████                                      26% used
 Resets Jan 3, 2026, 5:59am (Asia/Tokyo)

想密切关注使用量的话,可以在一个标签页中保持打开,用 Tab 再 Shift+Tab 或 ← 再 → 来刷新。

/chrome

开关 Claude 的原生浏览器集成:

> /chrome
Chrome integration enabled

/mcp

管理 MCP(模型上下文协议)服务器:

 Manage MCP servers
 1 server

 ❯ 1. playwright  ✔ connected · Enter to view details

 MCP Config locations (by scope):
  • User config (available in all your projects):
    • /Users/yk/.claude.json

/stats

查看你的使用统计,带有 GitHub 风格的活动图:

      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
      ·············································▒▒▒▓▒░█
  Mon ··············································▒█░▓░█
      ·············································▒▒██▓░█
  Wed ·············································░▒█▒▓░█
      ············································░▓▒█▓▓░
  Fri ············································░▓░█▓▓█
      ············································▓▒░█▓▒█

      Less ░ ▒ ▓ █ More

  Favorite model: Opus 4.5        Total tokens: 12.1m

  Sessions: 1.8k                  Longest session: 20h 40m 45s
  Current streak: 44 days         Longest streak: 45 days
  Active days: 49/51              Peak hour: 17:00-18:00

  You've used ~145x more tokens than Brave New World

/clear

清空对话,重新开始。

技巧 2:用语音和 Claude Code 交流

我发现用语音交流比打字快得多。在本地机器上使用语音转录系统真的很有帮助。

在我的 Mac 上,我试过几个不同的选择:

虽然使用托管服务能获得更高的准确率,但我发现本地模型已经足够强大。即使转录出现错误或拼写错误,Claude 也够聪明,能理解你想说什么。有时你需要说得特别清楚,但总体来说本地模型表现不错。

比如,Claude 能把转录错误的 "ExcelElanishMark" 和 "advast" 正确理解为 "exclamation mark"(感叹号)和 "Advanced"(高级)。

常见的疑问是"如果房间里有其他人怎么办?"我会戴着耳机小声说话——我个人喜欢 Apple EarPods(不是 AirPods)。它们价格实惠,音质足够好,你只需对着它们轻声说话。我在别人面前用过,效果很好。在办公室里,大家本来就会说话——你只是把原本跟同事说话改成轻声跟你的语音转录系统说话,我觉得没什么问题。这个方法效果好到甚至在飞机上都能用。飞机噪音足够大,其他人听不到你说话,但只要你离麦克风够近,本地模型还是能理解你说的话。(实际上,我就是在飞机上用这个方法写的这一段。)

技巧 3:把大问题拆分成小问题

这是最重要的概念之一。它和传统软件工程完全一样——优秀的软件工程师已经知道怎么做这件事,这同样适用于 Claude Code。

如果你发现 Claude Code 无法一次性解决一个困难问题或编码任务,让它把问题拆分成多个小问题。看看它能否解决其中某个部分。如果还是太难,看看能否解决一个更小的子问题。一直拆分下去,直到所有问题都能解决。

本质上,不是直接从 A 到 B,而是从 A 到 A1 到 A2 到 A3,然后到 B。

一个很好的例子是我构建自己的语音转录系统时。我需要构建一个系统,让用户能选择和下载模型、设置键盘快捷键、开始转录、把转录文本放到用户光标位置,还要把这些都包装在一个漂亮的界面里。这工作量太大了。所以我把它拆分成小任务。首先,我创建了一个可执行文件,只负责下载模型,其他什么都不做。然后创建另一个只负责录音。再创建一个只负责转录预录的音频。我就这样一个一个完成它们,最后再把它们组合起来。

这和另一点高度相关:在智能编码和 Claude Code 的世界里,你的问题解决能力和软件工程技能仍然非常重要。它能自己解决很多问题,但当你把你的通用问题解决和软件工程技能应用上去,它会变得强大得多。

技巧 4:像专业人士一样使用 Git 和 GitHub CLI

直接让 Claude 处理你的 Git 和 GitHub CLI 任务。包括提交(这样你就不用手动写提交信息)、分支管理、拉取和推送。

我个人会自动允许拉取但不允许推送,因为推送风险更高——如果拉取出了问题,不会污染远程仓库。

对于 GitHub CLI(gh),能做的事情很多。我开始使用 Claude Code 后做得更多的一件事是创建草稿 PR。这让 Claude Code 处理 PR 创建过程,风险很低——你可以在标记为准备审查之前检查所有内容。

事实证明,gh 相当强大。你甚至可以通过它发送任意 GraphQL 查询。比如,你甚至可以找到 GitHub PR 描述被编辑的确切时间:

⏺ Bash(gh api graphql -f query='
      query {
        repository(owner: "...", name: "...") {
          pullRequest(number: ...) {
            userContentEdits(first: 100) {
              nodes { editedAt editor { login } }
            }
          }
        }
      }')

⏺ Here's the full edit history for your PR description:

  | #  | Edited At (UTC)     | Editor |
  |----|---------------------|--------|
  | 1  | 2025-12-01 00:08:34 | ykdojo |
  | 2  | 2025-12-01 15:57:21 | ykdojo |
  | 3  | 2025-12-01 16:24:33 | ykdojo |
  | 4  | 2025-12-01 16:27:00 | ykdojo |
  | 5  | 2025-12-04 00:40:02 | ykdojo |
  ...

技巧 5:AI 上下文就像牛奶;新鲜浓缩最好喝!

当你开始一个新对话时,Claude Code 表现最好,因为它不需要处理对话早期部分的额外复杂性。但随着对话越来越长,上下文越来越多,性能往往会下降。

所以最好为每个新话题开始新对话,或者当性能开始下降时重新开始。

技巧 6:从终端获取输出

有时你想复制粘贴 Claude Code 的输出,但直接从终端复制并不总是干净的。以下是几种更轻松获取内容的方法:

  • 直接复制到剪贴板:在 Mac 或 Linux 上,让 Claude 使用 pbcopy 直接把输出发送到剪贴板
  • 写入文件:让 Claude 把内容放到文件里,然后让它在 VS Code(或你喜欢的编辑器)中打开,这样你就可以从那里复制。你还可以指定行号,让 Claude 打开它刚编辑的特定行。对于 markdown 文件,在 VS Code 中打开后,可以使用 Cmd+Shift+P(或 Linux/Windows 上的 Ctrl+Shift+P)选择 "Markdown: Open Preview" 查看渲染版本
  • 打开 URL:如果有你想自己查看的 URL,让 Claude 在浏览器中打开它。在 Mac 上,你可以让它使用 open 命令,但一般来说,在任何平台上让它在你喜欢的浏览器中打开都可以
  • GitHub Desktop:你可以让 Claude 在 GitHub Desktop 中打开当前仓库。这在它在非根目录工作时特别有用——比如,如果你让它在不同目录创建 git worktree,而你还没有从那里打开 Claude Code

你也可以把其中一些组合起来。比如,如果你想编辑 GitHub PR 描述,不要让 Claude 直接编辑(它可能会搞砸),可以让它先把内容复制到本地文件。让它编辑那个文件,自己检查结果,等看起来不错了,让它把内容复制粘贴回 GitHub PR。这方法效果很好。或者如果你想自己做这件事,可以让它在 VS Code 中打开或通过 pbcopy 给你,这样你就可以手动复制粘贴。

当然,你可以自己运行这些命令,但如果你发现自己重复做这些事,让 Claude 帮你运行会很有帮助。

技巧 7:设置终端别名快速访问

因为 Claude Code 让我更多地使用终端,我发现设置简短别名很有帮助,可以快速启动东西。以下是我使用的:

  • c 表示 Claude Code(这是我用得最多的)
  • ch 表示带 Chrome 集成的 Claude Code
  • gb 表示 GitHub Desktop
  • co 表示 VS Code
  • q 表示进入我放置大多数项目的项目目录。从那里我可以手动 cd 进入单个文件夹来处理那个项目,或者直接用 c 启动 Claude Code,让它基本上可以访问任何需要访问的项目。

设置方法:在你的 shell 配置文件(~/.zshrc~/.bashrc)中添加这样的行:

alias c='claude'
alias ch='claude --chrome'
alias gb='github'
alias co='code'
alias q='cd ~/Desktop/projects'

有了这些别名后,你可以结合使用标志:c -c 继续你的上一个对话,c -r 显示最近的对话列表供恢复。这些也适用于 chch -cch -r)的 Chrome 会话。

技巧 8:主动压缩上下文

Claude Code 有个 /compact 命令,可以总结对话来释放上下文空间。当完整可用上下文被填满时,也会自动压缩。Opus 4.5 的总可用上下文窗口目前是 200k,其中 45k 预留给自动压缩。总共 200k 中约 10% 会自动填充系统提示、工具、记忆和动态上下文。但我发现主动手动调整更好。我用 /config 关闭了自动压缩,这样我有更多上下文可用于主对话,对何时以及如何压缩也有更多控制。

我的做法是在重新开始之前让 Claude 写一个交接文档。比如:

把剩余计划放到 system-prompt-extraction 文件夹,命名为 HANDOFF.md。解释你尝试了什么、什么有效、什么无效,这样下一个拥有新鲜上下文的 agent 就能只加载那个文件,不需要其他东西,就能开始这个任务并完成它。

Claude 会创建一个总结当前工作状态的文件:

⏺ Write(experiments/system-prompt-extraction/HANDOFF.md)
  ⎿  Wrote 129 lines to experiments/system-prompt-extraction/HANDOFF.md
     # System Prompt Slimming - Handoff Document
     ## Goal
     Reduce Claude Code's system prompt by ~45% (currently at 11%, need ~34% more).
     ## Current Progress
     ### What's Been Done
     - **Backup/restore system**: `backup-cli.sh` and `restore-cli.sh` with SHA256 verification
     - **Patch system**: `patch-cli.js` that restores from backup then applies patches
     ...

Claude 写完后,快速检查。如果缺少什么,要求编辑:

你有没有加一个关于迭代测试而不是试图一次性做所有事情的注释?

然后开始新对话。对于新 agent,你只需给出文件路径,不需要其他东西,就像这样,应该就能正常工作:

> experiments/system-prompt-extraction/HANDOFF.md

在后续对话中,你可以让 agent 为下一个 agent 更新文档。

我还创建了一个 /handoff 斜杠命令来自动化这个过程——它检查是否存在 HANDOFF.md,如果存在就读取它,然后创建或更新它,包含目标、进度、什么有效、什么无效以及下一步。你可以在 commands 文件夹找到它。

技巧 9:为自主任务完成写-测循环

如果你想让 Claude Code 自主运行某个任务,比如 git bisect,你需要给它一种验证结果的方法。关键是完成写-测循环:写代码、运行它、检查输出、重复。

举个例子,假设你在开发 Claude Code 本身,你注意到 /compact 停止工作并开始抛出 400 错误。找到导致这个问题的确切提交的经典工具是 git bisect。好消息是你可以让 Claude Code 在自己身上运行 bisect,但它需要一种测试每个提交的方法。

对于涉及像 Claude Code 这样的交互式终端的任务,你可以使用 tmux。模式是:

  1. 启动 tmux 会话
  2. 向它发送命令
  3. 捕获输出
  4. 验证是否符合预期

这是一个测试 /context 是否工作的简单例子:

tmux kill-session -t test-session 2>/dev/null
tmux new-session -d -s test-session
tmux send-keys -t test-session 'claude' Enter
sleep 2
tmux send-keys -t test-session '/context' Enter
sleep 1
tmux capture-pane -t test-session -p

有了这样的测试后,Claude Code 就可以运行 git bisect 并自动测试每个提交,直到找到破坏功能的那个。

这也是为什么你的软件工程技能仍然重要的例子。如果你是软件工程师,你可能知道像 git bisect 这样的工具。这些知识在使用 AI 时仍然非常有价值——你只是以新的方式应用它。

另一个例子是简单地编写测试。在你让 Claude Code 写完一些代码后,如果你想测试它,可以让它也为自己写测试。让它自己运行并在可能的情况下修复问题。当然,它并不总是朝正确方向走,你有时需要监督,但它能自己完成的编码任务数量令人惊讶。

创意测试策略

有时你需要在如何完成写-测循环方面有创意。比如,如果你在构建 Web 应用,可以使用 Playwright MCP、Chrome DevTools MCP 或 Claude 的原生浏览器集成(通过 /chrome)。我还没试过 Chrome DevTools,但我试过 Playwright 和 Claude 的原生集成。总体来说,Playwright 通常效果更好。它确实会使用很多上下文,但 200k 的上下文窗口通常足够完成单个任务或几个较小的任务。

这两者的主要区别似乎是 Playwright 关注可访问性树(关于页面元素的结构化数据)而不是截图。它确实有截图能力,但通常不用它们来执行操作。另一方面,Claude 的原生浏览器集成更关注截图和通过特定坐标点击元素。它有时会随机点击东西,整个过程可能很慢。

这可能会随着时间改进,但默认情况下,我会对大多数不需要视觉密集的任务使用 Playwright。只有在需要使用登录状态而不提供凭据时(因为它运行在你自己的浏览器配置文件中),或者特别需要使用坐标在视觉上点击东西时,我才会使用 Claude 的原生浏览器集成。

这就是为什么我默认禁用 Claude 的原生浏览器集成,通过我之前定义的 ch 快捷方式使用它。这样 Playwright 处理大多数浏览器任务,只有在特别需要时我才启用 Claude 的原生集成。

另外,你可以让它使用可访问性树引用而不是坐标。以下是我为此在 CLAUDE.md 中写的内容:

# Claude for Chrome

- Use `read_page` to get element refs from the accessibility tree
- Use `find` to locate elements by description
- Click/interact using `ref`, not coordinates
- NEVER take screenshots unless explicitly requested by the user

根据我的个人经验,我还遇到过这样的情况:我在开发一个 Python 库(Daft),需要在 Google Colab 上测试我在本地构建的版本。问题是在 Google Colab 上构建带有 Rust 后端的 Python 库很难——它似乎效果不太好。所以我需要在本地实际构建一个 wheel,然后手动上传,这样我就可以在 Google Colab 上运行它。我还尝试了猴子补丁,在我必须等待整个 wheel 在本地构建之前,短期内效果很好。我想出了这些测试策略,并通过与 Claude Code 来回交流来执行它们。

我遇到的另一种情况是我需要在 Windows 上测试某些东西,但我没有运行 Windows 机器。同一仓库上的 CI 测试失败了,因为我们在 Windows 上的 Rust 存在一些问题,而我无法在本地测试。所以我需要创建一个包含所有更改的草稿 PR,以及另一个包含相同更改加上在非主分支上启用 Windows CI 运行的草稿 PR。我指示 Claude Code 完成所有这些,然后我直接在那个新分支中测试 CI。

技巧 10:Cmd+A 和 Ctrl+A 是你的朋友

我已经说了好几年了:在 AI 世界里,Cmd+A 和 Ctrl+A 是朋友。这同样适用于 Claude Code。

有时你想给 Claude Code 一个 URL,但它无法直接访问。也许是私有页面(不是敏感数据,只是不公开访问),或者像 Claude Code 难以获取的 Reddit 帖子。这些情况下,你只需选择你看到的所有内容(Mac 上 Cmd+A,其他平台 Ctrl+A),复制它,然后直接粘贴到 Claude Code。这是一个相当强大的方法。

这对终端输出也很有效。当我有来自 Claude Code 本身或任何其他 CLI 应用程序的输出时,我可以使用同样的技巧:全选、复制、粘贴回 CC。非常有帮助。

有些页面默认不太适合全选——但有一些技巧可以先让它们进入更好的状态。比如,对于 Gmail 线程,点击"全部打印"获取打印预览(但取消实际打印)。那个页面会显示线程中所有展开的邮件,所以你可以干净地 Cmd+A 整个对话。

这适用于任何 AI,不仅仅是 Claude Code。

技巧 11:使用 Gemini CLI 作为被屏蔽站点的后备方案

Claude Code 的 WebFetch 工具无法访问某些站点,比如 Reddit。但你可以创建一个技能来告诉 Claude 使用 Gemini CLI 作为后备方案。Gemini 有网络访问权限,可以从 Claude 无法直接访问的站点获取内容。

这使用了技巧 9 中相同的 tmux 模式——启动会话、发送命令、捕获输出。技能文件放在 ~/.claude/skills/reddit-fetch/SKILL.md。完整内容见 skills/reddit-fetch/SKILL.md

技能更节省 token,因为 Claude Code 只在需要时才加载它们。如果你想要更简单的东西,可以把精简版本放在 ~/.claude/CLAUDE.md,但那会被加载到每个对话中,无论你是否需要它。

我测试了这个,让 Claude Code 检查 Reddit 上对 Claude Code 技能的评价——有点元。它和 Gemini 来回交流了一阵子,所以速度不快,但报告质量出乎意料地好。显然,你需要安装 Gemini CLI 才能正常工作。

技巧 12:投资你自己的工作流程

就我个人而言,我用 Swift 从头创建了自己的语音转录应用。我用 Claude Code 从头创建了自己的自定义状态栏,这个是用 bash 写的。我还创建了自己的系统来简化 Claude Code 压缩的 JavaScript 文件中的系统提示。

但你不必像我这样走极端。只要好好维护你自己的 CLAUDE.md,确保它尽可能简洁,同时能帮助你实现目标——这样的事情就很有帮助。当然,还要学习这些技巧、学习这些工具和一些最重要的功能。

所有这些都是对你用来构建任何东西的工具的投资。我认为在这上面花至少一点时间很重要。

技巧 13:搜索对话历史

你可以向 Claude Code 询问过去的对话,它会帮你查找和搜索。你的对话历史本地存储在 ~/.claude/projects/ 中,文件夹名称基于项目路径(斜杠变成破折号)。

比如,位于 /Users/yk/Desktop/projects/claude-code-tips 的项目的对话会存储在:

~/.claude/projects/-Users-yk-Desktop-projects-claude-code-tips/

每个对话都是一个 .jsonl 文件。你可以用基本的 bash 命令搜索它们:

# 查找所有提到"Reddit"的对话
grep -l -i "reddit" ~/.claude/projects/-Users-yk-Desktop-projects-*/*.jsonl

# 查找今天关于某个主题的对话
find ~/.claude/projects/-Users-yk-Desktop-projects-*/*.jsonl -mtime 0 -exec grep -l -i "keyword" {} \;

# 从对话中只提取用户消息(需要 jq)
cat ~/.claude/projects/.../conversation-id.jsonl | jq -r 'select(.type=="user") | .message.content'

或者直接问 Claude Code:"我们今天谈论了什么关于 X 的内容?"它会为你搜索历史记录。

技巧 14:用终端标签页多任务

运行多个 Claude Code 实例时,保持有序比任何特定的技术设置(比如 Git worktrees)都重要。我建议同时最多关注三到四个任务。

我的个人方法是我称之为"级联"——每当我开始一个新任务,我就在右边打开一个新标签页。然后我从左向右扫,从左向右,从最老的任务到最新的。总体方向保持一致,除非我需要检查某些任务、获得通知等。

技巧 15:精简系统提示

Claude Code 的系统提示和工具定义在你开始工作之前就占用了约 19k tokens(约 10% 的 200k 上下文)。我创建了一个补丁系统,把它减少到约 9k tokens——节省了约 10,000 tokens(约 50% 的开销)。

补丁的工作原理是从压缩的 CLI 包中修剪冗长的示例和冗余文本,同时保留所有必要的指令。

我广泛测试了这个,效果很好。感觉更原始——更强大,但可能监管少一点,这是有道理的,因为系统指令更短了。这样使用时感觉更像专业工具。

我真的很享受从较低的上下文开始,因为在填满之前你有更多空间,这让你可以选择把对话延续得更长一点。这绝对是这个策略最好的部分。

查看 system-prompt 文件夹了解补丁脚本和修剪内容的完整细节。

为什么打补丁? Claude Code 有标志可以让你从文件提供简化的系统提示(--system-prompt--system-prompt-file),所以这是另一种方法。但对于工具描述,没有官方选项来自定义它们。打补丁 CLI 包是唯一的方法。由于我的补丁系统以统一的方式处理所有内容,我现在保持这种方式。我可能将来会使用标志重新实现系统提示部分。

要求:这些补丁需要 npm 安装(npm install -g @anthropic-ai/claude-code)。打补丁通过修改 JavaScript 包(cli.js)工作——其他安装方法可能生成无法以这种方式打补丁的编译二进制文件。

重要:如果你想保留打过补丁的系统提示,通过在 ~/.claude/settings.json 中添加以下内容来禁用自动更新:

{
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}

这适用于所有 Claude Code 会话,无论 shell 类型(交互式、非交互式、tmux)。你可以稍后在准备好重新对新版本应用补丁时用 npm update -g @anthropic-ai/claude-code 手动更新。

延迟加载 MCP 工具

如果你使用 MCP 服务器,它们的工具定义默认会加载到每个对话中——即使你不使用它们。这可能增加显著的开销,特别是配置了多个服务器时。

启用延迟加载,这样 MCP 工具只在需要时才加载:

{
  "env": {
    "ENABLE_TOOL_SEARCH": "true"
  }
}

把这个添加到 ~/.claude/settings.json。Claude 会按需搜索和加载 MCP 工具,而不是从一开始就全部呈现。从版本 2.1.7 开始,当 MCP 工具描述超过上下文窗口的 10% 时,这会自动发生。

技巧 16:用 Git worktrees 并行处理分支工作

如果你在处理多个文件或多个分支,不想它们冲突,Git worktrees 是同时处理它们的好方法。你只需让 Claude Code 创建一个 git worktree 并在那里开始工作——你不必担心具体语法。

基本思路是你可以在不同目录处理不同分支。它本质上是一个分支 + 一个目录。

你可以在我在多任务技巧中讨论的级联方法之上添加这一层 Git worktrees。

技巧 17:长时间运行任务的手动指数退避

等待长时间运行的任务如 Docker 构建或 GitHub CI 时,你可以让 Claude Code 进行手动指数退避。指数退避是软件工程中的常见技术,但你也可以在这里应用。让 Claude Code 以递增的睡眠间隔检查状态——一分钟,然后两分钟,然后四分钟,依此类推。它不是传统意义上的程序化执行——AI 是手动执行的——但效果很好。

这样 agent 可以持续检查状态,一旦完成就让你知道。

(对于 GitHub CI 特别来说,gh run watch 存在但会持续输出很多行,浪费 tokens。使用 gh run view <run-id> | grep <job-name> 进行手动指数退避实际上更节省 token。这也是一种通用技术,即使你没有专门的等待命令也能很好地工作。)

技巧 18:Claude Code 作为写作助手

Claude Code 是出色的写作助手和伙伴。我用它写作的方式是,首先给它所有关于我想写什么的上下文,然后用语音给它详细的指示。

这给我第一稿。如果还不够好,我会尝试几次。

然后我几乎逐行检查。我说好的,让我们一起看看它。我喜欢这一行,原因是这些。我觉得这一行需要移到那里。这一行需要以这种特定方式改变。我可能也会询问参考材料。

所以这是一个来回的过程,也许左边是终端,右边是代码编辑器。这往往效果很好。

技巧 19:Markdown 太棒了

通常人们写新文档时,可能会使用 Google Docs 或 Notion。但现在我老实说认为最高效的方法是 markdown。

即使在 AI 之前,Markdown 已经相当不错了,但特别是对于 Claude Code,因为它在写作方面如此高效,正如我提到的,在我看来这使 markdown 的价值更高。无论你想写博客文章还是 LinkedIn 帖子,你都可以直接跟 Claude Code 说话,让它保存为 markdown,然后继续。

这里有个快速技巧:如果你想把 markdown 内容复制粘贴到不容易接受它的平台,可以先粘贴到一个新的 Notion 文件中,然后从 Notion 复制到其他平台。

Notion 会把它转换成其他平台可以接受的格式。如果常规粘贴不起作用,试试 Command + Shift + V 粘贴而不带格式。

技巧 20:用 Notion 在粘贴时保留链接

事实证明反过来也有效。如果你有来自其他地方带链接的文本,比如来自 Slack,你可以复制它。如果直接粘贴到 Claude Code,它不显示链接。但如果你先把它放到 Notion 文档中,然后从那里复制,你会得到 markdown 格式,Claude Code 当然可以读取。

技巧 21:容器用于长时间运行的风险任务

常规会话更适合你控制授予的权限并更仔细审查输出的系统化工作。容器化环境非常适合 --dangerously-skip-permissions 会话,你不必为每件小事授予权限。你可以让它自己运行一段时间。

这对需要很长时间且可能有风险的研究或实验很有用。一个好例子是技巧 11 中的 Reddit 研究工作流程,其中 reddit-fetch 技能通过 tmux 与 Gemini CLI 来回交流。在你的主系统上无监督运行这个有风险,但在容器中,如果出了问题,它是被隔离的。

另一个例子是我如何在这个仓库中创建系统提示补丁脚本。当 Claude Code 的新版本出来时,我需要为压缩的 CLI 包更新补丁。我不在主机上用 --dangerously-skip-permissions 运行 Claude Code(那里它可以访问所有东西),而是在容器中运行它。Claude Code 可以探索压缩的 JavaScript,找到变量映射,创建新的补丁文件,而我不需要批准每件小事。

实际上,它几乎完全自己完成了迁移。它尝试应用补丁,发现有些在新版本中不起作用,迭代修复它们,甚至根据它学到的内容改进了未来实例的指令文档

我设置了一个装有 Claude Code、Gemini CLI、tmux 和这个仓库所有自定义内容的 Docker 容器。查看 container 文件夹了解 Dockerfile 和设置说明。

进阶:在容器中编排工作 Claude Code

你可以更进一步,让你的本地 Claude Code 控制另一个运行在容器中的 Claude Code 实例。技巧是使用 tmux 作为控制层:

  1. 你的本地 Claude Code 启动一个 tmux 会话
  2. 在那个 tmux 会话中,它运行或连接到容器
  3. 在容器内,Claude Code 用 --dangerously-skip-permissions 运行
  4. 你的外部 Claude Code 使用 tmux send-keys 发送提示,用 capture-pane 读取输出

这给你一个完全自主的"工作"Claude Code,可以运行实验性或长时间运行的任务,而你不需要批准每个操作。完成后,你的本地 Claude Code 可以把结果拉回来。如果出了问题,一切都被沙箱在容器中。

进阶:多模型编排

不仅仅是 Claude Code,你可以在容器中运行不同的 AI CLI——Codex、Gemini CLI 或其他。

我试过用 OpenAI Codex 进行代码审查,效果很好。重点不是你不能直接在主机上运行这些 CLI——你显然可以。价值在于 Claude Code 的 UI/UX 足够流畅,你可以直接跟它说话,让它处理编排:启动不同的模型、在容器和主机之间发送数据。你不用手动在终端之间切换和复制粘贴,Claude Code 成为协调一切的中心界面。

技巧 22:提升使用 Claude Code 能力的最佳方法就是使用它

最近我看到一位世界级攀岩运动员接受另一位攀岩运动员采访。她被问到:"你怎么提高攀岩技能?"她简单地说:"通过攀岩。"

这也是我对这个的感受。当然,你可以做一些辅助的事情,比如看视频、读书、学习技巧。但使用 Claude Code 是学习如何使用它的最佳方法。使用 AI 总体上是学习如何使用 AI 的最佳方法。

我喜欢把它想象成十亿 token 规则,而不是 10,000 小时规则。如果你想在 AI 方面变得更好,真正获得关于它如何工作的良好直觉,最好的方法是消耗大量 tokens。现在这是可能的。我发现特别是 Opus 4.5,它足够强大但也足够实惠,你可以同时运行多个会话。

你不必太担心 token 使用,这让你自由得多。

技巧 23:克隆和半克隆对话

有时你想从对话中的特定点尝试不同方法,而不丢失原始线程。clone-conversation 脚本让你用新 UUID 复制对话,这样你就可以分支。

第一条消息会用 [CLONED <timestamp>] 标记(例如 [CLONED Jan 7 14:30]),这会显示在 claude -r 列表和对话内部。

手动设置方法,链接两个文件:

ln -s /path/to/this/repo/scripts/clone-conversation.sh ~/.claude/scripts/clone-conversation.sh
ln -s /path/to/this/repo/commands/clone.md ~/.claude/commands/clone.md

然后只需在任何对话中输入 /clone,Claude 会处理查找会话 ID 和运行脚本。

我广泛测试了这个,克隆效果真的很好。

半克隆以减少上下文

当对话变得太长时,half-clone-conversation 脚本只保留后半部分。这减少了 token 使用,同时保留了你最近的工作。第一条消息用 [HALF-CLONE <timestamp>] 标记(例如 [HALF-CLONE Jan 7 14:30])。

手动设置方法,链接两个文件:

ln -s /path/to/this/repo/scripts/half-clone-conversation.sh ~/.claude/scripts/half-clone-conversation.sh
ln -s /path/to/this/repo/commands/half-clone.md ~/.claude/commands/half-clone.md

克隆脚本的推荐权限

两个克隆脚本都需要读取 ~/.claude(用于对话文件和历史记录)。为了避免来自任何项目的权限提示,在你的全局设置(~/.claude/settings.json)中添加:

{
  "permissions": {
    "allow": ["Read(~/.claude)"]
  }
}

技巧 24:使用 realpath 获取绝对路径

当你需要告诉 Claude Code 关于不同文件夹中的文件时,使用 realpath 获取完整的绝对路径:

realpath some/relative/path

技巧 25:理解 CLAUDE.md vs 技能 vs 斜杠命令 vs 插件

这些是有些相似的功能,我最初觉得它们相当令人困惑。我一直在拆解它们,尽力理解它们,所以我想分享我学到的东西。

CLAUDE.md 是最简单的。它是一堆文件,被当作默认提示,无论如何都会加载到每个对话的开头。它的好处是简单。你可以在特定项目(./CLAUDE.md)或全局(~/.claude/CLAUDE.md)中解释项目的内容。

技能就像结构更好的 CLAUDE.md 文件。它们可以在相关时由 Claude 自动调用,或者由用户用斜杠手动调用(例如 /my-skill)。比如,你可以有一个技能,在你问如何用某种语言发音某个词时,用适当的格式打开 Google 翻译链接。

如果这些指令在技能中,它们只在需要时加载。如果它们在 CLAUDE.md 中,它们已经在那里占用空间了。所以理论上技能更节省 token。

斜杠命令类似于技能,都是单独打包指令的方式。它们可以由用户手动调用,或者由 Claude 自己调用。如果你需要更精确的东西,按自己的节奏在正确的时间调用,斜杠命令就是要使用的工具。

技能和斜杠命令在功能方式上相当相似。区别在于设计意图——技能主要设计给 Claude 使用,斜杠命令主要设计给用户使用。

然而,它们最终合并了,正如我建议的这个改变

插件是一种将技能、斜杠命令、agents、hooks 和 MCP 服务器打包在一起的方式。但插件不必使用所有这些。Anthropic 官方的 frontend-design 插件本质上只是一个技能,没有其他东西。它可以作为独立技能分发,但插件格式使安装更容易。

(由于字符限制,无法在这里发布全部 40 多条技巧。你可以在这个 GitHub 仓库查看其余内容:https://github.com/ykdojo/claude-code-tips