Commit Graph

7 Commits

Author SHA1 Message Date
90880b135e fix(remotedevice): 补 omniparse 能力 + 设备桥对齐门禁
## 要判的是什么

GUI(cmd/gui/main.js)作为**设备端**被 agent 驱动,走的是 WS 上行/下行的
op 消息,与服务端 remotedevice 插件共享同一套能力契约。这条通道此前
**没有任何强制手段** —— endpoint-align.test.mjs 只守 REST 面
(api("...") 对齐 webui 的 mux.HandleFunc),明确不碰设备桥。

两套实现(Go client / GUI JS / 鸿蒙 ETS)全靠注释人工对齐
(main.js:1367「与鸿蒙端 DeviceBridge.ets:209 对齐」)。

## 真实漂移(2026-10-05 核实)

GUI caps 含 "omniparse",executeHomeagentCmd 有完整 case(调 PowerShell
+ ha_omniparse_*.ps1)。但 capabilityTools 里没有这个键,整个
remotedevice 包 grep omniparse 命中 0 ⇒ deviceSupportsTool 恒 false
⇒ agent 永远不会下发 ⇒ 那段实现是死代码。

修复:capabilityTools 补键,使其可被下发。

## 删 devicebridge_dll.js

三条都查证过:
  1. 无人引用 —— 全仓 grep DeviceBridgeDLL 命中 0;
  2. 必然抛 —— start() 无条件 throw 'koffi not fully implemented',
     且 loadFFI() 的 ffi-napi 备选分支只 return true 不返回 lib;
  3. 方向已废弃 —— GUI 走 main.js:999 手工构造的原生 WebSocket
     (Sec-WebSocket-Key/Version 握手),不经 FFI。

⚠ koffi **依赖保留**:main.js:1873 用 koffi.load("user32.dll") 做
computeruse 的鼠标键盘注入,那是真实在用的,与本文件无关。

## 撤回两个误判

写门禁初版时判错两处,均已在判据注释里记录理由:

  - 「GUI 声明 cmdrun/cmdresult 会绕过能力矩阵」是错的。device_ctl_cmdrun
    (device.go:270)是所有能力的**统一下发通道**:agent 调
    computeruse/screensue 最终都由它下发 homeagent-*,SupportsTool 查的是
    具体能力名而非 cmdrun。声明 cmdrun 是对的。
  - 「status/deviceinfo 服务端不认」也是错的。二者是元信息通道而非设备
    工具:status 是心跳上报(registry.go:831),deviceinfo 的实现
    (device.go:338)直接回显 meta.Caps 原始值、不经 deviceSupportsTool。
    判据改为区分 capabilityTools(可裁剪能力)与 metaCaps(元信息通道)。

## 门禁(cmd/gui/device-align.test.mjs)

从 registry.go / protocol.go / main.js 三方**源码文本**提取,不抄逻辑
重写 —— 同 endpoint-align 路子。9 条判据覆盖:cap 双向识别、capability-
> 实现的一致性、protocol.go 消息类型落点、多处 hello 的 caps 一致性、
DLL 桩守卫。

变异测试验证非假红:撤掉服务端 omniparse ⇒ 第 3、5 条立刻转红;
只改第二处 caps ⇒ 第 9 条报「第 2 处起有 1 处不一致」。

## 验证

- node device-align.test.mjs ⇒ 11 条全绿
- gofmt -l registry.go ⇒ 干净
- go vet ./internal/plugins/remotedevice/ ⇒ 本包无告警

⚠ go test ./internal/plugins/remotedevice/ 未能跑通:internal/agent/api 的
cgo 构建失败(codec_cgo.go 静态断言 + C 符号解析)。已确认该失败在**未
改动的 main 上同样存在**,需先构建 csrc 静态库,是既有环境前置条件,
与本次改动无关。

顺带同步 cmd/gui/package-lock.json 版本号 1.0.0 → 1.4.0,与
cmd/gui/package.json 对齐。
2026-10-05 10:27:13 +08:00
b0d6f10522 feat: 设备桥共享库 + CLI全能力补齐 + GUI omniparse/computeruse 重构
- 抽取设备桥 WS 协议层为共享库 (internal/devicebridge/client/)
- CLI 补齐 11 项 caps 能力(screensee/screensue/speakeruse/camerasue/...)
- GUI 新增 omniparse 能力(Windows UIA 窗口解析)
- GUI computeruse 改用 koffi 直接调用 user32.dll,不再依赖 PowerShell C# 编译
- GUI computeruse JSON 解析兼容非标准格式 {x:500,y:300}
- 新增 mock-server 用于本地测试设备桥协议
- 新增 GUI DLL 桥接模块 (devicebridge_dll.js)
2026-08-23 20:17:38 +08:00
c36ac7e3a2 device gateway: remotedevice 插件(设备接入网关) + GUI/waiter 受控设备桥 + 设备页/授权开关/托盘/退出进托盘 + 白屏修复(惰性Tray) + deviceinfo 工具 2026-08-17 09:34:25 +08:00
f3579df6dc feat: Windows NSIS installer, embedded icons, GUI auto-launch backend
- Add package/installer.nsi (Full/Server/Client) and toolchain.nsi
- Embed icon.ico (rounded corners) into homed.exe/waiter.exe via .syso
- GUI auto-launches homed.exe from parent dir (Windows only)
- GUI fallback connections.json from app resource dir
- Add initconfig command for config.db seeding
- Replace waiter rawmode* with raw_{unix,windows,other}.go
- Fix .gitignore: /homed instead of homed, add login.json
- Update icon.svg with rounded rect, new mascot.svg
2026-07-19 23:46:16 +08:00
8d73c08977 feat: register embedding_model_path in ConfigRegistry instead of JSON config
- Add core.agent.embedding_model_path to seedDBValues and seedCoreDefs
- Wire cfgReg.GetString in main.go to AgentConfig.EmbeddingModelPath
- Follow existing core.agent.* ConfigRegistry pattern
2026-07-17 21:07:54 +08:00
41bd4cfb02 feat(gui): add electron-packager for app bundling 2026-07-17 12:56:31 +08:00
3a7136c4b8 feat: align GUI and CLI with WebUI - move GUI to cmd/gui/, add REPL+mgmt to waiter, enhance GUI features 2026-07-16 20:28:56 +08:00