mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-14 04:13:18 +08:00
refactor: move bundled skills tree to repo root skills/
- Relocate runtime/skills -> skills/; runtime_skills_root() prefers oclaw/skills with fallback to legacy runtime/skills for unmigrated trees. - session-bootstrap hook handler resolves repo root via PROJECT_ROOT. - Update architecture/migration docs and in-tree skill references. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
396dba76ea
commit
beb52006d8
298 changed files with 51 additions and 51 deletions
79
skills/_workspace/ops/ops-netx-ume-playbook/SKILL.md
Normal file
79
skills/_workspace/ops/ops-netx-ume-playbook/SKILL.md
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
---
|
||||
name: ops-netx-ume-playbook
|
||||
description: 面向 ops 专家的 netx UME 告警分析标准作业手册。用于任何告警查询、聚合统计、诊断摘要、raw 字段过滤与 UME SQL 分析场景。
|
||||
---
|
||||
|
||||
# Ops Netx UME 作业手册
|
||||
|
||||
## 强制使用范围
|
||||
|
||||
凡是涉及 netx/UME 告警的 ops 请求,必须优先加载并遵循本技能。
|
||||
|
||||
## 工具选择顺序
|
||||
|
||||
1. 基础视图(先看整体):
|
||||
- `netx_query_ume_alarms`
|
||||
- `netx_aggregate_ume_alarms`
|
||||
- `netx_run_ume_diagnostics`
|
||||
2. 字段感知深查(需要细节):
|
||||
- `netx_list_ume_alarm_fields`
|
||||
- `netx_query_ume_alarms_raw`(优先使用 `select_fields` 控制返回字段)
|
||||
3. 自定义聚合(非 SQL):
|
||||
- `netx_aggregate_ume_alarms_raw`(`group_by`,可选 `group_by2`)
|
||||
4. 高级分析(SQL):
|
||||
- `netx_sql_query_ume`(仅 SELECT、仅 UME 表;重查询建议设置 `statement_timeout_ms`)
|
||||
|
||||
## 快速决策树(强推荐)
|
||||
|
||||
- **只需要整体态势 / Top 风险 / 快速简报**:
|
||||
- 先 `netx_aggregate_ume_alarms` + `netx_run_ume_diagnostics`
|
||||
- 必要时再用 `netx_query_ume_alarms` 看前 1 页做样本核对
|
||||
- **需要“可引用证据”的具体告警明细**:
|
||||
- 先 `netx_list_ume_alarm_fields`
|
||||
- 再 `netx_query_ume_alarms_raw`,并用 `select_fields` 只取必要字段
|
||||
- **需要按任意字段做统计(但不想写 SQL)**:
|
||||
- `netx_aggregate_ume_alarms_raw`(`group_by` / `group_by2`)
|
||||
- **需要复杂条件 / 自定义计算 / 多条件关联**:
|
||||
- `netx_sql_query_ume`(必须过滤 + `statement_timeout_ms`)
|
||||
|
||||
## 约束与护栏
|
||||
|
||||
- 优先使用非 SQL 工具;仅当工具参数无法表达需求时再用 SQL。
|
||||
- 默认过滤优先级(先收敛再扩展):
|
||||
- 首选:`severity`(先把问题缩小到 critical/major 等)
|
||||
- 其次:`keyword`(网元名/标签/IP/对象名/告警关键字)
|
||||
- 再次:`time_from/time_to`(按 `last_seen_at` 限定时间窗)
|
||||
- 最后:`event_type` 或 `ne_id`(当你明确知道要锁定事件类型/网元时)
|
||||
- 禁止“为了凑全量而无脑翻页”:
|
||||
- `netx_query_ume_alarms` 默认只看前 1 页(必要时最多 2 页)
|
||||
- 如需更多数据,必须先明确过滤条件(`severity/ne_id/keyword/time_from/time_to/event_type` 等)或改用聚合/SQL
|
||||
- 控制响应体积:
|
||||
- 默认 `page_size=50`(除非明确需要更多,否则不要上来就拉满 500)
|
||||
- 动态聚合默认 `limit=200`
|
||||
- 合理设置 `page_size`
|
||||
- raw 查询尽量传 `select_fields`;或使用 `field_preset=brief/evidence/ne_debug`
|
||||
- 先加过滤条件,再增大分页范围
|
||||
- 时间窗过滤默认基于 `last_seen_at` 语义,除非需求明确要求其它口径。
|
||||
- 若数据新鲜度不明确,先查看 runtime 锚点状态,再下结论。
|
||||
- SQL 使用规则(`netx_sql_query_ume`):
|
||||
- 建议总是设置 `statement_timeout_ms`(例如 3000~10000)
|
||||
- 推荐默认从 `statement_timeout_ms=8000` 开始
|
||||
- 除非只是 `count(*)`,否则应包含过滤条件(至少时间窗或 `ne_id`/严重度过滤),避免全表扫描
|
||||
|
||||
## 输出约定
|
||||
|
||||
- 输出必须包含:
|
||||
- 简明结论
|
||||
- 证据依据(工具输出)
|
||||
- 可执行下一步
|
||||
- 没有工具证据时,不得臆测告警事实。
|
||||
|
||||
## 推荐分析模式
|
||||
|
||||
- 高风险网元:`netx_aggregate_ume_alarms_raw` + `group_by=ne_user_label` + 严重度过滤。
|
||||
- 严重度分布:`group_by=alarm_perceived_severity`。
|
||||
- 事件趋势切片:raw 查询中组合 `time_from/time_to` + `event_type`。
|
||||
|
||||
## 参考模板
|
||||
|
||||
- 快速模板见:[reference.md](reference.md)
|
||||
90
skills/_workspace/ops/ops-netx-ume-playbook/reference.md
Normal file
90
skills/_workspace/ops/ops-netx-ume-playbook/reference.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
# Ops Netx UME 快速参考
|
||||
|
||||
## 1) 当前告警明细(轻量入口)
|
||||
|
||||
- 工具:`netx_query_ume_alarms`
|
||||
- 常用参数:
|
||||
- `severity`, `ne_id`, `keyword`, `page`, `page_size`
|
||||
- 建议:
|
||||
- 推荐 `page_size=50`
|
||||
- 默认只看前 1 页(必要时最多 2 页),不要无脑翻页拉全量
|
||||
|
||||
## 2) 原始明细(字段可控,推荐用于证据输出)
|
||||
|
||||
- 工具:`netx_query_ume_alarms_raw`
|
||||
- 推荐流程:
|
||||
- 先调用 `netx_list_ume_alarm_fields` 获取字段清单
|
||||
- 再用 `select_fields` 控制返回字段,减少输出体积
|
||||
- 字段集预设(推荐优先用 preset,避免手写字段列表):
|
||||
- `field_preset=brief`:轻量概览(严重度/事件/最近时间/网元显示)
|
||||
- `field_preset=evidence`:证据输出(含 object/cause/时间/网元状态)
|
||||
- `field_preset=ne_debug`:定位网元信息缺失或状态异常
|
||||
- `select_fields` 示例:
|
||||
- `alarm_alarm_key`
|
||||
- `alarm_perceived_severity`
|
||||
- `alarm_last_seen_at`
|
||||
- `ne_user_label`
|
||||
- `ne_ip_address`
|
||||
|
||||
## 3) 动态聚合(非 SQL)
|
||||
|
||||
- 工具:`netx_aggregate_ume_alarms_raw`
|
||||
- 常用分组:
|
||||
- `group_by=alarm_perceived_severity`
|
||||
- `group_by=ne_user_label`
|
||||
- `group_by=alarm_event_type`
|
||||
- `group_by=ne_connection_status`
|
||||
- `group_by=alarm_perceived_severity, group_by2=ne_user_label`
|
||||
- 建议:
|
||||
- 推荐 `limit=200`
|
||||
|
||||
## 4) 诊断摘要
|
||||
|
||||
- 工具:`netx_run_ume_diagnostics`
|
||||
- 用途:在深挖前先快速形成“概览简报”(严重度、Top 网元、Top 事件类型等)
|
||||
|
||||
## 5) SQL 深度分析(受限)
|
||||
|
||||
- 工具:`netx_sql_query_ume`
|
||||
- 约束:
|
||||
- 仅允许 SELECT
|
||||
- 仅允许表:`ume_alarms_current` / `ume_inventory_ne`
|
||||
- 重查询务必设置 `statement_timeout_ms`
|
||||
- 除非只是 `count(*)`,否则建议带时间窗(例如 `last_seen_at >= now() - interval '30 minutes'`)
|
||||
- 示例(全量聚合,谨慎使用):
|
||||
```sql
|
||||
select
|
||||
coalesce(ne.user_label, ne.ne_name, a.ne_id) as ne_display,
|
||||
count(*) as alarm_count
|
||||
from ume_alarms_current a
|
||||
left join ume_inventory_ne ne on ne.ne_id = a.ne_id
|
||||
group by coalesce(ne.user_label, ne.ne_name, a.ne_id)
|
||||
order by alarm_count desc
|
||||
```
|
||||
|
||||
- 示例(推荐:带时间窗 + 超时):
|
||||
- `statement_timeout_ms=8000`
|
||||
```sql
|
||||
select
|
||||
coalesce(ne.user_label, ne.ne_name, a.ne_id) as ne_display,
|
||||
count(*) as alarm_count
|
||||
from ume_alarms_current a
|
||||
left join ume_inventory_ne ne on ne.ne_id = a.ne_id
|
||||
where a.last_seen_at >= now() - interval '30 minutes'
|
||||
group by coalesce(ne.user_label, ne.ne_name, a.ne_id)
|
||||
order by alarm_count desc
|
||||
```
|
||||
|
||||
- 示例(推荐:带时间窗 + 严重度过滤,现场最常用):
|
||||
- `statement_timeout_ms=8000`
|
||||
```sql
|
||||
select
|
||||
coalesce(ne.user_label, ne.ne_name, a.ne_id) as ne_display,
|
||||
count(*) as alarm_count
|
||||
from ume_alarms_current a
|
||||
left join ume_inventory_ne ne on ne.ne_id = a.ne_id
|
||||
where a.last_seen_at >= now() - interval '30 minutes'
|
||||
and lower(coalesce(a.perceived_severity, '')) in ('critical','major')
|
||||
group by coalesce(ne.user_label, ne.ne_name, a.ne_id)
|
||||
order by alarm_count desc
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue