---
name: kb_search_dynamic
description: 知识库动态检索工具，支持元数据驱动过滤
triggers:
  - 用户问题需要知识库事实支撑回答
  - 需要按租户元数据动态过滤知识条目
  - 涉及产品知识、政策条款、FAQ查询
  - 用户询问具体业务规则或流程
anti_triggers:
  - 纯闲聊或问候语
  - 仅流程确认（如"好的"、"明白了"）
  - 已有充分 KB 结果且无需补充
  - 用户问题与知识库内容无关
tools:
  - kb_search_dynamic
---

## 使用指南

### 何时使用
当需要知识库事实支撑回答，且需按租户元数据动态过滤时使用。

### 何时不使用
当用户问题不依赖知识库（纯闲聊/仅流程确认）或已有充分 KB 结果时不重复调用。

### 参数说明

| 参数 | 类型 | 必填 | 说明 |
|-----|------|-----|------|
| query | string | 是 | 检索查询文本 |
| tenant_id | string | 是 | 租户 ID（系统自动注入） |
| scene | string | 否 | 场景标识，如 open_consult |
| top_k | integer | 否 | 返回条数，默认5 |
| context | object | 否 | 上下文，用于动态过滤字段 |

### 示例调用

```json
{
  "query": "退款到账一般要多久",
  "scene": "open_consult",
  "top_k": 5,
  "context": {"product_line": "vip_course", "region": "beijing"}
}
```

### 结果解释

- `success=true` 且 `hits` 非空：命中知识，可直接使用
- `missing_required_slots` 非空：应先向用户补采信息
- `fallback_reason_code` 存在：需降级处理

### 注意事项

1. tenant_id 由系统自动注入，模型不要填写
2. context 字段用于传递动态过滤条件，如产品线、地区等
3. 避免重复调用：如果上一轮已有充分结果，不要再次调用
4. 查询文本应保持用户原意，不要过度改写
