# Kestra 多 Agent 编排 POC 评估方案

## 1. 背景

当前系统已经有多种 agent 协作机制：

| 机制 | 底层逻辑 | 适合场景 | 限制 |
|---|---|---|---|
| `delegate_task` | 当前 turn 内同步子 agent fork/join | 短任务、低风险、工具噪音隔离 | 不持久，父会话中断会影响子任务 |
| profile delegation | 调用指定 Hermes profile 执行任务 | 需要 persona/工具/记忆的 worker | 默认不是状态机，跨机器要额外桥接 |
| Hermes Kanban | SQLite 持久任务板 + dispatcher + worker profile | 同机多 profile、依赖、block/retry、审计 | 默认 host-local，Bot1 不自动调 Bot2 |
| OpenClaw/OpenCloud | 受控执行 worker/gateway | 执行层分身、工种隔离 | 不应拥有治理/记忆/NAS 写入权限 |
| Kestra | 外部 workflow orchestration platform | 跨服务流程、状态 UI、触发、重试、审计 | 不是 LLM 记忆/人格/语义治理框架 |

## 2. Kestra 的合适定位

推荐把 Kestra 放在这一层：

```text
Kestra = 跨机器 / 跨服务 / 跨 agent 的流程状态机 + 进度可视化面板
```

它不替代 Hermes 的判断层，而是接收 Hermes 或用户发起的标准化流程，然后按步骤调用 Bot1、Bot2、OpenClaw 或其他服务。

## 3. 推荐总体架构

```text
用户 / Feishu
  ↓
Hermes IT / Coordinator
  ↓
任务类型判断
  ├─ 短任务：delegate_task
  ├─ Bot1 同机多 profile：Hermes Kanban
  ├─ 单 profile 执行：hermes -p <profile> chat -q ...
  ├─ OpenClaw 执行层：OpenClaw gateway / CLI
  └─ 跨 Bot1/Bot2/OpenClaw 标准流程：Kestra Flow
```

Kestra 负责：

- flow 状态；
- step 顺序；
- 重试；
- 失败可见；
- Web UI 进度；
- 定时和 webhook；
- 审计日志；
- 调用外部 worker。

Hermes 继续负责：

- 用户意图判断；
- Skill/SOUL/安全边界；
- profile 选择；
- 输出验收；
- NAS 写入确认；
- 最终对用户汇报。

## 4. 三阶段推进

### 阶段 0：方案与 flow 草案

当前阶段。只创建文档和草案，不安装服务。

产物：

- POC 方案；
- 接口/安全边界；
- 3 个最小 flow 草案。

### 阶段 1：临时本地 POC

目标：不动 NAS 服务，不改 Hermes gateway，临时跑 Kestra 验证流程。

验证 flow：

1. Bot1 profile ping：Kestra 调用 Bot1 `hermes -p it chat -q` 返回 `BOT1_OK`。
2. OpenClaw ping：Kestra 调用 OpenClaw loopback gateway 或 CLI 返回 `OPENCLAW_OK`。
3. Bot2 profile ping：Kestra 通过 SSH/API 调 Bot2 profile 返回 `BOT2_OK`。

验收标准：

- Kestra UI 可以看到每个 execution；
- 每步日志可读且不泄密；
- 失败能定位到具体 step；
- retry/kill 状态可见；
- Hermes 可以读取 execution 状态并给用户简报。

### 阶段 2：NAS 常驻候选

只有阶段 1 验证通过后才评估 NAS 常驻。

需要确认：

- NAS Docker/Container 控制方式；
- PostgreSQL 是新库还是复用现有 NAS PostgreSQL；
- Kestra 内部 storage 位置；
- UI 访问方式；
- 是否内网-only；
- 是否反代加认证；
- 日志保留周期；
- secrets 管理方式；
- Bot1/Bot2 调用凭据边界。

## 5. 不建议的方案

不建议：

- 让 Kestra 替代 Hermes Kanban 管 Bot1 同机所有 profile；
- 让 Kestra 直接读取或写入 NAS 共享知识库/项目归档；
- 让 Kestra 直接改 Hermes config、gateway、LaunchAgent；
- 在 flow 日志打印 secrets；
- 一开始就公网暴露 Kestra UI；
- 一开始就让 NAS 运行所有 AI 执行负载。

## 6. 推荐下一步

下一步可执行动作是：

1. 选择 POC 运行位置：Bot1 临时 Docker / Bot1 本地 / NAS 临时容器；
2. 安装或启动 Kestra 临时环境；
3. 用 `flows/` 下草案生成真实 flow；
4. 按 live schema 校验并部署；
5. 跑 3 个最小 execution；
6. 输出验证报告。

涉及安装服务、端口、NAS 容器或常驻进程前，需要再次确认。
