Lyapunov 中文手册

LYAPUNOV · 0.1.0α · 使用手册

让自然语言、3D 与仿真
在同一个工作台协作。

LLM 优先、3D 原生的机器人开发工作台。从环境、物体和机器人资源开始,通过原生工具编辑场景,观察并调整仿真反馈。

© 2026 Vorynel Co., Ltd.Apache License 2.0

杭州奇异宇宙人工智能有限公司出品 · 赞助方:UAD(浙江大学建筑设计研究院有限公司)

curl -fsSL https://vorynel.com/lyapunov/install.sh | sh

LLM优先,3D原生

Peiri 是全局语言模型服务的代称;Pontryagin 是后台世界模型服务的名称。

Lyapunov 是 LLM-first、3D-native 的机器人与 Agent 桌面框架,由杭州奇异宇宙人工智能有限公司出品。面向机器人开发者、仿真与研究人员、三维场景创作者:在一个工作台中对话、编辑场景与文件、准备机器人、调用仿真和相机工具、查看反馈并保存结果。推荐使用 Agent 的原生产物工具与工作台控件,本 Alpha 暂不建议用 CUA 自动点击替代场景、机器人或仿真工具。

LLM 与三维场景反馈工作流自然语言意图和本地文件进入原生工具与 Scene API,作用于三维场景,仿真读回再返回下一轮计划。本地文件 · 资源自然语言 · LLM原生工具Scene API3D 场景与编辑仿真与实际读回根据读回调整计划、参数与场景

环境建模与导入

几何/程序化环境:用 Blender 和脚本构造尺寸明确的地面、墙、门洞等,导出或登记几何后在同一 Scene 调整。

世界生成:通过已配置的 Pontryagin 服务,可用自然语言请求生成 3DGS 世界。当前服务器资源有限,生成等待时间较长。3DGS 用于视觉表达,GLB 或碰撞几何需分别获取,并与视觉结果配准。

已有环境与泼溅:导入GLB或Gaussian表示,检查轴、比例、方向和资源完整性。Gaussian负责视觉表达,物理接触需要单独、配准的几何。

照片/采集重建:可通过外部插件直接完成,或导入插件产生的重建结果。准备插件所需的照片或采集数据,保留重建产物,并检查资源完整性、比例和坐标轴。

编辑与物理派生:实体编辑保存到Scene版本;为static/environment准备合适碰撞表示并同步到同一world。表面厚度与预算有限,门洞净宽、窄孔与全场通行需实际检查。

物体建模方法

Blender建模:适合尺寸、拓扑、材质与层级需要明确控制的物体;使用实际Blender环境导出GLB并检查结果。

程序化建模:通过脚本生成规则几何或装配,参数与源脚本属于任务工作区,源件与派生件分别保存。

服务辅助建模:可作为照片/文字到几何的可选路线。具体服务连接、许可与结果质量需在实际配置下确认,本次未签署外部生成建模成功;本文不把特定生成模型或供应商作为产品默认依赖。

机器人下载、导入与兼容

优先使用原生MJCF/URDF;保留mesh、纹理、include及执行器定义的依赖闭包。核对轴、单位、关节顺序/限位、actuator映射、dt/控制频率与观测语义。适配器和引擎报告可用控制后,按准备→初始化暂停→就绪→显式有界执行操作。policy需prepare和match后才execute;几何gait并不等于起身或稳定行走。

例如 Franka Panda 机械臂、Unitree G1 人形机器人与 Go2 四足机器人,以及 Universal Robots 机械臂。查询模型可从 Franka 官方模型根、Unitree 官方模型根、Universal Robots 官方描述根开始,也可参考 MuJoCo Menagerie 的 MuJoCo 模型。导入后仍需核对具体型号的依赖和控制映射;来源根不代表所含每个型号已兼容或已完成控制任务。

机器人控制准备顺序先准备原件与依赖,在暂停状态初始化,匹配关节观测与控制策略,再受控执行并读取反馈。准备原件与依赖暂停初始化检查当前状态匹配模型与控制策略受控执行观察 · 停止 · 调整每一步以当前客户端与仿真读回决定下一步

输入类型与入口

按资源入口选择处理方式。视觉预览、场景导入、引擎消费与控制兼容分别检查;下面列出当前源码对应的入口与依赖条件。

输入入口类别处理方式与条件
.glb直接场景可用scene_import登记mesh;完整外部buffer/texture闭包;视觉可见后另核碰撞/物理。
.gltf / glTF+bin/textures需获取组装为GLB本地UI走scene_asset_acquire(path),读取.bin/图片组装asset.glb后import/mount;workspace亦可预览;不是parseAsset直导。
.xml / .mjcf直接机器人文档必须是真实mujoco/robot根,解析include/mesh/texture闭包;导入后按实际引擎、关节、控制映射准备,不等于已运动。
.urdf直接机器人文档登记URDF及依赖;视觉/引擎消费与控制兼容分别核查,未知mesh不伪装原生支持。
.ply(高斯属性)直接场景泼溅入口按PLY头与f_dc_/scale_/rot_/opacity事实判断;视觉Gaussian splat不自动变碰撞。
.ply(普通网格/XYZ)按内容预览/显式转换或派生workspace按头分流;parseAsset把PLY登记为splat且记录gaussianProperties,不能宣称所有PLY通用点云直接可用;XYZ碰撞仅显式解码/派生路径。
.spz / .splat / .sog / .rad / .ksplat直接场景泼溅入口(解码有条件)parseAsset登记splat;SPZ/SPLAT有内容校验,其他格式仍依对应解码器;物理几何需独立来源/绑定。
.obj / .mtl/贴图需Blender转换scene source登记依赖与纹理事实;转换GLB后挂场景。workspace独立OBJ预览不等于Scene物理兼容。
.fbx需Blender转换真实FBX头校验,保源文件/材质闭包,转换GLB;缺纹理如实报告。
.blend原工程+Blender转换原件source入库,外部纹理/linked-library须Blender检查;可编辑/导出GLB,不默认闭包完整。
.usd / .usda / .usdc原始source/转换;原生引擎有条件parseAsset仅source;Blender可转换GLB预览/挂场景。Isaac原生USD路径另需对应SDK/SBL等实际依赖和组件,不把USD后缀当全引擎支持。
.usdz文件预览/Blender转换workspace支持USDZ预览,二进制ZIP由宿主转换;不在parseAsset直接Scene扩展集合。
.stl / .dae / .3mf / .vtk只文件预览/转换后再场景用workspace对象预览;STL还可作机器人文档mesh依赖,不能因此宣称所有上述独立文件Scene直导。
.max需3ds Max导出后再用明确MAX_CONVERSION_REQUIRED;从3ds Max导出带材质FBX或GLB,不能改后缀。
.hdr / .exr环境光照source登记真实头/尺寸,应用到Viewer环境;不是机器人或普通碰撞体。
PNG/JPEG等图片参考图/附件,不直接3D资产作为照片/图纸参考交给模型或drawing_inspect;从图中推断尺寸与背面须区别已知事实。
.dxf / .dwg / .pdf图纸检查/外部转换DXF解析,DWG需显式转换器→DXF;矢量PDF读取路径/文本,扫描PDF导出图片;无比例尺不能称米制模型。
.pt / .pth / .jit / .torchscript / .onnx / .safetensors / bundle.json策略取件后需准备/匹配本地loader仅按真实文件/bundle闭包和已登记来源/adapter处理。未知文件只格式预检(graphVerified:false),匹配joint/order/obs/rate与引擎后再显式执行;不宣称任意权重可运行。
scene.json / .scene-package.json / portable project directory工程打开/完整包导入导出scene_open读scene.json;scene_package_import导入自包含测试项目;scene_save portable:true复制原件和闭包,保存完整快照,迁移完整目录;不声称任意ZIP都可作为工程打开。

相机、标定与环境适配

world固定相机使用世界位姿;body/parent挂载相机使用局部安装位姿并随真实父体FK跟随。当前Viewer视角/保存视角与引擎传感器帧分别标明;返回主视图或Esc恢复自由观察。

RGB-D/标定在相应引擎和渲染后端就绪时采集,核对分辨率、K、worldFromCamera、米制深度、captureId和同一scene/world/frame身份。相机能看到环境不证明碰撞几何已配准;当前视口截图也不自动等于传感器标定帧。

当前视角需显式选择“保存当前画面安装”;可“恢复安装基线”。固定/挂载相机使用“进入相机视角”或“进入并跟随相机视角”,再“返回主视图”。MuJoCo与Isaac有命名相机list/adjust路线,Isaac RGB-D采集需实际RTX;Newton当前不支持这些相机接口。保存Viewer视角不替代native calibration。

原生采集与标注入口

按真实相机配置依次使用 camera_list、camera_capture_multi,再通过 camera_project_annotation 引用同一 captureId;camera_dataset_export 只导出真实采集。挂载相机从实际 body 或预设中选择 parent,核对安装位姿并等待同步读回。

标注、编辑、保存与导出

在当前视图或已登记采集上添加标注,明确目标实体/Scene版本与来源帧。可修改位置和文字,保存后重新打开核对。像素投到三维须使用真实深度与标定,背景/无效深度会阻断;标注修改不自动修改源几何或物理世界。按需要导出采集、标注与数据集,并核对实际路径、版本及引用。

修改场景与便携保存

三维批注锚定实体表面;对话请求修改时,通过 scene_edit 保持目标 entity 与 revision。scene_save 的 portable:true 路线保存完整快照并复制原件与依赖闭包;移动工程时保留整个目录。

同world的多机器人

同一world可包含多个机器人,按各自能力提交有界batch动作并读取逐机器人结果;停止和状态仍归当前会话/world。共同场景与一批命令不是任意协作任务已经完成,任务成功需检查目标、碰撞、控制/策略及最终状态。

仿真引擎与运行条件

引擎当前路线运行条件
MuJoCo当前默认安装与本地CPU物理路径模型、渲染、控制与实际任务按实例确认。
Isaac Sim可选,需实际SDK/授权/本体转换与设备条件metadata/list/adjust可不启RTX;RGB-D采集需实际RTX,CUDA矩阵本轮未核。
Newton当前较窄可选world/observation切片不能宣称完整动作/接触/相机对等。

基础案例:输入、操作与预期读回

从短、可停止的操作开始。每个案例列出所需输入、手动或自然语言操作,以及下一步应读取的实际结果。

地面与箱子的受控MuJoCo

输入与准备
空Scene、静态地面、动态箱子;托管MuJoCo和所需渲染依赖就绪。
手动 / 原生工具操作
  1. 用原生场景/Blender工具建立有尺寸的地面和箱子。
  2. 选择MuJoCo,检查重力、用途与碰撞,初始化暂停world。
  3. 显式推进20步或约定的短有界动作,读取前后状态,再停止。
  4. 保存Scene;需要采集时另确认渲染就绪。
自然语言示例
建立静态地面和边长0.2米的动态箱子。用MuJoCo初始化为暂停,先报告world与箱子状态;只推进20步,读取前后位姿、stepIndex和simTime后停止。
原生入口
  • 用已有物理测试空间或显式Scene box/ground组件建世界。
  • 核引擎与world/frame身份;查看物理步与方块高度,再Stop并关闭。
  • CLI可用 ./lyapunov physics-check --managed-sdk 复现原生检查入口。
预期读回
  • 实际engineId/world/Scene revision一致。
  • 显式推进后步数/时间和箱子状态真实变化。
  • 需要落地验证时另约定足够但有界的步数并读取contact;不由Viewer动画推断。
适用条件
不是已执行演示;缺SDK/渲染/物理组件时报告阻断。

Panda手动关节与TCP

输入与准备
官方Panda原生模型、完整mesh/texture/actuator闭包、当前引擎可用控制。
手动 / 原生工具操作
  1. 从官方根导入Panda MJCF/URDF及include/mesh/texture闭包,读取真实关节/site/TCP与限位。
  2. 初始化暂停;选择实际可控关节,做一个小幅有界动作后停止。
  3. 读取真实关节反馈与TCP位姿/定义。
  4. 需要末端目标运动时先检查相应规划/IK能力;设置TCP定义不等于执行末端轨迹。
自然语言示例
列出当前Panda的可控关节和限位,显示TCP位姿。只对第一个可控机械臂关节做限位内的小幅动作,停止后报告误差;不要自动执行抓取或整套policy。
原生入口
  • 导入MJCF/URDF及完整include/mesh/texture;从robot_describe读真实joint/site/TCP。
  • 按准备→初始化→就绪进入当前world,joint_move指定真实关节与有限duration。
  • robot_state核qpos/同代次读回;Stop;可保存portable工程。
预期读回
  • 实际可控关节/限位与动作回执一致。
  • 停止确认、关节反馈与TCP信息可读取。
  • 如走规划,检查计划与实际执行结果分别返回。
适用条件
不承诺所有Panda文件/引擎或任意抓放;policy另prepare/match。

相机、RGB-D与标注采集

输入与准备
有可见物体的Scene、就绪MuJoCo或支持相机的引擎、渲染后端。
手动 / 原生工具操作
  1. 从真实body/preset选parent,不猜腕部offset;保存world或parent相机/当前视角并等待sync和native读回。
  2. 应用Scene修改/同步,列出真实命名相机并选择一台。
  3. 采集RGB-D与标定,在有效像素上标注并修改说明。
  4. 保存/重新打开标注;导出采集或数据集并返回实际路径。
自然语言示例
把当前视角保存为场景相机,同步到就绪的世界后采集RGB-D和标定。用箱子上的有效像素与真实深度创建标注,修改说明并保存,再导出采集和标注。
原生入口
  • 从robot_presets/真实body列表选parent,不猜腕部offset;Scene相机面板保存挂载并等待sync/native读回。
  • camera_list→camera_capture_multi得同帧RGB/depth/K;camera_project_annotation引用captureId,camera_dataset_export只用真实采集。
  • 3D批注点击实体表面、编辑文字、截图送模型;修改通过scene_edit保持目标entity/revision。
