mirror of
https://github.com/hansjone/netx.git
synced 2026-10-15 20:53:19 +08:00
Add shared skills tree and rename MCP NMS tools to *Nms*.
Canonical playbooks live under skills/; netx-mcp 0.3.0 exposes queryNmsAlarms et al. with nms_ne_id aliases. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
5e7d14f253
commit
13ce2482ab
14 changed files with 463 additions and 145 deletions
70
skills/nms/netx-nms/SKILL.md
Normal file
70
skills/nms/netx-nms/SKILL.md
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
name: netx-nms
|
||||
description: >-
|
||||
netx NMS playbook (MCP + DSH): vendor NMS adapter (zte-ume) for alarm
|
||||
query/aggregate/diagnostics, NE inventory, raw fields, and read-only SQL.
|
||||
Trigger: NMS alarms, host_name, Critical Top, LOS, BN EMS, netx ops.
|
||||
---
|
||||
|
||||
# netx-nms (vendor NMS adapter)
|
||||
|
||||
## Naming (MCP + DSH)
|
||||
|
||||
Canonical playbooks live in **`netx/skills/`** (this file is mirrored into MCP packages / dsh-netxops).
|
||||
Edit the netx repo copy; run sync scripts — do not maintain divergent forks.
|
||||
|
||||
| Host | How tools appear |
|
||||
|------|------------------|
|
||||
| **MCP** (`netx-mcp`) | Bare names: `queryNmsAlarms`, … |
|
||||
| **DSH** (`dsh-netxops`) | Prefixed: `netx__queryNmsAlarms`, … (same camelCase stem) |
|
||||
|
||||
REST still `/v1/ume/*` for provider `zte-ume`.
|
||||
Prefer `nms_ne_id` / `nms_ne_ids`; legacy `ume_*` aliases still work.
|
||||
|
||||
Path lookup → **common** skill `netx-common` (`findTopologyPaths`).
|
||||
Canvas → **netx-topology**(含 dual_unit / 布图;DSH 可把部分布局工具放在实验 tool group)。
|
||||
|
||||
## Tool names
|
||||
|
||||
| Purpose | Tool |
|
||||
|---------|------|
|
||||
| Alarm list | `queryNmsAlarms` |
|
||||
| Alarm aggregate | `aggregateNmsAlarms` |
|
||||
| Diagnostics | `runNmsDiagnostics` |
|
||||
| NE inventory | `queryNmsNeInventory` |
|
||||
| NE detail | `getNmsNe` |
|
||||
| Field list | `listNmsAlarmFields` |
|
||||
| Raw rows | `queryNmsAlarmsRaw` |
|
||||
| Dynamic aggregate | `aggregateNmsAlarmsRaw` |
|
||||
| SQL | `sqlQueryNms` |
|
||||
| Managed CLI (other skill) | `listManagedNe` / `getManagedNe` / `execManagedNe` / `listCliTargets` |
|
||||
|
||||
## Tool order
|
||||
|
||||
1. **Freshness first**: `runNmsDiagnostics` or `aggregateNmsAlarms` → `meta.last_seen_min` / `last_seen_max`.
|
||||
2. Overview: `aggregateNmsAlarms` + `runNmsDiagnostics`; samples via `queryNmsAlarms` (one page).
|
||||
3. Evidence: `listNmsAlarmFields` → `queryNmsAlarmsRaw` (`field_preset=evidence`).
|
||||
4. Custom aggregate: `aggregateNmsAlarmsRaw`.
|
||||
5. SQL: `sqlQueryNms` (SELECT only; `statement_timeout_ms`).
|
||||
6. Paths: `findTopologyPaths` via **netx-common**.
|
||||
7. Device CLI: **netx-common** — multi-NE = **one** `execManagedNe` batch.
|
||||
|
||||
## Short-intent recipes
|
||||
|
||||
| User says | Recipe |
|
||||
|-----------|--------|
|
||||
| fiber cut / LOS / 断纤 | `queryNmsAlarmsRaw(keyword=LOS)` and/or `Fiber Break` → **host_name** list |
|
||||
| offline / BN EMS | keyword=`BN EMS` |
|
||||
| Critical Top | `aggregateNmsAlarms(severity=critical, top_ne=20)` |
|
||||
| CRC in area | Raw `keyword=CRC` + `AREA-` hostname prefix |
|
||||
| optical power **threshold** | keyword=`optical power` + area — **not** fiber-cut |
|
||||
| one hostname | host-scoped `queryNmsAlarms` / Raw only |
|
||||
|
||||
## Guardrails
|
||||
|
||||
- Prefer non-SQL; filter severity → keyword/host → time → ne_id.
|
||||
- Lists ≤2 pages; `page_size` default 50.
|
||||
- Display **host_name** only; never bare UUID to users.
|
||||
- `getManagedNe` needs managed id; NMS UUID → `getNmsNe` / `execManagedNe(nms_ne_id=...)`.
|
||||
|
||||
See [reference.md](reference.md).
|
||||
20
skills/nms/netx-nms/reference.md
Normal file
20
skills/nms/netx-nms/reference.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# netx-nms quick reference
|
||||
|
||||
## Freshness
|
||||
|
||||
- `runNmsDiagnostics` / `aggregateNmsAlarms` → `meta.last_seen_min` / `last_seen_max`
|
||||
- Snapshot: windows inside min~max — do not default to `now()-30m`
|
||||
|
||||
## Tools
|
||||
|
||||
| Intent | Call |
|
||||
|--------|------|
|
||||
| Critical Top | `aggregateNmsAlarms(severity=critical, top_ne=20)` |
|
||||
| Fiber / LOS | Raw `keyword=LOS` / `Fiber Break` |
|
||||
| Offline / BN EMS | Raw keyword=`BN EMS` |
|
||||
| Single host | `queryNmsAlarms(host_name=…)` |
|
||||
| Inventory | `queryNmsNeInventory(keyword=…)` / `getNmsNe` |
|
||||
| Paths | `findTopologyPaths(from_nms_ne_id, to_nms_ne_id)` — **common** skill |
|
||||
| SQL | `sqlQueryNms` SELECT; `statement_timeout_ms=8000` |
|
||||
|
||||
DSH: prefix every tool with `netx__`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue