dsh-session-title-convention:把 DSH 自動會話標題整理成可配置的【階段+狀態】約定格式

前言

在 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

核心功能

標題改寫規則

  1. 監聽 session/title 事件:僅當來源爲 fallback 或 provider,且標題不符合約定時才改寫。
  2. fallback 標題延遲 8 秒(默認 fallbackDelayMs: 8000)再處理,以便等待 provider 生成更合適的標題;provider 標題立即處理。
  3. 模塊名按 moduleRules 依次用正則匹配當前標題;都不命中時使用 defaultModule(默認「通用」)。
  4. 日期取會話 header.createdAt 的月日,四位數(如 1103),時區由 timeZone 決定,默認本機時區。
  5. 改寫通過 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 用戶;需要把「階段 / 狀態 / 模塊 / 日期」編碼進標題、便於檢索與掃一眼跟進進度的團隊或個人。

注意:

  1. roots 默認爲空時,每個工作區的每個會話都可能被改寫;若不希望誤傷其他目錄,務必先配 roots。
  2. 人工改名不會被插件覆蓋;與自動標題的邊界由 session/title 的來源字段區分。
  3. 本地改插件源碼時,需用目錄絕對路徑 install_bundle /path/to/dsh-session-title-convention 安裝,且改代碼後要先卸載再裝纔會加載新模塊代際,直接改文件不會熱更新。

結尾

dsh-session-title-convention 把 DSH 自動生成的會話標題收斂到可配置的 【stage+status】workspace|module|MMDD|brief 結構,並保留人工標題與代理側 session_title 微調能力。若你正在整理會話列表命名,可在 SkillHub 查看插件條目,或在 GitHub 閱讀完整 README 與配置說明。

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

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

小夜