Files
Mujoco_WASM/docs/website-language-render-fix.md
chenlin 7519309a27
web-platform-ci / Standalone decision service (no cloud credentials) (push) Has been cancelled
web-platform-ci / TypeScript, lint, unit, build (push) Has been cancelled
web-platform-ci / Playwright E2E (push) Has been cancelled
lekiwi-compatibility / cpu-compatibility (push) Has been cancelled
fix: release v1.0.3 预设渲染与语言搬运监督修复
2026-09-24 17:02:10 +08:00

7.9 KiB
Raw Permalink Blame History

预设渲染与默认语言搬运修复(2026-09-24)

状态

已按用户授权同步发布前后端:20260924T081555Z-language-render-fix。 网站为 https://cadworld-sim.robotquan.com,上一版本 20260924T065821Z-language-v2。本次发布重启了模型服务,旧访客会话失效;没有修改服务器密钥或删除共享预算。部署时未创建 Git 提交/标签,随后按用户要求将源码、测试与文档归档为 v1.0.3,同步 npm 版本;版本归档不重复部署或付费推理。

发布验收

  • 发布前复验 TypeScript、675 项前端单测、51 项后端测试(48 通过、3 跳过)与网站构建。
  • 显式白名单发布包 86 个文件,远端逐文件 SHA-256 通过;锁定基础镜像离线构建,先在无网络/无密钥挂载的容器中验证后端导入与 v2 契约,再切换线上。
  • 新容器健康,OpenResty 配置检查/reload 通过;28 个线上静态文件与 manifest 一致,公网首页、主应用和 MuJoCoViewer 资源哈希匹配新包,运行容器内 Jev 源码哈希匹配本地修复。
  • 公网 Playwright 6/6 通过:预设/双相机、Python、会话与配置保护、允许/拒绝 iframe 来源及 CSRF。另在 RTX 5080、DPR=2 的真实浏览器检查前置/腕部双相机:绘图缓冲 1728×1912,CSS 与宿主均为 864×956,4×MSAA,无页面异常。
  • 密钥文件和预算 SQLite 的 inode、权限、UID/GID 保持不变;已批准 iframe 配置哈希不变。本次发布验收新增付费推理为 0;下文真实 API 成功结果来自发布前本地源码接真实模型,不冒充发布后的公网付费回合。

发布证据:build/website-deployment/language-render-release/,含基线、构建/发布日志、远端/公网哈希校验、6 项浏览器结果与高 DPI 双相机截图。

  • 发布包 SHA-256:c2fa2e5dfea8b2fa60f2ee757d94ff32f4ead1a6e8f77cfa3cabfa68141a9501
  • 公网首页 SHA-256:f3af1b1b42e73ad093e00cce356617e5efa2da3fda9b7a29b8966a26b0cdbcd1

必要时前后端成对回滚到上一版本;旧包早于 iframe 热更新,回滚后须恢复本次保存的实际线上配置:

bash /opt/cadworld-sim/releases/20260924T065821Z-language-v2/deploy/publish.sh \
  20260924T065821Z-language-v2
cp /opt/cadworld-sim/backups/20260924T081555Z-language-render-fix/openresty.conf \
  /opt/1panel/apps/openresty/openresty/conf/conf.d/cadworld-sim.robotquan.com.conf
docker exec 1Panel-openresty-m72w nginx -t && \
  docker exec 1Panel-openresty-m72w nginx -s reload

本次未执行回滚演练;旧版本及实际线上配置备份均保留,不得删除 secrets/budget。

