Files
aios/docs/aios-v2/08-OWNER-PROVENANCE-WECHAT-TAKEOVER.md
T

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_id
  • principal_id
  • task_id
  • agent_id
  • run_id
  • execution_path
  • request_digest
  • issued_at / expires_at
  • key_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。

部署与回滚

  1. 从精确 Candidate OID 构建插件与 Portal;不得从 live 目录回写源码。
  2. 备份 Candidate 插件、配置和 unit;不修改 18920 服务或状态目录。
  3. 在 18921 完成正向链、负向矩阵、mock/sandbox 微信、restart recovery。
  4. 回滚只停止 aios-v2r1c2-portal.service 并恢复 Candidate 备份;随后重新验证 18920。
  5. 未经 Owner 明确批准,不创建 Tag、不修改 main、不替换生产。