dsh-session-manager:給 DSH Web UI 補上會話管理與會話設定

前言

DSH 官方側欄按工作區列出會話,但默認能力有限:沒有歸檔篩選、沒有標題搜索、沒有批量操作、沒有隻讀預覽,也沒有一個地方可以持久告訴模型「該怎麼稱呼我、我的職業是什麼、有哪些長期指令」。實際用下來,會話一多就得靠翻找,模型的行爲設定也只能靠每次在對話框裏重複。

tsechiyuan/dsh-session-manager 就是針對這兩塊缺口的插件。它由 Tsechiyuan 維護,版本 1.0.0,MIT 許可證,要求 Node.js ≥ 22.13.0、dsh web ≥ 0.2.0-rc.2。插件是單包混合結構,Host 半負責路由、存儲和系統提示注入,Client 半負責全部界面,四個功能各自有獨立開關,改開關和改設定都不需要重啓 dsh web。

下面按功能、安裝、用法的順序介紹。

這是什麼

一句話:它是一個會話管理頁面 + 會話設定系統,外加官方側欄的兩種工作區過濾。

  • 會話管理頁:左側按「全部會話 / 未分組 / 各工作區」瀏覽,右側列出該範圍的會話,提供歸檔三態篩選、標題搜索、行內重命名與歸檔、批量歸檔、全寬只讀預覽。
  • 會話設定頁:全局和工作區兩級,保存稱呼、職業、給模型的指令,Host 半在組裝系統提示時注入。
  • 側欄過濾:複用了原 dsh-workspace-focus 的思路,提供「只顯示最近使用的工作區」和「主動隱藏工作區」兩個按鈕。
  • 四個功能分別由 page、settings、sidebarRecent、sidebarHide 四個開關控制,默認全開。

安裝與啓用

插件沒有提供 dsh plugin add 形式的命令行安裝方式,安裝走插件頁。

前置條件

- 已安裝並運行 dsh web,版本 >= 0.2.0-rc.2
- Node.js >= 22.13.0
- 使用本地目錄安裝時,準備好插件的絕對路徑,例如 /path/to/dsh-session-manager

方式 A:讓 Agent 安裝(需要批准)

幫我安裝 dsh 插件 https://github.com/Tsechiyuan/dsh-session-manager

方式 B:手動安裝

  1. 打開 DSH 插件頁,點擊「增加插件」。
  2. 輸入倉庫地址 https://github.com/Tsechiyuan/dsh-session-manager;本地開發也可以填插件目錄的絕對路徑。
  3. 重啓 dsh web(首次安裝必須重啓)。
  4. 打開左側欄「會話管理」,或側欄「更多」→「會話設定」。

首次安裝後必須重啓一次;之後的加載規則見插件 README 的兼容性章節。

卸載

dsh plugin --profile web remove dsh-session-manager

執行前需要先在 profile 的 bundle 列表(dsh.profile.bundles)中移除 "dsh-session-manager",然後重啓 dsh web。存儲文件 $DSH_HOME/storages/session_manager_settings.json 不會被自動刪除,需要時手動刪除。

會話管理頁

入口是左側欄「會話管理」,是一個全寬頁面,左側是範圍列表,右側是會話列表。範圍列表包含「全部會話」「未分組」和每個工作區(帶會話數)。列表不顯示子代理會話和空白會話。

篩選與搜索只作用於當前範圍:

  • 歸檔三態:默認只看未歸檔,可切「全部」或「僅已歸檔」。
  • 搜索:按標題或會話 ID 子串過濾。
  • 「全部會話」在未搜索時按工作區分組顯示,搜索時改爲平鋪列表。

每行顯示標題、置頂 / 運行中 / 已歸檔狀態、創建時間、上次使用時間、token 用量。創建時間來自 Host 路由 GET /times,只讀查詢,不會激活會話;上次使用時間來自 sessionListMetadata.lastPromptAt,沒有則回退 updatedAt。列表顯示相對時間,懸停可看精確時間。

行尾操作:

  • 重命名:只改標題,不喚醒 Agent。
  • 歸檔 / 取消歸檔:歸檔仍在運行的會話時先確認「停止並歸檔」。
  • 打開會話:切回對話視圖;已歸檔會話需先取消歸檔。
  • 置頂:與官方工作區欄會話行的「置頂會話」共享同一份 Host 狀態,兩邊實時同步。

多選模式下可以批量歸檔、批量取消歸檔。批量歸檔會先處理能直接歸檔的會話,仍在運行的會話提示數量,確認後才處理;其餘失敗項單獨提示。

只讀詳情頁默認加載最近 30 條記錄,通過 remote.session.events 分頁拉取,打開詳情不會激活會話。工具調用摺疊成一行,thinking 不展示。

