
這位令人尊敬、幾乎把一輩子都奉獻給軟體業的 73 歲 Bob 大叔(Uncle Bob),到了 AI Agent 時代,依然走在軟體開發的前線!
先前我曾介紹過他對 AI Agent 開發的觀點與策略:Uncle Bob 對 AI Agent 開發的觀點
而在前幾篇文章中,我也談過如何透過 Agent Skill,讓 AI Agent 遵循特定的開發方法與實務規範:關於 Agent Skill 的應用與實踐
最近,Bob 大叔親自發布了一個名為 ub-mode 的 Agent Skill,將軟體工程原則轉換成 AI Coding Agent 可以遵循的開發紀律。
這個 Skill 值得關注的地方,不只是要求 Agent 寫出能正常運作的程式碼,而是進一步規範它應該如何思考、實作、驗證與維護程式碼。
ub-mode 的三個核心階段
ub-mode 的設計核心,主要分為三個階段:
1. First Make it Work:先讓功能正確運作
首先從需求與資料結構開始思考,確認問題與預期結果,再進行實作。
這個階段強調:
- TDD(測試驅動開發):先建立失敗的測試,再以最小的修改讓測試通過。
- 最小變更原則:優先採取能解決問題的簡單方案,避免不必要的複雜度。
- 從根本重新思考設計:面對新需求,不只是直接將功能附加到既有程式碼,而是考慮原有設計是否需要調整。
- 架構與邊界紀律:重視領域模型、資料驗證、型別約束與操作的冪等性(Idempotency)。
這些原則的目的,是避免 AI Agent 為了快速完成任務,而不斷堆疊程式碼或引入不必要的設計。
2. Then Make it Right:再讓設計與程式碼品質達到要求
當功能可以正常運作後,接下來要關注的是程式碼的設計品質與可維護性。
這個階段強調:
- 根因修復(Root Cause Fix):找出真正造成問題的原因,而不是只加入額外的防護判斷來掩蓋問題。
- 行為測試(Behavior Testing):測試應該驗證外部可觀察的行為,而不只是內部實作細節。
- 小步驗證與重構(Refactoring):逐步改善程式碼結構,並確認既有行為沒有改變。
此外,Bob 大叔還搭配了幾個獨立的程式碼品質檢查工具:
- Crapper:結合程式複雜度與測試覆蓋率,透過 CRAP 指標評估程式碼風險。
- Dryer:檢測結構性重複程式碼,協助降低重複實作。
- Mutator:使用變異測試(Mutation Testing),檢查測試案例是否真正具有發現錯誤的能力。
這些工具讓原本較為抽象的程式碼品質要求,可以進一步透過具體指標與測試結果來驗證。
3. Practice:維持良好的工程實踐
除了功能實作與品質改善之外,ub-mode 也重視 AI Agent 在整個開發過程中的工作紀律。
主要包括:
- Keep a Log:記錄每次修改的內容與原因,讓開發過程可以追蹤。
- Guard the Context Window:管理 Agent 的 Context Window,避免主工作脈絡承載過多不必要的資訊。
- Worktree Cleanup:清理不再使用的工作目錄與資源,同時保護尚未提交的修改。
- Commit and Push:以小批次、可驗證的 Commit 保存開發成果,並清楚記錄修改原因與驗證方式。
這些實踐不只是要求 Agent 完成程式碼修改,也要求整個開發過程能夠被理解、追蹤與驗證。
如何安裝與使用 ub-mode?
ub-mode 是一個 Agent Skill,可以安裝在支援相應 Skill 機制的 AI Coding Agent 環境中。
使用 Skills CLI 安裝:
npx skills add https://github.com/unclebob/ub-mode --skill ub-mode
安裝後,可以在支援 Skill 指令的 Coding Agent 中調用:
/ub-mode
如此便能要求 Agent 在開發或修改程式碼時,依照 ub-mode 所定義的工程原則執行工作。
另外,如果希望進一步落實程式碼品質檢查,還可以搭配 Crapper、Dryer、Mutator 等工具。
需要注意的是,這些品質檢查工具並不包含在 ub-mode Skill 本身,必須另外安裝與配置。
相關 GitHub 專案:
AI Agent 可以寫程式,但工程紀律仍需要由開發者定義
我覺得 ub-mode 最值得參考的地方,不只是 Clean Code 或 TDD,而是將軟體工程的設計原則與開發紀律,轉換成 AI Agent 可以反覆執行、並透過工具驗證的工作流程。
這也呼應了我之前一直強調的觀點:
AI Agent 可以負責程式實作,但開發方法、架構原則與品質標準,仍然需要由開發者來定義。
當 AI Coding Agent 越來越能夠自主完成開發任務時,開發者需要思考的,已經不只是如何讓 Agent 寫出程式碼,而是如何將適當的工程方法與品質要求,落實到 Agent 的開發工作流程中。
ub-mode 提供了一個值得參考的實踐方向。