047 · Cody 靠 context 寫程式
No Priors Ep. 47 | With Sourcegraph CTO Beyang Liu
Beyang Liu 談 Sourcegraph 的 Cody 怎麼用程式碼搜尋補足 context、AI engineer 還差多遠,以及五年後寫軟體會是什麼樣子。
047 講了什麼
- 從讀懂程式碼的痛點出發Beyang 和 Quinn 都是開發者出身,發現工程師大半時間花在讀懂既有的程式碼,而不是寫新功能。他們當時合作的企業客戶,理解 legacy code 的痛苦是自己經歷的 10x、100x。
- context 就是 RAGCody 在 LLM 底下接上 Sourcegraph 十年來替人類開發者做的程式碼搜尋與 graph context。檢索分兩層,底層 retriever 求不漏,上層 reranker 求排對;Beyang 說 RAG 從業者之間的 dirty secret 是光靠 keyword search 就能做到九成以上。
- 先做最簡單的 baselineBeyang 說這是做機器學習研究時學到的原則,也是 Sourcegraph 先做 RAG、後考慮 fine-tuning 的理由;就算之後加了 fine-tune 的模型,RAG 還是要做。
- agent 的可靠度卡在每一步的成功率把任務拆成子任務再串起來,每一步的失敗會層層累積;反過來靠大量取樣加驗證,放進大型 codebase 又太貴太慢。Beyang 認為兩條路都要靠 context 品質。
- 小模型的位置Cody 的 inline completion 主要用 StarCoder 7 billion,加上 context 之後能追上更大的專有模型;chat 仍用相當大的模型,因為有研究顯示 in-context learning 要到一定規模才會出現,微調過的中型模型有時會失去這個能力。
- 瓶頸是協調,不是打字Beyang 認為軟體開發的核心問題是協調與能見度。AI 能讓一個人做得更多,也能替主管讀完 commit 再摘要;寫程式與 CS 基礎仍然值得學,被壓縮的是中間那層膠水工作。
從哪一段開始看18 段
- 00:07開場與創辦動機Sarah Guo 介紹 Beyang 與 Cody。Beyang 說工程師的日常多半在讀懂既有程式碼,企業客戶的痛點更大,Sourcegraph 就是從這裡出發。
- 02:48AI 是初戀Beyang 在 Stanford 主修 AI,當年神經網路還在黑暗期。Sourcegraph 大約 2017、2018 年開始重看這塊,去年 9、10 月起加速。
- 06:43Cody 是什麼支援 VS Code、JetBrains,網頁上也有 Ask Cody 按鈕;功能有 inline completion、問答與指令,差別在接上 Sourcegraph 的 context。
- 08:02context 就是 RAGBeyang 以 Bing Chat、Perplexity 解釋 RAG,Cody 對程式碼做同一件事:用程式碼搜尋加 graph context,讓模型少編造。
- 10:35兩層檢索架構底層是 keyword、依函式與類別切分的索引、embedding 等 retriever,上層用 reranker 把相關結果排到前面。
- 14:23資料品質與領域 embeddingSarah 認為各領域會用自己的 embedding model;Beyang 說正與 Voyage 合作做程式碼用的版本,並強調資料處理管線的品質。
- 16:14指定好的程式碼範本企業客戶想叫 Cody 忽略正要淘汰的 anti-pattern。Beyang 說這在搜尋層很容易做,很快會推出相關功能。
- 18:17inner loop 與指令Beyang 區分 inner loop 與 outer loop,說現在上線的程式碼 AI 都是 inner loop 工具;Cody 把單元測試、docstring、解釋程式碼做成指令。
- 21:16AI engineer 的長期目標目標是從 issue 直接產生 pull request。Beyang 預期先自動化更新依賴這類瑣事,再慢慢往高風險的任務爬。
- 22:51提高可靠度的路線Sarah 問該靠驗證回饋還是更強的模型。Beyang 另外列出兩種:拆成子任務再串起來,或擴大 context 後多次取樣再驗證。
- 26:30複合失敗與 context 品質逐步串接時每步的失敗會累積,多次取樣放進大型 codebase 又太貴。Beyang 說 context 抓得準的時候,品質差非常多。
- 30:13先建 baselineBeyang 舉 Nature 上兩篇天氣預測論文為例,說明先做簡單的做法,這也是先做 RAG 再考慮 fine-tuning 的原因。
- 33:27小模型的角色Cody 的 chat 上週加入 Mixtral,completion 以 StarCoder 為主。Beyang 也提醒微調過的中型模型可能失去 in-context learning。
- 36:04人月神話與協調問題Sarah 問五年後的軟體開發。Beyang 引 The Mythical Man-Month,說核心問題是協調與能見度,不能把程式碼當成工廠產品。
- 38:43讓團隊像一個人兩條路:讓個人產出更多,以及讓主管不必逐筆讀 commit 也能掌握程式碼怎麼在變。
- 41:07需求不會被滿足Sarah 拿 Brooks 定律開玩笑,說未來一個人加一份 spec 就夠。Beyang 回答軟體需求還遠沒飽和,團隊還會在,只是每個人負責的範圍更大。
- 42:12還要不要學寫程式Sarah 說辦 hackathon 時有大學生認為不必再學寫程式。Beyang 認為寫程式仍然是很有價值的技能。
- 44:16AI 壓縮中間層Beyang 把軟體分成高層目標、中間膠水、底層資料結構三層,認為 AI 會壓縮中間層,CS 基礎與領域知識反而更重要。
值得記的話5 句
the kind of like dirty secret is that keyword search can probably get you more than 90% of the way there
大家心照不宣的是,keyword search 大概就能帶你走完九成以上的路。Beyang 說這是去問 RAG 從業者會聽到的11:55when our context fetching engine works the quality of code generated by Cody it's like night and day
我們的 context 擷取引擎發揮作用時,Cody 產生的程式碼品質是天壤之別27:18doing the fancier thing is often sexier and it's certainly these days it's like trendier
做比較花俏的東西通常比較性感,這年頭也確實比較潮30:28real potential of large language models and AI more generally is to bring more cohesion to that process
大型語言模型、乃至整個 AI 真正的潛力,是讓這個過程更有凝聚力38:12CS fundamentals if anything are going to grow in importance
CS 基礎只會變得更重要45:06
名詞與人物11 個
- Cody
- Sourcegraph 的 AI coding assistant,可裝在編輯器裡,也能在網頁上對 repo 提問。
- Sourcegraph
- Beyang 共同創辦的公司,2013 年成立,原本做給人用的程式碼搜尋與理解工具。
- RAG
- 先檢索、再讓 LLM 回答;Beyang 說 context 問題換個說法就是 RAG。
- graph context
- 沿著程式碼的定義與引用關係走,找出相關程式碼放進 context window。
- reranker
- 檢索的第二層,在縮小後的候選集合裡把最相關的結果排到前面。
- inner loop / outer loop
- outer loop 是團隊層級從規劃到上線的循環;inner loop 是單一開發者一天內反覆修改的循環。
- AI engineer
- 給一份 issue 就能產出 pull request、寫程式過程不需要人監督的系統。
- Voyage
- 在做程式碼用 embedding model 的公司,Sourcegraph 正與其合作。
- StarCoder
- Cody 目前 inline completion 主要用的模型,7 billion。
- Mixtral
- 上週加進 Cody chat 的小模型之一。
- The Mythical Man-Month
- 1970 年代談軟體開發的著作,核心論點是軟體開發很難用工廠式的產出衡量。
提到但沒有展開
- Beyang 在 Stanford AI lab 做電腦視覺,指導教授是 Daphne Koller。當時課堂上教的是「神經網路十年前試過、沒成功」,主流是 graphical models 與統計學習;Beyang 說還在等統計學習與 convex optimization 回來。
- Sourcegraph 去年 9、10 月起加速的原因有三個:內部的嘗試成熟了、Beyang 請育嬰假多了時間做實驗,以及 11 月底 ChatGPT 推出。
- Beyang 提到 AlphaCode 這類系統靠大量取樣加驗證處理程式競賽題,但放進大型 codebase 會貴到不實用。
