本文翻译自Cursor官方博客Our problems - 2023,原文发布于2023年10月12日,通过这篇文章可以看到Cursor当时的一些想法,及其对 Cursor 未来的规划。
无序的具体问题列表:
-
更好的上下文:
在代码编辑器中,有很多信息来源:已打开的文件、语义相似的代码块、符号相关的类、代码检查输出、执行跟踪、Git 历史、输入历史、外部文档资料等。
我们希望模型能够立即理解用户问题中最相关的信息,目前正在训练一个自定义的重排序模型来解决这个问题。每次请求时,我们将从不同来源收集 50 万个 Token,然后通过重排序器筛选出最相关的 8000 个 Token。
这不仅是一个模型问题,也越来越成为一个基础设施问题。
-
针对编辑的 Copilot:
虽然 Github Copilot 能帮你省去很多敲简单重复代码的力气。但它目前只在写新代码时有用,如果你要修改现有的代码,哪怕只是简单的修改,它也帮不上忙。
举个例子,你想修改一个变量名,这个修改稍微复杂一点,用简单的“F2 重命名”功能搞不定。这时你就得自己手动操作:找到变量名、删除旧名字、输入新名字。这些操作都很简单,但很费时间。
我们需要新的技术来解决这个问题。一方面,需要更好的用户界面 (UX),比如在写代码时就能看到 unobtrusive diffs(不干扰视线的代码差异对比)。另一方面,需要改进模型本身,仅仅依靠 “提示” 模型是不够的,因为成本、延迟和智能方面都存在问题。
-
受限的、流程化的智能体:
想象一下 OpenAI 的代码解释器,但它是专门为大型代码库设计的。你告诉这个助手你想做什么,它会帮你搜索、编写和运行代码,并在过程中不断征求你的意见。
这个助手的能力是有限的,它只能执行少量的步骤。 就像一个流水线工人,你告诉它每个步骤做什么,它就按部就班地执行。
我们目前正在努力实现第一步: 让这个助手能够处理包含几十万个“代码单元”的文件夹。如果成功了,我们会进一步扩展它的能力,让它能够处理整个代码库。
简单来说,我们想打造一个专门为大型代码库设计的智能助手。 它能理解你的指令,并在你的指导下,帮你完成各种代码相关的任务。
-
Bug 查找:
这里有两种模式:
(1)在后台,Cursor 将始终被动地扫描你的文件,发现潜在的 Bug; (2)当你深入调试时,Cursor 将主动与你合作一起找出 Bug。在这方面,我们有许多有趣的数据收集工作可以进行。
-
大型编辑:
Cursor 应该能够为你修改整个文件,甚至整个目录。这既是能力上的挑战,也是 UX 体验的挑战。
为了确保速度,模型需要足够智能来挑选出需要修改的部分,而不是重写所有内容。为了提升体验,修改的内容需要以清晰、实时的格式显示。
-
扩展:
截至 2023 年 10 月 12 日,我们已经索引了 14 亿个向量和 15 万个代码库。
到今年年底,这个数字可能会增长 10 倍。我们已经在 Rust 中构建了一个基于 Merkle 树的快速代码库同步引擎,可能很快还需要构建一个自定义的索引化系统。
未来的想法:
-
时间预见:预测并显示你在接下来的 15 分钟内会进行的跨文件修改。只需一个关键命令即可接受所有插入和删除操作。
-
理解:我们的模型应该能够在权重中深入理解任何代码库中的所有概念。
-
阅读模式:通过提供不同细节级别的文档,使代码理解变得轻松无比,同时有一个机器人引导你浏览相关的代码路径,并根据需要进行解释。
-
伪代码模式:你可以编辑代码的“概要”表示,系统会自动将更改应用到源码中。
-
无需再担心堆栈跟踪:IDE 应该能够自动理解你的问题,并为你修复代码。
我们尽力收集了当前所有正在思考的问题——这也是我们每天使用自己产品 12 小时的好处之一——我们不断有新的想法并会重新调整优先级,所以这不应被视为一成不变的路线图。话虽如此,我们希望这能传达出我们每天思考的重点。
此外,你已经读到这里了,说明你对我们关注的问题可能有兴趣 :)。如果是这样,你可以考虑加入我们!以下是一些我们认为你会喜欢与我们一起工作的理由:
-
用户喜欢使用 Cursor。我们对初期的增长非常满意。
-
你将在这里与非常聪明的人一起共事。我们坚信人才密度。你在这里的每一个同事都非常出色。
-
AI 编码是一个巨大的市场,而我们有机会成为其中的赢家。
-
这很有趣。这对我们来说至关重要!与喜欢的人共事是一件有趣的事,构建一个你自己在编程时会用到的产品,在按下 Cmd-Shift-R 后获得即时用户反馈也是一件乐事,而每天朝着让编程中所有繁琐部分自动化的目标迈进,也同样令人振奋。
-
我们努力工作。我们感到很幸运能致力于解决这些问题,并享受全力以赴解决它们的过程。