定位与修改

  • RTX 5080 实际浏览器重现腕部画面的块状阴影。此前使用默认 512² 阴影贴图及固定阴影范围,且 DataTexture 默认最近邻过滤。现为 2048²、PCFSoft、按场景中心/尺度适配阴影视锥和偏移、纹理 mipmap/各向异性过滤;GPU 像素比 1.5–2,软件 WebGL 保留原预算。不减面,不改变相机安装、接触或物理参数。
  • renderer.setSize(..., false) 未设置 CSS 尺寸,DPR>1 时画布实际在页面上变大并被裁切,腕部视口也丢失高 DPI 收益。改为逻辑 CSS 尺寸与绘图缓冲分离,双相机继续共用同一画布/布局槽位。
  • 公网默认指令 API 正常,但在 descend → close 收到 choice=stop,noul=allow,reason=none。原请求仅提供技能名作为 criteria,未说明 close 是闭爪、verify 建立抓持证据、放置时 secure 可能自然变为 false,也未明确当前/下一阶段关系。
  • 请求现补充具名技能含义和前置条件、候选下一技能、相邻正常边界的 completedSkill、仿真等待时冻结的时钟语义。初始入口、跳阶段和失败恢复不冒充已完成;不修改原始观测,不用模型评分替代本地物理验收。
  • Choice、名为 Noul/Score 的离散监督问题沿用现有 v2 契约。各问题独立判定,reason 不是可验证的模型解释,因此 none 不再直接展示为停止原因;显示“模型拒绝继续/无法确认安全,未提供具体原因”,同时终态保存否决响应。deny/uncertain/stop 仍然停止,不私自用概率最高项覆盖官方 choice。

真实 API 实测(经本次用户授权)

全部真实调用使用固定 deepseek-flash 与 typesafe/jev-1.13,未切换 mock、修改物理、自动重试或在同一任务内覆盖停止。每个测试会话最终销毁;密钥仅由后端从明确指定的文件读取,不进入浏览器、日志或证据。

阶段 环境 结果 尝试调用 LLM/Jev
线上复现 公网旧版、SwiftShader descend → close 被 Choice 停止 2/7
补充技能语义 本地源码、RTX 完整成功,搬运 0.728882 m 2/14
回归发现剩余歧义 本地源码、SwiftShader stow → approach 被 Choice 停止 2/3
补齐阶段完成上下文 本地源码、SwiftShader 已完成 carry,下一次调用 upstream_transport_error 安全停止 2/10
隔离硬件复验 本地源码、RTX 13 个技能全部通过,最终稳定放置成功 2/14

合计 10 次 LLM / 48 次 Jev 调用尝试,包含一次上游传输失败;不是完整费用账单。不把中间成功或最终单轮成功描述为多轮可靠性证明,模型与网络仍可能触发安全停止。

最终回合:state=succeeded、phase=settle、transported=0.7288822577190641 m、onGoalSupport=true、succeeded=true;/command 1 次、/plan 1 次、/decide 13 次,合计 2 LLM/14 Jev(含意图审核)。

主要本机证据(不入 Git):

  • build/website-deployment/language-repro/:公网原始请求、响应及终态。
  • build/website-deployment/render-hardware-{before,after}/before.png:同一初始场景硬件渲染对比。
  • build/website-deployment/language-fix-final-hardware/{receipts.json,result.json,after.png}:最终真实模型完整闭环与截图。
  • build/website-deployment/language-fix-live-{regression,transition}/:中间模型停止/网络失败,不覆盖失败记录。

非付费验证

  • TypeScript、定向 TS/Python lint、网站生产构建通过;保留既有 Pyodide 浏览器外部模块和大 chunk 提示。
  • Vitest 137 文件 / 675 项通过;决策服务 51 项(48 通过、3 个既有可选门禁跳过)。
  • 真实 WASM:连续 B 区→自由坐标搬运、锁开夹爪失败、目标边界 IK 标定通过;高 DPI 双相机尺寸回归通过,零推理。
  • 主工作台假上游连续两次搬运在并行运行两个重 CAD 软件渲染浏览器时超时,隔离复跑 1/1 通过。其余上述四项首轮通过,不能将首轮整个 suite 说成一次全绿。

可复验入口

现有完整运动实测保持不变;新增预设专项,显式选择后不会再跑完整运动实测:

CADWORLD_LIVE_API=1 CADWORLD_LIVE_PRESET=1 \
  npx playwright test -c web_platform/playwright.website-live.config.ts

默认访问已更新的公网网站,此命令会产生新的付费推理,发布验收未执行。开发服务已正确配置时,可显式加 CADWORLD_LIVE_URL=http://127.0.0.1:5173 测本地源码接真实模型。专项上限为 2 LLM/14 Jev,每轮零自动重试;普通 CI 不启用。

Sources