Next-Step Architecture · winBrain Creator OS

专家调度:subagent 方案 vs Dynamic Workflow 方案

在 winbrain_os-ink-agent-sdk-clean 下一步仓库架构上,两条路线的落地差别

subagent = Claude 逐轮调度Workflow = 脚本编排专家 = 可调度角色计划在哪,谁就说了算
结论 差别 = 「谁持有计划」:subagent 方案计划在主 agent 上下文里(Claude 逐轮决策,适合专家级实时聊天);Workflow 方案计划在可重跑的 JS 脚本里(运行时后台编排几十到几百个 agent,适合批量/审计/交叉验证流水线)。 下一步仓库建议:两者并存 —— 专家聊天用 subagent(低延迟、单会话聚合),批量任务/对抗评审用 Workflow(可重跑、质量模式),共享同一套专家 Plugin 资产与 Sandbox B 安全门。

SVG两条路线 · 仓库架构落点对照

方案 A · 专家 = Subagent 计划在主 agent 上下文 · Claude 逐轮决策 项目 SDK 会话(主 agent) 拆任务 → Agent 工具 → 汇总 专家A subagent .claude/agents/a.md + skills/ 员工 专家B subagent .claude/agents/b.md + skills/ 员工 代码落点:expert-x/.claude/agents/*.md(frontmatter: model/tools/description) 方案 B · 专家 = Workflow 阶段 计划在可重跑 JS 脚本 · 运行时后台编排 .claude/workflows/audit-fix.js(脚本持有计划) phase 1: 诊断专家 fan-out ×N → 各写 findings phase 2: 方案专家 → 汇总方案 phase 3: 对抗评审 agent → 交叉验证 → 报告 中间结果在脚本变量 · 可 resume · 可重跑 运行时(隔离环境,无 fs/shell) 代码落点:.claude/workflows/*.js + /workflows 进度视图 共享底座(两方案通用,不改) · 专家资产 = plugin(.claude-plugin/plugin.json + skills/ 员工),subagent/workflow 都只读加载它 · Sandbox B 双门禁(OS Sandbox + PreToolUse)· env:{} · Credential MCP · 项目/Ontology MCP 只读 · 事件流已支持 subagent kind · SDK options 已配 workflowSizeGuideline(现为 unrestricted) 怎么选(建议并存) · 专家实时聊天 / 单轮协作 → subagent (低延迟,一次 SDK 会话内聚合,零额外进程) · 批量 / 审计 / 迁移 / 交叉验证 / 对抗评审 → Workflow (脚本可重跑,质量模式,成本高但可控) · 两者都过 Sandbox B 与模型路由护栏;云端 Sandbox A 白名单需补 Agent 工具才通 workflow

Table逐条对比 · 点击表头排序 · 输入即过滤

12 项
维度 subagent 方案 Dynamic Workflow 方案
谁持有计划 主 agent 上下文(Claude 逐轮决策) JS 脚本(运行时执行,Claude 上下文只留最终答案)
代码落点 expert-x/.claude/agents/*.md(frontmatter: name/model/tools/description) .claude/workflows/*.js(phase 循环/分支/汇总)
中间结果存哪 Claude 上下文窗口(token 随轮次累积) 脚本变量(不污染上下文,进度视图可查)
调度者 Claude 自己:Agent 工具(description/prompt/subagent_type/model/name/isolation) 运行时:脚本编排,可 fan-out / 分支 / 多阶段
规模 每轮几个委派任务 几十到几百个 agent/run(≤16 并发,≤1000 总量)
中断恢复 中断即重开回合 可 resume:已完成 agent 返回缓存,后续按启动顺序重跑
可重跑性 重跑靠重新对话(worker 定义可复用) 编排本身可重跑、可保存为命令、可随 plugin 分发
运行中输入 逐轮可交互 运行中无用户输入(阶段间签核需拆多 workflow)
隔离 subagent 继承父会话 sandbox(isolation:"worktree" 可选) 脚本运行在隔离环境(无 fs/shell/import),agents 继承会话权限
成本 低:一次会话内聚合,无额外进程 高:多 agent 多阶段,>25 agents 或 >150 万 token 触发 Large 警告;/config 可设规模指导
质量模式 无内建(需 prompt 手写互审) 内建:独立 agents 对抗互审、多角度起草再权衡
与现状契合 SDK 0.3.220 原生;事件流 execution.ts 已有 subagent kind;三处 options 已配 workflowSizeGuideline SDK 支持(0.3.220);workflowSizeGuideline 已设 unrestricted;/workflows 进度视图需 Web/TUI 映射

Decision下一步仓库落地的两条路径

路径 A · 先做 subagent 专家

  • 每个专家目录加 .claude/agents/<expert>.md:角色定义(name/model/tools/description)
  • 主 agent(项目会话)按任务自动 Agent 调度,员工 skills 原样保留
  • 改动最小:只动专家资产格式 + buildChatOptions 装载,不动运行时
  • 风险低:单会话内聚合,成本增量小,Sandbox B 语义不变
  • 局限:无法规模化 fan-out;计划不可重跑

路径 B · 先做 Workflow 流水线

  • 新建 .claude/workflows/ 目录,Claude 按任务生成编排脚本
  • 典型流水线:诊断专家 fan-out → 方案专家汇总 → 对抗评审 → 引用报告
  • 改动大:需要 /workflows 进度视图的 Web/TUI 映射 + 运行时护栏验证
  • 成本高:先跑小切片(1 目录/窄问题)再放大
  • 收益:批量审计、500 文件迁移、交叉验证研究一次写死可重跑

Action Loop决策清单 · 勾选 + 复制

下一步仓库演进 · 你的决策0/6
▸ 证据来源(展开查看:官方文档 / SDK 实证 / 当前仓库痕迹)

1. SDK 0.3.220 subagent 能力(node_modules/@anthropic-ai/claude-agent-sdk/sdk-tools.d.ts 实证)

interface AgentInput {
  description: string;           // 3-5 词任务描述
  prompt: string;                // 任务
  subagent_type?: string;        // 自定义 agent 定义
  model?: "sonnet"|"opus"|"haiku"|"fable";
  run_in_background?: boolean;   // 并行
  name?: string;                 // SendMessage({to: name}) 寻址
  isolation?: "worktree"|"remote";
}

2. 官方 Dynamic Workflows(code.claude.com/docs/en/workflows.md)

"orchestrate many subagents from a script Claude writes and you can rerun"
· 计划在代码:循环/分支/中间结果在脚本变量,Claude 上下文只留最终答案
· ≤16 并发 agents / ≤1000 agents/run;无运行中输入;禁止 import()
· 可 resume(已完成 agent 缓存);可保存为命令;随 plugin 分发
· >25 agents 或 >150 万 token → Large workflow 警告;/config 规模指导 small/medium/large
· /deep-research 为内置 workflow(fan-out 搜索 + 交叉验证 + 投票 + 引用报告)

3. 当前仓库已有痕迹(winbrain_os-ink-agent-sdk-clean)

· src/application/contracts/execution.ts:3  kind: "runtime"|"tool"|"subagent"|"asset"|"risk"
· src/adapters/outbound/claude-agent-sdk.ts:43  workflowSizeGuideline: "unrestricted"
· src/adapters/outbound/claude-agentbay-session.ts:52  workflowSizeGuideline: "unrestricted"
· src/adapters/outbound/claude-ontology-assistant.ts:28  workflowSizeGuideline: "unrestricted"
· docs/testing/unlimited-agent-execution.tdd.md  — 明确放开 workflow 规模建议

4. 专家资产现状(organization.ts)

ExpertAsset = { id, name, description, pluginPath, employees[], ontologyMcpIds?, mcpServerIds?, status }
buildChatOptions: plugins:[{type:"local", path}], skills: context.skillNames
→ 两方案都只需在 plugin 资产之上加 .claude/agents/ 或 .claude/workflows/ 一层