前言¶
DeepSeek Harness(dsh)的 Web 界面默認跑在本機,會話列表在側欄裏。打開某一個對話之後,瀏覽器地址欄通常還是根路徑。刷新頁面、再開一個標籤,或把當前地址發給同事,對方並不能直接落到同一條會話上,只能自己再點一遍側欄。
社區插件 dsh-session-deeplink 做的事情很窄:把當前會話 ID 寫進 URL 的 ?session= 參數,打開這條鏈接時再按參數切回去。它是 Web 客戶端插件,不往 host 進程裏掛服務。
本文按社區目錄頁、GitHub 倉庫 README、客戶端源碼和 npm 包頁交叉覈對後整理。社區插件目錄 deepseek-harness-plugin.com 是獨立站點,和 DeepSeek / 幻方沒有官方從屬關係。DeepSeek Harness 本身的核心理念是「一切皆插件」,插件由社區各自發布。
這是什麼¶
dsh-session-deeplink 是一款面向 DeepSeek Harness Web 客戶端的會話深鏈接插件,由 R3alloc 維護,許可證 MIT。目錄頁把它歸在「會話與消息」分類。截至 2026-08-18,GitHub 倉庫 R3alloc/dsh-session-deeplink 星標爲 6,npm 上的版本是 0.1.1。
它解決的問題是:讓本機(或同一套會話列表)裏的會話可以被 URL 直接尋址。README 寫得很明確——只要該會話仍存在於 DSH 會話列表中,打開這條 URL 就會恢復到同一會話。它不是把對話內容發到公網的雲分享,也不是跨機器自動同步會話存儲。
倉庫把插件拆成兩半:
- Node 入口
src/index.ts:apply爲空,不注入、不提供任何 host 服務,只爲了讓 Loader 能掛上這一行,並掃描到dsh.client聲明。 - 瀏覽器端
src/client/index.ts:真正幹活的部分。package.json裏dsh.client.platform爲web,並聲明注入@deepseek-ai/dsh-client-runtime。
核心功能¶
根據 README 和客戶端源碼,能力可以概括成下面四點。
用 ?session= 打開指定會話¶
查詢參數名固定爲 session。地址形如:
http://127.0.0.1:3080/?session=session-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
3080 是 DeepSeek Harness Web UI 的默認端口,也是 README 裏的示例。插件在會話列表進入 ready 之後讀這個參數:目標 ID 在 sessions.list 裏存在、且當前會話不是它,就調用 ctx.sessions.open(target)。只處理一次初始參數,之後不再根據 URL 反覆打開。
目標不存在時,源碼會打一條 console.warn,不會去 open。倉庫測試覆蓋了這種情況:地址欄改回當前有效會話,側欄選擇保持不變。
切換會話時同步地址欄¶
初始深鏈接處理完之後,插件訂閱 sessions.list。當前會話變化時,用 history.replaceState 把 session 參數改成新的 ID。用 replace 而不是 push,所以切換會話不會在瀏覽器歷史裏堆一串幾乎相同的頁面。
保留其他查詢參數和 fragment¶
同步時只改 session 這一個鍵,pathname、其餘 query、hash 都留下。倉庫測試覆蓋了這種情況:頁面原來是 /?mode=test#conversation,切換會話後變成帶上 session=,同時 mode=test 和 #conversation 仍在。
沒有當前會話時,會刪掉 session 參數,而不是留下一個空值。
只跑在瀏覽器裏¶
README 和 Node 入口註釋都寫了:不添加任何 host 服務。cordis.patch.yml 只是把 id 爲 session-deeplink 的插件插進 profile 的 layer 棧,好讓客戶端半邊進入瀏覽器 roster。
安裝與啓用¶
目錄頁給出的安裝命令原文是:
dsh plugin add github:R3alloc/dsh-session-deeplink
倉庫 README 則要求裝進 web profile,因爲這是 Web 客戶端插件。作者給出的兩種寫法如下。
從 npm 安裝(README 建議日常用這條,包裏已經帶好客戶端 bundle,安裝時不必再跑構建):
dsh plugin --profile web add dsh-session-deeplink
從 GitHub 安裝:
dsh plugin --profile web add github:R3alloc/dsh-session-deeplink
Git 依賴會走包內的 prepare 腳本在本機構建。README 說明:pnpm 10 及以上可能要先在對應 profile 的 pnpm-workspace.yaml 裏授權構建,再重新執行安裝:
allowBuilds:
dsh-session-deeplink: true
如需可復現安裝,目錄頁建議固定 commit 哈希。本文覈對倉庫 main 時,最新提交爲 f6250b6c5ec6bcc8a6f715b59d034664f409281e(2026-08-14),可以寫成:
dsh plugin --profile web add github:R3alloc/dsh-session-deeplink#f6250b6c5ec6bcc8a6f715b59d034664f409281e
目錄頁和 README 都提醒:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。
裝完後重啓 dsh web。
典型用法¶
- 啓動 Web UI(官方倉庫默認地址是
http://127.0.0.1:3080),打開任意已有會話。 - 地址欄應變爲帶
?session=的 URL。把這條鏈接收藏、複製到另一個標籤頁,或發給使用同一套會話列表的人。 - 用這條 URL 重新打開頁面時,只要該會話還在列表裏,界面會切到對應會話,不用再點側欄。
- 之後在側欄切換會話,地址欄裏的 ID 會跟着變;刷新頁面應仍落在當前這條會話上。
不需要額外配置項。源碼裏沒有可調的選項對象,查詢鍵名寫死爲 session。
適用場景與注意事項¶
適合這些情況:
- 本機同時開多個標籤,每個標籤釘住不同會話
- 把正在進行的對話做成書籤,隔天用同一條 URL 回來
- 團隊共用同一套 DSH 會話存儲時,用鏈接指向某一條對話
使用前需要注意:
- 能力邊界。鏈接能打開的前提是目標會話已經在當前 DSH 會話列表裏。對方沒有這條會話,打開鏈接不會憑空把對話內容拉過去。插件也不負責複製上下文、註冊自定義協議。
- 只作用於 Web。
package.json聲明dsh.client.platform爲web。裝到非 web profile 上,瀏覽器端邏輯不會生效。 - 版本。README 寫明當前版本基於 DeepSeek Harness
0.1.0-rc.6開發。Harness 仍處於開發者預覽,後續版本可能要同步更新插件。 - 安全。插件以當前 dsh 進程權限運行。從 GitHub 安裝還會在本機執行
prepare構建。裝之前應閱讀src/client/index.ts、src/index.ts和 MIT 許可證。日常安裝優先用 npm 包,避免安裝階段跑構建腳本。 - 失效行爲。會話被刪或 ID 寫錯時,插件只打警告,不會拋錯中斷界面;地址欄會同步成當前仍有效的會話。
小結¶
dsh-session-deeplink 把 DSH Web 會話變成地址欄裏的一條查詢參數:能打開、能同步、能保留其餘 URL 片段,而且不往 host 側加服務。功能面很小,但對「刷新丟會話、鏈接點不回去」這類日常摩擦是對症的。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-session-deeplink/
GitHub:https://github.com/R3alloc/dsh-session-deeplink