前言¶
DeepSeek Harness (DSH) 的调度功能通常仅限于当前对话会话。当会话关闭后,提醒会一直挂起,直到有人重新打开该会话。这导致无法在特定时间点唤醒长流程任务,也无法在非活跃状态下触发自动化检查。
dsh-clock 插件填补了这一空白。它提供日历和时钟功能,允许在选定瞬间唤醒指定的对话。无论该对话当前是否处于关闭状态,系统都会注入准确的系统时间和时间漂移,并在消息中明确标注唤醒是否迟到。
功能概览¶
- 唤醒对话:通过关键词在指定时间唤醒对话,即使对话处于关闭状态。
- 时间与漂移注入:在唤醒消息中包含计划时间、实际时间、时间漂移和迟到警告。
- Agent 工具与技能:提供
clock工具供 Agent 调用(set, now, list, cancel),并内置clock技能以辅助对话。 - 多层级定时:结合进程内定时器、Windows 任务计划程序镜像以及主机启动时的追赶重放,确保定时准确。
- 日历面板:提供可视化的日历和时钟面板,支持直接在日历上创建提醒。
- 分支处理:支持对话分支,在创建分支时提示复制警报以防止遗漏。
- 漂移容忍度:对于 60 秒以内的迟到,仍标记为“准时”。
安装与启用¶
在插件目录下执行以下命令完成安装与构建:
npm install
npm run build
dsh plugin --profile web add link:<this-directory>
或者直接通过 Git URL 安装:
dsh plugin --profile web add <git-url>
安装完成后,重启 DeepSeek Harness Web 服务,侧边栏底部的“日历”按钮将出现,点击即可打开插件面板。
使用方式¶
通过 Agent 工具¶
Agent 可以直接调用 clock 工具来管理提醒。支持的参数包括:
- 设置延迟提醒:在当前时间后 N 秒唤醒。
- 设置精确时间提醒:在特定时间点(UTC 或指定时区)唤醒。
- 查询与取消:查询当前时间、列出待办提醒或取消特定提醒。
示例:
// 设置延迟提醒
{
"action": "set",
"afterSeconds": 2700,
"keyword": "check the build",
"note": "the release job should be done by now"
}
// 设置精确时间提醒(指定时区)
{
"action": "set",
"at": "2026-09-11T09:30:00+08:00",
"keyword": "standup",
"sessionId": "session-...",
"timeZone": "Asia/Shanghai"
}
// 查询当前时间
{ "action": "now" }
// 列出待办
{ "action": "list" }
// 取消提醒
{ "action": "cancel", "id": "a-..." }
通过日历面板¶
- 在侧边栏点击“日历”按钮打开面板。
- 点击具体日期,在日历视图上输入时间、关键词,并选择目标对话。
- 点击按钮确认创建。
- 面板会自动区分“待处理”和“已触发”的提醒,支持编辑(仅限待处理)、立即触发、取消或删除操作。
技术实现细节¶
该插件采用三层定时机制来保证唤醒的可靠性:
- 进程内定时器:处理常规情况,维护最早待处理提醒。
- Windows 任务计划程序:处理机器睡眠或主机挂起的情况,支持
StartWhenAvailable和wakeComputer(需配置)。 - 追赶重放:当主机未运行时,在启动时自动检查并补发所有遗漏的唤醒消息。
所有触发均采用 Claim-then-Delivery(声明后交付)模式,避免重复发送。系统会保留已触发的提醒 7 天,以便追溯。
注意事项¶
- 运行依赖:唤醒功能需要 DeepSeek Harness 主机进程正在运行,这不是推送通知,无法在主机关闭时通过外部方式触达。
- 一次性提醒:目前仅支持一次性提醒,暂不支持循环任务。
- 任务名称冲突:Windows 任务计划程序中存在一个名为
dsh-clock-wake的共享任务,同一台机器上的多个 Host 实例会共用该任务名称。 - 面板主题:日历面板为浮动层,不支持通过 Shell 插槽进行主题化配置。
总结¶
dsh-clock 通过注入时间信息和漂移计算,解决了 DeepSeek Harness 在会话外无法可靠定时唤醒的问题。结合 Agent 工具与日历面板,它能够帮助开发者在长流程任务中实现精准的定时介入。