Aider 在軟體開發流程中的應用與整合
December 15, 2024
沒什麼組織、一些倏忽即逝有趣或不有趣的想法
- Aider 如何參與軟體開發流程
- Investigation/ Code Understanding
- Aider 可以幫助開發者理解 Issue 的內容 Triage Issue 並協助初步判斷 Issue 的嚴重性和解決方向,可能與哪些元件有關 (/architect, /ask)
- 基於 codebase 協助開發者理解 Issue 的內容
- Investigation 中重要的一環是理解程式碼的邏輯,Aider 相當善於理解程式碼(through RepoMap),並且提供相關的文件或是相關的程式碼片段 [[2024-11-15]] (/architect, /ask)
- Aider 善於擷取相關的程式碼片段和相關的文件,並且提供相關的解釋,甚至基於 mermaidjs 格式提供相關的流程圖、類別圖或是時序圖等省去 trace code 的時間
- Aider 可以幫助開發者理解 Issue 的內容 Triage Issue 並協助初步判斷 Issue 的嚴重性和解決方向,可能與哪些元件有關 (/architect, /ask)
- Design (To be investigated)
- Implementation
- Aider’s /architect 會將 reasoning 和 editing 分離,分別透過 o1 等級的模型和善於產出格式和較便宜的模型各司其職完成修改任務 https://aider.chat/2024/09/26/architect.html
- Aider’s /commit 可以透過 Aider chat 進行 commit message 的撰寫,並符合 conventional commit 的格式,且 committer 和 author 會帶有 aider 後綴可用於追蹤 Aider 的修改數量(commit level 或是 line level)https://aider.chat/HISTORY.html
- 與 git 完全整合另支援 /undo, /git 等指令
- Aider 可與任何編輯器整合且無需安裝任何 extension,Aider 透過 # 或 // 註解辨識,只要註解結尾帶入 AI! 則會依據該段落的程式內容進行修改,帶入 AI? 則會根據問題參考該段落進行回答
- Documentation
- 針對程式碼,Aider 可以透過理解程式碼的邏輯並撰寫對應的文件,並且提供相關的程式碼片段或是流程圖、類別圖或是時序圖等用
- 針對整體功能,Aider 可以基於文件進而進行摘要整合為符合 marp 格式的投影片或文章,但此功能需要人為互動調整其中內容,可能過於籠統
- Testing
- Aider 可以透過理解既有程式碼的 coding style 並根據新增的 functionality 撰寫對應的 Unit Test
- Aider /run 指令可以與 shell command 互動,將 shell command 的輸出轉換為 Aider chat 的 context,透過迭代 Unit Test 的結果並且進行修正達到 LLM based 的 TDD (理論上)
- PR Review
- 傾向認為 PR 著重是工程師之間的 communication 和 knowledge transfer ,除非是有不理解的地方可以透過 Aider 協助說明,傾向還是讓人為介入去看和回覆
- CI
- Linter: Aider has /lint 指令可以透過 Linter 檢查程式碼的 coding style 並將結果輸入到 Aider chat 進行迭代修正(在 edit mode 下也會執行)
- Automatic add Unit Test https://aider.chat/examples/add-test.html [[2024-11-19]]
- Aider /run 可以 CLI tools 無縫整合,透過 CLI tools 的輸出轉換為 Aider chat 的 context,進行派生的操作
- Automatic Update Documentation https://aider.chat/examples/update-docs.html
- 透過 Scripting SDK 可以將 Aider 的功能整合到 CI/CD pipeline 中,進行自動化的測試、文件更新或客製化的功能 https://aider.chat/docs/scripting.html (e.g. Aider + powrap, Aider + pytest, etc.)
- Deployment (To be investigated)
- Monitoring (To be investigated)
- Possible Application
- Model Context Protocol Support
- Aider 可以透過 Model Context Protocol 進行整合,調用任何客製化的 tools
- Ticket to PR
- Aider 根據 ticket 內容,planning 並且判斷是否可以修正,進而自動化的產生 PR
- PR to PR
- Aider files PR to refactor the authors’ code
- Aider files PR to fix some code style issues
- Model Context Protocol Support
- Investigation/ Code Understanding
- LLM 的幻覺
- 人認為 LLM 的幻覺或是說謊更像是質疑 LLM 回覆答案的一致性和正確性
- 內部的一致性:包含回答中的矛盾或是不完整
- In-context hallucination: The model output should be consistent with the source content in context. (View Highlight)
- 外部的正確性:回答是否與外部的資訊一致,與大眾的認知一致
- Extrinsic hallucination: The model output should be grounded by the pre-training dataset. (View Highlight)
- 內部的一致性:包含回答中的矛盾或是不完整
- 評估 LLM 的表現
- 回覆的細節程度:是否提及細節的 Entity Name,及執行邏輯或 Entity 彼此間的互動關係和意義
- 回覆的一致性:同 Session 下的回覆是否維持ㄧ致,沒有反覆不定
- 回覆的正確性:是否回覆符合外部資訊認知的 Entity Name 及運作邏輯
- 人認為 LLM 的幻覺或是說謊更像是質疑 LLM 回覆答案的一致性和正確性