name: smart-ask-data version: "2.0.0" user-invocable: true description: >- 问数端到端编排(native CLI 版):从候选 KN 选定知识网络,用 bkn object-type 发现对象类与字段, 由编排层 LLM 生成 SQL,再由 ontology dataview query 执行取数; 最后输出中文结论与口径说明。 当用户需要指标、统计、趋势、SQL 取数或数据查询时使用。 argument-hint: [中文问数问题;可选已有 kn_id 或候选 kn 列表]
Smart Ask Data(问数)
本 skill 定义 固定先后顺序 的问数工具链,完全由 ontology native 子命令(bkn / dataview / ds)实现。
在数据分析员工体系中,本 skill 必须由 smart-data-analysis 总入口完成意图、选 KN、生成 SQL 等 LLM 决策后再进入执行;CLI 实际执行由 ontology-core 承担。
调用方式(统一 ontology 命令;委托 ontology-core 执行)
本 skill 涉及的所有数据/Schema 访问 必须 通过 ontology native 子命令发起。
Never 由本 skill 直接执行 ontology CLI;所有 CLI 执行均委托 ontology-core 完成。调用链固定:
smart-data-analysis(顶层意图 + LLM 决策:选 KN、生成 SQL)
└─ smart-ask-data(本 skill:描述要调的命令形态 + 顺序 + 约束)
└─ ontology-core(实际执行 ontology 命令,返回结果)
子技能依赖
| 子技能 | 角色 | 返回 | 约束 |
|---|---|---|---|
| smart-data-analysis | 顶层意图路由、KN 选择、SQL 生成 | 进入本 skill 的上下文(kn_id / 生成的 SQL / accountId 等) |
Never 跳过 smart-data-analysis 直接接管流程 |
| ontology-core | smart-ask-data 的 CLI 委托 | 命令执行结果与回执 | Never 跳过 smart-ask-data 直接接管流程 |
委托给 ontology-core 的命令形态
本 skill 仅 描述 下列命令形态供 ontology-core 执行;本文档与 references 中 不出现 真实执行入口。
ontology --user-id <accountId> <command> [options]
具体 4 个步骤对应到 native 子命令(详见各 reference):
| 步骤 | native 子命令 | 用途 |
|---|---|---|
| 1. 找 KN | bkn get <kn-id> |
取详情供 LLM 选择 |
| 2. 取字段与 dataview-id | bkn object-type list <kn-id> / bkn object-type get <kn-id> <ot-id> |
拿字段 + 后端 dataview-id |
| 3. 执行 SQL | dataview query <dataview-id> --sql "..." |
LLM 生成的 SELECT/WITH SQL(mdl-uniquery) |
| —(简单单表) | bkn object-type query <kn-id> <ot-id> '<filter-json>' |
不需要 SQL 时的实例过滤 + 分页 |
--user-id <accountId>:必传(顶层选项,写在子命令之前;发送为x-account-id;详见 ontology-core SKILL)。- 网关(
--base-url/ONTOLOGY_BASE_URL)由 ontology-core 侧承担,本 skill 不出现该参数。 - 本部署
ontologyCLI 无须 token;本 skill 命令体内 不出现--token/auth.token/Authorization。 -bd bd_public:默认即bd_public,可省。
必读 references(按步骤)
| 步骤 | 说明 | Reference |
|---|---|---|
| 1 | 知识网络选择(条件执行) | references/kn-resolve.md |
| 2 | Schema 发现:候选对象类与字段 | references/schema-discovery.md |
| 3 | SQL 生成(编排层 LLM)+ 执行 | references/sql-execute.md |
| — | 端到端顺序示例 | references/tool-examples.md |
主流程(必须按序)
复制进度:
问数进度:
- [ ] 1. 解析 kn_id:若已指定或仅 1 个候选 KN 则直用;多候选时由编排层 LLM 用 bkn list/get 选定(见 kn-resolve)
- [ ] 2. Schema 发现:bkn object-type list/get → 候选对象类、字段、dataview-id
- [ ] 3. 生成 SQL:编排层 LLM 基于第 2 步信息生成 SELECT SQL(不在 smart-ask-data 内部生成)
- [ ] 4. 执行 SQL:ontology dataview query <dataview-id> --sql "..." 取数
- [ ] 5. 总结:结论 + 口径 + 依据(KN/对象类/SQL)
知识网络来源
- 问数使用的
kn_id来自 (a) 调用方/上游 smart-data-analysis 明确指定;(b) 通过 ontology-core 调bkn list枚举。
步骤约束(摘要)
- KN 解析(条件路由):
- 已传入
kn_id:直接使用。 - 仅 1 个候选 KN:直接使用。
- 候选 > 1:由 smart-data-analysis 的 LLM 决策(基于
bkn list/bkn get拿到的候选元数据)。
- 已传入
- Schema 发现先于 SQL:先用
bkn object-type list/get锁定对象类与字段,再让 LLM 生成 SQL;防止 SQL 幻觉。 - SQL 生成在编排层:本 skill 不内置 LLM;SQL 由 smart-data-analysis 生成后传入。
- 只允许 SELECT/WITH:
dataview query --sql默认拒绝写操作;不得使用--raw-sql绕过。 - 结果展示硬约束:若执行返回非空结果,最终回复中 必须同时展示:
- 生成并执行的 SQL(可脱敏,不可省略);
- 关键结果数据(表格或要点汇总,不可仅给口头结论)。
- 总结:明确时间范围、指标定义;不暴露完整调试 URL。
注意事项(必须遵守)
- 所有信息必须完全来自查询结果,不允许添加任何结果中不存在的内容。
- 不允许猜测、推断、脑补、编造数据。
- 不允许改写、美化、夸张、虚构企业信息。
- 不使用不确定词汇,如"可能""大概""应该""据悉"。
- 若结果为空,直接说明"未查询到符合条件的数据",不得自行编造。
- 只做结构化整理、排序、计数、分段展示,不做逻辑外扩。
- 严格按原始数据呈现,不修改数字、名称、顺序。
与 smart-data-analysis 的关系
由 smart-data-analysis 做顶层路由时,进入本 skill 表示用户 主意图为问数。其需向本 skill 提供:
accountId(→--user-id,必传)kn_id(已选定的业务 KN;缺失时附带候选kn_ids并已剔除 forbidden 项,由本 skill 触发 LLM 二次决策)- 由 LLM 基于 Schema 发现结果生成的 SELECT SQL(步骤 3 起需要)
网关(ONTOLOGY_BASE_URL)由 ontology-core 侧统一承担;本部署 ontology CLI 无须 token,本 skill 与 smart-data-analysis 均不持有任何凭证。
配置
- 本 skill 统一默认配置:config.json
pipeline:5 步顺序与对应 ontology 子命令的声明runtime_contract:accountId / 网关 / 认证 / kn_id 等入参的来源契约- 不维护
base_url/ 端点 url_path /defaults.user_id:均由 ontology-core 侧环境变量或运行时入参承担
调用示例
/smart-ask-data 上个月各区域销售额,按区域汇总
/smart-ask-data 在候选知识网络里自动选 KN,查库存周转相关明细并给结论