68 KiB
更新日志
本项目的重要变更记录在此文件中,版本标签使用 v主版本.次版本.修订版本 格式(历史标签使用大写 V)。
[未发布]
[1.0.5] - 2026-09-29
网站发布与安全精简
- 版本号与锁文件根包元数据同步为
1.0.5,不升级依赖;包含下述完整安全精简及网站导入选项清理。 - 网站已发布
20260929T014129Z-v1-0-5,上一版本20260928T035026Z-import-options保留为回滚目标;白名单发布包校验、离线构建、运行时契约预检、容器健康检查及 OpenResty 配置校验通过。前后端成对切换,访客会话重建,原服务器密钥 stat 与持久预算数据库 inode 保留。 - 发布前重新通过九项门禁/双构建:前端 156 文件/797 项,后端 166 通过/27 项既有 opt-in 跳过;只更新版本元数据,没有升级依赖。
- 公网非付费验收 14/14 通过(网站/iframe/导入/会话/Python/预设 8 项,内置机器人与双相机 6 项);28 个线上静态文件匹配发布清单,公网 HTML/主 JS 与本地构建逐字节一致。未调用付费模型、未启动真实训练。
- 发布证据:
build/website-deployment/v1.0.5/;本地门禁:build/code-simplification/release-v1.0.5/。
代码安全精简(2026-09-28)
最终交付汇总
全部 14 个计划阶段完成;基线为 7ebe9092ba29a6674d6f5c4153f31214dd6f2319。以下规模与限制记录截至精简计划验收时(当时未提交、打标签或部署),不含后续版本发布元数据和文档更新;发布结果见本版本条目。
宿主文件(web_platform/src/) |
基线行数 | 最终行数 | 宿主减少 |
|---|---|---|---|
app/App.tsx |
3272 | 1217 | 2055 |
simulation/SimulationSession.ts |
1417 | 1210 | 207 |
viewer/MuJoCoViewer.ts |
1391 | 1267 | 124 |
training/LocalTrainingPanel.tsx |
1178 | 807 | 371 |
| 合计 | 7258 | 4501 | 2757 |
- 迁移与新增边界:30 个新增生产模块,共 4897 行,包含迁移实现、导入、显式类型/端口、Hook 依赖与组合代码,不是净删除量。App 新增 16 个领域/界面 Hook、3 个组合组件和命令组件;项目清单辅助 1 个,Session 类型/采集模块 2 个,Viewer 几何/展示模块 2 个,训练表单/展示模块 5 个。
- 实际清理:删除 4 个已证实无用声明,相关生产代码净减 23 行;另将 3 个内部辅助函数取消 export。数值算法、公开兼容类型、协议/Golden 和真实扩展入口未删。移除 App 已无用途的全文件依赖检查豁免,没有新增豁免。
- 净变化口径:计入 Git 跟踪变更和本次未跟踪源码/测试;生产代码净增 2117 行(不是净删 2757 行),测试净增 3096 行(19 个新测试文件 3093 行,既有 E2E 追加 3 行断言)。文档净增 137 行,全仓净增 5350 行;忽略目录
plans/、build/及生成产物不计入。逐文件数据见build/code-simplification/final-size-report.json。 - 模块边界:资源/ref 单一所有者;地图交互与创作文件事务分开,避免万能编辑 Hook;没有新全局 store。App 保留显式领域接口和布局,最终 1217 行高于参考目标,未为行数强行压缩或引入共享万能 context。
- 验证:前端 156 文件/797 项(较基线新增 19 文件/117 项),后端 166 项通过;typecheck、TS/Python lint、双构建、契约哈希及 diff 检查通过。生产运行时依赖图 239 模块/540 条边,无循环。Session 101 / Viewer 131 个非提取成员逐字未变,物理时钟/控制权/几何资源释放保留原实现。
- 浏览器验收:计划 63 项全部通过:本地 App/布局 41,网站 5,内置机器人生产构建/开发 StrictMode 各 6,语言控制 5。双相机的既有姿态阈值未变,新增切换/隐藏后时间仍为 0.000 s 的断言。另用独立本地浏览器专项确认工具 tab 与侧栏隐藏/显示保留训练表单状态且没有 API/训练连接请求。
- 模式隔离:网站无训练/外控入口及 tuning HTML/chunk,本地均保留;两者保留 Python、ONNX、语言控制、导入和相机功能。业务 MODE 判断仍只在
websiteConfig.ts,Vite 构建判断未改,无新增模式框架。 - 跳过/限制:训练服务 24 项既有 opt-in 跳过(4 项真实环境/GPU smoke 或 rollout、10 项需显式预训练源、9 项真实单文件探针、1 项 CPU runner);决策服务 3 项原生 Codex opt-in 跳过。未启用上述开关、未访问生产/付费上游、未启动真实训练;不把本次结构验收当成所有物理任务收敛证明。浏览器仅用进程级文件轮询绕过系统 inotify 额度,未修改系统限制;保留既有第三方 externalization/大 chunk 构建警告,最终前端 lint 无警告。
- 证据:最终门禁
build/code-simplification/final-verification-verified/;契约/成员/依赖核验final-verification/;完整浏览器日志与专项截图final-browser/。原始失败与修正后的日志均保留,未放宽门禁、协议或既有数值容差。
分阶段记录
-
完成步骤 13:最终九项门禁/双构建通过,前端 156 文件/797 项,后端 166 通过/27 既有 opt-in 跳过;计划浏览器验收 63 项全部通过(本地 41、网站 5、内置生产/开发各 6、语言 5)。内置相机额外断言切换/隐藏后时间仍为 0.000 s,两套均复验通过;既有相机数值容差未变。12 份契约哈希一致,Session 101 / Viewer 131 个非提取成员逐字未变,239 个生产模块的运行时依赖图无循环。保留构建既有第三方 externalization/大 chunk 警告,未启用真实 GPU/训练/上传/Codex opt-in。证据:
final-verification-verified/、final-verification/、final-browser/。 -
完成步骤 12:新增 4 项真实 MODE 配置矩阵测试,验证网站禁用训练/外控但保留 Python、ONNX、语言控制、URDF profile/相机增强且不自动联网。定向 17 项、全前端 156 文件/797 项及全部门禁通过;后端 166 通过/27 既有跳过。产物断言确认本地有 index/tuning HTML 与调参 chunk,网站只有 index 且无调参 chunk;业务 MODE 判断仍仅
websiteConfig.ts,配置/Vite 未修改。证据:mode-matrix/。 -
完成步骤 11:
WorkbenchTools.tsx稳定组合原 lazy 面板及 agent/外控节点,访问历史仍由 App 持有,未引入新 store。定向 45 项、全前端 155 文件/793 项及九项门禁/双构建通过,后端 166 通过/27 既有跳过;真实 WASM 主工作台预设加载、语言目标和连续自由坐标抓放通过(仅回环假上游)。App 当前 1217 行;保留显式共享 ref/领域端口和布局,不为参考行数目标冒险压缩。证据:app-workbench-tools/。 -
提取
useAgentScene.ts的预设加载、身份桥接与草稿失效 effect;失效 effect 单独在原位置调用,保持 Viewer effect 次序和取消/确认逻辑。定向 51 项、全前端 155 文件/793 项及全部门禁通过,后端 166 通过/27 既有跳过。现有工具挂载/agent 不随首个 snapshot 重挂载表征亦通过,可作为工具组合提取基线。证据:app-agent-scene/。 -
agent 提取前补充取消/机器人身份、拒绝工程替换不下载、任务会话身份及配置重置 3 项表征;定向 51 项、全前端 155 文件/793 项及九项门禁/双构建通过,后端 166 通过/27 既有跳过。证据:
app-agent-characterization/。 -
提取
usePolicyWorkflow.ts:ONNX/移动策略、训练场景导出与导航重置桥接;保留双锁、SHA-256/大小校验、会话身份检查、暂停恢复及成功后缓存顺序。定向 38 项、全前端 155 文件/790 项及九项门禁/双构建通过,后端 166 通过/27 既有跳过。证据:app-policy-workflow/。 -
策略桥接提取前新增成功后缓存、加载锁/暂停恢复、扩展名/64 MiB 上限 3 项表征。测试使用有效的无部署元数据 ModelProto 字段及假运行时,不修改协议 fixture;定向 36 项、全前端 155 文件/790 项和全部门禁通过,后端 166 通过/27 既有跳过。证据:
app-policy-characterization-verified/。 -
提取
usePythonController.ts:脚本缓存/校验、运行时进度、状态互通及报错上下文不变。定向 36 项、全前端 155 文件/787 项及全部九项门禁/双构建通过,后端 166 通过/27 既有跳过;真实 WASM Python 导入启用、持续步进/重载 2 项通过。证据:app-python-controller/。 -
Python 桥接提取前补充失败缓存/路径重试/启用移除及缺失路径/扩展名上下文 2 项测试;定向 27 项、全前端 155 文件/787 项及九项门禁/双构建通过,后端 166 通过/27 既有跳过。证据:
app-python-characterization/。 -
提取
useSimulationActions.ts,手动/遥测操作继续委托原 adapter,agent 重置仍按会话身份转交预设加载,不新增时钟。定向 38 项、全前端 155 文件/785 项和九项门禁/双构建通过;后端 166 通过/27 既有跳过。证据:app-simulation-actions/。 -
手动/遥测提取前新增 3 项表征:暂停/单步/重置/速度次序、参数拒绝不刷新源码、遥测配置/录制操作;完善测试 Props 与参数后,定向 34 项、全前端 155 文件/785 项及九项门禁/双构建通过,后端 166 通过/27 既有跳过。证据:
app-actions-characterization-verified/。 -
提取
useMapAuthoring.ts的场景文件创建、地图转换/导出与编辑提交入口;5 个函数经语法树词法叶节点比较,在 ref/action 别名、动态导入路径及格式归一化后与 HEAD 相同。移除未使用的 Viewer 参数;稳定 setter 单独列为 Hook 依赖,消除新增依赖警告,并移除 App 已无用途的整文件exhaustive-deps豁免。定向 37 项、全前端 155 文件/782 项及九项门禁/双构建通过(前端 lint 无警告);后端 166 项通过/27 项既有跳过;创建拖放、重力承载、只读转换、V3 编辑、首次放弃 5 项真实 WASM 测试通过。App 1826 → 1595 行;证据:build/code-simplification/app-map-authoring-verified/。步骤 11 的控制/桥接与工具组合、步骤 12–14 仍未完成。 -
提取
useMapEditor.ts的交互/预览绑定、选择、放置模式、草稿回调及高度查询;四组 effect 保留原次序与身份检查,15 个迁移动作与 HEAD 的参数/函数体在 ref/格式归一化后相同。定向 37 项、全前端 155 文件/782 项及九项门禁/双构建通过;后端 166 项通过/27 项既有跳过;资产创建拖放、属性联动、连续地形拖放、V3 编辑及只读地图转换 5 项真实 WASM 测试通过。App 2018 → 1826 行;证据:build/code-simplification/app-map-editor/。创作文件事务另行提取,避免形成万能编辑 Hook。 -
地图编辑交互提取前新增 3 项表征:待绑定资产/选择只转交一次、草稿复制及加载锁保护、视口最新实例变换与卸载解绑。补齐测试中的 ViewerSelection 类型后,定向 28 项、全前端 155 文件/782 项及全部门禁通过;后端 166 项通过/27 项既有跳过。证据:
build/code-simplification/app-map-editor-characterization-verified/。 -
提取
useMapScene.ts的实例放置、共享预览、提交/放弃事务;复用原草稿/清单领域函数,不向编辑 Hook 反向依赖。18 个迁移函数中 17 个与 HEAD 的参数/函数体在 ref 命名及格式归一化后相同,另一读取函数沿用步骤 9 已验证的清单辅助。定向 36 项、全前端 155 文件/779 项及九项门禁/双构建通过;后端 166 项通过/27 项既有跳过;4 项真实 WASM 地图回滚/编辑测试通过。App 2324 → 2018 行;证据:build/code-simplification/app-map-scene/。 -
步骤 11 地图事务提取前新增 5 项 App 表征:首次场景放弃的 provisional 文件清理、失败清单恢复/显式重试、提交期间新草稿及历史保留、未引用 provisional 剔除、原生 URDF 拒绝地图注入。定向 27 项、全前端 155 文件/779 项及九项门禁/双构建通过,后端 166 项通过/27 项既有跳过。证据:
build/code-simplification/app-map-scene-characterization/。 -
完成步骤 10:提取
useWorkspaceDrop.ts,保留手势内同步获取文件句柄、共享导入锁、地图库优先、世界落点和错误清理;新增 6 项嵌套拖放、提示及三类地图库委托测试。定向 29 项、导入器补充定向 16 项、全前端 155 文件/774 项及全部九项门禁/双构建通过;后端 166 项通过/27 项既有跳过,契约哈希和git diff --check通过。证据:build/code-simplification/app-workspace-drop/。App 累计 3272 → 2324 行,四个宿主合计 7258 → 5608 行;这是迁移缩减,不是全仓净删除。步骤 11–14 和最终完整浏览器验收仍未完成,未提交版本。 -
拖放提取前新增 3 项表征:手势内同步扫描/重复锁、扫描失败恢复、地图库优先和世界落点;URDF 回退断言等待实际异步 UI 完成,而不只等待较早的
loading=false。定向 14 项、全前端 154 文件/768 项及全部九项门禁/双构建通过;后端 166 项通过/27 项既有跳过。证据:build/code-simplification/app-drop-characterization-verified/;原失败日志保留,未放宽门禁或数值容差。 -
提取
useProjectImport.ts:文件选择、导入进度、URL 下载/取消、共享锁、工程关闭与资源清理;不新建共享状态容器。定向 38 项、全前端 154 文件/765 项及全部九项门禁/双构建通过,后端 166 项通过/27 项既有跳过;开发态 StrictMode 内置机器人 URL 自动导入/刷新及双相机真实 WASM 验证通过。证据:build/code-simplification/app-project-import/。 -
工程导入提取前新增 4 项 App 表征:StrictMode URL 单次下载/手动锁竞争、卸载后迟到下载、下载失败后手动恢复及关闭工程清理。定向 29 项、全前端 154 文件/765 项及全部九项门禁/双构建通过,后端 166 项通过/27 项既有跳过。证据:
build/code-simplification/app-import-characterization/。 -
提取
useModelLoading.ts的模型替换事务、URDF 确认/跳过、profile/base 回退;ref 单一所有权、锁和 attach/rollback/release 次序不变。新增 4 项取消/外控失败回归,清理迁移后未使用导入;定向 22 项、全前端 154 文件/761 项及全部九项门禁/双构建通过,后端 166 项通过/27 项既有跳过;真实 WASM 源码重载、URDF 增强、失败保留会话另有 3 项通过。证据:build/code-simplification/app-model-loading-verified/。 -
原 App 加载事务新增 7 项表征:成功顺序、失败保留入口/暂停态/源码、attach 回滚、视觉警告非致命、加载锁、applied/草稿隔离、URDF 确认回退与跳过。修正测试替身自动 mock 的原型方法覆盖及类型装配后,定向 16 项、全前端 153 文件/757 项和全部九项门禁/双构建通过;后端 166 项通过/27 项既有跳过。证据:
build/code-simplification/app-loading-characterization/。 -
Viewer 设置同步收拢至生命周期模块,按原顺序保留“显示设置 → 场景/agent effect → 相机/主题”两个设置组;不增加时钟。新增次序/吸附回归,定向 10 项、全前端 152 文件/750 项及全部九项门禁/双构建通过,后端 166 项通过/27 项既有跳过。证据:
build/code-simplification/app-viewer-settings/。 -
提取
useViewerLifecycle.ts的异步初始化/初始设置与资源解绑,保留 active 取消、viewerReady 身份检查、retired adapter 释放/替换顺序和首轮动作闭包;帧/选择回调及后续设置 effect 暂留 App,避免改变业务 effect 顺序。新增 2 项迟到初始化取消/构造失败表征;定向 13 项、全前端 151 文件/749 项及全部门禁/双构建通过;后端 166 项通过、27 项既有跳过。开发态 StrictMode URL 导入/刷新和真实 WASM 双相机位置/朝向验收另有 1 项通过。证据:build/code-simplification/app-viewer-initialization/。 -
提取
useMapWorkspaceState.ts的地图状态/ref 与草稿派生视图,保留事务显式同步 ref 的时机,不将 UI setter 自动应用到物理基线。新增 4 项默认值/基线分离/计数/跨实例选择测试;定向 19 项、全前端 151 文件/747 项及全部门禁/双构建通过;后端 166 项通过、27 项既有跳过。真实 WASM 的首次场景放弃、共享草稿/回滚、失败保留会话另有 3 项通过(测试进程使用文件轮询)。证据:build/code-simplification/app-map-state/。 -
阶段 2.5 补充真实 WASM 浏览器验收:平台骨架/单模型、源码重载、未保存确认、URDF 驱动器/摄像头及无效模型诊断共 5 项通过。首次因系统 inotify 监听额度
ENOSPC无法启动;仅为测试进程设置CHOKIDAR_USEPOLLING=1 CHOKIDAR_INTERVAL=1000后成功,未改系统参数或测试标准。证据:build/code-simplification/app-low-risk-browser-polling/;原始环境失败日志保留。 -
提取
useProjectSource.ts,保留 profile/缓存保存/通知/加载顺序、URDF 与 MJCF/ZIP 导出和不同错误上下文;共享清单 ref 不另建副本。新增 3 项回归;按 lint 提示显式命名manifestRef,无新增规则豁免。阶段 2.5 完成,App.tsx暂由 3272 降至 2946 行;定向 17 项、全前端 150 文件/743 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/app-project-source-verified/。 -
提取
project/workspaceManifest.ts的缓存路径、URDF link 名称、provisional 文件剔除与地图 authoring 读取,沿用现有地图解析器、不缓存可变文档。新增 4 项回归;定向 18 项、全前端 149 文件/740 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-manifest-helpers/。 -
提取
WorkbenchDialogs.tsx,仅组合既有根级弹窗及命令面板;源码编辑器继续 lazy,URDF 按路径重置,入口选择仍留在原视口内。复用原组件 Props,未新建全局状态;定向 19 项、全前端 148 文件/736 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-dialogs/。 -
提取
WorkspaceNotices.tsx组合现有错误恢复/Toast,保留错误优先级、按诊断时间重置展开,以及“仅携带路径的模型编译错误可重试”。新增 2 项回归;定向 13 项、全前端 148 文件/736 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-notices/。 -
提取
useWorkbenchFeedback.ts,编译/导入/普通通知共享一个稳定发布入口,消除重复 ID、20 条封顶与 Toast 插入;类别、文本、时间及诊断构造不变。新增 3 项通知/诊断测试;定向 14 项、全前端 147 文件/734 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-feedback/。 -
将命令目录提取至
workbenchCommands.tsx,以无状态WorkbenchCommandPalette组合原面板;命令 ID/标签/禁用规则不变。最初纯工厂调用触发 React refs/purity 检查,改用明确组件 Props 边界,不增加 lint 豁免;新增 3 项目录/状态/回调测试,证明渲染不执行动作。定向 14 项、全前端 146 文件/731 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-commands-verified/。 -
提取
useWorkbenchChrome.ts的界面状态、全屏与布局动作,组合已有主题/侧栏 Hook;显示偏好持久化仍在原 Viewer 同步 effect,不改变物理资源所有权。新增 3 项布局/工具/全屏清理测试;定向 17 项、全前端 145 文件/728 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-chrome/。 -
提取
useWorkbenchShortcuts.ts,复用keyboard.ts;不改变逐次渲染监听、大小写、repeat、输入/模态规则。新增 3 项与现有地图 capture 快捷键的组合测试,确认 R 缩放不触发物理重置、动作更新和卸载清理。定向 21 项、全前端 144 文件/725 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/app-shortcuts/。 -
App 原实现新增 7 项编排表征:StrictMode 有效 Viewer/卸载、快捷键新闭包与输入/模态优先级、显示偏好损坏回退、工具/agent 挂载稳定及禁止自动网络请求。修正测试替身的缺失方法,并改用自动 mock 避开 Vitest 手动 factory 的并发 import 限制;未修改 App 实现,初次失败日志保留。定向 7 项、全前端 143 文件/722 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:
build/code-simplification/app-characterization-final/。 -
提取
meshPresentation.ts的矩阵、材质与高亮更新,保留碰撞颜色/深度/透明规则、粗糙度及关节高亮优先级。阶段 2.4 完成:MuJoCoViewer.ts1391 → 1267 行;AST 复核 131 个非提取成员与 HEAD 原文一致,缓存/释放、渲染调度、DPR、阴影与传感器相机不变。定向 12 项、全前端 142 文件/715 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/viewer-mesh-presentation/。 -
提取
geometryFactory.ts,复用现有 heightfield/mesh-id helper,保留胶囊算法、细分与 typed-array 批量复制;几何/纹理缓存和释放继续归 Viewer 所有。定向 10 项、全前端 142 文件/715 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/viewer-geometry-factory/。 -
Viewer 提取前新增 7 项表征,锁定 primitive/胶囊细分、mesh/heightfield 数组、矩阵排列、凸包 dataid、碰撞高亮及共享/动态资源释放。定向 12 项、全前端 142 文件/715 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:
build/code-simplification/viewer-mesh-characterization/。 -
Session 快照 actuator/joint/body 只读采集提取至
snapshotReaders.ts,保留数值表达式、数组顺序、单位、默认名和句柄 finally 清理。阶段 2.3 完成:SimulationSession.ts1417 → 1210 行;AST 逐方法复核确认另外 69 个方法/构造器/getter 与 HEAD 原文一致。定向 22 项、全前端 141 文件/708 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/simulation-snapshot-readers/。 -
在原
SimulationSession.snapshot()上新增 7 项表征,覆盖四种 actuator 类型与阈值、多通道、限位显示、控制权只读、数组复制、不步进/不写物理数组以及嵌套异常释放句柄。定向 18 项、全前端 141 文件/708 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/simulation-snapshot-characterization/。 -
将 Session 公共类型原样迁移至
simulationTypes.ts,通过原模块 type re-export 保持所有既有导入路径;关节限位内部类型命名复用,未改任何仿真方法。定向 22 项、全前端 140 文件/701 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/simulation-types/。 -
训练任务默认值集中至
trainingForm.ts,新增 3 项 Go2/LeKiwi 默认参数回归,保留任务切换写入次序。阶段 2.2 完成:LocalTrainingPanel.tsx从 1178 行降至 807 行(迁移/拆分 371 行,非净删除);5 个辅助/展示模块共 619 行,连接 epoch、1500ms 轮询和协议生命周期仍在原面板。定向 33 项、全前端 140 文件/701 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/training-task-defaults/。 -
提取
TrainingJobSection.tsx:作业状态、日志、评估和成果展示与父级异步操作分离,继续训练/新建的状态写入仍由原面板持有。新增 3 项操作边界测试;定向 24 项、全前端 140 文件/698 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/training-job-section/。 -
提取
TrainingTaskFields.tsx的受控地形/传感器与移动任务配置区,沿用已有训练类型和父组件状态,保留折叠后输入、默认范围与任务切换。定向 21 项、全前端 139 文件/695 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/training-task-fields/。 -
原样提取训练
Field/NumberField至TrainingFields.tsx,保留输入 Number 转换、范围/步长、标签与 Tooltip。定向 21 项、全前端 139 文件/695 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/training-fields/。 -
提取
trainingForm.ts的 GPU 解析、参数校验和请求构造,保留可选字段、校验顺序、移动任务 W&B/sourceJobId 行为及场景编译/上传顺序。新增 9 项纯函数测试;定向 30 项、全前端 139 文件/695 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/training-form/。 -
提取训练展示辅助至
trainingPresentation.ts,原样保留活动状态、作业中文标签及地形/参数标签。定向 21 项、全前端 138 文件/686 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:build/code-simplification/training-presentation/。 -
训练面板拆分前新增 6 项请求表征,锁定完整 Flat 请求、CPU 空 GPU 列表、GPU 分隔/重复编号及非法输入不提交行为;原实现未改。修正新测试的 Testing Library 选项类型后,定向 21 项、全前端 138 文件/686 项和全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过。证据:
build/code-simplification/training-characterization-verified/(首次失败日志另保留)。 -
原子收窄
controller/PythonControllerRuntime.ts的getPythonRuntime导出面,保留 Pyodide 初始化与控制调度。定向 13 项、前端 680 项及全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。阶段 2.1 六个文件全部独立验收,生产代码净减 23 行。证据:build/code-simplification/cleanup-python-loader-export/。 -
原子收窄
simulation/PhysicsAdapter.ts的getMujocoModule导出面,WASM 初始化缓存、失败重试及加载事务不变。定向 8 项、前端 680 项及全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/cleanup-mujoco-loader-export/。 -
原子收窄
project/cachedFiles.ts的isEditableSource导出面,保留其文件内调用和实现。定向 6 项、前端 680 项及全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/cleanup-cached-files-export/。 -
原子清理
tuning/domain.ts:删除无引用的latestCompletedTrial及专属类型导入,奖励参数、目标权重与状态目录不变。定向 6 项、前端 680 项及全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/cleanup-tuning-domain/。 -
原子清理
tuning/ScalarRingBuffer.ts:移除无调用的snapshotSeries、专属BufferedMetricSeries及多余类型导入,不改环形缓冲实现。定向 6 项、前端 680 项及全部前后端门禁/双构建通过;后端 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/cleanup-scalar-ring-buffer/。 -
原子清理
app/editorSelection.ts:删除无引用的isMapEditorSelection,保留全部选择类型。定向 8 项、前端 680 项及全部前后端门禁/双构建通过;后端仍为 166 项通过、27 项既有跳过,契约哈希不变。证据:build/code-simplification/cleanup-editor-selection/。 -
完成四个核心大文件的只读审查与分阶段计划审批。重构前工作区干净,12 个契约文件与 HEAD 完全一致;未修改物理算法、控制频率、Schema 或 Golden。
-
原始基线全部通过:typecheck、前端 lint、137 文件/680 项前端单测、本地/网站双构建、Python lint;控制桥接 16 项、决策服务 48 项、训练服务 102 项通过,另有决策服务 3 项及训练服务 24 项既有可选/环境测试跳过。构建第三方 externalization/大型 chunk 和 Python 弃用警告保留。日志与源码/契约 SHA-256 位于
build/code-simplification/baseline-20260928T055602Z/;未部署或调用付费模型。
网站导入选项清理(2026-09-28)
- 网站版 URDF/ZIP 导入弹窗移除 LeKiwi v1、LeKiwi Bundle 的“移动操作训练场景”选项及训练提示;不沿用已移除的初始训练选择。保留通用转换、普通 LeKiwi profile、语言控制与本地版训练功能。
- 新增网站/本地边界单测及 URDF/ZIP 真实 WASM 导入回归。TypeScript、定向 ESLint/格式检查、137 文件/680 项前端单测、48 项后端测试(另有 3 项既有可选门禁跳过)、网站/本地双构建和网站假上游回归 5/5 通过。
- 已发布网站
20260928T035026Z-import-options,回滚版本为20260924T081555Z-language-render-fix;公网非付费检查 8/8 通过,HTML/主 JS 与本次构建逐字节一致。沿用既有后端与代理配置,密钥文件、持久预算目录及 iframe 白名单不变;本次无付费模型调用。发布证据位于build/website-deployment/import-options-20260928/。
[1.0.3] - 2026-09-24
预设场景清晰度与语言搬运监督修复
-
将已上线的预设渲染与语言搬运修复归档为
v1.0.3,同步 npm 包与锁文件版本;提交仅包含源码、测试及文档,不纳入密钥、运行预算、构建产物和测试日志。 -
提交前复验:TypeScript、137 文件/675 项前端单测、48 项后端测试(另有 3 项既有可选门禁跳过)、定向 TS/Python lint 和变更文件格式检查通过;本次归档不重复部署或付费推理。
-
主视口和腕部/前置相机采用 2048² 场景适配柔和阴影、纹理 mipmap/各向异性过滤及有上限的 GPU 超采样;修复 DPR 同时放大 CSS 画布导致裁切、抵消子视口清晰度的问题。保留全部 CAD 网格、物理参数和软件 WebGL 的控制延迟预算。
-
Jev 请求补充下一技能含义、阶段前置条件、相邻技能完成上下文和等待期间物理冻结语义,避免将抓取前空爪、抬升验证前未 secure、放置后恢复支撑误当故障。保留官方 choice 与 deny/uncertain/stop,不重排概率、不强行放行。Noul/Choice 停止显示中文原因兜底,终态保留被否决的决策以便诊断。
-
新增默认预设真实 API 专项入口(显式授权、最多 2 次 LLM/14 次 Jev、无自动重试)、高 DPI 双相机及监督语义回归。675 项前端单测通过;硬件浏览器真实 DeepSeek+Jev 完成默认 B 区搬运 0.728882 m。中途模型误停、上游网络中断及软件渲染并行测试超时如实保留,非稳定性/多种子证明;详见
docs/website-language-render-fix.md。 -
用户授权后同步发布网站前后端为
20260924T081555Z-language-render-fix,上一版20260924T065821Z-language-v2保留。发布包/线上静态资源及运行时 Jev 源码哈希一致、容器健康;公网非付费检查 6/6、RTX 高 DPI 双相机验证通过。密钥、持久预算和 iframe 配置保持不变;本次发布验证没有新增付费推理,随后按用户要求归档为 Git 版本v1.0.3。
[1.0.2] - 2026-09-24
LeKiwi 语言控制、内置机器人与网站嵌入
-
将 v1.0.1 之后的网站托管模型、自然语言动作/搬运、内置 LeKiwi 与双摄像头、部署与指定域名 iframe 嵌入变更归档为
v1.0.2,同步 npm 包与锁文件版本。正式内置机器人保留来源与许可证,不纳入密钥、个人模型、构建产物或测试日志;真实 v2 云模型抓放仍待单独授权验收。 -
本次提交前复验:TypeScript 检查、17 文件/120 项定向前端测试通过;决策服务 44 项通过、3 项可选门禁跳过。已通过的公网应用及 iframe 检查各 3/3,本次不重复付费调用或部署。提交清单检查排除运行凭据与产物,内置 ZIP 的 SHA-256/许可证核验通过。
-
网站 iframe 来源白名单新增
https://cadworld.robotquan.com:移除冲突的X-Frame-Options: DENY,CSPframe-ancestors仅允许本站及该来源,不使用通配符;保持既有 Strict/HttpOnly/Secure Cookie、Origin/CSRF 校验和 CORS 限制。已热更新线上配置,后端未重启;公网 iframe 正向/拒绝与会话验证 3/3 通过,不调用付费推理。同事实际页面尚未接入验收,示例与配置备份见docs/website-embedding.md。 -
网站已发布
20260924T065821Z-language-v2,前后端同步上线,回滚版本为20260924T052730Z-dual-camera。打包白名单与 Docker 镜像补齐 v2 任务/场景契约;发布脚本新增无网络、无密钥挂载的导入/目标解析预检,失败不切换线上。公网非付费检查 3/3 通过:预设加载、文字指令/本地停止、双相机、Python 与会话/配置保护正常;线上 HTML 哈希匹配构建产物。既有服务器密钥/持久预算身份不变,验证未发起付费模型调用;真实 v2 推理待验收。详见docs/lekiwi-language-v2-release.md。 -
LeKiwi 语言控制 v2:本地/网站统一极简文字面板,支持显式预设加载、A/B 命名目标及支撑区域内的 XY/XYZ 世界坐标。执行不重置方块、不移动台面;保留移动/转向、地图/RL 和双相机,模型配置改由同源后端托管。
-
控制分层为 LLM 意图/计划 → Jev Choice/Noul/Score → 参数化 IK/接近/抓放执行 → 原 MuJoCo 伺服。增加跨阶段统一任务预算、严格版本/目标/单位验证、支撑面绑定、净空与接触保护;评分仅供诊断,物理成功与硬安全不可由模型覆盖。保留旧 v1 基线与 API 夹具。
-
精简验收:主工作台真实 WASM+假 HTTP 上游连续搬到 B 区及自由坐标成功,有效搬运 0.728882/0.241201 m、最终误差 7.54/8.92 mm;scratch 标定、真实夹爪锁开失败、旧 v1 种子0、网站移动/转向/停止通过。实现阶段定向测试及双构建通过,未跑全仓/训练、未调用真实模型;随后网站已部署(见上述发布记录);详见
docs/lekiwi-agent.md。修复空工作台加载机器人时控制面板因 DOM 分支变化卸载、取消正在进行的预设加载的问题。 -
补齐 LeKiwi 双摄像头:前置固连
Camera-Model-v3,腕部固连Camera-Model-v3-1,分别依据源 URDF/STL 设定独立光心与旋转。左下角支持前置/腕部视角切换,默认前置;仅切换显示,不重载模型、不推进物理、不改变控制权。多相机转换幂等、仅添加一套 IMU;补充双镜头源坐标、显示切换、真实 WASM 导出与腕部/底盘随动回归。发布20260924T052730Z-dual-camera,655 项单测、公网双视角 6/6、原非付费回归 2/2 和独立真实 WASM 随动验证 1/1 通过,未调用付费模型。 -
修复 URL 自动导入 LeKiwi 的摄像头误挂支架、偏移与侧向朝向:改为固定在
Camera-Model-v3前置镜头光心,依据原 URDF/STL 变换设置 wxyz,保留朝前/向上 10° 的 CAD 安装姿态并避免自身遮挡;不改原 ZIP 或动力学。通用转换增加归一化四元数支持,显式挂载点不存在时拒绝静默换点。新增源 URDF 光心/光轴、非法四元数与真实 WASM 导出相机世界位姿回归。发布20260924T050135Z-camera-fix,648 项单测、公网自动导入 6/6 与原非付费回归 2/2 通过,未调用付费模型。 -
新增 URL 参数
robot=lekiwi-v1:从服务器下载内置 LeKiwi ZIP,校验后自动选择 URDF/profile 并导入真实 WASM,跳过手动上传与配置弹窗,默认暂停且不触发付费模型。内置包原样保留许可/来源,Vite 输出带内容哈希的静态资产;无参数不下载,拒绝任意地址/未知/重复参数,下载失败可恢复手动导入。新增 15 项单测和 6 项浏览器回归,覆盖开发态 StrictMode、刷新与生产构建;发布为20260924T043358Z-builtin-robot,640 项前端单测、公网自动导入 6/6 及原非付费回归 2/2 通过,公网 ZIP 哈希与原包一致。接入文档与验收记录见docs/builtin-robots.md。 -
按用户最新要求改为服务器内置 DeepSeek
deepseek-flash+OpenRouter Jevtypesafe/jev-1.13,网页移除密钥/模型/订阅配置。仅两项授权变量经 SSH 输入配置到服务器 0400 只读文件,不随静态站点/镜像/Git 发布;增加跨会话、跨容器保留的 60 次/小时、600 次/24h 全站调用限额及配置锁定。 -
网站新增自然语言前进/后退(0.01–1 m)、左/右转(1–180°),方向不明先询问。DeepSeek 结构化理解+Jev 意图检查;当前位姿闭环驱动、物理误差验收,无重载/瞬移或独立时钟;停止/隐藏/迟到响应/控制权与碰撞、姿态、时限保护保留。本地模式不变。
-
发布
20260924T035108Z-hosted:625 前端/43 后端测试及本地工作台回归通过,假上游+真实 WASM 移动/转向/中断/抓放通过,公网非付费 2/2。真实模型前进约 0.496631 m、左转约 89.828887° 成功;附带抓放在松开后被 Jev 选择 stop,未完整通过,未重试或跳过安全判定。本轮实际 4 次 DeepSeek+13 次 Jev,测试会话已销毁;详见docs/website-hosted-control-2026-09-24.md。以下记录为此前 BYOK 阶段历史,不代表当前界面。 -
经用户授权完成一次公网 DeepSeek
deepseek-flash+OpenRouter Jevtypesafe/jev-1.13真实物理抓放:1 次规划/11 次判定、47.220 s 仿真、0.5937274 m 搬运,成功后销毁测试会话;无自动重试/模型切换,未将 Jev 密钥复用于其他规划模型。Jev 报告费用 $0.000642894,DeepSeek 未报告费用,不能视为零。 -
修正网站任务输入的能力误导:mock 指令不可编辑,明确目前只有固定单方块抓放;自定义中文任务阻止启动并可恢复标准指令,不再无视编辑继续旧任务。这是防误执行保护,不是自由语言任务功能;原本地模式不改。订阅设备码失败提示移至登录按钮旁,说明未取得验证链接及需要手动打开官方页面;服务器官方链路仍受限,不宣称恢复订阅。
-
增加显式授权、无凭据落盘/trace 的公网单回合测试与前端防误执行/设备码展示回归;615 项单元测试、双构建、网站假上游 2/2 通过。提示修补发布为
20260924T023534Z-web,原v1.0.1Git 标签不变;详见docs/website-acceptance-2026-09-24.md。
[1.0.1] - 2026-09-24
CADWorld 网站发布与 LeKiwi 智能抓放集成
-
将当前网站及其依赖的 LeKiwi/移动操作源码归档为
v1.0.1,同步 npm 包与锁文件版本;不包含密钥、个人模型、构建产物或测试日志。611 项前端单元测试、39 项决策服务测试和公网浏览器 3/3 已通过;公网真实付费 API 验收仍等待用户自带密钥,不将本地既有真实调用或公网 mock 验收等同于本次云端真实 API 验收。 -
CADWorld 网站已部署至
https://cadworld-sim.robotquan.com,版本20260923T130923Z-web;验证 HTTPS 签发/续期 dry-run、内部端口隔离、前后端成对回滚与后台异常自动重启。公网浏览器 3/3 通过,真实 WASM mock 抓放搬运 0.5937274 m;订阅入口实测明确返回codex_rpc_failed并清理,未登录/推理。真实 API 调用等待用户自带密钥,详见docs/website-release-2026-09-23.md。 -
新增 CADWorld website 构建与同源公开 BYOK 网关:匿名安全 Cookie/CSRF、逐会话密钥/配置/任务/取消/预算隔离、TTL 清理、IP/全局并发限制,保留本机 Bearer 模式;公网仅允许固定 DeepSeek/OpenRouter 上游,不接受任意 URL。
-
网站模型设置精简为 LLM API_KEY/模型选择与独立 Jev OpenRouter API_KEY,原子保存不推理;保留固定 Codex 0.147.0 官方设备码订阅登录,账号进程隔离、失败不切换付费 API。训练/调参/外控仅在 website 模式隐藏,原本地功能不删除。
-
增加生产构建下的真实后端/假 HTTP 上游、双浏览器会话隔离与真实 WASM mock 抓放验收;增加锁版本离线镜像、最小权限 Compose、1Panel/OpenResty HTTPS、证书自动续期与成对发布/回滚配置。真实云端 API 和订阅推理需要用户另行提供凭据/交互,不冒充已验收。
-
高面数二进制 STL 通过保留全部顶点精度/绕序/三角形的 OBJ 兼容层导入,保留原始资产哈希,支持派生资源缓存、取消、预算与完整工程 ZIP 导出。A /
lekiwi-v1三个轮各恢复 314,244 面 CAD 视觉,碰撞配方/惯性不变;旧缺轮 MJCF 需重转。 -
增加真实 WASM 完整轮、ZIP 重导、重复释放、原生训练快照与性能验收。软件 WebGL 高面数外控视口降为低频刷新以保留原 500 ms 安全看门狗,不减面、不修改物理时钟;性能与失败边界见
docs/lekiwi-mesh-compatibility.md。 -
增加 A 单方块双支撑台的确定性抓放基线、scratch-data 五轴阻尼 IK 和独立接触/运输/放置评估。5 个冻结 ±2 mm 小扰动种子真实 WASM 5/5 通过,持物平移约 0.594 m;不代表任意场景泛化、RL 收敛或模型闭环。
-
新增版本化智能任务契约、取消/超时/迟到响应隔离及
agent独占控制票据。只有当前物理回调可写执行器,等待模型不补积压物理步;agent 所有者下同一基线通过。 -
新增独立回环
decision_server/:共享契约 Python 校验、内存密钥、Host/Origin/token 防护、取消/预算、OpenAI Responses/兼容 Chat 与 TypeSafe/OpenRouter Jev 专用协议,无静默降级。按用户授权显式读取.env两项变量;OpenRouter Jev 与 DeepSeekdeepseek-flash的合成状态真实单请求通过,不代表物理闭环已完成。 -
增加 LLM—Jev—本地技能的异步邮箱调度、逐技能物理门禁、任务暂停/单技能步进和有界恢复/重规划;真实 API 不降级 mock,模型等待不推进物理,安全故障立即停止。mock 决策 + 真实 WASM 闭环 5/5 通过,旧基线 6 项也通过;每回合 1 次规划/11 次判定、持物搬运约 0.594 m。步骤 8 时 Vitest 599 项通过;后续真实双 API 回合见下文,订阅回合仍需用户登录。
-
新增固定 Codex 0.147.0 官方 stdio 登录/状态/模型/结构化规划/中断,仓库外独立 HOME 与仅会话认证,匹配版本的无工具目录及每模型离线工具注入门禁。5 个当前可见模型门禁和真实 stdio 假推理通过;真实订阅登录/推理仍待用户交互验收。新增独立无云凭据 CI、服务/原生门禁测试及第三方许可。
-
主工作台新增 LeKiwi 智能抓放、模型连接/官方订阅管理、任务暂停/单技能步进、受限目标编辑与证据导出;A 文件导入→mock 完整物理成功→导出/重置的真实主视口用例通过。软件渲染仅为 agent 降低完整 CAD 绘制频率,仍复用唯一 advance。地图草稿与后台训练保留,切回 RL 重建其原场景。独立页 HTML、两个启动组件及 Vite 入口已移除,构建仅保留主工作台和 tuning;两模型物理/ONNX 夹具保留。步骤 9 时前端 605 项测试通过。
-
用户确认以已通过的 DeepSeek + Jev 真实闭环完成最终验收,计划标记 10/10。ChatGPT 隔离官方登录已确认,但订阅推理用例在模型调用前因 UI 选择器未匹配中止;补充下拉框可访问名称及显式 opt-in 用例。用户随后要求结束验收,未再运行订阅推理,LLM/Jev 请求均为 0,临时会话已关闭;不将登录成功称为订阅抓放成功。
-
最终验收新增真实双 API 主视口用例(显式 opt-in、最多 1 次 LLM/12 次 Jev),DeepSeek
deepseek-flash+ OpenRouter Jev 两轮均成功:每轮 1 次规划/11 次判定、47.220 s 仿真、0.593727 m 有效搬运、7.689 mm 放置误差。修复浏览器原生 fetch receiver,未保存的配置草稿阻止沿用旧付费连接;不把未报告费用记为零。ChatGPT 订阅仍待用户交互登录,不宣称已通过。 -
补充真实 WASM 持续空抓/一次空抓后成功恢复/对齐失败/滑落/锁肩/超速/导航超时/真实 IK 不可达及两目标角点,10/10 通过。增加臂卡住实测保护,恢复目标从实测位置初始化;5 个生命周期迟到响应不写入/不步进,8 次模型与 IK 循环共 48 个原生句柄确认释放,heap 后 6 次稳定在 1567.75 MiB。
-
最终 Vitest 129 文件/608 项、typecheck、TS/Python lint、build 通过;模型服务 28 项含单独启用的原生离线门禁通过。旧工作台/地图/调参 92 通过、6 可选跳过;LeKiwi 20/20、两模型物理/ORT 2/2;agent→RL 场景隔离、一键训练/策略导入与继续训练通过。LeRobot 60 s/1800 动作、RTT P95 27.593 ms、零超时/丢请求。全仓格式检查仅余四个既有文件,不覆盖原有工作;详见
docs/lekiwi-agent.md。 -
移动操作升级
mobile-manipulator-v2:92 维观测包含上次动作与积分目标,臂目标限速 0.5 rad/s、物理子步实际速度保护;废除全行程位置跳变,拒绝旧68维策略。Bundle 修复关节级 ±1 N·m 限力覆盖舵机限力造成的姿态下垂/碰撞,Go2 不变。 -
参考 IsaacLab Franka reach 的动作缩放、动作变化率/关节速度惩罚与课程结构,新增底盘接近→末端接近→抓取放置阶段。支持可关闭的导航示教初始化、保守 PPO 微调、种子随机化、服务内 checkpoint 接续和独立评估;未达到至少10回合/80%成功率/零安全终止,禁止进入下一阶段。新增共享控制 golden、参数/接续门槛与真实 CPU/ONNX 回归。
-
更新
docs/mobile-training-curriculum.md记录实测导航结果和限制;不把短程导出视为抓取收敛,不修改或启动外部 IsaacLab 环境。 -
LeKiwi v1/Bundle 训练统一至主工作台「控制台 → 强化学习任务」:自动同步场景、启动后台 SB3 PPO、轮询日志/Loss/奖励、停止任务、自动导出 ONNX 与部署元数据并一键导入当前仿真。移除独立实验页训练包下载入口,新增变体选择与任务专属超参,保留 Go2 流程。
-
增加认证有界场景快照 API、机器人/路径/资产校验、按任务依赖就绪检查及
--mobile-python隔离解释器;避免 MuJoCo 3.11 移动任务升级现有 Go2 环境。主会话推断校验权重/配置/场景 SHA-256、固定68→12张量,控制权切换/暂停/重载使迟到结果失效。 -
补充前后端任务创建、参数、日志、取消、成果物与策略生命周期回归;两种真实模型完成主控制台短程 PPO→ONNX→浏览器推断端到端冒烟。短训练验证链路,不代表抓取收敛、实机部署或跨形态泛化。
-
新增
/mobile.html移动操作 RL 实验页和三层模块:复用 ZIP/MEMFS/查看器,分别适配原始 LeKiwi 与本次实测的 Link1–Link4 bundle;固定 68 维观测、12 维动作、阶段奖励/成功判据和 50 Hz 控制,支持位置/速度伺服、遥操/ONNX 切换、鼠标拖动物体与目标、奖励和性能显示。 -
新增浏览器训练场景导出、对称 Python Gymnasium 环境、可选 PPO 入口及 PyTorch→ONNX 导出/ORT 数值校验;跨语言 golden、真实 WASM/原生 MuJoCo 短轨迹、鼠标拖动、候选回滚和 ONNX 过期结果回归。没有预训练抓取策略、实机标定或跨形态泛化承诺。
-
移动操作管理器采用单步进所有者、串行事务与双槽 VFS,避免不断变化的资源路径扩张原生网格缓存;先释放查看器资源再删除旧 model/data,回滚时刷新因共享 WASM heap 增长失效的 views。新增
docs/mobile-manipulator.md的接口、资源/碰撞近似与性能验证边界说明。 -
LeKiwi profile 新增保守的 URDF 语义等价校验:允许显示名、换色、XML 重排及等价数值/RPY,不再只凭文件哈希拒绝非机械变体;保留完整运动链/物理属性检查,并校验全部 45 个源网格。结构变化报告具体缺失/新增关节与属性,新增实际输入 SHA-256 溯源及真实 WASM 控制/导出重载回归。
-
通用导入修复重新打包的 ROS URI 和
meshes/package://错误前缀,保留工程内相对路径并拒绝歧义;profile 预检查失败不再创建未释放的临时 MEMFS 工作区。 -
新增
docs/lekiwi-urdf-compatibility.md:记录New_urdf两份 ZIP 的实际结构、来源哈希和控制适配边界。两包由旧五臂轴加夹爪变为七个新活动轴,不能复用旧九路控制/碰撞;修复资源引用后仍受 314,244 面轮 STL 超过 MuJoCo 200,000 面上限约束,不宣称已完成新机构仿真或 LeRobot 适配。
[0.10.1] - 2026-09-20
初步集成 LeKiwi,优化碰撞模型
-
LeKiwi 碰撞配方升级到 revision 4:新增隔离环境的离线 CoACD 全臂“从视觉生成碰撞体”管线,校验固定 URDF/STL 来源、版本/参数缓存和配方指纹;18 个视觉网格(含焊接附件)的 538 个分解凸包经配合区分割得到 1,220 个零附加质量碰撞体,替代旧胶囊和 revision 2/3 手工分段。旧 MJCF 必须从原始 URDF 重新转换,参考仓库及训练/LeRobot 环境不改。
-
移除整对相邻连杆排除,以关节局部装配几何分割、有限配合例外和保守整周包络筛选启用 5,581 对结构接触;修复 Mirror/Square 穿入,避免跨轴承区域凸包误锁肩旋。采用 1 ms 物理步长,保持协议、关节范围、单写入者与 500 ms 看门狗;新增 108 次原 CAD 覆盖探针、六关节双向扫掠、实际接触/反向脱离和性能回归。完整几何有额外开销,不承诺任意穿透初态、高速运动或硬实时;已知引擎诊断限制见碰撞数据说明。
-
机器人 profile 的关节角改为只读,底层拒绝直接 qpos 位姿写入、单独重置关节及忽略限位,禁用关节拖动入口,避免网页姿态编辑绕过物理;手动执行器目标及统一外控仍通过物理积分运动,普通模型的姿态编辑不变。夹爪间隙验收增加独立三角面距离 oracle,不依赖异常零距离查询或放宽断言。
-
修正夹爪开度方向与闭合限位,补齐指尖/指面接触并支持碰撞几何显示;保留早期 revision 2/3 手工分段的历史重建工具,当前运行时统一使用 revision 4,旧 MJCF 必须从原始 URDF 重新转换。
-
LeKiwi 终端遥操作新增五个臂关节与夹爪正反点动、可配置速度和空格停止点动;同一30Hz循环合成底盘/臂动作,从实测初始姿态与限幅确认目标累加,保留超时撤权;补充按键表、leader接入边界、单测和真实PTY/浏览器物理回归。
-
修复 LeKiwi/通用桥接将暂停超过500ms误报为观测过期:优先提示播放并重新授权,底层禁止暂停时授权且不切换控制权;保留运行中的500ms安全看门狗,补充回归与键盘演示排障说明。
-
新增通用机器人 V1 契约、共享 TS/Python fixtures、模型地址绑定与单写入者仲裁;保留现有 Python、Go2 ONNX 和训练接口。
-
新增显式 LeKiwi v1:可重建固定来源资产、简化被动滚子/碰撞与九路伺服,真实 WASM 验证全向运动、臂/夹爪和障碍阻挡;不是实机标定。
-
新增独立回环控制桥、通用同步 Python SDK 和实际 LeRobot 0.6.1 插件;CPU 依赖隔离在 build/venvs/lerobot,不改训练环境或上游源码。
-
控制台集成 profile 校验、连接/token、明确授权、状态/新鲜度与安全停止;控制凭据仅在页面内存。覆盖 lease/epoch、确认目标与实测状态区分、重载/回滚、过期消息、隐藏/冻结和旧控制回调隔离。
-
外控使用独立固定步长调度,软件渲染时关闭阴影并限制3D绘制为5FPS,为30Hz通信保留主线程时间;非硬实时、非锁步。修复跨 reset 的观测序号判断及冻结后迟到动作续租问题。
-
增加普通桥接 CI 与独立固定 CPU LeKiwi 兼容任务、完整工作台60秒真实控制证据、部署/安全/能力矩阵和许可证记录;相机、LeRobot 数据集和实际 RL 训练仍不支持。
[0.9.5] - 2026-09-09
-
修复外力拖动箭头起点停留在初始位置:保存拾取点的 body 局部坐标,每帧随部件平移和旋转更新,即使鼠标静止也持续跟随;保持现有外力方向/大小控制,补充位姿跟随与释放清理测试。
-
小坐标轴拖动增加与主视口相同参数的阻尼惯性,松手后逐帧减速且保持总旋转幅度;新操作、手势取消及资源清理可终止惯性,补充衰减与中断测试。
-
坐标轴拖动灵敏度对齐主视口高度与旋转速度;点击轴向采用约 300ms 平滑过渡,支持鼠标操作中断,补充幅度与过渡回归测试。
-
修复右下角 XYZ 方向指示器无法交互:支持左键拖动旋转视角、点击轴字母切换对应正轴视图及点击负轴端点切换反向视图;保持观察中心与距离,隔离场景点击,处理拖动取消与资源清理,并补充交互回归测试。
[0.9.4] - 2026-09-09
- 前端设计优化:升级蓝黑、电光青与少量紫色的 Cyber HUD 视觉,保留亮色主题;统一工作台、欢迎界面、共享控件、浮层和源码/调参窗口材质。
- 恢复自调参平台左侧会话与 Trial、中间指标与排行、右侧决策与审批的三栏布局;窄屏纵向排列,保留审批与 Monaco Diff 操作。
- 增加运行状态呼吸与交互微光,支持减少动态效果、强制色彩和无模糊能力回退;侧栏采用静态材质,避免大面积实时模糊影响仿真性能。
- 优化欢迎页与源代码入口、执行器控件密度和重复参数提示,将训练地图操作文案统一为“同步场景地图”。
- 补充双主题材质、状态动效、回退及三栏布局回归测试和设计交付说明;性能数据仅为无头 Chromium 短时特效开关对照,不代表真实 GPU 或重型模型基准。
[0.9.3] - 2026-09-08
- 重构绿色主工作台:紧凑全局入口、可收起资源/上下文侧栏,统一状态、仿真/地图工具、草稿、摄像头与风险槽位;窄屏临时布局不覆盖桌面偏好。
- 逐模块整理地图、Body/Joint/Actuator、Python/ONNX、训练与录制的信息层级,保留单位、主动作、兼容限制及危险后果;控制台首次懒挂载后保留输入与任务状态。
- 独立调参改为指标/排行主区和会话/决策侧展,保留审批、Monaco 差异、参数护栏及停止入口;主工作台/调参共享深浅主题,换主题不丢图表缩放或编辑草稿。
- 统一 Tooltip/Popover/对话框边界、全屏 Portal 与顶层 Escape;修复 Dialog 焦点恢复、Monaco 模型释放顺序、摄像头实际渲染槽位,以及浅色主按钮对比色被共享 CSS 覆盖的问题。
- 补深浅主题五档布局、领域/调参/系统截图和交互回归,同步设计文档及旧 E2E 入口。训练/调参布局采用 mock;真实训练、Agent、外部真实策略/上传服务和长期性能不作为本次 UI 验收通过项。
[0.9.2] - 2026-09-08
- 修复custom_boxes因起终点编辑使同步状态持续失效而无法训练:移除训练面板起终点坐标显示与编辑,训练/调参启动时自动重新编译已应用碰撞场景,并自动选择满足净空、最小距离和连通性约束的参考点。
[0.9.1] - 2026-09-08
-
Go2避障训练改为每个episode从同一连通自由区域随机采样起终点并随机化初始朝向,保证障碍/边界净空和最小目标距离;固定三seed评估及浏览器部署仍使用声明的参考起终点,兼顾泛化与可比性。
-
修正基础策略上传存储错误分类:文件打开/写入/关闭失败返回503并提示检查磁盘空间/权限;流读取超时或连接截断仍返回400,均保留临时清理与socket超时复位。
-
完成普通训练与自调参共用单文件.pt/.onnx上传入口:默认服务直接连接、Go2 legacy47模板确认、自动选择内容ID/文件SHA、取消及同文件重试;任务/连接epoch变化保留旧选择并隔离晚到响应,上传中禁止启动。补双面板真实HTTP浏览器验收与4环境×1iteration CPU ONNX-derived PPO/导出/统计恢复检查(仅链路验证)。
-
新增Go2 legacy47单文件.pt/受限MLP ONNX上传后端,无需管理员注册/邻接配置;认证有界二进制接收、CPU限额安全校验、持久化内容SHA来源,复用普通训练/自调参warm-start与rung自身resume。ONNX只继承确定性网络,明确模板假设、合成normalizer count及fresh训练状态;双UI文件选择待接入。
-
修复跨任务奖励preset混入Flat:以持久化来源session恢复权威taskId,读写与训练入口完整验证任务schema;跨任务或损坏来源在创建作业前拒绝,Flat菜单仅展示已确认Flat的preset。
-
修复导航设定拖回起点误触:超过5px后持续记为拖动,取消/Esc/清理/卸载清空整个手势,下一次正常点击不受影响。
-
新增显式multi_ring_raycast三层48射线/97维部署,旧缺省32射线/81维不变;task/ONNX严格模式、pitch/yaw角度及顺序白名单,浏览器观测、真实ORT shape、导航面板/PiP动态线数贯通。
-
multi奖励仅按已验证标准底板顶面几何分类过滤地面,观测保留实际地板距离;缓存静态box/方向并优化解析slab,补真实CPU/WASM/GPU短smoke及48ray整帧基准。仍存在层间/侧后/坑盲区,未实现局部高程图。
-
修复训练CLI未导入仓库任务注册模块导致直接启动Flat/Rough/Obstacle失败;保留独立解释器三seed评估与调参导航速度。事务导入失败面板改为保留完整diagnostic detail,不再用“模型编译失败”摘要掩盖ORT shape/初始化错误。
-
新增已应用场景静态碰撞多实例→权威custom_boxes导出,保留世界坐标并诚实标记AABB/标准底板近似;前后端严格校验布局、摩擦、数量及起终点圆形安全区,贯通任务JSON/ONNX与最小坐标配置。
-
新增 Go2 避障目标贴地呼吸信标、一次性点击设定目标模式、实时目标坐标/距离和目标复位;保持81维观测与异步held-action,输入与地图操纵器互斥。
-
本地训练卡片新增可折叠Loss/Reward趋势,按迭代去重补全并有界保留500点;复用共享Canvas图表,综合指标独立缩放,曲线平滑但保留原值。
-
新增 Go2 前视32射线避障训练任务、自定义地形参数、配套碰撞地图与81维ONNX浏览器部署闭环,支持PiP和射线显示。
-
自定义地图与策略采用候选会话事务,真实ONNX初始化/graph校验或地图绑定失败时保留原场景、策略和物理状态;默认Flat兼容旧无metadata的47维导出。
-
对齐原Go2训练模型的关节armature、足端接触参数和自碰撞mask,补充真实WASM/CPU射线、动力学参数及浏览器回归测试。短训练仅验证链路,不代表避障收敛。
[0.8.3] - 2026-09-04
新增
- 增加视口浮动地图工具栏(
MapViewportTools),在视口上方提供变换模式切换、坐标空间切换和快捷对齐工具。 - 增加三维场景大纲树(
SceneOutliner),直观查看场景中机器人、地图实例及层级结构。 - 增加视口快捷键挂载(
useMapEditorShortcuts),支持快速切换操纵器模式、聚焦对象和撤销操作。 - 增加属性检查器面板(
MapObjectInspector与RobotInspector),支持精确调节地图对象位姿与机器人关节/执行器。 - 增加右侧栏自适应 Tab 与多工具工作区容器(
RightSidebarTabs、WorkspaceToolsPanel)。 - 增加拖拽式连续数值调节输入组件(
ScrubbableNumberInput)与通用垂直双栏拆分面板(VerticalSplitPane)。
变更
- 重构并收敛模型控制侧栏(
ModelControlsSidebar)与工程侧栏(ProjectSidebar),移除冗余的行内变换逻辑。 - 优化地图编辑面板(
MapEditorPanel)与物理地图面板(PhysicalMapPanel),与统一检查器架构对齐。 - 清理已落地的历史设计草案与计划文档。
[0.8.2] - 2026-09-03
新增
- 将自调参工作台重构为高内聚的组件群:Session 列表导航轨(
TuningSessionRail)、控制工具栏(TuningControlToolbar)、Agent 决策时间线(AgentDecisionTimeline)、指标对比看板(MetricsComparisonBoard)、排行榜(TuningLeaderboard)、日志控制台(TuningConsole)与参数差异对比器(RewardConfigDiffEditor)。 - 建立自调参集中式状态管理(
tuningStore.ts)与自适应轮询逻辑(useTuningPolling.ts)。 - 引入标量环形缓冲区(
ScalarRingBuffer.ts),优化长周期 TensorBoard 曲线的高频更新与渲染性能。 - 服务端增加单步执行令牌(Step Token)调度,支持逐轮审批模式下的受控单步推进。
- 服务端增加参数约束 CAS 校验护栏与会话级别约束同步。
- 支持同会话内安全 Trial 的一键回滚与基准重设(Rollback)。
[0.8.1] - 2026-09-03
新增
- 统一地图资产库与多实例堆叠系统(
MapAssetLibrary、MapStackComposer),支持同源地图资产多次放置与独立位姿变换。 - 新增参数化地图实时预览图层(
ParametricMapPreviewLayer),在视口中实时预览程序化地形与碰撞体变换。 - 新增程序地形贴合与落位计算(
sceneSurface.ts),支持认证资产在程序化地形上自动重力落位。 - 引入地图场景草稿事务化编译(
mapSceneDraft、EditableMapDraftCommit),保障物理、视觉与出生点数据同步更新。 - 增强地图对象拾取与选择机制(
compiledMapPick),支持点击穿透、空白取消与实时变换操纵。
[0.8.0] - 2026-09-02
新增
- 增加基于 DeepSeek Agent 的强化学习奖励函数自调参系统(
training_server/tuning/),结合训练曲线与固定评估指标提出受限参数 patch。 - 支持全自动(Automatic)与逐轮审批(Approval)双调度模式,集成多阶段晋级(Successive-Halving)资源淘汰机制。
- 新增固定多场景评估逻辑(
evaluate.py),通过固定 seed 和组合运动指令产出与奖励权重无关的客观综合评分。 - 新增 SQLite/WAL 存储管理,持久化保留调参会话、Trial 状态、参数护栏、审计记录与 TensorBoard 标量数据。
- 新增独立的自调参 Web 工作台(
web_platform/tuning.html,web_platform/src/tuning/),包含实时曲线可视化组件(ScalarChart.tsx)。 - 训练服务支持将最佳配置保存为不可变预设并在普通训练中复用,支持导出最佳
policy.onnx。 - 本地训练面板(
LocalTrainingPanel.tsx)与训练客户端集成自调参能力探测与快速跳转入口。
[0.7.3] - 2026-09-01
新增
- 将默认
Unitree-Go2-Flat训练所需的 PPO 环境、奖励/观测配置、ONNX 导出逻辑和 Go2 模型资产内置到training_server/rl/。
变更
- 训练服务默认使用仓库内置训练器,不再要求单独克隆
unitree_rl_mjlab;仍可通过--trainer-root覆盖。
[0.7.2] - 2026-09-01
变更
- 前端改为“应用壳 + 业务域 + 共享组件”的目录结构,并补充架构与依赖边界文档。
- 拆分工程侧栏、模型控制侧栏、执行器控制和通用侧栏容器,降低单文件职责和跨域耦合。
- 将地图、控制器、强化学习、本地训练和遥测面板及测试与各自业务域共置。
- 将遥测模块从仿真调度目录独立到
telemetry/,保留通过显式接口与SimulationSession集成。
[0.7.1] - 2026-09-01
新增
- 增加浏览器内仿真遥测记录模块,可配置记录 Body、采样频率和样本上限。
- 记录位置、移动速度、机身侧倾/俯仰/偏航角、角速度、累计里程、接触与驱动指标。
- 增加实时数据与摘要面板,并支持导出稳定列结构的 CSV 和 Schema V1 JSON。
- 提供
TelemetrySource、registerDataChannel及记录生命周期接口,便于扩展业务指标和其他仿真后端。 - 仿真重置使用数据分段,避免跨重置计算错误速度;达到样本上限时自动停止。
[0.6.1] - 2026-08-28
新增
- 固定并强制使用 Node.js、npm、Prettier 和 Ruff 开发工具版本。
- 为核心导入、仿真数学、状态管理和训练客户端增加覆盖率门槛。
- Git 标签触发的自动构建、校验和与 GitHub Release 工作流。
- 本地训练服务随机 Bearer Token 鉴权、Host 校验和任务历史上限。
- 训练进程启动/取消竞态回归测试和 SIGTERM 受控退出。
变更
- Playwright CI 改用版本固定的 Chromium。
- TypeScript、TSX、配置和文档统一使用 Prettier 格式化。
- Python 训练服务统一使用 Ruff 检查和格式化。
[0.6.0] - 2026-08-28
变更
- 将仓库重构为以
web_platform/为核心的 Web 应用仓库。 - MuJoCo 运行时改为依赖官方
@mujoco/mujoconpm 包。 - 移除原生 C++、Python、MJX、Unity、桌面模拟器、CMake 和上游测试镜像。
- 将训练桥接服务和 Python 控制器示例提升到仓库根目录。
[0.5.2] - 2026-08-28
变更
- 优化响应式工作区、可访问性、首屏加载、纹理兼容性和视口交互。
- 增加碰撞体、坐标系、关节轴、质心和惯量辅助可视化。
未发布 — Obstacle DeepSeek 自调参
- 新增Obstacle专属四标量schema与真实reward/导航command应用,保持Flat与护栏CAS语义;导出/浏览器执行配套目标速度。
- 增加固定3seed/1000步、首terminal前捕获的客观导航评价,固定权重和成功/跌倒硬门槛;custom保持权威地图并诚实标注;真实checkpoint/观测统计加载、逐seed进程隔离和失败关闭。
- 自调参界面支持任务选择、专属参数/评估展示、terrain/sensor/custom配置交接及最佳Obstacle策略事务导入;增加mock Agent、打分算例、CAS、argv配置与GPU评估验证。
未发布 — 已训练基础策略迁移与持续导航
- 普通训练与自调参增加已验证基础策略选择、checkpoint/SHA和兼容观测展示;管理员本地注册来源,内容寻址只读快照,拒绝客户端任意路径、symlink、unsafe反序列化及失效来源。
- 严格迁移47维actor到47/81/97:新增列零初始化,保留源归一化统计/count;新trial重置critic/optimizer/iteration,同trial晋级只resume自己的checkpoint,导出保留无路径来源metadata。
- 服务重启后的非终态session等待显式恢复,审计原状态并使旧pending proposal失效重提;保留来源、约束和Approval模式,防重复resume worker。
- 移除浏览器Obstacle交互导航20秒截止,保留训练/固定三seed评估协议及跌倒/越界安全停止;设点不自动启用策略,明确显示暂停/未启用/错误状态。
- 新增来源安全、SHA快照、trial续训/重启、双面板和真实WASM/ORT持续换目标回归;4env×1iteration仅证明初始化与优化,空旷地图实测不代表复杂障碍收敛。
未发布 — 基础策略目录刷新安全修复
- 修复普通训练在刷新服务目录后清掉失效来源、静默降级随机初始化的问题;保留已选内容ID,不按同别名自动替换新内容。
- 两种训练面板统一对目录缺项、验证失败及任务不兼容来源显示失效提示,禁用启动并在handler再次拦截;必须用户明确从头训练或选择有效来源。显式切换任务仍清空选择。
- 增加两面板A→B、not-ready、缺项及兼容性变更的真实组件刷新回归,验证失效时零启动请求及用户明确选择后的请求体。