前言¶
在 DeepSeek Harness(DSH)裏,對話(Conversation)默認佔住中間欄:你要對照左側會話樹、右側工具或 Trajectory 時,往往只能收窄側欄或來回切換焦點。若希望「對話仍在原生界面裏操作,又能臨時挪到側邊或單獨浮起」,就需要在客戶端佈局層做改動,而不是另開一個瀏覽器窗口。
dsh-conversation-float(倉庫 gosutry/dsh-conversation-float)由社區維護者 gosutry 發佈,分類爲客戶端插件。它把 DSH 自帶的 Conversation 列整塊移入 dock kit 的浮動面板,支持拖放收納、回中欄、掛靠右側欄,並保留輸入、滾動、附件與人格選擇等原生行爲。下文按安裝、入口與拖放邏輯說明用法與限制。
這是什麼¶
一句話:把固定在中欄的 Conversation 視圖 提到 DSH 自有浮動面板裏,仍屬同一 DSH 窗口(任務欄只有一個 DSH),面板內是 同一 DOM / 同一 React 根,不是重繪副本。
與「新開 OS 級窗口」不同,本插件用的是與右側欄相同的 dock kit 浮層;關閉或收納時會把列移回原來的座位(若原座位不存在則回退到中欄)。
核心功能¶
浮動與隱藏主界面¶
入口:會話標題欄右側的小型窗口圖標(Conversation float)。
- 單擊:在 DSH 主界面仍可見時打開浮層(兩側欄打開,浮層居中於留出的區域)。
- 同一按鈕再次單擊:隱藏 DSH 主界面,僅保留浮層(提示在 Hide DSH / Show DSH 之間切換);再按一次恢復主界面。
- 關閉浮層、收進左側欄或掛到右側欄時,側欄狀態會按插件規則自動歸還。
首次打開會調用 dock kit 的 resizeFloat 把浮層放大(約 920×711,隨窗口縮放);只放大,不會把已放大的浮層再縮小。打開前若右側欄收起會先展開,左側收起同理,以便「收回歸側欄」有落點。
左 / 中 / 右三帶拖放¶
按住浮層標題欄拖動:按住約 1.2 秒 後進入落點判定,輪廓跟隨指針下方帶狀區域,鬆手落入該帶;未滿 1.2 秒鬆手不產生移動,避免誤觸。
三帶對應窗口真實分欄(寬度隨佈局測量,README 示例爲左 0..280、中 280..680、右 680..1097):
| 落點 | 效果 |
|---|---|
| 左 | 收進左側欄抽屜:浮層未關閉僅隱藏,中欄可保持空;左側出現以 該 Conversation 標題 命名的行,點行可恢復 |
| 中 | 關閉浮層,對話回到中欄 |
| 右 | 作爲右側欄原生頁籤掛靠,帶 Return to sidebar 與關閉 |
也可不用拖拽:左側欄 More 菜單有 Stow the conversation here,右側引導 More tools 卡有 Move the conversation here;對話已在目標位置時對應項會隱藏。
側欄狀態快照¶
浮層打開前會快照當前側欄開合;關閉浮層或退出「僅浮層」隱藏態時,按快照恢復——若在浮層打開期間你本人點擊或快捷鍵改過側欄,則以最後一次爲準。DSH 因窄窗自動收欄、浮層內操作等不計入「本人」修改。
實現要點(爲何仍是「真」對話)¶
- 對話列在同一文檔內整塊移入面板 body,關閉或換宿主時再移回。
- 收左:在浮層根上標記隱藏(
visibility/opacity),不關面板。 - 收右:經
openResource(..., { destination: 'sidebar' })交給 DSH;頁籤類型keepMounted,切走其他右側頁籤時對話仍留在該頁籤 body。
拖動用 DSH 自帶機制;每幀最多一次測量,三帶在按下時測一次,輪廓僅在換帶時重繪並用 transform 移動,以降低拖拽卡頓。
安裝與啓用¶
依賴:DSH >= 0.2.2-rc.1(README 開發與測試基線)。package.json 中 peerDependencies 爲 @deepseek-ai/dsh": ">=0.2.2-rc.1 <1.0.0",Node >= 18。許可證 MIT。
插件以當前 DSH 進程權限在客戶端運行;從 npm 安裝前可在 GitHub 查閱源碼與 LICENSE。
通過 npm¶
npm i dsh-conversation-float
兩步都必須在 profile 的 package.json 完成,缺一不可:
- 在
dependencies增加"dsh-conversation-float": "^0.1.4"(README 示例;npm 上包版本見倉庫package.json,當前爲 0.2.3) - 在
dsh.profile.bundles增加"dsh-conversation-float"—— 僅註冊後的 bundle 會出現在插件列表並可開關
從源碼鏈接(節選)¶
- 將源碼放在任意路徑
- junction 到
<profile>/node_modules/dsh-conversation-float dependencies使用"dsh-conversation-float": "link:<path>",dsh.profile.bundles同樣加入"dsh-conversation-float"client.js支持熱重載;宿主側index.js爲 no-op,改動後需重啓 DSH
社區目錄頁:skillhub.cn 上的 dsh-conversation-float。目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」,安裝方式以 README 爲準,勿憑倉庫名自行拼接未文檔化的 CLI。
典型用法¶
- 在 profile 中安裝並註冊 bundle 後,重啓或按 README 重載客戶端。
- 打開任意 Session,點標題欄右側 Conversation float,浮層居中出現。
- 需要對照右側工具:拖向右側帶鬆手,對話成爲右側頁籤;要專注單欄對話:拖向中間帶或關閉浮層。
- 臨時收進左側:拖向左帶或菜單 Stow the conversation here,中欄留白,從左欄同名行喚回。
- 只要浮層、不要兩側 chrome:同一按鈕切到 Hide DSH,用完 Show DSH 或關閉浮層恢復佈局。
適用場景與已知限制¶
適合:長時間對照 Trajectory / 右側工具又不希望開第二個系統窗口;需要把當前 Session 的對話暫存到左欄抽屜、或固定到右側頁籤的工作流。
務必注意:
- 每個 Conversation 只有一個宿主;左欄行是入口,不是第二份實時副本。
- 浮層屬於打開它的 Session;切換 Session 會把對話還給該 Session 的中欄(或該 Session 自己的浮層)。
- 左側抽屜 只保留一個 Conversation;再收納會替換前一個,被替換者失去抽屜標記回到普通浮層。
- 從抽屜取出時浮層回到收納時的位置,不會自動居中。
- 重啓 DSH 後抽屜狀態丟失,對話回到中欄。
星標與熱度以目錄 / GitHub 當時數據爲準(撰寫時線索爲 0 star);未在資料中出現的能力或配置項請勿假定存在。
結尾¶
dsh-conversation-float 在單窗口內把 Conversation 變成可拖放的 DSH 原生浮層,並打通左欄收納與右側掛靠,適合需要靈活分欄又不願犧牲輸入與附件體驗的場景。安裝與 bundle 註冊以 README 爲準;詳情與 issue 見 GitHub 倉庫,社區索引見 SkillHub 目錄頁。