feat(workbuddy): 默认全自动 VLM 执行与持续投屏 - #95
Merged
Merged
Conversation
Keep default device displays independent from ongoing screenshot-based control. The old per-action visibility checks and display callbacks repeatedly invalidated valid observations; sticky initial verification and regression tests now distinguish window closure from physical device disconnection. Add protocol 6, per-device abort generations, one-time human confirmation, stable reconnect identity, cancellable install/process cleanup, native packaging and independent CI. Hardware acceptance remains explicitly unverified; production DSH/Codex plugins are unchanged.
The old true executable fixture failed on Windows and returned no owned forward row even on Unix. Mock explicit ADB listing/removal results and assert exact commands plus failure retention on every platform.
The Windows failure recurred because the 20ms idle deadline raced the first socket handshake, before the retention fixture had a display. Establish the display first and delay connection beyond that deadline; the regression fails without this setup and passes with it. Align the legacy running-mirror fixture with hasMirrors as well.
Windows smoke reached both success assertions but failed cleanup because an auto-started daemon held the cached adb.exe. Run a foreground child on a private loopback port with a nonexistent USB selector and discovery disabled, then stop only that child before removing test files. Keep the smoke cleanup in the CI regression path.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
独立的 WorkBuddy OpenGUI MCP +
openguiSkill 本地候选实现。最新候选为 0.2.0 / broker protocol 7,加入原生生命周期 Hooks,实现已授权任务的自动续跑与收尾,删除插件逐动作确认流程。本 PR 包含完整
workbuddy-plugin/和此前新增的两个 WorkBuddy 专用工作流;本次追加提交只修改 WorkBuddy 插件。DSH/Codex 生产源码、配置、缓存和进程不动。不合并、不创建正式 Release、不提交市场。产品行为
自动化、恢复及隔离
decision: block反馈;最多十轮续跑。FinalStop/SessionEnd、取消信号和十分钟执行无活动租约收尾。状态轮询、投屏不续租。当前验证
最新提交
9f9f205(核心实现b650324),在独立 MR 工作树完成,未混入原工作区未提交内容:npm run check/npm run pack:release:121 tests / 21 files、TypeScript、macOS 原生辅助程序、11 工具契约、源码隔离和 ADB 校验通过。npm run smoke:packed:真实安装器的保留/备份/幂等/父目录软链接拒绝检查;最终 tarball 的全新隔离缓存和离线缓存 stdio、发现、ping、broker、只读设备查询通过。使用独立前台 ADB 和不存在的测试设备选择器,不获取真机。npm run test:native:合成子进程日志就绪、温和退出、有界强制清理通过。npm run test:browser:合成设备墙真实 Chromium 图片解码、更新和会话关闭后停止读取通过。不存在确认页测试路径,因为该功能已移除。新增回归覆盖建立后失效连接缓存、旧连接回调、首次可恢复失败续跑、Stop 上限、原生任务/Agent 隔离、停止与会话创建竞争、跨任务关窗拒绝、截图失败完成证据、多设备未知结果、租约以及已下发动作不重放。
独立安全/架构/并发/级联复核发现的问题已修正并重跑测试。直接核对 WorkBuddy 5.5.3 的 Stop 解析与派发条件;这是宿主契约检查,不代替桌面续跑验收。
首轮远端 Windows 并发 registry 测试暴露文件锁删除期间偶发 EPERM;补充有期限的共享冲突重试,扫描同类 scrcpy 安装锁并一并处理,不把 EPERM 当作删除其他锁的权限。两条模拟回归均完成失败→通过对照。
补充 legacy mirror handle 的 FinalStop 保留回归;已接受的显式投屏启动由 broker 生命周期持有,不因调用方回复结束或断开而失效。对应回归完成失败→通过对照。
最终本地候选 tarball SHA-256:
05e8e43717e7ab28b2cf293f48b79930b872552c42cf32933eb81b1022391141。已备份 WorkBuddy 配置并安装到新的不可变目录,保留旧包及恢复记录;旧 WorkBuddy OpenGUI 投屏/broker 已正常结束。桌面验收与未完成项
本轮实际重开 WorkBuddy 5.5.3,在桌面
/opengui菜单看到了新名称及新技能描述,并选中技能。之后 Mac 锁屏,原生 Computer Use 因物理输入保护暂停,未绕过系统锁屏。因此 0.2.0 的普通自然语言真机闭环、桌面自动续跑、用户停止、持续视频更新、最小化/关窗后的真机控制、MCP 回收后持续投屏与双真机均尚未完成本轮验收。此前 0.1.0 的单机滑动/关闭窗口/重连记录只作历史证据,不能视为本版本已通过。当前 WorkBuddy 已结束,解锁后可重新打开使用已安装候选。
真实发布、购买、删除不作为默认验收动作;只使用模拟测试。macOS 优先,Windows/Linux 不宣称具有 macOS 初次窗口验证能力;它们的打包启动由 CI 单独检查。当前提交 CI 以本 PR checks 的对应 SHA 为准。
release-readiness.json继续保持未验证,不据此发布。外部测试、桌面验收、CI、合并、正式 Release 和市场审核分别报告。