@deepseek-ai/dsh-client-ui-schedule

September 6, 2026 · View on GitHub

English | 中文

概述

本包在 Web 会话头部渲染当前 Session 活动 Schedule 提醒的只读目录。它读取完整的 schedule projection,不发 RPC,也不执行 mutation。浏览器派生状态、本地时间、相对时间与排序,不把这些呈现值加入持久状态。随附 Web bundle 默认禁用该插件,只有显式 Schedule overlay 才会同时启用 Host Schedule 服务与此客户端 row。

目录


使用本包

在需要显示提醒的 Web Session 启动前启用 Schedule overlay:

dsh web --patch apps/cli/config/examples/schedule/cordis.yml

随附 Web graph 已通过 disabled 的 ui-schedule row 解析 @deepseek-ai/dsh-client-ui-schedule;overlay 会把该 row 与 @deepseek-ai/dsh-schedule 一起启用。只有 Session 已成功打开且 projection 至少包含一条活动记录时,触发器才会出现。打开目录后,逾期行在前,未来行再按目标时间排序;完全并列时保留 projection 的创建顺序。

阅读和关闭目录

每一行显示可完整换行的 prompt、独立的「等待中」或「已逾期」状态、本地化的「单次」或重复间隔可整除的最大完整单位、浏览器本地目标时间,以及按浏览器时钟派生的相对时间。间隔绝不舍入,三项元数据会按行换行,不会裁剪合法的大数值。通过 portal 挂到 body 的弹层目标宽度为 336px;空间足够时与触发按钮左边缘对齐,触发器靠近视口右侧时向左避让并保留 16px 视口边距,最大宽度为视口宽度减 32px。弹层会在需要时纵向滚动,且不显示 Schedule id、原始 UTC 值、详情或操作控件。

只有原生触发按钮进入 Tab 顺序。Enter 与 Space 使用按钮的正常激活行为;焦点仍在触发器或目录内时,Escape 会关闭弹层并把焦点交还触发器;在外部按下指针也会关闭。若 live 更新移除最后一条记录,组件会关闭并卸载,但不会把焦点移到另一个会话头部动作。Session 打开失败时,即使存在暂定的缓存 projection,也会隐藏触发器。


理解实现

实现细节——点击展开

浏览器插件以顺序 10 向 conversation.session.header.actions 贡献 schedule-catalog,位于静态 Agent 与 Subagent 上下文之后、后台 Jobs 之前。它通过标准 Session hook 读取 openState,通过 useProjection('schedule') 读取完整值;弹层开合是它唯一的本地交互状态。组件把目录 portal 到 document.body,并将触发器与面板 ref 交给 useAnchoredPosition;该 hook 在测量已渲染面板后发布 fixed 坐标,使面板位于触发器下方 5px、钳制在 16px 视口边距内,并在 resize、捕获阶段 scroll 与面板 resize 时重新测量。目录 ref 也让 portal 内的指针按下继续属于既有 dismissal 边界之内。浏览器格式化使用查看方的 locale、时区与时钟,持久 Schedule 记录保持不变。

源码地图

文件职责
src/client/index.ts浏览器入口:注册 locale 并贡献 Session 头部 slot
src/client/ScheduleCatalogAction.tsx可见性、排序、格式化、弹层与键盘行为
src/client/locales.ts中英文目录文案
src/index.ts空的 Host apply,使 Loader 可以寻址该可选浏览器功能
不发布运行时不变量伴生入口;这个只读客户端目录不拥有可变的跨插件状态。

持久 Web Schedule Agent Note拥有活动 projection 与 opt-in 呈现边界;本包拥有目录的时间与无障碍行为。


进一步探索

当目录本身不够用时阅读以下页面。它们从浏览器呈现逐步进入持久 Schedule 状态与共享 projection 传输。


模型体验

无,因为本包只为人类渲染已经完成的客户端 projection,从不改变 prompt、消息、schema、流或工具结果。

KV Cache 影响

无;本包从不组装或发送 provider 请求。

已知限制与延期工作

这些限制界定当前 Schedule 目录。它们是当前包约束,不是提醒服务对比或任务积压。

  • 仅含活动记录——终结性的 delete 与 dispatch 转换会移除对应行;普通 transcript 仍是唯一的提醒交付历史。
  • 浏览器派生时间——本地时间与相对时间标签使用查看方浏览器当前的 locale、时区与时钟。它们是呈现值,不是持久 Schedule 事实。
  • 只读界面——创建与删除提醒仍由 Schedule 工具负责;目录没有 mutation、Retry、acknowledgement、Toast 或交付回执语义。
  • 要求 Session 打开成功——打开失败时,即使存在暂定缓存值也会隐藏,因为严格 Session 回放仍是权威。

开发备注

维护者的工作上下文——点击展开

无。