§1 / 先说我的结论
用了一年多 AI coding 工具,最大的感受不是「哪个最强」,而是「每个工具都有自己的最佳击球区」。
在错误的场景用对的工具,和在对的现象用错的工具一样浪费。
我用下来的大致分类:
- Copilot → 陪你读代码、给点补全建议,锦上添花型
- Cursor → 探索、重构、单文件修改,坐在编辑器里干活型
- Claude Code → 读代码库、做分析、跨文件修改,有上下文但靠 prompt 驱动
- Cline → 便宜量大,适合跑自动化脚本
- ai-spec → 完整功能模块生成,有量化质量信号,适合 8-15 个文件的确定型任务
下面按场景拆开讲。
§2 / 场景一:写一个函数、加一段逻辑 → Copilot / Cursor
这个场景是最常见的:你想加一个小功能,改一两个文件,知道自己要什么。
Copilot 在这个场景的优势是存在感低。你开着,它工作,你不记得它工作过。补全代码的逻辑接近「你正在写什么,下一行大概是什么」。对已有代码库的风格学习做得不错。
Cursor 在这个场景的优势是对话式修改。Copilot 只能补全,Cursor 可以让你说「把这里改成用 cache 包装一下」,它会理解上下文然后改多个位置。
缺点:两者都没有结构性质量信号。你用 Copilot 补全了 50 次,没人告诉你这次比上次好还是差。质量靠你的判断和 review。
§3 / 场景二:探索式开发、想不清楚要什么 → Cursor
Cursor 的核心价值不是「写代码」,是「边想边写」。
当你不知道最终要什么形态的时候,你需要的是一个能跟你的思路一起迭代的工具。你说一句,它给你看结果,你觉得不对,说下一句,它继续改。这个 loop Cursor 做得最好。
Cursor 的规则文件(rules)和 composer 模式也给了一些结构化能力,但本质上还是「你在驾驶」的模式------工具跟着你的 prompt 走,prompt 质量决定输出质量。
不适合的场景:当你想清楚了要做什么,但这个功能涉及 10 个文件。Cursor 没有「一次性生成完整模块」的能力,它会在每个文件上逐个对话,很容易出现「改了后面的文件忘了前面的 import」问题。
§4 / 场景三:读代码库、做分析 → Claude Code
Claude Code 有一个被低估的能力:读代码库。
claude code --dangerously-skip-permissions 可以让你在项目里做索引和搜索,问它「这个模块的认证流程是什么」,它能给你一个还算准确的总结。
Claude Code 比 Cursor 强,但到了「生成代码」这个环节,两个工具其实差不多------都是 prompt in,code out,没有结构性质量保障。
§5 / 场景四:确定型任务、完整功能模块 → ai-spec
这是我自己做的工具,也是它最适合的场景。
确定型任务的意思是:你能用一句话描述清楚需求,不需要边写边改。
「给 user 模块加登录功能,包含注册、登录、登出、token 刷新」------这句话能说出来,就可以进 ai-spec。
它会跑完这个流程:
scss
需求 → Spec(md) → DSL(json) → 分层 codegen → 3-pass review → Harness Score
输出是 8-15 个文件 + 一个质量分数。
Harness Score 是关键:它给你一个信号「这次生成的东西和 spec 吻合度多少」。不是完美的质量保证,但至少让你知道距离目标有多远。
不适合的场景:探索式开发、需求不明、函数级修改。这些 Cursor 做得更好。
§6 / 场景五:成本敏感、需要自动化 → Cline
Cline 的优势是便宜 + 支持多 provider 混用。
你可以配置 DeepSeek 做主力(便宜),Claude 做 review(质量),成本比纯 Claude 低很多。
对于「跑一个脚本自动化日常工作」这种场景,Cline 的性价比最高。但它的 UX 相比 Cursor 差很多,调试成本也高。
§7 / 一个实用的工具选择框架
我现在的用法是按任务类型选工具,不是选一个工具用到底:
| 任务 | 工具 |
|---|---|
| 读代码库、理解架构 | Claude Code |
| 探索、重构、边想边写 | Cursor |
| 单文件补全、注释生成 | Copilot |
| 脚本自动化、成本敏感 | Cline |
| 确定型功能模块(10 个文件以上) | ai-spec |
这个分类的核心逻辑是:越确定的任务,越需要结构化;越不确定的任务,越需要灵活性。结构化和灵活性是两种不同的工具能力,选错了就是用螺丝刀砸钉子。
§8 / 我的踩坑
-
用 Cursor 做大型功能模块:试过用 Cursor 生成一个包含 12 个文件的新模块,结果是改了 3 个文件之后它开始产生互相冲突的 import,原因是上下文窗口不够用,你看不到前面改了啥。换了 ai-spec,同样的需求跑完直接拿到 12 个文件。
-
用 ai-spec 做探索:ai-spec 的 pipeline 设计假设你知道要什么。如果你说「帮我看看这个系统能怎么重构」,ai-spec 没有反应------这不是 bug,是它的设计边界。你在探索阶段,它帮不上忙。
-
Copilot 当主力:Copilot 的补全质量严重依赖代码风格的学习程度。如果你的项目是新启动的、或者代码风格不常规,Copilot 的补全质量会明显下降。把它当成一个增强的 autocomplete 比当成 coding partner 更准确。
§9 / 工具在进化,别停在结论
写这篇文章的时候其实已经有点过时了------AI coding 工具的进化速度很快,今天的局限可能半年后就不是问题。
比选工具更重要的是理解每个工具的设计假设:它在什么前提下工作?它的最佳击球区在哪里?
工具选对了,效率差距是 2-3 倍。选错了,就是花时间适应工具而不是用工具工作。
GitHub: github.com/hzhongzhong... npm: npm install -g ai-spec-dev 站点: ai-spec.dev