# 中台运行时加固：迭代与工具追溯台账

> 文档目的：记录“已完成迭代需求”“待完成工具”“工具使用说明”，作为后续对齐与更新的追溯入口。
> 
> 约定：本文件是工作台账，不替代 `requirements.md / design.md / tasks.md` 的正式规范地位。

---

## 1. 当前模块与范围

- 模块目录：`spec/mid-agent-runtime-hardening/`
- 当前需求版本：`v0.1.0`
- AC 范围：`AC-MARH-01 ~ AC-MARH-12`
- 当前目标：中台运行时加固（护栏、打断、KB默认工具链、超时统一、拟人分段、观测闭环）

---

## 2. 本轮已完成（截至当前）

> 说明：以下状态来自当前会话确认与实现验收检查；若后续代码有回滚/重构，请同步更新。

### 2.1 需求与规范产物（已完成）

- [x] `spec/mid-agent-runtime-hardening/requirements.md`
- [x] `spec/mid-agent-runtime-hardening/scope.md`
- [x] `spec/mid-agent-runtime-hardening/openapi.provider.yaml`
- [x] `spec/mid-agent-runtime-hardening/openapi.deps.yaml`
- [x] `spec/mid-agent-runtime-hardening/design.md`
- [x] `spec/mid-agent-runtime-hardening/tasks.md`

### 2.2 运行时能力（已完成）

- [x] 输出护栏强制执行链路（AC-MARH-01/02）
- [x] interrupted_segments 中断语义处理与兜底（AC-MARH-03/04）
- [x] Agent 默认 KB 工具链 + 失败降级（AC-MARH-05/06）
- [x] ReAct 循环上限与超时口径统一（AC-MARH-07/08/09）
- [x] 分段拟人策略（语义/长度 + delay）与统计（AC-MARH-10/11）
- [x] 运行时观测闭环（AC-MARH-12）

### 2.3 结构化提示

- 当前已观测到：代码注释中存在超出 `AC-MARH-01~12` 范围的 AC 编号引用，后续建议对齐清理，避免追踪口径不一致。

---

## 3. 工具建设现状与计划

## 3.1 已完成工具

### 工具 A：`kb_search_dynamic`

- 状态：✅ 已实现（在另一个并行窗口完成）
- 目标：通过元数据配置动态构建检索过滤参数，而非固定入参写死。
- 核心价值：
  - 适配不同场景差异化过滤需求
  - 运营配置变化可直接生效
  - 避免 Agent 无工具可用导致空转

---

## 3.2 待完成工具（下一阶段）

### 工具 B：`intent_hint`

- 状态：⏳ 待实施
- 定位：轻量意图识别 + 路由建议（软信号）
- 注意：不是最终裁决器，最终由 `policy_router` 决策。

### 工具 C：`high_risk_check`

- 状态：✅ 已实现
- 定位：高风险快速判定（退款/投诉升级/隐私敏感承诺/转人工）
- 目标：减少高风险场景误路由与慢路由
- 核心特性：
  - 基于租户元数据配置进行风险判定（从 HighRiskPolicy 表读取）
  - 支持关键词 + 正则 + 优先级匹配
  - 租户隔离（tenant_id 必须参与查询）
  - 超时 <= 500ms（可配置）
  - 返回结构化结果，不抛硬异常
  - 高风险优先于普通意图路由

### 工具 D：`memory_recall`

- 状态：✅ 已实现
- 定位：对话前读取用户记忆（profile/facts/preferences/summary/slots）
- 目标：减少重复追问、增强上下文连续性
- 核心特性：
  - 读取 profile/facts/preferences/last_summary/slots
  - 槽位冲突优先级：user_confirmed > rule_extracted > llm_inferred > default
  - 超时 <= 1000ms（可配置）
  - 失败不抛硬异常，返回空记忆包 + fallback_reason_code
  - 多租户隔离正确（tenant_id 必须参与查询）
  - 输出 missing_slots，供上层决定是否追问

### 工具 E：`memory_update_async`

- 状态：⏳ 待实施
- 定位：对话后异步记忆更新
- 目标：不阻塞主链路响应。

### 工具 F：`session_mode_control`（可选）

- 状态：⏳ 规划中
- 定位：智能体触发会话模式切换（BOT_ACTIVE/HUMAN_ACTIVE）
- 目标：转人工与回切更自动化。

---

## 4. 工具使用说明（当前约定）

## 4.1 `kb_search_dynamic` 使用说明（初版）

### 输入（概念）
- `query`：用户问题/检索问题
- `scene`：场景标识（决定元数据过滤策略）
- `tenant_id`：租户隔离
- `top_k`：召回数量
- `context`：会话已知槽位

### 核心行为
1. 基于元数据配置读取“生效 + 可过滤 + 适用知识库文档”的字段
2. 按字段类型（单选/多选/文本）动态生成过滤条件
3. 处理必填缺失与默认值回填
4. 执行检索并返回结构化结果

### 输出（概念）
- `hits`
- `applied_filter`
- `missing_required_slots`
- `filter_debug`
- `fallback_reason_code`

### 调用建议
- 优先用于开放咨询场景
- 低置信度或缺关键槽位时，不硬失败，可回退追问或降级模式

---

## 4.2 `intent_hint` 预期使用说明（待落地）

### 作用
- 提供低成本方向提示，减少 Agent 盲思考

### 非作用
- 不直接替代意图规则
- 不直接决定最终路由

### 协同原则
- 规则主导（硬约束） + hint 辅助（软信号） + router 裁决（最终）

---

## 5. 回归测试建议（页面联调优先）

1. 普通咨询：验证 KB 工具调用与分段输出
2. 高风险输入：验证接管/降级与 trace 字段
3. 打断重入：验证 interrupt_consumed 与语义连续性
4. 超时场景：验证 2s/8s 口径与 fallback_reason_code

---

## 6. 后续更新机制

每次确认细节或功能实现后，至少更新以下字段：

- 版本与日期
- 工具状态（⏳/🔄/✅）
- 输入输出变化
- 使用说明变化
- 风险与限制

建议在每次迭代结束时追加一段“变更记录”：

```markdown
### 变更记录（YYYY-MM-DD）
- 本次新增：...
- 本次调整：...
- 本次风险：...
- 下一步：...
```

---

## 7. 快速索引（相关文档）

- 需求：`spec/mid-agent-runtime-hardening/requirements.md`
- 设计：`spec/mid-agent-runtime-hardening/design.md`
- 任务：`spec/mid-agent-runtime-hardening/tasks.md`
- Provider 契约：`spec/mid-agent-runtime-hardening/openapi.provider.yaml`
- Deps 契约：`spec/mid-agent-runtime-hardening/openapi.deps.yaml`
- 协议：`docs/session-handoff-protocol.md`
