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

11 KiB
Raw Blame History

name, description
name description
smart-data-developer 智能数据开发员工。本项目为数据开发专用项目唯一任务是将业务需求转化为可执行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. 选择检索策略

# 情况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. 读取相关内容

# 获取目录概述(快速了解功能,推荐先看)
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脚本。


交互规则

场景 响应
用户确认 进入下一步
用户修改意见 调整后重新等待确认
中途修改 回到对应步骤重新执行
用户提及陌生概念 先检索再回复

检索命令速查表

# 语义搜索
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编写用户已知交付物位置。