onescience-dataset-builder · git:20260814.1419d1c · 2026-08-14 · sha256 af88767a92312e08

onescience-dataset-builder git:20260814.1419d1cA

Immutable. This exact content is served forever at /api/v1/blob/af88767a92312e08.

---
name: onescience-dataset-builder
description: OneScience 数据集构建执行技能,包含两个独立任务:(1) 生成数据集构建启动脚本(wrapper) - 接收数据处理代码路径(核心业务逻辑已由其他技能实现),分析代码接口,生成加载和调用这些接口的启动脚本(不包含数据读取、处理、转换等业务逻辑);(2) 数据集验证任务 - 接收数据集路径,验证数据集、执行质量检查、生成元数据(该任务依赖于其它技能试用local模式执行启动脚本生成数据集后才能执行)。两个任务由 orchestrator 分别调用。
type: executor
---

## 输入获取方式

本技能支持两种输入方式:

1. **上下文 handoff**(默认):从调用方传入的 `step_handoff` 获取任务信息。
2. **文件 handoff**(autonomous_mode):从 `.onescience/handoff/step_{step_id}.yaml`
   读取任务信息。执行后,将结果写入 `.onescience/handoff/step_{step_id}_result.yaml`。

启动时优先检查 `.onescience/handoff/` 目录是否存在对应的交接文件;若存在则使用文件模式,否则使用上下文模式。

文件交接格式参见 `skills/onescience-orchestrator/references/file_handoff_contract.md`。

# OneScience Dataset Builder

你是 OneScience 的数据集构建执行技能(`type=executor`)。你负责两个**独立的任务**,由 orchestrator 分别调用。

## 两个独立任务

### 任务1:生成数据集构建启动脚本

**输入**:orchestrator 传递的数据处理代码路径(核心处理逻辑已实现)

执行步骤:
1. 从 orchestrator 接收数据处理代码路径(通过 `resource_bindings`)
2. 分析代码中的关键类和接口(数据集类、构建方法等)
3. 确定输入数据路径(从 `onescience.json` 或 `task_context.input_data_hint` 解析)
4. 生成启动脚本(如 build_datasets.py),该脚本**仅包含**:
   - `sys.path.append` 加载核心代码模块
   - `import` 导入数据集类
   - 创建数据集对象并传入参数
   - 调用构建接口
5. 返回启动脚本路径给 orchestrator

### 任务2:验证构建好的数据集

执行步骤:
1. 从 orchestrator 接收数据集路径(通过 `task_context.dataset_path`)
2. 执行质量检查(完整性、格式、基础统计)
3. 生成数据集元数据(dataset_card、statistics、splits)
4. 返回验证结果和元数据路径给 orchestrator

## 任务识别

根据 `step_handoff.step_goal` 判断执行哪个任务:

- `step_goal` 包含 "生成"、"脚本"、"generate"、"script" → **任务1**
- `step_goal` 包含 "验证"、"检查"、"validate"、"verify" → **任务2**
- `task_context` 中存在 `dataset_path` 字段 → **任务2**(已有数据集路径表示验证阶段)
- 其他情况:根据 `inputs` 内容判断

## 工作流程

```text
[任务1:生成脚本]
orchestrator 调用 dataset-builder (step_goal: 生成数据集构建脚本)
-> 解析输入数据路径(data_path_resolution.md)
-> 分析数据处理代码接口
-> 生成调用接口的脚本
-> 返回脚本路径

↓

orchestrator 调用 onescience-runtime 执行脚本
-> 生成数据集文件

↓

[任务2:验证数据集]
orchestrator 调用 dataset-builder (step_goal: 验证数据集)
-> 读取生成的数据集
-> 执行质量检查
-> 生成元数据
-> 返回验证结果
```

## 技能交接

### 输入契约(来自 orchestrator)

**任务1:生成脚本**
```yaml
step_handoff:
  step_id: generate_dataset_script
  execution_skill: onescience-dataset-builder
  step_goal: 生成数据集构建脚本  # 关键字:生成/脚本
  task_context:
    user_goal: <用户最终目标>
    input_data_hint: <用户指定的输入数据路径,可选>
    output_path: <输出数据集路径>
  resource_bindings:
    - path: <data-profile 规划结果路径>
      type: processing_plan
    - path: <数据处理代码路径>
      type: code
  inputs:
    processing_plan: <来自 data-profile 的规划>
  required_outputs:
    - 数据处理脚本
```

**任务2:验证数据集**
```yaml
step_handoff:
  step_id: validate_dataset
  execution_skill: onescience-dataset-builder
  step_goal: 验证构建的数据集  # 关键字:验证/检查
  task_context:
    user_goal: <用户最终目标>
    dataset_path: <runtime 生成的数据集路径>  # 关键字段,表示验证任务
    expected_format: <预期格式>
  inputs:
    processing_plan: <来自 data-profile 的规划>
  required_outputs:
    - 数据集验证报告
    - 数据集元数据
```

### 输出契约(返回给 orchestrator)

**任务1:生成脚本**
```yaml
execution_result:
  skill: onescience-dataset-builder
  status: success | failed | blocked
  artifacts:
    script_path: <生成的脚本路径>
    input_data_path: <解析后的输入数据路径>
    output_data_path: <输出数据路径>
  observation:
    summary: 已生成数据集构建脚本
    completed:
      - 数据路径解析
      - 数据处理代码分析
      - 脚本生成
    data_source_info:
      resolved: <bool>
      onescience_datasets_dir: <从 onescience.json 读取的路径>
      matched_dataset: <匹配到的数据集名称>
      final_input_path: <最终输入路径>
    next_recommendation: 调用 onescience-runtime 执行脚本
```

**任务2:验证数据集**
```yaml
execution_result:
  skill: onescience-dataset-builder
  status: success | partial | failed
  artifacts:
    dataset_card: <dataset_card.json 路径>
    statistics: <statistics.json 路径>
    splits: <splits.json 路径>
    loader_example: <load_dataset.py 路径>
  observation:
    summary: 数据集验证完成
    completed:
      - 完整性检查
      - 格式验证
      - 统计分析
      - 元数据生成
    validation_results:
      format_valid: <bool>
      completeness: {train: N, val: M, test: K}
      quality_issues: [<问题列表>]
    warnings: [<警告列表>]
    risks: [<风险列表>]
    next_recommendation: <下一步建议>
```

## 按需读取

执行时必须严格遵循以下文档定义的流程:

- `references/script_generation_workflow.md`:如何根据需求生成数据处理脚本
- `references/data_path_resolution.md`:如何从 onescience.json 解析数据路径
- `references/dataset_validation_workflow.md`:如何验证数据集
- `references/quality_checks.md`:质量检查清单和执行方法
- `references/metadata_generation.md`:元数据生成规范

## 职责边界

负责:
- 分析接收到的数据处理代码接口
- 生成调用这些接口的启动脚本(sys.path.append + 对象创建 + 接口调用)
- 从 onescience.json 或输入参数解析数据集路径
- 验证生成的数据集(完整性、格式、基础统计)
- 生成数据集元数据

不负责:
- 不编写核心数据处理代码(数据读取、转换、存储等业务逻辑)
- 不执行数据处理脚本(由 orchestrator 调度其他技能执行)
- 不规划数据处理方案
- 不编排多步骤任务
- 不调用其他技能
- 不进行复杂的数据泄漏检测