2026年9月24日 1 分钟阅读

AgentRun 实战:用 DSL 把 AI Agent 工作流变成可检查、可重跑的流程

tinyash 0 条评论

AI Agent 一旦从“回答问题”进入真实业务,最难维护的往往不是模型,而是流程:先搜索什么、什么时候让模型判断、失败后是否重试、何时升级给人工,都散落在业务代码里。流程一复杂,调试、复现和权限控制就会变得困难。

AgentRun 是 Parcha Labs 发布的一套工作流 DSL。它把步骤、状态、输入输出契约和决策节点放进可检查的工作流文档中,再由宿主应用提供工具、模型访问、权限与预算。项目当前 README 标注为 0.1.0-beta.3,采用 Apache-2.0 许可证,适合用来理解“Agent 编排层”应该怎样与业务代码分工。

先看它解决什么问题

| 需求 | 直接写 Agent 循环 | AgentRun |

| — | — | — |

| 固定步骤 | 散落在回调和条件分支中 | 用节点和状态路径表达 |

| 模型判断 | 手动解析自然语言 | 用带 schema 的 judge 节点 |

| 失败处理 | 每个项目各写一套重试 | 工作流内声明重试、循环和升级 |

| 复现测试 | 依赖线上模型输出 | 可先用 scripted fixtures 运行 |

| 审查流程 | 很难看清 Agent 走了哪条路 | 工作流文档可检查、可重跑 |

关键点是:AgentRun 不替你管理模型和工具。它更像一层“可执行流程定义”,把不稳定的 Agent 行为放进明确的边界里。

安装并跑通第一个示例

项目要求 Node.js 22.19+。新建目录后安装 beta 包:

npm install @parcha/agentrun-dsl@beta
npx agentrun demo

这个 demo 使用脚本化的决策和响应,不需要 API Key,也不会给客户发送消息。若想运行仓库中的完整支持流程,可以这样操作:

git clone --branch main --single-branch https://github.com/Parcha-ai/agentrun.git
cd agentrun
npm ci --ignore-scripts
npm run build
npm run demo:support

示例会把请求分成“直接返回帮助答案”“调用 Agent 调查”“升级人工复核”等路径。它还提供 npm run test:support,方便在接入真实模型前先验证流程本身。

场景一:让判断节点拥有明确的输出

AgentRun 的工作流可以把工具调用和判断分开。例如先调用搜索工具得到 Candidate,再让 Jev 判断答案是否满足条件:

{
  node: 'call', label: 'find-answer', via: 'tool',
  tool: 'help.search', args: { request: '{request}' },
  out: 'Candidate', as: 'answer', deadline_s: 10,
},
{
  node: 'judge', label: 'check-existing-answer',
  state: { request: '{request}', answer: '{answer}' },
  out: 'Fit', as: 'fit',
}

官方支持示例要求判断结果为 yes,并且置信度至少为 0.8;否则允许 Agent 调查一次,再次检查,仍不满足就进入人工复核。这个设计比“让模型自由输出一段判断理由”更容易测试,因为下游只消费约定好的字段。

场景二:把并行研究封装成可重用流程

除了线性步骤,文档还展示了嵌套工作流、并行研究、证据筛选和报告生成。一个研究任务可以先拆出多个子问题,再并行调用不同工具,最后由筛选节点选择证据并交给报告节点。

这类流程最适合保存为项目级定义:输入是问题和约束,输出是带证据的报告,中间状态则记录每一步的结果。以后更换模型或工具适配器时,流程结构仍然可复用。

场景三:接入已有 Agent,而不是重写整个应用

接入自己的应用时,AgentRun 要求宿主提供三类适配器:用 runEffect 连接工具,用 runNode 连接现有 Agent,再用 createJevRunner() 作为判断节点的 runJudge。完成工作流后,可以把 runWorkflow 注册成 Agent 的一个工具。

实时 Jev 调用需要单独的 TYPESAFE_API_KEY;不包含 Jev 判断的工作流则不需要这个密钥。权限、取消和恢复策略也应由宿主应用决定,这一点很重要:DSL 能验证状态路径,却不能自动证明答案事实正确,也不能替你创建安全沙箱。

最佳实践与边界

  1. 先 fixtures,后真实模型。 先用脚本化响应覆盖成功、重试和升级路径,再接入线上模型。
  2. 把阈值写进契约。 yes/no/uncertain、置信度和 deadline 都应成为显式条件,而不是藏在提示词里。
  3. 把权限留在宿主。 README 明确提醒,代码节点以进程权限执行;不可信工作流作者需要由宿主控制沙箱。
  4. 不要把 DSL 当作事实核验器。 类型和 schema 能约束形状,不能保证模型输出真实。

AgentRun 的价值不在于再造一个聊天 Agent,而在于给 Agent 行为加上一层可读的流程边界。如果你的项目已经出现大量重试、人工升级和多步研究逻辑,用 DSL 固化路径,再让宿主掌握模型、工具和权限,通常比继续堆条件分支更容易维护。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。