Theme / v5.3.0

Oh My ClaudeCode

Claude Code 多代理編排系統

實戰範例

實戰範例 003:使用 OMC Team Mode 進行跨工作區多模組重構

實戰演練如何利用 Oh My Claude Code (OMC) 的 Team Mode 與 Sisyphus 自主循環,在多個隔離的工作樹中並行完成 API 升級重構。

實戰背景

在大型多人協作的專案中,核心模組的重構往往會牽涉到數十個外部相依模組。如果只有單一的 AI 代理循序進行修改,整個重構週期會非常漫長。

痛點與問題描述: 我們需要將一個 C# 專案中舊版實體元件(如 PaymentService)的所有同步方法(如 Charge()),全面升級為支援 async/await 的非同步版本(如 ChargeAsync())。這項改動會直接破壞 BillingControllerSubscriptionWorkerAdminPanel 三個獨立子專案的呼叫,導致編譯錯誤。如果採用單一執行緒重構,我們需要手動一個檔案一個檔案處理編譯報錯。

本範例中,我們將使用 Oh My Claude Code (OMC)Team Mode 功能,同時指派多個背景 Sisyphus 代理,在各自隔離的 Git Worktree 中並行修改這三個子專案,並利用 OMC HUD 即時監控各代理的自主編譯與修復進度。


規格定義

本次變更計畫的 ID 為 omc-parallel-refactor。我們在 OpenSpec 中定義了以下規格:

# 實戰範例 003:openspec/changes/omc-parallel-refactor/specs/async-upgrade/spec.md

## ADDED Requirements

### Requirement: Full asynchronous payment flow
所有支付管道呼叫必須(SHALL)使用非同步 `async/await` 語意。
- 底層 `PaymentService.ChargeAsync` 必須(SHALL)返回 `Task<PaymentResult>`

#### Scenario: Verify parallel controller compilation
- **WHEN** 執行全域建置命令 `dotnet build`
- **THEN** 所有子專案(Billing、Subscription、Admin)必須(SHALL)無編譯錯誤地編譯成功,且其對 `ChargeAsync` 的 await 呼叫配置正確。

端到端 8 輪 AI 協作紀錄

以下是開發者 (You) 與 OMC Team Mode 代理群之間的完整重構紀錄:

── 第 1 輪:初始化 Team Mode 與工作區分配 ──

  • You:
    /opsx:explore "我們需要把 PaymentService 改為非同步。請幫我用 omc team mode 啟動並行重構,分配背景代理分別處理 Billing、Subscription 與 Admin 子專案的編譯修復。"
  • AI:

    好的,已進入探索模式。我將使用 omc 的 Team Mode 工具在本地端啟動並行開發。

    首先,我將呼叫 omc team init 來在 tmux 中建立三個隔離的開發視窗(Workers),每個 Worker 將使用一個獨立的 Git Worktree,避免代碼衝突。

    OMC 呼叫: omc team init --workers=3 --names=billing,subscription,admin
    OMC 回傳:

    • Worker: billing (工作樹: temp/worktree-billing, 專注路徑: src/Billing/)
    • Worker: subscription (工作樹: temp/worktree-subscription, 專注路徑: src/Subscription/)
    • Worker: admin (工作樹: temp/worktree-admin, 專注路徑: src/Admin/)

    規劃
    我已在底層完成了 PaymentService.csChargeAsync 的非同步簽章修改。這時整個專案編譯已中斷。我將在各個 Worker 中啟動 Sisyphus 自主循環代理,要求它們在各自的目錄下修復編譯錯誤。


── 第 2 輪:啟動並行 Sisyphus 循環 ──

  • You:
    在所有 Worker 中啟動 Sisyphus 自主循環(每個 Worker 跑 dotnet build,最多 10 輪),並限制每個會話的 Token 預算為 $5 USD。
  • AI:

    好的,我將在每個背景 Worker 中啟動 omc sisyphus 自主修復循環,最大 10 輪,並透過 omc config 將單一會話預算上限設為 $5 USD,以防止 Token 暴走。

    OMC 呼叫: omc sisyphus --build-cmd="dotnet build" --max-loops=10(於各 Worker 工作樹中分別執行)
    OMC 回傳: Background workers spawned successfully. Monitoring via HUD.

    目前 OMC HUD 面板已啟用,即時監控進度如下:

    • [HUD billing]: Loop 1/10 | Status: Parsing compiler error CS1998 in BillingController.cs
    • [HUD subscription]: Loop 1/10 | Status: Analyzing SubscriptionWorker.cs
    • [HUD admin]: Loop 1/10 | Status: Identifying admin panel endpoints

