数据分析员工(Data Analyst Agent)的唯一总入口:凡与数据资产、取数、指标、表/视图、 治理职责、知识网络、统计或分析相关的问题,必须先经本 skill 做编排与路由,再进入找表或问数等子流程。 负责 kn 分域、上下文注入(accountId / date)、多候选 KN 时的 LLM 决策、 问数分支的 SQL 生成;与 smart-search-tables / smart-ask-data / ontology-core 的交接。 当用户提出任何数据类自然语言任务、或需在多条业务 KN 间切换时使用; 所有 ontology CLI 执行均委托 ontology-core 完成,本 skill 不直接执行 CLI。
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
本 skill 是 数据分析员工角色的总入口:在本体数据技能栈中,所有数据相关问题必须先经过本 skill,完成 KN 与上下文对齐、意图路由 后,再委派至 找表 或 问数(或其它数据子 skill),禁止在未做编排判断时直接跳到 smart-search-tables、smart-ask-data 或零散工具调用。
Never 由本 skill 直接执行 ontology CLI;所有 CLI 调用(包括为选 KN 取候选元数据的 bkn list/get,与问数分支的 bkn object-type get / dataview query --sql 等)均委托 ontology-core 执行。
调用链:
smart-data-analysis(顶层意图 + LLM 决策:选 KN / 生成 SQL)
├─ ontology-core(直接委托:bkn list/get 等用于自身决策)
└─ smart-search-tables 或 smart-ask-data(子流程)
└─ ontology-core(子流程的 CLI 委托)kn_id_*、时间口径,避免子 skill 重复猜 KN。KN id 在下表中直接声明,由本 skill 路由时透传到下游(smart-ask-data / smart-search-tables)。下游 skill 不 自行选 KN、不 调 bkn list/get 枚举或决策。
| 分支 | 用途 | KN ID |
|---|---|---|
| 找表 | 表/视图实例检索(必填) | <填入KN id> |
| 找表 | 部门职责检索(可选) | <填入KN id> |
| 问数 | SQL 取数(必填) | <填入KN id> |
约束:
bkn list 取得平台可用 KN id 后,直接编辑本表填入;运行时不再做 KN 列举或选择。<填入...>:进入对应分支时直接告知用户"未在 smart-data-analysis/SKILL.md 中配置对应 KN",不得用其它 KN 凑数。| 能力 | 本 skill(编排) | 专用 skill(执行细节) |
|---|---|---|
| 路由、kn 切换、上下文注入 | ✅ 主责 | 配合 |
| KN id 声明 + 透传到下游 | ✅ 主责(见上方「知识网络声明」表) | 接收注入,不自行选 KN |
| 找表 / 定位 / 职责 / 澄清 | 定义路由与交接 | smart-search-tables/SKILL.md |
| 问数:SQL 生成(基于 schema 摘要) | ✅ 主责(LLM) | 输出 SELECT/WITH SQL 给 smart-ask-data 步骤 4 |
| 问数:步骤顺序、口径约束、SQL 执行 | 定义路由与交接 | smart-ask-data/SKILL.md |
ontology native CLI 执行(bkn / ds / dataview / vega / call) | 不直接执行 | ontology-core/SKILL.md |
| 子技能 | 角色 | 返回 | 约束 |
|---|---|---|---|
| ontology-core | smart-data-analysis 的 CLI 委托 | 命令执行结果与回执 | Never 跳过 smart-data-analysis 直接接管流程 |
| smart-search-tables | 找表分支执行 | 候选表/视图清单、归属、职责要点 | 走找表分支时由 smart-data-analysis 路由进入;本 skill 需向其透传 accountId / kn_id / duty_kn_id / <ot-id> / search 等入参;不直接执行 ontology CLI |
| smart-ask-data | 问数分支执行 | SQL 执行结果 + 口径 | 走问数分支时由 smart-data-analysis 路由进入;本 skill 需向其透传 accountId / kn_id / 生成的 SQL 三件套 |
| 角色/技能 | 负责(Do) | 不负责(Don't) | 典型输出 |
|---|---|---|---|
smart-data-analysis(总编排) | 识别主意图;从「知识网络声明」表读取 KN id 并透传给下游;组织 date / accountId 等上下文;问数分支基于 schema 摘要生成 SELECT SQL | 不直接执行 ontology CLI;不在运行时用 bkn list 决策 KN;不直接做对象检索细节;不替代子 skill 结果 | 路由决策、KN 透传、生成 SQL、交接约束 |
smart-search-tables(找表执行) | 接收 smart-data-analysis 透传的 kn_id / duty_kn_id / <ot-id> / accountId;按 2 步顺序触发 bkn object-type query(必要时 bkn object-type list)等 native 命令的委托;产出候选表/视图清单 + 职责要点 | 不承担跨流程总路由;不在 skill 内自行选 KN;不直接执行 ontology CLI | 候选表清单、归属、职责说明 |
smart-ask-data(问数执行) | 接收 smart-data-analysis 透传的 kn_id 与 SQL;按 5 步顺序触发 bkn object-type get / dataview query --sql 等 native 命令的委托;产出取数结果与口径展示 | 不承担跨流程总路由;不在 skill 内自行选 KN 或生成 SQL;不直接执行 ontology CLI | 数值结果、口径说明、SQL 与依据 |
ontology-core(CLI 委托执行) | 实际承载所有 ontology 命令的执行(bkn / ds / dataview / vega / call);统一处理 --user-id / --base-url / -bd 等横向约束 | 不替代业务编排判断;不直接定义问数口径 | 命令执行结果与回执 |
若仅有顶层编排而无子 skill 正文:仍须按下方路由规则执行;找表/问数细节分别以 smart-search-tables、smart-ask-data 为准;CLI 与 BKN 以 ontology-core 的 references/*.md 为准(尤其 bkn.md)。
复制并勾选:
编排进度:
- [ ] 1. 解析任务中的 KN / 业务域(见「知识网络分域」)
- [ ] 2. 注入公共上下文(见「上下文注入」)
- [ ] 3. 意图路由:找表 / 问数(见「路由识别」)
- [ ] 4. 进入对应分支清单并完成;歧义时先澄清
- [ ] 5. 输出结构:结论 + 依据(表/视图/KN)+ 下一步可选动作实际 KN id 见上方「知识网络声明」表;切换时按以下规则透传给下游:
kn_id;若"职责"行非空则同时注入 duty_kn_id。kn_id。在调用检索或问数工具前,尽量在推理上下文中 显式整理(不必向用户冗长展示):
| 键 | 含义 | 来源 / 用途 |
|---|---|---|
accountId | 当前会话用户的账户 id | 由会话框架/调用方提供;委托 ontology-core 时注入 --user-id <accountId>(必传,缺失时向用户索要,不得编造) |
date | 用户问题中的时间范围、默认「当前日期」与对比周期(同比/环比) | 解析自用户问题 |
路由分支 + 注入下游的 kn_id(找表分支额外含 duty_kn_id) | 当前要进入的分支决定注入哪行声明值 | 从「知识网络声明」表读取;占位为 <填入...> 时告知用户并停止 |
将上述一并作为后续工具调用的隐含约束,减少跨 KN 误查。网关(ONTOLOGY_BASE_URL)由 ontology-core 侧承担;本部署 ontology CLI 无须 token,本 skill 与子 skill 均不持有任何凭证。
按优先级匹配用户最终意图(一句可多标签,取最终要交付给用户的结果):
触发词或场景示例:表在哪、哪个视图、字段在哪个模型、主题域/部门职责、资产目录、「有没有叫…的表」、仅定位不做指标计算。
找表分支通过 ontology-core 委托 bkn object-type query(必要时 ``bkn object-type list`):第 1 步在元数据型 KN 下做实例检索拿候选表/视图,第 2 步在职责型 KN 下做实例检索拿相关部门职责。详见 smart-search-tables/SKILL.md。
分支清单
找表进度:
- [ ] 确认 `accountId`(缺失则向用户索取,不得编造)
- [ ] 从「知识网络声明」表读取找表 KN id 作为 `kn_id`;占位仍为 `<填入...>` → 告知用户并停止
- [ ] 同步读取职责 KN id 作为 `duty_kn_id`(可空;空则后续跳过职责检索)
- [ ] 选定 `<ot-id>`:每个 KN 内用于实例检索的对象类 id;不确定时先 `bkn object-type list <kn-id>` + LLM 选定
- [ ] 把用户问题提炼为 `search` 短语(业务对象 + 主题域 + 名称片段;避免单字 / 代词)
- [ ] 委托 smart-search-tables:透传 `accountId / kn_id / duty_kn_id / <ot-id> / search`,按 2 步触发 `bkn object-type query`
- [ ] 意图不清:结构化反问(业务主题?系统?表名片段?)
- [ ] 输出:候选表/视图(`business_name` 全称 + `technical_name`)+ 相关部门职责 + 若下一步要统计则引导进入问数与 smart-search-tables 的交接契约(本 skill 的硬责任):
| 字段 | 含义 | 缺失处理 |
|---|---|---|
accountId | 当前会话用户账户 id | 向用户索取;不得编造 |
kn_id | 找表 KN id | 从「知识网络声明」表"找表"行读取;占位未填 → 告知用户并停止 |
duty_kn_id | 职责 KN id(可选) | 从「知识网络声明」表"职责"行读取;留空则跳过职责检索并在总结中说明"未检索职责" |
<ot-id> | KN 内用于实例检索的对象类 id(一般两个 KN 各一个) | 不确定时先 bkn object-type list <kn-id> + LLM 选定 |
search | 提炼后的检索短语 | 必须由用户问题提炼,不得为代词或单字 |
触发词或场景:
关系类问题的最终交付是"相关实体集合",需要跨对象类 JOIN,必须走 SQL 问数,不能用单 ot 的 bkn object-type query 拼凑代替(参见下方判别表)。
问数分支通过 ontology-core 委托 ``bkn object-type list/get做 Schema 发现,本 skill 在编排层基于 schema 摘要 **生成 SELECT SQL**,再由 [smart-ask-data](../smart-ask-data/SKILL.md) 委托dataview query --sql` 执行。绘图与二次代码加工能力不内置;如需绘图,明确告知用户由前端自渲染或独立处理。
关键区分:SQL 问数 vs 对象类实例检索(bkn object-type query)
两者都能返回数据,但能力差很大。默认偏好:涉及"关系"或"聚合" → SQL 问数;单实体精确/范围过滤 → object-type query。
| 任务形态 | 走 SQL 问数(dataview query --sql) | 走 object-type query |
|---|---|---|
| 跨对象类 JOIN | ✅ | ❌(只能单 ot,需手工拼接) |
| 聚合统计(COUNT/SUM/AVG/GROUP BY) | ✅ | ❌ |
| 单实体 ID 精确查找 | 任选 | ✅(更轻) |
| 单实体多条件过滤 | 任选 | ✅ |
| 全文检索 | ❌(SQL 视图不支持 match) | ✅ |
凡问题中出现"X 与哪些 Y 关联 / 由哪些 Y 组成"这类需要跨对象类关系的措辞,或出现"多少 / 占比 / 趋势 / TopN / 平均"这类聚合措辞,必须进入 SQL 问数;不要用单 ot 的 bkn object-type query 拼接代替。
bkn object-type query 的 JSON body 必须用 condition 外层包裹(编排层常错点):
// 单条件
{"limit": 30, "condition": {"field": "<字段名>", "operation": "==", "value": "<值>"}}
// 多条件 AND
{"limit": 30, "condition": {
"operation": "and",
"sub_conditions": [
{"field": "<f1>", "operation": "==", "value": "<v1>"},
{"field": "<f2>", "operation": "in", "value": ["<a>","<b>"]}
]
}}错例(缺 condition 外层,报 InvalidParameter "Filter conditions must be wrapped in a 'condition' structure"):{"field":"x","operation":"==","value":"y"}
分支清单
问数进度:
- [ ] 确认 `accountId`(缺失则向用户索取,不得编造)
- [ ] 从「知识网络声明」表读取问数 KN id 作为 `kn_id`;占位仍为 `<填入...>` → 告知用户并停止
- [ ] 候选 > 1:本 skill 委托 ontology-core 调 `bkn list` / `bkn get` 取候选元数据,LLM 决策选定
- [ ] 若表未就绪:先在问数流程内短循环找表/找视图(调用 smart-search-tables 或追问)后再继续
- [ ] 明确指标口径、时间粒度、维度与过滤条件
- [ ] 委托 smart-ask-data:触发 schema 发现(`bkn object-type get`)拿候选对象类、字段、dataview-id(取自 `data_source.id`,要求 `data_source.type == "data_view"`)
- [ ] **本 skill 在编排层基于 schema 摘要 + 用户口径生成 SELECT/WITH SQL**(必带 LIMIT;字段表名必须来自摘要)
- [ ] 把 `accountId / kn_id / 生成的 SQL` 三件套透传给 smart-ask-data,它再委托 ontology-core 执行 `dataview query --sql`
- [ ] 输出:SQL(脱敏可,不可省)+ 关键数据 + 口径说明 + 可复核步骤与 smart-ask-data v2 的交接契约(本 skill 的硬责任):
| 字段 | 含义 | 缺失处理 |
|---|---|---|
accountId | 当前会话用户账户 id | 向用户索取;不得编造或用 config 默认值 |
kn_id | 问数 KN id | 从「知识网络声明」表"问数"行读取;占位未填 → 告知用户并停止 |
| 生成的 SELECT SQL | 基于 step-2 schema 摘要的 SQL;只允许 SELECT/WITH;字段表名必须来自摘要;带 LIMIT | smart-ask-data 不内置 LLM,本 skill 必须给出 |
查询企业相关信息 若用户期望返回企业数据内容/统计结果,归入问数(必要时先找企业相关表/视图,再生成 SQL 查询)。bkn list 无可用业务 KN、bkn object-type get 的 data_source 缺失或 data_source.type 不是 data_view、dataview query --sql 报错或返回空等 → 只向用户说明具体原因与补齐条件,不得为给出「类似答案」而切换到 找表 分支;找表结果不能替代用户要的指标或明细取数。bkn object-type query 命中为空、职责 KN 未提供或检索无果等 → 只向用户说明具体原因,不得切换到 问数 分支用 SQL 猜测表名、编造资产位置或虚构明细。bkn object-type list/get,必要时短循环找表)属于 同一问数任务的固定子步骤,不属于「问数失败后的交叉兜底」。json2plot / execute_code_sync 能力。若用户要求绘图或代码二次加工,直接向用户说明当前架构不支持,可用 SQL 表达的口径继续问数。对用户回复推荐结构:
/smart-data-analysis 在当前找表用的 kn 里查有没有订单相关宽表
/smart-data-analysis 用问数 kn 算上月销售额环比,口径按销售域约定
/smart-data-analysis 找表 kn 用 A,问数 kn 用 B:先找「库存」视图再算周转kn_id 的情况下假设当前知识网络已正确。match 全文操作符;文本模糊优先 like。references/tool-examples.md 若存在,在执行层优先遵循;本文件只负责 路由与编排约束。ontology CLI;所有 ontology 命令(含选 KN 时的 bkn list/get)一律委托 ontology-core 执行。--user-id <accountId> 是 ontology 命令的硬性顶层选项;本 skill 在交接给下游前 必须 已拿到 accountId,缺失则向用户索取。--token / auth.token / Authorization。命令报错时直接如实反馈,不要伪造结果或尝试登录刷新凭证。f618458
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.