内置 Skill 一览
夜莺 v9 随二进制内置的 19 个 Skill 列表与适用场景:覆盖告警规则创建/排障、主机诊断、通知配置、数据查询、PromQL/SQL 生成、自愈推荐等高频运维链路。
概述
夜莺 v9 在二进制里内置(embed)了一组开箱即用的 Skill,安装后即出现在 AI 配置 → Skill 管理 列表里,无需手动上传。这些 Skill 按"夜莺自己最高频的场景"打磨:从 categraf 部署、告警规则创建/排障、主机诊断、通知配置、数据查询,到 PromQL/SQL 生成、半自愈推荐,基本覆盖一线 SRE 的日常动作。
如何识别:Skill 详情页面会显示作者
system,且不允许通过 Web 端修改/删除(替换/删除入口被隐藏)。如果想覆盖某个内置 Skill 的行为,新建一个同名 Skill 即可——同名时数据库里的用户 Skill 优先生效。
是否调用看描述:AI 是基于"用户提问 + Skill 描述"做匹配的。下面每条 Skill 的"触发场景"就是它自身
description里的关键词;用户提问命中这些关键词时,Skill 会被自动注入上下文。详见 Skill 管理 → 写好提示词指令的建议。
下面按用途把 19 个内置 Skill 分成五类。
一、部署 & 接入
categraf-deploy-guide — Categraf 部署指南
- 触发场景:怎么装 categraf / categraf 怎么部署 / 用 Docker 跑 categraf / Windows 装 categraf / categraf 注册系统服务 / categraf 上报到夜莺 /
config.toml怎么写 / 怎么验证 categraf 采集到数据。 - 能做什么:教学/指引型 Skill,不调用任何工具,直接输出可粘贴执行的命令与配置片段。覆盖二进制 + systemd、Docker、Windows、K8s 提示、关键配置、常见验证命令。
- 不在范围:装好但接入失败 → 转
n9e-host-onboard-diagnose;已接入但指标异常 → 转n9e-host-health-diagnose。
二、创建类(把自然语言变成配置)
这类 Skill 都会去调对应的写接口(create_*),自动拼装 payload 完成创建,省去手动在表单里点字段。
n9e-create-alert-rule — 创建告警规则
- 触发场景:在夜莺上"建一条告警规则"。
- 支持数据源:Prometheus / Loki / Elasticsearch / OpenSearch / TDengine / ClickHouse / MySQL / PostgreSQL / Doris / VictoriaLogs / Host 全部数据源类型。
- 两种调用模式:
- Prometheus 简化路径(最常用)——直接说 PromQL + 阈值 + 比较符;
- 通用路径——其他数据源会自动读取
datasources/<cate>.md模板再填值。
- 关联工具:
create_alert_rule、list_busi_groups、list_datasources、list_metrics、list_notify_rules等。
n9e-create-alert-mute — 创建告警屏蔽规则
- 触发场景:屏蔽 / 静默 / 抑制告警,例如"屏蔽 host=web01 的所有告警 2 小时"。
- 能做什么:登录拿 token → 解析屏蔽条件(标签 / 时间窗 / 业务组) → 调创建接口。
n9e-create-alert-subscribe — 创建告警订阅规则
- 触发场景:订阅告警 / 添加告警订阅 / 配置告警事件转发,例如"订阅所有 CPU 相关的告警并通知运维组"。
- 能做什么:按条件筛选告警事件,并通过通知规则把事件转发给指定接收人。
n9e-create-notify-rule — 创建通知规则(线性 4 步)
- 触发场景:用户已经把"什么级别、什么时段、走什么通道、发给谁"讲清楚了,按部就班创建一条规则。
- 能做什么:登录 → 查用户组 → 查渠道 → 拼 payload 创建。
- 复杂场景请用
n9e-notify-rule-copilot(见下文 Copilot 章节)。
n9e-create-dashboard — 创建监控仪表盘
- 触发场景:建监控大盘 / Dashboard / 仪表盘。
- 能做什么:用户只需给出面板标题、面板类型(stat / timeseries / table 等)和 PromQL;Skill 会自动生成完整的仪表盘配置(布局、数据源绑定、样式)。
- 关联工具:
create_dashboard、list_files、read_file、grep_files。
n9e-modify-task-tpl — 生成 / 修改告警自愈脚本
- 触发场景:写自愈脚本(磁盘清理 / 重启服务 / 清理日志 / dump 进程 / reload nginx 等);或问"自愈脚本怎么拿告警传过来的参数"、“stdin 是什么格式”、“timeout 应该填多少”、“为什么
is_recovered永远 false”、“脚本一直 running 怎么办”。 - 覆盖层级:仅 脚本正文层(
task_tpl表);如果要改告警规则、接收人、模板,会引导你转到对应 Skill。
三、通知配置 Copilot(三层分工)
夜莺通知链路分媒介 / 模板 / 规则三层,每层一个 Skill,专门解自然语言需求,不要串台:
| 用户原话 | 走哪个 Skill |
|---|---|
| URL / Webhook 地址 / 签名 / AppID / 怎么接入 X 平台 | n9e-notify-channel-copilot |
模板 / 正文 / 字段 / 卡片颜色 / {{ ... }} 变量 |
n9e-generate-message-template |
| 发给谁 / 分级路由 / 工作时段 / 按业务组路由 / 按标签过滤 | n9e-notify-rule-copilot |
n9e-notify-channel-copilot — 通知媒介 Copilot
- 触发场景:改钉钉 / 飞书 / 企微 / 邮件 / 短信 / 语音 / Webhook 等媒介的 URL、请求体、签名、headers、代理、TLS、@人 / 接收人字段;或问"怎么接入 X 平台"、“为什么发不出去 / 报 9499 / Bad Request”。
- 能做什么:基于
NotifyChannelConfig模型,给出可粘贴的配置 + 字段级踩坑预警。
n9e-generate-message-template — 生成 / 修改消息模板
- 触发场景:写通知模板 / 改消息格式 / 加主机名 / 恢复值 / 级别 / 钉钉 / 飞书 / Lark / 邮件 / 短信 / 电话模板。
- 能做什么:用 Go
text/template/html/template语法输出可直接粘到模板编辑框的片段;自动注入$event/$labels/$value等常用变量。
n9e-notify-rule-copilot — 通知规则 Copilot
- 触发场景:把"P1 工作时间发钉钉+电话、非工作时间只电话"、“按业务组/标签路由”、“分级走不同通道”、“恢复时不打电话"这类自然语言需求拆成正确的
NotifyConfig数组;或编辑、复制、微调现有规则。 - 能做什么:① 接住模糊/复杂的自然语言需求并拆成多条
NotifyConfig;② 编辑/复制/微调现有规则;③ 字段级踩坑预警;④ 引导测试发送和真实告警 diff。 - 简单创建走
n9e-create-notify-rule,复杂或编辑场景走本 Skill。
四、查询类(看数据,不改配置)
n9e-query-alert-events — 查询告警事件
- 触发场景:看告警 / 查活跃告警 / 搜历史告警 / 看告警详情 / 统计告警事件,例如"最近 1 小时有哪些一级告警”、“告警 ID 123 的详情”。
- 能做什么:登录 → 调
search_active_alerts/search_history_alerts/get_alert_event_detail等接口。
n9e-query-datasource — 查询各类数据源
- 触发场景:查指标 / 看监控数据 / 搜日志 / 执行 PromQL 或 SQL 查询。
- 支持数据源:Prometheus / VictoriaMetrics / Elasticsearch / Loki / ClickHouse / MySQL / PostgreSQL / TDengine / Doris / OpenSearch / VictoriaLogs。
- 能做什么:根据数据源类型自动读取对应
datasources/*.md拿参数格式,再发查询。
promql-generator — 自然语言 → PromQL
- 触发场景:根据自然语言描述生成 PromQL。
- 关联工具:
list_metrics(按关键词模糊搜指标名)、get_metric_labels(拿到指标的标签维度)。 - 工作流程:理解意图 → 搜指标 → 拿标签 → 拼 PromQL。
sql-generator — 自然语言 → SQL
- 触发场景:根据自然语言生成 SQL,支持 MySQL / Doris / ClickHouse / PostgreSQL。
- 关联工具:
list_databases/list_tables/describe_table。 - 工作流程:理解意图 → 看库 → 看表 → 看字段 → 拼 SQL。
五、排障 / 诊断(拿现象找根因)
这一组是夜莺在社区高频问题上沉淀最深的 Skill,每条都把"经验性误判"写进了 SOP,避免只看单一证据下结论。
ops-troubleshooting — 综合故障定位(拿到告警找根因)
- 触发场景:故障定位 / 告警排查 / 问题诊断 / 排障 / 根因分析 / 查指标 / 查日志(最宽口径的入口)。
- 能做什么:跨告警 / 规则 / 数据源 / 指标 / 日志 / 仪表盘 / 主机 / 业务组的多步骤诊断;预算 25 次迭代,单轮就跑完一次完整分析。
- 和
n9e-alert-rule-troubleshoot的区别:本 Skill 是 看到告警 → 找根因;那个是 应该报警但没报警 → 查链路。
n9e-alert-rule-troubleshoot — 告警规则为什么没发出来
- 触发场景:“没发告警”、“告警不触发”、“规则没生效”、“应该报警但没报警”、“为什么没收到告警”。
- 覆盖链路:拉规则 → 跑 PromQL → 拉 eval 日志 → 找事件 hash → 拉处理日志 → 对照屏蔽规则 → 自监控指标兜底。
- 版本要求:仅支持 Release 22 及以上。
n9e-host-health-diagnose — 主机失联综合判断
- 触发场景:为什么这台机器失联 / host 失联告警是不是误报 / categraf 卡住了吗 / 心跳停了为啥还能 ping 通。
- 核心立场:agent 失联 ≠ 主机宕机。只看
target_up==0/BeatTime停就下"宕机"结论,是社区高频误报的根源(agent 真挂 / 网络分区 / DNS / 代理坏 / Redis 写延迟 / 主动维护 全都长一样)。 - 能做什么:从多层证据综合判断到底是 真宕机 / agent 假死 / 网络抖动 / 维护中。
n9e-host-onboard-diagnose — 主机接入失败诊断
- 触发场景:新装的 categraf 在夜莺看不到 / 机器列表 OS 都是 unknown / Helm 装了 3 台只看到 1 个 / agent 注册不进来 / Windows agent 装了不显示。
- 和
n9e-host-health-diagnose互斥:本 Skill 处理"压根没接入进来";那个处理"曾经接入过、现在失联"。 - 核心立场:机器没出现不是一个原因,而是接入链路上某段断了。不要只看
heartbeat.enable一项就让用户改 categraf——常见根因还有omit_hostname/ ident shell / TLS / token / edge redis / 多集群路由。
n9e-recommend-self-heal — 告警半自愈推荐
- 触发场景:从告警事件详情页或通知卡片打开 Copilot,问"这条告警能自愈吗"、“推荐个自愈脚本”、“帮我处理一下”、“一键修复”。
- 产品形态:半自愈——AI 推荐 → 人确认 → 系统通过 ibex 执行 → 回写
task_record(按event_id关联),形成闭环。 - 本 Skill 只做推荐:执行是前端按钮调 ibex 接口;写脚本本身请用
n9e-modify-task-tpl。
关联文档
- Skill 管理 — Skill 通用机制、创建方式、提示词写法
- LLM 管理 — Skill 调用的底层模型配置
- Anthropic Agent Skills 规范 — 内置 Skill 与该规范完全兼容,可直接下载导出或上传社区 Skill 包