AutoDevPlanner:推理模型規劃編碼任務,DeepSeekR1延伸VibeCoding可能性

最近,我們在 AutoDev 上構建了新的功能:AutoDev Planner,它是一個基於 DeepSeek R1 推理模型構建的編碼任務規劃功能。當然了,除了 DeepSeek R1 之外,你也可以使用其它模型。
在 AutoDev Planner 中,AI 將會根據你的輸入和收集的上下文,生成一個用於後續編碼的任務計劃。隨後,這個編碼計劃可以用其它指令遵循更好的模型,比如 DeepSeek V3,來生成程式碼、編輯程式碼等。

引子 1:AI 編碼任務的進度顯性化

在進行 AI 編碼 Agent 的設計時,一個非常有意思的點是,使用者對於編碼任務的感知是怎樣的,即使用者應該能顯性看到進度,還是隱性感知進度。

Copilot Workspace:早期的 AI 顯性任務

去年,我嘗試使用 GitHub Copilot Workspace 來幫助我進行前端的開發工作。我嘗試了幾十個小的需求點,哪怕只是簡單的 i18n 翻譯,它的表現並沒有 我想象中的那麼好,大抵是受限於 GPT 4 的能力限制。而 Copilot Workspace 的思路確實非常不錯:
  • Brainstorm。對使用者的 Task 進行頭腦風暴(Brainstorm)
  • Task。將 Task 轉換為一個可編輯的 Plan
  • Execute。執行 Plan,生成程式碼 Pull Request
  • PR。將變更以 Pull Request 的形式提交
你可以顯性看到 AI 思考、編輯、執行的過程,當然它沒有動態的去調整他的計劃,而是一次性生成(基於 2024 年的認知)。

Cursor:AI 隱性任務下的自動化重試

回到,最近一年多特別火熱的 AI 編碼工具 Cursor,它構建了非常好的 AI Editor 體驗,使用者丟擲一個問題。它會:
  • 自動收集 IDE 中的上下文
  • 對程式碼進行編輯
  • 在程式碼出現 Lint 問題時,自動修復;在程式碼出現錯誤時,自動重試
  • ……
你可以透過文字大概理解 AI 到底幹了點什麼,但是很快大量地重試,讓你感知不到過程的存在。

JetBrains Junie:動態的 AI 任務規劃

JetBrains Junie 算是最新 AI 編碼工具,它構建了一個動態的 AI 任務規劃體驗。使用者丟擲一個問題。它會:
  • 結合分析問題,理解使用者意圖,生成一個任務計劃
  • 按步驟執行每個任務,並根據需求再獲取上下文
  • 在任務執行過程中,動態調整計劃,以適應使用者需求
在過程中,你可以看到它的計劃在不斷調整和迭代,直到最終完成使用者的 issue 或者不能完成。

引子 2:推理模型規劃任務的想象空間

眾所周知,2024 年底的推理模型或者說“可深度思考模型”,帶來了更多的想象空間與可能性。我們在 AutoDev Sketch(類 Cursor Composer 自動編碼 Agent) 中做了一系列的實驗, 發現與其它的國內模型相比,DeepSeek R1 在相同上下文的情況下,比普通模型更容易生成更好的工具呼叫( 基於DevIns 指令)。與 DeepSeek V3 相比,DeepSeek R1 呼叫了更多的工具。
理想情況下,我們應該用 R1 進行首輪工具對話和第二輪的任務規劃,但是 R1 的速度確實太慢了,從時間上來算相當於多呼叫了一輪 API。但是,依舊可以 看到 R1 的優勢,相信大家也有相似的感受和體驗。
當然我們沒有做大規模的實驗,畢竟構建非常好的測試資料集是特別花費時間的。

AutoDev Planner:Agent 程式設計的任務規劃

基於上述的思考,我們構建了新的擬人功能:AutoDev Planner 以強化 Sketch 的任務規劃能力。AutoDev Planner 的核心功能是:
  • 可見的任務規劃。透過 Pin 及 Planner ToolWindow 的可以看到當前的任務進度
  • 動態的任務規劃。AI 會根據上下文動態調整任務規劃(取決於模型,有時候並不會即時更新)
  • 手動執行未完成的任務。使用者可以手動執行未完成的任務,以便更好地調整任務規劃
  • 規劃 Review。使用者可以手動呼叫模型來 Review 任務規劃(為什麼不是自動的,因為 token 對普通使用者來說是非常昂貴的)
總體思路還是非常簡單的,就只是呼叫模型生成計劃,然後展示這個互動。

關鍵點 1:基於推理模型的任務規劃

由於推理模型與普通的模型在理解 prompt 和遵循指令的能力是有差異的,我們原先用於 V3 的 prompt 並不適用於 R1。因此,我們需要重新設計 prompt 以適應 R1 的能力。
簡單來說,就是當完成了初步的上下文收集之後, 而且使用者配置了推理模型之後,我們會呼叫 R1 來生成一個任務計劃。這個任務計劃會包含:任務、步驟及 其相關的進度情況,隨後我們會將這個計劃展示給使用者。

關鍵點 2:任務規劃的可互動性

與其它的 AI 編碼工具不同,我們認為任務規劃是一個非常重要的互動,因此我們提供了一些互動功能:
  • 任務的狀態顯示:
  • 完成的任務將會被標記為完成
  • 未完成的任務可以手動執行
  • Pin。使用者可以將任務 Pin 到 IDE 的某個位置,以便更好地關注
  • 檔案互動。考慮到模型的能力,當檔案出現在任務中,可以點選檔名開啟檔案
  • 編輯。當用戶覺得任務規劃不合適時,可以暫停並及時調整任務。
  • review。使用者可以手動呼叫模型來 Review 任務規劃
透過視覺化任務來構建更好的 AI 編碼體驗,這是 AutoDev Planner 的初衷。

總結

AutoDev Planner 是一個基於推理模型的任務規劃功能,它可以幫助使用者更好地理解 AI 編碼任務的進度,以及更好地調整任務規劃。當然,它還有很多不足之處, 歡迎在 GitHub 上提出 issue 和 PR。
歡迎下載最新版本體驗:https://github.com/unit-mesh/auto-dev/releases


相關文章