dsh-time-inject: Inject Chinese Time Context into DSH Agents

前言

DeepSeek Harness (DSH) 的宿主插件 dsh-time-inject 在每次对话回合的第一个步骤中,向模型上下文追加一条单行中文时间读数。这能让智能体始终掌握当前时间及距上一条消息的时长。这是一个非官方社区项目(与 DeepSeek 官方无关),旨在提供比官方 @deepseek-ai/dsh-time-context 更紧凑的中文时间上下文。

核心功能

该插件主要提供以下能力:

  1. 上下文注入:在每个 turn 的第一个 step(step === 1)时,向消息列表追加一条时间读数。
  2. 单行中文输出:输出格式为 [时钟] 时间 周几 · 距上条消息 时长。
  3. 时间详情:包含当前时间、星期、时区(默认为 Asia/Shanghai)以及距上条消息的时长。
  4. 智能时长显示:
    • 距离不足 1 秒显示为“刚刚”。
    • 超过 1 秒显示为“X 分 Y 秒”或“X 小时 Y 分”等。
    • 无法获取时显示“未知”。
  5. 空轮保护:当 decision.messages.length === 0 时,原样返回决策,避免浪费模型请求。

安装与启用

推荐使用 link: 方式引入,改动面最小。

  1. 链接依赖
    将本仓源码拷进 profile 的 vendor/ 目录,并在 profile 的 package.json 中添加依赖:
    // ~/.dsh/profiles/web/package.json
    "dependencies": { "dsh-time-inject": "link:vendor/dsh-time-inject-src" }
  1. 配置补丁
    在 profile 的 cordis.patch.yml 中追加配置:
    - insert:
        - id: time-inject
          name: 'dsh-time-inject'
  1. 生效
    在 profile 目录运行一次 pnpm install(link: 依赖需要它建立连接),然后重启 dsh web。

工作机制与差异

该插件挂载在 agent/pre-step 钩子上,作为 prepend: true 的 waterfall hook 运行。

  • 触发条件:仅在 step === 1 时注入,一个 turn 仅注入一次。
  • 空轮保护:如果检测到 decision.messages.length === 0,插件会原样返回决策。这是因为往空消息中塞内容会将本该结束的回合变成真实步骤,导致白烧一次模型请求。
  • 折叠状态:插件维护 sessionProjections('timeInject'),记录最近一条非插件自身的消息时间,以计算准确的时长差。

与官方 @deepseek-ai/dsh-time-context 相比,本插件做了以下调整:
* 文案:改为中文单行紧凑格式。
* 触发:移除了节流逻辑,固定在 step === 1。
* 时区:固定为 Asia/Shanghai(可配置)。
* 标识:使用 source.kind: 'time-inject',不复用官方标识。

典型用法

模型实际看到的输入示例如下:

[时钟] 2026-09-25 21:34:07 +08:00 周五 · 距上条消息 8 分 12 秒

在无上一条消息或时钟回退的情况下,可能显示为:

[时钟] 2026-09-25 21:34:07 +08:00 周五 · 距上条消息 刚刚
[时钟] 2026-09-25 21:34:07 +08:00 周五 · 距上条消息 未知

注意事项

  • 本插件为社区作品,非官方插件,与 DeepSeek 官方无关。
  • 时区固定为 Asia/Shanghai,如需修改需调整源码。
  • 插件会钳制时钟回退,确保时长不会显示为负数。
  • 安装前建议检查源码与许可证。

总结

dsh-time-inject 是一个轻量级的 DSH 插件,通过在首个步骤注入中文时间上下文,解决了智能体感知时间延迟的问题。它通过严格的空轮保护和单行格式,在保证功能的同时减少了 token 消耗。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye