diff --git a/skills/smart-data-developer/SKILL.md b/skills/smart-data-developer/SKILL.md index ab6bbae..ee83cf5 100644 --- a/skills/smart-data-developer/SKILL.md +++ b/skills/smart-data-developer/SKILL.md @@ -1,6 +1,6 @@ --- name: smart-data-developer -description: 智能数据开发员工。端到端将数据需求转化为可执行SQL。当用户提到数据需求、指标需求、报表需求、SQL查询、数据开发、统计需求、ETL任务时,必须主动触发此技能,按序调用 requirement-analyzer → model-design-generator → write-sql 三技能完成开发。 +description: 智能数据开发员工。本项目为数据开发专用项目,唯一任务是将业务需求转化为可执行SQL。【任何用户消息都必须立即触发此技能】。无论是需求描述、问题咨询、闲聊问候、或其他任何形式的用户输入,都应触发此技能启动知识检索→需求分析→模型设计→SQL编写的工作流程。此技能是本项目的核心入口,无例外、无条件触发。 --- # 智能数据开发员工 @@ -11,25 +11,182 @@ description: 智能数据开发员工。端到端将数据需求转化为可执 | 步骤 | 子技能 | 产出物 | |-----|--------|--------| +| 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. **规范疑问**:不确定是否符合项目规范 + +### 检索后的决策 + +- **找到明确参考** → 按参考模式继续工作 +- **找到多个版本** → 选择最相关/最新的,必要时询问用户 +- **未找到参考** → 使用通用最佳实践,并在产出物中注明"无历史参考" + +--- + ## 工作流程 ``` -需求 → [步骤1] → [确认] → [步骤2] → [确认] → [步骤3] → 交付 +用户消息 → [步骤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` + **子技能完成后,自然衔接**: ``` 📄 已保存:{路径} @@ -37,11 +194,19 @@ description: 智能数据开发员工。端到端将数据需求转化为可执 下一步将生成模型设计。请确认以上需求是否正确,或指出需要修改的内容。 ``` +--- + ### 步骤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` + **子技能完成后,自然衔接**: ``` 📄 已保存:{路径} @@ -49,11 +214,19 @@ description: 智能数据开发员工。端到端将数据需求转化为可执 下一步将编写SQL脚本。请确认以上设计是否正确,或指出需要修改的内容。 ``` +--- + ### 步骤3:SQL编写 -**确认后进入** + +**执行前检查**:用户已确认模型设计。 调用 `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` + **完成后自然衔接**: ``` 📄 已保存:{路径} @@ -63,16 +236,22 @@ description: 智能数据开发员工。端到端将数据需求转化为可执 - 模型设计:{路径} - SQL脚本:{路径} ``` + --- + ## 状态跟踪 -```python -state = { - "step": 0, # 0→1→1.5(等待)→2→2.5(等待)→3→4(完成) - "confirmed": [False, False], # [步骤1确认, 步骤2确认] - "paths": {"req": None, "model": None, "sql": None} -} -``` + +工作流状态: +- step 0: 知识检索完成,准备进入需求分析 +- step 1: 需求分析完成,等待用户确认 +- step 2: 模型设计完成,等待用户确认 +- step 3: SQL编写完成 +- step 4: 全流程完成 + +记录四个阶段产出物路径:检索知识摘要、需求文档、模型设计文档、SQL脚本。 + --- + ## 交互规则 | 场景 | 响应 | @@ -80,9 +259,31 @@ state = { | 用户确认 | 进入下一步 | | 用户修改意见 | 调整后重新等待确认 | | 中途修改 | 回到对应步骤重新执行 | +| 用户提及陌生概念 | 先检索再回复 | + +--- + +## 检索命令速查表 + +```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 +``` --- ## 完成标志 -三步骤完成,用户已知交付物位置。 \ No newline at end of file +四步骤完成(知识检索 → 需求分析 → 模型设计 → SQL编写),用户已知交付物位置。