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

205 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: online-mining-v2
description: 使用 ELK 作为默认线上数据源挖掘线上 case,并复用 product-data 的 canonical record 与导出流程。
when_to_use: 当用户希望从线上日志中按 query/domain/model prompt/model output/候选 domain 等条件挖掘样本、review 命中质量、形成专项评测集或训练数据时使用。
aliases: online-mining-elk, elk-mining, 线上挖掘v2
allowed_tools: 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_exec``script_path` 模式执行;如果迁移到其他 Agent,也可以直接运行这些脚本。
## 能力组织
```text
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 日志,适合拿最终 `query``domain``func``session_id``device_id``device``tts/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` 返回缺少 `elasticsearch``urllib3`,先安装:
```json
{
"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. 探索表和字段
需要确认表字段时,执行:
```json
{
"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. 搜索候选
按策略搜索:
```json
{
"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` 适合按 `planningOriginalResult``promptModel``excellent_domains_result`、候选 domain 搜索。
### 4. 补全双表信息
候选里只有一张表信息时,用 request id 补全:
```json
{
"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
```json
{
"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
```json
{
"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.jsonl``eval_planning.csv`
## 分支约束
- 用户要“线上数据直接做样本/评测集”:只做挖掘、review、转换,不生成新 query。
- 用户明确要“基于线上问题补数据/扩写/构造”:先完成线上问题 review,再切到 `product-data` 的 generation plan 流程。
- 不要把挖掘策略第一次命中的样本直接当最终数据;至少展示一小批给用户 review。
## 输出目录约束
所有产物写当前会话目录:
- 中间候选:`scratchpad/mined_candidates.jsonl`
- joined 详情:`scratchpad/joined_cases.jsonl`
- draft`scratchpad/mined_dataset_draft.txt`
- canonical records:通过 product-data 导出到 `output/records.jsonl`
不要写项目根目录、`tasks/``src/``skills/`