我們面臨的挑戰
作者: Sualeh Asif 屬於 研究
更新:我們又寫了一些進一步的問題。
一份未排序的、簡短且具體的問題清單:
- 更好的脈絡: 在程式碼編輯器中有許多資訊來源:開啟的檔案、語意相近的程式碼片段、符號相關的類別、lint 輸出、執行追蹤、Git 歷史、輸入紀錄、外部文件,等等。我們希望模型能立即理解對使用者問題最相關的內容,並正訓練一個自訂且高速的重排序模型來解決此問題。對每次請求,我們會從各種來源彙整 500k tokens,並使用重排序器將其過濾到最相關的 8k tokens。這既是模型層面的問題,也越來越是基礎設施層面的問題。
- 「用於編輯的 copilot」:GitHub Copilot 在撰寫新程式碼時能大幅減少低熵按鍵,但當你要對現有程式碼區塊做些微、簡單的修改時,卻無法幫你省下那些低熵操作。想像一下,為了重新命名而進行的游標移動、刪除與輸入;只要需求稍微超出按 F2 進行符號層級重新命名的範圍,負擔就出現了。我們需要在 UX(在你編碼時不打擾且即時顯示的差異)與模型端都創新(僅靠提示詞行不通,因為有成本、延遲與智能上的限制)。
- 受限、即時互動的 Agents:想像 OpenAI 的程式碼直譯器,但用於大型程式碼庫的工程作業。你會指示一個受限制、步驟精簡的代理該做什麼,它會替你搜尋、撰寫並執行程式碼,並不時向你徵詢回饋。我們目前正著手的第一步,是打造一個能在數十萬 tokens 規模的資料夾上運作的此類代理。若此階段成功,我們將擴充至整個程式碼庫。
- 錯誤偵測: 有兩種模式:(1)在背景執行時,Cursor 會持續被動掃描你的檔案,找出潛在錯誤;(2)當你進入深入的除錯階段時,Cursor 會在你的協助下主動定位問題。此處也有許多值得進行的有趣資料收集工作。
- 更大規模的編輯:Cursor 應該能夠替你修改整個檔案,甚至整個目錄。這同時是能力與使用者體驗上的挑戰。為了加快速度,模型需要足夠聰明,能夠挑出需要修改的部分,而不是重寫全部內容。為了提供良好的體驗,變更需要以可解析、即時的形式呈現。
- 規模:截至 2023 年 10 月 12 日,我們已完成 14 億個向量與 15 萬個程式碼庫的索引處理。到年底這個數字很可能再成長 10 倍。我們已以 Rust 打造了極高速、基於 Merkle 樹的程式碼庫同步引擎,並且很可能很快需要建立客製化的索引處理系統。
未來構想:
- Time warp:預測並顯示你在未來 15 分鐘內將進行的跨檔案程式碼變更。按一下單一鍵盤指令即可一次接受所有插入/刪除。
- 理解:我們的模型應在其權重中深度內化並理解任何程式碼庫中的所有概念。
- 閱讀模式:結合可依不同層級細節呈現的文件與能引導你走訪相關程式碼路徑的機器人,按需說明,讓你輕鬆理解程式碼。
- 偽程式碼模式:編輯程式碼的「大綱」表示法,並自動將變更套用到原始碼層級。
- 別再為堆疊追蹤傷腦筋:IDE 應該直接理解問題,並自動幫你修正程式碼。
我們試著彙整目前正在思考的所有課題,但——這也是每天把自己產品用上 12 小時的美妙之處之一——我們不斷冒出新點子並重排優先順序,因此這不應被視為包山包海的最終路線圖。儘管如此,我們希望它能讓你了解我們每天將心力花在什麼上。
另外,你都看到這裡了,看來你可能也對我們關注的課題有些興趣 :)。如果是這樣,歡迎加入我們!以下是我們認為你會喜歡與我們一起工作的幾個理由:
- 大家都喜歡用 Cursor。 我們對起步階段的成長十分滿意。
- 在這裡,你會和非常聰明的人一起工作。 我們堅信高「人才密度」。你在這裡合作的每一位同事都會相當、相當優秀。
- AI(人工智慧)輔助程式開發是一個龐大的市場。 而我們有能力拿下它。
- 這件事很有趣。 這對我們非常重要!和喜歡的夥伴一起工作很有趣;打造一個產品,按下 Cmd-Shift-R 就能立即獲得使用者回饋也很有趣——因為在寫程式時,你自己就是目標使用者;而每天都能在把程式開發中那些無聊的部分自動化這件事上,取得一點進展,也很有趣。
- 我們腳踏實地、全力以赴。 能投入解決這些難題是種幸運,我們也樂於傾盡所能去完成。