feat(hololake): add mobile server account and capability proxy

This commit is contained in:
冰朔 2026-08-02 21:49:53 +08:00
commit 19bd38c6e3
11 changed files with 1436 additions and 1 deletions

View file

@ -27,6 +27,22 @@
- 所有改变服务器状态的登记动作必须先生成备份引用和回滚方案;失败自动回滚,成功写验收回执;
- 广州公开代理只应暴露 `/approve/``/api/workorders` 与 claim 路由,服务本体监听 JD 回环地址。
## HoloLake 手机身份、知识湖与模型代理
HoloLake 手机端使用独立的邮箱验证码会话,不复用工单批准链接:
- `/api/hololake/session/email/request` 对已登记和未登记邮箱返回相同形态,避免枚举账号;
- 六位验证码只在邮件正文出现,服务器状态仅保存带私密 pepper 的摘要,十分钟失效且最多尝试五次;
- 会话绑定 HoloLake 设备编号,手机仅保存短期会话令牌;服务器磁盘仍只保存令牌摘要;
- `/api/hololake/knowledge/manifest``/archive` 只暴露固定登记仓库
`bingshuo/hololake-knowledge-base` 的当前 `refs/heads/main` 快照,不向手机下发 Forgejo 凭据;
- `/api/hololake/ai/catalog` 只返回可用模型编号;`/execute` 只调用服务器登记的提供商与模型,
不接受任意 URL、请求头或密钥响应和回执均不包含服务器密钥。
私密模型登记文件使用 `hololake-ai-providers.example.json` 的结构,真实文件只放在
`/etc/guanghu/secrets/hololake-ai-providers.json`,不得提交到仓库。知识仓库路径、模型
登记文件、session pepper 和会话状态路径由 `authorization.env` 固定;手机不能切换这些路径。
`request-workorder.js` 从临时环境变量读取 QQ 数字,在内存中补全邮箱并只发送
SHA-256 指纹;数字本身不会写入请求正文、状态文件或代码仓库。未提供私密
request credential 时,脚本自动切换到跨设备公开建单模式。