AgentRun: 将智能体转化为工作流的DSL
Show HN: AgentRun: DSL to turn agents into Workflows

AgentRun 是一款专为现有智能体设计的流程语言,让你能轻松定义可重复的执行步骤。它巧妙结合 Jev 进行精准决策,并在需要深入调查时自动调用智能体,同时完全保留你应用原有的工具、模型访问权限及预算控制。无论是通过 TypeScript 构建器还是 JSON 定义,你都能快速搭建起包含搜索、判断、人工复核等复杂逻辑的自动化工作流,让智能体在保持灵活性的同时,拥有更强大的结构化执行能力。
你的应用保留其工具、模型访问权限、权限和预算,而 AgentRun 负责编排可重复的步骤与精准决策。
HN 评论区
11- JustFinishedBSG
我会仔细研究一下,因为我正在琢磨“工作流定义语言应该长什么样”。
我目前的愿景和原型是,它应该尽可能接近一门“真正”的编程语言,这样用户和智能体都能立刻明白如何使用以及它是如何工作的。
所以对于 `pi` 来说,意味着使用 TypeScript。
然后 UI 尽可能从 AST/代码派生,对于那些无法这样优雅实现的部分,我最终会添加一些小的语义辅助工具来定义 UI。
例如,“计划 -> 执行”在代码中是这样的:
await flow.unroll(
remaining.map(point => ({
key: point.id,
label: point.objective,
})),
async () => {
for (const point of remaining) {
await flow.item(point.id, async () =>
await flow.agent(executePoint, {
title: `Point ${point.id}`,
prompt: point.objective,
}));
}
},
{ title: `Plan r${planRevision}` },
);
(简化后的代码)
在我的实现中,`unroll` 的存在仅仅是为了获得一个漂亮的 UI,显示为:
● Plan r1 · 1/3 · active
1. Inspect parser behavior
● 2. Add empty-input coverage
○ 3. Run focused checks
而不是那种没有任何细节的普通“Plan · 1/3”UI(如果我直接用 for 循环的话,确实也能跑,但效果就是这样)。
- alex7o
这只是一个定制的工作流引擎,但对于这类东西,你本可以使用任何现有的引擎并交给智能体使用。比如 Temporal、Erandril 都基于 pg 构建了持久化工作流解决方案,或者根据你看待问题的角度,也可以用 windmill/airflow。只是这些工具没有提供那样漂亮的 UI。
- speckzzz
如果边没有成本或努力属性,终止状态没有奖励,那么图工作流就是没用的。这种工作流任何懂图的人都能一次性“凭感觉”写出来(vibecoded)。
我之前想过把 SDLC 表达为 harness 工具的组合,加上带有权重(努力程度)的边和某些状态下带有奖励的有限状态机。目标是将任务队列建模为子工作流,并实现最有价值的那些。我尝试设计一种方法,通过马尔可夫决策过程(Markov Decision Process)以最小的成本和风险最大化奖励。理论上我可以实现它。但到头来,由于状态机、脚本的自定义运行时、智能体循环控制、监督者的控制机制,这一切都让人难以理解。然后你还得调整权重模型。这个模型可能类似于强化学习中的模型。即使我成功了,我也得运气爆棚才能让别人中有一个搞清楚它是做什么的以及怎么用。最终这个项目在 GitHub 上大概只有 3 到 5 个星星,因为几乎没人能看懂它是什么以及如何使用。