预期读回
  • captureId、K/外参、分辨率、米制深度与来源frame一致。
  • 修改后重开标注的文字/目标/位置保留。
  • 导出文件与manifest引用对应实际采集。
适用条件
Viewer截图和引擎标定帧分别登记;无效深度不编造三维点。

室内视觉与碰撞配准

输入与准备
自己有权使用的室内GLB或Gaussian视觉件,以及配准碰撞几何。
手动 / 原生工具操作
  1. 检查方向/比例/轴,分别登记视觉与static/environment碰撞。
  2. 等待物理派生status=ok,核对fillInterior:false、实际voxel pitch与预算;保留源表面和空区。
  3. 同步到暂停world,用小探针或已支持机器人做有界接触/通道检查并停止。
  4. 保存Scene与碰撞来源/参数;预算超限或窄孔不清晰时报告。
自然语言示例
检查这间房间的视觉与碰撞是否配准。保留室内空区和门洞,不把房间烘成实心盒;只做一个墙面接触与门洞净空的有界检查,报告实际位移/contact和预算后停止。
原生入口
  • GLB导入显式static/environment用途;等待asset_list物理派生status=ok。
  • 检查fillInterior:false、actual voxel pitch与预算,再scene_mount/sync。
  • 用原生MuJoCo球/接触正负对照检查局部开口;另验真实场景通道,不能只看interiorPreserved。
预期读回
  • 视觉与碰撞对应同一实体变换/单位/Scene版本。
  • 实际空点负对照与墙面接触正对照;另核真实通道净空,不能用interiorPreserved标记代签。
  • 有限pitch/预算与剩余未覆盖区域明确。
适用条件
不是全室通行/导航任务已完成,不宣完整B1或全部窄孔通过。

未来TODO

原生macOS(Apple Silicon/x64)、微信小程序远程任务/相机/停止、Genesis、VR/XR与DSH伴随升级均为TODO。Windows仅计划WSL2+WSLg下Linux x64包评估,不是native exe;Windows10 build19044+/11、WSL2/WSLg与适用GPU驱动按微软文档准备,Linux文件系统优先,本次未实机验收。

DSH 随产品版本采用固定 pin,先检查接口与 patch 适配,再迁移会话和工程数据;保留兼容快照与前一版本,按安装手册完成备份、恢复和回滚。

上游致谢

感谢DSH/Cordis、MuJoCo、NVIDIA Isaac Sim/IsaacLab、Three.js、Electron、Node.js、React、Blender,以及机器人厂商/官方模型库与贡献者。Lyapunov负责LLM/3D优先工作台与产品整合;底层仿真、渲染和控制模型成果及许可归各自上游。

DSH 官方项目 · 第三方 NOTICE

共同完善

欢迎Discussions、Issues与PR。反馈附版本、最小复现、已去隐私诊断/截图,不提交Key、会话或客户私有数据。

也可以通过邮件联系客服:voryneltech@gmail.com。请附版本、最小复现、已去隐私诊断/截图;请勿发送密钥、密码、会话或客户私有数据。

Support: email voryneltech@gmail.com with your version, a minimal reproduction, and privacy-stripped diagnostics or screenshots; never send keys, passwords, sessions, or customer data. See the English README.

Linux 安装、升级、回滚与卸载

出版信息 标记
说明版本 0.1.0α · Linux x64(具体版本以当前清单为准)
文档日期 2026-10-03
作者团队 Mingjun Cheng; Zongjian Ding; Yudong Gao; Yi Yang; Lidong Chen; Jiale Liu; Xinling Yu
出品方 杭州奇异宇宙人工智能有限公司
赞助方 UAD(浙江大学建筑设计研究院有限公司)
版权 © 2026 Vorynel Co., Ltd.
项目许可 Apache License 2.0;根 LICENSE 为标准全文,根 NOTICE 包含已填写的项目版权和许可声明,并保留完整的 OpenCode MIT 声明。已发布归档保留当时的许可声明。
公共源码 ManfredCh/Lyapunov
图片与概念来源 项目贡献者撰写的说明与版本标记;本手册为文字和命令说明,无概念图素材。

Lyapunov 0.1.0α 发行说明。

本文对应 Linux x64 Alpha 的安装合同。releaseId、最低 glibc、主包和 MuJoCo 伴随包的文件名、大小与校验值,以官网安装页及该批次版本清单为准。主包与默认 MuJoCo 使用同一个 releaseId,按清单选择对应归档。

默认安装

在图形桌面的普通终端运行:

安装:

curl -fsSL https://vorynel.com/lyapunov/install.sh | sh

安装成功并报告就绪后,由用户单独启动:

