前言¶
DeepSeek Harness(DSH)桌面端默認是單一窗口、單一界面:會話、工具、任務都在同一套 UI 裏完成。若你習慣在瀏覽器裏用 chat.deepseek.com、豆包或 ChatGPT 對話,又要頻繁回到 Harness 查任務、看工具輸出,常見做法是開多個窗口或 Alt+Tab 切換,Harness 裏的滾動位置和進行中的工具調用容易被打斷,網頁側正在流式輸出的回覆也可能因切走而中斷感知。
下面介紹社區客戶端插件 dsh-chat-shell(維護者 lxg103):在標題欄增加 Chat / Harness 分段切換,把指定 AI 站點以嵌入式瀏覽器鋪滿整窗,再一鍵回到未改動的 Harness 界面;兩側狀態保持掛載,切換是淡入淡出而非整頁重載。
這是什麼¶
dsh-chat-shell 是 DSH 的 客戶端插件(plain ES modules,lib/client.js 在掛載時向 document.body 繪製全屏面板、站點按鈕與切換控件)。它依賴桌面殼提供的 dshDesktop.browser 創建與內置側欄瀏覽器相同方式的 <webview>,在 Harness UI 與 Chat 網頁之間切換,而不銷燬任一側的會話。
- 目錄頁:skillhub.cn/plugins/lxg103/dsh-chat-shell
- 源碼與說明:github.com/lxg103/dsh-chat-shell
- 許可證:MIT(README 徽章與
package.json一致) - 當前包版本(
package.json):0.5.2
DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。安裝前請自行查看源碼與許可證——插件在 當前 DSH 進程權限 下運行。
核心功能¶
README 中已覈實的能力如下。
| 能力 | 說明 |
|---|---|
| 分段切換 | 標題欄居中 Chat \| Harness,可點標籤或拖動玻璃滑塊切換。 |
| 站點按鈕 | 切換左側:品牌圖標 + caret,打開後選預設或自定義站點。 |
| 三個預設 | DeepSeek、豆包(Doubao)、ChatGPT,各自獨立 browser session partition。 |
| 自定義 URL | 粘貼地址,標籤由 hostname 推導,與預設一併持久化。 |
| 即時切換 | 站點只掛載一次,用 CSS 顯隱切換,不因切換而 teardown。 |
| 狀態記憶 | 上次模式、上次站點、站點列表在重載後保留(見下文 localStorage)。 |
| 主題跟隨 | 從 live 頁面讀取明暗並隨應用主題更新。 |
| 軟失敗 | 在無桌面 bridge 的瀏覽器版 DSH 上,切換控件自行隱藏,不破壞頁面。 |
切換行爲上的要點(與簡介一致):
- Harness 側:會話、滾動位置、進行中的 tool call 不被改動。
- Chat 側:各 AI 站點保持 mounted,你在看 Harness 時仍在生成的回覆可繼續生成。
- 每個站點獨立 partition,三套登錄互不覆蓋。
環境與要求¶
- DeepSeek Harness desktop 0.2.x — 嵌入式瀏覽器由 Electron 殼提供,
dsh web中不存在。 - Windows — README 標明在該桌面構建上開發與測試。
安裝與啓用¶
插件市場 / CLI¶
官方 README 給出的安裝命令爲:
dsh plugin add dsh-chat-shell
手動(本地目錄)¶
- 將整個插件目錄複製到 profile 的
node_modules:
%USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-chat-shell
- 在
…\profiles\desktop\cordis.patch.yml中插入:
- insert:
- id: chat-shell
name: dsh-chat-shell
- 保存後桌面應用會熱重載插件圖;若未出現切換條,重啓一次應用。
卸載時:從 cordis.patch.yml 移除 chat-shell 或執行 dsh plugin remove dsh-chat-shell,並刪除對應 node_modules 目錄;若曾應用可選的 shell 登錄持久化補丁,需先按 README 執行 restore(見下節)。
典型用法¶
- 切換模式 — 點擊
Chat或Harness,或拖動滑塊。 - 選擇站點 — 點擊切換條左側圓形按鈕。
- 添加站點 — 在 picker 中選
+ 添加 AI 網頁,粘貼 URL 後按Enter。 - 回到 Harness — 再點一次
Harness;其餘狀態不變。
插件在 localStorage 中只保留一個鍵 dsh-chat-shell:state,結構示例:
{
"mode": "chat",
"active": "deepseek",
"sites": [{ "id": "deepseek", "label": "DeepSeek", "url": "https://chat.deepseek.com/" }]
}
重置:在應用 DevTools 中執行 localStorage.removeItem("dsh-chat-shell:state") 後重載。
可選:重啓後保持 Chat 登錄¶
默認嵌入式瀏覽器使用 內存 session partition,應用重啓後會退出登錄;README 說明這是 shell 行爲,非本插件缺陷。
倉庫提供 scripts/patch-persistent-login.mjs,通過對 已安裝 shell 副本 做一行 partition 修改實現持久登錄(原安裝包保留以便回滾)。操作前閱讀 docs/persistent-login.md:會修改已安裝應用、僅 Windows、DSH 更新會覆蓋補丁(需再 build + apply)。不打補丁插件仍可正常使用。
狀態與構建相關命令(摘自 README):
node scripts/patch-persistent-login.mjs status
node scripts/patch-persistent-login.mjs build
node scripts/patch-persistent-login.mjs apply
適用場景與限制¶
適合誰: 在 Windows 上使用 DSH 0.2.x 桌面版,希望在同一窗口內在 Harness 工作流與 DeepSeek / 豆包 / ChatGPT(或自填 URL)之間快速切換,且不想因切換丟失 Harness 上下文或打斷網頁側流式輸出。
務必知曉的限制(README「Limits worth knowing」):
- 僅桌面端;依賴未文檔化的
dshDesktop.browserinternal 契約,未來 DSH 若改名,插件會隱藏自身而非拋錯。 - Shell 對嵌入式瀏覽器有 deliberate 限制:無下載、無權限提示、無嵌套 webview、無 HTTP 認證對話框;本插件不嘗試放寬。
- 部分站點可能識別 embedded browser;DeepSeek、豆包、ChatGPT 當前可渲染輸入;若站點自行攔截自動化,插件不應嘗試繞過。
- 路線圖不含「每站點多窗口」;每站點單 tab。
- 瀏覽器託管 DSH 無 desktop bridge,切換條不會出現。
結尾¶
dsh-chat-shell 在 DSH 桌面標題欄增加 Chat / Harness 雙界面切換,用真實 webview 嵌入常用 AI 聊天站,並與 Harness 原生 UI 並行保活。安裝以 dsh plugin add dsh-chat-shell 爲準;細節與實現摘要見 GitHub README。