# 06. product-data Skill 实现 ![product-data Skill 实现](assets/06-product-data.png) ## 1. 定位 `product-data` 是数据开发链路的核心 Skill,负责: ```text 产品定义 / 标签规则 / 手写边界 / 示例 query / badcase -> 输入文本化 -> generation goal -> 用户 review -> generation plan -> 用户确认数量、标签、边界、路径 -> dataset draft text -> canonical records -> validate -> export records / table / training / eval ``` 位置: ```text skills/product-data/SKILL.md skills/product-data/knowledge/ skills/product-data/scripts/ ``` ## 2. Skill 目录结构 当前 `SKILL.md` 中定义的能力组织: ```text skills/product-data/ SKILL.md tools.yaml requirements.txt knowledge/ dataset_draft_v1.md canonical_record_v1.md portable_skill_contract.md schemas/ scripts/ normalize_dataset_draft.py validate_dataset_records.py export_dataset_records.py export_dataset_table.py export_training_jsonl.py export_planning_eval_csv.py ``` 分工: ```text SKILL.md 流程协议、门禁、工具调用顺序、禁止事项。 knowledge/ 数据草稿、canonical record 和 portable skill contract。 scripts/ 确定性转换、校验和导出。 data_agent_* 平台工具 负责输入文本化和 review 状态机。 ``` ## 3. 输入类型 Skill 将输入分成三类: ```text 文件定义型 产品定义、标签定义、路由规则、表格、Markdown、CSV。 手写规则型 用户直接描述边界,例如“找附近美食给餐饮服务,导航去某地给地图导航”。 示例归纳型 用户只给 query/example/badcase,需要先归纳边界和标签倾向。 ``` 三类输入最后统一整理成: ```text dataset_label target / target_definitions plan_hint coverage exclusions open_questions source_refs complex 规则 ``` 这一步称为 `generation_goal`。 ## 4. Review 门禁 `product-data` 有两个门禁模式。 ### 4.1 一次确认模式 适用: - 用户直接给出清晰手写规则。 - target 表达明确。 - 用户已经希望生成数据。 链路: ```text data_agent_prepare_generation_plan(direct_review=true) -> 展示目标 + 数量 + 路径 -> 等待“确认,开始生成” ``` ### 4.2 两段确认模式 适用: - 用户提供文件、表格、badcase、长文档。 - 标签、边界、字段有歧义。 - 需要先从资料中抽取 generation goal。 链路: ```text data_agent_load_input_sources -> data_agent_render_source_context -> Agent 整理 generation_goal -> data_agent_prepare_generation_goal -> 用户确认目标 -> data_agent_confirm_generation_goal -> data_agent_prepare_generation_plan -> 用户确认计划 -> data_agent_confirm_generation_plan ``` ## 5. 和 Agent Loop 的关系 `product-data` 明确利用 Agent loop 做分阶段控制。 ```text 第一轮: 模型选择 product-data 调输入工具 调 prepare_generation_goal 或 prepare_generation_plan 输出 review 信息 停止 第二轮: 用户确认目标或计划 Agent resume session 调 confirm 工具 继续下一阶段 第三轮: 用户确认计划 Agent 生成 dataset draft 每批调用 normalize 脚本 调 validate 脚本 调 export 脚本 输出最终文件路径 ``` 重点是:确认状态不是靠自由文本记忆,而是由工具维护 `confirmed_goal_id` 和 `confirmed_plan_id`。 ## 6. 数据格式设计 ### 6.1 dataset draft text 面向模型生成,要求模型用较低结构负担描述: - 用户 / 小爱 对话。 - 当前 query。 - target。 - complex。 - 场景说明。 设计目标是降低模型直接写 JSONL 的难度。 ### 6.2 canonical record 面向工具处理,字段稳定。 用于: - 校验结构。 - 导出流转 CSV。 - 导出训练 JSONL。 - 导出评测 planningPrompt CSV。 ### 6.3 complex 独立维度 `complex` 不属于 target。 内部保存: ```text complex: false target: Agent(tag="地图导航") ``` 训练输出组合: ```text complex=false Agent(tag="地图导航") ``` 评测 CSV 里: ```text code标签: Agent(tag="地图导航") complex: FALSE ``` ## 7. 脚本链路 生成式数据确认后,Skill 要求使用 `python_exec.script_path` 调脚本。 典型顺序: ```text normalize_dataset_draft.py 输入 draft + confirmed_plan_id 输出/追加 scratchpad/normalized_records.jsonl validate_dataset_records.py 读取 normalized_records.jsonl 校验字段、target、complex、时间戳、多轮上下文 export_dataset_records.py 导出 output/records.jsonl 同时生成 output/records.csv export_training_jsonl.py 导出 output/training.jsonl export_planning_eval_csv.py 导出 output/eval_planning.csv ``` 为什么不用 `write_file`: - records、CSV、JSONL 都是强格式数据。 - 模型手写容易出错。 - 脚本能统一 timestamp、prev_session、context、complex/target 组合。 ## 8. 输出约束 固定逻辑输出: ```text output/records.jsonl output/records.csv output/training.jsonl output/eval_planning.csv ``` 通过路径路由,实际写入: ```text .port_sessions/accounts//sessions//output/ ``` Skill 明确禁止: - 按数据集名创建随机子目录。 - 把 records 写到项目根目录。 - 用 `write_file` 手写最终 JSONL/CSV。 - 在未确认 plan 前生成数据。 ## 9. 设计边界 `product-data` 负责: - 数据目标对齐。 - 生成计划 review。 - dataset draft 生成协议。 - canonical records 转换和导出。 不负责: - 判断所有标签知识。 - 查询线上数据。 - ELK 检索。 - 模型训练或 git 数据仓库提交。 标签知识应由 `label-master` 辅助,线上数据由 `online-mining-v2` 或相关 Skill 获取。