Files
Mujoco_WASM/docs/website-hosted-control-2026-09-24.md
T
chenlin 0d986f60bd
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
feat: release v1.0.2 LeKiwi 语言控制与网站嵌入
集成服务器托管模型、自然语言移动与有界抓放、内置 LeKiwi URL 导入和双摄像头;同步部署契约与指定域名 iframe 白名单,保留原有物理安全、会话及调用预算防护。

更新 npm 包及锁文件版本、CHANGELOG 与发布文档。提交前 typecheck、120 项定向前端测试和 44 项后端测试通过(3 项可选跳过);真实 v2 云模型抓放仍待单独验收,不包含运行密钥或构建产物。
2026-09-24 15:29:49 +08:00

77 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 服务器内置模型与语言控制 · 2026-09-24
## 用户最新要求及安全实现
用户要求网站使用项目 `.env` 中的密钥,不再让前端填写 API,默认 DeepSeek flash / Jev 1.13,并支持“前进0.5m”“转动90度”等语言控制。
已采用**服务器配置**而非把秘密编入网页:
- 只读取授权的 `Deepseek_API_KEY` 与 `OPENROUTER_API_KEY`。没有整份上传 `.env`,没有读取其他凭据或全局 Codex 登录。
- 固定 `deepseek-flash` / Responses 与 `typesafe/jev-1.13` / OpenRouter Decisions,不改模型或使用其他 OpenRouter 主规划模型。
- 密钥通过 SSH 标准输入传输,不进命令参数或日志。服务器文件 `/opt/cadworld-sim/secrets/model-keys.env` 为 0400 / 10001:10001,父目录 root/0700;仅文件只读挂入应用容器。
- 网页/静态包/镜像/Git 均无密钥。上线前对静态构建扫描两项真实密钥;公网 `/.env` 和 `/run/secrets/model-keys.env` 返回 404。
- 前端无模型、密钥、BYOK 或订阅设置;公开配置、模型目录、付费连接测试和订阅接口在共享模式返回 403。本地旧界面和官方订阅实现不删除。
- 全站共享**60 次/小时、600 次/滚动24小时**的上游调用预留限额,生产并行 2;`/command` 预留 2 次,其他推理 1 次。失败不退款,SQLite 留在宿主预算目录;换会话/部署不会清零。
- 这是调用次数限制,不是美元硬预算。公开用户可能耗尽公共额度,费用由站长承担;建议供应商侧另设金额上限。
## 当前支持
路径:**控制台 → 机器人语言控制**,先导入并选择 LeKiwi v1 profile。
- 前进/后退:0.01–1 米,沿当前机器人朝向。
- 左转/右转:1–180 度;逆时针为左转,顺时针为右转。
- 一次一个动作;“转动90度”方向不明则询问,不默认左/右,不执行原抓放任务。
- 可输入“把方块搬到支撑台”请求固定台面抓放演示;该动作会重载演示场景。移动与转向不重载模型。
- 停止按钮、文本“停止”、隐藏、卸载、换场景/控制权可取消。已运行其他控制器时在付费请求之前拒绝,需用户先停止它。
DeepSeek 只返回受限结构化意图,Jev 检查是否匹配单个请求。浏览器保留单一物理时钟与写入票据,使用实际底盘位姿闭环,而非修改 qpos/瞬移;完成要求误差稳定 0.3 s,位置 <8 mm、角度 <0.015 rad,且实际速度已降低。速度/加速度、倾斜/高度、障碍接触、时钟异常、30 s 仿真/60 s 墙钟上限均可停止动作。
范围仅为**模拟 LeKiwi、空旷平地**;没有任意机器人泛化、避障规划、任意物体或复合动作承诺。
## 实际验收(区分证据)
### 免费门禁
- TypeScript、ESLint、Ruff、625 项 Vitest(132 文件)、43 项后端测试含原生 Codex 无工具门禁通过。
- local / website 生产构建通过;原本地工作台导入、mock 抓放、暂停继续与导出回归通过。
- 网站生产资源+真实网关/假 HTTP 上游:前进、左转、沿新朝向前进、右转、后退、方向含糊拒绝、运动中停止、完整抓放均通过(3 个 E2E 用例)。
- 公网非付费检查 2/2:Pyodide、无密钥输入、未配置机器人零推理、只读模型配置、订阅关闭、秘密路径 404、会话销毁。
- 第一次假上游抓放测试失败是 fixture 总选第一候选、错误报告已夹紧导致;修正 fixture 按观测生成判断后通过,没有放松生产的物理校验。
### 一轮真实付费验证(未重试)
固定上游、没有前端填写密钥,最多批准 4 次 DeepSeek / 14 次 Jev;实际 **4 次 DeepSeek+13 次 Jev**,17 次预留。
| 指令 | 结果 | 真实物理证据 |
| ---------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 前进0.5米 | 成功 | 实际 `0.4966307933 m`,无重载/瞬移 |
| 左转90度 | 成功 | 实际 `89.8288865163°`,从上一个动作结束位置开始 |
| 把方块搬到支撑台 | **安全停止,未完整通过** | 搬运 `0.5937274002 m`,42.218 s 时已在目标支撑、双指力 0、夹爪 opening≈0.999685;松开后 Jev 对下一步选择 `stop`,未执行最后撤离/稳定验收 |
抓放末尾 Jev 同时报告 `grasp=empty, diagnosis=none, recovery=continue, choice=stop`。系统遵从 stop,不覆盖其判断、不伪报成功,也没有自动重试。此前 BYOK 阶段有完整真实抓放成功记录,但**不能将本轮停止改写成通过**。
- DeepSeek 报告合计 2709 token,未报告费用。
- Jev 本轮合计报告 **$0.000644154**,不含 DeepSeek,不等于完整账单。
- 测试会话已销毁;没有 trace/HAR、浏览器凭据输入或存储状态保存。
- 真实动作测试发生在首次 hosted 发布;后续只加“其他控制器占用时先拒绝、避免无效付费”的预检及文档,未改动作算法/模型请求,未再次消费真实模型额度。
## 发布与运维
- 当前:`20260924T035108Z-hosted`。
- 上一版/回滚:`20260924T032955Z-hosted`(同为服务器内置配置)。
- 当前镜像:`sha256:ad1333475d46ae86776f05210c53b71891a31a9fd407d48a86917a8c6c9c3f3a`,healthy。
- 应用 10001:10001、只读根、宿主仅回环端口;未重启 1Panel/Docker 等无关服务。
- 第二次发布替换容器后实际查询预算仍为 **17**,证实未重置。未删除密钥或预算目录。
- `v1.0.1` 标签保持不变,本轮代码未另行 commit/push。
证据(本地,不随站点发布):
- `build/website-deployment/hosted-live/`:两项运动成功、抓放停止 JSON 与调用汇总。
- `hosted-fixture-final/`、`hosted-motion-final/`、`hosted-local-regression/`:免费物理回归。
- `hosted-production-final/`:公网非付费 2/2。
- `hosted-security.txt`、`hosted-final-health.txt`:权限、镜像、健康、跨容器预算持久化。
## 计划剩余
用户已改为固定 DeepSeek+Jev,因此不再安排其他 OpenRouter 主规划模型收费测试。语言控制与服务器内置配置已交付;本次完整抓放复验未全部通过,**第 9 步暂不标记完成**。若继续,需要用户批准一次额外受控复验或明确接受该安全停止边界;不能静默增加调用、替换模型或绕过 Jev。