Files
zk-data-agent/skills/online-mining-v2/SKILL.md
T
2026-05-12 17:01:43 +08:00

6.0 KiB
Raw Blame History

name, description, when_to_use, aliases, allowed_tools
name description when_to_use aliases allowed_tools
online-mining-v2 使用 ELK 作为默认线上数据源挖掘线上 case,并复用 product-data 的 canonical record 与导出流程。 当用户希望从线上日志中按 query/domain/model prompt/model output/候选 domain 等条件挖掘样本、review 命中质量、形成专项评测集或训练数据时使用。 online-mining-elk, elk-mining, 线上挖掘v2 read_file, write_file, grep_search, glob_search, ask_user_question, python_exec, python_package

Online Mining v2

使用这个 skill 处理“线上日志需求 -> ELK 挖掘策略 -> 候选样本 review -> product-data 标准数据”的工作流。

本 skill 不新增平台注册工具。能力都在 skills/online-mining-v2/scripts/ 下,通过 python_execscript_path 模式执行;如果迁移到其他 Agent,也可以直接运行这些脚本。

能力组织

skills/online-mining-v2/
  SKILL.md
  README.md
  knowledge/
    数据源字段说明.md
    工作流.md
  scripts/
    online_mining_common.py
    elk_profile_index.py
    elk_search_cases.py
    elk_fetch_by_request_ids.py
    elk_join_request_logs.py
    build_dataset_draft.py

默认数据源:

  • pre-processing-info*:前处理日志,适合拿模型 prompt、模型输出、候选 domain、excellent_domains_result
  • arch-flat-nlp-log-f-*:主 NLP 日志,适合拿最终 querydomainfuncsession_iddevice_iddevicetts/text/to_speak

后处理全部复用 product-data

  • skills/product-data/scripts/normalize_dataset_draft.py
  • skills/product-data/scripts/validate_dataset_records.py
  • skills/product-data/scripts/export_dataset_records.py
  • skills/product-data/scripts/export_training_jsonl.py
  • skills/product-data/scripts/export_planning_eval_csv.py

依赖

如果 python_exec 返回缺少 elasticsearchurllib3,先安装:

{
  "action": "install",
  "packages": ["elasticsearch<8", "urllib3"],
  "timeout_seconds": 120
}

不要用 bash 手写临时脚本查询 ELK;优先使用本 skill 的 portable scripts。

关键工作流

1. 先理解需求,不直接挖

从用户输入整理挖掘目标:

  • 目标问题:要评估准确率、构建评测集,还是补充训练数据。
  • 目标标签:如 Agent(tag="地图导航")Summarize()
  • 复杂度:complex=true/false 是否明确。
  • 线上筛选特征:query 关键词/正则、domain、func、候选 domain、模型输出、prompt 特征、设备、日期。
  • review 策略:先抽多少条给用户看,通常先 20 到 100 条。

缺少目标标签或关键筛选字段时,先问用户,不要直接导出数据。

2. 探索表和字段

需要确认表字段时,执行:

{
  "script_path": "skills/online-mining-v2/scripts/elk_profile_index.py",
  "stdin": {
    "sources": ["main", "pre_processing"],
    "date": "20260512",
    "sample_size": 20
  },
  "timeout_seconds": 120,
  "max_output_chars": 20000
}

3. 搜索候选

按策略搜索:

{
  "script_path": "skills/online-mining-v2/scripts/elk_search_cases.py",
  "stdin": {
    "source": "pre_processing",
    "date": "20260512",
    "size": 50,
    "scan_size": 500,
    "filters": {
      "query_contains": ["总结一下"],
      "planning_result_contains": ["Summarize"]
    }
  },
  "timeout_seconds": 180,
  "max_output_chars": 30000
}

source=main 适合按最终 domain / func / query 搜索。source=pre_processing 适合按 planningOriginalResultpromptModelexcellent_domains_result、候选 domain 搜索。

4. 补全双表信息

候选里只有一张表信息时,用 request id 补全:

{
  "script_path": "skills/online-mining-v2/scripts/elk_join_request_logs.py",
  "stdin": {
    "request_ids": ["xxx", "yyy"],
    "date": "20260512"
  },
  "timeout_seconds": 180,
  "max_output_chars": 30000
}

5. 给用户 review

展示候选样本时只展示必要字段:

  • request_id
  • query
  • main.domain / main.func
  • pre.planning_result
  • pre.hit_rules
  • pre.candidate_domains
  • session_id / device_id
  • tts/text

不要一次贴大量 prompt。需要看 prompt 时只展示截断摘要,或保存到会话 output 目录。

6. 用户确认后转成 product-data draft

线上候选直接作为样本时,先生成 dataset draft text

{
  "script_path": "skills/online-mining-v2/scripts/build_dataset_draft.py",
  "stdin": {
    "dataset_label": "总结类线上专项",
    "target": "Summarize()",
    "complex": false,
    "cases": [/* elk_search_cases  join 输出里的 cases */],
    "output_path": "scratchpad/mined_dataset_draft.txt"
  },
  "timeout_seconds": 120,
  "max_output_chars": 20000
}

然后必须调用 product-data

{
  "script_path": "skills/product-data/scripts/normalize_dataset_draft.py",
  "stdin": {
    "draft_path": "scratchpad/mined_dataset_draft.txt",
    "source_type": "online",
    "records_output_path": "scratchpad/normalized_records.jsonl",
    "append": false,
    "return_records": false
  },
  "timeout_seconds": 120,
  "max_output_chars": 20000
}

再执行校验和导出:

  • validate_dataset_records.py
  • export_dataset_records.py,输出固定 output/records.jsonl
  • 用户需要训练或评测时,再导出 training.jsonleval_planning.csv

分支约束

  • 用户要“线上数据直接做样本/评测集”:只做挖掘、review、转换,不生成新 query。
  • 用户明确要“基于线上问题补数据/扩写/构造”:先完成线上问题 review,再切到 product-data 的 generation plan 流程。
  • 不要把挖掘策略第一次命中的样本直接当最终数据;至少展示一小批给用户 review。

输出目录约束

所有产物写当前会话目录:

  • 中间候选:scratchpad/mined_candidates.jsonl
  • joined 详情:scratchpad/joined_cases.jsonl
  • draftscratchpad/mined_dataset_draft.txt
  • canonical records:通过 product-data 导出到 output/records.jsonl

不要写项目根目录、tasks/src/skills/