mirror of
https://github.com/hansjone/netx.git
synced 2026-10-18 18:30:46 +08:00
Trim public tools to 14, expose only kept layout actions/recipes, merge Fabric queries, drop createTopologyView/listTopologyViews, and align skill/docs with the live catalog. Co-authored-by: Cursor <cursoragent@cursor.com>
5.1 KiB
5.1 KiB
| name | description |
|---|---|
| netx-topology | 用 netx-topology MCP 查邻接、dual_unit 分批沉入、扫角压交叉(不污染 Fabric)。 触发:画拓扑、布图、拖图、LLDP、Fabric、netx-topology。先读本 skill 再调工具。 |
netx 拓扑(通用)
只用 netx-topology MCP(包 netx-topology-mcp)。安装与 scopes:仓库 docs/MCP_TOPOLOGY.md。
原则:复杂图先拆 dual_units 再拼;交叉少、边短、近轴优先。
禁止写临时 py 穷举坐标或直接调 HTTP;验证与压交叉只调 MCP。不造 Fabric 边。
勿把客户网元名、区域名、具体交叉数写进本 skill。
主路径(必循)
analyze(structure) → 认 dual_units / shape
→ 核心层:手拖或小图 layout(compact|corridor|rings)
→ sinkTopologyDualUnits(一批,layout_batch=true)
或 move_nodes(park=true) 指定 ids
→ orbit_sweep(round) → polish_crossings → clear_edge_hits
→ 手拖微调 updateTopologyViewPositions
→ 下一批 sink…(禁止 until_empty 日常连抽)
停手:overlaps=0 且 verdict.total≈70、cpl 中档内即可交付。
阶段 0 — 画布与成员
getTopologyTree→view_id(文件夹 physical 画布)。- 建根/子区域只用
createTopologyFolder。 analyzeTopologyViewLayout({ view_id, detail: "structure" })读dual_units/shape。addTopologyViewNodes/projectTopologyNeighbors(区域画布务必region_folder_id)。- 多余点用
removeTopologyViewNodes移出画布(不删 Fabric)。region:…幽灵点勿当网元拖。
形状与 dual_units
analyzeTopologyViewLayout({ view_id, detail: "structure" })
| 字段 | 用途 |
|---|---|
shape.primary |
chains / star / mesh / mixed_blocks |
dual_units |
两端门户 + ≥2 条内部不交走廊;成员可重叠 |
advice.block_plan |
每块怎么拖 |
gravity.type |
链图勿当 hub 花瓣 |
- 链图:脊柱水平 + stub;小图 preview
corridor/compact(跳过 rings)。 - 巨图 / 多门户:勿全图一把揉;走 sink 分批 dual_unit。
- 禁止再用互斥 soft_block 把通路切开。
根图 → 子区域排水
sinkTopologyDualUnits({
source_view_id: <根图>,
sink_view_id: <子区域>,
max_units: 3,
max_batch_nodes: 120,
layout_batch: true, // 每单元 layout_dual_unit → 块扫挂 sink
})
→ orbit_sweep / polish_crossings / clear_edge_hits
→ 再调下一批(source_remaining>0)
- 一次只沉一批;勿日常
until_empty。 - 落点:块扫(交叉/重叠/桥长择优),禁止固定往右排。
- 指定迁移:
layoutTopologyView({ action: "move_nodes", source_view_id: <FROM>, view_id: <TO>, mode: "apply", params: { fabric_node_ids: [...], park: true, remove_from_source: true }, })park=true= 扫角停靠;回迁对调两 view_id。
layoutTopologyView(精简)
| action | 用途 |
|---|---|
layout |
小图配方:compact / corridor / rings / unstick |
layout_dual_unit |
双门户眼形;单元内交叉≠0 拒绝 |
move_nodes / sink_nodes |
指定 ids 双向迁移;park 块扫 |
orbit_sweep |
压交叉;round + 大 max_jump(约 1800–2800) |
polish_crossings |
一键:straighten→press→untangle |
clear_edge_hits |
网元贴非关联边时正交弹开 |
fix_overlaps / resolve_overlaps |
只拉开重叠 |
untangle |
贪心降交叉;默认可冻门户 |
straighten_channels |
拉直 deg≤2 走廊 |
job_status / job_cancel |
后台 job |
阶段2顺序:先 orbit_sweep 压交叉 → polish_crossings → 看 edge_clearance 再 clear_edge_hits。
orbit_round 只在全局交叉严格下降时落笔;卡顿加大 max_jump / 单点 preview→pick。
验收
| 块 | 看什么 |
|---|---|
overlap |
硬零 |
crossing |
crossings/cpl;top_nodes / top_edges |
edge_clearance |
贴边 → clear_edge_hits |
verdict.total |
≈70 可交付(ov=0) |
图标 25px;推荐中心距 Δx≥200、Δy≥170。交叉 = 无向 NE↔NE 真交叉(共端点不算)。
工具速查
| 工具 | 作用 |
|---|---|
getTopologyTree / getTopologyView |
树与画布 |
createTopologyFolder |
新建根/区域(返回 view_id) |
add / remove / updateTopologyViewPositions |
成员与手拖 |
sinkTopologyDualUnits |
dual_units 分批沉入 |
copyTopologyViewNodes |
克隆沙箱 |
projectTopologyNeighbors |
投影邻居 |
queryTopologyFabricNodes |
库存(summary|list|search) |
| neighborhood / edges | 邻接 |
layoutTopologyView |
上表 action |
analyzeTopologyViewLayout |
structure + 验收 |
代码热更
- 本仓 MCP 用
PYTHONPATH=…/src,改源码后不必为加载而 pip install。 - 必须重启 stdio 进程;
catalog含rev(当前NETX_MCP_REV)。 layoutTopologyView(catalog=true)核对 action/recipe 清单。
拓扑页开「实时同步」可看落笔。勿用告警/CLI MCP 写拓扑。