2024-11-15
沒什麼組織、一些倏忽即逝有趣或不有趣的想法
- Aider:
- Aider 善用了工程師的開發習慣如 Git, 檔案、元件的組織方式,加上 Git 對於 repository 的 indexing,以及借助 Concrete Syntax Tree (tree-sitter) parse 這些文本,大幅提升了 LLM application 中 retrieval 階段的精準度,讓送到 LLM 的 Prompt 更加反映使用者的意圖,也讓 LLM 模型更容易產生出預期的結果
- Aider 近乎是結構化文字資訊的專家:
- Code understanding:
- 我將 Aider 視作 codebase 的 domain expert,詢問任何關於 codebase 的問題,利如詢問元件相依關係、執行流程圖或 high level 的架構都已經是了解一個新專案的起手式。這幫助了我了解 Airflow 的 codebase 幫助很多,甚至許多未解的 issue 我也是先詢問 Aider 以得到一些線索和靈感。(It only takes 10 NT dollars to save my day.)
- 對於我的 digital garden (多數由 markdown 組成),Aider 可以直接成為我的代理人,這幾乎完全體現了所謂的第二大腦,我可以僅透過自然語言對話的方式,讓 Aider 幫我整理我的知識庫,回憶並且擴充這些資訊。
- Documentation:
- 同樣的,我也透過 Aider 產生許多的 sequence diagram 和 flowchart (through mermaid.js),在 PR 中附上這些圖表讓 reviewer 更容易理解我的設計和實作,完成這件事已經變得毫不費力。甚至是直接讓 Aider 產生出這份專案的 slides (through marp),對於快速擷取出重點也提升了很多效率。
- Adding Unit Test:
- 在不熟悉 codebase 的情況下,我時常是先開發功能而後再寫測試。透過 Aider 他同時瞭解了 codebase 上下文和使用的測試框架,可以寫出針對功能又符合 coding style 的測試,幾乎是符合原作者的寫法,相當驚艷。
- 坊間的 AI assistant 開發工具多數專注於提供 auto-completion 和 code suggestion,Aider 在這之上更提供了開發者更需要的 Code Maintenance 的功能(包含 bug fixing, documenting, code understanding)以及完全與 Git、CLI、Programming Language 層級的整合,相當輕巧且功能強大。