Update one-skill to use more ov search

This commit is contained in:
Xin Wang
2026-05-13 11:14:56 +08:00
parent f9e36ef92d
commit 5e82cc003f
2 changed files with 57 additions and 11 deletions

View File

@@ -60,6 +60,18 @@ description: 智能数据开发员工。支持数据开发和简单取数两种
| 步骤2 - 模型设计前 | 检索分层规范、参考案例 | MUST |
| 步骤3 - SQL 编写前 | 检索语法、成功案例、历史 SQL 片段 | MUST |
### 困惑场景先查 OV
当需要找源表、确认字段、参考历史代码、确认处理口径,或在模型设计/SQL 编写中遇到任何不确定点时,先查 OV 记忆和经验,再继续设计或写 SQL。不要凭经验猜表结构、字段含义、历史口径或 SQL 写法。
| 困惑场景 | 优先检索 |
|---------|---------|
| 不知道用哪张表 | `viking://resources/table-metadata` + `viking://resources/field-process-memory` |
| 表名或字段含义不确定 | `viking://resources/table-metadata` |
| 需要字段处理经验、口径经验、常用数据源判断 | `viking://resources/field-process-memory` |
| 需要 SQL 写法、历史成功案例、代码参考 | `viking://resources/sql_snippets` |
| SQL 语法或引擎差异不确定 | 先查 `references/sql/reference/`,再查 `viking://resources/sql_snippets` |
### OV 优先 + legacy fallback
默认使用 OV 搜索,不主动调用 legacy data-structure-fetcher。只有以下情况才读取 `references/legacy-data-structure-fetcher/SKILL.md` 并运行其脚本:

View File

@@ -29,18 +29,50 @@ write-sql 不自己读取文件,所有输入通过参数传入:
```
1. 确定 engine默认 spark
2. 解析 context判断任务类型
3. 精确加载一个对应模板
3. SQL 编写前先查 OV 记忆和经验
→ 源表/字段结构 → viking://resources/table-metadata
→ 字段处理经验/口径 → viking://resources/field-process-memory
→ 历史成功 SQL/代码参考 → viking://resources/sql_snippets
4. 精确加载一个对应模板:
→ ETL/数据开发 → ../references/sql/templates/{engine}/etl-template.sql
→ 查询/取数 → ../references/sql/templates/{engine}/query-template.sql
→ 建表 → ../references/sql/templates/{engine}/create-table-template.sql
→ 数据插入 → ../references/sql/templates/{engine}/insert-template.sql
→ 分区操作(仅Spark) → ../references/sql/templates/spark/partition-template.sql
4. 加载引擎生成规则:
5. 加载引擎生成规则:
→ ../references/sql/reference/{engine}-sql-syntax.md 的「SQL 生成规则」章节
5. 按通用规则 + 引擎特有规则 + 模板骨架 生成 SQL
6. 如有 output_path 则写入文件
6. 按 OV 结果 + 通用规则 + 引擎特有规则 + 模板骨架生成 SQL
7. 如有 output_path 则写入文件
```
# OV 记忆和经验优先
写 SQL 前必须先检查 OV 中的记忆、经验和历史代码,尤其是找源表、确认字段、需要代码参考或遇到不确定点时。不要凭经验猜表结构、字段含义、口径处理或 SQL 写法。
## 必查资源
| 资源 | 用途 | 命令示例 |
|------|------|----------|
| `viking://resources/table-metadata` | 表结构、字段定义、字段类型 | `conda run -n py13 ov grep "{表名}" --uri "viking://resources/table-metadata" --node-limit 10` |
| `viking://resources/field-process-memory` | 字段处理经验、常用数据源判断、业务口径经验 | `conda run -n py13 ov grep "{表名}.*{字段名}" --uri "viking://resources/field-process-memory" --node-limit 10` |
| `viking://resources/sql_snippets` | 历史成功 SQL、代码片段、相似场景写法 | `conda run -n py13 ov grep "{表名}" --uri "viking://resources/sql_snippets" --node-limit 15` |
## 困惑场景立即检索
| 场景 | 动作 |
|------|------|
| 表名陌生或源表不确定 | 先查 `table-metadata`,再查 `field-process-memory` 判断是否常用 |
| 字段含义、字段类型、关联键不确定 | 查 `table-metadata` 的表名+字段名组合 |
| 字段处理口径不确定 | 查 `field-process-memory` 的表名+字段名组合 |
| 需要参考历史代码或相似 SQL | 查 `sql_snippets` 的表名、业务场景、关键语法 |
| 引擎语法不确定 | 先读 `../references/sql/reference/{engine}-sql-syntax.md`,再查 `sql_snippets` 里的成功案例 |
## OV 结果使用方式
- 把 OV 找到的源表、字段、关联键、处理经验写进 SQL 生成依据。
- 如果 OV 结果与 context 冲突,先指出冲突并请用户确认,不能静默选择。
- 如果 OV 没有结果,明确说明未找到相关记忆,并退回到 context + 本地 SQL reference/templates 生成。
# 通用规则(所有引擎都必须遵守)
以下规则适用于所有引擎,不受引擎差异影响:
@@ -81,16 +113,18 @@ write-sql 不自己读取文件,所有输入通过参数传入:
1. **确认引擎**:根据 `engine` 参数确定目标引擎(默认 spark
2. **判断任务类型**:从 context 判断是 ETL / 查询 / 建表 / 插入
3. **精确加载一个模板**:只加载任务类型对应的那个模板文件,不要加载多个
4. **查阅引擎规则**:读取 `../references/sql/reference/{engine}-sql-syntax.md` 的「SQL 生成规则」章节
5. **解析 context**提取表名、字段、逻辑、过滤条件、聚合需求、JOIN 关系
6. **生成 SQL**:通用规则 + 引擎特有规则 + 模板骨架
7. **自我审查**:检查是否遗漏步骤、是否符合规范
8. **输出**对话展示 SQL + 如调用方提供了 output_path 则写入纯 SQL 文件
3. **先查 OV 记忆和经验**:根据 context 中的源表、字段、业务场景检索 `table-metadata``field-process-memory``sql_snippets`
4. **精确加载一个模板**:只加载任务类型对应的那个模板文件,不要加载多个
5. **查阅引擎规则**:读取 `../references/sql/reference/{engine}-sql-syntax.md` 的「SQL 生成规则」章节
6. **解析 context + OV 结果**提取表名、字段、逻辑、过滤条件、聚合需求、JOIN 关系和历史处理经验
7. **生成 SQL**OV 结果 + 通用规则 + 引擎特有规则 + 模板骨架
8. **自我审查**检查是否遗漏步骤、是否符合规范
9. **输出**:对话展示 SQL + 如调用方提供了 output_path 则写入纯 SQL 文件
# 硬性约束
1. **不读取文件**write-sql 不负责读取需求文档或模型设计文档,所有内容通过 context 传入
2. **不决定路径**文件输出路径由调用方决定write-sql 只负责写入
3. **必须查阅本 skill 的 SQL 资源**:生成 SQL 前先查阅 `../references/sql/reference/``../references/sql/templates/`
4. **不编造语法**:不确定的语法查阅 reference 确认
4. **必须先查 OV 记忆和经验**:找源表、查字段、参考历史代码、处理困惑时先查 `table-metadata``field-process-memory``sql_snippets`
5. **不编造语法**:不确定的语法查阅 reference 和 OV 成功案例确认