前言¶
在 DeepSeek Harness(DSH)裏,會話列表裏的標題多半來自模型或宿主的自動生成。時間一長,列表裏會出現長短不一、語義分散的標題,很難從側邊欄一眼區分「在哪個倉庫、在做什麼、進展如何」。人工逐個改名能管住質量,但成本高,也容易和自動標題來回覆蓋。
下面介紹社區 Host 插件 dsh-session-title-convention(維護者 TangUsers,分類:客戶端)。它在不改動你手工改過的標題的前提下,監聽自動標題事件,把符合改寫條件的會話標題統一成可配置的 【階段+狀態】工作區|模塊|MMDD|簡述 形式。工作區名、模塊規則、生效目錄都來自本機配置,插件包本身不捆綁具體項目信息。
這是什麼¶
dsh-session-title-convention 是 DSH 的 Host 插件,當前版本 0.1.0(MIT 許可證,Node.js ≥ 20)。它解決的是「自動會話標題難以掃讀列表」的問題:把 fallback / provider 來源、且尚未符合約定的標題改寫成固定結構;user 來源(人工改名)永不觸碰。階段詞表爲中文(盤點 / 設計 / 實現 / 驗證 / 收口 / 歸檔),狀態爲 🟢 🟡 🔴 ✅ 🧊;工作區標籤、模塊匹配、時區與目錄範圍均可配置。
目標格式如下:
【<階段><狀態>】<工作區>|<模塊>|<創建日期 MMDD>|<問題簡述>
未配置 workspace 時,工作區名取會話 cwd 的目錄名。
目錄頁:https://www.skillhub.cn/plugins/TangUsers/dsh-session-title-convention
源碼與文檔:https://github.com/TangUsers/dsh-session-title-convention
核心功能¶
標題改寫規則¶
- 監聽
session/title事件:僅當來源爲fallback或provider,且標題不符合約定時才改寫。 fallback標題延遲 8 秒(默認fallbackDelayMs: 8000)再處理,以便等待 provider 生成更合適的標題;provider標題立即處理。- 模塊名按
moduleRules依次用正則匹配當前標題;都不命中時使用defaultModule(默認「通用」)。 - 日期取會話
header.createdAt的月日,四位數(如1103),時區由timeZone決定,默認本機時區。 - 改寫通過
sessionTitle.rename()完成,結果標記爲user來源,插件不會反覆改寫自己的輸出,也不會覆蓋人工標題。
生效範圍¶
僅處理滿足以下條件的會話:
cwd位於配置的roots之下(roots爲空表示所有工作區的會話都會改寫);- 非 subagent、非 seeded 會話。
可選 sweepOnStart:宿主啓動約 2 秒後,將最近 sweepMaxAgeMinutes 分鐘內仍爲不合規自動標題的會話一併整理(默認關閉)。
session_title 工具¶
插件向代理註冊 session_title 工具,可只改階段、狀態、模塊或簡述,不必整名重寫。階段詞表與狀態 emoji 固定;約定允許階段爲空。
示例(僅傳需要改的字段,其餘沿用當前標題):
{ "stage": "實現", "status": "🟢", "module": "會話治理", "brief": "xxx" }
安裝與啓用¶
插件以當前 DSH 進程權限運行,安裝前建議通讀源碼並確認 MIT 許可證是否滿足你的合規要求。
推薦從市場安裝(便於檢查更新):
install_bundle dsh-session-title-convention
或從 GitHub 安裝:
install_bundle github:TangUsers/dsh-session-title-convention
也可在 profile 的 package.json 中聲明依賴:
"dsh-session-title-convention": "^0.1.0"
裝完後需重啓宿主才生效:Desktop 退出重開,Web 端重啓服務(Host 插件不支持熱加載)。安裝後默認作用於所有會話;若只想在特定倉庫使用,請先配置 roots(見下文)。
典型配置¶
在 profile 的 cordis.patch.yml 中按插件 id session-title-convention 覆蓋配置(本機配置,不隨插件分發)。
限定只對某個倉庫生效:
- id: session-title-convention
config:
roots:
- /path/to/repo
完整示例:
- id: session-title-convention
config:
workspace: 某個工作區名
roots:
- /path/to/repo
defaultModule: 通用
timeZone: Asia/Shanghai
moduleRules:
- ['權限|授權|菜單', 權限治理]
- ['遷移|migration|V\\d+__', 數據庫遷移]
常用配置項(摘自官方 README):
| 鍵 | 默認 | 說明 |
|---|---|---|
workspace |
'' |
工作區名;空則取會話 cwd 目錄名 |
roots |
[] |
生效目錄;空 = 所有會話 |
defaultStage |
'' |
默認階段;約定允許省略 |
defaultStatus |
🟢 |
默認狀態 |
defaultModule |
通用 |
未命中任何規則時的模塊 |
maxBrief |
40 |
簡述最大長度 |
timeZone |
'' |
日期時區;空 = 本機 |
fallbackDelayMs |
8000 |
fallback 標題的延遲 |
sweepOnStart |
false |
啓動時整理存量會話 |
sweepMaxAgeMinutes |
1440 |
sweep 只處理該時限內的會話;0 = 不限 |
moduleRules |
[] |
[正則, 模塊] 或 {pattern, module} |
標題只會被自動改寫一次(隨後固化爲 user 來源),但一旦改寫就會在會話列表中長期可見,安裝前請確認全局 roots 是否符合預期。
適用場景與注意¶
適合誰: 長期在多個倉庫或多個模塊間切換、希望會話列表具備統一命名約定的 DSH 用戶;需要把「階段 / 狀態 / 模塊 / 日期」編碼進標題、便於檢索與掃一眼跟進進度的團隊或個人。
注意:
roots默認爲空時,每個工作區的每個會話都可能被改寫;若不希望誤傷其他目錄,務必先配roots。- 人工改名不會被插件覆蓋;與自動標題的邊界由
session/title的來源字段區分。 - 本地改插件源碼時,需用目錄絕對路徑
install_bundle /path/to/dsh-session-title-convention安裝,且改代碼後要先卸載再裝纔會加載新模塊代際,直接改文件不會熱更新。
結尾¶
dsh-session-title-convention 把 DSH 自動生成的會話標題收斂到可配置的 【stage+status】workspace|module|MMDD|brief 結構,並保留人工標題與代理側 session_title 微調能力。若你正在整理會話列表命名,可在 SkillHub 查看插件條目,或在 GitHub 閱讀完整 README 與配置說明。