register_callback/cancel_callback 落地:到点提醒工具 + 待定提醒渲染 #65
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/63-register-callback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #63
What
新增两个 core 原生工具
register_callback(content, fire_at)/cancel_callback(callback_id),让用户可以直接说"半小时后提醒我关火"设一个到点提醒。复用 issue #52/#53-#56 已建好的 Callback 通用送回抽象,新增第二个触发源trigger_source="user_reminder",验证这条管线确实不需要为新生产者改动既有代码。实现要点
register_callback.py(新):parse_fire_at纯函数解析/校验fire_at(ISO8601、不带时区、必须晚于当前时间,均 fail-closed 拒绝);render_pending_reminders纯函数把待定提醒渲染成声明性文本。register_callback/cancel_callback恒可见(不受渐进解锁门控),加入RUN_LIMIT_EXEMPT_TOOL_NAMES。arise_max_pending_user_reminders(默认 10)限制单 chat 同时存在的user_reminder待定记录数,超限拒绝而不静默丢弃/覆盖最旧的一条。_full_frozen_snapshot),供模型跨轮次引用callback_id取消;task_completion来源不参与这段渲染。CallbackRecord/CallbackStoragePort/is_due/render_callback_directive/_callback_scan/_deliver_callback/RuntimeLoop.run_callback()零改动——callback.py完全不在本次 diff 里,e2e 测试直接验证这些既有模块无改动即可正确送回user_reminder记录。cancel_callback按 id 和来源双重匹配,fail-closed 无操作,不会误伤task_completion来源正在待送回的记录。Review
/code-review两轴(Standards + Spec)已跑:list_callbacks+ 按trigger_source过滤的形状在四处重复,已收敛进_list_callbacks_by_source私有辅助;_full_frozen_snapshot文档字符串补上新增的第七段。cancel_callback跨 chat 隔离的直接测试(此前只被限额测试间接覆盖)。Tests
29 个新测试(10 纯函数 + 14 RuntimeLoop 分发 + 5 e2e),全仓库 923 个测试全绿。