拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Flue外部调度器集成指南:3步接入你自己的Cron系统

Flue外部调度器集成指南3步接入你自己的Cron系统【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flueFlue是 The sandbox agent framework沙盒式 Agent 框架它让 AI Agent 能持久运行、处理消息队列并可靠执行任务。在 Flue 中调度器Scheduler不需要框架内置——官方设计理念是把何时触发交给你的 Cron 系统Flue 只负责触发之后可靠地投递任务。这意味着你可以接入任何外部调度器平台自带的 Cron Job、CI 定时任务甚至你自己部署的 crontab 脚本。为什么Flue调度器集成要依赖你自己的Cron系统Flue 的调度由三个部分组成 组件作用由谁负责触发器Trigger按 cron 表达式定时点火你的 Cron 系统 / 云平台投递Delivery向 Agent 会话投递一条消息Flue 的dispatch(...)接口会话Conversation接收每次触发的目标对话由id参数决定这个设计带来三个好处✅可移植换部署平台Node、Fly、Render、Railway、Cloudflare不需要改 Agent 代码只换触发方式✅可靠平台调度器在你进程挂掉时依然会触发避免进程重启窗口丢任务✅简单Flue 侧唯一要做的就是收到信号后调用一次投递。外部调度器集成架构一次HTTP POST就是全部Flue 没有自己的调度器每个部署目标都复用同一个投递面。当你的平台把 Cron 作为服务提供时如 Fly Scheduled Machines、Render Cron Jobs、Railway Cron Schedules标准做法是调度器直接向已部署应用发送一个 HTTP 请求而不是另起一个进程。你的外部调度器只需发出这样的请求POST /agents/reporter/daily-summary HTTP/1.1 Content-Type: application/json Authorization: Bearer scheduler-token { kind: signal, type: schedule, body: Review recent activity and prepare the daily summary. }请求体就是一个结构化的signal信号type标记它是调度触发body是写给 Agent 的指令还可以携带attributes扁平字符串元数据比如计划时间。服务端在消息被**可靠接收admission**后立即返回202与框架内dispatch(...)的行为完全一致。完整的消息结构参见官方 Schedules 文档schedules.md最快配置方法接入外部Cron的3个步骤第1步把Agent挂载到HTTP路由外部调度走的是 HTTP 路径因此 Agent 必须在src/app.ts中显式挂载Flue 不做文件名路由。在 examples/node-schedules 示例中挂载只需一行app.route(/agents/scheduled, createAgentRouter(Scheduled));第2步让挂载点通过中间件校验调度器身份⚠️重要安全提示Flue 的挂载点没有内置认证——任何能访问会话 URL 的人都可以发消息、读历史、中止任务。因此必须像保护任何敏感端点一样在挂载之前叠加自己的中间件验证调度器携带的凭据如上文示例中的Authorization: Bearer scheduler-token。官方路由指南中的Protecting your agents一节有专门说明routing.md第3步在外部调度器中配置Cron表达式按你平台的 cron 语法配置定时任务注意平台差异Render 按 UTC 执行、同一任务同时最多一个实例、单次运行上限 12 小时把上一步的 URL 作为目标地址即可。各平台的调度器及其限制详见部署指南fly.mdrender.mdrailway.md调度器进阶技巧选择会话ID与等待执行结果固定ID vs 每次触发生成新ID 投递时的id决定了每次触发的语义ID 策略行为适用场景固定值如daily-summary每次触发延续同一个会话Agent 能看到历史运行需要今比昨的递进式任务每次触发不同如daily-2026-09-14每次都是全新会话上下文有界可单独检查相互独立的运行避免转录无限膨胀需要拿到运行结果用 init() 句柄dispatch(...)是发射后不管。如果调度后要拿到回复比如把摘要发到 Slack用init()句柄dispatch()返回回执read()等待最终回复。注意read()的等待本身不是持久的——进程中途崩溃运行仍会完成但await之后的代码就丢了。所以必须执行的副作用应放在 Agent 内部工具调用里而不是 read 之后。运维行为避坑清单漏触发、重叠与持久性接入外部调度器后这三个运维问题最容易被新手忽略漏触发Missed fires进程内 cron 只在服务运行时触发重启窗口内的触发会静默跳过且不会补跑。这正是推荐外部/平台调度器的原因——平台不关心你的进程状态到点必触发。重叠Overlap同一会话的输入永不并发执行后到的消息会在轮次边界排队等待因此固定 ID 的重复触发不会让 Agent双跑而每次触发用独立 ID 的运行则天然并行。持久性DurabilityNode 默认内存模式下已接收的工作只活到进程结束——请配置持久化数据库让重启后能恢复Cloudflare 上接收是持久的投递语义为至少一次at-least-once请把 Agent 的外部副作用设计成幂等的。其他两种自带Cron的接入方式 除了平台调度器还有两条同样简单的外部驱动路径进程内 cron 库Node 目标在app.ts模块作用域用 croner 等库建一个 Cron 实例回调里调用dispatch(...)调度随服务进程一起启动。可运行示例见 examples/node-schedules其 Agent 定义仅三行scheduled.ts。CI/命令行单次运行能执行命令的调度器crontab、CI 流水线可以直接用flue run驱动同一个 Agentflue run src/agents/reporter.ts \ --message Review recent activity and prepare the daily summary. \ --id daily-$(date %F)每次调用独立编译、投递一条消息并退出带日期的--id让每天拥有独立会话。总结Flue 调度器集成的核心心智模型只有一句话触发交给你的 Cron投递交给 Flue 的dispatch(...)/ HTTP 信号端点。外部调度器只需一个带认证的POST就能驱动任意 Agent再通过固定 ID 还是每次新 ID的设计选择和安全中间件就能把日常报告、数据巡检、定时清理这类周期性任务稳稳地挂到 Flue 的 Agent 生态上。相关延伸阅读调度指南全文schedules.md路由与挂载保护routing.md官方可运行示例examples/node-schedules渠道Channels用服务商 Webhook 替代 Cron 的同类信号投递模式见 channels.md【免费下载链接】flueThe sandbox agent framework.项目地址: https://gitcode.com/GitHub_Trending/flue1/flue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门