我以前一直用 Cursor。 不是不好用。恰恰相反,它太顺了。写 React 的时候,一个 useEffect 刚敲出来,后面半截像从键盘缝里自己长出来。很多重复代码,我甚至还没想完整,它已经替我铺好了。 可用久了,总觉得有点隔。 它在编辑器旁边,像一盏小灯。你问一句,它亮一下。亮完以后,房间还是你
我以前一直用 Cursor。
不是不好用。恰恰相反,它太顺了。写 React 的时候,一个 useEffect 刚敲出来,后面半截像从键盘缝里自己长出来。很多重复代码,我甚至还没想完整,它已经替我铺好了。
可用久了,总觉得有点隔。
它在编辑器旁边,像一盏小灯。你问一句,它亮一下。亮完以后,房间还是你自己收拾。
找文件,翻引用,跑测试,看 CI 日志,再把一截报错复制回去。
这一套动作我做得太熟了,有时候手比脑子快。
真正让我换习惯,是一个半夜的 CI。
本地全绿,GitHub Actions 里红了一片。报错不在业务代码里,卡在 @app/shared 的类型上,说后端生成出来的 OpenAPI 类型和前端引用的字段对不上。看着像前端,往下追又牵到 packages/api 里的 schema。再往下,生成脚本、workspace 依赖、缓存,全都挤在一起。
这种问题很烦。
它不是那种“我不会”的烦,是“我知道怎么查,但我现在真的不想查”的烦。
茶已经凉了,杯底有点涩。我在终端里敲了一下:
claude
我本来只是想让它帮我看那段日志。
它先看了 pnpm-workspace.yaml。
然后去翻 packages/shared 和 packages/api。
又把 CI 里的命令和本地脚本对了一遍。
到这里我才意识到,它不是在给我回消息,它是在项目里走路。它跑了一次 typecheck,确认本地能复现,然后找到 schema 里少了一个 nullable,改完重新生成类型,再把相关测试跑了一遍。
终端停在绿色的 PASS 上。
我看着那一行,愣了几秒。
不是因为它多聪明。老实说,那次改动并不高级。
让我在意的是,它把中间那段来回搬运的活接过去了。

