# REFACTOR TASKS 重構任務拆分,支援 git worktree 並行開發。 --- ## Task Overview ### 並行策略 ``` 時間軸 ──────────────────────────────────────────────────────────────► Task 0: Init (必須先完成) │ ├── Task 1: Domain Layer ─────────────────────────┐ │ │ │ ┌── Task 2: Infrastructure Layer ────────────┤── 並行 │ │ │ │ └── Task 3: Repository Layer ────────────────┘ │ (依賴 Task 1) │ ├── Task 4: Provider Layer ──────────────────────┐ │ (依賴 Task 1) │ │ │── 可並行 ├── Task 5: Usecase Layer ───────────────────────┤ │ (依賴 Task 3) │ │ │ ├── Task 6: Adapter Layer ───────────────────────┘ │ (依賴 Task 1) │ ├── Task 7: Internal Layer ──────────────────────┐ │ (整合所有,必須最後) │ │ │── 序列 ├── Task 8: CLI Tools │ │ │ └── Task 9: Cleanup & Tests ────────────────────┘ ``` ### Worktree 分支規劃 | 分支名稱 | 基於 | 任務 | 可並行 | |---------|------|------|--------| | `refactor/init` | `master` | Task 0 | ❌ | | `refactor/domain` | `refactor/init` | Task 1 | ✅ | | `refactor/infrastructure` | `refactor/init` | Task 2 | ✅ | | `refactor/repository` | `refactor/domain` | Task 3 | ✅ | | `refactor/provider` | `refactor/domain` | Task 4 | ✅ | | `refactor/usecase` | `refactor/repository` | Task 5 | ✅ | | `refactor/adapter` | `refactor/domain` | Task 6 | ✅ | | `refactor/internal` | 合併所有 | Task 7 | ❌ | | `refactor/cli` | `refactor/init` | Task 8 | ✅ | | `refactor/cleanup` | 合併所有 | Task 9 | ❌ | --- ## Task 0: 初始化 ### 分支 `refactor/init` ### 依賴 無(必須先完成) ### 小任務 - [ ] **0.1** 更新 go.mod (5min) - `go get github.com/zeromicro/go-zero@latest` - `go mod tidy` - [ ] **0.2** 建立目錄 (1min) - `mkdir -p api etc` - [ ] **0.3** 建立 `api/chat.api` (15min) - 定義 API types - 定義 routes - [ ] **0.4** 建立 `etc/chat.yaml` (5min) - 配置參數 - [ ] **0.5** 更新 Makefile (10min) - 新增 goctl 命令 - [ ] **0.6** 提交 (2min) **預估時間**: ~30min --- ## Task 1: Domain Layer ### 分支 `refactor/domain` ### 依賴 Task 0 完成 ### 小任務 - [ ] **1.1** 建立目錄結構 (1min) - `pkg/domain/entity` - `pkg/domain/repository` - `pkg/domain/usecase` - `pkg/domain/const` - [ ] **1.2** `entity/message.go` (10min) - Message, Tool, ToolFunction, ToolCall - [ ] **1.3** `entity/chunk.go` (5min) - StreamChunk, ChunkType - [ ] **1.4** `entity/account.go` (5min) - Account, AccountStat - [ ] **1.5** `repository/account.go` (10min) - AccountPool interface - [ ] **1.6** `repository/provider.go` (5min) - Provider interface - [ ] **1.7** `usecase/chat.go` (15min) - ChatUsecase interface - [ ] **1.8** `usecase/agent.go` (5min) - AgentRunner interface - [ ] **1.9** `const/models.go` (10min) - Model 常數 - [ ] **1.10** `const/errors.go` (5min) - 錯誤定義 - [ ] **1.11** 提交 (2min) **預估時間**: ~2h --- ## Task 2: Infrastructure Layer ### 分支 `refactor/infrastructure` ### 依賴 Task 0 完成(可與 Task 1 並行) ### 小任務 - [ ] **2.1** 建立目錄 (2min) - `pkg/infrastructure/{process,parser,httputil,logger,env,workspace,winlimit}` - [ ] **2.2** 遷移 process (10min) - runner.go, kill_unix.go, kill_windows.go, process_test.go - [ ] **2.3** 遷移 parser (5min) - stream.go, stream_test.go - [ ] **2.4** 遷移 httputil (5min) - httputil.go, httputil_test.go - [ ] **2.5** 遷移 logger (5min) - logger.go - [ ] **2.6** 遷移 env (5min) - env.go, env_test.go - [ ] **2.7** 遷移 workspace (5min) - workspace.go - [ ] **2.8** 遷移 winlimit (5min) - winlimit.go, winlimit_test.go - [ ] **2.9** 驗證編譯 (5min) - [ ] **2.10** 提交 (2min) **預估時間**: ~1h --- ## Task 3: Repository Layer ### 分支 `refactor/repository` ### 依賴 Task 1 完成 ### 小任務 - [ ] **3.1** 建立目錄 (1min) - [ ] **3.2** 遷移 account.go (20min) - AccountPool 實作 - 移除全局變數 - [ ] **3.3** 遷移 provider.go (10min) - Provider 工廠 - [ ] **3.4** 遷移測試 (5min) - [ ] **3.5** 驗證編譯 (5min) - [ ] **3.6** 提交 (2min) **預估時間**: ~1h --- ## Task 4: Provider Layer ### 分支 `refactor/provider` ### 依賴 Task 1 完成 ### 小任務 - [ ] **4.1** 建立目錄 (1min) - `pkg/provider/cursor` - `pkg/provider/geminiweb` - [ ] **4.2** 遷移 cursor provider (5min) - [ ] **4.3** 遷移 geminiweb provider (10min) - [ ] **4.4** 更新 import (5min) - [ ] **4.5** 驗證編譯 (5min) - [ ] **4.6** 提交 (2min) **預估時間**: ~30min --- ## Task 5: Usecase Layer ### 分支 `refactor/usecase` ### 依賴 Task 3 完成 ### 小任務 - [ ] **5.1** 建立目錄 (1min) - [ ] **5.2** 建立 chat.go (30min) - 核心聊天邏輯 - [ ] **5.3** 遷移 agent.go (20min) - runner, token, cmdargs, maxmode - [ ] **5.4** 遷移 sanitizer (10min) - [ ] **5.5** 遷移 toolcall (10min) - [ ] **5.6** 驗證編譯 (5min) - [ ] **5.7** 提交 (2min) **預估時間**: ~2h --- ## Task 6: Adapter Layer ### 分支 `refactor/adapter` ### 依賴 Task 1 完成 ### 小任務 - [ ] **6.1** 建立目錄 (1min) - [ ] **6.2** 遷移 openai adapter (10min) - [ ] **6.3** 遷移 anthropic adapter (10min) - [ ] **6.4** 更新 import (5min) - [ ] **6.5** 驗證編譯 (5min) - [ ] **6.6** 提交 (2min) **預估時間**: ~30min --- ## Task 7: Internal Layer ### 分支 `refactor/internal` ### 依賴 Task 1-6 全部完成 ### 小任務 - [ ] **7.1** 合併所有分支 (5min) - [ ] **7.2** 更新 config/config.go (15min) - 使用 rest.RestConf - [ ] **7.3** 建立 svc/servicecontext.go (30min) - DI 容器 - [ ] **7.4** 建立 logic/ (1h) - chatcompletionlogic.go - geminichatlogic.go - anthropiclogic.go - healthlogic.go - modelslogic.go - [ ] **7.5** 建立 handler/ (1h) - 自訂 SSE handler - [ ] **7.6** 建立 middleware/ (20min) - auth.go - recovery.go - [ ] **7.7** 建立 types/ (5min) - goctl 生成 - [ ] **7.8** 更新 import (30min) - 批量更新 - [ ] **7.9** 驗證編譯 (10min) - [ ] **7.10** 提交 (2min) **預估時間**: ~4h --- ## Task 8: CLI Tools ### 分支 `refactor/cli` ### 依賴 Task 0 完成 ### 小任務 - [ ] **8.1** 建立目錄 (1min) - [ ] **8.2** 遷移 CLI 工具 (10min) - [ ] **8.3** 遷移 gemini-login (5min) - [ ] **8.4** 更新 import (5min) - [ ] **8.5** 提交 (2min) **預估時間**: ~30min --- ## Task 9: Cleanup & Tests ### 分支 `refactor/cleanup` ### 依賴 Task 7 完成 ### 小任務 - [ ] **9.1** 移除舊目錄 (5min) - [ ] **9.2** 更新 import (30min) - 批量 sed - [ ] **9.3** 建立 cmd/chat/chat.go (10min) - [ ] **9.4** SSE 整合測試 (2h) - [ ] **9.5** 回歸測試 (1h) - [ ] **9.6** 更新 README (15min) - [ ] **9.7** 提交 (2min) **預估時間**: ~4h --- ## 並行執行計劃 ### Wave 1 (可完全並行) ``` Terminal 1: Task 0 (init) → 30min Terminal 2: (等待 Task 0) ``` ### Wave 2 (可完全並行) ``` Terminal 1: Task 1 (domain) → 2h Terminal 2: Task 2 (infrastructure) → 1h Terminal 3: Task 8 (cli) → 30min ``` ### Wave 3 (可部分並行) ``` Terminal 1: Task 3 (repository) → 1h (依賴 Task 1) Terminal 2: Task 4 (provider) → 30min (依賴 Task 1) Terminal 3: Task 6 (adapter) → 30min (依賴 Task 1) Terminal 4: (等待 Task 3) ``` ### Wave 4 (可部分並行) ``` Terminal 1: Task 5 (usecase) → 2h (依賴 Task 3) Terminal 2: (等待 Task 5) ``` ### Wave 5 (序列) ``` Task 7 (internal) → 4h Task 9 (cleanup) → 4h ``` **總時間估計**: - 完全序列: ~15h - 並行執行: ~9h - 節省: ~40% --- ## Git Worktree 指令 ```bash # 創建 worktrees git worktree add ../worktrees/init -b refactor/init git worktree add ../worktrees/domain -b refactor/domain git worktree add ../worktrees/infrastructure -b refactor/infrastructure git worktree add ../worktrees/repository -b refactor/repository git worktree add ../worktrees/provider -b refactor/provider git worktree add ../worktrees/usecase -b refactor/usecase git worktree add ../worktrees/adapter -b refactor/adapter git worktree add ../worktrees/cli -b refactor/cli # 並行工作 cd ../worktrees/domain && # Terminal 1 cd ../worktrees/infrastructure && # Terminal 2 cd ../worktrees/cli && # Terminal 3 # 清理 worktrees git worktree remove ../worktrees/init git worktree remove ../worktrees/domain # ... 等等 ``` --- **文件版本**: v1.0 **建立日期**: 2026-04-03