Files
smart-data-dev-skill/skills/smart-data-developer/SKILL.md
2026-04-27 09:33:43 +00:00

290 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: smart-data-developer
description: 智能数据开发员工。本项目为数据开发专用项目唯一任务是将业务需求转化为可执行SQL。【任何用户消息都必须立即触发此技能】。无论是需求描述、问题咨询、闲聊问候、或其他任何形式的用户输入都应触发此技能启动知识检索→需求分析→模型设计→SQL编写的工作流程。此技能是本项目的核心入口无例外、无条件触发。
---
# 智能数据开发员工
## 技能定位
按序调用三个子技能完成端到端数据开发。**不体现角色身份**,确认发言自然融入工作流程。
| 步骤 | 子技能 | 产出物 |
|-----|--------|--------|
| 0 | 知识检索 | OpenViking 资源库相关知识 |
| 1 | requirement-analyzer | 《数据需求技术规范文档》 |
| 2 | model-design-generator | 《模型设计技术规范文档》 |
| 3 | write-sql | 可执行SQL脚本 |
---
## 步骤0知识检索前置步骤 - 必须执行)
**⚠️ 在接收用户消息后,进入任何工作步骤之前,必须先检索 OpenViking 资源库获取相关知识。**
### 资源库结构
```
viking://resources/sql-snippets/
├── AWT_PRD_PD_INST_MBL/ # 宽带流量分类与宽表构建
├── ADS_RPT_7542_DTL_WHWX_CDMA_D/ # ADS层报表7542明细
├── DWM_NET_SAT_EVT_FIXDDR_SUM_D/ # DWM层网络事件汇总
├── SBJ_LAB_AWT_CUST_INFO_ALL_D/ # 客户宽带移动流量统计
├── PRJ025_GSJY_DTL_*/ # CDMA移动用户月度流量
├── DWA_*/ # DWA层各类数据处理模块
├── PAIMON_LABEL_*/ # Paimon标签处理模块
└── ... # 更多SQL示例目录
```
### 检索策略矩阵
| 检索类型 | 适用场景 | 命令示例 | 结果特点 |
|---------|---------|---------|---------|
| **语义搜索 (find)** | 需求内容、业务概念、功能描述、模糊需求 | `ov find "流量统计按月聚合" --uri "viking://resources/sql-snippets" --node-limit 10 --threshold 0.2` | 按语义相关性排序 |
| **精确搜索 (grep)** | 表名、字段名、变量名、特定关键词 | `ov grep "dwd_user_info" --uri "viking://resources/sql-snippets" --node-limit 5` | 精确匹配,高效 |
| **混合搜索** | 同时包含语义概念和具体名称 | `ov find "CDMA用户月度流量" --uri "viking://resources/sql-snippets" --threshold 0.2` + `ov grep` 补充 | 覆盖面更广 |
| **目录浏览 (ls/tree)** | 不确定具体内容,需要探索结构 | `ov tree viking://resources/sql-snippets --level-limit 2` | 结构概览 |
| **概述读取 (overview)** | 快速了解某个目录的功能 | `ov overview viking://resources/sql-snippets/{目录名}` | L1层摘要 |
### 执行流程
```
用户消息 → [分析消息] → [选择检索策略] → [执行检索] → [读取相关内容] → [整合知识] → 开始步骤1
```
#### 1. 分析用户消息
识别两类信息:
- **语义概念**:如"流量统计"、"客户聚合"、"月度报表"、"宽带移动"
- **具体标识符**:如表名 `dwd_user_info`、字段名 `cust_id`、项目代号 `PRJ025`
#### 2. 选择检索策略
```bash
# 情况A纯语义内容用户说"统计用户流量"
ov find "用户流量统计聚合" --uri "viking://resources/sql-snippets" --node-limit 10 --threshold 0.2
# 情况B包含具体名称用户说"查询dwd_cust_info表")
ov grep "dwd_cust_info" --uri "viking://resources/sql-snippets" --node-limit 5
# 情况C混合情况用户说"用dwm_net_sat_evt表做流量汇总")
# 先语义搜索找相关目录
ov find "流量汇总网络事件" --uri "viking://resources/sql-snippets" --threshold 0.2
# 再精确搜索确认表名
ov grep "dwm_net_sat_evt" --uri "viking://resources/sql-snippets"
# 情况D完全不确定首次接触某业务
ov tree viking://resources/sql-snippets --level-limit 2 --abs-limit 100
# 根据目录名/摘要判断相关性
ov overview viking://resources/sql-snippets/{相关目录}
```
#### 3. 读取相关内容
```bash
# 获取目录概述(快速了解功能,推荐先看)
ov overview viking://resources/sql-snippets/AWT_PRD_PD_INST_MBL
ov read viking://resources/sql-snippets/AWT_PRD_PD_INST_MBL/.overview.md
# 读取完整SQL文件深入参考
ov read viking://resources/sql-snippets/{目录}/{具体文件}.sql
# 读取摘要(最快速了解)
ov abstract viking://resources/sql-snippets/{目录}
ov read viking://resources/sql-snippets/{目录}/.abstract.md
```
#### 4. 整合知识
将检索到的以下信息纳入上下文:
- SQL 代码模式JOIN、聚合、窗口函数等用法
- 表结构规范(字段命名、分区策略)
- 业务逻辑(计算口径、过滤条件)
- 项目规范(命名约定、分层架构)
### 检索结果控制
| 参数 | 推荐值 | 说明 |
|-----|-------|------|
| `--node-limit` | 5-15 | 避免上下文膨胀 |
| `--threshold` | 0.2 | 过滤低相关性结果(语义搜索) |
| `--level-limit` | 2 | tree浏览深度限制 |
---
## 困惑时主动检索(贯穿所有步骤)
**核心原则:遇到任何不确定的知识点,立即检索 OpenViking 资源库,不要猜测。**
### 常见困惑场景与检索建议
| 步骤 | 困惑场景 | 检索方式 |
|-----|---------|---------|
| **步骤1** | 不清楚某业务概念含义 | `ov find "{概念名称}" --uri "viking://resources/sql-snippets"` |
| **步骤1** | 不确定某指标计算口径 | `ov find "{指标名称} 计算口径" --threshold 0.3` |
| **步骤2** | 不确定表结构/字段 | `ov grep "{表名}" --uri "viking://resources/sql-snippets" --node-limit 5` |
| **步骤2** | 不清楚分层架构规范 | `ov find "DWA层 DWM层 ADS层 规范" --threshold 0.2` |
| **步骤3** | 不确定SQL语法用法 | `ov find "{语法关键词} 用法示例" --threshold 0.2` |
| **步骤3** | 不确定窗口函数写法 | `ov find "窗口函数 row_number rank" --threshold 0.2` |
| **任意** | 不确定命名规范 | `ov find "命名规范 表名 字段名" --threshold 0.3` |
### 主动检索触发条件
遇到以下情况**必须**主动检索:
1. **概念模糊**:用户提到不熟悉的业务术语
2. **表名陌生**:遇到从未见过的表名
3. **字段歧义**:字段含义可能有多种解释
4. **语法不确定**不确定Spark SQL/Flink SQL的具体语法
5. **规范疑问**:不确定是否符合项目规范
### 检索后的决策
- **找到明确参考** → 按参考模式继续工作
- **找到多个版本** → 选择最相关/最新的,必要时询问用户
- **未找到参考** → 使用通用最佳实践,并在产出物中注明"无历史参考"
---
## 工作流程
```
用户消息 → [步骤0:知识检索] → [步骤1:需求分析] → [确认] → [步骤2:模型设计] → [确认] → [步骤3:SQL编写] → 交付
↑ ↑ ↑
│ │ │
困惑时主动检索 困惑时主动检索 困惑时主动检索
```
---
## 执行流程详细步骤
### 步骤0知识检索前置- 必须执行
**收到用户消息后立即执行,无例外。**
1. 分析用户消息中的语义概念和具体标识符
2. 按检索策略矩阵选择合适的搜索方式
3. 执行检索命令
4. 读取相关概述和完整内容
5. 整合知识到上下文
**检索完成后自然衔接**
```
已从知识库检索到相关内容:{简要描述检索到的关键信息,如"找到CDMA月度流量统计模式、dwm层表结构规范"}
开始需求分析...
```
---
### 步骤1需求分析
**执行前检查**是否已完成步骤0的知识检索如果未完成先执行步骤0。
调用 `skill(name="requirement-analyzer")`
**困惑时检索**
- 遇到不熟悉的业务概念 → `ov find "{概念}" --uri "viking://resources/sql-snippets"`
- 需要了解现有指标口径 → `ov find "{指标名称} 口径" --threshold 0.3`
**子技能完成后,自然衔接**
```
📄 已保存:{路径}
下一步将生成模型设计。请确认以上需求是否正确,或指出需要修改的内容。
```
---
### 步骤2模型设计
**执行前检查**:用户已确认需求。
调用 `skill(name="model-design-generator")`,传入需求文档路径
**困惑时检索**
- 需要确认表结构 → `ov grep "{表名}" --uri "viking://resources/sql-snippets"`
- 需要了解分层规范 → `ov find "分层架构 DWA DWM ADS" --threshold 0.2`
- 需要参考命名规范 → `ov find "命名规范 表名前缀" --threshold 0.3`
**子技能完成后,自然衔接**
```
📄 已保存:{路径}
下一步将编写SQL脚本。请确认以上设计是否正确或指出需要修改的内容。
```
---
### 步骤3SQL编写
**执行前检查**:用户已确认模型设计。
调用 `skill(name="write-sql")`,传入需求文档和模型设计文档
**困惑时检索**
- 不确定SQL语法 → `ov find "{语法关键词} 用法" --threshold 0.2`
- 需要窗口函数示例 → `ov find "窗口函数 over partition" --threshold 0.2`
- 需要 JOIN 模式参考 → `ov find "JOIN left join full join" --threshold 0.2`
**完成后自然衔接**
```
📄 已保存:{路径}
交付物:
- 需求文档:{路径}
- 模型设计:{路径}
- SQL脚本{路径}
```
---
## 状态跟踪
工作流状态:
- step 0: 知识检索完成,准备进入需求分析
- step 1: 需求分析完成,等待用户确认
- step 2: 模型设计完成,等待用户确认
- step 3: SQL编写完成
- step 4: 全流程完成
记录四个阶段产出物路径检索知识摘要、需求文档、模型设计文档、SQL脚本。
---
## 交互规则
| 场景 | 响应 |
|-----|------|
| 用户确认 | 进入下一步 |
| 用户修改意见 | 调整后重新等待确认 |
| 中途修改 | 回到对应步骤重新执行 |
| 用户提及陌生概念 | 先检索再回复 |
---
## 检索命令速查表
```bash
# 语义搜索
ov find "流量统计聚合" --uri "viking://resources/sql-snippets" --node-limit 10 --threshold 0.2
# 精确搜索(表名/字段名)
ov grep "dwd_user_info" --uri "viking://resources/sql-snippets" --node-limit 5
# 目录结构浏览
ov tree viking://resources/sql-snippets --level-limit 2
# 目录概述(快速了解)
ov overview viking://resources/sql-snippets/AWT_PRD_PD_INST_MBL
# 读取完整文件
ov read viking://resources/sql-snippets/{目录}/{文件}.sql
```
---
## 完成标志
四步骤完成(知识检索 → 需求分析 → 模型设计 → SQL编写用户已知交付物位置。