guanghu-ice-heart/server-tools/zhulan-remote-cell/README.md

42 lines
3.2 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.

# 铸澜受限远程开发单元
`zhulan-remote-cell``ICE-GL-ZL-001` 的手机远程开发运行入口。它把公网前门与真实运行体明确分开:
- `BS-GZ-006` 只承载 `guanghulab.com/zhulan/` 的域名、TLS 和反向代理,不保存或运行审批 UI
- `BS-SG-003` 承载真实 UI、申请、主人登录、批准、临时能力、策略校验、SQLite 状态与哈希回执链;
- UI 只投影运行层返回的事实,不拥有执行权;
- 公开申请本身没有任何服务器或仓库权限;
- 一次批准绑定 `persona + development_id + repository + base_sha + branch + paths + actions + expiry`,不得在会话内扩大。
## 当前能力
1. 铸澜可创建无执行权申请并取得一次性领取凭证;
2. 冰朔使用光湖代码频道账号登录审批端,密码仅用于当次 Forgejo 验证,不写入本地状态;
3. 批准后由运行层生成三小时临时能力,磁盘只保存摘要和重建所需的非秘密声明;
4. 临时能力只能领取一次,可由受限执行器通过回环 API 校验;
5. 所有申请、批准、拒绝、领取与校验事件写入前后哈希相连的回执链;
6. 代码门脚本检查当前分支、基线、改动路径、符号链接、超大文件与常见秘密模式;
7. 候选提交只进入 `BS-SG-003` 的内部复核库,不在远程会话中持有代码频道写凭证,也不直接发布中央仓库;本机铸渊复核后再走既有发布门。
审批/MCP 单元本身不提供任意远程 shell。手机开发另走官方 Codex Remote 链路:手机连接一台
受信任桌面主机,桌面 App 再连接 `BS-SG-003` 上的 `zhulan-codex` SSH 身份。该身份没有 sudo、
生产目录写权、中央代码频道写凭据或 `main` 发布权;`/etc/codex/requirements.toml` 强制只运行
管理员钩子,在会话启动、每次提示、工具调用、压缩前后和结束时恢复车道、写检查点并阻断越权。
候选只推送到服务器本机 `candidate` remote仍由本机铸渊复核后走既有发布门。
手机到桌面的 Remote 配对以及桌面 App 中的 SSH 项目登记必须由冰朔在同一 ChatGPT 账号和工作区
完成。源码部署不能冒充二维码已经扫描、远端 Codex 已登录或手机首轮任务已验收。
## 本地验收
```bash
python3 -m unittest discover -s tests -v
```
## 运行配置
生产安装读取 `/etc/guanghu/zhulan-remote-cell.env`,参考 `deploy/zhulan-remote-cell.env.example`。真实应用秘密、代码频道密码和临时能力都不得提交到仓库。
运行层默认仅监听 `127.0.0.1:17631`。广州 Nginx 只允许代理到一条专用的回环隧道,不得把新加坡运行端口直接暴露到公网。
Ubuntu 24.04 的生产验收命令通过专用的 `zhulan-bwrap` 副本和本机 Unix 套接字执行器运行。公网审批/MCP 服务继续保持 `NoNewPrivileges=true`;只有无公网监听、只接受策略登记命令的执行器负责创建 Bubblewrap 用户命名空间。安装器只为 root 持有、`zhulan-runtime` 组可执行的副本路径加载 AppArmor `userns` 例外;不得关闭全机的未授权用户命名空间限制,也不得把系统 `bwrap` 改成 setuid。