2.1 KiB
2.1 KiB
V2R1C2 Owner Provenance 与微信接管迁移
边界
本迁移不关闭或降低 aios-tenant-boundary。普通、已识别的消息可以进入只读对话;
只有服务端确认的 Owner 才能为 aios_protected_dispatch 自动签发
aios.owner-provenance/v2。未知、阻止名单和受保护操作的非 Owner 请求继续 fail closed。
客户端不得提交可信身份 Header、私钥、签名或 Provenance Token。插件从 OpenClaw
可信 hook 上下文取得 principal_id、agent_id、run_id 和 execution path,并对
精确工具参数计算 SHA256。服务端签发记录绑定:
tenant_idprincipal_idtask_idagent_idrun_idexecution_pathrequest_digestissued_at/expires_atkey_id与覆盖全部字段的 Ed25519 signature
参数在 hook 与 tool execute 之间改变、错误身份绑定、过期、撤销或单次 permit 重放 都会被拒绝。
配置迁移
私钥仍位于仓库外。部署系统只写入路径引用,并验证目标文件存在、为普通文件且权限 不向 group/other 开放。需要在 Candidate 专用配置中增加:
provenancePrivateKeyPath=<outside-git path>
provenancePublicKeyPath=<outside-git path>
provenanceStoreDir=/var/lib/aios-v2r1c2-portal/provenance
provenanceKeyId=<non-secret key id>
tenantId=<candidate tenant>
protectedDispatchProvider=chatgpt-supervisor
protectedDispatchTransport=mock|sandbox
ownerProvenanceTtlMs<=300000
mockFailFirstDelivery 只允许在明确的模拟验收配置中启用。模拟输出必须保留:
simulation=true、transport=mock|sandbox、real_user_impersonated=false。
部署与回滚
- 从精确 Candidate OID 构建插件与 Portal;不得从 live 目录回写源码。
- 备份 Candidate 插件、配置和 unit;不修改 18920 服务或状态目录。
- 在 18921 完成正向链、负向矩阵、mock/sandbox 微信、restart recovery。
- 回滚只停止
aios-v2r1c2-portal.service并恢复 Candidate 备份;随后重新验证 18920。 - 未经 Owner 明确批准,不创建 Tag、不修改
main、不替换生产。