前言¶
在 DSH 的 Web 客戶端裏,一條長會話往往由多段模型輸出和用戶消息交錯組成。想回看「我當時問了什麼」,只能一路向上滾動,消息越多這件事越費時。Codex 的會話界面在左側提供了一條目錄導航,點一下就能跳到對應消息,這個做法可以借鑑。
dsh-user-message-jump 把類似的能力帶進 DSH Web 客戶端:在會話區左緣顯示一條豎帶,每條短橫線代表一條用戶消息,懸停可預覽,點擊即跳轉。下面介紹它的功能、安裝方式和注意事項。
這是什麼¶
dsh-user-message-jump 是一個 DSH Web 客戶端插件,由 jiangnan-awa 維護,當前版本 0.1.0,許可證爲 MIT(README 與 package.json 均有聲明)。
它解決的是一個具體問題:長會話中快速定位用戶消息。插件不改動會話內容,只在客戶端界面上加一條導航豎帶。
核心功能¶
按 README 描述,插件行爲如下:
- 豎帶與橫線:會話區左緣出現約 14px 寬的豎帶,每條短橫線代表一條用戶消息,既包括普通
user消息,也包括運行中插入的steering消息,從上到下按時間排列。 - 懸停預覽:橫線平滑變長(12px → 36px)並變爲品牌色,右側彈出氣泡,顯示消息文本預覽(最多 3 行)與發送時間。
- 點擊跳轉:會話滾動到對應消息,頂部留 12px 空隙;該消息行以品牌色描邊高亮約 1.2 秒,對應橫線保持高亮標記。
- 命中區與穿透:橫線之間爲無縫命中區(每個命中區 8px 高),鼠標在相鄰橫線間移動不會「選空」;豎帶空白處點擊穿透,不遮擋會話內容。
- 自動隱藏:沒有用戶消息時豎帶自動隱藏。
- 鍵盤操作:Tab 聚焦後按 Enter 或 Space 跳轉。
- 主題跟隨:樣式僅使用 DSH 主題 token(如
--dsw-alias-bg-overlay、--dsw-alias-brand-primary),跟隨亮/暗主題。
安裝與啓用¶
先構建。倉庫已提交 lib/client.js,可直接使用;如需修改源碼,改完後再構建一次:
npm run build
再通過 DSH 官方安裝命令把插件裝進 profile 的 bundle 棧。本包聲明瞭 dsh.bundle(即 cordis.patch.yml 包級補丁層),所以可以直接裝:
dsh plugin --profile <name> add dsh-user-message-jump
這條命令等價於在 profile 的 cordis.patch.yml 中手工掛載:
- insert:
- id: user-message-jump
name: dsh-user-message-jump
注意:如果 profile 裏已經有上面這段手工掛載行,改用 bundle 通道前要先刪掉它,避免雙掛載。
經過上面的步驟,重啓 DSH。Web 端會通過 dsh.client 掃描把本包編入啓動圖(路徑形如 /plugins/<name>/client.js?rev=<hash>),刷新頁面後生效。
環境要求¶
- DSH 版本需支持 web 客戶端模塊系統(
dsh.client/window.__ModuleLoader__); - 運行環境需包含
react(seed 模塊,peerDependencies 爲^18.2.0)與聲明瞭conversation.session.header.actions槽位的會話 UI 包(DSH 自帶); - Node >= 18。
源碼與二次開發¶
倉庫結構如下:
├── package.json # dsh.bundle 聲明 + dsh.client 聲明 + exports["./client"]
├── cordis.patch.yml # dsh.bundle.patch 包級補丁層(一行 insert)
├── src/
│ ├── client.js # 插件源碼(純 JS,createPlugin(React) 工廠)
│ └── style.css # 豎帶樣式(僅使用 DSH 主題 token)
├── scripts/
│ └── build.mjs # 打包爲 window.__ModuleLoader__.load 格式
├── lib/
│ └── client.js # 構建產物(已提交,掃描時需要存在)
└── README.md
修改源碼後執行 npm run build,會重新生成 lib/client.js,產物帶內容哈希 rev,頁面會自動取新包。
另外,同一功能也可以作爲動態 Cordis 插件免安裝臨時加載。代碼形態略有差異:CSS 用 styles.insert,定時器走 ctx.timer(inject: ['timer']),無需 __ModuleLoader__ 包裝,具體見 DSH 的 cordis 插件開發文檔。
適用場景與注意事項¶
適合兩類人:經常在 DSH Web 客戶端跑長會話、需要回溯自己消息的使用者;想在 DSH 客戶端上做類似導航能力的開發者,可以把它當作一個可參考的完整樣例——從 dsh.bundle 聲明到客戶端模塊打包、再到主題 token 的使用,倉庫裏都有對應文件。
安裝前請注意:插件以當前 dsh 進程的權限運行,裝進 profile 前應先檢查源碼與許可證。本插件的許可證爲 MIT,源碼在 GitHub 上可查。此外確認 profile 裏沒有重複的手工掛載行,運行環境滿足上文列出的版本要求。
小結¶
dsh-user-message-jump 做的事情小而具體:把用戶消息變成一條可點擊的目錄豎帶,省掉長會話裏來回滾動的時間。它的打包與掛載方式也符合 DSH「一切皆插件」的思路,想寫自己的客戶端插件,可以直接參考這個倉庫。
- 插件目錄頁(社區維護的獨立目錄,與 DeepSeek / 幻方無官方從屬關係):https://www.skillhub.cn/plugins/jiangnan-awa/dsh-user-message-jump
- GitHub 倉庫:https://github.com/jiangnan-awa/dsh-user-message-jump