dsh-set-session-title:DeepSeek Harness 代理會話重命名工具

前言

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

核心功能

  1. 重命名能力: 允許代理通過工具調用重命名當前會話。
  2. 寫入事件: 向日志寫入 session/title 事件,標記來源爲用戶。
  3. 優先級覆蓋: 用戶來源的標題具有權威性,會覆蓋正在進行的自動生成,後續提示詞也不會觸發自動生成(除非顯式刷新)。
  4. 作用域限制: 僅限調用代理自身的會話 (exec.agent.session),不支持跨會話重命名。
  5. 數據規範化: 輸入會被修剪、去除終端控制序列,並受部署配置的 maxTitleBytes 限制(dsh-base 默認爲 80)。若規範化後爲空則拒絕寫入。
  6. 零成本: 不消耗任何對話令牌,不改變消息內容。

安裝與啓用

使用官方插件管理器安裝。推薦使用帶版本標籤的 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

注意事項與限制

  1. 權限限制: 僅限調用會話,無跨會話重命名功能;拒絕非代理調用者(純主機側執行會被拒絕)。
  2. 前置依賴: 部署必須包含 session-title 服務(@deepseek-ai/dsh-session-title)。缺少該服務會導致插件加載時報錯。
  3. 依賴管理: 本插件故意不聲明任何依賴,以避免在 pnpm 環境下因模塊身份分裂導致其他工具調用失敗。

結語

該插件填補了 DSH 在會話標題修正上的空白,提供了一種零成本、零令牌消耗的方式來讓智能代理管理自身上下文。對於需要精細控制會話命名或修復自動生成錯誤的場景,這是一個必要的補充。

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

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

小夜