3.2 KiB
3.2 KiB
ADR-002:OpenClaw 与 Hermes 从控制面职责中解耦
- 状态:已采纳
- 日期:2026-07-20
- 影响范围:OpenClaw、Hermes、Execution Orchestrator、Agent Router、Audit、Web Console
1. 背景
OpenClaw 和 Hermes 已经具备成熟的执行能力,但历史实现可能同时承担部分租户、策略、任务状态或运维控制职责。如果继续扩展这种模式,AIOS 将无法成为唯一控制面,也无法统一 Web、审计和多租户隔离。
2. 决策
OpenClaw 与 Hermes 通过稳定的 Adapter/Boundary 接入 AIOS:
AIOS Control Plane
|
v
Execution Orchestrator
|
+--> OpenClaw Adapter --> OpenClaw Runtime
|
+--> Hermes Boundary --> Hermes Workers
OpenClaw 只负责:
- 验证签名命令;
- 执行;
- 查询状态;
- 取消;
- 健康检查;
- 返回结果和生命周期事件。
Hermes 只负责:
- tenant/cell/profile 分区队列;
- Worker claim;
- Lease 与 Heartbeat;
- 执行;
- 完成、失败、取消和结果回传。
二者均不得:
- 创建或批准 AIOS Task;
- 修改租户或策略;
- 维护第二套任务生命周期;
- 绕过 AIOS Audit;
- 向浏览器提供直接控制入口。
3. 备选方案
方案 A:让 OpenClaw 继续拥有控制职责
拒绝原因:会产生第二控制面,并使 Web、审批和审计持续分裂。
方案 B:让 Hermes 统一控制和执行
拒绝原因:Hermes 的核心价值是 Worker Runtime 与队列,不应承担产品、租户和策略治理。
方案 C:直接替换 OpenClaw/Hermes
拒绝原因:不符合能力复用原则,会扩大迁移风险和开发量。
4. 正面影响
- AIOS 保持唯一权威状态;
- OpenClaw/Hermes 可以独立升级;
- 新 Runtime 可使用相同接入模式;
- Web 和审计不再依赖 Runtime 内部实现;
- 可逐步关闭旧旁路,而不需要一次性重写执行层。
5. 负面影响与风险
- 需要维护稳定的命令、结果和健康 Contract;
- 旧调用路径可能在迁移期并存;
- Runtime 联调和错误语义需要统一;
- Adapter 本身成为重要可靠性边界。
6. 迁移步骤
- 定义 OpenClawCommand/OpenClawResult/RuntimeHealth;
- 定义 HermesJob/HermesResult/HermesHealth;
- 引入 AIOS Orchestrator;
- 将新任务先通过 Adapter 执行;
- 迁移 Web、Codex 和自动任务入口;
- 冻结旧 Runtime 控制接口;
- 通过网络策略或代码门禁关闭旁路。
7. 回滚原则
允许回滚 Runtime 或 Adapter 版本,但不允许回滚到 Runtime 重新拥有 Tenant、Policy、Approval 或 Task Lifecycle 的模式。
8. 合规检查
- OpenClaw 输入是否为 AIOS 生成的签名命令?
- Hermes Job 是否包含 tenant/cell/profile?
- Runtime 是否只返回结果,不直接写 AIOS Store?
- Web 是否只调用 AIOS API?
- Runtime Bug 修复是否同步更新 Contract、测试和文档?
9. 实现与测试映射
- OpenClaw:
active-runtime/app/aios_openclaw/ - Hermes:
active-runtime/app/aios_hermes/ - Orchestrator:
active-runtime/app/aios_v2/orchestrator.py - 测试:
tests/aios_v2_candidate/test_candidate_flow.py - 模块契约:
docs/aios-v2/04-MODULE-CONTRACTS.md