前言¶
DeepSeek Harness (DSH) 的宿主插件 dsh-time-inject 在每次對話回合的第一個步驟中,向模型上下文追加一條單行中文時間讀數。這能讓智能體始終掌握當前時間及距上一條消息的時長。這是一個非官方社區項目(與 DeepSeek 官方無關),旨在提供比官方 @deepseek-ai/dsh-time-context 更緊湊的中文時間上下文。
核心功能¶
該插件主要提供以下能力:
- 上下文注入:在每個 turn 的第一個 step(
step === 1)時,向消息列表追加一條時間讀數。 - 單行中文輸出:輸出格式爲
[時鐘] 時間 周幾 · 距上條消息 時長。 - 時間詳情:包含當前時間、星期、時區(默認爲
Asia/Shanghai)以及距上條消息的時長。 - 智能時長顯示:
- 距離不足 1 秒顯示爲“剛剛”。
- 超過 1 秒顯示爲“X 分 Y 秒”或“X 小時 Y 分”等。
- 無法獲取時顯示“未知”。
- 空輪保護:當
decision.messages.length === 0時,原樣返回決策,避免浪費模型請求。
安裝與啓用¶
推薦使用 link: 方式引入,改動面最小。
- 鏈接依賴
將本倉源碼拷進 profile 的vendor/目錄,並在 profile 的package.json中添加依賴:
// ~/.dsh/profiles/web/package.json
"dependencies": { "dsh-time-inject": "link:vendor/dsh-time-inject-src" }
- 配置補丁
在 profile 的cordis.patch.yml中追加配置:
- insert:
- id: time-inject
name: 'dsh-time-inject'
- 生效
在 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 消耗。