"$HOME/.local/bin/lyapunov"

需要 Linux x86_64、glibc、图形会话、Electron 所需共享库和可用的渲染后端。安装脚本使用系统的 curl、sha256sum、tar、mktemp、getconf 及常规 shell 工具;应用自带 Node.js 和 Electron,默认 MuJoCo 伴随包自带 Python。无需预先安装系统 Conda、Python、Bun 或配置模型 Key。版本目录使用随包 Node、固定 DSH 及其依赖,MuJoCo 只使用该版本的独立 .runtime/sim-python;默认安装不改系统 Python、不依赖 PATH 中的 dsh/python,也不复用宿主开发 venv。用户会话、凭据和数据继续使用产品的稳定数据根。运行时目录与依赖的私有归属、Host 的权限与 bwrap、Chromium 的桌面沙盒各有自己的检查,目录隔离本身不代替内核沙盒验证。

macOS 版本将尽快提供;Windows 用户建议通过 WSL2 + WSLg 安装和使用 Linux 包。

默认安装落点:

内容 路径
应用与下载缓存 ~/.local/share/lyapunov/
某个发布版本 ~/.local/share/lyapunov/versions/<releaseId>/
当前版本 ~/.local/share/lyapunov/current,指向该目录内的 versions/<releaseId>
上一个版本 ~/.local/share/lyapunov/previous,在更新激活时记录原 current
命令入口 ~/.local/bin/lyapunov
桌面入口 ${XDG_DATA_HOME:-$HOME/.local/share}/applications/lyapunov-desktop.desktop
默认 MuJoCo SDK <版本目录>/.runtime/sim-python/
该版本安装回执 <版本目录>/.install/

安装器下载版本清单,校验归档字节数与 SHA-256,并核对包内 RELEASE.json 的版本、平台和源码提交。默认 MuJoCo 以 conda-pack 伴随包在最终版本路径解包并运行 relocation;随后执行托管 SDK 的 doctor 与原生 physics-check。这些检查通过后,安装器才原子切换 current 并创建用户命令与桌面入口。

默认安装会按需准备 GUI 共享库,在需要时请求正规系统认证,并在完成桌面沙箱设置后自动继续,无需额外复制修复命令再重跑安装。请在系统认证提示中完成授权;安装就绪后,由用户单独启动应用。若下载或当前运行上下文阻断,已校验的版本目录与 SDK 会保留,原 current 保持不变;以实际诊断为准。已下载的正确归档可复用,中断下载保留为 .partial。

先查看脚本或选择版本

curl -fsSL https://vorynel.com/lyapunov/install.sh -o lyapunov-install.sh
less lyapunov-install.sh
sh lyapunov-install.sh --help
sh lyapunov-install.sh

安装器实际支持以下选项:

选项 行为
--version RELEASE_ID 安装官网已发布的固定批次;值取该批次清单的 releaseId。
--prefix /绝对路径 设置应用、版本、链接与下载缓存的根目录。默认 MuJoCo 支持普通路径与空格,不支持前缀中的单引号;会在下载前以 CONDA_PREFIX_UNSUPPORTED 拒绝。
--bin-dir /绝对路径 设置 lyapunov 用户启动器目录。
--no-desktop 不创建桌面快捷入口,仍安装用户命令入口。
--without-mujoco 显式略过默认 MuJoCo 准备与物理检查;桌面检查通过后才激活。
--help 显示当前脚本的实际参数。

例如自定义目录并保留默认 MuJoCo:

sh lyapunov-install.sh   --prefix "$HOME/Applications/Lyapunov"   --bin-dir "$HOME/.local/bin"

安装指定版本时,将 REPLACE_WITH_PUBLISHED_RELEASE_ID 替换为官网列出的真实值:

sh lyapunov-install.sh --version REPLACE_WITH_PUBLISHED_RELEASE_ID

脚本还接受对应的 LYAPUNOV_INSTALL_ROOT、LYAPUNOV_INSTALL_BIN_DIR 环境变量。若使用自定义前缀,本文后续回滚与卸载中的默认路径需要同步替换。启动目录不会自动加入 shell 的 PATH;可直接使用安装输出中的绝对启动器路径。

首次运行

欢迎页提供语言、主题、登录与 Try as guest/游客体验。登录在浏览器完成官网授权,验证成功后同一个应用窗口进入工作台;正式模型使用 Peiri 与中央 Credits。

Guest 使用独立本地工程与会话,不连接产品账户或计费后端,没有默认模型。文件、Scene、Viewer 与已安装的本地工具可用;需要 Agent 时在模型设置显式配置自己的 provider。Guest 不使用 Peiri、中央 Credits、产品云端生成或云资源。游客工程要带入账户时,先导出,再登录并显式导入该工程,不自动合并。

