Repository navigation
Closed
Description
Written-by: bot-im
Owner: Dev
Ask
Owner (2026-10-28 Asia/Shanghai): 「workflow要能选模型」 — Workflow must let you choose a model, not only show a static label.
What happens today
- Graph data already has
node.model(define_workflow/ README;plugins/workflow/src/{graph,service,ephemeral}.jspass it into the ephemeral Bot asmodel: node.model || seated?.model). - The product UI never lets you set it:
- Stage Details shows a hard-coded 「Model → Each Bot's own model」 / 「跟随各个 Bot 的模型」 (
plugins/workflow/client.jsDetails). - Settings → Workflow graphs node inspector edits prompt / role / tools only — no Model field.
- Stage flowchart edit inspector is prompt-only.
- Stage Details shows a hard-coded 「Model → Each Bot's own model」 / 「跟随各个 Bot 的模型」 (
So a run always inherits whatever the seated Bot (or host default) carries; there is no Workflow-side control.
Expected
- Per-node Model control in edit mode on both surfaces that already edit nodes:
- Settings → Workflow graphs inspector
- Stage / flowchart node inspector (when editing)
- Options come from the same model catalog the rest of FlyBot uses (Harness /
roster.models/ existingmodel-menupatterns incore/src/client/model-menu.js). Do not invent a parallel list. - Empty / default keeps today's behavior: ephemeral Bot uses seated Bot model, else host default (
nodeConfigalready doesnode.model || seated?.model). - Choosing a model writes
node.modelthrough the existingworkflow/graph(or equivalent) save path and survives reload. - Details / summary copy should show the chosen model (or 「Each Bot's own model」 only when unset) — not a forever-static string.
- ZH/EN strings via existing
tr(); changelog fragment;plugins/workflowtests cover pick → save → state round-trip; no hand-editedcore/client.js(regenerate with repo scripts if core is touched).
Out of scope
- Do not change pause/resume/stop, ephemeral hide-from-sidebar, or real-run gating.
- Do not require a workflow-level single model unless you find the data model already needs it; per-node is the ask (matches stored
node.model). - Leave HugoXK-claimed work (fix(workflow): dark themes lose the flowchart node role sub-label to a hardcoded grey (#1484 regression) #1495 / policy: please do not pick up a FlyBot issue that has no PR yet, unless the FlyBot team posts
pickup-ok#1496 pickup-ok) alone.
Prod note
Fleet is already on tip 55e1c27a (Deployment upgrade after owner 「升级一下」). Still: do not ask for another prod upgrade in this PR's body; owner decides after merge.
Acceptance
- Edit a node → pick a model from the catalog → save →
workflow/state(or graph read) shows thatmodelon the node. - Clear / leave empty → run still starts; ephemeral uses seated/default as today.
- A run with an explicit
node.modelspawns the ephemeral Bot with that model (assert in unit test aroundnodeConfig/ spawn stub). - Details no longer always say only 「Each Bot's own model」 when a node has a model set.
Metadata
Metadata
Assignees
Labels
No labels
Activity
Birfy commentedon Oct 27, 2026
Owner correction (2026-10-28 Asia/Shanghai): 「不用per-node,per-workflow就行」 — one Model setting for the whole Workflow, not per node.
Update acceptance accordingly: workflow-level
model(or equivalent), one picker on Workflow Details / Settings graphs; empty keeps 「Each Bot's own model」 / seated / host default for all nodes in that run.[-]feat(workflow): pick a model per Workflow node (not a static 「Each Bot's own model」)[/-][+]feat(workflow): pick one model per Workflow (not a static 「Each Bot's own model」)[/+]