cyh3436332528/dsh-float-chat ↗★ 1

dsh-float-chat

Pops the DSH side chat into a frameless, always-on-top Windows desktop window that can sit over any other application, with its own 悬浮窗 settings page (appearance light / dark / follow-DSH / follow-Windows, always-on-top, remembered geometry, default size, opacity, close-window-ends-the-thread, session title in the title bar, Esc to close) and a cache-and-log cleanup card. This root manifest is the distribution package: it exposes plugin/ as the entry points and ships window/ alongside, so a GitHub install carries everything the window process needs. 适合Windows桌面端用户,便于跨应用随时进行快捷对话。

Package
dsh-float-chat
Compatibility
Unverified
Version
0.4.0
License
MIT
Last updated
Sep 30, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:cyh3436332528/dsh-float-chat

使用

打开浮窗

  1. 在 DSH 主窗口的输入框右侧点 浮窗。
  2. 窗口出现(0.35 → 目标透明度的淡入),并已继承当前会话的上下文,标题栏下方提示
    已继承当前会话上下文。
  3. 在窗口底部的输入框里提问。Enter 发送,Shift+Enter 换行。

同一个插件只会有一个浮窗进程。 若已经开着,再点「浮窗」不会新开一个
(接口会返回 started: false),已有的窗口会保持。

管理对话

  • 开启新对话:标题栏 +,或左上角下拉菜单里的「新对话(继承当前会话上下文)」。
  • 切换历史对话:左上角下拉菜单,点任意一行。每一行右侧有 ✎ 可以重命名
    (行内变成输入框,Enter 保存 / Esc 取消),鼠标悬停或键盘聚焦会弹出完整标题与时间。
  • 删除某条对话记录:下拉菜单底部的 删除这段对话记录(红色)。删的是落盘的会话文件。
  • 即用即焚:右上角的开关。打开后按钮变红,并且关闭窗口时自动删掉本次对话记录。
  • 重命名不生效? 重命名只改窗口自己的索引(存在窗口的 localStorage 里),
    不改 DSH 侧的会话标题。

置顶与窗口

  • 始终置顶:标题栏图钉按钮,或设置页里的开关。图标实心表示已置顶。
  • 调整大小:拖左下 / 右下两个手柄。窗口的尺寸与位置会被记住(可在设置页关掉)。
  • 最小化 / 关闭:标题栏 — / ✕。开启「Esc 关闭窗口」后,窗口内按 Esc 也能关
    (菜单打开时 Esc 仍然是关菜单)。

配置项

插件的设置存在 window/float-settings.json(相对插件包同级目录),
由宿主半边原子写入(tmp + rename),窗口进程用 FileSystemWatcher 监听,
改完 ≈ 50 ms 内窗口跟上(另加 1 秒轮询兜底)。

设置项类型 / 取值默认值说明是否即时生效
appearancelightdarkdshsystem
alwaysOnTopbooleantrue打开窗口时是否置顶✅ 即时
rememberGeometrybooleantrue是否记住并恢复窗口的尺寸与位置❌ 下次开窗
opacitynumber 0.6–11窗口不透明度✅ 即时(拖动滑块时实时跟随)
defaultWidthnumber 320–1600620未记住几何(或还没有存档)时使用的宽度,单位 px❌ 下次开窗
defaultHeightnumber 260–1600900同上,高度❌ 下次开窗
ephemeralByDefaultbooleanfalse新窗口默认是否开启「即用即焚」✅ 即时
showSessionTitlebooleantrue标题栏是否显示侧边对话 / 主会话的标题✅ 即时
closeOnEscapebooleanfalse窗口内按 Esc 是否关闭窗口✅ 即时

关于默认值:host.js 里的 SETTINGS_DEFAULTS 与 FloatWindow.cs 里的 WindowSettings
各有一份默认值。改默认值时两边要一起改。

[!NOTE]
写权限校验。 设置接口只接受 SETTINGS_DEFAULTS 里存在的键,其余字段一律丢弃;
越界的数字会被 clamp 到合法区间(例如 opacity 会被夹到 0.6–1)。
所以手工编辑 float-settings.json 写坏了也不会让窗口崩,最差是回落到默认值。

没有独立的配置文件入口——设置一律通过 设置页 → 悬浮窗 修改。