AI Agent 实战:Cron 调度 + 多 Agent 协作,从失败到稳定运行的工程化之路

1 阅读1分钟

AI Agent 实战:Cron 调度 + 多 Agent 协作,从失败到稳定运行的工程化之路

📖 本文首发于微信公众号「Wesley AI 日记」,更多 AI Agent 实战系列请微信搜索关注。


每天 6 个 AI Agent 定时产出内容,发到 6 个平台——这套系统跑了 20 多天,从第一天几乎全崩到现在稳定运行 90% 以上,踩了无数坑。今天把核心架构和踩坑经验完整分享。

一、系统架构全景图

我们的多 Agent 内容运营系统由 3 层组成:

1. 调度层(Cron)

  • 6 个独立定时任务,每个平台一个 Agent
  • 任务间解耦:一个平台挂了不影响其他平台
  • 失败自动重试 + 告警

2. Agent 层

  • 每个 Agent 有独立 workspace 和记忆系统
  • 读取公众号已发布文章作为素材
  • 按平台调性改写内容(知乎深、微博短、V2EX极客、掘金技术)

3. 发布层

  • 各平台 API 或浏览器自动化
  • 发布后自动记录日志
  • 每晚自动复盘统计

二、第一个坑:「说完成了」不等于「真完成了」

最早期的架构有一个致命假设:Agent 执行完任务 = 任务成功。

现实是:

  • Agent 调 API 返回 200 不等于内容已发布(可能进审核)
  • Agent 说「写入文件成功」不等于文件格式正确
  • Agent 说「发布完成」不等于读者可见

解决方案:主动回调机制

我们引入了强制回调协议——子 Agent 完成任务后必须通过 sessions_send 主动向调度方报告结果,包括:

  • 任务状态(done/fail/partial)
  • 核心产出摘要(300字以内)
  • 风险/后续说明

没有回调 = 任务未完成 = 需要人工介入。

这就像打工人的日报:你说你做了,得拿出成果来。

三、第二个坑:单点故障导致连锁崩溃

早期把所有任务放在一个 cron job 里,结果:

  • 知乎 API 超时 阻塞后续任务 微博也没发 掘金也没发
  • 一个平台的 Cookie 过期 整个 cron 任务报错退出

解决方案:任务解耦 + 独立重试

拆成 6 个独立 cron job,每个 job:

  • 有自己的超时时间
  • 有自己的错误处理
  • 失败不影响其他 job

四、第三个坑:记忆丢失导致内容重复

Agent 不记得昨天发了什么 今天又发同样的话题 平台判重复/读者审美疲劳。

解决方案:共享持久记忆

  • 所有发布记录写入统一的 daily-traffic-log.md
  • 每次发布前读取日志检查重复
  • 跨 Agent 共享已发话题列表

效果:20 天内无重复选题,6 个平台的内容各有侧重。

五、第四个坑:错误静默吞没

Agent 遇到异常 吃掉异常 继续往下走 最后说「全部完成」 实际上 3 个平台都没发。

解决方案:错误必须冒泡

  • 任何 API 调用失败必须记录到日志
  • 连续失败 3 次 停止重试 通知管理员
  • 每日复盘自动统计各平台成功率

六、核心经验总结

  1. 任务完成不可信 强制回调协议 0 漏报
  2. 单点故障 任务解耦 一个挂了不影响其他
  3. 内容重复 共享发布日志 20天无重复
  4. 错误被吞 错误冒泡加告警 异常 100% 可见
  5. Cookie 过期 自动检测加告警 不再静默失败

七、给想搭建类似系统的人 3 条建议

  1. 先跑通一个平台再扩展:不要一上来就做 6 个平台,先把一个平台的完整链路跑通
  2. 把「任务完成」的定义写死:不要相信 Agent 的自我判断,用可验证的标准
  3. 日志大于一切:每一个动作都记录,发布成功要记,失败更要记。复盘全靠日志。

📖 本文首发于微信公众号「Wesley AI 日记」

📚 AI Agent 实战系列(微信搜索「Wesley AI 日记」关注)

微信搜索「Wesley AI 日记」关注,不错过每一篇更新。