Files
SenMeshNet/docs/system-overview.md
zhaolei 1bb5390263
Some checks failed
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
docs: add system overview and plan-management-and-alert-remediation v1.3 design doc
- system-overview.md: full platform summary for NetMesh v2.x

- plan-management-and-alert-remediation.md: dual-track alert response design with 26 decisions

- alertRecordStore.cjs: remove auto_recover per D25 (alerts must be manually closed)
2026-10-30 16:35:50 +08:00

296 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NetMesh 系统总结
> 项目代号:Netcatty · 版本:v2.x · 日期:2026-10-30
---
## 一、项目定位
**NetMesh(品牌名 Netcatty)** 是一款 **AI 原生的 SSH 客户端 / 网络运维终端 / 服务器管理平台**,以"让 AI 帮你管服务器"为核心理念,面向开发者、运维工程师、DevOps 团队。
它不是一个纯终端工具,而是一个**终端 + SFTP + 主机库 + 巡检监控 + 告警处置 + AI Agent + MCP Server + 云同步 + 插件生态**的完整平台。
---
## 二、核心功能清单
### 2.1 主机与连接管理
| 功能 | 说明 |
|------|------|
| 多协议主机支持 | SSH / Telnet / Mosh / ET(自研加密协议)/ 本地 Shell / Serial 串口 / 插件扩展协议 |
| 跳板机链路 | 多级跳板机链式连接,自动探测最优路径 |
| 代理配置 | HTTP / SOCKS5 代理,每台主机独立或全局配置 |
| 算法覆写 | 不同主机支持不同加密算法、KEX、MAC 协商策略 |
| 主机分组与标签 | 任意层级分组、自定义标签,支持按分组批量操作 |
| Host Key 管理 | known_hosts 自动维护、指纹校验、信任策略配置 |
| SSH Agent 转发 | 支持系统 SSH Agent 和内置 Agent |
| 凭据安全存储 | AES-GCM 加密存储私钥和密码,内存中零明文 |
### 2.2 终端能力
| 功能 | 说明 |
|------|------|
| 多终端分割 | 拖拽式工作区分割,水平/垂直/自由布局,支持标签页 |
| xterm.js 6 渲染 | WebGL 加速、图片渲染、搜索高亮、序列化回放 |
| 终端主题 | 内置 20+ 主题,支持自定义配色 |
| 命令历史 | 跨终端会话命令历史、模糊搜索、智能推荐 |
| 片段(Snippets) | 常用命令片段库,一键插入,支持参数化模板 |
| 快捷键绑定 | Vim/Emacs/自定义快捷键方案 |
| 防刷屏与截断 | 长输出自动截断 + 查看完整内容 |
| 终端录屏 | 会话录制为 JSON 序列化文件,离线回放 |
### 2.3 SFTP 文件管理
| 功能 | 说明 |
|------|------|
| 双栏文件浏览 | 本地/远程双栏同步滚动,拖拽上传下载 |
| 断点续传 | 大文件传输中断后自动续传 |
| SCP 后端 | 原生 SCP 协议支持(自研后端,不依赖外部库) |
| 文件搜索 | 递归搜索、按类型/大小/时间过滤 |
| 文件编辑 | Monaco Editor 内置编辑,SFTP 远程编辑即时保存 |
| 传输中心 | 全局传输队列、速度显示、失败重试、并发控制 |
| 临时文件安全 | 所有下载到本地的临时文件通过专用 tempDir 管理,程序退出自动清理 |
### 2.4 端口转发
| 功能 | 说明 |
|------|------|
| 本地转发(L) | 本地端口 → 远程主机端口 |
| 远程转发(R) | 远程主机端口 → 本地端口 |
| 动态转发(SOCKS5) | 本地 SOCKS5 代理 → 通过远程主机出网 |
| 隧道管理 | 多隧道并发、状态监控、自动重连、流量统计 |
### 2.5 巡检与监控
| 功能 | 说明 |
|------|------|
| 定时巡检调度 | 可配置周期、并发度、超时、重试策略 |
| 多设备类型适配 | 路由器 / 交换机 / 服务器 / 防火墙,每类设备独立采集适配器 |
| 巡检指标 | CPU / 内存 / 磁盘 / 网络 / 进程 / 服务 / 端口 / GPU / Docker |
| 健康评分 | 每台设备巡检后计算综合健康分 |
| 拓扑视图 | 大屏可视化监控,按告警等级着色,实时刷新 |
| 巡检报告 | 自动生成巡检报告,支持 AI 汇总(内置 AI 对巡检结果做自然语言总结) |
| 远程 HTTP API | 内置轻量 HTTP 服务器,支持外部系统调用巡检 API、获取告警、推送到大屏 |
### 2.6 告警系统(v2.x 新增)
| 功能 | 说明 |
|------|------|
| 告警规则引擎 | 指标阈值、持续时间、触发次数、告警等级(info/warning/critical) |
| 多通道通知 | Desktop 弹窗、Webhook(钉钉/企业微信/飞书/自定义) |
| 告警中心页 | 活动告警列表、历史告警、ACK 确认、关闭、备注 |
| 规则分组 | 按设备类型、分组、标签批量绑定规则 |
| **AI 预案匹配**(设计中) | 告警触发后匹配预设的"值班员动作预案 + 操作级预案"双轨配置 |
| **AI 初始响应包**(设计中) | 告警触发时 AI 自动生成结构化响应包,嵌入大屏弹窗,值班员可直接转发运维群 |
| **聚合升级**(设计中) | 时间窗口内多台设备同类型告警自动升级 |
| **AI 处置执行**(设计中) | 预案中的可执行步骤由 AI Agent 自动/半自动执行 |
### 2.7 AI Agent 系统(核心差异化能力)
| 能力 | 说明 |
|------|------|
| 内置 AI 对话(Catty) | 侧边栏 AI 对话面板,多厂商 LLM 接入 |
| AI 多主机编排 | 一个指令同时操作多台主机("所有核心交换机 show version") |
| AI 自动执行命令 | 三种执行权限:observer(只看不写)/ confirm(写需确认)/ auto(全自动) |
| 安全审批机制 | 危险命令自动拦截、执行前弹窗审批、审批记录审计 |
| AI 上下文感知 | 自动知道当前终端会话、当前主机、当前告警、巡检历史 |
| AI 压缩与记忆 | 长对话自动摘要压缩,413 Token 超限自动降级处理 |
| Codex App Server | 实验性 Codex 持久化运行时,支持原生审批、线程/Turn 管理 |
### 2.8 MCP Server(Model Context Protocol)
| 能力 | 说明 |
|------|------|
| 内置 MCP stdio 服务器 | 让 Claude Desktop / Cursor / Cline / Codex 等外部 AI 代理操作 NetMesh 连接的主机 |
| 能力暴露 | 30+ 目录命令(终端/SFTP/Vault/端口转发/巡检/片段/harness)通过统一的 RPC 分发 |
| 权限控制 | MCP 会话的 observer / confirm / auto 三级模式 |
| MCP Tool Registry | 代码生成驱动,新增能力自动暴露到 MCP |
### 2.9 云同步
| 能力 | 说明 |
|------|------|
| 多后端支持 | GitHub Gist / Google Drive / OneDrive / S3 / WebDAV |
| CRDT 收敛同步 | 自研无冲突复制数据类型,支持多端并发编辑收敛 |
| 端到端加密 | 所有同步数据 AES-GCM 加密,密钥本地派生 |
| 同步范围 | 主机库 / 密钥 / 片段 / 分组 / 标签 / 设置 |
| 冲突解决 | 自动检测冲突、合并、或提示手动选择 |
### 2.10 插件系统
| 能力 | 说明 |
|------|------|
| 插件包格式 | `.ncpkg` 格式,原子发布、版本化、沙箱运行 |
| 沙箱隔离 | 普通插件运行在 BrowserWindow 沙箱 + 离线网络 |
| Node-only 插件 | 高级开发模式:utilityProcess 运行、有限 Node API |
| 插件 RPC | `PluginRpcRouter` 负责请求关联、取消、超时、流量限制 |
| 插件安全 | 禁止访问本地文件系统、禁止连接外网、插件间完全隔离 |
### 2.11 其他
| 能力 | 说明 |
|------|------|
| 应用锁 | Windows Hello / 系统级密码锁 |
| 主题与外观 | 明暗主题、强调色、终端主题独立配置 |
| 国际化 | 多语言框架 |
| 键盘快捷键 | 全局快捷键可自定义 |
| 数据导出/导入 | 主机库、密钥、片段 JSON 格式导入导出 |
---
## 三、技术创新点
### 3.1 架构创新
**三层解耦架构(Domain → Application State → UI)**
- Domain 层是纯逻辑,零副作用(workspace 树操作、CRDT 合并、发行版归一化)
- Application State 层是状态拥有者,持久化边界清晰(~120 个 hooks,状态变更统一经过 hooks)
- UI 层纯展示,不包含业务逻辑
- 结果:测试粒度细、复用性强、AI Agent 和 MCP Server 可以独立调用 Domain 层能力
**双运行时架构**
- 主进程:CommonJS `.cjs`,IPC bridge + SSH/SFTP + 插件宿主
- 渲染层:ESM + TypeScript + React 19 + Vite 7
- 两套模块系统分离但通过 preload API 严格对接
### 3.2 AI Agent Harness(最有特色的创新)
**专为终端运维场景设计的 AI 运行时**——不是通用 ChatBot,而是一个能理解多主机、多会话、多告警上下文的 Agent 编排引擎:
| 子系统 | 创新 |
|--------|------|
| **AgentRuntime** | Turn 生命周期管理、trace 事件分发、每 Turn 独立的 ToolOutputStore + ToolResultDedup(解决长输出工具结果重复读取的问题) |
| **上下文预算与压缩** | `contextBudget` + `compactionPruner` + `staleContextPruner` 三套机制:413 Token 超限自动压缩、过期工具结果自动裁剪、步骤间增量压缩 |
| **动态 Threshold** | 上下文预算阈值不是固定值,而是根据模型能力和会话深度动态调整 |
| **SessionState 重新注入** | AI 多轮对话中维护 session 状态(当前主机链、活跃端口转发、最近告警),每轮自动注入 system prompt |
| **Capability Tools 注册表** | 从 `electron/capabilities/catalog/` 代码生成(`npm run generate:capability-tools`),一套能力目录自动生成 Catty/MCP/CLI 三路工具暴露 |
| **白名单+权限分级** | 预置命令目录(command_catalog)+ 三种执行权限(observer/confirm/auto)+ blocked_patterns 黑名单,三重防线确保 AI 不会执行危险命令 |
| **Prompt 版本化** | System Prompt 有版本号,便于后续迭代和 A/B 测试 |
### 3.3 MCP + CLI + RPC 三通路统一
一套能力目录(30+ 命令),自动生成三个暴露面:
```
electron/capabilities/catalog/ + codegen/toolSurfaces.cjs
│
├──► Catty Sidebar Tools (cattyToolSpecs.json)
├──► MCP stdio Server (netcatty-mcp-server.cjs)
└──► netcatty-tool-cli (CLI 工具链)
```
**创新**:新增一个能力命令,只要在 catalog 里加一条 entry(描述、device_types、agentKinds、surfaces),三个通路自动暴露。不需要改 MCP handler、不需要写 CLI 代码、不需要改 prompt。
### 3.4 CRDT 收敛同步(自研)
不同于市面上大多数"最后写入胜出"的同步方案,NetMesh 用 **CRDT(无冲突复制数据类型)** 实现多端同步:
- 支持主机库、密钥、片段、分组等结构化数据的并发编辑收敛
- 网络分区恢复后自动合并,不会丢数据,不会产生冲突需要手动选
- 端到端加密 + 数据分片 + 版本向量
- 多后端统一适配(Gist/Drive/OneDrive/S3/WebDAV)
### 3.5 插件安全模型
**BrowserWindow 沙箱 + utilityProcess + RPC 路由三层隔离**:
- 普通插件运行在 `BrowserWindow` 的沙箱 session,离线网络(只能连 `netcatty-plugin://` 协议)
- 高级 Node-only 插件运行在独立 `utilityProcess`
- 所有插件对主进程的调用必须经过 `PluginRpcRouter`(请求关联、取消、超时、流量限制、协议失败隔离)
- 插件包 `.ncpkg` 原子发布,安装时校验完整性,删除时全量清理
### 3.6 告警双轨预案体系(设计中)
行业内少见的设计——预案同时包含「值班员动作流程」和「AI 操作步骤」两个层级,绑定在一个对象里:
- **值班员动作预案(human_action_guide)**:什么时候通知谁、什么情况必须升级、处置前要做哪些防护、处置后要做哪些归档
- **操作级预案(remediation)**:具体命令步骤,每个步骤带三级执行权限(auto/confirm/manual_only)
- **AI 初始响应包**:告警触发时 AI 自动生成结构化响应包,嵌入监控大屏弹窗,值班员一键复制转发运维群
---
## 四、AI 使用全景
### 4.1 AI 在系统中的定位
AI 不是一个"附加功能",而是系统的**核心运维能力层**。它能:
```
理解告警 → 匹配预案 → 生成响应包 → 自动执行安全命令 → 协助处置 → 归档总结
```
### 4.2 AI 的三种入口
| 入口 | 面向谁 | 触发方式 |
|------|--------|----------|
| **Catty 侧边栏对话** | 所有用户 | 主动发起对话 |
| **MCP Server(外部 Agent)** | 高级用户(Claude Desktop/Cursor) | 外部 Agent 自动调用 |
| **自动响应包生成** | 值班员(被动接收) | 告警触发时系统自动生成(不需要人触发) |
### 4.3 AI 能做什么
#### (1)运维执行
- ✅ **读操作**:show 命令、display 命令、df -h、ps aux、cat 配置文件(observer 模式自动执行)
- ✅ **写操作(需确认)**:重启服务、改配置、调阈值、采集诊断(confirm 模式弹窗审批后执行)
- ❌ **危险操作拦截**:shutdown、reboot、rm -rf /、reload(blocked_patterns 自动拦截)
#### (2)多主机编排
- 一条指令同时操作 N 台主机:"所有 Linux 服务器检查磁盘使用率"
- 自动分组:"核心区的交换机" → 自动匹配 catalog_type + tier
- 聚合输出:多台主机的命令执行结果汇总成一张表
#### (3)巡检报告 AI 汇总
每轮巡检结束后,内置 AI 自动生成自然语言总结:
> "本轮巡检覆盖 23 台设备,2 台交换机 CPU 高负载(huawei_h3c_switch-A: 91%,huawei_h3c_switch-B: 88%),3 台服务器磁盘使用率超过 80%,1 台防火墙健康分偏低(62分),建议优先处理核心区交换机 CPU 告警。"
#### (4)告警 AI 初始响应包(设计中)
告警触发后,AI 自动生成结构化包(设备画像 + 快速 checklist + 匹配预案 + AI 推断的可能原因),直接嵌入监控大屏弹窗:
> 值班员看到弹窗 → Tab 切到"🤖 AI 响应包" → 一键复制 → 转发运维群。大家拿到完整信息,不用自己翻拓扑图、查巡检历史。
#### (5)预案 AI 描述生成(设计中)
运维说一句话,AI 翻译成结构化预案草稿:
> 运维:"核心交换机 CPU 超过 90% 持续 5 分钟,先 display cpu-usage 确认,持续不降就重启核心接口"
> AI 生成:符合 device_plan schema 的 JSON 草稿 → 三重校验(schema + command_catalog 交叉 + blocked_patterns)→ 保存为 draft → 运维微调 → 启用。
### 4.4 AI 的安全设计
| 层级 | 机制 |
|------|------|
| **命令白名单** | command_catalog 目录(预置命令 ID + 设备类型 + risk_level + 审计记录) |
| **前缀匹配** | allowed_commands 正则前缀匹配(show *、display *、df -h) |
| **黑名单反查** | blocked_patterns(shutdown、reload、rm -rf /)优先级高于白名单 |
| **执行权限分级** | observer(只读自动)/ confirm(写需弹窗审批)/ auto(全自动) |
| **审批流** | Catty 的 cattyToolApproval.ts + Codex App Server 的 native 审批 + MCP 的 setupMcpApprovalBridge |
| **Trace 审计** | 每步 ToolOutput 都记录 traceStore,包含 usage / performance / tool input output |
| **输出截断与持久化** | 大输出自动截断存 preview,完整内容 spill 到 tool_output_read;跨 Turn 持久化 |
| **上下文隔离** | 每个 chat session 独立 context、独立 plan_snapshot、独立 turn_state |
### 4.5 AI 多厂商适配
| 类别 | 已适配 |
|------|--------|
| 内置 SDK 集成 | MiniMax(主力 Catty Provider) |
| 外部 SDK IPC | Claude(@anthropic-ai/sdk)、Codex(@openai/codex-sdk)、Cursor、Copilot、Grok、OpenCode |
| Codex App Server | 实验性,`codex app-server --stdio` 持久化运行时 |
| Vercel AI SDK v7 | Catty 主路径,streamText + tool calling + context management |
---
## 五、项目规模与工程数据
| 指标 | 数值 |
|------|------|
| 技术栈 | Electron 42 + React 19 + Vite 7 + TypeScript 5.9 + xterm.js 6 |
| 模块系统 | 主进程 CommonJS `.cjs` / 渲染层 ESM + TS 双轨 |
| Workspace | npm workspaces(`packages/` 插件契约/SDK/CLI) |
| 依赖 | ~100 npm 包(ssh2、ssh2-sftp-client、node-pty、Tailwind CSS 4、Radix UI、Monaco Editor、ajv、@mcp/sdk、vercel ai sdk) |
| 测试 | Node --test + tsx,domain 纯函数 / state hooks / 主进程 bridge 都有伴生测试 |
| 代码生成 | 能力目录 → MCP 工具 / Catty 工具 / CLI 三路暴露(`npm run generate:capability-tools`) |
| 跨平台 | macOS / Windows / Linux 三端 |