Josix is Only Joking

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 的時間
    • 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
    • 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
  • 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 及運作邏輯

Josix Wang © 2024