Skip to content

feat: 接入 Windows 云网页自定义控制器与任务生命周期 - #395

Closed
SENyiAi wants to merge 2 commits into
MaaXYZ:mainfrom
SENyiAi:feat/cloud-webview-ci
Closed

SENyiAi wants to merge 2 commits into
MaaXYZ:mainfrom
SENyiAi:feat/cloud-webview-ci

Conversation

@SENyiAi

@SENyiAi SENyiAi commented Oct 23, 2026 •

Copy link
Copy Markdown

Windows 云终末地网页版需要把后台输入、游戏视频和任务生命周期接入 MXU。本改动添加 Windows Custom Controller,通过本机命名管道连接独立的 WebView2 宿主,并沿用 MaaFramework 的任务队列。

  • 从只读共享内存复制 1280×720 RGBA 帧,在 ACK 后编码 PNG;输入通过宿主调用 CDP,保持按下/释放、持续时间、鼠标按键与相对移动语义。
  • 管道事务有总截止时间、响应大小校验和取消处理;已发送的输入不因失败而重放。
  • 启动任务时领取宿主运行所有权,队列结束或停止后释放输入并关闭对应窗口;隔离旧回调,回滚未成功提交任务的 Agent,避免关闭后续运行。
  • 前端接入控制器选择和连接状态,防止连接中的重复点击。

验证:pnpm build、现有 8 项 Node 测试通过;Windows 下 4 项真实命名管道测试与 3 项任务完成跟踪测试通过;改动的 Rust 文件 rustfmt --check --config skip_children=true 通过。全仓 cargo fmt --check 仍报告未改动上游文件的换行格式差异,未做全仓格式化。

配套宿主及资源:MaaEnd/MaaEnd#6746 。截图测试集:MaaEnd/MaaEndTestset#20 。宿主位于项目的 agent/cloud-webview.exe,不包含在此仓库内。

当前先提交 Draft 供接口评审:接入仍按 Win32-CloudWeb 名称与宿主路径识别,包含 MaaEnd 专属假设,尚未形成通用自定义控制器发现/生命周期契约。不能直接作为任意 PI V2 项目的通用实现合入;需要两仓协调接口后再移除 Draft。

本轮 GUI 日常 10 项中 9 项成功,委托转交异常待核对:游戏已到奖励页,原任务仍等待确认页。补测自动采集 CommonRoute1 三轮,首轮岩壁旁恢复超时,后两轮成功;第三轮寻路中切换最大化、最小化、还原及窗口大小,六次操作焦点始终留在 GUI。所有队列结束均自动关闭云宿主,正确显示成功/失败并断开控制器。首轮失败仍保留,不宣称已解决;不在本 PR 改动游戏业务流程。自动抢委托送货、协议空间仅因测试账号当日已完成而未重复执行,并非不支持。

首轮 CI 暴露 Resource 导入误加 Windows 条件编译限制,导致 Linux/macOS 构建失败;已恢复跨平台导入并推送修复,本地 3 项任务跟踪测试及该文件 rustfmt 检查通过。新一轮 Linux/macOS 的 x86_64、aarch64 构建及 Windows aarch64 构建通过,Windows x86_64 仍在运行。

@SENyiAi SENyiAi closed this Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant