这两年市面上的 AI 编程工具出得有点密。
IDE 里的 Copilot,单独的 Cursor,命令行里的 Claude Code,网页端的 ChatGPT 和 Claude,VS Code 插件里的 Agent,各家国产厂商的 AI 助手------隔三差五就冒出一个新名字,每一个都标榜自己"独家""革命""下一代",每一个的官方文档都自成一套,每一个都鼓励你按它的方式去配置、去使用、去改造工作流。
这些工具的"差异",全都在表面。它们的"内核",是同一台机器。
这一篇文章想把这件事讲清楚。一旦你看清这一点,市面上的 AI 编程工具,对你来说就不再是"很多个要学的东西",而是"同一个东西的不同皮肤"。新工具再来,你也不再慌。
一、为什么我们会以为它们是"很多个东西"
讲清楚"它们其实是一个东西"之前,先讲清楚"它们为什么看上去像很多个"。
第一层:交互方式不一样。有的是按 Tab 接受补全,有的是按 Cmd+K 改一段选中的代码,有的是命令行里打字,有的是网页对话框,有的是插件里点按钮。同一个动作"让 AI 改这段代码",在不同工具里,你的手指要做完全不同的事。
第二层:配置方式不一样。Copilot 鼓励你写好注释,Cursor 鼓励你配 .cursorrules,Claude Code 鼓励你写 CLAUDE.md,Cline 让你管 .clinerules------每家都有自己的"喂养手册",每家的语法和约定都不一样。
第三层:官方话术不一样。Composer、Agentic Mode、Plan Mode、Auto Mode、Workflow Engine------名字一个比一个唬人,每个 release notes 都在告诉你"这一版我又领先了"。
这三层叠在一起,营造出一种强烈的"它们是不同物种"的错觉。
但等你真的几个工具都用过、都翻过它们的官方文档、都被它们的某个版本背叛过一次之后,你会慢慢发现一件事:
它们让你做的那些"配置",底下其实是在解决同一类问题。它们标榜的那些"独家能力",底下其实是在用相似的几块零件。差异是真的,但差异都在表面那一层。
往下挖一层,只有三块骨头。
二、那三块骨头------CAT 三件套
为了讲明白,我给这三块骨头起了个名字,就叫------CAT 三件套:
- C = Context(上下文)
- A = Agent loop(智能体循环)
- T = Tools(工具调用)
这三个字,组成了今天所有 AI 编程工具的全部内核。不是其中某一个,是全部。Copilot 是这三件套,Cursor 是这三件套,Claude Code 是这三件套,Cline 也是。
这三件套之外,各家加的,全是装饰 。是 UI、是快捷键、是配置文件名、是 changelog 上写的"新功能"。装饰当然有意义,装饰决定了用起来顺不顺手------但它不决定你用 AI 编程的天花板。
天花板,是这三件套决定的。
下面我一个一个拆。
C ------ Context:模型只看你给它的那一团
模型不知道你的项目长什么样。它什么都不知道。
它能"知道"的,只有那一次推理时被塞进上下文窗口的那一坨字符。窗口里有什么,它就能用什么;窗口里没的,它就当不存在。
听起来很简单,但所有 AI 编程工具的差异化,有一半其实在这件事上做文章:
- 补全类工具(Copilot 这一类)给模型看的,是你光标周围的代码 + 同项目里最近打开过的文件------讲究的是低延迟,塞得少、出得快;
- IDE 里的对话类工具(Cursor 这一类)给模型看的,是你主动 @ 出来的文件 + 一份项目级的 rules + 一个项目索引检索回来的相关片段------把选择权一部分给用户,一部分给检索;
- Agent 类工具(Claude Code、Cline 这一类)给模型看的,是一份项目说明文件 + Agent 自己读进来的文件 + 它执行过程中产生的中间结果------用户只给方向,模型自己决定每一步往窗口里塞什么。
每家都在解决同一个问题------有限的窗口里塞什么进去最值。每家的策略不同,各有各的取舍:补全类选的是低延迟、轻上下文,IDE 对话类选的是用户主动 @ 加索引,Agent 类选的是让模型自己决定读什么。
但这些都是策略层的差异 。底下那个"模型只看窗口里的东西"的事实,没一家变得了。
你只要心里铭记这一层,就会发现一件事:所有工具的"我项目变大了它就不行了"、"它老瞎编不存在的函数"、"它改完忘了原来的需求",根本上都是同一个问题------上下文管理失败。换工具不解决,换思路才解决。
A ------ Agent loop:一切"自动化"的真面目
第二件套------Agent 循环。
不要被各家花里胡哨的命名吓到------什么"Composer 模式"、"Agentic Mode"、"Plan Mode"、"Auto Mode"、"Workflow Engine"------它们底下,是同一个循环:
观察 → 思考 → 行动 → 观察 → 思考 → 行动 → ......
ReAct 论文 2022 年就把这件事讲完了。今天你看到的所有"AI 自动帮你写代码"的工具,内核都是它的工程化变体:
- 模型看一眼当前状态(观察:用户问题 + 已读的文件 + 上一步结果);
- 模型决定下一步干什么(思考:决定调用哪个工具、传什么参数);
- 工具被调起来,执行,把结果塞回上下文(行动);
- 回到第一步,再来一遍。
直到模型决定"我搞完了",循环停下,把最终答案吐给你。区别只在:
- 这一轮模型一次能调几个工具(并行还是串行);
- 模型自己反思的频率有多高;
- 出错了重试几次;
- 跑多久之后强制让用户介入。
听上去差异巨大,本质上都是给同一个循环加不同的"刹车"和"油门"。
一旦看清这一点,就再不被各家的"独家工作流"忽悠了。任何"独家工作流",底下都是同一个循环,只是参数不同。要选,就比那几个参数:每轮工具数、最大轮数、自动还是手动 confirm、出错重试策略------这几条比完,工具就比完了。
T ------ Tools:模型伸出手的方式
第三件套是工具调用------模型不只能"说话",它还能"做事"。
但模型做的事,全部是通过工具完成的。读文件,是工具;写文件,是工具;运行命令,是工具;搜索代码库,是工具;查 git diff,是工具;调外部 API,还是工具。
所谓"AI 编程工具",本质上就是给模型挂上了一组让它能动你代码的工具。
各家的"独家能力",绝大多数其实是"挂了一个独家工具":
- 项目级语义检索------挂了一个让模型能在项目里查相关代码的工具;
- 内置终端------挂了一个让模型自己跑命令的工具;
- 浏览器自动化------挂了一个让模型控制浏览器的工具;
- MCP 支持------挂了一个用户自定义工具的协议。
MCP (Model Context Protocol)这件事---它把"工具"这件事直接变成了一个开放协议。任何工具,只要按这个协议实现,就能挂到任何支持 MCP 的 AI 工具上。
什么意思?意思是连"工具"这一层,各家都不再独家了。今天 Cursor 的独家,明天可能就是 Claude Code 的标配。一切都在朝"通用骨架 + 可插拔工具"这个方向走。
骨架谁都一样,挂什么手脚------你自己挂。
三、用三件套,把市面上的工具摊开看
把 CAT 三件套握在手里,我们回过头把市面上的工具按类别摊开,放进同一张桌子上------
| 工具类别 | C 怎么管 | A 怎么转 | T 挂了什么 |
|---|---|---|---|
| 代码补全类(Copilot 这一类) | 光标附近 + 最近文件,自动喂 | 单步,无循环(纯补全) | 几乎没有,只有"接受/拒绝" |
| IDE 内对话类(Cursor 普通模式这一类) | 用户 @ 文件 + 项目索引 | 单步对话 | 编辑当前选区/文件 |
| IDE 内 Agent 类(Cursor Agent / Cline 这一类) | 用户 @ + 索引 + Agent 自己读 | 多轮循环 | 多文件读写、终端、有的支持浏览器 |
| 命令行 Agent 类(Claude Code 这一类) | 项目说明 + Agent 自己 grep/read | 多轮循环,自由度最高 | 文件、bash、搜索、MCP |
| 网页对话类(ChatGPT / Claude 网页) | 用户手动粘贴 | 单步对话 | 几乎没有(代码解释器除外) |
摆完之后你会发现一件事------
所有工具的差异,都落在这三栏里了。没有第四栏。任何一个工具的"独家魔法",归根到底都是"它在 C 里做了什么 / 它的 A 怎么转 / 它的 T 挂了什么"。
更有意思的是,这张表会让你在选工具的时候第一次心里有谱:
- 做的是单文件小修小补------A 单步的就够,代码补全类最快;
- 做的是几十个文件的重构------A 必须是多轮的,T 必须能多文件读写,Agent 类才合适;
- 要让它跑命令、看输出、自己迭代------T 必须包含 bash,命令行 Agent 这一类才能干;
- 有一堆自定义业务逻辑要让 AI 用------T 要支持 MCP,这是当下的硬指标;
- 对项目隐私敏感、不想全量索引------C 那一栏要选"用户主动 @"型的,IDE 对话类就行。
选工具,不再是"哪个最火",是"我这件事卡在 C / A / T 哪一栏"。
新工具明天再出几个,你照样把它塞进这张表,几分钟就知道它能不能用、用在哪。
四、为什么这件事重要------它直接决定你的"时间投入"该投在哪
写到这,我想讲讲这个视角真正的杠杆在哪。它不是为了让你"看穿工具",它是让你停止把时间花在错地方。
过去最容易犯的一个错,是把时间花在"学每个工具的独家配置"上。
这家鼓励你这样写 rules,那家鼓励你写另一种 markdown 喂养文件,再来一家又有一套自己的层级约定------每出一个就跟着学一遍,认认真真背过去。然后呢?这些东西要么半年一变,要么换个工具就作废,要么模型升级一次就半失效。看着学了一堆,真正能跨工具留下的,几乎没有。
而真正应该投入时间的地方,是那三件套本身:
- 上下文里塞什么最值------这件事的判断,在一个工具里训练出来的直觉,在另一个工具里完全有用;在明年新出来的某个 Agent 里还是有用;
- Agent 循环怎么稳------这件事的判断,今天搞清楚了,再来几个 Agent 框架,你都能很快上手;
- 工具该挂哪些、怎么用最值------这件事的判断,在 MCP 这种开放协议铺开之后,几乎是跨工具通用的硬通货。
把时间花在 C/A/T 上,是复利投资。每多懂一分,所有工具上你都多一分能力。
把时间花在某个工具的独家语法上,是消耗品。这一版用完,下一版就归零。
我自己的体感是:一旦把视角从"工具"挪到"三件套",上手任何新工具都不再需要"学"------只需要"对应"。新工具来了,打开,扫一眼它的 C 怎么管、A 怎么转、T 挂了什么------大致的能力边界,心里很快就有数了。
这件事,比"再学一个工具"高几个量级的杠杆。
五、所以,所谓"换工具",换的到底是什么?
回到开头那个问题------
这两年市面上一波又一波出来的 AI 编程工具,每个都标榜自己独家、革命、下一代。剥开壳子是什么?是同一台机器:Context 在管输入,Agent loop 在转着调用,Tools 在让模型动手。三件套之外,全是"皮"。
这台机器本身在演化,而且在快速演化------更长的窗口、更智能的循环、更开放的工具协议。但这台机器不是从一个工具跳到另一个工具产生的。它是底层一直在被同一个方向推动着前进。
所谓"换工具",换的不是机器,换的是这台机器的某一块零件被谁组装得更顺手。理解这一层之后,你会发现自己再不会被任何"新工具"震撼。震撼你的不该是某家工具的发布会------
该是底下这台机器,某一块骨头本身的进化。窗口从 32K 涨到 200 万,是大事;模型自己规划能力从外置变内置,是大事;MCP 这种开放协议被大规模采纳,是大事。
这些才值得你花时间。其他的,大概率是"皮"。
写在最后
也是因为这件事------我把这两年用各种工具时反复琢磨出来的判断,系统地整理进了一本书,叫《AI 编程的第一性原理》。
这本书完全不教"哪个工具怎么配"。它只做一件事:把 AI 编程这台机器一层一层拆给你看。从模型的工作机制,到 Context 怎么组织,到 Agent loop 怎么运转,到 Tools 怎么挂------一层一层推下来。
读完之后,我希望你再看任何一个新工具,都能像今天我们拆这一类工具一样------剥开壳子,看见骨头。
仓库地址:https://github.com/caozhiyi/ai-programming-book
免费,开源,可全文阅读。
工具会换,壳子会变,UI 会重做,快捷键会改,配置文件名会重命名一百次。但 Context、Agent loop、Tools 这三块骨头,肉眼可见的时间都不会换。
把功夫下在骨头上,壳子怎么换,你都不慌。