9.4 KiB
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@latestgo 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/entitypkg/domain/repositorypkg/domain/usecasepkg/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/cursorpkg/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 指令
# 創建 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