前言¶
在 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 目录页。