# 09. 外部系统 Skill:ELK、SQL、模型迭代 ![外部系统 Skill 接入模式](assets/09-external-skills.png) ## 1. 这类 Skill 的共同特征 外部系统 Skill 的核心不是复杂 prompt,而是把某个内部系统的调用方式、参数约定、依赖和输出格式打包起来。 典型形态: ```text SKILL.md 写清楚什么时候用、参数怎么选、哪些动作需要确认。 scripts/ 执行真实外部系统调用。 python_exec 作为统一执行入口。 python_package 处理依赖缺失。 output/ 查询结果或报表写入当前 session output。 ``` ## 2. elk-fetch 位置: ```text skills/elk-fetch/SKILL.md skills/elk-fetch/elk_query.py ``` 定位: ```text 按 request id 或查询条件读取小米内网 ELK 日志。 ``` 实现方式: - `SKILL.md` 写明支持的 profile 和查询方式。 - 实际执行必须使用 `python_exec.script_path`。 - 缺 `elasticsearch`、`urllib3` 时用 `python_package`。 - 不让模型用 bash 手写临时 Python 查询脚本。 典型价值: ```text 把“怎么查 ELK”这类个人经验变成团队共享能力。 ``` 和 `online-mining-v2` 的区别: ```text elk-fetch 更偏单次日志查询和调试。 online-mining-v2 更偏批量挖掘、策略迭代、样本转换。 ``` ## 3. data-factory-sql 位置: ```text skills/data-factory-sql/SKILL.md skills/data-factory-sql/run_sql.py ``` 定位: ```text 通过 Kyuubi HTTP API 执行数据工场 SQL,轮询状态并下载 CSV 结果。 ``` 实现方式: - 用户直接给 SQL 时,可以确认后执行。 - 用户只给分析需求时,Agent 可以先生成 SQL 草稿,再让用户确认。 - 执行必须通过 `python_exec.script_path`。 - 输出默认写入当前 session output。 这个 Skill 的门禁重点是: ```text SQL 执行前确认。 控制查询范围和 limit。 输出路径清晰。 失败时展示错误和可调整建议。 ``` ## 4. model-iteration 位置: ```text skills/model-iteration/SKILL.md skills/model-iteration/scripts/ ``` 定位: ```text 模型训练、评估、数据准备和迭代流程辅助。 ``` 这类 Skill 属于混合工程型: - 有流程。 - 有脚本。 - 有配置。 - 可能调用外部训练平台。 - 高风险动作较多。 因此它更需要明确: ```text 哪些步骤只是分析。 哪些步骤会启动训练。 哪些步骤需要用户确认。 输出目录和实验记录在哪里。 ``` ## 5. 外部 Skill 的通用约定 ### 5.1 调用方式 优先: ```json { "script_path": "skills//scripts/run.py", "stdin": "{...}", "timeout_seconds": 120 } ``` 或者脚本在 Skill 根目录时: ```json { "script_path": "skills/elk-fetch/elk_query.py", "args": ["..."] } ``` ### 5.2 依赖处理 依赖缺失时: ```text python_package(action="install", packages=[...]) ``` 不要: ```text bash pip install ... bash python ... ``` ### 5.3 输出处理 外部系统查询结果应该: - stdout 给结构化摘要。 - 大结果写入 `output/` 或 `scratchpad/`。 - 返回实际文件路径。 - 避免把大量数据直接塞进最终回复。 ### 5.4 安全和确认 需要确认的动作: - 执行大范围 SQL。 - 启动训练。 - 写外部路径。 - 推送代码或数据仓库。 - 导出可能包含敏感字段的线上数据。 只读、小范围、用户明确指定 rid 或 SQL 的查询,可以直接执行,但仍要控制结果规模。