机器人按“准备 → 初始化 → 就绪 → 显式受控执行”操作。共同准备流程需要核对模型、引擎、资源、放置与碰撞几何;不同机器人保留各自控制映射。模型可见与物理就绪分别确认,不把 G1 导入称为自动起身或完整本体任务验收。

相机面板可进入固定或绑定相机,也可选择 Saved views/已保存视角;点击 Return to main view/返回主视图 或按 Esc 离开锁定视角。自由漫游时先点击 Viewer 画布,WASD 平移、Q/E 升降、Shift 加速、右键环顾;失焦停止移动,Esc 切回环绕。导航键操作视角,机器人动作由其控制面或显式 Agent 指令执行。

手工下载与解包

官网 JSON 清单与安装器 TSV 清单描述同一个发布对象:

  • 最新:https://vorynel.com/lyapunov/releases/latest/linux-x64.json,同目录 .tsv。
  • 固定版本:https://vorynel.com/lyapunov/releases/<releaseId>/linux-x64.json,同目录 .tsv。
  • 主包:https://vorynel.com/lyapunov/releases/<releaseId>/<archive.path>。
  • MuJoCo 伴随包:同一版本目录中的 <mujoco.runtime.archive.path>;默认运行时格式为 conda-pack。

JSON 中两项 archive.path 均为文件名;TSV 的 archive_path 与 mujoco_path 是从 /lyapunov/ 起算的相对发布路径。使用清单内的真实文件名、字节数和 SHA-256;应用版本号与发布批次 releaseId 分开登记。

手工流程:

  1. 从官网选择一个固定 releaseId,保存其清单与两个归档。先将下载文件的字节数和 sha256sum 输出与清单比较。
  2. 将主包完整解到一个新的版本目录,保留清单规定的顶层 archiveRoot。该目录以 ./lyapunov 为产品入口。
  3. 在主包根创建 .runtime/sim-python,将 MuJoCo 伴随包解到这里。用该环境的 bin/python bin/conda-unpack 在最终路径运行 relocation;此后保留该路径。
  4. 运行 ./lyapunov doctor mujoco --managed-sdk 与 ./lyapunov physics-check --managed-sdk,按真实输出补齐当前桌面的共享库或沙盒要求。检查通过后运行 ./lyapunov。
  5. 手工解包不会生成默认安装器的 current/previous/用户启动器。希望使用这些入口时,运行官方脚本安装同一 releaseId。

以下是单个归档的校验示例;文件名与摘要必须从该固定版本清单复制:

sha256sum ./YOUR_DOWNLOADED_ARCHIVE.tar.gz
wc -c < ./YOUR_DOWNLOADED_ARCHIVE.tar.gz

在已完整解包的主包根,MuJoCo 伴随包的解包与检查命令如下;/absolute/path/to/mujoco-companion.tar.gz 替换为已验证文件:

mkdir -p .runtime/sim-python
tar --no-same-owner --no-same-permissions   -xzf /absolute/path/to/mujoco-companion.tar.gz -C .runtime/sim-python
.runtime/sim-python/bin/python .runtime/sim-python/bin/conda-unpack
./lyapunov doctor mujoco --managed-sdk
./lyapunov physics-check --managed-sdk
./lyapunov

如果只下载了主包,也可以在该包根显式运行 ./lyapunov install-provider mujoco,联网建立独立 SDK;这条路径会下载依赖,不等同于伴随包已经准备完成。Hugging Face 请求使用 https://hf-mirror.com,镜像缺少文件、revision、权限或校验失败会点名对象并阻断。

可选引擎与大型运行时

默认安装准备 MuJoCo 及规划、几何和传输依赖;Isaac、Newton、policy 运行时和 benchmark 套件按需选择:

"$HOME/.local/bin/lyapunov" install-provider newton
"$HOME/.local/bin/lyapunov" install-provider policy-cpu
"$HOME/.local/bin/lyapunov" install-provider benchmark-libero
"$HOME/.local/bin/lyapunov" install-provider benchmark-gymnasium

Isaac 需要对应硬件、驱动与 SDK,安装前阅读 NVIDIA Omniverse 许可,同意后显式运行:

"$HOME/.local/bin/lyapunov" install-provider isaac --accept-omniverse-eula
"$HOME/.local/bin/lyapunov" doctor isaac

自动引擎选择仍遵循产品的统一优先级:显式选择优先;自动模式在 Isaac SDK、许可和所需加速器均可用时选择 Isaac,否则选 MuJoCo。物理引擎设置的偏好在下次启动工作台生效。检查 SDK 可用不等于世界或 RTX 成像已经成功;Newton 当前保留较小的世界与观测能力范围。

数据位置与升级

