Document data record review workflow

This commit is contained in:
武阳
2026-04-29 19:31:48 +08:00
parent c1951d6e4d
commit 279f56386c
2 changed files with 140 additions and 25 deletions
+139 -24
View File
@@ -3,55 +3,170 @@ name: data-record-format
description: 定义、检查、校验并准备标准数据记录,作为导出前的统一中间格式。
when_to_use: 当用户想讨论、创建、校验、归一化或转换标准数据记录格式时使用。
aliases: canonical-record, record-format
allowed_tools: read_file, write_file, edit_file, grep_search, glob_search, ask_user_question
allowed_tools: read_file, write_file, edit_file, grep_search, glob_search, ask_user_question, data_agent_prepare_generation_plan, data_agent_show_generation_plan, data_agent_update_generation_plan, data_agent_confirm_generation_plan, data_agent_normalize_dataset_draft, data_agent_validate_dataset_records
---
使用这个 skill 处理共享的数据格式层。目标是让生成、挖掘、历史导入的数据都先进入同一个 canonical record 格式,再导出为训练、评测、prompt 或展示格式。
使用这个 skill 处理共享的数据格式层。目标是让模型先输出便于人工 review 的 dataset draft text,再通过工具进入统一 canonical record最后再导出为训练、评测、prompt 或展示格式。
## 当前 Canonical Record 状态
## 交互门禁
TODOcanonical record v1 还没有最终确定
默认不要一步到位生成数据。除非用户已经明确说“开始生成”“确认计划”“按这个计划生成”或同义表达,否则只能做目标对齐、计划草案和问题确认
在最终确定前,先把下面结构当作工作草案
开始生成前必须确认这些信息
- `dataset_label`:数据集或专题名称。
- `target` / `target_definitions`:最终监督标签。单标签任务用 `target`,多标签边界任务必须用 `target_definitions` 列出每个标签和判定规则。
- 生成数量:总条数,以及单轮/多轮数量或比例。
- 覆盖范围:需要覆盖哪些 query 类型、意图边界或错误类型。
- 负例/排除项:哪些表达不要生成,或哪些边界容易误判。
- 落盘路径:draft、canonical records、validation result 写到哪里。
如果任一信息缺失,不要生成数据,不要调用 `data_agent_normalize_dataset_draft`,不要调用 `data_agent_validate_dataset_records`,只向用户提出需要确认的问题。
信息完整后,先调用 `data_agent_prepare_generation_plan` 创建 pending 计划,并把返回的计划展示给用户。此时必须停止,等待用户 review。
在真正生成前,必须先给用户展示一份简短生成计划,包含:
```text
dataset_label:
target 或 target_definitions:
生成数量:
单轮/多轮:
覆盖范围:
负例/排除项:
落盘路径:
```
展示计划后停下来等用户 review。
- 如果用户提出修改意见,调用 `data_agent_update_generation_plan` 更新计划,然后重新展示计划并继续等待 review。
- 如果用户要求查看当前计划,调用 `data_agent_show_generation_plan`
- 只有用户明确确认当前计划版本后,才能调用 `data_agent_confirm_generation_plan`。确认时传入刚展示给用户的 `reviewed_revision`
用户确认后,拿到 `confirmed_plan_id`,才能生成 dataset draft text,并继续调用工具。
`data_agent_normalize_dataset_draft` 对生成数据有代码级门禁:没有 `confirmed_plan_id`,或者计划未确认,会拒绝执行。
多标签边界数据不要拆成多个互不相关的单标签计划。应该创建一个计划,并在 `target_definitions` 中列出所有候选标签。例如:
```json
[
{
"name": "餐饮服务",
"target": "Agent(tag=\"餐饮服务\")",
"rule": "找附近的美食、奶茶、餐厅等,没有明确要求导航。"
},
{
"name": "地图导航",
"target": "Agent(tag=\"地图导航\")",
"rule": "明确出现导航去某地点、带我去某地点、路线规划等。"
}
]
```
生成 draft text 时,每条 case 的 `target:` 必须从已确认计划的 `target``target_definitions[*].target` 中选择。不要临时发明新 target。
## 数据生成输出格式
当需要生成数据样本时,默认使用 dataset draft text v1,不要直接输出 JSON、JSONL、CSV 或最终表格格式。除非用户明确要求机器可读格式,否则优先输出便于人工 review 的文本格式。
### 格式
```text
# dataset_label: 数据集或专题名称
### case: case名称
用户: 本轮 query
target: Agent(tag="xxx")
notes: 可选,说明覆盖的问题或边界
### case: 多轮 case 名称
用户: 前一轮 query
小爱: 前一轮 tts
用户: 本轮 query
target: Agent(tag="xxx")
notes: 可选,说明覆盖的问题或边界
```
### 规则
- 每条数据用一个 `### case:` 开始。
- `用户:` 表示用户 query。
- `小爱:` 表示小爱回复 tts。
- 最后一个 `用户:` 是本轮 query。
- `target:` 是本轮 query 对应的监督标签,必须存在。
- 单轮数据只需要写一行 `用户:`,然后写 `target:`
- 多轮数据需要按照时间顺序写多组 `用户:` / `小爱:`
- 多轮数据的最后一轮只写 `用户:``target:`,不要写最后一轮 `小爱:`,因为本轮 query 不包含 tts。
- 如果 `target` 无法确定,不要编造,必须向用户确认。
- 不要手写 `record_id``request_id``timestamp``context`
- 线上挖掘数据如有真实 `request_id``timestamp`,可以附加在 case 中;没有则不写。
## Canonical Record
`data_agent_normalize_dataset_draft` 会把 dataset draft text 转成 canonical records,并统一补齐 `record_id``source``timestamp``context``target_type` 等机械字段。
当前 canonical record v1 工作格式:
```json
{
"record_id": "optional-stable-id",
"conversation": [
"record_id": "gen_aabbccdd_000001",
"source": {
"type": "generated",
"request_id": "aabbccdd",
"timestamp": 1755567930500
},
"turn": {
"query": "本轮 query",
"timestamp": 1755567930500
},
"prev_session": [
{
"query": "...",
"tts": "...",
"metadata": {}
"query": "前一轮 query",
"tts": "前一轮 tts",
"timestamp": 1755567870500
}
],
"context": {},
"label": {
"type": "function_or_agent",
"name": "...",
"arguments": {}
"dataset_label": "数据集或专题名称",
"target": "Agent(tag=\"xxx\")",
"target_type": "agent"
},
"source": {
"type": "generated|mined|eval_error|manual",
"task_id": "...",
"notes": "..."
},
"metadata": {}
"meta": {
"case_name": "case名称",
"notes": ""
}
}
```
## 必要工作循环
1. 先判断用户讨论的是 canonical record 层,还是下游导出格式层。
1. 先判断用户讨论的是模型生成草稿、canonical record 层,还是下游导出格式层。
2. 如果用户提供了文件,先检查文件结构,再提出转换或校验方案。
3. 明确记录必填字段中的不确定点,尤其是 `tts`、标签类型、标签名称、多轮结构和来源元数据
4. 如果当前 schema 信息不足以继续,提出简短问题,或把问题写入任务笔记
5. 在 canonical records 存在之前,不要直接创建最终训练、评测或展示格式
3. 如果生成目标没有确认完整,按“交互门禁”提问,不要继续生成
4. 信息完整后,调用 `data_agent_prepare_generation_plan` 创建 pending 计划,展示计划并等待用户 review
5. 用户提出修改意见时,调用 `data_agent_update_generation_plan`,然后重新展示计划
6. 用户明确确认当前计划版本后,调用 `data_agent_confirm_generation_plan` 获取 `confirmed_plan_id`
7. 让模型优先生成 dataset draft text,而不是直接生成 canonical JSON。
8. 调用 `data_agent_normalize_dataset_draft`,并传入 `confirmed_plan_id`,转成 canonical records。
9. 调用 `data_agent_validate_dataset_records` 校验字段、标签、时间戳和多轮结构。
10. 明确记录必填字段中的不确定点,尤其是 `target`、标签类型、多轮结构和来源元数据。
11. 如果当前 schema 信息不足以继续,提出简短问题,或把问题写入任务笔记。
12. 在 canonical records 存在之前,不要直接创建最终训练、评测或展示格式。
## 工具使用建议
-`read_file` 读取用户提供的样例或 schema 笔记。
-`write_file``edit_file` 起草 schema 笔记、样例记录或 open questions。
-`grep_search``glob_search` 查找已有 data-agent 文档和样例。
- TODO:工具实现后,使用 `validate_dataset_records``normalize_dataset_records``convert_dataset_format``export_dataset`
- `data_agent_prepare_generation_plan` 创建待确认生成计划
-`data_agent_show_generation_plan` 查看当前计划。
-`data_agent_update_generation_plan` 根据用户 review 意见修改计划。
-`data_agent_confirm_generation_plan` 记录用户确认,并获取 `confirmed_plan_id`
-`data_agent_normalize_dataset_draft` 把 dataset draft text 转成 canonical records,生成数据必须传入 `confirmed_plan_id`
-`data_agent_validate_dataset_records` 校验 canonical records。
- 后续导出阶段再使用 `convert_dataset_format``export_dataset`
## 推荐产物
@@ -38,7 +38,7 @@ allowed_tools: read_file, write_file, edit_file, grep_search, glob_search, ask_u
- 要生成的正例、反例、边界例
- 必要元数据
7. 只有在计划清楚后,才生成或请求 canonical records。
8. TODO:工具实现后,在预览或导出前运行 `validate_dataset_records`
8. TODO:工具实现后,在预览或导出前运行 `data_agent_validate_dataset_records`
9. TODO:工具实现后,运行 `render_dataset_preview``export_dataset`
## 当前工具状态