前言¶
DSH(DeepSeek Harness)的官方 session-title-first-prompt-llm 僅在會話的第一條消息時自動命名一次。如果後續對話偏離了初始主題,官方邏輯不會更新標題。dsh-session-retitle 插件填補了這個空檔:它在會話頭部添加了一個「重命名」按鈕,允許你手動觸發,讀取當前會話內容,利用模型生成中文短標題並寫回。
核心功能¶
- 會話頭部重命名按鈕:在會話頭部右側添加操作入口。
- 自動生成標題:讀取會話內容,用當前模型生成中文短標題。
- 零運行時依賴:不 import 任何
@deepseek-ai/*包,僅發兩條 HTTP 路由。 - 官方服務集成:改名走官方
session-title服務,包含併發保護與來源釘住。 - 靈活的輸入方式:留空輸入框按內容自動起名;填寫名字直接使用(不消耗模型調用)。
- 主題跟隨:界面顏色使用 DSH 的
--dsw-alias-*CSS 變量,明暗主題自動生效。 - 路由回退與容錯:支持候選路由回退與同會話併發保護。
安裝與啓用¶
- 確保
pnpm已安裝在 PATH 上。 - 執行安裝命令:
dsh plugin --profile web add github:BPTumbleweed/dsh-session-retitle
- 重啓 DSH 服務。重啓後,界面會有 35–45 秒的中斷,請耐心等待。加載完成後,請在瀏覽器中執行 Ctrl+Shift+R 硬刷新,以加載新的客戶端按鈕。
典型用法¶
- 打開任意一個 DSH 會話。
- 在會話頭部右側找到「重命名」按鈕並點擊。
- 在彈出的輸入框中:
- 留空:點擊「自動起名」,插件會讀取會話內容調用模型生成標題。
- 填寫內容:直接使用你輸入的名字,不消耗模型調用。 - 幾秒後,會話名會更新爲新的標題,側邊欄列表同步更新。
配置項¶
插件通過 profile 的 cordis.patch.yml 覆蓋進行配置:
| 鍵 | 默認 | 說明 |
|---|---|---|
routePrefix |
/dsh-session-retitle |
路由前綴 |
maxTitleBytes |
80 |
標題字節預算 |
maxDigestBytes |
8000 |
送給模型的會話素材上限 |
maxDigestItems |
16 |
最多取多少條消息(人類消息 + 助手回覆) |
timeoutMs |
45000 |
標題模型調用超時 |
maxOutputTokens |
512 |
標題模型的最大輸出 token |
provider / model |
deepseek-official / deepseek-flash |
兜底路由配置 |
注意事項¶
- 會話狀態限制:只有當前在內存裏活着(未歸檔)的會話能改名,歷史歸檔會話無法操作。
- 無數據殘留:插件不改文件、不寫數據目錄,移除後不會留下垃圾。
- 手動覆蓋保護:一旦手動改過名字,官方的自動命名不會再覆蓋(
source.kind = user會被釘住)。 - 驗證接口:可以通過以下命令驗證插件狀態(需替換
<端口>):
curl -s http://127.0.0.1:<端口>/dsh-session-retitle/status | head -40
結語¶
該插件通過極簡的交互(一個按鈕)解決了 DSH 會話命名滯後的問題,同時保持了與官方服務的兼容性。所有素材僅取人類消息與助手回覆,工具結果被過濾,確保標題生成的準確性。
- 倉庫:https://github.com/BPTumbleweed/dsh-session-retitle
- 維護者:BPTumbleweed
- 許可證:MIT