Dynamic Workflow 让主 agent 通过写程序(而非对话)来指挥大量 subagent。模型针对一个小 facade 写普通 TypeScript 脚本;由 harness(而非模型)提供严谨性。

名字碰撞提醒:CreateWorkflow 是本特性的工具;旧 Workflow 工具和 /expert 是另一个更老的功能。/workflow <instructions> 命令加载 dynamic-workflows skill。

Facade(编程接口)

模型写的脚本针对一个 facade(.d.ts)——编译器检查的接口与工具描述里嵌入的接口是同一份字符串,因此模型读到的和能力检查的不会漂移:

  • agent() 创建 subagent;.ask<T>() 给它任务并返回类型化结果
  • files.*、git.*、world.run 读写和探测工作区
  • report 流式输出发现;artifact.* 发布交付物
  • phase() 命名阶段;log 叙述
  • 其余是普通 TypeScript:await、Promise.all、for、while、if、try/catch、helper、.map

示例(Programmer/Prover 交替直到证明接受或达轮次上限):

const programmer = agent("Programmer", { system: "You are a Lean 4 engineer…" });
const prover = agent("Prover", { system: "You are a Lean 4 verification expert…" });
phase("Implement");
let impl = await programmer.ask<ImplUpdate>(`Implement compress / decompress in ${IMPL_PATH}.`);
phase("Verify");
let verdict = await prover.ask<Verdict>(`Prove or refute ${THEOREM}. Notes: ${impl.notes}`);
while (!verdict.pass && round < MAX_ROUNDS) { /* ... */ }

agent() 在循环外创建才能让 subagent 跨轮保持自身 memory;循环内创建则每轮都是新 subagent。

从一份脚本回收的东西

回收项方式
类型脚本被 TypeScript 编译器按 facade 的 .d.ts 类型检查
schema每个 ask<T> 从 T 合成 JSON schema,subagent 答案按 schema 校验
依赖图静态分析读一次脚本,画出谁喂谁、谁在谁之后、控制流可去哪
身份每个 facade 调用是 site(稳定 id),每次执行是 instance
持久性每个 instance 被 journaled;重跑同一脚本时 journal 回答已发生的事

最适合的两类任务:宽而结构化的工作(“找遍每个 TS 文件的 bug” = 一次 files.glob + .map)和模型不能偏离的固定流程(如交替的 Programmer/Prover 循环)。

组成部分(The pieces)

  1. Authoring:facade 是一份 .d.ts 字符串,喂给编译器并被工具描述嵌入。/workflow 命令加载 dynamic-workflows skill(承载判断层)。同一文档拥有 world.run、artifact 通道和 EvalWorkflowSnippet(在真实编译器与沙箱里跑脚本片段、无 subagent 的 scratch 工具)。
  2. Analysis:运行前,分析器编译脚本、收集 sites、跑 authoring 检查、解释脚本一次产出单一 analysis core;从 core 投影四张图:site graph、causality graph、control-flow graph、hand-off graph。不精确只会放宽边集;唯一拒绝脚本的规则是”facade 调用必须是直接调用”。
  3. Launch:CreateWorkflow 接受内联脚本或按名保存的 workflow,编译后在所有权限模式都升起确认窗口。
  4. Runtime:dynamic-workflow-runtime 用 child-process + vm 沙箱执行;dynamic-workflow 是纯 TS 的 facade/编译/静态分析/纯执行引擎。

实现包

包作用
apps/zcode-cli/packages/dynamic-workflow纯 TypeScript facade、编译、静态分析与纯执行引擎
apps/zcode-cli/packages/dynamic-workflow-runtimechild-process + vm 沙箱 harness
apps/zcode-cli/packages/bundled-skills唯一的系统技能 dynamic-workflows

工具池

workflow 相关工具(见 tool-system):CreateWorkflow、AmendWorkflow、SaveWorkflow、ListSavedWorkflows、ListModels、EvalWorkflowSnippet、ListWorkflowRuns、GetWorkflowRun、ResumeWorkflowRun、ResolveWorkflowQuestion、FillWorkflowHole。dynamic workflow 关闭时这些工具下架。

门控

CreateWorkflow/AmendWorkflow/FillWorkflowHole/SaveWorkflow/EvalWorkflowSnippet 在 dynamic-workflows 技能加载前拒绝运行(bundled-skills/skills/dynamic-workflows/SKILL.md:11-15)。灰度通过 skills-system 的 disabledPaths 机制。

设计文档

docs/dynamic-workflow.md(入口)+ docs/dynamic-workflow/:authoring.md、concurrency.md、launch.md、presentation.md、transcript-and-notifications.md。Presentation 里有专门的 timeline 颜色 token(--color-workflow-*,见 DESIGN.md)。

相关页面