
【免费下载链接】724-office7/24 Office — Self-evolving AI Agent system. 36 tools, 10,000 lines pure Python, modular architecture, MCP plugins, three-layer memory, nudge system, AI mirror, 24/7 production.项目地址https://gitcode.com/gh_mirrors/72/724-office点击查看免费下载724-office7/24 Office是一个纯 Python 编写的自进化 AI Agent 系统其中的定时任务Scheduled Tasks能力让 Agent 像真人助理一样记住时间你可以用一句自然语言创建一次性提醒或cron 周期任务任务持久化存储、重启不丢失更妙的是内置的3天不活跃守卫当用户几天不说话时Agent 会自动停止打扰等你回来时再恢复。本文带你完整看懂这套定时任务系统的设计与实战用法。一、定时任务在 724-office 中的位置整个调度能力由三个文件协同完成模块职责关键内容scheduler.py调度核心一次性任务 cron 周期任务 不活跃守卫约 650 行tools_messaging.py工具接口暴露schedule/list_schedules/remove_schedule给 LLMnudge.py行为纠正检测嘴上说设置了提醒实际没调工具的情况启动时入口 xiaowang.py 会执行scheduler.init(JOBS_FILE, llm.chat, ...)任务统一持久化到jobs.json默认位于AGENT_DATA环境变量指向的目录见 xiaowang.py后台线程每10 秒轮询一次到期任务。 对新手来说最重要的理解是定时任务不是到点发一条固定消息而是到点把任务描述交给 LLM 处理LLM 决定调用什么工具、回复什么内容。二、如何创建一次性定时提醒LLM 通过schedule工具创建任务定义见 tools_messaging.py对一次性任务推荐使用target_time参数格式为YYYY-MM-DD HH:MM本地时间。实际效果示例 「明天早上 9 点提醒我开会」→ 创建一次性任务到点触发⏱ 「20 分钟后提醒我喝水」→ 也可以用delay_seconds指定秒级延迟 创建时系统会自动校验时间格式已过去的时间会直接报[error] Target time ... has passed一个很实用的细节年份自动纠错。大模型有时会按训练数据写出过期的年份比如 2024 年scheduler.py 的add()逻辑会在检测到目标时间已过期时自动把年份修正为今年或明年并在返回消息里明确告知已自动纠正年份。这避免了提醒永远不会触发这类隐蔽 bug。创建同名任务时旧任务会被自动覆盖按name去重所以改提醒时间只需重新下发即可。三、cron 周期任务配置教程对于循环执行的任务schedule工具接收标准cron 表达式cron_expr底层依赖croniter库解析0 9 * * *—— 每天早上 9 点比如晨间日报0 */2 * * *—— 每 2 小时比如巡检once参数默认为true即 cron 任务只执行一次存为once_cron类型设为false才是真正的周期循环任务cron类型时区处理上调度器统一使用CST东八区时区解析 cron 表达式见 scheduler.py、scheduler.py从上次运行时间推算下一次触发点不会像部分实现那样默认按 UTC 解析导致差 8 小时的坑。几个值得注意的健壮性设计原子写入jobs.json先写临时文件再os.replace重命名进程崩溃也不会损坏任务清单scheduler.py过期清理已完成的一次性任务保留 24 小时后自动删除心跳日志每 30 分钟打印一次任务心跳包含每个 cron 任务的下次触发时间scheduler.py方便运维排查用list_schedules可随时查看全部未完成任务用remove_schedule按名字删除。四、3天不活跃守卫不打扰沉默的用户这是 724-office 定时任务最出彩的设计。如果给每个用户都挂着每天早 9 点发日报的任务而用户已经一周没上线了Agent 继续推送就是骚扰。守卫机制分为三步1️⃣ 记录用户活跃时间每当用户发来私聊消息xiaowang.py 就会把当前时间戳写入该用户工作区的.last_user_message标记文件。注意它不依赖会话文件 mtime——因为定时任务本身也会修改会话文件容易造成假活跃。2️⃣ 触发前检查沉默时长调度器在触发每个 cron 任务前先计算距上次用户活跃的秒数。阈值定义在 scheduler.pyINACTIVITY_THRESHOLD 3 * 86400即3 天超过 3 天且任务不是内部维护任务时直接跳过本次执行并写入.dormant_since休眠标记仅首次写入。3️⃣ 用户回归自动恢复当沉默的用户重新发消息时xiaowang.py 会删除.dormant_since标记调度守卫随之失效周期任务重新正常触发——整个休眠/唤醒周期无需人工干预。哪些任务永不停跳内部维护类任务即使用户不活跃也必须执行否则会破坏自进化闭环。scheduler.py 中定义了关键字清单archive归档、diary日记、review复盘、self_check自检、digest日报摘要、compact记忆压缩、audit审计、patrol巡检等。只要任务名或任务描述包含这些关键字就会被识别为内部任务而豁免守卫判断逻辑见 scheduler.py。 一句话总结面向用户的推送任务人走茶凉面向系统的维护任务风雨无阻。五、触发执行的兜底保障任务到点后调度器把任务描述作为一条用户消息交给 LLM 处理scheduler.py围绕可靠性做了多层兜底日期锚点注入触发消息会带上[Scheduled task triggered | Created: ... | Now: ...]防止 LLM 按创建时的旧指令行事Fallback 发送如果 LLM 只回了文本却忘了调message工具系统检测会话记录后代为把回复发给用户scheduler.py静默任务任务名/描述含silent、no_notify等关键字时跳过 fallback适合纯后台任务失败通知任务执行抛异常时调度器会再调一次 LLM要求其通过message工具把错误告知用户群聊任务独立通道带group_id的任务走独立的scheduler_group_*会话互不干扰此外nudge.py 还内置了一条行为纠正规则如果 LLM 在回复里说提醒已设好却没有真正调用schedule工具系统会注入一条提示让它立即补调工具——口头承诺不算执行。这一层保证了你在聊天里创建的定时提醒必定落盘。六、相关文件速查想了解什么去哪里看调度核心、不活跃守卫实现scheduler.pyschedule 系列工具定义tools_messaging.py活跃时间记录与休眠恢复xiaowang.pynudge 行为纠正规则nudge.py整体架构与部署说明README.md总结724-office 的定时任务系统用不到 700 行纯 Python实现了生产级的三大能力一次性提醒含年份自动纠错、cron 周期任务时区正确、持久化、原子写以及3天不活跃守卫用户沉默自动静音、回归自动恢复。配合 fallback 发送、静默关键字和 nudge 系统整个链路不依赖大模型自觉而是用结构化代码兜底——这正是该项目不靠提示词约束行为而靠结构让错误不可能发生的设计哲学。如果你想给自己的 AI Agent 加一个靠谱的定时器这套实现是非常好的参考范本。赞分享【免费下载链接】724-office7/24 Office — Self-evolving AI Agent system. 36 tools, 10,000 lines pure Python, modular architecture, MCP plugins, three-layer memory, nudge system, AI mirror, 24/7 production.项目地址https://gitcode.com/gh_mirrors/72/724-office点击查看免费下载相关推荐云原生架构实战10个Java设计模式赋能微服务弹性伸缩云原生架构实战10个Java设计模式赋能微服务弹性伸缩 在云原生环境中微服务架构需要应对高并发、分布式事务和动态扩展等挑战。Java设计模式为构建弹性微服务人工智能AI Agent多智能体Agent 编排工具调用桌面应用NanoClaw 定时任务调度实战从 ncl tasks 一次性/周期任务到 Script Gate 门控NanoClaw 定时任务调度实战从 ncl tasks 一次性/周期任务到 Script Gate 门控 NanoClaw 在容器中为每个 Agent 提供人工智能AI AgentAI 应用交互助手EmDash 插件一次性调度任务修复ISO 日期时间不再被误判为周期性 CronEmDash 插件一次性调度任务修复ISO 日期时间不再被误判为周期性 Cron 本篇技术指南聚焦 EmDash基于 Astro 的全栈 TypeScripCMS后端前端插件系统上一篇Defender Control安全解析永久禁用Defender的风险与规避策略下一篇使用Robusta Alerts UI管理Prometheus告警规则创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考