需要注意的限制:插件不支持刪除會話,DSH 目前沒有對應的 Host / Client API,用「歸檔」代替即可(可撤銷、不丟數據);只讀預覽是簡化渲染,附件只在文本末尾顯示 [n× 附件] 計數佔位。

會話設定

入口是側欄「更多」→「會話設定」。設定存兩份:全局一份,每個工作區一份。會話按它所屬的工作區解析生效值:

場景 注入內容 sources
未分組會話 / 子代理會話 只有全局設定 global 或 none
工作區設定存在且 override=false 全局在前、工作區在後疊加 global+workspace
工作區設定存在且 override=true 只注入工作區設定 workspace 或 none
工作區 override=true 且工作區總開關關閉 什麼都不注入 none
全局總開關關閉、工作區不覆蓋 只注入工作區設定 workspace

未分組會話與子代理會話只受全局設定影響,不繼承父會話。

表單字段和限制:

- enabled     布爾      總開關
- name        <= 40 字  注入爲「請稱呼我爲「…」」
- occupation  <= 60 字  8 個預設或自定義
- instructions <=1500 字 實時字數計數
- override    僅工作區  true = 只注入工作區設定;false = 與全局疊加

職業預設爲:教師、學生、工程師、產品經理、設計師、運營、研究員、自由職業,另有「自定義」。「會話稱呼」爲空且當前環境已登錄 DeepSeek 賬號時,打開表單會用登錄用戶名自動預填;只有點保存纔會寫入存儲。

保存後從匹配會話的下一輪請求開始生效,不會改寫正在生成的回覆。注入到系統提示的文本形如:

## 會話設定
以下是用戶爲本會話保存的個性化設定,請按此調整回覆:
### 全局設定
- 會話稱呼:請稱呼我爲「涼」。
- 我的職業:貝斯手。請在講解深度、術語和舉例上適配這一身份。
- 給模型的指令(請嚴格遵守):
  回答用中文;術語第一次出現時用一句話解釋。
### 工作區設定(deepseek-harness)
- 會話稱呼:請稱呼我爲「涼」。

指令的每一行會縮進兩個空格,空行保持爲空。沒有任何有效內容時,整個段落不注入。

側欄過濾

兩個按鈕都在官方側欄工作區欄的標題行,搜索按鈕右側,功能獨立。

  • 最近工作區(時鐘按鈕):只顯示最近使用的 1–10 個工作區,默認 5;當前會話所在工作區始終顯示。
  • 主動隱藏工作區(眼睛按鈕):勾選「保留」的工作區,其餘隱藏;當前會話所在工作區自動保留。未勾選任何工作區時,應用後隱藏全部工作區(當前會話所在工作區除外)。側欄使用「單列表」分組時眼睛按鈕不可用,需先切回按工作區分組。
  • 兩者同時開啓時,只顯示兩邊都保留的工作區。

功能開關

開關位置:插件頁 → dsh-session-manager 行 →「配置」。

開關 key 界面名稱 關閉後的行爲
page 會話管理頁 導航入口保留,頁面顯示「功能已關閉」;GET /times 返回 404
settings 會話設定頁 側欄菜單行保留;/settings、/settings/clear 返回 404;系統提示不再注入;兩個 Agent 工具報錯
sidebarRecent 只顯示最近的工作區 時鐘按鈕和設置項立即消失
sidebarHide 主動隱藏工作區 眼睛按鈕和設置項立即消失

開關存在 Host(GET/POST /_dsh/session-manager/features),Host 半在每次請求、每次工具調用、每次組裝系統提示時讀取,所以保存後立即生效,無需刷新頁面。關閉任何開關都不會清空已保存的設定。只有改代碼才需要重啓 dsh web。

數據與安全

設定存儲在:

$DSH_HOME/storages/session_manager_settings.json

DSH_HOME 未設置時回退 ~/.dsh。文件在第一次保存時創建,備份複製該文件即可,遷移則拷到目標機器的同一路徑。倉庫裏的 templates/session-manager-settings.template.json 是一份格式示例,手動修復時可對照;替換線上文件前先停 dsh web。

一點必須說明的:插件以當前 dsh web 進程的權限運行。安裝前應先打開源碼和許可證(MIT)確認,再決定是否放入生產環境。同時它屬於社區目錄中的第三方插件,與 DeepSeek / 幻方沒有官方從屬關係。

適用場景

適合會話數量較多、需要按工作區整理和歸檔的人,以及希望把「怎麼稱呼我、我的職業、長期指令」這類穩定設定持久化、而不是每次重寫的 Agent 使用者。只想要其中一個功能的話,可以在插件配置裏關掉其餘三個,入口保留但頁面會提示「功能已關閉」。

項目地址:https://www.skillhub.cn/plugins/Tsechiyuan/dsh-session-manager
倉庫地址:https://github.com/Tsechiyuan/dsh-session-manager

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

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

小夜