应用版本目录用于客户端代码、随包运行时与该版本的 SDK。用户场景、机器人与模型资产、录制、采集和凭据应放在应用目录之外。发行桌面默认使用 Electron 的平台用户数据目录;Linux 一般为 ${XDG_CONFIG_HOME:-$HOME/.config}/LyapunovDSH。已有显式 LYAPUNOV_DESKTOP_DATA_DIR 则使用其指定目录。运行中的工作台数据位于该数据根内的 runtime/,账户与游客按自己的身份目录隔离。

升级前退出应用,导出需要保留的工程,或将实际数据根复制到应用目录之外。备份需要覆盖数据根中的场景、资源索引、会话、采集与运行记录;产品没有自动备份机制或可替代这一步的 backup 命令。迁移报告打印在启动输出,不作为持久化恢复日志保存,不能用事后的报告重建升级前数据。

以下仅示例默认 Linux 数据位置,实际使用了自定义环境变量时须替换:

lyapunov_data="${LYAPUNOV_DESKTOP_DATA_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/LyapunovDSH}"
lyapunov_backup="$HOME/lyapunov-backup-$(date +%Y%m%d-%H%M%S)"
cp -a -- "$lyapunov_data" "$lyapunov_backup"

然后重跑同一安装命令:

安装或升级:

curl -fsSL https://vorynel.com/lyapunov/install.sh | sh

安装完成后检查版本并启动:

"$HOME/.local/bin/lyapunov" --version
"$HOME/.local/bin/lyapunov"

安装器保留已有版本、下载缓存与用户数据;更新时将前一 current 保存为 previous。客户端的布局迁移可能移动资源目录或改写引用,所以更换应用链接只回退代码。若要回退数据布局,需要使用升级前的数据副本。

手工维护同一个解包安装时,退出应用后在同一目录替换代码与随包文件;保留包外数据根与其备份。旧版本不应与新版本同时连接同一运行根。

回滚到保存的版本

先退出应用。默认安装可查看上一个版本:

lyapunov_prefix="$HOME/.local/share/lyapunov"
readlink "$lyapunov_prefix/current"
readlink "$lyapunov_prefix/previous"

数据布局已迁移时,先把升级后的数据根移到一个新位置保留,再从升级前备份恢复实际数据根,最后切换 current 或换回旧客户端。旧版本只认 scene/ 布局时,看不到已经迁移到 catalog/ 的库;启动 EXIT=0 或 doctor 依赖 AVAILABLE 不代表回滚成功,需要确认恢复后的工程与资源可见。此操作使用自己的备份路径,安装器没有 rollback 子命令。迁移会移动目录,并可能就地改写 JSON/JSONL 中命中旧路径的引用;历史“改写引用 0”是特定数据根的读数,不能理解为所有迁移都只搬不改。

需要恢复数据布局时,先选升级前保存的实际备份,保留升级后的数据根,再恢复;下面的备份路径需替换为自己的路径:

lyapunov_data="${LYAPUNOV_DESKTOP_DATA_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/LyapunovDSH}"
lyapunov_backup=/absolute/path/to/your/pre-update-backup
test -d "$lyapunov_backup" || exit 2
mv -- "$lyapunov_data" "$lyapunov_data.after-update-$(date +%Y%m%d-%H%M%S)"
cp -a -- "$lyapunov_backup" "$lyapunov_data"

下面复用安装器保存的 previous,以临时符号链接加 GNU mv -Tf 原子切换;不会重新下载或删除任何版本:

