# netaid **Repository Path**: hnwlc/netaid ## Basic Information - **Project Name**: netaid - **Description**: 网络运维ai辅助诊断工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NetAid — 运维 AI 诊断工具 同时登录多台设备(网络设备 / 服务器),执行排障命令,LLM 自动分析结果。 ## 安装 ```bash git clone git@gitee.com:hnwlc/netaid.git cd netaid go build -o netaid . ``` ## 快速开始 ```bash ./netaid ``` 首次启动设置主密码(≥8 位)。之后每次启动输入密码解锁。 ## 工作流 ``` F2 选设备 → 输入命令 → Enter 执行 → 自动交互 → LLM 流式分析 → Ctrl+Enter 追问 F7 随时独立问 AI F6 分屏对照看 ``` 执行时自动处理设备交互: | 设备提示 | 自动处理 | |---------|---------| | `Password:` / `password:` | 自动填入设备凭据 | | `Username:` / `login:` | 自动填入用户名 | | `[y/n]` / `Are you sure` 等 | 自动回复 `y`(确认操作) | | `--More--` / `---(more)---` | 自动空格翻页 | | 其他未知提示 | 弹窗让用户输入 | 执行前预检设备凭据——缺少用户名或密码时弹出补填窗口,无需退出 TUI。 选中多台设备时串行执行(一次一台),避免弹窗冲突。 ## 快捷键 ### 全局 | 按键 | 操作 | |------|------| | `Ctrl+Q` / `Ctrl+C` | 退出 | | `F1` / `?` | 帮助 | | `F2` | 设备选择器 | | `F3` | 编辑当前选中设备 | | `F4` | LLM 配置(endpoint / key / model) | | `F5` | 导入 / 导出设备 | | `F6` | 分屏模式(堆叠 → 60/40 → 70/30 → 50/50 → 堆叠) | | `F7` | 独立 AI 对话(无设备上下文) | | `F8` | 鼠标开关(关闭后可原生选取文字) | | `F9` | LLM 分析开关(关闭后只执行不发 AI) | | `F10` | 修改主密码 | | `Esc` | 取消当前执行 | ### 命令输入 | 按键 | 操作 | |------|------| | 直接输入 | 键入命令文本 | | `Enter` | 执行命令(非空时),Tab 补全确认 | | `Ctrl+Enter` | AI 追问(LLM 分析完成后可用) | | `Tab` | 接受命令补全 | | `↑` / `↓` | 回滚历史命令 | ### 设备选择器(F2 打开) | 按键 | 操作 | |------|------| | `↑` / `↓` | 移动光标 | | `Space` | 勾选 / 取消当前设备 | | `d` | 删除光标所在设备 | | `Ctrl+A` | 全选 | | `Ctrl+N` | 取消全选 | | `Enter` | 确认选择 | | `Esc` | 取消,保留原选择 | | `F2` | 添加新设备 | ### 分屏模式(F6 切换) | 操作 | 说明 | |------|------| | 左 pane | 命令输出,独立滚动 | | 右 pane | AI 分析,显示对应命令上下文,多轮分析间有横线分隔 | | 鼠标滚轮 | 按 X 坐标自动路由到对应 pane | | `Tab` | 切换键盘焦点(左/右 pane) | | 比例循环 | 60/40 → 70/30 → 50/50 → 堆叠 | | 状态栏 | 显示当前比例,如 `分屏 60/40` | ### 输出区 | 按键 | 操作 | |------|------| | `/` | 搜索 | | `n` / `N` | 下 / 上一个匹配 | | `Esc` | 结束搜索 | | `Ctrl+L` | 清屏 | | `PgUp` / `PgDn` | 翻页 | | 鼠标滚轮 | 滚动 | ### 弹窗表单(凭据补填 / 交互提示 / F3 / F4 / F5 / F10) | 按键 | 操作 | |------|------| | `Tab` / `↓` | 下一字段 | | `Shift+Tab` / `↑` | 上一字段 | | `Enter` | 保存确认 / 发送响应(交互提示) | | `Esc` | 取消关闭 / 跳过设备(凭据补填)/ 中止命令(交互提示) | ### 导入导出(F5 打开) | 按键 | 操作 | |------|------| | `1` / `2` / `3` / `4` | 选择格式:JSON 导出 / CSV 导出 / JSON 导入 / CSV 导入 | | `Enter` | 确认操作 | | `Esc` | 取消 | ## 功能 - **分屏对照**(`F6`):命令输出与 AI 分析左右对照,各 pane 独立滚动,3 组比例切换 - **流式 TUI**:输出累积保留,自动换行,鼠标滚轮翻看 - **交互式命令执行**:引擎自动处理确认提示(`[y/n]`)、密码提示(`Password:`)、分页(`--More--`),未知提示弹窗输入 - **执行前凭据预检**:选中设备缺用户名或密码时弹窗补填,不退出 TUI - **多设备串行执行**:选中多台,交互模式串行处理避免弹窗冲突 - **多行命令**:粘贴整组排障命令,每行一条顺序执行 - **LLM 流式分析**:逐 token 输出,不用等完整回复 - 单设备:故障 → 风险 → 建议 - 多设备:差异对比,标出偏离基线的设备 - 覆盖网络设备命令(show / ospf / bgp 等)和服务器 OS 命令(ifconfig / ps / df / netstat / systemctl 等) - **AI 追问**(`Ctrl+Enter`):基于当前分析上下文深入排查 - **独立 AI 对话**(`F7`):随时问运维知识,不带设备上下文 - **LLM 开关**(`F9`):关掉后执行命令不触发 AI 分析 - **命令输出着色**:关键词高亮(down/up/error/established 等) - **LLM 输出着色**:故障(红) / 差异(蓝) / 建议(绿) / 风险(黄) - **设备管理**:F2 选择器内按 `d` 直接删除设备 - **鼠标文本选取**(`F8`):关闭鼠标捕获后可原生选取复制 - **凭证加密**:Argon2id + AES-256-GCM 加密存储设备密码和 API Key - **主密码修改**(`F10`):自动重加密所有已有数据 - **设备导入导出**:JSON / CSV 批量操作 - **本地存储**:BoltDB 嵌入式数据库,数据在 `~/.netaid/data.db` ## LLM 配置 `F4` 打开配置弹窗,填入: ``` Endpoint: https://api.openai.com API Key: sk-xxxxxxxx Model: gpt-4o ``` 支持所有 OpenAI 兼容接口(DeepSeek、Ollama、vLLM 等)。内网自签证书自动跳过 TLS 验证。 ## 设备导入 ### CSV 格式 第一行为标题行,第二行起每行一台设备。列名识别不区分大小写、不限制顺序。 ```csv 名称,地址,端口,协议,用户名,密码,厂商,型号,标签 R1-Core,192.168.1.1,22,ssh,admin,secret123,cisco,IOS-XE 17.3,core;production WebServer,10.0.0.100,22,ssh,root,serverpass,linux,Ubuntu 22.04,web;production SW-01,10.0.0.1,23,telnet,admin,swpass,huawei,, ``` | 列 | 必填 | 默认值 | 说明 | |----|------|--------|------| | 名称 | 是 | — | 设备唯一标识 | | 地址 | 是 | — | IP 或主机名 | | 端口 | 否 | 22 | SSH/Telnet 端口 | | 协议 | 否 | ssh | `ssh` 或 `telnet` | | 用户名 | 否 | — | 登录用户 | | 密码 | 否 | — | 登录密码(导入后加密存储) | | 厂商 | 否 | — | cisco / huawei / h3c / linux 等 | | 型号 | 否 | — | IOS-XE / VRP / Ubuntu 22.04 等 | | 标签 | 否 | — | 逗号/分号分隔,如 `core;production` | 空列自动使用默认值。支持 UTF-8 BOM(Excel 导出的 CSV 可直接导入)。 ## 技术栈 Go · Bubble Tea (TUI) · BoltDB · crypto/ssh · Argon2id · AES-256-GCM