在 DeepSeek Harness (DSH) 中,新會話默認使用時間戳編號,導致長時間運行的會話列表難以快速瀏覽。現有的方案要麼只等待空閒再生成(用戶等待時無標題),要麼每次輪次都調用模型(成本高昂)。該插件將這兩個概念拆分爲互補的階段:即時關鍵詞標題和空閒預算模型優化。
核心功能¶
- 兩階段管道:用戶消息到達時立即生成關鍵詞標題(零成本,毫秒級);會話進入空閒狀態後,調用預算模型進行優化,標題隨會話演變。
- 成本控制:預算路由自動從註冊模型目錄中按名稱模式篩選最便宜的模型,並在模型拓撲結構變化時自動失效緩存。
- 原始關鍵詞算法:包含去噪(代碼塊/URL/Markdown)、腳本檢測(拉丁/中日韓)、停用詞和功能詞過濾,以及保持順序的字符預算截斷,支持中文、英文、日文和韓文。
- 標題去重:相同標題不會重複寫入;跨會話重複的標題會自動添加數字後綴(如
Fix Login Bug (2))。 - 摘要集成:優化階段同時生成一行會話摘要,通過
session/caption-note事件寫入會話日誌,供列表 UI 和導出工具使用。 - 尊重手動標題:手動重命名後自動生成完全停止,絕不覆蓋(即使重命名正在進行中的優化調用,也不會寫回)。
- 零配置啓動:默認配置即可工作,所有行爲均可調整。
安裝與啓用¶
通過命令行安裝最新版本到指定 profile:
dsh plugin --profile demo add github:JohnXu22786/session-titler
移除插件:
dsh plugin --profile demo remove dsh-session-caption
也可以從本地目錄或 tarball 安裝:
# 從本地目錄
dsh plugin --profile demo add /path/to/dsh-session-caption
# 從本地 tarball (需先 npm pack)
dsh plugin --profile demo add ./dsh-session-caption-0.1.0.tgz
安裝後需重啓 DSH 進程才能生效。安裝成功後,dsh --profile demo --dump-config 輸出中應包含 session-caption 配置行。
配置說明¶
插件支持零配置啓動,所有行爲可調。配置文件位於 $DSH_HOME/cordis.patch.yml。以下是關鍵配置項:
- id: session-caption
config:
instant:
enabled: true # 開啓 Phase 1 關鍵詞提取
maxCjkChars: 14 # 中日韓標題最大字符數
maxWords: 6 # 拉丁語標題最大單詞數
refine:
enabled: true # 開啓 Phase 2 優化
timeoutMs: 60000 # 單次調用超時時間
model:
provider: '' # 顯式指定 Phase 2 使用的模型提供商
model: '' # 顯式指定 Phase 2 使用的模型名稱
dedup:
enabled: true # 開啓標題去重
suffix: '({n})' # 重複後綴模板
技術實現¶
該插件是一個標準的 DSH Bundle(配置層 + 插件代碼),通過 package.json 中的 dsh.bundle 字段指向 cordis.patch.yml。啓動時,它會禁用內置的 session-title-llm(因爲 session-title 服務設計爲單提供者),並註冊自身的 session-caption 提供者。
- Phase 1:直接對用戶消息進行關鍵詞提取,不調用大模型。
- Phase 2:僅在會話空閒窗口觸發。模型選擇優先級爲:顯式配置 > 預算模式(篩選便宜模型)> 會話自身路由。
注意事項¶
- 重啓生效:安裝後必須重啓 DSH 進程,配置纔會加載。
- 單提供者衝突:
session-title服務設計爲單提供者。如果另一個插件也註冊了標題提供者,兩者會互相替換。該插件的 bundle 層默認會禁用內置的session-title-llm。 - 空閒窗口:若關閉
instant.enabled,Phase 1 不再生成標題,但 Phase 2 仍僅在空閒窗口運行,不會在繁忙時段生成。
參考¶
- GitHub: https://github.com/JohnXu22786/session-titler
- 目錄頁: https://www.skillhub.cn/plugins/JohnXu22786/session-titler