前言¶
DeepSeek Harness(DSH)在 Host 側已經提供了會話重命名能力(ctx.sessionTitle 服務、session/rename Remote),但模型工具目錄裏原先沒有對應的改名工具,會話標題往往只能由人在側欄手動改。若你希望智能體在任務推進過程中主動把標題改成團隊約定的格式,並釘住以免被自動生成標題覆蓋,就需要額外補一層工具。下面介紹社區插件 dsh-session-title(維護者 ly6170),它向模型暴露 set_session_title,規則由你在 Web 設置或 profile 配置裏自行定義。
這是什麼¶
dsh-session-title 是 DeepSeek Harness 插件:給模型一個按你自己定義的規則設置會話標題的工具。命名規則不寫死在代碼裏,可在 設置 → 會話標題 中配置正則、字節上限等校驗項;校驗通過後調用宿主 rename 並釘住標題,之後該會話不再被自動標題覆蓋。插件不讀寫會話文件、不碰工作區、不做歸檔或刪除。
分類上在 SkillHub 目錄 中歸爲「模型推理」;源碼與說明見 GitHub:ly6170/dsh-session-title(當前 package 版本 0.1.0,許可證 MIT)。SkillHub 與 DeepSeek / 幻方無官方從屬關係,屬於社區插件生態。
核心功能¶
| 項 | 說明 |
|---|---|
| 工具名 | set_session_title,參數 title(完整標題字符串) |
| 生效方式 | 調用 ctx.sessionTitle.rename(agent.session, title);通過校驗即寫入並釘住 |
| 規則來源 | 設置頁或 profile config:,二者同一份配置,改完無需重啓 |
| 默認狀態 | 關閉(enabled 默認爲 false);未啓用時模型看不到該工具 |
不合規標題會以工具錯誤返回明確原因,模型可據此改寫後重試。規則變更後,工具說明會自動帶上當前生效的正則與字節上限,減少模型盲猜格式。
開箱默認正則示例爲 MMDD | 版本或 tag | 描述(對應 pattern ^(\d{4}) \| ([^\|]+) \| ([^\|]+)$),可按倉庫或團隊約定替換。
安裝與啓用¶
官方安裝命令如下(web profile):
dsh plugin --profile web add dsh-session-title
bundle 集合變化不會熱加載,裝完需重啓 dsh 進程。然後:
- 打開 Web 界面 設置 → 會話標題;
- 按需修改「標題正則」(不會寫可參考 README 中的 LLM 提示詞模板);
- 勾選「啓用」並保存。
若希望跳過第 3 步、裝上即用,可在 profile 的 cordis.patch.yml 裏預設 enabled: true(見下文配置示例)。
dsh 不在 PATH 或使用 DSH Desktop / 源碼檢出時,可手動編輯 ~/.dsh/profiles/web/package.json,在 bundles 中加入 dsh-session-title,在 dependencies 中聲明 "dsh-session-title": "^0.1.0",在 profile 目錄執行 pnpm install 或 npm install 後重啓。client 側產物 lib/client.js 已隨包提供,無需本地構建。
卸載:
dsh plugin --profile web remove dsh-session-title
或從 profile 的 dependencies 與 dsh.profile.bundles 中移除並重裝依賴;已釘住的標題不受影響。
配置規則¶
主要配置項(設置頁與 config: 一致,運行中切換 enabled 即時生效):
| 配置項 | 類型 | 默認 | 說明 |
|---|---|---|---|
enabled |
boolean | false |
啓用後模型纔可見工具 |
pattern |
string | 見 README 默認三段式 | JS 正則,不帶動界符 |
patternMode |
match / search / none |
match |
全串匹配 / 包含 / 關閉正則校驗 |
patternHint |
string | "" |
正則不匹配時給模型的提示 |
maxTitleBytes |
number | 80 |
整標題 UTF-8 字節上限(前置校驗) |
forbidTrailingPunctuation |
boolean | true |
禁止句末標點 |
forbidControlCharacters |
boolean | true |
禁止控制字符 |
normalizeSeparatorSpacing |
boolean | true |
\| 前後空白規範爲單空格 |
caseInsensitive |
boolean | false |
正則是否忽略大小寫 |
用配置文件預設示例(編輯 profile 的 cordis.patch.yml):
- insert:
- id: session-title-tool
name: dsh-session-title
config:
enabled: true
pattern: '^\[(BUG|FEAT)\] .+$'
maxTitleBytes: 60
若只保留字節與標點規則、不校驗格式:
config:
enabled: true
patternMode: none
maxTitleBytes: 120
注意 maxTitleBytes:宿主 session-title 服務有硬上限,rename() 會按該值截斷。本插件的 maxTitleBytes 是前置校驗,應小於或等於宿主配值;base 組合裏宿主默認爲 80,插件默認也爲 80。
典型用法¶
- 安裝並重啓
dsh,在 設置 → 會話標題 啓用並保存規則。 - 在對話中讓模型在合適時機調用
set_session_title,傳入完整標題,例如符合默認三段式的:0924 | v0.1.0 | 修復登錄跳轉。 - 若標題不符合規則,工具返回錯誤原因;模型調整標題後重試直至通過。
設置頁提供「示例提示詞:讓 LLM 幫你寫一條正則」摺疊塊,複製後填入你的命名需求,將 LLM 返回的一行正則(無 / 定界符、無 flags、無代碼塊)粘貼到「標題正則」即可。
適用場景與注意¶
適合:需要會話標題與 issue 編號、版本 tag、日期分段等規範對齊的團隊;希望模型在總結或里程碑節點自動改名並釘住,避免側欄手工維護。
運行與權限:插件以當前 dsh 進程權限運行,安裝前應閱讀 源碼倉庫 與 MIT 許可證,自行評估是否納入 profile。
依賴:Node.js >= 20;host 側依賴 @deepseek-ai/schemastery;Web 設置面板依賴平臺注入的 @deepseek-ai/dsh-client-ui-settings 等 client 模塊。
小結¶
dsh-session-title 補上模型側缺失的會話改名工具,規則可配置、默認關閉、啓用後即時生效。目錄頁:SkillHub — ly6170/dsh-session-title;源碼與完整說明:GitHub — ly6170/dsh-session-title。