# 中台智能体运行时加固（MARH）设计文档

## 1. 设计目标

围绕 AC-MARH-01~12，构建中台运行时加固层，确保输出可控、打断可消费、检索可依赖、时延可治理、节奏可调优。

---

## 2. 架构改造点

## 2.1 对话主链路增强
在 `respond` 主流程增加以下阶段：
1. `interrupt_context_enricher`：消费 `interrupted_segments`
2. `kb_default_tool_stage`：Agent 默认检索工具尝试
3. `output_guardrail_stage`：输出前强制过滤
4. `segment_humanizer`：语义+长度分段与 delay 计算
5. `runtime_observer`：补齐 trace 与 metrics

## 2.2 超时统一治理
- ReAct 最大循环：3~5
- 单工具超时：<=2000ms
- 全链路超时：<=8000ms
- 超时均落 `fallback_reason_code`

---

## 3. 关键流程

## 3.1 正常响应流程
1. 收到请求并校验已送达历史
2. 若存在中断片段则做语义去重标记
3. policy_router 决策
4. Agent 模式默认调用 KB 工具（可降级）
5. 生成候选文本
6. 输出护栏强制过滤
7. 分段拟人策略生成 `segments[]`
8. 输出 trace（guardrail/interrupt/kb_hit/timeouts/segment_stats）

## 3.2 打断重入流程
1. 新请求带 `interrupted_segments`
2. 重规划时避开被打断语义
3. 若中断信息异常则兜底继续

---

## 4. 数据结构与字段补充

新增或强化 trace 字段：
- `guardrail_triggered`
- `guardrail_rule_id`
- `interrupt_consumed`
- `kb_tool_called`
- `kb_hit`
- `segment_stats`
- `timeout_profile`

---

## 5. 组件职责

- `OutputGuardrailExecutor`
  - 强制执行输出过滤
  - 返回 blocked/filtered_text/rule_id

- `InterruptContextEnricher`
  - 将中断片段转成重规划上下文
  - 提供异常兜底

- `DefaultKbToolRunner`
  - Agent 默认 KB 检索
  - 失败时返回降级信号

- `SegmentHumanizer`
  - 文本分段与 delay 生成
  - 支持租户覆盖配置

- `RuntimeObserver`
  - 汇总 trace 与 metrics

---

## 6. 与 AC 映射

- AC-MARH-01/02：`OutputGuardrailExecutor`
- AC-MARH-03/04：`InterruptContextEnricher`
- AC-MARH-05/06：`DefaultKbToolRunner`
- AC-MARH-07/08/09：`TimeoutGovernor + Orchestrator`
- AC-MARH-10/11：`SegmentHumanizer`
- AC-MARH-12：`RuntimeObserver`
