
最近在找一个靠谱的 AI 工作流自动化平台,踩了几个坑,终于找到 OrcFlows 这套方案,用下来感觉解决了几个痛点,这篇把核心点说清楚。
TL;DR:OrcFlows 是一个面向生产级自动化的工作流平台。每个执行都是一个持久化的 Temporal 工作流,不怕崩溃、不怕部署。AI Agent 留有完整的决策轨迹。变更有版本管理、可对比变更、可测试,审批通过后才能从开发环境推到生产环境。可视化画布,用 Go 写的,跑在 Temporal 之上。有免费版,定价简单,不按任务收费。
想象一个简单的工作流:收到订单的 webhook 触发后,第一步扣款,第二步发欢迎邮件,第三步在钉钉群里发通知。
现在,在第一步和第二步之间把 worker 进程 kill 掉。可能是部署、内存溢出、或者节点被调度走了——这种事迟早会遇到。然后呢?完全取决于你的自动化工具把状态存在哪。如果状态在进程内存里,结果就是两个坏选项之一:要么这个执行直接消失(钱扣了,但用户没收到欢迎邮件),要么从头重跑(用户被扣了两次钱)。
很多自动化工具最早就是给简单的 SaaS webhook 场景设计的,"重试一下" 是可以接受的答案。但如果某一步是转账、发邮件、或者部署代码——这答案就不够用了。更别说当 LLM 是决定下一步做什么的那个角色时,情况只会更糟。
我们做 OrcFlows,就是为了那些凌晨 3 点失败但早上 9 点很重要的执行。
OrcFlows 是一个可视化的工作流和 AI Agent 构建工具。你可以把触发器、Agent、工具和连接器拖到画布上——或者用自然语言描述工作流,让生成器帮你连好——每一次执行都跑在一个持久化引擎上。
画布界面。一个钉钉消息触发一个 AI Agent。橙色虚线是 Agent 可以调用的工具。
核心组件:
这是每个自动化工具都有的功能列表。这篇文章的重点是底层有什么不一样。
每一个 OrcFlows 执行都是一个 Temporal 工作流,每个步骤都是一个 Temporal 活动(Activity)。Temporal 会持久化执行的完整事件历史——每个步骤的输入、输出、重试和信号——所以状态永远不会只存在于一个随时可能挂掉的进程里。
同样的工作流,同样的崩溃。没有检查点的话执行从头开始,会扣两次款。有了检查点,从第二步恢复。
实际使用中的好处:
诚实说一下限制:正在执行中的步骤如果 worker 挂了,会被重试——这是所有持久化系统都这样的。对于扣款、发邮件这类有副作用的调用,在目标 API 支持的情况下传一个幂等 key。你不会遇到的状况是:已完成步骤跑两次,或者整个执行悄悄消失。
有些步骤不应该没人确认就执行:超过限额的退款、生产环境部署、发给大客户的重要邮件。审批步骤会把执行挂起,通过钉钉、飞书或应用内通知相关人员。一旦他们响应,执行立刻恢复——或者如果被拒绝,就停在那。
左:执行在 request-approval 处挂起。右:同样的审批消息发到了 Telegram,点一下就能通过或拒绝。评论会写入审计日志。
底层是 Temporal signal,所以等待不花任何代价,而且不怕重启。这也是你可以用来实现任何"等待外部事件"模式的机制。
一个在 demo 里表现很好但在生产环境出奇怪行为的 Agent,就是个调试噩梦。所以 OrcFlows 把 Agent 执行当作数据来对待:
会话时间线。每一轮是独立的执行,会话把它们串在一起。
工作流也可以暴露给其他 AI 客户端使用:把一个工作流标记为 MCP 启用,它就会作为工具出现在你工作空间的 MCP 服务器上。
在很多自动化工具里,工作流就是数据库里的一行,你在线编辑。这就是为什么周五下午 4 点一个字的 prompt 改动就直接进了生产。OrcFlows 给工作流配备了和代码一样的护栏。
每次保存都是版本——可以对比任意两个版本。
两个版本之间 prompt 只改了一行。另一个护栏:推到生产了,但要等管理员审批才生效。
带审批的环境。 工作流有 dev、staging 或 prod 环境标识。提审会先打快照当前版本,所以可以回滚。提审到生产会把工作流停在 pending_approval 状态,直到负责人或管理员确认。
发布前先模拟。 模拟用真实的触发数据跑一遍工作流,有真实的 AI 推理和真实的分支——但连接器、HTTP、浏览器和审批步骤会被 stub 或自动通过。你能看到改动会做什么,但不会真的发出一条钉钉消息或扣一笔款。
模拟:回放最近一次执行的触发数据,或者粘贴你自己的 JSON。
Git 作为事实来源,想用就用。 把工作流定义推到你控制的仓库里,再拉回来,这样自动化变更就像其他代码一样在 pull request 里 review。
Git 同步:指向仓库、分支和路径前缀,token 存为 secret。
"这个改动让 Agent 变好了还是变差了?"不应该靠感觉来回答。OrcFlows 内置了评估功能:
发布流水线。评估失败会阻止提审;评估通过后,生产环境还需要管理员审批。
{{ secret.NAME }} 引用;不会出现在工作流里。无聊但成熟的组件,组合起来实现持久化。
三个组件——Go API 服务、Go Worker 和 SvelteKit 控制台——跑在 Temporal、PostgreSQL 和 Redis 之上。Worker 监听两个任务队列:main 队列处理 Agent、代码和文档处理这类重活,fast 队列处理转换、HTTP 调用和条件判断这类亚秒级操作。一个 30 秒的 LLM 调用永远不会让一个 20 毫秒的转换排队在它后面。
选 Go 不是营销噱头。Worker 是编译好的二进制,内存占用小,并发便宜。
我们对整个技术栈做了压测,不是 hello world 端点。Locust 在 8 分钟内跑了 200 并发用户,覆盖 20 种端点类型——认证、CRUD、触发器、执行、secret、知识库。每个触发器都启动一个真实的五步持久化工作流(set → HTTP → transform → condition → set),每步都持久化到 PostgreSQL。API、Worker、Temporal、PostgreSQL 16 和 Redis 7 都跑在本地 Docker 上。
| 端点 | 中位数 | p99 |
|---|---|---|
GET /health |
1 ms | 32 ms |
GET /workflows |
2 ms | 66 ms |
POST /trigger(五步持久化工作流) |
9 ms | 180 ms |
POST /workflows |
15 ms | 360 ms |
POST /auth/login |
63 ms | 200 ms |
| 全部 20 种端点类型 | 3 ms | 160 ms |
结果:216,474 请求,0 失败,451 请求/秒持续吞吐,满负载下 Go 堆只有 19 MB。
带点 grain of salt 来看。这是我们在自己的机器上测的,测的是 API 和触发路径——不是你的工作流对下游的调用,也不是 LLM 延迟,而后者在任何 Agent 执行中都会是主要瓶颈。可以把它当作引擎不会成为瓶颈的证据,但别当作你工作负载的承诺。
那些按任务收费的自动化工具,自动化越多收费越多。OrcFlows 不这样:每个版本都包含无限次执行。
| Free | Pro | Enterprise | |
|---|---|---|---|
| 价格 | $0 | $13 / 月,按工作空间算,固定 | 定制 |
| 活跃工作流 | 10 个 | 无限 | 无限 |
| 团队席位 | 3 个 | 20 个 | 无限 |
| 知识库存储 | 6 MB | 1 GB | 无限 |
| Worker 容量 | 基础 | 5 倍于 Free | 更高 |
| 还包含 | 120+ 连接器、持久化执行、社区支持 | 个性化支持 | SSO / SAML、组织、审计日志、私有部署、SLA |
达到 Free 版的工作流上限时不会出问题:已有工作流继续跑,只是不能再激活第十一个,除非升级或停用一个。也可以在自己的基础设施上自托管社区版——看文档里的部署说明。
适合的场景: 自动化的东西失败有代价(支付、客服、运营、DevOps),在构建需要追踪和评估的 AI Agent,想要像代码一样 review 和门禁自动化变更,或者现有工具的可靠性或按任务计费模式已经不够用了。
暂时不适合的场景: 需要长尾的、成千上万个冷门 SaaS 集成的——OrcFlows 有 120+ 连接器加 HTTP 和自定义节点来弥补,但没有那么大的市场。还在 公开 beta:变化快,有些边角粗糙。另外如果只是需要在两个常用应用之间做个两步的简单联动,轻量级工具可能就够了。
看文档,有问题欢迎反馈。
今天就部署你的第一个持久化工作流:orcflows.com