全部建议 > 建议详情
  • 预审中
  • 2 预审不通过

【功能建议】【微信群OfficeAce】平台侧的修复需要等版本更新 预审不通过 编辑 删除

  • 智果(AgentArts)智能体平台
  • 开天aPaaS

v0.5.0试用
定时任务双重触发。(待确认问题)链接: https://pan.baidu.com/s/1k5Fj8fGQrnMsf40V99Hxjg

用户反馈定时任务「进化引擎巡检」仍然双次触发。我先查一下定时任务配置,排查原因。从定时任务列表看,进化引擎巡检只注册了一个任务(dyn-1782869666989-8ntjeo),cron表达式 0 12 * * * 没问题。让我进一步排查触发记录。现在我有完整的诊断结果了。

进化引擎巡检双次触发——根因分析

现象
触发 时间(Shanghai) 消息ID 处理结果
第1次 11:59:51.358 ...391358... 完整执行巡检(12:00-12:04)
第2次 12:00:00.015 ...400015... 发现已完成,确认状态后返回
间隔 8.7秒,两次都是 wake 事件(agent触发),不是 push 事件(结果推送)。

排查链
1. 任务配置没问题 — 只注册了一个任务 dyn-1782869666989-8ntjeo,cron 0 12 * * *,无重复注册。

2. runStats 证实未拦截 — total:6, delivered:6, skipped:0,重叠防护(SKIP_OVERLAP)一次都没生效。

3. 根因在调度器 reload() 竞态

读了 jiuwenclaw/gateway/cron/scheduler.py,调度流程是:

复制
reload() → 为每个job调度两个事件:
  wake事件 (push_dt - wake_offset_seconds)  ← 提前唤醒agent开始干活
  push事件 (push_dt)                        ← 到点推送结果
wake_offset_seconds 默认60秒(cron_json_convert.py:121),所以:

wake 事件预定在 11:59:00 触发
push 事件预定在 12:00:00 触发
竞态窗口:wake 触发后到 push 触发前,有约60秒窗口。这期间如果 cron_jobs.json 文件被修改(任何任务的增删改都会触发),_check_store_changed() 每5秒轮询一次文件 mtime,检测到变化后调用 reload():

复制
# reload() 第169行
self._events.clear()  # ← 清掉所有事件(包括还没到点的push)
# 然后重新计算下一个cron时间 → 仍然是12:00:00
# 重新调度 wake + push → 新wake时间可能已过期 → 立即触发
4. 去重守卫失效

_on_wake() 有去重守卫(第345行):

复制
if run_id in self._run_tasks and not self._run_tasks[run_id].done():
    return  # ← 同一run_id还在跑,跳过
但 send_request() 是非阻塞的——发出请求后 task 很快就完成了(agent实际处理在另一侧异步进行)。等第二次 wake 触发时,self._run_tasks[run_id].done() 已经是 True,守卫放行,导致第二次触发。

结论
层面 说明
根因 reload() 清空事件队列后重新调度,为同一cron周期生成第二个wake事件
守卫失效 去重基于 task.done(),但 send_request 非阻塞,task 瞬间完成
触发条件 wake和push之间的60秒窗口内,cron_jobs.json 被修改(任何任务变动都会触发)
影响 低——第二次触发被agent侧幂等处理(发现巡检已完成直接返回),但浪费一次API调用
之前修复 "4层防护/SKIP_OVERLAP"未覆盖此竞态——SKIP_OVERLAP统计skipped=0
建议修复方向
平台侧(根治):

_on_wake() 去重改为检查 state.status(self._runs 跨reload持久化),而非 task.done()
或 reload() 时跳过已有 self._runs 记录的 run_id,不为已在飞行中的run重新调度wake
Agent侧(兜底,我可以做):

巡检入口加幂等检查:读 daily_memory/当日.md,若已有巡检记录则直接返回,不重复执行
要我加 agent 侧的幂等兜底吗?平台侧的修复需要等版本更新。

yd_235587802 yd_235587802 发布于 2026-08-04 10:47:43 2026-08-04

24 0

0%
0人赞同
0%
0人不赞同
取消 发表

0/1000

评论成功

+ 插入图片0/4

仅支持JPG、JPEG、PNG、GIF,数量不超过4张且每张大小不超过2MB

删除建议

设置昵称

在此一键设置昵称,即可发表云声建议!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。