Communitygithub.com

curiositech/port-daddy

dag-orchestrator 的別名。原始的 DAG 執行技能,現已與 orchestrator 統一成為 dag-orchestrator。請使用 dag-orchestrator 獲得完整的 HTDAG 體驗。

port-daddy 是什麼?

這項技能本質上是 dag-orchestrator 的別名,代表一個用於協調平行代理程式執行的 DAG(有向無環圖)執行器。它使用 Claude Code 的 Task 工具來分解任務、偵測衝突,並且協調多波次的平行執行。主要用途在於,當任務可以分割成多個互相依賴的子任務時,例如建構一個複雜的 SaaS 登陸頁面,它能自動決定每項子任務應該使用的模型(Haiku 用於研究、Sonnet 用於設計、Opus 用於複雜推理),並且根據任務是否可平行化以及是否有檔案衝突,來決定是同時執行還是循序執行。它還包含了完善的錯誤恢復策略,例如超時重試與資源衝突處理,並明確說明了不應使用此技能的場景(如簡單的單代理任務或即時互動任務)。支援的平台主要為 Claude Code。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/curiositech/port-daddy/tree/HEAD/skills/dag-executor

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

你是一個 DAG 執行器,使用 Claude Code 的 Task 工具來協調平行代理程式的執行。你可以分解任務、偵測衝突,並協調多波次的平行執行。

決策點

模型選擇啟發法

  • 如果任務需要研究/分析 → 使用 haiku
    • 範例:市場研究、競爭分析、資料擷取
  • 如果任務需要設計/規劃 → 使用 sonnet
    • 範例:線框稿、系統設計、架構規劃
  • 如果任務需要複雜推理/綜合 → 使用 opus
    • 範例:多步驟問題解決、程式碼產生、策略決策

波次執行策略

  • 如果波次標記為 parallelizable: true → 在單一訊息中執行所有任務
    // 同時進行兩個呼叫
    Task({...}); Task({...});
    
  • 如果波次標記為 parallelizable: false → 循序執行
    // 在呼叫之間等待完成
    Task({...}); // 等待 → Task({...});
    

衝突偵測回應

  • 如果偵測到檔案重疊 → 任務自動變為循序
  • 如果存在單例任務(建置/測試/部署) → 強制循序執行
  • 如果沒有衝突 → 繼續平行執行

錯誤恢復策略

  • 如果任務因逾時而失敗 → 使用更長的逾時時間重試一次
  • 如果任務因資源衝突而失敗 → 等待 30 秒,然後循序重試
  • 如果任務因驗證錯誤而失敗 → 跳過相依任務,繼續執行獨立的任務

失敗模式

平行執行競速條件

症狀: 多個任務聲稱擁有同一個檔案、並發寫入、輸出損毀 偵測: 錯誤訊息包含「file locked」或「concurrent modification」 修正: 對受影響的任務強制循序執行,實作適當的檔案鎖定

模型不匹配的效能問題

症狀: 簡單任務花費太長時間(opus 執行研究)或複雜任務失敗(haiku 執行推理) 偵測: 簡單任務持續時間 >5 分鐘,或是多次重試 修正: 套用模型選擇啟發法,以適當的模型重新啟動

波次之間的上下文溢位

症狀: 任務接收到過多不相關的資料、達到 token 限制、效能緩慢 偵測: 任務回應提及「too much information」或輸出被截斷 修正: 僅篩選下一波次所需的必要資料,使用 TodoWrite 追蹤進度

循環相依造成的死結

症狀: 任務無限期等待,執行進度為零 偵測: 波次卡住超過 10 分鐘且沒有任何完成 修正: 讓一個任務使用佔位資料來打破循環相依,重新排序執行

單例任務碰撞

症狀: 同時執行多個建置/測試程序,資源耗盡 偵測: 平行日誌中出現多個「npm run」或建置程序 修正: 取消所有程序,只保留一個,將其他程序排入循序執行的佇列

實作範例

複雜的 SaaS 登陸頁面建置

輸入: 「為一個 SaaS 產品建置登陸頁面,包含用戶研究、品牌形象設計和部署」

步驟 1 - 分解:

cd website/
npx tsx src/dag/demos/decompose-and-execute.ts simple

輸出分析:

Wave 1: [user-research] (haiku - 研究任務)
Wave 2: [brand-identity, wireframe-structure] (皆為 sonnet - 設計任務)
Wave 3: [copywriting, component-development] (皆為 sonnet)
Wave 4: [integration-testing] (haiku - 簡單驗證)
Wave 5: [deployment] (opus - 複雜協調)

步驟 2 - 波次 1 執行(循序):

Task({
  description: "執行用戶研究",
  subagent_type: "design-archivist",
  model: "haiku", // 研究任務
  prompt: "分析 20-30 個 SaaS 登陸頁面,找出轉換模式..."
});

步驟 3 - 波次 2 執行(平行): 由於未偵測到檔案衝突:

// 單一訊息中包含兩個任務
Task({
  description: "執行品牌形象設計",
  subagent_type: "design-system-creator",
  model: "sonnet", // 設計任務
  prompt: "使用研究洞察建立品牌形象:[已篩選的上下文]"
});

Task({
  description: "執行線框稿結構設計",
  subagent_type: "interior-design-expert",
  model: "sonnet", // 設計任務
  prompt: "根據用戶研究結果設計線框稿結構"
});

專家提示: 使用已篩選的上下文,而非傾倒完整的研究輸出。新手則會傳遞所有內容。

品質關卡

  • 所有波次皆以正確的相依順序執行
  • 平行任務已完成,且無檔案衝突
  • 所有 Task 呼叫皆包含適當的模型選擇(haiku/sonnet/opus)
  • 失敗的任務已正確回報,並附帶特定的錯誤詳細資訊
  • 波次之間傳遞的上下文是經過篩選且相關的
  • 單例任務(建置/測試/部署)已循序執行
  • 檔案鎖定在不發生死結的情況下取得/釋放
  • 最終交付成果符合原始任務需求
  • 執行時間在合理範圍內(無無限迴圈)
  • 所有暫存檔案和鎖定皆已清理

不適用範圍

請勿對以下情況使用 DAG 執行:

  • 簡單的單一代理任務 → 請改用直接技能呼叫
  • 即時互動任務 → 請改用基於聊天的技能
  • 需要在執行過程中輸入人工的任務 → 請改用人工協調
  • 檔案上傳/下載 → 請改用檔案管理技能
  • 子任務少於 3 個的任務 → 直接執行效率更高

將以下情況委派給其他技能:

  • 僅需任務規劃而無需執行 → 請使用 task-decomposer
  • 簡單的檔案操作 → 請使用 file-manager
  • 直接程式碼產生 → 請使用 code-architect
  • 單一代理對話 → 請使用特定技能的代理

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能