我不相信它真的能行。任务很明确但很繁琐:把 147 个测试文件从 Jest 迁移到 Vitest,更新所有的 mock 模式,把 jest.fn() 替换成 vi.fn(),换掉测试运行器配置,确保每一个测试仍然通过。根据我的经验,这种迁移通常需要一个开发者花两到三个整天做令人麻木的查找替换工作,中间还会被诡异的测试失败打断——后来发现是两个框架之间微妙的 API 差异。
我打开终端,输入 claude,描述了这个迁移任务。然后去厨房泡咖啡。七分钟后回来时,Claude Code 已经修改了 147 个文件,更新了 package.json,创建了新的 vitest.config.ts,调整了 23 个使用 Jest 特有定时器 mock 的测试文件(正确地替换为 Vitest 的 vi.useFakeTimers()),并且正在运行完整的测试套件。144 个测试通过了。三个失败了——都是因为我写的一个自定义 Jest matcher 需要手动转换。七分钟的计算时间,大概 20 分钟的审查和三处手动修复。一个两天的任务,在咖啡凉之前就搞定了。
那是四周前的事了。从那以后,每当遇到对编辑器内联 AI 来说太大、但手动做又太无聊的任务时,Claude Code 就是我伸手去拿的工具。这是一个没有图形界面的 CLI 工具如何成为我工具箱里最强大的编码助手的故事。
01 Claude Code 到底是什么
Claude Code 是 Anthropic 的智能编码工具。它运行在你的终端里——不在 IDE 里,不在浏览器里,只是一个通过 claude 命令调用的 CLI。你用自然语言描述一个任务,然后 Claude Code 读取你的文件、规划方案、编写代码、创建和修改文件、运行终端命令、检查结果,反复迭代直到任务完成。底层使用 Anthropic 的 Claude 模型(目前根据你的计划是 Claude 3.5 Sonnet 和 Claude 4 Opus)。
访问权限通过 Claude Pro 订阅获得,每月 20 美元(包含通用 Claude 使用加上 Claude Code),或者更高档位的 Claude Max 订阅用于更大的使用量。没有单独的 Claude Code 订阅——它和你的 Claude 账号绑定。
与 Cursor 或 Windsurf 等工具的关键区别:Claude Code 不是编辑器。它不替代你的 IDE。它是一个自主智能体,与你使用的任何编辑器并行工作。你可以在一个窗口里打开 Cursor,在另一个终端里运行 Claude Code,它们完美互补——Cursor 用于交互式的、亲力亲为的编码,Claude Code 用于大型的、可委派的任务。
关系可以这样理解:Cursor 是坐在你旁边、在你开车时协助你的副驾驶。Claude Code 是你可以把任务交给他然后走开、完成后回来检查的同事。
02 智能体编码:在实践中意味着什么
"智能体"这个词在 AI 营销中被到处乱用,通常没有什么实质意义。对 Claude Code 来说,它指的是一些具体而有形的东西:这个工具可以自主采取多步骤操作,利用每一步的输出来决定下一步。
这是上周的一个真实例子。我让 Claude Code"为支付处理模块添加全面的错误处理,包括瞬时故障的重试逻辑、带关联 ID 的正确日志记录,以及永久失败交易的死信队列集成。"
接下来发生的不是一次简单的代码生成。Claude Code:
- 读取了现有的支付模块文件(4 个文件)以了解当前结构
- 读取了项目中其他模块的现有错误处理模式以保持一致性
- 读取了日志工具以了解已在使用的关联 ID 格式
- 创建了一个新的错误分类系统,区分瞬时错误和永久错误类型
- 修改了支付处理器,用 try-catch 块包装每个步骤,并附带适当的错误分类
- 为瞬时故障添加了带抖动的指数退避重试逻辑
- 与现有的 SQS 死信队列集成(它在我们的基础设施代码中找到了 DLQ 配置)
- 更新了日志调用,从现有请求上下文中包含关联 ID
- 运行了现有测试套件以验证没有破坏任何东西
- 为错误处理路径生成了新的测试
- 运行新测试,发现两个失败,调试了它们(一个是 mock 设置问题,一个是重试计数的差一错误),修复了两个,再次运行套件——全绿
整个序列花了大约 12 分钟。我在终端里看着它,偶尔滚动浏览它产生的 diff。没有任何时刻需要我介入。最终的代码干净、与我们现有模式一致,而且——关键的是——它正确识别到我们已经有了 DLQ 设置并与之集成,而不是创建一个新的。这种代码库感知能力是区分智能体工具和高级自动补全的分水岭。
GitHub 上一个关于 Claude Code 的讨论帖里有条评论引起了共鸣:"Copilot 和 Claude Code 的区别就像计算器和会计师的区别。一个帮你计算。另一个理解业务。"这个类比很好地描述了 Claude Code 的运作方式——带着对项目上下文的真正理解,而不只是看你正在编辑的那个文件。
03 真正有效的多文件理解能力
Claude Code 读取和理解你整个代码库的能力是它最重要的功能,而且效果比我用过的任何工具都好——包括我同样评价很高的 Cursor Composer。
区别在于范围和持续性。当你在一个项目目录中启动 Claude Code 会话时,它会索引项目并建立一个架构的心智模型——目录结构、关键文件、模式、依赖关系、配置。当你要求它做一个改动时,它不只看直接相关的文件;它会考虑整个代码库的连锁反应。
一个具体的例子:我让 Claude Code"在整个代码库中把 User 模型重命名为 Account"。这听起来简单但在大型项目中其实很可怕——你需要更新模型定义、所有导入、所有数据库查询、所有 API 路由、所有序列化器、所有测试、所有类型定义,以及任何引用旧名称的文档。漏掉一个就会得到一个可能几天都不会浮现的运行时错误。
Claude Code 有条不紊地处理了它。它找到了 67 个引用 User 模型的文件,按类型分类(模型定义、导入语句、数据库查询、API 路由、测试、类型),然后按依赖顺序进行更改——先更新模型,然后类型,然后导入,然后业务逻辑,然后测试。它甚至找到了一个工具文件中的注释"// Fetch user data"并更新为"// Fetch account data"。完成后我运行了完整的测试套件——全部通过,零回归。
Cursor 的 Composer 能做到这个吗?如果我给它指定正确的文件,可能可以。但 Claude Code 自己找到了所有 67 个文件,不需要我指定其中任何一个。这种自主发现能力才是关键的差异化因素。
04 Git 集成:内置的安全网
Claude Code 设计中最聪明的一点是它的 Git 集成。在进行更改之前,它会检查你的 Git 状态。如果你有未提交的更改,它会警告你。完成任务后,它可以用描述性的信息创建一个 commit(你在它提交之前批准信息)。如果出了问题,你可以用一条 git 命令回滚整个更改集。
这听起来很基础,但它解决了智能体 AI 工具的一个真实焦虑问题。使用其他多文件编辑工具时,我总是担心 AI 做大范围的改动后我得花时间理清。有了 Claude Code 的 Git 集成,每个任务都是原子性的——要么成功并被提交,要么不成功我就回滚。没有中间状态,没有"这 30 个改动的文件里哪个搞坏了东西"。
我形成了一个工作流,在每个主要的 Claude Code 任务之前创建一个新分支:git checkout -b claude/add-error-handling。Claude Code 在那个分支上做更改,我对 main 审查 diff,如果一切看起来没问题就合并。如果不行,我删掉分支用更好的提示词重试。干净、安全、可逆。
Indie Hackers 上一个关于 AI 辅助开发的帖子里有人把这个模式描述为"以版本控制为安全网的 AI 结对编程",完全正确。Git 集成不只是一个便利功能——它是让智能体编码在生产代码库上感觉足够安全、可以真正使用的关键。
05 CLAUDE.md:那个真正重要的配置文件
类似 Cursor 的 .cursorrules,Claude Code 支持一个项目级的配置文件叫 CLAUDE.md。这是你项目根目录下的一个 Markdown 文件,为 Claude Code 提供关于项目的持久上下文——编码标准、架构决策、首选库、应该避免的事项。
我目前在一个 TypeScript monorepo 里的 CLAUDE.md 包含以下章节:
- 架构概述:项目结构的简要描述——哪个目录包含什么、各层如何交互、入口点在哪里。这让 Claude Code 不用在每次会话中重新发现架构。
- 编码规范:我们团队的风格偏好——函数式优于类、用 Zod 做验证、用 Effect 做错误处理、所有导出函数必须有显式返回类型。
- 测试模式:使用 Vitest,组件测试用 Testing Library,在 HTTP 层(而非函数层)mock 外部服务,始终测试错误路径。
- 避免事项:永远不用
any,永远不用enum(用 const 对象代替),测试代码中永远不从 barrel 文件导入(它会拖慢测试执行)。 - 基础设施上下文:我们部署到 AWS ECS,使用 RDS PostgreSQL,SQS 做队列,S3 做文件存储。这帮助 Claude Code 生成有部署意识的代码。
一个写得好的 CLAUDE.md 的效果是显著的。没有它,Claude Code 生成的是不错的通用代码。有了它,Claude Code 生成的代码看起来像一个资深团队成员写的。第一次有同事审查一个 Claude Code 的 PR、不知道是 AI 生成的、并且没有评论就批准了——那是我的一个里程碑时刻。
06 Claude Code vs. Cursor Composer:不同的工具,不同的任务
既然这两个工具在我的工作流中重叠最多,让我精确说明什么时候用哪个:
- Cursor Composer 用于我想亲力亲为的任务——交互式地构建新功能、探索不同的方案、在每一步做决策。Composer 的可视化 diff 展示和按文件接受/拒绝的工作流让我始终在循环中。
- Claude Code 用于我想委派的任务——迁移、大型重构、全面的测试生成、代码库范围的模式变更。那些期望结果很明确、执行过程很机械的任务。
关键洞察:Claude Code 更擅长长时间、自主的工作序列。Cursor Composer 更擅长协作式、迭代式的工作。我 70% 的编码时间用 Cursor(交互式、创造性的部分),30% 用 Claude Code(机械式、大规模的部分)。但那 30% 大概占了我一周发出的总代码变更的 50%,因为那些是高产量的任务。
Anthropic 博客评论区有人问为什么有了 Cursor 还要用 Claude Code。答案跟你有铲子为什么还要用挖掘机一样——都是挖掘工具,但一个是为完全不同的工作规模设计的。
组合使用
我理想的工作流是把两者结合起来。我用 Cursor 做功能原型,通过交互式的 Composer 会话把形状做对。然后切换到 Claude Code 做规模化的工作:"现在把同样的模式应用到其他 15 个模块"或者"为我们刚写的所有东西生成测试。"Claude Code 从 Cursor 停下的地方接手,读取 Cursor 帮我写的代码,并在整个代码库中一致地扩展它。
07 诚实的局限
四周使用下来,以下是 Claude Code 让我感到沮丧的地方:
- 没有可视界面:一切都在终端里发生。没有 diff 查看器,没有语法高亮的变更预览,没有点击接受的界面。你在终端输出中看到变更,之后在编辑器里或通过
git diff审查。对于终端熟手来说没问题。对于喜欢可视化工具的人来说,这是一个显著的障碍。 - Token 消耗:复杂任务会快速消耗 token。在 Claude Pro 每月 20 美元的计划上,有使用限额,如果大量使用 Claude Code,在高强度工作周可能会触顶。每月 60 美元或 100 美元的 Max 计划给了更多空间,但这是实实在在的成本考量。我发现工作日上午(美国时间)是高峰,我有时会遇到速率限制。
- 偶尔过度工程:Claude Code 有时会生成超出必要的抽象。我要求一个简单的工具函数,结果得到了一个完整的模块,带工厂模式、依赖注入和全面的类型系统。代码技术上是正确的、结构良好的,但对需求来说过度构建了。在提示词中更具体一些有帮助,但这是一个持续存在的倾向。
- 在非常大的代码库上较慢:在一个 50 万行以上代码的 monorepo 中,初始索引需要一些时间,Claude Code 的响应在处理更多上下文时明显变慢。对较小的项目(10 万行以下),它很快。对大项目,需要耐心。
- 网络访问限制:Claude Code 处理你的本地文件并可以运行本地命令,但它不能在执行过程中浏览文档或获取远程资源。如果它需要不熟悉的库的信息,可能会编造 API 细节而不是承认不确定。始终审查使用不太常见的库的生成代码。
08 四周后我的 Claude Code 工作流
- 01 创建分支 — 在任何 Claude Code 任务之前,我创建一个专用分支。这让 AI 生成的变更隔离开来,便于审查或回滚。
- 02 任务描述 — 我写详细、具体的提示词。不是"添加测试"而是"为支付处理模块添加 Vitest 测试,覆盖成功支付、拒绝卡片、网络超时、幂等性键冲突和 webhook 投递失败。使用 __fixtures__/payments 中的现有测试夹具。"
- 03 监控 — 对于大型任务,我看着终端确保 Claude Code 走在正确的方向上。如果它开始走偏,我中断(Ctrl+C)并重新引导。
- 04 审查 — 当 Claude Code 完成时,我做彻底的 git diff 审查。我读每一个改动的文件,不只是摘要。这是你不能跳过的步骤。
- 05 提交和 PR — 如果变更看起来没问题,我让 Claude Code 创建 commit(用我审核过的信息)并像任何其他代码变更一样开 PR。
四周的元学习:Claude Code 输出的质量与你的 CLAUDE.md 文件质量和提示词的具体程度成正比。在两者上投入时间,这个工具会变得异常强大。在任何一个上偷懒,你花在修复输出上的时间会跟手动做任务一样多。
09 开始使用 Claude Code
Claude Code 需要 Claude Pro(每月 20 美元)或 Claude Max 订阅。安装只需一条 npm 命令(npm install -g @anthropic-ai/claude-code),然后用你的 Claude 账号认证。设置不到两分钟。
我的建议:从一个分支上的有限任务开始。比如"把这个配置文件从格式 X 迁移到格式 Y"或者"为这个模块添加错误处理"。感受一下 Claude Code 如何读取你的代码库、如何规划、以及你的提示词需要多具体。然后逐渐增加你委派的任务的范围和复杂度。
准备好体验智能体编码了吗?在 acccup.com 入手一个 Claude Code 账号——他们以有竞争力的价格提供 Claude Pro 和 Max 账号,即时交付。无论你想要用 Claude Code 做个人项目还是需要 Max 级别的访问来应对繁重的专业工作,acccup.com 帮你快速设置好,支持可靠。你的测试套件会感谢你的。
四周前,我对一个没有 GUI 的 CLI 工具能否成为正经的编码助手持怀疑态度。现在我的 commit 历史里满是 Claude Code 的工作——干净、测试良好、与我们代码库的模式一致——而我每周都收回了以前花在开发中机械性、重复性部分上的好几个小时。Claude Code 没有取代我作为开发者的角色。它取代的是我工作中本来就不需要人类来做的那些部分。而这,说实话,是任何 AI 工具为我的职业生涯做过的最好的事情。