Repository navigation
修复用户脚本热重载超时与状态确认 - #2916
修复用户脚本热重载超时与状态确认#2916130040167 wants to merge 3 commits into
Conversation
|
感谢!看过了:和 main 无冲突,Windows / macOS CI 通过,但 Linux 红: 另外几点合入前要对齐:
|
|
感谢修复,验证记录也很详细。目前有两件事需要处理:
这个 PR 规模比较大(+4.5k),合并前我们会在 macOS 上实际验一遍热重载。Linux 桌面端到端和新版拓展图标栏这两项,如果后续有条件补上验收,也欢迎在这里同步。 |
进程级转发 client 缓存最多 32 个、键里带运行时 id;在合并的 tests/all 里,上千个并行用例 各自起运行时往同一缓存里塞 client,会在两次请求之间把这个用例的 client 挤掉,多建一条连接, CI 上偶发 2≠1、3≠2(Linux 连续两次红在这里,#2916 也被它拖红)。按约定单独留在 tests/ 下。
|
这个 PR 目前有两个问题,暂时无法合并:
改动方向(owner 控制通道、operation ID/epoch、CDP 超时不重复执行、脚本 revision/generation、页面确认)看起来是对的,但请先 rebase 到最新 main、修掉 Linux 失败后我再复审。 |
|
感谢!冲突和 Linux 失败都已解决,三平台 CI 通过,描述里也补齐了默认路径、三个 Windows feature 的用途和内部路由的说明。 按之前说的,这个改动覆盖所有用户的显式脚本重载路径(现在 +8k),合并前我们要在 macOS 上实际验一遍热重载(修改、停用、启用,以及页面繁忙时的待确认状态)。这一轮还没来得及验,先保留,验完会在这里给结论。 |
|
main 这两天又合了一批(#2911 等),这里重新出现冲突了,方便的时候请 rebase 一下。macOS 实测热重载这一步仍在我这边,还没做完,所以先继续保持开启。 |
4d019e3 to
14085b1
Compare
14085b1 to
2d16886
Compare
|
感谢投入这么多精力排查热重载超时!这个 PR 体量比较大(8k+ 行),引入了一套新的 IPC 协调架构,还夹带了拓展删除、多开改写 config.toml、后端服务调用的
如果方便的话,欢迎拆成更小的 PR:先做 launcher 侧的重载串行化 + 操作 ID + 状态轮询,同时保留旧 CDP 路径作为回退;其他改动各自独立提交。 |
现象
页面线程繁忙时,用户脚本热重载可能在等待 CDP
Runtime.evaluate响应时超时。超时不会取消已经发送的页面操作,重复点击可能使多次操作交错;页面恢复或脚本实际加载尚未确认时,也不应显示成功。修复
默认行为和接口
本 PR 没有新增默认关闭开关:显式脚本重载默认使用新的 owner 协调路径。上述旧接口回退用于兼容明确不支持新协议的旧桥接,并不是新的默认关闭方案。这样可保留超时后的操作身份,但涉及所有显式重载调用,仍需结合跨平台验收评估。
/user-scripts/reload-operation-v1、/user-scripts/reload-no-page、/user-scripts/reload-status和/extensions/services/call-external是 Codex++ 内部桥接路由,未加入拓展公开路由白名单。Windows 新增的依赖 feature 用途:
Win32_Security:读取进程令牌中的用户信息,并为本地对象设置安全属性。Win32_Security_Authorization:转换用户 SID 和安全描述符,为当前用户创建受限访问控制。Win32_System_Pipes:获取命名管道服务端进程 ID,验证服务端用户身份。验证
2d168861的 Windows release 管理器构建通过;独立管理器 WebView 和 Tauri invoke 启动冒烟通过,受保护配置和正式进程身份未变化,测试进程及端口均已退出。4d019e30的 Windows release 管理器构建通过;独立管理器启动、WebView 和 Tauri invoke 冒烟通过,正式实例身份及受保护配置未变化,测试进程和端口均已退出。14085b17与该提交的文件树完全相同。2cd8e842:Windows release 管理器构建成功,launcher 重载协调 24 项测试通过。applied,加载和 cleanup 次数符合预期。unknown,页面恢复后返回applied,仅执行一次 cleanup 和一次加载。upstream_connection_reuse::reused_clients_are_scoped_to_their_runtime连接计数断言。上游已将该用例移到独立测试程序以避免并行测试挤占全局客户端缓存,该上游修复已包含在当前分支的合并基线中;当前提交的三平台 CI 结果以本 PR 的检查为准。4d019e30的 PR CI 中,Windows 和 macOS 通过,Linux 的agent_collaboration_queue::mcp_delegations_run_concurrently_up_to_the_limit_and_queue_the_rest失败:队列中的第三个任务在固定两秒的慢任务结束后才启动。该测试与队列实现和上游 main 相同,上游对应提交的 Linux CI 通过;调度时序可能影响该断言,但这次失败的原因尚未确定。随后在不改变文件树的14085b17上重新触发的 PR CI 三平台通过。2d168861的 PR CI 三平台通过:Linux Rust 测试、DEB 构建及安装校验;Windows 前端、类型检查和 Rust 测试;macOS 通用 DMG 构建及结构校验。此 PR 工作流按配置跳过 Windows 安装包构建。2cd8e842的 PR CI 三项通过:Linux Rust 测试、DEB 构建及安装校验;Windows 前端、类型检查和 Rust 测试;macOS 通用 DMG 构建及结构校验。此 PR 工作流按配置跳过 Windows 安装包构建。rebase 后的 CI 以当前 PR 检查为准。验收边界