dsh-session-smart-rename:用「分類 · 主題」給 DSH 會話智能起名

前言

在 DeepSeek Harness(DSH)裏,會話一多,側邊欄標題很容易變成籠統的「新對話」或只反映第一輪提問的半截句子。手工重命名可行,但要在長對話裏自己概括主題,又要在多會話之間保持可讀,成本偏高。

dsh-session-smart-rename 面向 Web GUI 的會話側欄:讀取當前會話內容,用該會話自身的模型路由推斷分類和短主題,寫成 分類 · 主題 形式的標題;人可以在彈框裏改,agent 也可以通過工具在對話裏直接釘住新標題。它與註冊名爲 rename_session 的 9Ashwin/dsh-session-rename 工具名不衝突,可同時安裝。

這是什麼

維護者爲 SonettoGu14,在 npm 上發佈爲 dsh-session-smart-rename(v0.2.0),屬於 DSH 客戶端側插件(dsh.bundle manifest,client.platform: web)。一句話定位:會話智能重命名——側邊欄「Smart rename / 智能重命名」與模型工具 smart_rename_session 共用同一套分析邏輯,最終都通過宿主 sessionTitle.rename 釘住標題,行爲與內置重命名一致。

核心功能

人側:側邊欄菜單

  1. 在側邊欄某條會話行打開 … 菜單,選擇 Smart rename(中文界面爲 智能重命名)。
  2. 插件讀取對話,請求會話所用模型返回嚴格 JSON:{ category, title, reason },彈框預填 分類 · 主題;上方展示當前標題與分類依據。
  3. 可點分類 chip 切換,或用 + New tag / + 新建 tag 增加自定義分類(保存在瀏覽器 localStorage)。
  4. 確認後保存,標題被釘住。

彈框內建議結果按會話緩存 5 分鐘。若模型或日誌不可用,會回退到本地關鍵詞規則,來源標記爲「本地規則」。

模型側:smart_rename_session

參數 必填 說明
title 否 要釘住的標題;省略時由插件讀對話並生成 分類 · 主題。
session_id 否 目標會話;省略表示當前已加載會話。

返回 { session_id, title, seq, source },其中 source 爲 model(模型提供了 title)或 analyzed(插件分析得出)。

典型調用:

  • smart_rename_session({}):全自動按內容命名。
  • smart_rename_session({ title: "PRD-042 推薦信導出" }):模型自定標題,插件只負責釘住,不再額外調模型。

若希望 agent 在主題切換時更新標題,可在 AGENTS.md 中寫明:當工作明顯轉到新主題、舊標題不準時,調用 smart_rename_session(不傳 title)。不滿意時仍可用側邊欄 智能重命名 覆蓋;兩條路徑寫入的標題均爲 source.kind: "user",後寫覆蓋先寫。

實現要點(便於排錯)

  • 瀏覽器端註冊 sidebar.workspaces.session.menu.item 與 shell.overlay(對話框)。
  • 宿主側共用分析器:讀會話用戶消息與助手回覆,從會話 request/header 取模型路由;POST /api/dsh-session-smart-rename/suggest 供彈框,smart_rename_session 供 agent。
  • 未加載的會話從磁盤讀 ~/.dsh/sessions/**/<id>/session.v4.jsonl.zstd(zstd -dc 解壓)。
  • 對話框走 POST /api/session/rename 與工具路徑最終都調用 sessionTitle.rename(session, title)。

安裝與啓用

插件以當前 DSH 進程權限運行;安裝前建議在 GitHub 查看源碼與 MIT 許可證。

# from npm — prebuilt, skips the build-approval step
dsh plugin --profile <your-profile> add dsh-session-smart-rename

# or straight from this repo
dsh plugin --profile <your-profile> add github:SonettoGu14/dsh-session-smart-rename

也可在 DSH 設置的插件管理中安裝。安裝後重啓一次應用(客戶端 bundle 在啓動時加載)。

依賴:支持 dsh.bundle manifest 的 DSH;帶會話側欄的 desktop/web profile。宿主側僅用 Node 內置模塊(engines.node >= 22.19.0),瀏覽器側使用 react 與 harness 提供的基礎組件,無額外 npm 依賴。

典型用法小結

手動整理側邊欄: 打開目標會話 → … → 智能重命名 → 按需改分類或主題 → 保存。

交給 agent: 主題漂移時調用 smart_rename_session({});若模型已想好完整標題,傳 title 即可免分析調用。

適用場景與注意

適合:長期多會話並行、希望側邊欄一眼能看出「在做哪類事」的 DSH Web GUI 用戶;也希望 agent 在長跑任務中自動刷新會話標題的團隊。

已知限制(來自 README):

  • session_id 指向未加載會話會報錯;當前會話始終可用。
  • 每次側邊欄點擊約一次小模型調用(約 1–3 s);smart_rename_session 不傳 title 時同理;傳 title 則不另調模型。
  • 自定義 tag 僅在瀏覽器 localStorage,工具路徑使用插件默認分類列表。
  • 子 agent 會話(origin: subagent)仍會被宿主拒絕。
  • 壓縮或無日誌的會話在分析失敗時走本地規則。

DSH 社區插件目錄託管在獨立站點,與 DeepSeek / 幻方無官方從屬關係;本文事實以倉庫 README 與 package.json 爲準。

結尾

dsh-session-smart-rename 把「讀對話 → 推斷分類與主題 → 可編輯確認 → 釘住標題」接到側欄,並把同一能力暴露給 smart_rename_session,減少手工起名和標題滯後於內容的問題。

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

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

小夜