@ agentproto/ 工作流程
AIP-15 (中文(简体) ) WORKFLOW.md 参考执行。 用于宣布多步代理工作流程的抽象管弦形状的标记下+前题格式——它的步法,分支,平行,批准门,暂停/恢复,以及补偿. 与标准对等 defineWorkflow 编号 : defineStep 签名。 执行完全生活在每步TOOL.md合同及其AIP-30 DRIVER绑定中;工作流程本身是纯粹的管弦数据.
状态:0.2.0-α.
defineWorkflow财务报告和审定财务报表parseWorkflowManifest已执行; 见src/index.ts用于编写路径.
谱: https://agentproto.sh/docs/aip-15 (中文(简体) )
使用量
import { defineWorkflow } from "@agentproto/workflow"
const x = defineWorkflow({
id: "my-workflow",
description: "Short purpose.",
// ...
})
设计规格(后续——此处未执行)
两个只设计的建议,在给守护进程布线时写出
tool- 步骤登记(packages/runtime/src/workflow-tool-registry.ts和
养狗吃它(packages/worktree/routines/worktree-gc-notify/) (中文(简体) ). 卧底
今天存在的东西;这一变化不会使下文的任何内容得到落实.
A. 出口/进口:WorkingFlow.md * * * createWorkflow / Vercel AI SDK 软件
已经存在的东西. 每个TOOL的预测是真实的,在 ToolImplementation
职等(implementTool(tool, body) 从 @agentproto/driver:
@agentproto/adapter-mastra是因为 toMastraTool(impl, opts)
(单位:千美元)adapters/mastra/src/index.ts:98)对一项执行进行调整以适应 Mastra 的
createTool· ; @agentproto/adapter-ai-sdk是因为 toAiSdkTool(impl, opts)
(单位:千美元)adapters/ai-sdk/src/index.ts:74) 适应同一种形状的AI SDK
dynamicTool。两者都是运行时间的包装(呼叫时间投影),而不是代码.
在WorkFlow一级 不同 先例值得重用
形状,而不是机制: packages/agencies/mastra/src/codegen.ts是因为
procedureToWorkflow(procedure) 读取程序 . md doctype并发出 a
.ts 源文件 应用程序承诺,呼叫 @mastra/core/workflows'
createWorkflow({ id, steps: {...} }) 目前为一级骨架(一)
TODO-stub Mastra 步骤,每个程序步骤;分支/签署门排放
还是评论,不是真的 .then/.branch 连锁). 没有投影仪构建一个
马斯特拉工作流程 对象 从a RuntimeWorkflow 今天是比赛时间.
packages/mastra (AIP-42 AGENT.md = Mastra)有: WorkflowResolver 类型 a
代理可以用来 附 录 外部构建的工作流程,但
MastraWorkflowLike = unknown (单位:千美元)packages/mastra/src/types.ts:27) —— 内容
解决一个对 有点 工作流程对象,它不构建一个.
拟议形状——运行时投影,不是代码. A 类 RuntimeWorkflow
(单位:千美元) compileWorkflow 输出) 已携带活 ToolHandle + 键
DriverHandle[] 每个工具步骤的候选人——相同的投入 runTool 已经
调度。 这说明 @agentproto/workflow-mastra 软件包,兄弟
改为 adapter-mastra,显示 toMastraWorkflow(compiled, opts): MastraWorkflow 将编译为 RuntimeWorkflow 电话通话时间——相同
一级升级关系 toMastraTool 必须 implementTool编码
由于生成的文件是
意为世代相传的手工定制; WorkingFlow. MD的步骤是
意思是按申报的运行,所以没有什么可以手动编辑的——运行时间
投影更适合这里.
步相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相相RunStep 种类, packages/workflow-runtime/src/types.ts:
RunStep.kind | 马斯特拉原始 | 页:1 |
|---|---|---|
tool | createStep({execute}) 包装 runTool | 同今天一样的调度——没有新的路径. 连锁通过 .then(step)。 。 。 . |
group | 平地变平 .then().then()... | |
branch | .branch([[cond, then], [elseCond, otherwise]]) | cond 把台阶包起来 Selector<boolean> 读取 Mastra 运行的上下文代替 Bindings。 。 。 . |
parallel | .parallel([...branches]) | 直接对决. |
map | .foreach(step, { concurrency }) | concurrency ← MapStep.parallelism。 。 。 . |
loop | .dowhile(step, cond) 编号 : .dountil | Mastra的原生回路没有硬迭代帽; LoopStep.maxIterations 需要一个合成的反相步骤——标出差距,而不是在这里解决. |
suspend 编号 : approval | 玛斯特拉是本地人 .suspend() /恢复 | 任何步骤中最接近的尺寸——两者都已经是AIP-7形. |
subworkflow | 筑巢 createWorkflow(...) 作为一步 | Mastra在本土上支持工作流程即行即行. |
agent | 步骤 execute 调用相同的 AgentSessionHost 移植守护进程已注入 | Mastra 没有任何会话- 生命周期原始( 会话Ref/ sandbox/ policy) 来映射到—— 包接现有的主机端口, 而不是强制匹配本地端口 . |
transform | 很简单的一步, execute: async ({inputData}) => step.compute(...) | 只能通过一个基于输入的手柄在 PR 之后才能到达 compile-workflow.ts 过关个案(参见 run-workflow.test.ts 编号 : compile-workflow.test.ts) (中文(简体) ). |
AI SDK方向——比马斯特拉差距要小得多. AI SDK(v5/v6),每架
adapters/ai-sdk'pareDep'没有一等阶图原始——它的
单位是一个工具调用循环( q)generateText编号 :streamText 与 tools + 键
stopWhen) (中文(简体) ). @agentproto/workflow-runtime是因为 runWorkflow 实值 已经 (单位:千美元)
便携式、 依附光线的async 函数, 没有守护进程组合
(单位:千美元)(args: RunWorkflowArgs) => Promise<WorkflowRunResult>),所以自然而然地
"预测"更接近于无: toAiSdkWorkflowTool(compiled, opts)
包装 (input) => runWorkflow({ workflow: compiled, input }).then(r => r.output) 作为单一的AI SDK dynamicTool (全工作流程-一工具)——不
需要逐步进行绘图,因为没有相互竞争的控制流量
与 Mastra 不同.
进口方向(Mastra/AI-SDK → WorkFlow.md),简要. 来自马斯特拉:a
Workflow 对象会暴露自己的步骤图,所以 fromMastraWorkflow(wf): WorkflowHandle 可以走它 并释放一个条目。 mjs- 形状的手柄—— 工具
步入马斯特拉自己的 step.execute 通过合成
ToolHandle +驱动. 分支/ Loop 语义上两者之间差异很大
转接的引擎可能会丢失 这是有记录的限制,
在第一个剪接点里不是要解决的 AI SDK:没有步骤图
要导入,仅一个 generateText+ 键tools 打电话 唯一明智的
"进口"将整个循环嵌入 tool- 不错的一步.
B. 代理流动workflow_start− 工作流程(WorkFlow.md)代理级统一
已经存在的东西. workflow_start按步骤设置
(单位:千美元)workflowStepSchema, (中文(简体) ), packages/runtime/src/orchestration-tools.ts:747(b) ——
label编号 :adapter编号 :prompt编号 :sessionRef编号 :cacheable编号 :sandbox编号 :policy 是一个
aIP-15的近精确结构子集 AgentStep
(单位:千美元)packages/workflow-runtime/src/types.ts: label→id其它的一切都会
a 1:1 字段名称匹配. workflow_start是因为 stages: [{ steps: [...] }] 实值
同位素为线性顶级列表 ParallelSteps,每阶段一次,每阶段一次
树枝相接 AgentStep。两个表面已经经过相同的
runWorkflow 引擎(按此 PR 框架) —— 它们只在
撰写 平面:一个具有声波的MCP-工具 JSON形状对AIP-15
前题/入口.mjs,均以 compileWorkflow → runWorkflow。 。 。 .
拟议统一,分三个不突破阶段:
- 纯 I/ O 无线映射功能
stagesToWorkflowHandle(input): WorkflowHandle转动{ workflowId, stages, ... }输入为条目形状 控件 :stages.map((stage, i) => ({ id: stage.label ?? \阶段 ${i}, 类型 : "并行", 分支 : stage. steps.map(s { id: s. label, steps: [{类型:"代理人", id: s. label, 适配器: s. adapter, 即时:() => s.prompt, session ref: s. session Ref, s. sandbox: s. sandbox, policy: s. policy, 互联网档案馆的存檔,存档日期2013-12-27, 可缓存: s.caxable }}}))(a single one-step stage can degenerate to a bare代理人步骤 -- -- 可选简化,不要求 (第1段). - 重新执行
workflow_start处理器在(1)方面: 建立手柄, 然后编译 + 通过完全相同的路径运行startFromFile已经 ,而不是在workflow-runner.ts。 MCP 工具的请求/答复 JSON 保留 字节相同——workflow-mcp-e2e.test.ts现有主张应 没有改变,因为只有内部移动。 这是报酬: 一 执行器,一个编译器,两个作者的前端而不是两个执行器. - 一次(2)船,
workflow_start工具描述可以说是糖 超过工作时速,md代理步骤,和 aworkflow_run_stages(或类似) 切入点可以跳过 JSON – handle – 编译呼叫者的回程 想要没有 MCP 工具特定形状的映射.
故意超出这个SPEC的范围: 折旧/驱逐
workflow_startJSON级的外形——它是一个公共的MCP表面与
现有呼叫器( 例程) agent 目标、中心、外部整合;
退休需要明确的人类决定,而不是单方面的后续行动.
范围以外: 运行跟踪 状态机器
(单位:千美元)RunState编号 :status()编号 :cancel()缩放 workflow-runner.ts(b) ——
步骤 (2) 仅统一 COMPILE 路径; 运行/状态/取消/升级
簿记是分开的,更大的地表,标记为第四阶段后续.
许可证
麻省理工学院——见 自由主义。 。 。 .