lyapunov_prefix="$HOME/.local/share/lyapunov"
lyapunov_target=$(readlink "$lyapunov_prefix/previous")
case "$lyapunov_target" in versions/*) ;; *) exit 2 ;; esac
lyapunov_id=${lyapunov_target#versions/}
case "$lyapunov_id" in ''|*[!A-Za-z0-9._-]*|.|..) exit 2 ;; esac
test -x "$lyapunov_prefix/$lyapunov_target/lyapunov" || exit 2
test -f "$lyapunov_prefix/$lyapunov_target/.install/archive.sha256" || exit 2
lyapunov_pending="$lyapunov_prefix/.current.rollback.$$"
ln -s -- "$lyapunov_target" "$lyapunov_pending" &&
  mv -Tf -- "$lyapunov_pending" "$lyapunov_prefix/current"
"$HOME/.local/bin/lyapunov" --version

卸载与保留数据

先退出 Lyapunov。默认安装的两个入口有明确的安装归属标记;仅在标记与本次安装根一致时删除:

lyapunov_prefix="$HOME/.local/share/lyapunov"
lyapunov_launcher="$HOME/.local/bin/lyapunov"
lyapunov_desktop="${XDG_DATA_HOME:-$HOME/.local/share}/applications/lyapunov-desktop.desktop"
if [ -f "$lyapunov_launcher" ] &&
   grep -Fx -- "# Lyapunov managed launcher root: $lyapunov_prefix" "$lyapunov_launcher" >/dev/null; then
  rm -- "$lyapunov_launcher"
fi
if [ -f "$lyapunov_desktop" ] &&
   grep -Fx -- "X-Lyapunov-Install-Root=$lyapunov_prefix" "$lyapunov_desktop" >/dev/null; then
  rm -- "$lyapunov_desktop"
fi

自定义前缀/bin-dir 时,替换成安装时的实际路径。然后检查安装根内的 versions/ 与 downloads/;版本的 .install/release.tsv 是对应回执,确认这里仅包含本次安装的应用与缓存后,可以删除这些安装文件及 current、previous 链接。卸载只处理自己选择的应用安装根;保留平台用户数据目录、显式数据根、导出的工程与外部资产目录。

希望先保留整个安装以便恢复时,可在删除入口后将默认安装根改名:

lyapunov_prefix="$HOME/.local/share/lyapunov"
mv -- "$lyapunov_prefix" "$lyapunov_prefix.uninstalled-$(date +%Y%m%d-%H%M%S)"

安装器没有 uninstall flag,也不自动清除用户工程、资产或凭据。

诊断与日志

现象 操作
安装在 manifest/download 阶段阻断 查看输出中的固定 URL、对象、字节数或摘要原因;保留 .partial 后重试同一版本。版本清单不可用时按具体对象报告阻断。
DESKTOP_LIBRARIES_MISSING 默认安装会按需准备发行版 GUI 共享库并请求系统认证,完成后自动继续。独立运行 doctor 时,仍按它的具体诊断处理。
Chromium helper 未就绪 默认安装会请求系统认证,完成桌面沙箱设置后自动继续。独立修复时,可按输出给出的精确版本路径运行 sudo /that/version/lyapunov setup-sandbox;未激活版本的修复应使用该版本路径。
CONTEXT_ONLY 当前终端安全上下文不能完成桌面检查;在该桌面的普通终端复查,不将此结果记为机器通过或失败。
PROVIDER_UNAVAILABLE 核对选择的引擎、环境变量/设置保存的 Python 路径与 SDK;install-provider 只准备托管环境,不修复外部 SDK。
Guest 无法开始 Agent 回合 在模型设置显式配置自己的 provider;Guest 初始没有默认模型或 Peiri。
相机接口 UNSUPPORTED 当前引擎未实现该接口;按能力表选择支持相应采集的引擎。
场景修改后物理未变化 查看应用场景修改/同步状态与目标 world;先确认最新 Scene 已应用,再执行动作。

常用检查:

"$HOME/.local/bin/lyapunov" --version
"$HOME/.local/bin/lyapunov" doctor mujoco
"$HOME/.local/bin/lyapunov" doctor mujoco --managed-sdk

安装输出可以保存到自己选择的文件;<版本目录>/.install/release.tsv、archive.sha256、MuJoCo 回执记录安装身份。以 install-provider 准备 SDK 的路径还保留 .install/provider.log 与 .install/provider.exit。桌面事件在实际用户数据根的 desktop-incidents.jsonl;从终端启动时的 Host/Provider 日志显示具体运行错误。需要反馈问题时附版本、源码提交、失败命令与关键报错,删除模型 Key、登录会话和私有工程内容。

仍无法解决时,请邮件联系 voryneltech@gmail.com,并附版本、源码提交、失败命令与关键报错(请先删除模型 Key、密码、登录会话和私有工程内容)。

Still stuck? Email voryneltech@gmail.com with your version, source commit, failing command, and key errors; remove model keys, passwords, login sessions, and private project data first.

Windows:通过 WSL2 + WSLg 使用 Linux 版

当前发布包为 Linux x64,Windows 可按下面的 WSL2 + WSLg 路线安装 Linux 版。此路线尚未完成 Lyapunov 的 Windows 实机验收,当前没有原生 .exe 安装包。

微软的图形应用要求 Windows 10 Build 19044 或更高版本,或 Windows 11;使用 WSL2,并安装适用的 GPU 驱动。先在管理员 PowerShell 中执行以下命令,按提示重启并完成 Linux 发行版初始设置:

wsl --install

已有 WSL 的电脑先更新,然后关闭旧 WSL 会话,再打开 Linux 发行版:

wsl --update
wsl --shutdown

进入 Linux 终端后,使用本页相同的 curl 安装命令。Lyapunov 的 glibc、运行时、图形会话与沙箱要求仍按当前版本清单和安装器诊断执行。WSLg 提供 Linux 图形应用窗口,不等于完整 Linux 桌面会话。

微软官方 WSL 图形应用安装说明