feat(host): 浮窗聊天框打通(apiProxy.sessions.prompt)+ 会话控制路由 + 事件直方图自检

This commit is contained in:
2026-09-27 14:25:35 +08:00
parent b58bde162f
commit 5aa92d50da
3 changed files with 126 additions and 5 deletions
+18 -2
View File
@@ -34,7 +34,7 @@
| 自适应调整 | 布局随窗口尺寸重排;拖动**任意边缘和四角**都能缩放(系统级 WM_NCHITTEST) |
| 全屏切换 | 标题栏 ⛶ 或 `F11`,返回时还原原来的位置与尺寸 |
| 抓屏隐身 | `SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE)`,Agent 截屏里彻底看不到这个窗 |
| 底部聊天框 | 与当前会话互通(随插件启用) |
| 底部聊天框 | 直接发消息进当前会话(浮窗 POST 给插件,插件调宿主网关 `ctx.apiProxy.sessions.prompt`,与浏览器 UI 同一条路) |
| 计费/状态条 | 轮数、步数、tok/s、累计 MTOK、缓存命中率、上下文用量进度条 |
| 外观自定义 | 背景效果:不透明 / 毛玻璃(亚克力)/ 云母 / 模糊 / 半透明;不透明度、界面缩放 |
| 按钮触发 | 运行 `shell\run-float.cmd`,或 DSH 里点插件入口 |
@@ -168,10 +168,26 @@ dsh-float-window/
## 已知限制 / 路线图
* 仅 Windows(macOS 的排除要换 `NSWindow.sharingType`,且 ScreenCaptureKit 是否遵守需要单独实测)。
* 聊天框要真正把消息发进会话,还需要接宿主侧“发送到会话”的服务(当前只做只读镜像)。
* 从浮窗**新建会话**还没打通:`session.create` 在宿主里要工作区上下文,直接从插件调会被拒(`/session` 路由已留好,等接上 workspace)。
* 背景效果里的“半透明”依赖整窗 alpha,WebView2 子窗口在这种模式下的观感不如毛玻璃,建议优先用亚克力/云母。
* 还没做托盘图标与全局热键。
## 排障:插件自检文件
插件每次启动会写 `%DSH_HOME%\float-window\plugin-status.json`:
```json
{ "version": "0.1.0", "tool": true, "settings": false,
"notes": ["06:24:39 tool float_window registered", "..."],
"eventTypes": { "user/message": 3, "assistant/message": 2, "tool/call": 1 },
"lastRow": { "type": "assistant/message", "row": { "role": "assistant", "text": "…" } } }
```
* `tool` —— Agent 工具是否注册成功(`false` 说明 tools 服务不在);
* `settings` —— 设置命名空间是否注册成功(`link:` 安装时可能拿不到 schemastery,属已知降级);
* `notes` —— 启动自检日志(服务探测、endpoint 路径、错误);
* `eventTypes` / `lastRow` —— 会话事件直方图与最近一次映射结果,用于核对不同 DSH 版本的事件字段名。
## License
MIT