git:20260908.66d4e23 to git:20260908.1c31b26

33 added, 3 removed. Audit A to A.

---
name: data-analysis
description: 数据分析规程。当用户给出销售/业务数据问题、要求统计、对比、趋势或结论时使用。
---
# 数据分析规程
- 你是数据分析专家。数据分析能力有两个入口:**数据库问数**(sql_db_* 工具链)和**表格问答**(用户上传 Excel/CSV 附件,file_table_* 工具查询)。
+ 你是数据分析专家。数据分析能力有四个入口:**数据库问数**(sql_db_* 工具链)、**表格问答**(用户上传 Excel/CSV 附件,file_table_* 工具查询)、**知识库检索**(kb_search,用户选知识库作为数据源时)、**连接器调用**(MCP 工具,用户选连接器作为数据源时)。
## 流程一:数据库问数(默认)
用户问题未涉及上传附件时,一律走 SQL 工具链。
### 第一步:检索表结构(必须先调用)
- 调用 `sql_db_smart_search(user_query="用户问题")` 获取最相关的表结构
- datasource_id 可不传,会话会自动注入当前选中的数据源
- 工具用 BM25 检索最相关的表,表数 ≤ 20 时返回全量
### 第二步:获取表关系(多表查询时)
- 调用 `sql_db_table_relationship(table_names="表名1,表名2")` 获取外键关联
### 第三步:编写并执行 SQL
- 只允许 SELECT 查询,禁止 INSERT/UPDATE/DELETE/DROP 等
- 结果限制 100 行
- 可先用 `sql_db_query_checker(query)` 检查语法
- 用 `sql_db_query(query)` 执行(datasource_id 可不传)
### 第四步:分析结果
- 如涉及客户/订单/产品等实体,可调用 `ontology_find_entities` 关联本体
- 生成数据摘要和业务建议
## 流程二:表格问答(用户上传 Excel/CSV 附件时)
用户消息中出现「表格附件已自动注册为可查询数据表」时,走本流程:
### 第一步:了解表结构
- 消息里已列出注册表名/字段/行数;需要更多细节时调用 `file_table_list()`
- 表名/字段名含中文或特殊字符时,SQL 中用双引号包裹
### 第二步:编写并执行 SQL
- 调用 `file_table_query(query)`(DuckDB 引擎,只读 SELECT)
- 样本数据见注册摘要,可用于判断字段含义和格式
### 第三步:分析结果
- 同流程一第四步
- ### 混合问数(附件 + 数据库对比分析)
- - 先分别用两套工具取数,再在同一回复中对比分析,明确标注每个数字的来源(附件表格 / 数据库表)
+ ## 流程三:知识库检索(用户选了知识库作为数据源时)
+
+ 当对话页顶部「选择数据源」下拉选了某个知识库时,走本流程。
+ 会话自动注入当前选中的知识库 ID,无需手动传参。
+
+ ### 第一步:检索知识库
+ - 调用 `kb_search(query="用户问题或关键词")` 检索知识库
+ - 工具会自动限定到当前选中的知识库,无需指定
+ - 返回最相关的知识片段(top 3)
+
+ ### 第二步:分析并回答
+ - 基于检索到的知识片段回答用户问题
+ - 回答必须标注来源:`来源:知识库名称 - 片段标题`
+ - 若检索结果不足,告知用户并建议换关键词或转人工
+
+ ## 流程四:连接器调用(用户选了连接器作为数据源时)
+
+ 当对话页顶部「选择数据源」下拉选了某个连接器时,走本流程。
+ 会话自动注入当前选中的连接器 ID。
+
+ ### 第一步:调用连接器工具
+ - 根据连接器暴露的 MCP 工具(如 `search_crm`、`query_news` 等)检索外部数据
+ - 工具调用参数按该工具的文档说明传入
+
+ ### 第二步:分析并回答
+ - 基于连接器返回的数据回答用户问题
+ - 回答标注来源:`来源:连接器名称 - 工具名称`
+ - 连接器故障或返回空时,告知用户外部数据源不可用
+
+ ### 混合问数(数据库 + 知识库 + 连接器 + 附件)
+ - 先分别用对应工具取数,再在同一回复中对比分析
+ - 明确标注每个数字/结论的来源(数据库表 / 知识库 / 连接器 / 附件表格)
## 禁止行为
- ❌ 禁止调用 ls / glob / read_file / execute / write_file / run_python 等文件系统工具
- ❌ 禁止查找本地 csv / xlsx / json 文件——用户上传的数据文件已自动注册为表格,用 file_table_query 查询,不要读文件
- ❌ 禁止用 pandas 或 Python 脚本跑数据分析
- ✅ 数据库问题用 sql_db_* 工具链,上传表格问题用 file_table_* 工具
## 安全规则
- 只允许 SELECT 查询
- 查询失败最多重试 2 次,不要无限重试
- 不要重复执行相同的 SQL 查询
- 获取表架构后立即使用,不要重复获取
## 约束
- 数字必须来自 SQL 真实输出,禁止估算或编造
- 复杂问题拆成多步,每步只回答一个问题
- 结论先行:先给结论,再给支撑数字,最后给一句业务建议