关注公众号,AI 技术干货及时送达↓
推荐阅读:榨干 Claude Code 的 16 个实用小技巧
来源:https://www.builder.io/blog/claude-code
我已经是 Cursor 的重度用户超过一年了。我写过数千名开发者每周参考的 Cursor 技巧指南。我深入研究过 Cursor 的每一个高级功能和代理模式最佳实践。
然而我放弃了这一切,转向了 Claude Code。
几周以来,我完全在使用 Claude Code 而不是 Cursor 的代理功能。老实说,已经没有回头路了。
以下是我如何使用 Claude Code 以及获得最佳体验的技巧。
使用 VS Code 扩展
—
首先:安装 Claude Code 扩展。它适用于 VS Code、Cursor,可能也适用于 Windsurf。别期待什么惊喜,它基本上就是一个启动器。但它让打开 Claude Code 变得非常简单,只要它们在代码库的不同部分工作,你可以在 IDE 的不同窗格中并行运行多个实例。
我仍然使用 Cursor 进行快速的 Command+K 补全和 tab 补全。但是代理侧边栏?只有在 Claude 宕机时我才会碰它。
奇怪的是我的工作流程是如何演变的。我过去是在主编辑器中编码时将 Claude 作为一个小侧边栏。现在我首先默认使用 Claude,只有在审查更改时才瞄一眼代码。它已经成为我的主要界面,而不是次要界面。
终端 UI 很不错
—
是的,我也很怀疑。用终端界面进行基于聊天的代码编辑?听起来像是倒退。但 Anthropic 做得不错。
你可以轻松地用 @ 标记文件,使用斜杠命令(很有帮助),并精确选择要包含的上下文。除非 Opus 出现问题,否则我主要使用 Opus,然后切换到 Sonnet。大多数人可能应该使用默认设置——它会使用 Opus 直到你达到 50% 的使用量,然后为了成本效益切换到 Sonnet。
专业技巧:经常使用 /clear
。每次开始新任务时,清除聊天记录。你不需要所有那些历史记录占用你的 token,你绝对不需要 Claude 运行压缩调用来总结旧对话。直接清除并继续。
向上箭头可以让你浏览过去的聊天记录,甚至是之前会话的记录。当你需要参考昨天的内容时很方便。
权限系统会让你抓狂
—
关于 Claude Code 最烦人的事情是:它什么都要请求权限。你输入一个提示,它开始工作,你去检查 Slack,五分钟后回来,它就坐在那里问"我可以编辑这个文件吗?"
是的,你可以编辑文件。这就是重点所在。
运行基本命令也是如此。"我可以运行 lint 吗?"是的。天哪,当然可以。
不过有一个解决方案。每次我打开 Claude Code 时,我都会按 Command+C 并运行 claude --dangerously-skip-permissions
。它没有听起来那么危险——把它想象成 Cursor 的旧 yolo 模式。流氓代理理论上可能运行破坏性命令吗?当然。在我几周的使用中看到过这种情况吗?从未发生过。
这取决于你的风险承受能力,但我晚上睡得很安稳。
GitHub 集成实际上很有用
—
其中一个更酷的斜杠命令是 /install-github-app
。运行后,Claude 会自动审查你的 PR。
这实际上很有用,因为随着你使用更多 AI 工具,你的 PR 数量会增加。老实说?Claude 经常发现人类遗漏的错误。人类会挑剔变量名。Claude 会发现实际的逻辑错误和安全问题。
关键是自定义审查提示。开箱即用的提示太冗长了,会对每个小细节都进行评论。Claude 会添加一个 claude-code-review.yml
文件,其中已经有一个提示。以下是我使用的替代版本:
# claude-code-review.ymldirect_prompt:| 请审查这个拉取请求并查找错误和安全问题。只报告你发现的错误和潜在漏洞。请保持简洁。
我们发现这个工具的原始问题是它真的很冗长。它会对各种细微的、不重要的事情进行评论,并在每个 PR 上写一整篇文章。我们真正最关心的是错误和潜在漏洞。所以我们明确告诉它这一点,并要求简洁。
它还可以做其他很酷的事情,比如从 GitHub 拉取请求中提取评论并解决它们,或直接审查拉取请求。
你需要了解的怪癖
—
由于它是终端界面,有一些不明显的行为:
- Shift+Enter
默认不能换行。只需告诉 Claude 用
/terminal-setup
设置你的终端,它会为你修复。 - 拖拽文件
通常会像在 Cursor 或 VS Code 中一样在新标签页中打开它们。拖拽时按住 Shift 键可以在 Claude 中正确引用它们。
- 从剪贴板粘贴图片
不能用 Command+V。使用 Control+V。我花了很长时间才搞清楚这一点。
- 停止 Claude
不是 Control+C(那会完全退出)。使用 Escape 实际停止 Claude。
- 跳转到之前的消息
:按两次 Escape 会显示所有之前消息的列表,你可以跳回去。
如果你喜欢的话,还有一个 Vim 模式。我不喜欢。
推荐阅读:用上了 Claude Code,才发现 Cursor 和 Gemini Cli 都是弱智。。(保姆级安装和使用教程分享)
Claude Code 能更好地处理大型代码库
—
真正的区别在于:我们在 Builder 有一个 18,000 行的 React 组件。(别因为代码组织问题 @ 我,我知道。)除了 Claude Code,没有任何 AI 代理成功更新过这个文件。
使用 Cursor 时,我仍然会遇到很多小问题。它难以解决补丁,经常需要重写文件,并且在更新极大的文件时真的很困难。
这不仅仅是文件大小的问题,Claude Code 在复杂任务方面表现出色。我发现它极少卡住(我甚至不确定是否注意到过)。使用 Cursor 时,我感觉必须更多地照顾它,当它卡住时,我必须停止它并意识到也许这不是一个好的任务。
Claude 在导航大型代码库、搜索模式、理解代码不同部分之间的关系、组件、共享状态等方面也非常出色。这真的很不可思议。
关注公众号,AI 技术干货及时送达↓
经济学很合理
—
想想看:Cursor 构建了一个支持多种模型的通用代理。他们需要一个完整的团队,加上他们训练自定义模型,加上他们需要在向 Anthropic 支付底层模型费用的基础上获得利润。
Anthropic 绝对制造最好的编码模型,他们让 Claude Code 最好地使用这些模型。当他们在 Claude Code 上遇到挑战时,他们会去改进模型。
他们了解模型如何工作、如何训练以及如何深入使用的一切。他们继续训练模型以便与他们对 Claude Code 的需求良好配合。
这也意味着 Anthropic 可以为你提供最大的价值和最低的价格,因为你只需要担心向他们付费。
他们可以在给你最大的模型(如 Opus)访问权限方面竞争,而不会出现像 Cursor 那样的情况,因为 Cursor 也需要赚钱。
这就像直接从制造商购买而不是通过经销商。当然更好。
定价合理
—
我支付最高计划每月 100 美元。如果你认为一个令人震惊的智能编码者 24/7 工作不值 100 美元/月,你需要看看你自己的时间收费多少。看看世界任何地方工程师每小时的人工成本,都比这个数量级高得多。
任何经理做这个数学计算都会看到它绝对值得,即使在最高可能的定价层级。
排队系统很方便
—
一个我离不开的功能:消息排队。你可以输入多个提示,Claude 会智能地处理它们。
我过去会创建一个记事本并开始起草我想要做的其他提示。然后当我看到一个完成时,我会去粘贴下一个并按回车。这就是我用 Cursor 做的,这真的很烦人,因为我通常会继续我的一天,回答 Slack 消息,回答邮件,做其他事情,然后回来看到代理已经闲置了不知道多长时间。
现在我只是把所有东西排队:"添加更多注释","实际上也...","还有...也是。"Claude 在知道何时应该实际运行这些事情方面真的很聪明。如果它需要你的反馈,它不会自动运行排队的消息。这是一个非常智能的系统,但当它完成某些事情时,会在合适的时候开始处理它们。
你可以排队很多,继续你的一天,在很多情况下,只需回来就能看到大量以良好和聪明方式完成的工作。但要时不时检查,因为它可能需要你的输入。
自定义相当深入
—
Claude Code 支持自定义钩子、斜杠命令和项目特定配置。很酷的部分?你可以让 Claude 为你构建这些。
我要求 Claude 添加几个默认钩子、命令和设置。它查看了我的项目并创建了一个我可以轻松编辑的设置文件,有几个值得注意的亮点:
它添加了一个 CLAUDE.md
文件,提供了一些项目概述和一些它应该知道的关键命令。这防止它每次都必须搞清楚这些并扫描代码库寻找"是否有构建命令或 lint 命令?"它总是意识到这些。
它添加了一些钩子,用于在接受编辑之前应该运行什么代码,比如在特定文件上运行 Prettier,或在编辑后,比如在特定文件上进行类型检查以确保它只接受良好和正确的文件。
你可以通过 .claude/hooks.mjs
文件创建自己的钩子,例如:
// .claude/hooks.mjsimport { execSync } from'child_process'; import path from'path'; // 编辑文件前运行的钩子exportasyncfunctionpreEdit({ filePath, oldContent, newContent }) { // 检查是否编辑 TypeScript/JavaScript 文件if (filePath.match(/\.(ts|tsx|js|jsx)$/)) { // 确保文件在编辑前格式正确try { execSync(`yarn prettier --check "${filePath}"`, { stdio: 'pipe' }); } catch (e) { console.log('⚠️ 文件需要格式化 - 将在编辑后格式化'); } } // 防止编辑某些受保护的文件const protectedFiles = ['yarn.lock', 'package-lock.json', '.env.production', 'firebase.json']; const fileName = path.basename(filePath); if (protectedFiles.includes(fileName)) { thrownewError(`❌ 无法编辑受保护的文件:${fileName}`); } return { proceed: true }; } // 编辑文件后运行的钩子exportasyncfunctionpostEdit({ filePath, oldContent, newContent, success }) { if (!success) return; // 对 TypeScript 文件运行类型检查if (filePath.match(/\.(ts|tsx)$/)) { try { execSync(`npx tsc --noEmit --skipLibCheck "${filePath}"`, { stdio: 'pipe' }); } catch (e) { console.log('⚠️ 检测到 TypeScript 错误 - 请审查'); } } }
创建自定义斜杠命令
你也可以很容易地添加自定义斜杠命令。要添加命令,只需创建一个 .claude/commands
文件夹,添加命令名称作为带有 .md
扩展名的文件。你只需用自然语言编写这些,并且可以使用 $ARGUMENTS
字符串将参数放入提示中。
例如,如果我想输出一个测试,我可以创建 .claude/commands/test.md
:
# .claude/hooks/test.md 请为以下内容创建全面的测试:$ARGUMENTS 测试要求: - 使用 Jest 和 React Testing Library - 将测试放在 __tests__ 目录中 - 模拟 Firebase/Firestore 依赖项 - 测试所有主要功能 - 包括边缘情况和错误场景 - 测试 MobX 可观察状态变化 - 验证计算值正确更新 - 测试用户交互 - 确保在 afterEach 中进行适当清理 - 目标是高代码覆盖率
然后 /test MyButton
做的就是你期望的事情。你甚至可以有子文件夹 - 我们可以像 /builder/plugin
这样访问它们,这将匹配一个 builder 文件夹中的 plugin.md
文件。这就是我们如何轻松创建新的 Builder 插件。
记忆系统
—
另一个很酷的功能是你可以使用 #
符号超快地添加记忆。比如"新东西总是使用 MUI 组件",它会自动保存到最相关的文件中。
CLAUDE.md
文件可以是分层的,所以你可以有一个项目级别的,也可以在嵌套目录中有一个。它会查看所有这些,并在相关时优先考虑最具体的、最嵌套的。
你也可以将其保存到你想要在任何地方应用的全局用户记忆偏好中,或者特定于你并被 git 忽略的本地项目记忆。添加到任何这些文件中,它会为你编写。
当你想要正常的 UI 时
—
终端界面并不总是理想的。有时你只想像正常人一样点击和高亮文本。
这就是我们的 Builder.io 扩展的用途。你可以从你的 IDE 启动一个可视界面,它在底层与 Claude Code 完全一样工作。我们尽可能接近地逆向工程了它。你得到一个正常的聊天界面、实时预览,甚至可以切换到 Figma 风格的设计模式进行可视编辑。
你的整个团队都可以使用它——设计师、产品经理,任何人。他们可以创建原型、清理 UI,并提交 PR,而无需理解终端界面。
在 Builder 内部,我们一直在使用这个让我们的工程师专注于困难的工程工作,而其他团队处理 UI 细节和像素完美的实现。
然后,当我们的工程团队需要更新 PR 时,我们可以直接使用 @builderio-bot,Claude 会自动解决反馈并推送提交来解决问题。
< END >
推荐阅读:
用了 Claude Code,才发现 Cursor 是弱智。
更多 ↓↓↓ 关注公众号 ✔ 标星⭐ 哦