前言¶
在 DSH 裏開了很多會話之後,側邊欄往往只剩下一串按首句截斷的裸標題。關掉標籤頁再回來,很難一眼區分「這次是在查代碼」還是「這次在修報錯」。有人靠手動改名,有人在筆記裏記 session id,都是額外負擔。
dsh-session-namer 是社區維護的 DSH 插件:在會話收到第一條用戶消息時,根據內容判斷任務類型,把標題改寫成固定格式 {emoji}{分類} | {標題}。分類和 emoji 一一對應,前綴長度與分隔符固定,便於在列表裏掃視歸類。
這是什麼¶
插件讀取首條用戶消息,在九類任務(探索、研究、修復、研發等)中選一類,生成帶 emoji 前綴的會話標題;無該插件時,標題通常只是首句摘要,沒有統一分類語義。
標題格式與分類表¶
生成格式爲:
{emoji}{分類} | {標題}
README 給出的對應關係如下(emoji 爲單碼點,前綴固定 13 字節,分隔符固定爲 |):
| emoji | 分類 | id | 判定信號(摘要) |
|---|---|---|---|
| 🔍 | 探索 | explore |
查看代碼/結構/位置,瞭解現狀,不改代碼 |
| 🔬 | 研究 | research |
選型、對比、調研、評估可行性 |
| 🔧 | 修復 | fix |
報錯、異常、測試失敗、崩潰、性能迴歸 |
| 🚧 | 研發 | build |
新功能、實現、重構、加接口 |
| 🎨 | 設計 | design |
界面、佈局、配色、交互 |
| 📝 | 文檔 | docs |
README、註釋、說明、文章 |
| 🧰 | 配置 | config |
依賴、環境變量、部署、CI、權限 |
| 💬 | 問答 | qa |
概念解釋、原理,無執行意圖 |
| 📦 | 整理 | tidy |
批量改名、歸檔、清理、遷移 |
示例(來自倉庫 README):
| 首條消息 | 生成的標題 |
|---|---|
| 幫我修一下登錄接口報 500 | 🔧修復 \| 修登錄接口報500 |
| 對比一下 pgvector 和 qdrant | 🔬研究 \| pgvector與qdrant對比 |
| 這個倉庫的鑑權在哪實現的 | 🔍探索 \| 倉庫鑑權實現位置 |
| 給設置頁加個深色模式開關 | 🚧研發 \| 設置頁深色模式開關 |
核心功能與工作方式¶
下面行爲均以倉庫 README 爲準。
- 接管內置命名:
sessionTitle服務只接受一個 provider;插件通過 bundle patch 禁用內置的session-title-llm,自行完成命名。 - 觸發時機:
first-prompt——僅主會話的第一條用戶消息會觸發;帶parentSession的 fork 與子代理會話不觸發,避免污染子代理日誌。 - 混合分類:
generate()先用本地關鍵詞規則打分,再調用會話當前模型,要求返回{"category":"<id>","title":"<標題>"}。 - 降級策略:模型失敗、超時、無路由、輸出不可解析或分類非法時,退回「規則分類 + 首句截斷」;除 abort 外不拋錯,標題始終有值。
- 長度預算:標題總長 256 字節(含 13 字節前綴),超長按 UTF-8 碼點截斷,不加省略號。
安裝與啓用¶
通過 DSH 插件管理器從 GitHub 安裝:
dsh plugin add github:CresBigB/dsh-session-namer
或在 DSH 內將本地克隆目錄作爲 bundle 安裝:
plugin_manager: { action: "install_bundle", target: "<本倉庫路徑>" }
安裝後需要新建會話纔會看到效果:標題只在首條消息時生成一次,已有會話不會被追溯改名。
配置項¶
可在插件配置中調整下列鍵(默認值見 README):
| 鍵 | 默認 | 說明 |
|---|---|---|
mode |
hybrid |
hybrid:規則 + 模型;rules:僅本地規則,不消耗 token |
targetCjkCharacters |
14 |
標題中文目標字數 |
maxTitleBytes |
256 |
標題總字節預算(含前綴) |
maxInputBytes |
8192 |
送給模型的輸入上限;首條消息會先裁到約 6000 字節 |
maxOutputTokens |
512 |
模型輸出上限 |
timeoutMs |
5000 |
單次命名超時(毫秒) |
provider / model |
未配置 | 留空則跟隨會話當前模型;兩者須同時配置 |
純規則模式 mode: rules 下不產生模型調用;沒有路由信息(例如尚未選擇模型)時也不會調用模型,直接使用規則標題。
典型用法¶
- 安裝插件(見上文命令)。
- 在 DSH 中新建一個會話。
- 發送第一條用戶消息,例如「幫我看一下這個服務的健康檢查實現在哪」。
- 觀察側邊欄標題是否變爲
🔍探索 | …這類格式。
若希望完全離線、零 token,可將 mode 設爲 rules,僅依賴本地關鍵詞分類與截斷標題。
適用場景與注意¶
適合:長期在 DSH 裏並行多個任務、希望用統一前綴區分探索/修復/研發等類型的開發者。
依賴:@deepseek-ai/dsh-session-title 與 @deepseek-ai/dsh-session-title-llm 由 DSH 本體提供(peerDependencies);另依賴 @deepseek-ai/cordis、@deepseek-ai/schemastery、@deepseek-ai/dsh-session 等生態包。
安全與權限:插件隨當前 DSH 進程加載,安裝前建議閱讀 倉庫源碼 與 MIT 許可證;不宜在未審閱的情況下在生產敏感環境盲目安裝第三方 bundle。
DSH 生態主張「一切皆插件」;SkillHub 等社區目錄獨立於 DeepSeek / 幻方,並非官方應用商店。
結尾¶
dsh-session-namer 在首條消息處一次性改寫會話標題,用固定 emoji 與九類中文標籤標註任務性質,並在模型不可用時回退到規則命名。若你受困於側邊欄「全是第一句摘要」、難以復盤會話意圖,可以按官方命令安裝後開新會話試用。