前言¶
在 DeepSeek Harness (DSH) 的开发与调试过程中,让大模型准确感知当前时间、计算跨轮对话的闲置时长,是提升体验的关键细节。如果仅依赖模型自行推断或进行复杂的日期运算,不仅消耗 token,还容易产生错误。
dsh-message-datetime 插件正是为了解决这一具体痛点而生。它通过在每轮对话开始时注入简短的时间戳与闲置时长信息,让模型始终知晓“现在几点”、“上一轮何时结束”以及“闲置了多久”,从而无需模型自行计算历史耗时。
插件简介¶
名称:dsh-message-datetime
维护者:john-walks-slow
类别:模型推理
许可证:MIT
这是一个轻量级插件,主要功能是在每个对话 turn 的起始阶段,向模型上下文追加一条时间通知。它覆盖了用户 turn、自动续跑 round 以及 subagent turn,且完全保护 DSH 原生的分支功能(不破坏 Web UI 中的 turn-tail 约束)。
核心功能¶
- 每轮时钟注入:在每轮对话的第一个 step(
step === 1)时,自动注入当前时间。后续的 step 不会重复注入。 - 跨轮闲置感知:在后续轮次中,自动显示上一轮的结束时间与闲置时长(如
idle for 25m)。 - 零权限与中断安全:插件不涉及外部服务、网络请求或文件系统写入。任何注入失败仅降级为 warn,绝不打断当前的 turn。
- 全场景覆盖:支持用户对话、目标自动续跑以及 subagent 调用,确保所有场景下的模型都能获得时钟信息。
安装¶
通过 DSH CLI 进行安装:
dsh plugin --profile web add dsh-message-datetime
安装后,插件会自动通过自带的 cordis.patch.yml 挂载生效。
配置与输出¶
基本配置¶
在 DSH 的配置文件中,可以指定一个可选的回退时区:
- id: message-datetime
name: dsh-message-datetime
config:
timeZone: Asia/Shanghai # 浏览器时区不可用时采用此配置
输出示例¶
插件会在每轮对话的第一个 step 后追加通知。模型看到的格式如下:
首轮(无上一轮记录):
Current time: Tue 2026-09-15 01:04:34 +08:00 (Asia/Shanghai)
后续轮次(包含上一轮结束时间):
Current time: Tue 2026-09-15 01:04:34 +08:00 (Asia/Shanghai) | Last turn ended: Tue 2026-09-15 00:39:34 +08:00 (idle for 25m)
在 Web UI 中,该通知会渲染为折叠的 context chip,点击展开可查看完整文本。
注意事项¶
- 依赖版本:插件依赖
@deepseek-ai/cordis4.0.2 和@deepseek-ai/dsh-llm0.1.2-rc.1。 - 与官方插件冲突:不建议同时启用官方的
@deepseek-ai/dsh-time-context插件,因为两者机制同源,同时启用会导致双重时间注入。 - 时区回退:时区解析优先级为:浏览器时区 → 配置的
timeZone→ 进程时区。无效值会静默回退,不影响流程。 - 安全机制:插件仅追加
user/message类型的通知,位于 step 窗口内,满足 token-meter replay 约束。
总结¶
dsh-message-datetime 是一个专注于提供时钟上下文的工具,它通过轻量级的单行注入,解决了模型在多轮对话中感知时间流逝和计算耗时的问题,非常适合需要精确时间控制的智能体场景。