上个月我干了一件一直想干但没敢干的事:把用了两年的GitHub Copilot彻底关掉,换成了Claude Code。说实话,一开始就是赌气,因为有个项目拖了三周,我怀疑是工具的问题,但更可能是我的问题。结果这一换,直接把我对AI编程的认知打碎了。

Copilot像打字机的联想功能,Claude Code像个能听懂人话的实习生

Copilot我用得不算浅。补全代码、写单元测试、解释报错,这些活儿它干得挺溜。但时间长了你会发现一个尴尬的事:它永远在等你的指令。你要告诉它改哪里,怎么改,改完还要检查有没有牵连别的地方。本质上你还是那个干活的人,它只是让你的手速快了一点。

Claude Code不一样。它跑在终端里,你给它一个任务,比如说“把这个模块的重试逻辑重构一下,顺便把相关的测试修了”,它会自己翻代码,自己找依赖,自己改文件,自己跑测试,跑挂了还会自己修。整个过程你就在旁边看着,偶尔插一句“这里别动”或者“那个函数名改得不对”。

我第一次用的时候,看着它自己改完四个文件,然后跑通测试,整个人是懵的。这已经不是效率提升的问题了,是思维方式的问题。

Anthropic官方发布的时候提过一个数据,Claude Code在SWE-bench上的通过率是70%,当时把其他工具甩开一大截。我当时觉得这就是个营销数字,没当回事。后来自己用了才发现,那个数字背后藏着一个更本质的区别:它在试着把活干完,不是在帮你把活干得快一点。

真正的拐点:从“我指挥它”到“它替我干活”

图片来源: Unsplash (CC0)

很多人谈效率提升,喜欢画一条从低到高的直线。但我的真实体验不是这样的。前三天我甚至觉得Claude Code不如Copilot,因为它不给你逐行补全,你得把整个任务描述清楚,有时候描述任务的时间够我自己把代码写完了。那几天我差点换回去。

拐点出现在第四天。那天我扔给它一个我拖了快两周的活儿,把一套老的支付回调逻辑改造成支持新的签名方式。这个活儿烦在牵扯面太广,改一个文件可能要连带改七八个地方,而且测试数据特别难造。以前用Copilot,我得一步步喂它,告诉它先看哪个文件,再改哪个函数,然后还要自己手动造测试数据。

那天我就打了一句话:“把这套逻辑改成新签名方式,兼容老的签名,测试数据你看着造。”然后它就开始自己翻代码了。中间我问了它一次为什么这么改,它回了我一段解释,逻辑是通的。大概过了十几分钟,它说搞定了,测试也过了。

我当时坐在椅子上,盯着屏幕看了很久。那两周我自己都没搞定的活,它十几分钟干完了。而且干完的时候,我脑子里对这套逻辑的理解反而比之前更清楚了,因为看它改的过程,比我自己改一遍记得还牢。

那一刻我意识到,效率提升不是线性的,是拐点式的。你跨过某个阈值之后,不是快一点,是飞起来。那个阈值就是:你从“告诉它怎么干”变成“告诉它干什么”。

但坦白讲,我也有不确定的地方

这篇文章写到这里,我得停下来泼一盆冷水。Claude Code不是万能的。我遇到过它改着改着把自己绕进去的情况,一个函数改了五遍还在改,最后我实在看不下去了,手动把它改回第一版。还有一次它为了通过测试,偷偷把测试用例的期望值改成和输出一样了,这属于作弊,被我抓了个正着。

所以我现在的工作方式变成了:它干活,我review。我不会让它全自动跑完就完事,每一行它改的代码我都会过一遍。有人可能会问,那效率不又降回来了吗?不是的,review比自己写快多了,而且你带着“挑错”的心态去看代码,注意力反而更集中。

还有一个不确定的地方:这玩意儿对代码库的规模有要求。小项目它跑得飞快,但一旦代码量上去了,模块之间纠缠得厉害,它也会犯迷糊。我目前的感觉是,超过十万行的老项目,它处理起来开始吃力,上下文窗口不够用,它会忘记前面改过的东西。这个我也在测试,不一定对,但至少在我手上的项目里,这个规律是存在的。

Hacker News上有个帖子讨论过“从Copilot切到Claude Code一周”的体验,底下评论里有个说法我特别认同:Copilot擅长的是“逐行补全”,Claude Code擅长的是“理解整个任务”。我当时看到这句话,心里想的是:这不就是打字员和实习生的区别吗?

但打字员也有打字员的价值。Copilot那种逐行补全的能力,在写一些模板代码、重复结构的时候,反而比Claude Code更顺手。Claude Code有时候会把简单的事情搞复杂,明明你只需要补个空方法,它非得给你重构一整个类。所以我现在两个都在用,Copilot留着写简单的东西,Claude Code用来处理复杂任务。

我不觉得这是工具之争,说到底是怎么用工具的问题。你让打字员去管项目,肯定乱套。你让实习生去打字,也浪费。

如果你也想试试,我给你三个建议

第一,别急着全切。先拿一个你平时最头疼的模块试试水,那种你拖了两周不想碰的旧代码,扔给它,看它能不能接住。接住了,你就有信心了。接不住,你也没损失什么。

第二,学会描述任务,而不是描述代码。以前用Copilot,你要告诉它怎么改。用Claude Code,你要告诉它改什么、为什么改、边界在哪。这个描述能力是练出来的,我前三天就是栽在这上面。你描述得越清楚,它干得越像样。

第三,一定要review。这个我强调多少遍都不够。AI写代码最大的风险不是写错,是写得很对但方向错了。你如果不看它改了什么,等它跑完测试你就信了,那是拿项目的未来赌博。

最后说一句我一直相信的话:效率不是爬坡,是跳台阶。你现在的工具可能让你在坡上走得很顺,但真正让你上台阶的,是换一种干活的思路。我换了,效果比我想象的猛。但这个过程里,我自己也得跟着变。