feat(schedule): add absolute-time reminders
This commit is contained in:
@@ -22,7 +22,7 @@ A self-referential agent that can inspect and change its in-memory Cordis plugin
|
||||
|
||||
## web-schedule
|
||||
|
||||
An opt-in Web overlay for durable, Session-local scheduled follow-ups. See the [Web Schedule example reference](web-schedule/README.md).
|
||||
An opt-in Web overlay for durable, Session-local reminders. It supports positive whole-second `after_seconds` delays and absolute `at` targets through `schedule_create`, `schedule_list`, and `schedule_delete`; active reminders persist in the original Session, resume when that Session becomes live again, and do not run while it is cold. Run `dsh web --patch examples/web-schedule/cordis.yml`; see [web-schedule/README.md](web-schedule/README.md) for absolute-time authority, delivery, and recovery boundaries.
|
||||
|
||||
## acp-agent
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
## web-schedule
|
||||
|
||||
一个可显式启用的 Web overlay,用于提供持久且仅限会话内的定时后续轮次。详见 [Web Schedule 示例参考](web-schedule/README.md)。
|
||||
用于持久、仅限 Session 内提醒的显式 Web overlay。它通过 `schedule_create`、`schedule_list` 和 `schedule_delete` 支持正整数秒的 `after_seconds` 延时与绝对 `at` 目标;活动提醒保存在原 Session 中,该 Session 再次 live 时恢复,而 cold 期间不会运行。使用 `dsh web --patch examples/web-schedule/cordis.yml` 启动;绝对时间 authority 以及交付与恢复边界详见 [web-schedule/README.md](web-schedule/README.md)。
|
||||
|
||||
## acp-agent
|
||||
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write examples/web-schedule/README.md
|
||||
README.md: 6849f1cf086074e54c16344500e98fe4a6f9c07c
|
||||
README.zh.md: 6d3597d30a992acf6e80f820fa6a09d5a995c056
|
||||
README.md: df685a5e53972eff8499f19394c0815fe434c148
|
||||
README.zh.md: 849a16a72b9527a3b2ba3cc35534a05e8c6e3d9b
|
||||
|
||||
@@ -8,10 +8,14 @@ This overlay opts one `dsh web` process into Schedule reminders without changing
|
||||
dsh web --patch examples/web-schedule/cordis.yml
|
||||
```
|
||||
|
||||
The current overlay supports one-shot reminders created with a positive whole-number `after_seconds`. The model manages them through `schedule_create`, `schedule_list`, and `schedule_delete`; every result identifies the delivery mode as `session-local`.
|
||||
The current overlay supports one-shot reminders created with a positive whole-number `after_seconds` or an absolute `at` target. The model manages them through `schedule_create`, `schedule_list`, and `schedule_delete`; every result identifies the delivery mode as `session-local`.
|
||||
|
||||
An `at` target is either a strict RFC 3339 date-time with `Z` or a numeric offset, or a local `{ date, time, time_zone? }` value. The overlay loads time-context so the model sees the current date, local time, Session zone, and request-zone relationship before calling the tool. A local value may omit `time_zone` only when the current browser zone agrees with the immutable zone captured when that Session was created.
|
||||
|
||||
The browser samples its zone for each create or prompt operation. Resuming the Session from another zone does not overwrite the original default: an omitted local zone then returns `timezone_confirmation_required`, and the model asks which zone to use before retrying explicitly. Older headerless Sessions behave the same way with an unavailable default. Daylight-saving gaps are rejected and overlaps choose the first instant; successful records keep only the resulting UTC target.
|
||||
|
||||
The original Session log owns each reminder. A live root Agent waits and retries after it becomes idle, then queues a normal follow-up turn in that conversation. Closing the process or leaving the Session cold stops its in-memory timer without deleting the record; reopening that same Session restores the wait and delivers an overdue reminder. Merely reading cold history never activates it, and a fork does not inherit its parent's reminders.
|
||||
|
||||
Create and actual delete operations acknowledge success only after Session persistence confirms their event prefix. Schedule does not provide browser, operating-system, email, SMS, or other external notification. A durable dispatch records that the follow-up was queued; it does not acknowledge model success or user receipt.
|
||||
|
||||
Absolute-time, fixed-interval, and cron rules are not accepted by this layer.
|
||||
Fixed-interval and cron rules are not accepted by this layer.
|
||||
|
||||
@@ -8,10 +8,14 @@
|
||||
dsh web --patch examples/web-schedule/cordis.yml
|
||||
```
|
||||
|
||||
当前 overlay 支持使用正整数 `after_seconds` 创建的一次性提醒。模型通过 `schedule_create`、`schedule_list` 和 `schedule_delete` 管理它们;每个结果都会把交付模式标为 `session-local`。
|
||||
当前 overlay 支持使用正整数 `after_seconds` 或绝对时间 `at` 目标创建的一次性提醒。模型通过 `schedule_create`、`schedule_list` 和 `schedule_delete` 管理它们;每个结果都会把交付模式标为 `session-local`。
|
||||
|
||||
`at` 目标可以是带 `Z` 或数值偏移量且严格符合 RFC 3339 的日期时间,也可以是本地 `{ date, time, time_zone? }` 值。此 overlay 会加载时间上下文,让模型在调用工具前看到当前日期、本地时间、Session 时区及其与请求时区的关系。只有当前浏览器时区与创建该 Session 时捕获且不可变的时区一致,本地值才可省略 `time_zone`。
|
||||
|
||||
浏览器会在每次创建或提示词操作时采样自身时区。从其他时区恢复 Session 不会覆盖原有的默认时区:此时若省略本地时区,就会返回 `timezone_confirmation_required`,模型会先询问应使用哪个时区,再显式指定该时区重试。没有标头的旧 Session 在默认时区不可用时也会采用相同行为。夏令时缺口会被拒绝,重叠时段则选择第一个时刻;成功创建的记录只保留所得的 UTC 目标。
|
||||
|
||||
每条提醒由原 Session 日志拥有。live 根 Agent 会等待并在恢复 idle 后重试,随后在该对话中排入一个普通 follow-up 轮次。关闭进程或让 Session 保持 cold 会停止内存 timer,但不会删除记录;重新打开同一个 Session 会恢复等待并交付逾期提醒。仅查看 cold 历史不会激活提醒,fork 也不会继承父 Session 的提醒。
|
||||
|
||||
创建和实际删除操作只有在 Session persistence 确认对应事件前缀后才会确认成功。Schedule 不提供浏览器、操作系统、邮件、短信或其他外部通知。持久 dispatch 会记录 follow-up 已经入队;它不确认模型成功或用户已收到提醒。
|
||||
|
||||
本层不接受绝对时间、固定间隔或 cron 规则。
|
||||
本层不接受固定间隔或 cron 规则。
|
||||
|
||||
@@ -2,5 +2,8 @@
|
||||
# only roots published after this overlay loads.
|
||||
|
||||
- insert:
|
||||
- id: time-context
|
||||
name: '@deepseek-ai/dsh-time-context'
|
||||
|
||||
- id: tool-schedule
|
||||
name: '@deepseek-ai/dsh-tool-schedule'
|
||||
|
||||
Reference in New Issue
Block a user