对 Cursor 的一些观察和思考
2025 1 26 05:32 PM 25次查看
为评估这是否是一个高门槛的领域,我尝试让各种 AI 编程工具帮我实现一个有自动补全和光标预测功能的 VS Code 插件。在尝试了几十次后,没有任何一款工具能完美实现。
我分析了一下它们的实现方案,都是使用 vscode.languages.registerCompletionItemProvider 方法来注册一个补全方法。其实这些补全项是可以提供插入、替换和删除等功能的,但所有的工具都只在插入上做了尝试,即便提示它需要实现替换和删除。即便仅考虑插入,也都还有很多琐碎的工程问题没有解决,例如:额外的 markdown 标记(如
```python
)、缩进不一致和生成重复代码等。至于光标位置的预测,则没有任何工具能做到,或许 VS Code 就没提供这个插件 API。
那么 Cursor 是如何实现的呢?
除了通常的会话补全模型以外,DeepSeek 还提供了 FIM 补全的功能,很适合代码补全场景。
而 Cursor 则更进一步,它专门训练了一个 Tab Model。这个模型可以预测光标附近的编辑和跳转建议,并且延迟非常低。
很显然,这个模型就是 Cursor 的技术护城河,至少目前我没发现任何竞品在这个方面进行发力。
如何才能训练出一个 Tab Model 呢?代码补全的数据自然可以来自庞大的开源代码库,但光标位置预测呢?这块我没有找到公开的资料,只能猜测 2 种来源:
- 分析开源代码的 commits,让模型去分析多个 diffs 之间的相关性,然后生成训练数据。
- 搜集用户的编码习惯,记录光标跳转并实际产生修改行为的操作,然后生成训练数据。
解决了训练数据的问题,还有训练方法的问题。
虽然更大的模型可以生成更高质量的代码,但也带来了更高的延迟和推理成本,因此小模型必然是更佳的选择。
在 Cursor 的博客中有提到它是一种稀疏语言模型(sparse language model),我猜测是使用了稀疏注意力机制以降低计算开销,并且 NVIDIA 从 Ampere 架构开始,其 Tensor Core 就对稀疏矩阵运算做了优化。
不过更细节的我就无法得知了,至少它的难度和成本不会高于 DeepSeek V3。
那么,在突破 Tab Model 这个最大的技术壁垒后,还会面临哪些问题呢?
最大的自然是成本,毕竟现阶段 composer 功能几乎是在给 Anthropic 的 Claude 做嫁衣,绝大部分的利润都被 Anthropic 分走了。据说 Cursor 每个月亏损都超过千万美元,这也许就是它去年 8 月刚融资了 6000 万美元,4 个月后又再次融资 1 亿美元的原因。
可是如何降低成本呢?Cursor 其实已经做了很多努力。最简单的是利用缓存:用户输入
re
后,预测补全为 .compile(...)
;用户如果继续键入 .c
,此时仍是符合原预测的,因此不需要重新预测。其次是减少上下文,如果每次都把全文甚至整个代码库带上,那么 tokens 开销自然不低;Cursor 采用了先索引代码库,再检索最相关的部分(据测试一般不超过 200 行),以降低开销。此外,当上下文较长时,Cursor 也会使用小模型来总结之前的会话,以降低上下文开销和降低延迟。不过我觉得再怎么降低开销,利润大头还是给模型厂商赚去了。因此自己训练一个在编码能力上超过 Claude 3.5 Sonnet 的模型,才能在这个领域形成新的护城河。但是也保不齐会有 DeepSeek 之类的低价竞争者赶上,后续只需要简单地替换模型即可扭亏为盈。
虽然很期待这些模型的问世能继续降低使用成本,但现实是竞品们仍在卷面向自然语言编程的赛道,只有 Cursor 提供了光标位置预测功能这种真正面向专业开发者的功能,这也正是我愿意为其付费的原因。
2025 年 2 月 8 日更新:
VS Code v1.97 发布了,GitHub Copilot 也支持光标位置预测了,但比 Cursor 还差了个同时预测多处修改的功能。但无论怎样,Cursor 的护城河可能不保了。
0条评论 你不来一发么↓