前言¶
在 DeepSeek Harness(DSH)里長期開多個工作區時,側邊欄會堆滿會話:標題往往是首條消息的前幾個字,或是隨對話漂移的自動摘要,跨項目掃一眼很難對齊「哪天、什麼類型、在幹什麼」。社區插件 dsh-session-title-stamp(維護者 xuedipiaofei)把會話標題收成可配置的 DATE | CATEGORY | NAME 模板,日期由插件按會話創建時間在本地時區計算,分類與名稱由模型提議、在本地校驗後渲染;並在 0.7.x 起提供設置頁、會話頭刷新按鈕,以及懸停時的時長 / 預估費用 / Token 統計。下面介紹它的定位、能力與安裝方式。
這是什麼¶
dsh-session-title-stamp 是 DSH 的 session title provider:通過 cordis.patch.yml 關閉內置的 session-title-llm 行,插入本包的 session-title-stamp provider,在 Host 側註冊 ctx.sessionTitle.register(),並複用 @deepseek-ai/dsh-session-title-llm 做路由、超時、取消、Token 上限與輔助請求日誌。格式渲染在依賴爲零的 lib/format.js 中完成。
默認標題形態:
DATE | CATEGORY | NAME
英文分類預設示例(categoryPreset: en):
1028 | Analysis | Short-drama platform verification
1027 | Fix | Four-device acceptance rework
1026 | Release | Ubuntu environment setup
中文爲默認分類詞表;也可自定義 categories。可選 categoryEmoji: true 得到類似 1027 | ⚡ 優化 | ... 的展示。
當前 npm 版本爲 0.7.1(MIT)。要求 DSH >=0.2.1-rc.3 <0.3.0,且會話需有可用的模型路由(標題請求默認用會話當前 provider/model,除非在配置裏指定 provider / model)。
核心功能¶
標題生成與格式¶
- 模型只返回
{"category":"...","name":"..."};provider 負責日期、模板、分類校驗與名稱清理,空段會去掉相鄰分隔符,避免出現||。 - 首次命名:provider 以
first-prompt註冊,標題服務會在合適時機命名一次。 - 手動重命名:會話頭 ↻ 按鈕、會話行
···菜單頂部的 Generate title,或命令/retitle,與自動刷新共用同一邏輯。 - 複製標題:會話
···菜單中增加 Copy title,複製完整標題字符串。 - 失敗安全:重命名失敗時 保留現有標題,不會把側邊欄清空。
回合結束後的自動刷新¶
在 turn/end 完成一輪後,插件可在冷卻與凍結約束下自動刷新標題:
- cooldown:默認
refreshMinIntervalMs爲 2 分鐘,避免首輪迴答過快觸發兩次。 - freeze:默認在用戶消息達到
refreshMaxTurns(100 條)後停止自動刷新;長會話主題通常已穩定,仍可用/retitle。 - 跳過:fork、子 agent 會話,以及用戶手動釘住的標題不會自動改。
- 將
refreshOnTurnEnd: false可回到按消息數的舊模式(retitleEvery)。
設置頁(0.7.0+)¶
路徑:Settings → Plugins → Session titles。可預覽當前模板下的標題、切換分類語言(中/英)、分類 emoji、日期格式、標題模板,以及自動刷新開關、最小間隔、消息凍結、可選的啓動回填等;保存寫入當前 profile 的插件配置,隻影響之後生成的標題,不會改寫已有標題。超時、預算、模型路由仍在 profile 配置裏。
懸停統計(0.7.0+)¶
在原生相對時間下方增加一行,例如 Duration 1h 51m · est. ≈¥4.11 · 131.7M tokens:
| 字段 | 含義 |
|---|---|
| Duration | 自 sessionStats 累計的模型與工具執行時間,非掛鐘時長 |
| est. ≈¥… | 按當前 DeepSeek CNY 價表對 tokenUsage 的粗估,非賬單 |
| tokens | 輸入、輸出、cache-read、cache-write 合計 |
數據在打開懸停卡片時向 Host 拉取;未加載過的會話不會僅爲數字而 resume。混用多模型時用最後使用的模型估算,可能與實際賬單有偏差;Host 無統計時該行省略,不影響刷新按鈕與自動標題。
與官方實驗包互斥¶
bundle 會禁用自帶的 session-title-llm 並插入本 provider。不要與 @deepseek-ai/dsh-experimental-session-titles-bundle 同時啓用:二者佔同一 provider 槽位,標題服務只接受一個 provider;若註冊競爭失敗,插件會打 warning 並保持 inactive,而不是拖垮啓動。
安裝與啓用¶
插件以當前 DSH 進程權限運行;安裝前建議瀏覽 GitHub 倉庫 源碼與 MIT 許可證。Electron Desktop 的 profile 由應用管理,應使用應用內 Plugins 頁,而不是 dsh plugin --profile desktop。
Discover 市場索引¶
在 Plugins → Discover → Index sources 增加:
https://cdn.jsdelivr.net/gh/xuedipiaofei/dsh-session-title-stamp@v0.7.1/market/index.json
從列表安裝 Session title stamp;以 profile bundle 形式出現,可在 Plugins 頁啓用或禁用。
CLI¶
從 GitHub 安裝:
dsh plugin --profile <profile> add github:xuedipiaofei/dsh-session-title-stamp
從 npm 安裝:
dsh plugin --profile <profile> add dsh-session-title-stamp
本地目錄(資料中的第三種方式,需你已有檢出路徑):
dsh plugin --profile <profile> add ./dsh-session-title-stamp
典型用法¶
- 安裝並啓用 bundle 後,新開或已有會話在首次 prompt 或回合結束策略滿足時會得到
日期 | 分類 | 名稱標題。 - 需要立刻對齊當前話題時,在會話頭點 ↻,或在
···選 Generate title,或輸入/retitle。 - 要在側邊欄分享完整標題字符串時,用 Copy title。
- 想統一英文分類或打開分類 emoji、調整自動刷新間隔時,打開 Settings → Plugins → Session titles 改配置並保存。
- 懸停會話行查看累計執行時長、預估人民幣成本與 Token 總量,無需單獨打開 dashboard。
配置項(如 categoryPreset: zh | en、categoryEmoji、refreshMinIntervalMs、refreshMaxTurns 等)以 profile 中該插件的配置爲準;圖形設置頁與 YAML 修改的是同一套字段,具體鍵名見倉庫 README。
適用場景與注意¶
適合:希望側邊欄標題可掃描、跨項目對齊「日期 + 類型 + 短名」的 DSH 用戶;需要在列表懸停處快速看會話成本與 Token 量級、又不想開額外看板時。
注意:
- 依賴會話可用的模型路由;無路由時無法完成 LLM 側的 category/name 提議。
- 與官方 experimental session titles bundle 二選一。
- 懸停費用爲價表估算,混合模型會話可能有偏差。
- 社區目錄 SkillHub 插件頁 與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方從屬關係;星標等元數據以各站點當時展示爲準(GitHub 上可見 1 star)。
結尾¶
dsh-session-title-stamp 把「會話在講什麼」寫進固定模板,把「這一會話大概花了多少」放到懸停一行;安裝命令與索引 URL 均來自項目 README。進一步細節與截斷未寫入的配置說明,見 GitHub 倉庫 與 SkillHub 目錄頁。