零运行时依赖
taskflow
声明式智能体编排。
把多步骤编程智能体工作描述成 DAG,在花费 token 之前验证它,并且只把最终结果返回到你的上下文窗口。
1{2 "name": "review-changes",3 "concurrency": 4,4 "phases": [5 {6 "id": "discover",7 "type": "agent",8 "agent": "scout",9 "output": "json",10 "task": "List changed source files under src/. Output ONLY a JSON array of {path} objects."11 },12 {13 "id": "review-each",14 "type": "map",15 "over": "{steps.discover.json}",16 "as": "file",17 "agent": "security-reviewer",18 "dependsOn": ["discover"],19 "task": "Review {file.path} for security risks. Return one paragraph."20 },21 {22 "id": "summarize",23 "type": "reduce",24 "from": ["review-each"],25 "agent": "writer",26 "dependsOn": ["review-each"],27 "final": true,28 "task": "Combine these reviews into one prioritized risk summary."29 }30 ]31}一个完整的审查工作流:发现文件、并行审查、然后汇总。
从 JSON 文件到隔离子代理
描述、验证、执行、返回——全部在一个流水线中完成。
编写 DAG
单个 JSON 文件声明阶段与依赖。
先验证
在任何 token 花费前,静态检查捕获循环与预算问题。
扇出执行
map、parallel 和 tournament 阶段运行隔离子代理。
门控与归约
质量门与 reduce 阶段聚合结果。
最终输出
只有最后阶段返回到宿主上下文。
数据一览
4 个宿主
Pi、Codex、Claude Code、OpenCode
10 种阶段类型
agent、map、gate、reduce 等
0 个运行时依赖
零生产依赖
跨会话续跑
从断点继续运行
为真实智能体工作流而建
声明式 DAG
将阶段、依赖和 fan-out 定义为数据。运行时把你的图变成隔离的子代理调用。
上下文隔离
中间记录留在运行时内部。只有最终阶段的结果会进入你的对话。
跨会话续跑
暂停或失败的运行从断点继续。重新运行时自动跳过已缓存阶段。
声明式 vs 命令式
为什么把智能体工作流声明为数据,而不是写成脚本?
| 维度 | 声明式 | 命令式 |
|---|---|---|
| 花费 token 前可验证 | 在任何模型调用前检查 DAG 的循环、死路和预算。 | bug 在运行时才暴露,此时已经花了钱。 |
| 上下文成本 | 只有最终结果返回上下文。 | 每次子代理的完整记录都会涌入宿主对话。 |
| 失败后续跑 | 重新运行时自动跳过已缓存阶段。 | 从头开始重新运行。 |
| 可复用性 | 保存、版本化并按名称调用。 | 每次运行之间复制粘贴脚本。 |
早期用户反馈
我们把一份 50 个文件的安全审查,从上下文窗口灾难变成了 10 分钟的 taskflow。
平台工程师,B 轮初创公司
光是跨会话续跑就帮我们省了几个小时。运行死在汇总阶段时,我们只需继续它。
资深工程师,AI 基础设施
锦标赛阶段生成的标题和发布说明草稿,始终优于我们的单轮生成。
开发者布道师,开源工具