8.4 KiB
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_exec 的 script_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
build_online_records.py
默认数据源:
pre-processing*:前处理日志,适合拿模型 prompt、模型输出、候选 domain、excellent_domains_result。arch-flat-nlp-log-f-*:主 NLP 日志,适合拿最终query、domain、func、request_id、device_id、device、tts/text/to_speak。
后处理全部复用 product-data:
skills/product-data/scripts/normalize_dataset_draft.pyskills/product-data/scripts/validate_dataset_records.pyskills/product-data/scripts/export_dataset_records.pyskills/product-data/scripts/export_training_jsonl.pyskills/product-data/scripts/export_planning_eval_csv.py
依赖
如果 python_exec 返回缺少 elasticsearch 或 urllib3,先安装:
{
"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
}
时间筛选支持三种写法:
- 单日:
"date": "20260512" - 日期范围:
"date_from": "20260508", "date_to": "20260514" - 最近 N 天:
"lookback_days": 7
用户说“一周内”“最近 7 天”时,优先传 lookback_days: 7;用户给明确起止日期时,传 date_from/date_to。
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 适合按 planningOriginalResult、promptModel、excellent_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. 单条 rid 或已确认候选直接转元数据
如果用户给了明确 rid,或已经确认一批线上候选要直接作为样本,优先使用
build_online_records.py。这个脚本会完成:
- 主表
arch-flat-nlp-log-f-*和前处理表pre-processing*双表拉取。 - 从前处理
promptModel的[对话历史]抽取模型真实输入 session,作为prev_session。 - 优先使用用户指定
target;没有指定时,按pre_processing.code->planningOriginalResult-> 主表llm_agent_info.agentType-> 主表domain推断标签。 - 生成 product-data canonical records。
- 默认导出
output/records.jsonl和output/records.csv,可选导出training.jsonl和eval_planning.csv。
示例:
{
"script_path": "skills/online-mining-v2/scripts/build_online_records.py",
"stdin": {
"request_ids": ["6656271eedfe4b478ac716448a3ad310"],
"lookback_days": 7,
"dataset_label": "线上挖掘样本",
"target": "Agent(tag=\"地图导航\")",
"complex": false,
"output_dir": "output",
"export_records": true,
"export_training": false,
"export_eval": false
},
"timeout_seconds": 300,
"max_output_chars": 30000
}
注意:
- 老 rid 超出近 48 小时时必须让用户补日期,传
date=YYYYMMDD。 - 如果用户说“一周内/最近 7 天”,可以直接传
lookback_days: 7,不必逐日循环。 - 如果用户没有指定
target,脚本可以从线上模型输出推断,但最终仍建议展示target_source给用户确认。 - 如果脚本返回
case has no query,说明该 rid 在当前日期窗口没有命中主表/前处理表,不要继续伪造元数据。 - 不要用主表
session_id去拼训练/评测 session;它不是 planning 模型输入 session 的同义概念。
6. 给用户 review
展示候选样本时只展示必要字段:
- request_id
- query
- target / target_source(如果已经转换)
- main.domain / main.func
- pre.planning_result
- pre.hit_rules
- pre.candidate_domains
- session_id / device_id
- tts/text
不要一次贴大量 prompt。需要看 prompt 时只展示截断摘要,或保存到会话 output 目录。
7. 用户确认后转成 product-data draft
一般情况下不要再手动接 normalize/export。只有当用户明确要看 draft text,
或需要和 product-data 的人工生成流程混合时,才先生成 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
}
更推荐直接使用第 5 步的 build_online_records.py,减少模型手动接线出错。
如果使用 draft 分支,再执行校验和导出:
validate_dataset_records.pyexport_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/。