Commit Graph
15 Commits
Author SHA1 Message Date
jiangchen 387f9a0012 feat: 页面按钮 + 设置分区 + 修掉同步注册事故
- fix(host): 工具/设置注册从 async 续体挪回 apply 同步段 —— cordis 的 ctx 在 apply 返回后失效,
  之前真机报 'cannot create effect on inactive context',导致 float_window 没装上
- feat(host): tapIndex 往 index.html 注入『悬浮窗』按钮(自带状态点/看门狗/被 SPA 重建后自动补回),
  实测带 auth cookie 拉首页 HTML 已含该按钮;config.button=false 可关
- feat(client): 客户端半 lib/client.js(ModuleLoader 格式,无需构建)注册 sidebar.footer.action
  与 settings.section(设置→悬浮窗整页:打开/全屏/固定/锁定/隐藏/关闭 + 会话状态);接管后摘掉注入的备用按钮
- package.json: exports['./client'] + dsh.client{inject,platform}
2026-09-27 16:26:40 +08:00
jiangchen 5f258e8308 docs: 补 15-17 号踩坑(defineTool 必须转换参数 schema、具名导出被 default 吞、上下文窗口来自 request/context) 2026-09-27 16:09:30 +08:00
jiangchen 60474fceea fix(host): 修掉会打断每一轮的致命 bug —— 0.1.7 的工具参数必须经 defineTool 转成 JSON Schema
- 事故现象:每轮 Invalid schema for function 'float_window': schema must be a JSON Schema of 'type: object', got 'type: null'
- 根因:直接注册 DSL 对象,参数未做 parameterSchemaSpecToJsonSchema 转换,provider 收到 parameters.type=null
- 修复:解析 @deepseek-ai/dsh-tools 的 defineTool 后再注册;解析不到就跳过注册;注册前自检 type==='object'
- 自检证据:状态文件新增 toolSchema 与 toolSchemas(从真实 request/header 抓的模型视角 schema)
  实测 0.1.7:float_window parametersType=object, required=[action]
- 顺带:request/context 的 contextWindow 用于上下文用量;Config 增加 tool 开关
2026-09-27 16:08:45 +08:00
jiangchen 8b74c2d2b4 feat(host): 导出 schemastery Config -> DSH 设置页出现悬浮窗配置卡片;实测 profile config 经 apply(ctx,config) 下发到浮窗;README 补设置入口说明 2026-09-27 14:52:08 +08:00
jiangchen c3ca013d20 feat(host): /window 路由与 float_window 工具共用同一段动作逻辑;smoke-host 升级为 20 条断言的映射/路由测试(真实抓包形状),实测 open 能拉起浮窗 2026-09-27 14:50:01 +08:00
jiangchen 5ddca41b8a feat(host): 版本自适应宿主调用(0.1.7 sessionController / 0.1.0 apiProxy),在 DSH Desktop 内置 0.1.7-rc.2 上实测镜像与发消息全通 2026-09-27 14:46:07 +08:00
jiangchen a6d2c828a8 fix(host): 修掉会杀死 DSH 的 resolveModelInfo unhandled rejection;按真实事件结构(event.data)重写镜像映射;标题栏与指标显示打磨 2026-09-27 14:37:50 +08:00
jiangchen f708c52e3e feat(shell): open 动作会前置并激活已有浮窗(Agent 调 float_window open 时不再是无操作) 2026-09-27 14:25:50 +08:00
jiangchen 5aa92d50da feat(host): 浮窗聊天框打通(apiProxy.sessions.prompt)+ 会话控制路由 + 事件直方图自检 2026-09-27 14:25:35 +08:00
jiangchen b58bde162f feat(host): 指标改为事件计数兜底 + 自检状态文件;实测真实实例中工具注册成功
- 隔离实例(独立 DSH_HOME + 最小 profile)实测:plugin-status.json tool=true,无加载错误
- 服务探测:sessions/tools/tokenMeter/llm/shell/sandboxPolicy/webServer 均可用;本 profile 无 settings 服务
- 轮/步/tok-s 改为从 session/event 自行累计(不依赖 session-projection),tokenMeter 字段首次调用记入状态文件便于核对
2026-09-27 14:19:38 +08:00
jiangchen baa4e86058 fix(shell): 修复页面按钮全失效(param 名不能叫 args)+ -NoExclude 不再成为默认;README 补验证方法与踩坑 2026-09-27 14:14:23 +08:00
jiangchen 90674cf165 fix(host): ctx.set 前必须 ctx.provide,否则整个插件树加载失败、DSH 起不来(隔离实例实测复现;修复后正常启动并写出 endpoint.json 与 HTTP 路由) 2026-09-27 14:11:06 +08:00
jiangchen 0c730f424c fix(shell): -NoExclude 只作用于本次运行,不再写回状态文件(避免调试后默认失去抓屏隐身) 2026-09-27 14:04:51 +08:00
jiangchen 472bbe243e feat(host): 注册 DSH 设置命名空间(设置→插件 里的悬浮窗卡片)
- ctx.settings.register('dsh-float-window', schema) best-effort:schemastery 解析不到时只跳过
- 设置变更通过 SSE 广播给浮窗
- 说明:link: 安装的插件解析不到 profile 依赖时降级,浮窗自带设置面板仍然可用
2026-09-27 14:04:28 +08:00
jiangchen 8e4a648465 feat: DSH 悬浮窗 v0.1.0 — 原生置顶小窗 + 会话镜像 + 抓屏隐身
- shell: WinForms + WebView2 原生壳(无边框/置顶/固定位置/锁定尺寸/全屏/自适应缩放/截图排除)
- shell/ui.html: 自适应界面(工具栏、会话镜像区、底部聊天框、轮/步/tok/s/MTOK/缓存命中/上下文状态条、外观设置)
- lib/host.js: DSH 插件 Host 半(endpoint 写入、SSE 会话与指标快照、float_window Agent 工具)
- tools: WebView2 SDK 拉取、BOM 修复、Host 冒烟测试
- README: 架构、实测结论(WDA_EXCLUDEFROMCAPTURE、玻璃模式、DPI、WebView2 加载)
2026-09-27 14:02:58 +08:00