ITADN

TaskManager: タスクに weight を持たせて concurrency を「重みの合計」で制御したい

#1312Openisamu 创建于 2026-05-02
I
isamucommented
## Background 現在の `concurrency` は「同時実行 **数**」を制限する。だが実用上、タスクの重さは大きく異なる: - 軽い string 処理(数ミリ秒、CPU 数%) - 重い LLM 呼び出し(数秒〜数十秒、メモリ大) 「同時実行数3」で揃えると、軽いタスクが詰まれば余裕、重いタスクが詰まれば過負荷、という不均衡が起きる。 ## Proposal 各 node に `weight?: number`(デフォルト `1`)を追加。`TaskManager` は実行中タスクの重みの合計が `concurrency` を超えないようにする。 ```yaml nodes: heavy_llm: agent: openaiAgent weight: 5 # 重い処理として5枠を消費 light_template: agent: stringTemplateAgent weight: 1 # (省略可、デフォルト 1) concurrency: 10 # = 重み合計の上限 ``` ## Why - LLM 1個 ≒ 軽処理10個分、のような現実をユーザが宣言的に表現できる - CPU/メモリ配分が直感的に - #1304(label concurrency)と独立に効く(label 内でも weight で制御可能) ## Scope - `ComputedNodeData` に `weight?: number` 追加(type.ts) - `TaskManager` の `runningNodes.size` チェックを `runningWeight` チェックに変更 - 後方互換(weight 未指定なら従来通り 1) - ユニットテスト追加(重い weight が他をブロックすること、weight 合計が limit を超えないこと) ## Out of scope - 動的 weight(agent 実行結果から weight を計算) - weight に応じたタイムアウト調整
0 条评论