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
集成服务器托管模型、自然语言移动与有界抓放、内置 LeKiwi URL 导入和双摄像头;同步部署契约与指定域名 iframe 白名单,保留原有物理安全、会话及调用预算防护。 更新 npm 包及锁文件版本、CHANGELOG 与发布文档。提交前 typecheck、120 项定向前端测试和 44 项后端测试通过(3 项可选跳过);真实 v2 云模型抓放仍待单独验收,不包含运行密钥或构建产物。
77 lines
6.8 KiB
Markdown
77 lines
6.8 KiB
Markdown
# 服务器内置模型与语言控制 · 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。
|