前言¶
DeepSeek Harness (DSH) 維護會話標題的方式是記錄僅日誌的 session/title 事件(零令牌),由 @deepseek-ai/dsh-session-title 服務提供。該服務由確定性提示詞回退或可選的 LLM 提供商寫入。
但在 0.2.0-rc.2 版本中,自動生成標題的能力存在缺陷(例如將指令本身的詞彙“會話標題”回寫爲標題),且 SessionTitleService.rename 的能力並未暴露給模型側(無工具、無 CLI 子命令、API 受限)。該插件補全了這一缺口,將現有的重命名服務作爲工具暴露給模型。
插件介紹¶
dsh-set-session-title 是一個面向模型的 set_session_title 工具。它允許智能代理重命名其自身的會話,無需人工干預。
- 作者: CancerTiN
- 類別: 模型推理
- 許可證: MIT
核心功能¶
- 重命名能力: 允許代理通過工具調用重命名當前會話。
- 寫入事件: 向日志寫入
session/title事件,標記來源爲用戶。 - 優先級覆蓋: 用戶來源的標題具有權威性,會覆蓋正在進行的自動生成,後續提示詞也不會觸發自動生成(除非顯式刷新)。
- 作用域限制: 僅限調用代理自身的會話 (
exec.agent.session),不支持跨會話重命名。 - 數據規範化: 輸入會被修剪、去除終端控制序列,並受部署配置的
maxTitleBytes限制(dsh-base默認爲 80)。若規範化後爲空則拒絕寫入。 - 零成本: 不消耗任何對話令牌,不改變消息內容。
安裝與啓用¶
使用官方插件管理器安裝。推薦使用帶版本標籤的 Git 規範,以確保可重現性。
dsh plugin --profile <name> add github:CancerTiN/dsh-set-session-title#v0.1.1
注:若不指定 #v0.1.1,將跟隨默認分支,而非鎖定發佈版本。
安裝後,插件會通過 manifest 聲明的 dsh.bundle.patch 補丁將工具註冊到配置樹中。部分構建版本可能需要重啓配置文件才能生效。
使用方法¶
調用方式¶
在對話中詢問代理,或在技能中直接調用。工具接受一個 JSON 參數:
{"title": "安裝終端插件並覈驗連通性"}
返回結果¶
{"title": "安裝終端插件並覈驗連通性", "eventSeq": 1307}
驗證標題¶
通過投影緩存或持久化日誌讀取回標題:
通過投影緩存(GUI 讀取源):
python3 -c "import json;print(json.load(open('$DSH_HOME/storages/session_projcache/sessions/$DSH_SESSION_ID.json'))['record']['rows']['title'])"
通過持久化日誌:
zstd -dc "$DSH_HOME"/sessions/*/"$DSH_SESSION_ID"/session.v4.jsonl.zstd | grep session/title | tail -1
注意事項與限制¶
- 權限限制: 僅限調用會話,無跨會話重命名功能;拒絕非代理調用者(純主機側執行會被拒絕)。
- 前置依賴: 部署必須包含
session-title服務(@deepseek-ai/dsh-session-title)。缺少該服務會導致插件加載時報錯。 - 依賴管理: 本插件故意不聲明任何依賴,以避免在 pnpm 環境下因模塊身份分裂導致其他工具調用失敗。
結語¶
該插件填補了 DSH 在會話標題修正上的空白,提供了一種零成本、零令牌消耗的方式來讓智能代理管理自身上下文。對於需要精細控制會話命名或修復自動生成錯誤的場景,這是一個必要的補充。