── 第 3 輪:檢視 Billing Worker 修正紀錄 ──

  • You:
    請幫我拉取 billing worker 目前的詳細日誌,看看它遇到了什麼錯誤,是怎麼修復的。
  • AI:

    好的,我將使用 omc 的日誌檢索工具來讀取 billing 工作區的 Sisyphus 狀態。

    OMC 呼叫: omc team log --worker=billing --lines=15
    OMC 回傳:

    [billing] [Loop 2] dotnet build failed. Error: CS4033: 必須在 async 方法中使用 await。
    [billing] [Loop 2] Action: 修改 src/Billing/BillingController.cs 第 45 行。
    [billing] [Loop 2] Action: 將 public ActionResult Process() 改為 public async Task<ActionResult> Process()。
    [billing] [Loop 3] dotnet build succeeded in Billing subproject!

    分析
    billing 代理成功識別出同步控制器無法直接呼叫非同步方法的問題,自主將控制器方法宣告改為 async Task,並成功通過了 src/Billing/ 的局部建置!


── 第 4 輪:建立變更提案 ──

  • You:
    /opsx:propose "將整個支付管道重構為非同步模式,並整合 OMC Team 並行修改成果"
  • AI:

    好的,變更提案 omc-parallel-refactor 已建立:

    • proposal.md: 說明非同步 Payment 升級及多代理協同的必要性。
    • specs/async-upgrade/spec.md: 定義全域編譯通過與非同步傳回值驗收。
    • tasks.md: 任務檢核表如下:
      • 1.1 執行 omc team merge 合併三個 Worker 的重構程式碼。
      • 1.2 執行全域 dotnet build 驗證編譯。
      • 1.3 歸檔變更。

    請輸入 /opsx:apply 來開始執行合併與驗證。


── 第 5 輪:合併並行分支 (Task 1.1) ──

  • You:
    /opsx:apply
  • AI:

    Implementing: omc-parallel-refactor (schema: spec-driven)

    正在處理任務 1.1:合併並行代理的重構代碼。

    我將呼叫 omc team merge。該命令會將三個背景工作樹的 Git 分支自動 Cherry-pick 並 Merge 到當前的重構分支中。

    OMC 呼叫: omc team merge
    OMC 回傳:

    • Merged branch omc-worker-billing -> Success
    • Merged branch omc-worker-subscription -> Success
    • Merged branch omc-worker-admin -> Success (Resolved 1 conflict in routes configuration)

    合併完成!三個模組的修改代碼已成功統一。已將任務 1.1 標記為完成。


── 第 6 輪:執行全域建置與測試 (Task 1.2) ──

  • You:
    繼續實作任務 1.2,執行全域建置與單元測試。
  • AI:

    Implementing: omc-parallel-refactor

    正在處理任務 1.2:全域建置驗證。

    我將在專案根目錄下執行全域的 .NET 編譯與測試:

    dotnet build
    dotnet test

    建置輸出
    Build succeeded. 0 Warning(s), 0 Error(s).
    Passed test cases: 48/48.

    所有子專案全部順利通過編譯,且所有整合測試均無異常!已將任務 1.2 標記為完成。


── 第 7 輪:清理工作區與歸檔 (Task 1.3) ──

  • You:
    很好!執行歸檔,並清理剛才建立的 3 個 Git Worktree,保持工作區乾淨。
  • AI:

    Implementing: omc-parallel-refactor

    正在處理任務 1.3:清理臨時工作區與變更歸檔。

    我將呼叫 omc team cleanup 來安全地移除剛才建立的臨時工作樹,釋放磁碟空間。

    OMC 呼叫: omc team cleanup
    OMC 回傳: Temporary worktrees and tmux sessions successfully terminated.

    變更歸檔

    • 已將非同步規格同步至主規格庫。
    • 清理 changes/ 下的專案資料夾。

    Archive Complete

    變更計畫已順利歸檔!


── 第 8 輪:總結與效能指標 ──

  • You:
    請幫我總結一下,與傳統單執行緒修改相比,我們這次使用 Team Mode 節省了多少時間?
  • AI:

    本次重構的效能對比指標如下:

    重構模式 工具呼叫與等待次數 耗時 (秒) Token 費用 (USD)
    傳統單代理模式 (估計) 24 次往返 (逐一排查三個專案錯誤) ~680 秒 ~$3.80
    OMC Team 並行模式 3 個並行 Worker (各 3 輪) ~190 秒 (縮短 72%) ~$2.10 (減少 44%)

    效益總結

    • 時間縮短:得益於並行編譯與自主 Sisyphus 循環,編譯錯誤在各自的工作樹中被並行修復,省去了循序除錯的等待時間。
    • 費用更省:每個 Worker 僅加載其受影響的子模組 AST,消除了單一會話中加載整個大專案所帶來的 Token 冗餘。