前言¶
下面介紹一個 DSH 插件:alooshxl/dsh-session-pins。它解決的是一個具體問題:在 DeepSeek Harness 的 web 側邊欄中,把常用會話固定起來,避免每次重新查找。
DSH 支持插件擴展,但這個插件沒有替換宿主會話瀏覽器,而是通過公開的 sidebar.footer.action 槽位貢獻一個根級動作。這樣插件不會修補宿主,也不依賴私有 UI 源碼。
這是什麼¶
@dsh-external/dsh-session-pins 是由 alooshxl 維護的 MIT 許可證插件。它面向使用 DSH web profile 的用戶和開發者:在側邊欄底部增加一個固定會話菜單,讓常用會話有穩定的入口。
固定記錄保存在瀏覽器本地 localStorage,不依賴 API key 或憑證。
核心功能¶
- 寬側邊欄的動作顯示 pin 圖標、
Pinned sessions和當前固定數量。 - 窄側邊欄的動作是圖標樣式,帶有可訪問名稱和延遲 tooltip。
- 菜單支持
Open、Unpin、Back,適用時顯示;空列表有明確的空狀態。 - 普通、非空、非子代理的當前會話可以被固定;最新固定項排在前面;已存在的 id 再次固定會移到前面,不產生重複。
- 空會話和子代理當前會話不能新固定;已保存的 id 仍可移除,打開失敗會被包含在菜單內,並保留恢復操作。
- 固定項保存在
localStorage的dsh.session-pins.v1下,是帶版本號的有序 id 列表。輸入會被校驗:非法記錄回退爲空,非字符串和空白 id 被移除,重複 id 保留首次出現,最多保留 100 個固定項。 - 同源 tab 在插件激活時通過瀏覽器
storage事件協調;寫入方 tab 直接更新自己。 - 固定、取消固定、持久化和打開會話都不需要 API key 或憑證。
- 集成使用公開的 Harness 客戶端服務和
sidebar.footer.action槽位,不使用 host patch、monkey patch 或兼容層。 package.json中dsh.client.platform爲web,dsh.client.inject包括@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-ui-sidebar。
安裝與啓用¶
以下安裝命令以 v0.1.0 Git tag 爲例。README 說明 GitHub 倉庫和 tag 在 release 步驟中創建,因此應在對應 release 存在後再運行。
dsh plugin --profile web add github:alooshxl/dsh-session-pins#v0.1.0
安裝後,啓動 stock web profile:
dsh web
等價的顯式啓動命令是:
dsh --profile web
如果升級到另一個 Git tag,重複 add 並使用新 tag;不要用 update 選擇 Git ref。例如:
dsh plugin --profile web add github:alooshxl/dsh-session-pins#v0.1.1
如果需要不可變安裝,把佔位符替換爲完整的 40 位 commit SHA:
dsh plugin --profile web add github:alooshxl/dsh-session-pins#<40-character-commit-sha>
移除插件:
dsh plugin --profile web remove @dsh-external/dsh-session-pins
典型用法¶
在瀏覽器裏,啓動 dsh web 後,從側邊欄底部的固定會話入口打開菜單。選擇一個 root 行時,會打開同一菜單的下鑽視圖;適用時會看到 Open、Unpin、Back。
固定當前會話的前提是當前會話爲普通、非空、非子代理會話;被固定的當前會話會提供 Unpin current session。
如果你要本地開發或驗證倉庫,先做環境準備。package.json 中 packageManager 爲 pnpm@11.7.0,engines 爲 ^22.19.0 || >=24.0.0。
git clone https://github.com/alooshxl/dsh-session-pins.git
cd dsh-session-pins
pnpm install --frozen-lockfile
GNU Make 檢查點:
make fmt && make test && make lint
完整的發佈向驗證命令如下。最後的 git status 命令應沒有輸出;如果生成物有漂移,應視爲未通過。
pnpm run build
pnpm run format:check
pnpm run typecheck
pnpm run verify:self-contained
pnpm run verify:package
git diff --check
git status --short --untracked-files=all -- lib
適用場景與注意¶
- 該插件的兼容目標是
@deepseek-ai/dsh@0.1.0-rc.6。DeepSeek Harness 處於 developer preview,新的 release candidate 可能在兼容性複覈前破壞該插件。 - 瀏覽器本地持久化不會跨設備、瀏覽器 profile、瀏覽器或不同 origin 同步。如果
localStorage被阻止或拋出錯誤,固定項仍可在當前頁面內存中使用,但不會在刷新後保留。 - Workspace archive 狀態只有在
baselinesReady === true、phase === 'ready'且state === 'idle'時纔可執行;否則省略Open,保留Unpin和Back。 - 在 DeepSeek Harness
0.1.0-rc.6中,通過sessions.open()選擇已歸檔 id 會立即清除,且沒有公開 unarchive 操作;可操作的已歸檔固定項保留即時標題,省略Open,但仍可移除。 - Task 7 的 wide/rail 手工視覺驗收仍爲 pending,文中不將其聲明爲已完成。
- 該插件不讀取憑證文件,不攜帶臨時瀏覽器 profile,也不包含私有 Harness 源碼;固定、取消固定、持久化和打開會話不需要 API key 或憑證。
- DSH 生態的擴展方式是插件化。第三方插件目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不應把它理解爲官方應用商店。
- 插件以當前
dsh進程權限運行。安裝前建議檢查源碼、依賴、許可證和實際行爲;本項目使用 MIT 許可證。
參考鏈接¶
- 目錄頁(來自本次材料線索):https://www.skillhub.cn/plugins/alooshxl/dsh-session-pins
- GitHub:https://github.com/alooshxl/dsh-session-pins