dsh-time-inject:爲 DSH 智能體注入中文時間上下文

前言

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 消耗。

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

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

小夜