内置 Subagent¶
概览¶
内置 Subagent 是集成在 Datus Agent 系统中的专用 AI 助手。每个subagent专注于数据工程自动化的特定方面——分析 SQL、生成语义模型、将查询转换为可复用指标——共同构成从原始 SQL 到具备知识感知的数据产品的闭环工作流。
本文档涵盖核心 subagent:
- gen_sql_summary — 总结和分类 SQL 查询
- semantic_modeling — 创作 Dosi 语义模型和指标
- ask_metrics — 基于已有语义指标回答 KPI、趋势、分组指标和归因问题
- explore — 只读数据探索和上下文收集
- gen_sql — 具备深度专业知识的专用 SQL 生成
- gen_report — 灵活的报告生成,支持可配置工具
- gen_table — 数据库建表(CTAS 或自然语言描述)
- gen_job — 数据管道执行(单库 ETL 和跨库迁移,含对数校验)
- gen_skill — skill 创建与优化
- gen_visual_report — 在
reports/<slug>/下产出自包含的可视化报告
Airflow 调度和外部 BI authoring 由主 agent 直接使用已安装 plugin 完成, 不再属于内置或自定义 subagent。
在 REPL 中可以直接描述任务,由主 agent 自动派发给合适的 subagent。如需为
单条消息明确指定,可在请求末尾加 @Agent <名称>;/agent <名称> 用于切换
后续消息使用的当前 agent。旧的 /<subagent> <消息> 形式不再支持。
配置¶
内置subagent开箱即用,最小化配置。大部分设置(工具、hooks、MCP 服务器、系统提示)都是内置的。你可以在 agent.yml 文件中自定义:
agent:
agentic_nodes:
semantic_modeling:
model: claude # 可选:默认使用已配置的模型
max_turns: 30 # 可选:默认为 30
ask_metrics:
model: claude # 可选:默认使用已配置的模型
max_turns: 12 # 可选:默认为 12
gen_sql_summary:
model: deepseek # 可选:默认使用已配置的模型
max_turns: 30 # 可选:默认为 30
explore:
model: haiku # 推荐:较小模型适合工具调用任务
max_turns: 15 # 可选:默认为 15
gen_sql:
model: claude # 可选:默认使用已配置的模型
max_turns: 30 # 可选:默认为 30
gen_report:
model: claude # 可选:默认使用已配置的模型
max_turns: 30 # 可选:默认为 30
tools: "semantic_tools.*, context_search_tools.list_subject_tree" # 可选:默认使用语义+上下文工具
gen_table:
max_turns: 20 # 可选:默认为 20
gen_job:
max_turns: 30 # 可选:默认为 30
gen_skill:
max_turns: 30 # 可选:默认为 30
gen_visual_report:
model: claude # 可选:默认使用已配置的模型
max_turns: 30 # 可选:默认为 30
report_dist: ~/report_dist # 可选:HTML 离线编译时使用的本地 dist 目录
可选配置参数:
model:使用的 AI 模型(如claude、deepseek)。默认使用已配置的模型。max_turns:最大对话轮数(默认:30)
内置配置(无需设置):
- 工具:根据 subagent 类型自动配置
- Hooks:按工作流启用验证和知识库同步
- 语义 adapter 工具:semantic_modeling 使用 Dosi 校验和查询工具
- 系统提示:内置模板;未设置 prompt_version 时使用最新可用版本
- 工作空间:~/.datus/data/{datasource}/ 及 subagent 特定子目录
gen_sql_summary¶
概览¶
SQL 摘要功能帮助你分析、分类和编目 SQL 查询,用于知识复用。它自动生成结构化的 YAML 摘要,存储在可搜索的知识库中,便于将来查找和复用相似的查询。
什么是 SQL 摘要?¶
SQL 摘要 是一个结构化 YAML 文档,包含:
- 查询文本:完整的 SQL 查询
- 业务上下文:域、类别和标签
- 语义摘要:用于向量搜索的详细说明
- 元数据:名称、注释、文件路径
快速开始¶
直接描述需求,或在消息末尾指定 SQL 摘要生成 subagent:
Analyze this SQL: SELECT SUM(revenue) FROM sales GROUP BY region. You can also add a description. @Agent gen_sql_summary
生成工作流¶
graph LR
A[用户提供 SQL + 描述] --> B[智能体分析查询]
B --> C[检索上下文]
C --> D[生成唯一 ID]
D --> E[创建 YAML]
E --> F[保存文件]
F --> G[同步到知识库]
详细步骤:
- 理解 SQL:AI 分析你的查询结构和业务逻辑
- 获取上下文:自动从知识库检索:
- 现有主题树(domain/layer1/layer2 组合)
- 类似的 SQL 摘要(最相似的前 5 个查询)用于分类参考
- 生成唯一 ID:使用
generate_sql_summary_id()工具,基于 SQL + 注释生成 - 创建唯一名称:生成描述性名称(最多 20 个字符)
- 分类查询:按照现有模式分配域、layer1、layer2 和标签
- 生成 YAML:创建结构化摘要文档
- 保存文件:使用
write_file()工具将 YAML 写入工作空间 - 同步到知识库:存储到 LanceDB 用于语义搜索
同步行为¶
在 interactive 模式下,YAML 文件写入成功后,generation hook 会自动把它同步到知识库。在 workflow/API 模式下,请使用对应的显式同步步骤或工具。
主题树分类¶
在 CLI 模式下通过问题中包含主题树来组织 SQL 摘要:
带主题树示例:
Analyze this SQL: SELECT SUM(revenue) FROM sales, subject_tree: sales/reporting/revenue_analysis. @Agent gen_sql_summary
不带主题树示例:
未提供时,agent 会基于知识库中的现有主题树和相似查询自动建议分类。
YAML 结构¶
生成的 SQL 摘要遵循以下结构:
id: "abc123def456..." # 自动生成的 MD5 哈希
name: "Revenue by Region" # 描述性名称(最多 20 个字符)
sql: | # 完整 SQL 查询
SELECT
region,
SUM(revenue) as total_revenue
FROM sales
GROUP BY region
comment: "Calculate total revenue grouped by region"
summary: "This query aggregates total revenue from the sales table, grouping results by geographic region. It uses SUM aggregation to calculate revenue totals for each region."
filepath: "/Users/you/.datus/data/reference_sql/revenue_by_region.yml"
domain: "Sales" # 业务域
layer1: "Reporting" # 主要类别
layer2: "Revenue Analysis" # 次要类别
tags: "revenue, region, aggregation" # 逗号分隔的标签
字段说明¶
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
id |
是 | 唯一哈希(自动生成) | abc123def456... |
name |
是 | 简短描述性名称(最多 20 个字符) | Revenue by Region |
sql |
是 | 完整 SQL 查询 | SELECT ... |
comment |
是 | 简短的单行描述 | 用户消息或生成的摘要 |
summary |
是 | 详细说明(用于搜索) | 全面的查询描述 |
filepath |
是 | 实际文件路径 | /path/to/file.yml |
domain |
是 | 业务域 | Sales、Marketing、Finance |
layer1 |
是 | 主要类别 | Reporting、Analytics、ETL |
layer2 |
是 | 次要类别 | Revenue Analysis、Customer Insights |
tags |
可选 | 逗号分隔的关键字 | revenue, region, aggregation |
gen_semantic_model¶
已退役。该名称已隐藏,直接调用时会提示改用
semantic_modeling。配置项仅为兼容已有安装而保留。
概览¶
语义模型生成功能帮助你通过 AI 助手从数据库表创建 MetricFlow 语义模型。助手分析你的表结构并生成全面的 YAML 配置文件,定义指标、维度和关系。
什么是语义模型?¶
语义模型是定义以下内容的 YAML 配置:
- 度量(Measures):指标和聚合(SUM、COUNT、AVERAGE 等)
- 维度(Dimensions):分类和时间属性
- 标识符(Identifiers):用于关系的主键和外键
- 数据源(Data Source):与数据库表的连接
快速开始¶
使用 datus --datasource <datasource> 启动 Datus CLI,然后直接描述要创建的模型。主 agent 可以自动派发,也可以明确选择 semantic_modeling:
工作原理¶
交互式生成¶
当你请求语义模型时,AI 助手会:
- 检索你的表的 DDL(结构)
- 检查是否已存在语义模型
- 生成全面的 YAML 文件
- 使用 MetricFlow 验证配置
- 验证通过后同步到知识库
生成工作流¶
graph LR
A[用户请求] --> B[DDL 分析]
B --> C[YAML 生成]
C --> D[验证]
D --> E[知识库同步]
验证和同步¶
发布前,agent 会调用 validate_semantic()。如果验证失败,会修改 YAML 并重试;验证通过后,publish_semantic_model 会在所有执行模式下校验发布证据并把 artifact 同步到 Knowledge Base。
语义模型结构¶
基本模板¶
data_source:
name: table_name # 必需:小写加下划线
description: "Table description"
sql_table: schema.table_name # 对于有 schema 的数据库
# OR
sql_query: | # 对于自定义查询
SELECT * FROM table_name
measures:
- name: total_amount # 必需
agg: SUM # 必需:SUM|COUNT|AVERAGE|etc.
expr: amount_column # 列或 SQL 表达式
create_metric: true # 自动创建可查询指标
description: "Total transaction amount"
dimensions:
- name: created_date
type: TIME # 必需:TIME|CATEGORICAL
type_params:
is_primary: true # 需要一个主时间维度
time_granularity: DAY # TIME 必需:DAY|WEEK|MONTH|etc.
- name: status
type: CATEGORICAL
description: "Order status"
identifiers:
- name: order_id
type: PRIMARY # PRIMARY|FOREIGN|UNIQUE|NATURAL
expr: order_id
- name: customer
type: FOREIGN
expr: customer_id
总结¶
语义模型生成功能提供:
- ✅ 从表 DDL 自动生成 YAML
- ✅ 交互式验证和错误修复
- ✅ 验证通过后同步到知识库
- ✅ 所有执行模式使用同一条 validation-gated publish 路径
- ✅ 防止重复
- ✅ MetricFlow 兼容性
gen_metrics¶
已退役。该名称已隐藏,直接调用时会提示改用
semantic_modeling。配置项仅为兼容已有安装而保留。
概览¶
指标生成功能帮助你将 SQL 查询转换为可复用的 MetricFlow 指标定义。使用 AI 助手,你可以分析 SQL 业务逻辑并自动生成标准化的 YAML 指标配置,组织内可一致查询。
什么是指标?¶
指标是基于语义模型构建的可复用业务计算。指标提供:
- 一致的业务逻辑:一次定义,到处使用
- 类型安全:已验证的结构和度量引用
- 元数据:显示名称、格式、业务上下文
- 可组合性:从简单指标构建复杂指标
示例:与其重复编写 SELECT SUM(revenue) / COUNT(DISTINCT customer_id),不如定义一次 avg_customer_revenue 指标。
快速开始¶
使用 datus --datasource <datasource> 启动 Datus CLI,然后直接描述要创建的指标。主 agent 可以自动派发,也可以明确选择 semantic_modeling:
工作原理¶
生成工作流¶
graph LR
A[用户提供 SQL 和问题] --> B[智能体分析逻辑]
B --> C[查找语义模型]
C --> D[读取度量]
D --> E[检查重复]
E --> F[生成指标 YAML]
F --> G[写入指标文件]
G --> H[验证]
H --> I[生成 dry-run SQL]
I --> J[同步到知识库]
重要限制¶
⚠️ 仅支持单表查询
当前版本仅支持从单表 SQL 查询生成指标。不支持多表 JOIN。
支持:
SELECT SUM(revenue) FROM transactions WHERE status = 'completed'
SELECT COUNT(DISTINCT customer_id) / COUNT(*) FROM orders
不支持:
验证和同步¶
发布前,agent 会用 validate_semantic() 校验 YAML,并用 query_metrics(..., dry_run=True) 编译 SQL;两项检查通过后,publish_metrics 会在所有执行模式下校验本次请求的证据并同步指标。
主题树分类¶
在 CLI 模式下通过问题中包含主题树来组织指标:
带主题树示例:
根据 SQL SELECT SUM(amount) FROM transactions 生成指标,subject_tree: finance/revenue/transactions。@Agent semantic_modeling
不带主题树示例:
未提供时,agent 会基于知识库中的现有指标自动建议分类。
使用示例¶
示例 1:简单聚合¶
用户输入:
智能体操作:
1. 查找 orders.yml 语义模型
2. 读取文件以发现 order_count 度量
3. 生成 MEASURE_PROXY 指标:
---
metric:
name: total_orders
description: Total number of orders
type: measure_proxy
type_params:
measure: order_count
locked_metadata:
display_name: "Total Orders"
increase_is_good: true
示例 2:转化率¶
用户输入:
根据以下 SQL 创建指标:
SELECT
COUNT(DISTINCT CASE WHEN status = 'completed' THEN order_id END) /
COUNT(DISTINCT order_id) AS completion_rate
FROM orders
@Agent semantic_modeling
智能体操作:
1. 分析 SQL 逻辑(带条件计数的比率)
2. 查找 orders.yml 并读取度量
3. 生成带约束的 RATIO 指标:
---
metric:
name: order_completion_rate
description: Percentage of orders that reached completed status
type: ratio
type_params:
numerator:
name: order_count
constraint: status = 'completed'
denominator: order_count
locked_metadata:
display_name: "Order Completion Rate"
value_format: ".2%"
increase_is_good: true
示例 3:复杂计算¶
用户输入:
根据以下 SQL 生成平均客单价指标:
SELECT SUM(total_amount) / COUNT(DISTINCT order_id)
FROM order_items
@Agent semantic_modeling
智能体操作:
1. 定位 order_items.yml
2. 识别为 RATIO(平均值)
3. 生成指标:
---
metric:
name: avg_basket_size
description: Average order value (basket size)
type: ratio
type_params:
numerator: total_amount
denominator: order_count
locked_metadata:
display_name: "Average Basket Size"
value_format: "$$,.2f"
unit: "dollars"
increase_is_good: true
指标存储方式¶
文件组织¶
指标存放在独立文件中,与语义模型文件分离:
- 语义模型:
{table_name}.yml——data_source定义(measures、dimensions、identifiers) - 指标:
metrics/{table_name}_metrics.yml—— 一个或多个指标定义,使用 YAML 文档分隔符---分隔
语义模型文件 (transactions.yml):
data_source:
name: transactions
sql_table: transactions
measures:
- name: revenue
agg: SUM
expr: amount
dimensions:
- name: transaction_date
type: TIME
指标文件 (metrics/transactions_metrics.yml):
metric:
name: total_revenue
type: measure_proxy
type_params:
measure: revenue
---
metric:
name: avg_transaction_value
type: ratio
type_params:
numerator: revenue
denominator: transaction_count
为什么使用独立文件? - 清晰分离 schema 定义与业务指标 - 指标可以独立于底层语义模型维护 - MetricFlow 会把 semantic_models 目录下所有 YAML 文档一起验证
更多细节见 gen_metrics。
知识库存储¶
验证和 dry-run SQL 通过后,指标会同步到知识库,包含:
- 元数据:名称、描述、类型、域/层级分类
- LLM 文本:用于语义搜索的自然语言表示
- 引用:关联的语义模型名称
- 时间戳:创建日期
总结¶
指标生成功能提供:
- ✅ SQL 到指标转换:分析 SQL 查询并生成 MetricFlow 指标
- ✅ 智能类型检测:自动选择正确的指标类型
- ✅ 防止重复:生成前检查现有指标
- ✅ 主题树支持:按 domain/layer1/layer2 组织,支持预定义或学习模式
- ✅ 验证:MetricFlow 验证确保正确性
- ✅ 发布门禁:语义验证和 dry-run SQL 通过后才同步
- ✅ 知识库集成:语义搜索以发现指标
- ✅ 文件管理:在
metrics/目录下维护独立的指标文件
explore¶
概览¶
explore subagent 是一个轻量级只读助手,专为快速上下文收集设计。它帮助收集 schema 信息、数据采样和知识库上下文,为下游 SQL 生成提供支持——无论是聊天助手还是 gen_sql subagent。
关键特性¶
- 严格只读:不会修改数据、文件或数据库记录。仅允许 SELECT 查询,且始终带 LIMIT。
- 快速探索:限制 15 轮对话,快速完成上下文收集。
- 三方向探索:
- Schema+Sample:发现表、列、类型、约束和采样数据
- Knowledge:搜索指标、参考 SQL、业务规则和领域知识
- File:浏览工作空间 SQL 文件和文档
配置¶
agent:
agentic_nodes:
explore:
model: haiku # 推荐:使用较小模型(haiku、gpt-4o-mini)
max_turns: 15 # 可选:默认为 15
提示:explore subagent 以工具调用为主,而非复杂推理。推荐使用较小、更快的模型(如
haiku、gpt-4o-mini),可降低成本并提升速度,同时不影响质量。
可用工具¶
| 工具类别 | 工具 | 用途 |
|---|---|---|
| 数据库 | list_databases、list_schemas、list_tables、search_table、describe_table、read_query |
Schema 发现和数据采样(只读) |
| 上下文搜索 | search_metrics、search_reference_sql、search_knowledge、search_semantic_objects、list_subject_tree、get_metrics、get_reference_sql、get_knowledge |
知识库检索 |
| 文件系统 | read_file、glob、grep |
只读文件浏览 |
| 日期解析 | get_current_date、parse_temporal_expressions |
日期上下文 |
输出格式¶
explore subagent 返回简洁的结构化摘要,为其他 agent 消费而优化:
- Tables:相关表及关键列、类型和备注
- Joins:表之间的联接路径(每个关系一行)
- Data patterns:非显而易见的数据模式(分隔符、编码、NULL 占比)
- Context:找到的相关指标、参考 SQL 和业务规则
- Recommendation:使用哪些表、如何联接及关键注意事项
使用方式¶
explore subagent 通常由聊天助手通过 task(type="explore") 自动调用。如需为单条消息明确指定,可在末尾加 @Agent explore:
gen_sql¶
概览¶
gen_sql subagent 是一个专用 SQL 专家,生成经过优化和验证的 SQL 查询。它处理需要多步推理、复杂联接或领域特定逻辑的复杂 SQL 生成任务。
关键特性¶
- 深度 SQL 专业知识:专注于编写复杂的生产级 SQL
- 自动验证:返回结果前验证 SQL 可执行性
- 基于文件的输出:对于复杂查询(50+ 行),将 SQL 输出到文件并提供预览
- 修改支持:修改现有查询时返回 unified diff 格式
配置¶
工作原理¶
graph LR
A[用户问题 + 上下文] --> B[分析需求]
B --> C[发现 Schema]
C --> D[搜索知识库]
D --> E[生成 SQL]
E --> F[验证可执行性]
F --> G[返回结果]
输出格式¶
gen_sql subagent 以两种格式之一返回结果:
内联 SQL(适用于较短查询):
{
"sql": "SELECT region, SUM(revenue) FROM sales GROUP BY region",
"response": "查询解释...",
"tokens_used": 1234
}
基于文件的 SQL(适用于 50+ 行的复杂查询):
{
"sql_file_path": "/path/to/generated_query.sql",
"sql_preview": "查询的前几行...",
"response": "查询解释...",
"tokens_used": 5678
}
使用方式¶
gen_sql subagent 通常由聊天助手通过 task(type="gen_sql") 自动调用来处理复杂查询。如需为单条消息明确指定,可在末尾加 @Agent gen_sql:
gen_report¶
概览¶
gen_report subagent 是一个灵活的报告生成助手,结合语义工具、数据库工具和上下文搜索功能来生成结构化报告。它可以直接使用,也可以被特定领域的报告节点扩展(如归因分析)。
关键特性¶
- 可配置工具:通过配置支持
semantic_tools.*、db_tools.*和context_search_tools.* - 灵活输出:生成包含 SQL 查询和分析的结构化报告内容
- 可扩展:可以被子类化用于特定报告类型
- 配置驱动:工具设置和系统提示由
agent.yml配置驱动
配置¶
agent:
agentic_nodes:
gen_report:
model: claude # 可选:默认使用已配置的模型
max_turns: 30 # 可选:默认为 30
tools: "semantic_tools.*, db_tools.*, context_search_tools.list_subject_tree" # 可选:自定义可用工具
工具模式:
| 模式 | 描述 |
|---|---|
semantic_tools.* |
所有语义工具(搜索指标、语义对象等) |
db_tools.* |
所有数据库工具(列出表、描述表、读取查询等) |
context_search_tools.* |
所有上下文搜索工具(搜索知识、参考 SQL 等) |
semantic_tools.search_metrics |
指定的语义工具方法 |
context_search_tools.list_subject_tree |
指定的上下文搜索方法 |
默认工具(未配置时):semantic_tools.*, context_search_tools.list_subject_tree
工作原理¶
graph LR
A[用户问题 + 上下文] --> B[分析需求]
B --> C[搜索知识库]
C --> D[查询数据库]
D --> E[生成报告]
E --> F[返回结构化结果]
输出格式¶
gen_report subagent 以结构化报告返回结果:
使用方式¶
gen_report subagent 可以通过 @Agent gen_report 为单条消息明确指定,也可以由聊天助手通过 task(type="gen_report") 自动调用:
自定义报告 Subagent¶
你可以在 agent.yml 中配置使用 gen_report 节点类的自定义 subagent:
agent:
agentic_nodes:
attribution_report:
node_class: gen_report
tools: "semantic_tools.*, db_tools.*, context_search_tools.*"
max_turns: 30
然后输入 分析活动 X 的转化归因。@Agent attribution_report。
gen_skill¶
概览¶
gen_skill subagent 用于引导用户创建或优化 Datus skill。它可以检查现有 skill、脚手架新的 skill 目录、编辑 SKILL.md、执行校验,并检索历史会话中的使用模式。
关键特性¶
- 交互式 skill 编写:通过
ask_user进行访谈式创建 - 受控文件系统权限:对工作区只读,对配置的 skills 目录可写
- skill 感知编辑:修改前先加载已有 skill
- 内置校验:结束前可调用
validate_skill检查结果
配置¶
输出格式¶
{
"response": "已创建一个用于财务仪表盘校验的新 skill。",
"skill_name": "finance-dashboard-validation",
"skill_path": "/path/to/skills/finance-dashboard-validation",
"tokens_used": 1980
}
使用方式¶
为单条消息明确指定:
也可以由聊天 agent 通过 task(type="gen_skill") 自动委派。
Plugin 平台操作¶
Airflow 调度和 Superset 等外部 BI authoring 由主 agent 直接使用已安装 plugin
及其内置 skill 完成,不能通过 task()、斜杠命令、agent API 或自定义 alias
调用。
旧 Node 实现暂时保留在代码中,仅用于兼容。迁移说明见 BI Dashboard 节点(旧版兼容)和 Scheduler 节点(旧版兼容)。
总结¶
| subagent | 用途 | 输出 | 存储位置 | 关键特性 |
|---|---|---|---|---|
gen_sql_summary |
总结和分类 SQL 查询 | YAML(SQL 摘要) | /data/reference_sql |
主题树分类、自动上下文检索 |
semantic_modeling |
创作语义模型和指标 | Dosi YAML | /data/semantic_models |
统一校验和完整 Knowledge Base 对账 |
ask_metrics |
回答已有指标问题 | Markdown 报告 | N/A | KPI 数值、趋势、分组结果、归因分析、不退回原始 SQL |
explore |
只读数据探索 | 结构化上下文 | N/A | 严格只读、低轮数、三方向探索 |
gen_sql |
生成优化 SQL | SQL 查询 / SQL 文件 | N/A | 深度 SQL 专长、自动验证、支持文件输出 |
gen_report |
灵活报告生成 | 结构化报告 | N/A | 工具可配置、可扩展、自定义报告 subagent |
gen_table |
交互式建表 | DDL + 执行结果 | 数据库 | DDL 确认、CTAS 或自然语言建表 |
gen_job |
数据管道作业(单库 ETL + 跨库传输) | 作业 / 传输结果 | 源库 + 目标库 | DDL/DML 执行、通过 MigrationTargetMixin 做跨方言类型映射、transfer_query_result、源目标不同库时做轻量对账校验 |
gen_skill |
创建或优化 skill | skill 路径 | skills 目录 | 交互式编写、校验、加载现有 skill |
gen_visual_report |
自包含的可视化报告(叙事文档,查询提前烘焙) | reports/<slug>/(可执行 SQL + 执行结果 + 报告组件) |
项目根目录 | 按模块独立修改、可基于 metric 或自定义 SQL 生成、CLI 模式直接在浏览器中打开 |
所有 subagent 的内置特性:
- 最小化配置(仅 model 和 max_turns 可选)
- 自动工具设置、hooks 和 MCP 服务器集成
- 内置系统提示,默认选择最新可用版本
- 按工作流启用验证和知识库同步
- 知识库集成用于语义搜索
- 自动工作空间管理
这些subagent共同自动化了 数据工程知识管道 ——从 数据探索 → 查询生成 → 模型定义 → 指标生成 → 业务知识捕获 → 可搜索的知识库。