前言¶
在 DeepSeek Harness(DSH)裏寫智能體會話時,經常需要對照網頁版 Chat:查資料、試 prompt、把模型在網頁裏的回答貼回當前 Composer。常見做法是瀏覽器和 Harness 來回切換,或自己搭側邊網頁,但在 DSH Desktop 上,插件自建 webview 會被主進程攔截,用 iframe 嵌 chat 站點又常被 CSP / X-Frame-Options 擋住,也讀不到頁面 DOM。
dsh-chat-dock 走另一條路:不重做 Chat UI,也不做反向代理,而是在 DSH 內置的右側欄 Browser 標籤裏打開 chat.deepseek.com,再調用側欄公開的浮動 API;插件只負責全局懸浮控制台,用來鏡像最新回覆,並支持複製或插入當前會話輸入框。下面按「是什麼 → 能做什麼 → 怎麼裝 → 怎麼用 → 限制」說明。
這是什麼¶
維護者:aiShuiJiaoDeXioShou。倉庫:dsh-chat-dock;社區目錄:skillhub 插件頁。分類爲客戶端插件;當前版本 0.1.1,許可證 MIT,技術棧 TypeScript。
一句話定位:面向 DeepSeek Harness 的浮動 Web Chat 停靠插件——在可浮動的右側欄 Browser 標籤裏打開 DeepSeek Chat,用插件自繪的全局控制台鏡像最新回覆,並支持複製或插入 Composer。
設計上它是輕量客戶端:package.json 與 README 均說明不註冊模型工具、不寫會話事件、不保存賬號憑據、不發起後臺網絡請求;頁面訪問由內置 Browser 完成。
核心功能¶
Chat 標籤與一鍵浮動¶
在右側欄 Browser 標籤打開配置好的聊天站點(v0.1 默認 DeepSeek)。同一 URL 已打開時會聚焦該標籤,不重複開頁。打開後可調用 sidebarRight.float 把標籤交給 DSH 原生浮動面板;若未生效,可手動把 Chat 標籤拖出側欄。聊天浮窗打開時,仍可使用 Files、Canvas 等側欄 UI。
全局懸浮控制台¶
插件通過 shell.overlay 繪製可拖動、可縮放、可收起爲膠囊的全局控制台;位置與設置在 localStorage 中持久化。控制台顯示當前站點、頁面狀態;展開後按設定間隔從 guest 頁面抓取最新回覆並鏡像顯示。
快捷鍵 Alt+Shift+C 顯示或隱藏控制台。
抓取、複製與插入¶
抓取優先走各站點適配器的選器;失敗時回退到當前選區或頁面正文尾部。複製寫入剪貼板(帶編輯框回退)。插入通過 Composer 的 inputActions 在光標處寫入當前會話輸入框;輸入框不可用時改爲複製。
控制台還提供側欄 UI 快捷入口:打開 Files、Terminal、Browser 標籤,或浮動當前標籤。
站點與適配器¶
v0.1 默認只啓用 DeepSeek。ChatGPT、Claude 的適配器已在代碼中註冊,但默認關閉,屬於實驗能力;README 提示某些賬號、地區或風控可能導致內嵌瀏覽器不可用,頁面結構變化也可能讓抓取失效。
可在設置中切換默認站點、打開方式、抓取間隔,或在 自定義站點(JSON) 裏追加站點。自定義字段包括 id、label、url、可選 hosts、可選 latestReply(在 guest 頁面執行的 JS,返回字符串)、可選 enabled。
國際化與主題¶
文案走 locale;樣式依賴 DSH 的 --dsw-alias-* token,與 Harness 主題一致。
安裝與啓用¶
環境要求(來自 README 與 package.json):
- DSH Desktop ≥ 0.2.2-rc.1,且當前 profile 啓用右側欄 Browser。
- Node.js ≥ 20,npm ≥ 9。
從源碼構建並安裝本地 bundle 時,README 給出的步驟如下。先將倉庫拉到本地並構建(路徑請換成你機器上的絕對路徑):
cd dsh-chat-dock
npm ci
npm run build
在 DSH 中安裝 bundle:
plugin_manager action=install_bundle target=/absolute/path/to/dsh-chat-dock
安裝後刷新 Harness 頁面,或完全重啓應用。也可在 Settings → Plugins 中選擇本地目錄或 tgz 安裝。client/client.js 爲構建產物;改源碼後執行 npm run build 再刷新頁面即可加載新客戶端 bundle。
安裝前建議瀏覽倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,自定義站點的 latestReply 會在 Chat 頁面內執行,只應填寫你信任的腳本。
典型用法¶
- 打開一個會話。
- 點擊會話頭部的 Chat 圖標,或側欄底部、Settings 旁的 Chat 浮窗圖標。
- 首次使用時,在打開的 Browser 標籤裏登錄
chat.deepseek.com。 - 在控制台確認站點與頁面狀態;展開後自動鏡像最新回覆。
- 需要完整交互時點 浮動,或將 Chat 標籤拖出右側欄。
- 抓到回覆後點 複製 或 插入;插入會寫到當前會話輸入框光標處。
- 在設置中切換默認站點、打開方式、抓取間隔,或添加自定義站點。
會話頭部按鈕打開默認站點;控制台內站點下拉可在已啓用站點間切換。
自定義站點示例(字段含義見 README 表格):
[
{
"id": "my-chat",
"label": "My Chat",
"url": "https://example.com/chat",
"hosts": ["example.com"],
"latestReply": "(() => { const nodes = document.querySelectorAll('.answer'); const last = nodes[nodes.length - 1]; return last ? last.innerText : '' })()"
}
]
適用場景與注意¶
適合誰:需要在 DSH 同屏使用網頁 Chat、並把最新回答快速帶回當前 Composer 的開發者;希望利用內置 Browser 與浮動側欄,而不是自造 webview 的插件作者也可參考其邊界劃分(詳見倉庫 docs/limitations.md、docs/architecture.md)。
已知限制(README 摘要):
- Browser 分區內登錄態不跨應用重啓;重啓後需重新登錄。插件不讀取、不保存 cookies 或 token。
- 依賴內置 Browser:Browser 未啓用、右側欄不可用或無會話時,無法打開 Chat 頁。
- 依賴頁面 DOM 結構;DeepSeek 類名變化時可能需改抓取腳本或自定義
latestReply。 - v0.1 不自動發送 Chat 頁面裏的消息,只讀取頁面。
- 浮窗是 DSH 內部浮動面板與控制台,不是 OS 級獨立置頂窗口。
- 倉庫測試覆蓋邏輯與 React 靜態渲染;真實點擊、浮動與登錄後抓取需按
docs/verification.md手動驗收。
隱私方面:插件不發起後臺網絡請求;抓取內容僅在當前頁面內存中用於鏡像、複製、插入。
結尾¶
dsh-chat-dock 把 DeepSeek Chat 放進 Harness 認可的 Browser 標籤與浮動側欄,用一塊輕量控制台補上「看最新回覆 → 複製/插入 Composer」這段鏈路;v0.1 以 DeepSeek 爲主,ChatGPT / Claude 與自定義站點屬於擴展路徑。進一步瞭解可訪問 社區目錄頁 與 GitHub 倉庫。