# Agent Orchestrator 与运行流程

## 1. Orchestrator 定位

Agent Orchestrator 是双 Agent 架构的调度中心。

它不负责生成最终答案，而是负责：

- 接收用户请求或定时任务。
- 调用语义解析。
- 判断处理方。
- 选择工具。
- 检查权限。
- 记录审计。
- 管理失败重试。
- 控制高风险动作确认。

## 2. 运行主流程

```text
输入
  用户消息 / 页面按钮 / 定时任务 / 系统事件
  ↓
语义解析
  输出 ontology_json
  ↓
Orchestrator 决策
  判断 agent = hermes | user_agent
  判断 tool = rule | mcp | db | knowledge | task
  ↓
权限检查
  用户权限 / 任务权限 / 数据范围
  ↓
工具执行
  规则中心 / MCP / 数据库 / 知识库 / 任务系统
  ↓
Agent 汇总
  Hermes 报告 / User Agent 回答
  ↓
审计记录
  保存输入、语义、工具、结果、动作
```

## 3. 路由规则

### 3.1 Hermes 路由

满足以下条件之一，进入 Hermes：

```text
source = schedule
source = system_event
intent = monitor
intent = summarize and no active user session
next_step = generate_report and task_type is batch
scenario in daily_risk_scan / knowledge_accumulation / mcp_health_check
```

### 3.2 User Agent 路由

满足以下条件之一，进入自建 Agent：

```text
source = user_message
source = page_action
intent = query / explain / create / validate / reconcile
requires_user_context = true
next_step = ask_clarification
next_step = create_draft
```

### 3.3 工具路由

```text
next_step = query_database
  调用数据库查询服务

next_step = run_rule
  调用规则中心

next_step = call_mcp
  调用 MCP 服务

next_step = search_knowledge
  调用知识库检索

next_step = create_task
  调用任务系统

next_step = ask_clarification
  返回追问
```

## 4. 用户流程示例

用户输入：

```text
上个月哪些客户应收逾期超过 30 天？
```

流程：

```text
Step 1: User Agent 接收消息
Step 2: semantic_parser 输出 ontology_json
Step 3: Orchestrator 识别 domain = accounts_receivable
Step 4: next_step = query_database
Step 5: 权限检查用户是否可看应收数据
Step 6: 查询应收账龄表
Step 7: User Agent 汇总结果
Step 8: 返回客户清单、金额、逾期天数、风险说明
```

## 5. Hermes 任务示例

任务：

```text
每日风险巡检
```

流程：

```text
Step 1: 任务调度器在 02:00 触发
Step 2: Orchestrator 构造 ontology_json
Step 3: 路由给 Hermes
Step 4: Hermes 拉取昨日业务快照
Step 5: 执行规则中心规则
Step 6: 调用 MCP 验真、账款流水
Step 7: 生成风险报告
Step 8: 写入风险工单
Step 9: 记录任务日志
Step 10: 通知财务风控组
```

## 6. 审计日志

每次 Agent 运行都应该写入审计。

建议字段：

```json
{
  "id": "",
  "source": "user_message | schedule | system_event",
  "agent": "hermes | user_agent",
  "user_id": "",
  "task_id": "",
  "ontology_json": {},
  "tools_called": [],
  "permission_scope": {},
  "result_summary": "",
  "action_taken": "",
  "requires_confirmation": false,
  "created_at": ""
}
```

## 7. 失败处理

### 7.1 用户交互失败

```text
数据库查询失败
  返回“暂时无法查询”，记录错误

缺少关键字段
  返回追问

权限不足
  返回无权限说明

MCP 不可用
  返回降级说明，必要时生成待处理项
```

### 7.2 Hermes 任务失败

```text
任务失败
  自动重试 3 次

部分 MCP 失败
  标记 partial_success

数据不完整
  生成异常任务日志

连续失败
  通知管理员
```

