dsh-conversation-float:把 Conversation 視圖變成可拖拽的浮動面板

前言

在 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)。

  1. 單擊:在 DSH 主界面仍可見時打開浮層(兩側欄打開,浮層居中於留出的區域)。
  2. 同一按鈕再次單擊:隱藏 DSH 主界面,僅保留浮層(提示在 Hide DSH / Show DSH 之間切換);再按一次恢復主界面。
  3. 關閉浮層、收進左側欄或掛到右側欄時,側欄狀態會按插件規則自動歸還。

首次打開會調用 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 完成,缺一不可:

  1. 在 dependencies 增加 "dsh-conversation-float": "^0.1.4"(README 示例;npm 上包版本見倉庫 package.json,當前爲 0.2.3)
  2. 在 dsh.profile.bundles 增加 "dsh-conversation-float" —— 僅註冊後的 bundle 會出現在插件列表並可開關

從源碼鏈接(節選)

  1. 將源碼放在任意路徑
  2. junction 到 <profile>/node_modules/dsh-conversation-float
  3. dependencies 使用 "dsh-conversation-float": "link:<path>",dsh.profile.bundles 同樣加入 "dsh-conversation-float"
  4. client.js 支持熱重載;宿主側 index.js 爲 no-op,改動後需重啓 DSH

社區目錄頁:skillhub.cn 上的 dsh-conversation-float。目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」,安裝方式以 README 爲準,勿憑倉庫名自行拼接未文檔化的 CLI。

典型用法

  1. 在 profile 中安裝並註冊 bundle 後,重啓或按 README 重載客戶端。
  2. 打開任意 Session,點標題欄右側 Conversation float,浮層居中出現。
  3. 需要對照右側工具:拖向右側帶鬆手,對話成爲右側頁籤;要專注單欄對話:拖向中間帶或關閉浮層。
  4. 臨時收進左側:拖向左帶或菜單 Stow the conversation here,中欄留白,從左欄同名行喚回。
  5. 只要浮層、不要兩側 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 目錄頁。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