Skip to content

perf(node-agent-api): 会话提速与 VNC 第一阶段优化 - #10

Merged
tyonger-stack merged 3 commits into
mainfrom
codex/node-agent-vnc-phase-one
Oct 7, 2026
Merged

tyonger-stack merged 3 commits into
mainfrom
codex/node-agent-vnc-phase-one

Conversation

@tyonger-stack

@tyonger-stack tyonger-stack commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

网页会话提交和打开 VNC 会重复准备运行环境、加载查看器及建立连接。本次减少这些重复开销:合并状态与事件的原子写入,复用健康 Harness 线程,用常驻只读通道读取最新桌面归属,并为当前会话预热、保留一个独立授权的查看器。

查看器核心可构建为一个约 191KB 的资源;静态资源请求由实测的 83 个降为 1 个。服务器继续执行只读输入过滤、控制租约、权限撤销、容器/分配变化校验和原有持久化语义。当前查看器的重复观看可复用连接;接管和交还仍采用原来的重新授权流程。

验证:

  • 修复 Linux CI 中批处理 SSE 测试的网络调度问题:测试继续冻结批处理时钟,原生 HTTP 客户端独立完成 JSON/SSE 传输;全部持久化、顺序、去重及游标重连断言与五秒边界保持不变。适配器测试 52/52 通过。
  • 提交前 Node Agent API 回归 239/239,无失败或跳过。
  • 受控 Chromium 五组、35 个场景通过,包含真实已知画面像素、无额外授权/连接的复用、切换清理、旧消息隔离、预热保留控制及接管/交还。
  • 真实同一桌面十次新连接中位数 1.84s,最大 3.10s。样本少且非随机交错,尚不能宣布稳定达到 2–3 秒预算。
  • 类型检查通过。此前全量检查 1105 通过、129 原有条件跳过、1 失败;唯一失败为未改动的插件市场 D17 历史界面对拍:本机官方 App 更新后,固定的旧 chunk 名称不存在。该问题与 Grok Node API/VNC 通信无关,未通过删除或跳过测试隐藏。

本机已通过原 LaunchAgent 重载,原密钥及 13 个会话身份保持一致。没有更换模型、重建容器或重打包 App;近期多查看器池和同连接接管未实施。密钥、运行状态、实际会话内容、桌面图片和临时测量证据不进入提交。

构建与测量步骤见 tools/node-agent-api/README.md、tools/node-agent-api/bench/README.md;结果及限制见 docs/NODE_AGENT_API_PERFORMANCE.md、docs/NODE_AGENT_VNC_PHASE_ONE.md。

Tian added 3 commits October 7, 2026 13:19
批量原子保存状态与流式事件,复用健康 Harness 线程,并以常驻只读通道获取最新桌面归属。
为查看器隔离授权路径,预热当前已有桌面的只读连接并复用同一 iframe,提供单资源 noVNC 核心构建与真实首帧验证。

Constraint: 保留服务器只读过滤、控制租约、撤销、配额和持久化失败关闭语义
Validation: Node Agent API 239/239;受控 Chromium 五组与真实只读桌面验收通过
Known-failure: 全量检查中未改动的 D17 对拍引用旧官方 chunk 名称;未修改或跳过
Scope-risk: moderate
说明查看器构建、独立授权和只读预热,并保留首轮及第一阶段测量的样本数、失败与限制。
记录本机重载保留密钥和会话,以及不实施第二阶段的决定。

Constraint: 不将合成夹具耗时视为真实 Docker 首帧或稳定线上 p95
Confidence: high
批处理测试冻结全局 setTimeout 时,Linux CI 的 fetch 客户端会在 JSON/SSE 边界超时。改用原生 HTTP 请求和流迭代器,让真实网络传输独立于批处理虚拟时钟。

Constraint: 保留全部事件持久化、顺序、去重和游标重连断言及五秒边界
Validation: Codex 适配器 52/52、Node Agent API 239/239 通过
Scope-risk: narrow
@tyonger-stack
tyonger-stack merged commit 6086ab2 into main Oct 7, 2026
6 checks passed
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