Claude Code 是 Anthropic 做的命令行编程工具。
这句话很像产品介绍,我不太喜欢这么写。但确实得先说清楚:它不是编辑器侧边栏里的聊天框,而是直接待在终端里。
你平时敲 git status、pnpm test、npm run build 的地方,就是它工作的地方。
这带来的变化挺细的。
以前我问 AI:
这段 CI 报错是什么意思?
现在我更可能说:
看一下这次 CI 失败。
先找第一个真正的错误。
不要直接改 generated 文件。
如果是 schema 问题,先说明你准备改哪里。
这几句话一点也不优雅,但很管用。
Claude Code 会自己读文件、搜引用、跑命令。你不用把上下文一点点喂给它,它会去现场看。也正因为它会去现场看,你就得提前把路障摆好。
比如我让它把账单导出的 CSV 从同步接口改成异步任务,就不会只说“优化一下导出”。
那太危险。
我会写得很死:
只看 billing export 这条链路。
先画出当前同步导出的调用路径。
只把 CSV 生成搬到队列 worker。
不要改已有报表接口。
不要改 CSV 字段顺序。
跑 billing、export、worker 相关测试,跑完停下。
这像不像给同事留便签?
挺像的。
只是这个同事手很快,而且不会因为你话没说清楚就主动停下来等你。
后来我才知道,大家管这种工作方式叫 Agentic loop。
听起来有点硬。
放在日常里,其实就是一件事:它会把上一步的结果拿来决定下一步。
测试红了,就看报错。
报错指向类型,就追类型来源。
类型来自生成文件,就回去看 schema。
命令失败了,就换一条路再试。
这正是它好用的地方,也正是它容易添乱的地方。
我有一次只想把同步导出拆到 worker,它顺手把另一条报表接口也“统一”了。代码没坏,测试也过了。但我看 diff 的时候,心里还是一沉。
因为那不是这次要改的东西。
它不是故意越界。它只是看见了一个它觉得可以顺手修的地方。
人写代码也会这样。
只是人写到一半会去倒水,会被微信打断,会突然想起“算了别碰这个”。AI 不会。它的循环还在转,它就继续转。
所以复杂一点的活,我现在会先让它只读。
先不要修改文件。
读相关代码,列出你准备改的文件和验证方式。
Claude Code 里有 Plan 模式,适合做这个。只想,不动手。以前我嫌慢,现在不嫌了。
返工比计划慢多了。
刚开始用 Claude Code,我每天都在重复同几句话。
用 pnpm。
这是 monorepo。
OpenAPI 类型是生成出来的,不要手改。
数据库查询必须带 tenant_id。
worker 要考虑重试和幂等。
别顺手重构。
说到第三天,我自己都烦了。
这些东西应该放进项目根目录的 CLAUDE.md。它有点像贴在工位边上的纸,不是给外人看的介绍,而是告诉后来的人:这个项目有些东西别乱碰。
我现在会写得很具体。
# CLAUDE.md
- 使用 pnpm workspace,不要切到 npm 或 yarn
- packages/shared/src/generated/* 是生成文件,不要手改
- OpenAPI schema 改完后运行 pnpm generate:types
- 所有数据库查询必须显式带 tenant_id
- worker 任务要考虑重试和幂等,不要只写 happy path
- 修改前先说明计划,不要顺手重构未涉及模块
- 完成后至少运行 pnpm typecheck --filter @app/api 和相关测试
不用写太长。
我试过把它写成半份团队手册,结果反而不如这几条。重点太多,就等于没重点。
有一条我现在几乎每个相关项目都会写:
不要直接编辑 packages/shared/src/generated/openapi.ts。
如果类型不对,先改 schema,再重新生成。
这条很窄。
但它救过我几次。
Claude Code 看到一个类型错误,真的会想去 generated 文件里补一行。它不是不知道那是生成物,它只是离眼前的红线太近了。
人也是这样。
赶时间的时候,谁没想过先把红线压下去再说。
Claude Code 能改文件,也能跑命令。
这句话说出来很平,实际用的时候,分量不轻。
默认模式下,它在执行一些操作前会问你。你按 y,它继续。
一开始我觉得麻烦。后来有一次,它准备跑一个脚本,我正好在回消息,眼睛没认真看,手已经按下去了。
命令不算危险,只是环境不对。
终端刷过去一屏的时候,我人清醒了。
没出事,但那一下够了。
现在看到这些词,我会慢一点:
rm
git clean
git reset
数据库迁移
部署命令
自动接受编辑可以用。
Plan 模式也可以常用。
但陌生项目里,我不会把权限开得太豪迈。尤其是迁移脚本、清理命令、部署命令。多确认一次,不丢人。
小改动不一定值得叫 Claude Code。
改一个枚举名,补一行文案,自己动手更快。
它真正有价值的地方,是那些要跨几层上下文的活。
比如 CI 失败要从日志追到 schema。
比如把同步导出迁到 worker,还得保留接口响应结构。
比如梳理租户隔离,从请求入口一路追到数据库查询和缓存 key。
比如给十几个 tRPC procedure 接审计日志,不能漏,也不能把每个地方都改出一点不同。
这种活,人做当然也能做。只是过程太碎:开文件、搜名字、跑测试、看报错、再开另一个文件。Claude Code 能把这些碎动作连起来。
但我不会让它一口气跑完。
我通常让它先改两个文件。
停。
我看 diff。
方向对,再继续。
这不是仪式感。只是我不想等它把同一个误解复制二十遍以后,再坐下来慢慢删。
Claude Code 后来长出了不少能力。
MCP 可以接 GitHub、数据库、浏览器。以前你把信息搬给它,现在有些现场它能自己去取。
Hooks 可以在关键节点跑脚本,比如格式化、测试,或者在危险命令前拦一下。
Subagents 适合大任务。一个看前端,一个看后端,一个专门审 diff。它们不用挤在同一个上下文里熬到最后。
Skills 像给它装一本小册子,把固定流程打包进去。先澄清需求,再写计划,再执行,最后验证。听着普通,但普通的规矩最容易被省掉。
Agent SDK 更底层一点,是拿它的 agent 能力去做自己的工具。
还有 /teleport,可以把 Claude Code on the web 里的会话拉回本地终端。我一开始觉得这个功能有点花,后来有次出门前在网页上开了个长任务,回来接到本地继续,才觉得它不是噱头。
这些都好。
但不用一上来全接。
先把 CLAUDE.md 写好,把权限想清楚,再考虑 MCP、Hooks、Subagents。桌子还没擦干净,就别急着摆一排工具。
这点要一直记着。
Claude Code 会犯错。
它会理解错需求,会改多,会忘掉前面对话里的限制。上下文太长以后,它有时候像熬夜到三点的人,前面答应过的话,后面又绕回去了。
它也会偷懒。
不是人那种偷懒,是验证不够。
有一次它只跑了相关单测,绿了,然后说完成。我顺手跑了一遍全量测试,另一个包红了。问题不大,但从那以后,我对“完成”两个字没那么信了。
我会看四样东西。
计划。
diff。
测试。
有没有动不该动的文件。
这几步很朴素。朴素到不像什么 AI 时代的新方法。但真的有用。
还有钱。
Claude Code 可以用 Claude.ai 的 Pro 或 Max 订阅登录,也可以通过 Anthropic Console 走 API 计费。具体规则会变,还是看官方页面最稳。
我不会为每个小任务都打开它。
但当一件事需要读代码、补测试、改实现、跑验证,它省下来的不是“效率翻倍”那种漂亮话。
更像是晚上少皱几次眉。
Claude Code 没有把程序员从代码里拿走。
它只是把一部分来回搬运的活接过去了。
以前我在聊天框和编辑器之间复制。现在它自己站在项目里,读一点,改一点,试一点,再回来给我看结果。
人的位置确实变了。
不是消失,是往后退了半步。
你更常做的是判断:范围有没有散,测试够不够,生成文件有没有被手改,这个 diff 能不能合。
我挺喜欢这种变化。
但也不想把它讲得太神。
它就是一个住在终端里的搭档。手快,偶尔冒进,有时很贴心,有时让人想按住它的手说:先别动。
屏幕安静下来时,光标还在那里闪。
我看一眼 diff,再看一眼测试结果。
然后才按下那个 y。
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断