動態工作流與 Multi-Agent 平行架構參考(pi-dynamic-workflows)
動態工作流與 MultiAgent 平行架構參考 本文件記錄 pidynamicworkflows 的設計理念與對本系統的應用方向,供未來改進 agentv3pipeline 架構時參考。 核心理念:從「串列 Agent」到「動態分派 Subagent」 傳統做法(本系統現況) Pipeline 主線(串列): Step 1 → Step 2 → Step
動態工作流與 Multi-Agent 平行架構參考
本文件記錄 pi-dynamic-workflows 的設計理念與對本系統的應用方向,供未來改進 `agent-v3-pipeline` 架構時參考。
---
核心理念:從「串列 Agent」到「動態分派 Sub-agent」
傳統做法(本系統現況)
```
Pipeline 主線(串列):
Step 1 → Step 2 → Step 3 → Step 4 → Step 5
如果 Step 3 卡住,後面全停。
```
pi-dynamic-workflows 的突破
```
Orchestrator(主控模型)
↓ 產生分派腳本(JavaScript / Python)
├─ SubAgent A(獨立 Session,完整工具)
├─ SubAgent B(獨立 Session,完整工具)
├─ SubAgent C(獨立 Session,完整工具)
└─ SubAgent D(獨立 Session,完整工具)
↓ 彙整所有結果
最終輸出(Aggregated Result)
```
關鍵特性:
- 每個 SubAgent 跑在獨立的工作階段(Session)裡,互不干擾
- 每個 SubAgent 具備完整的 coding 工具(讀檔、執行指令、回傳結構化結果)
- 使用者只需用自然語言下達指令,模型自動產生分派腳本並執行
- 即時進度廣播,可隨時 Esc 中止
---
對本系統的應用設計
現況 vs. 改進後架構對比
| 面向 | 現況 | 改進後 |
| 執行方式 | 串列(一個接一個) | 平行(多個同時) |
| 失敗影響範圍 | 一個失敗,全線停止 | 單一 SubAgent 失敗,其他繼續 |
| 議題深度分析 | 一個 Agent 依序分析所有議題 | 每個議題一個 SubAgent 同步深度分析 |
| 進度可見性 | 只能看 log | 即時廣播每個 SubAgent 狀態 |
| 記憶體隔離 | 共用 context | 各 SubAgent context 完全隔離 |
建議的本系統 Dynamic Workflow 架構
```yaml
建議的 workflow 分派格式(YAML)
workflow:
name: "每日情報分析管線"
orchestrator: "Antigravity"
subagents:
- id: "mnd_crawler"
task: "抓取 MND 即時軍事動態,解析 ADIZ 資料"
tool: "_tools/extract_adiz_weekly.py"
output: "adiz_weekly.json"
- id: "news_fetcher"
task: "抓取外電新聞(Reuters, BBC, NHK)台海相關報導"
tool: "_tools/fetch_external_news.py"
output: "external_news.json"
- id: "wiki_syncer"
task: "掃描 wiki/ 新增文件,更新 _index.md 與語意索引"
tool: "_tools/wiki_compiler.py"
output: "wiki_update_report.json"
- id: "analyst_0{n}"
task: "對議題 {n} 進行深度分析"
tool: "_agents/02_deep_analyst.py"
output: "issue_{n}_analysis.md"
parallel: true # 可同時啟動多個
aggregator:
task: "彙整所有 SubAgent 結果,生成綜合報告"
output: "YYYYMMDD_中共軍事動態綜合分析報告.md"
```
---
分三期實作建議
第一期:平行化爬蟲(最低成本,立即可做)
```python
在 daily_pipeline.py 加入:
from concurrent.futures import ThreadPoolExecutor, as_completed
def run_parallel_crawlers():
tasks = {
"mnd": run_mnd_crawler,
"news": run_news_fetcher,
"wiki": run_wiki_syncer,
}
with ThreadPoolExecutor(max_workers=3) as executor:
futures = {executor.submit(fn): name for name, fn in tasks.items()}
for future in as_completed(futures):
name = futures[future]
result = future.result()
print(f"[{name}] 完成: {result}")
```
第二期:Git Worktree 隔離環境
```bash
為每個 SubAgent 建立獨立工作區
git worktree add ../worktree-mnd feature/gas-automation
git worktree add ../worktree-analyst feature/gas-automation
各 SubAgent 在自己的 worktree 工作,不互相干擾
```
第三期:完整 Orchestrator 實作
- Orchestrator 讀取 `workflow.yaml` → 產生分派腳本
- 每個 SubAgent 接受指令 → 執行 → 回傳 JSON 結果
- Supervisor 即時監控所有 SubAgent 狀態
- Aggregator 彙整結果並觸發通知鏈
---
與現有架構的整合點
| 現有元件 | 對應角色 | 改進方向 |
| `daily_pipeline.py` | Orchestrator | 改為讀取 workflow 定義後動態分派 |
| `02_deep_analyst.py` | Maker SubAgent | 改為可接受參數、平行啟動多個 |
| `knowledge_quality_gate.py` | Supervisor SubAgent | 改為即時監控而非事後審查 |
| `HANDOVER.md` | 外部記憶 | 每個 SubAgent 完成後自動更新對應段落 |
| Git Worktree | 隔離環境 | 已有基礎,可擴充 |
---
參考資源
- pi-dynamic-workflows GitHub:https://github.com/Michaelliv/pi-dynamic-workflows
- Claude Code Dynamic Workflow(靈感來源):Anthropic 官方文件
- 本系統 Supervised Engineering 架構:`artifacts/supervised_engineering_design.md`