SharvikS/NetEngine
GitHub: SharvikS/NetEngine
NetEngine 是一个集成网络扫描、终端和 SSH 等功能的桌面应用,通过本地 AI 助手简化网络管理与安全操作。
Stars: 1 | Forks: 0
# Net Engine v1.1.0
一款现代化的桌面网络工具套件,内置终端、多会话SSH客户端、文件传输功能、网络适配器配置器以及完全本地化的AI助手。使用 Python + PyQt6 构建 — 纯 Python 实现,无需原生扩展。
可在 **macOS、Windows 和 Linux** 上原生运行。

## 下载
| 平台 | 安装包 | 构建工具 |
|----------|-------------------------------------------|--------------------------------|
| Windows | `NetEngine--Windows.exe` (单文件) | `scripts\build_windows.bat` |
| macOS | `NetEngine--macOS.dmg` (~41 MB) | `scripts/build_macos.sh` |
| Linux | `NetEngine--Linux-x86_64.AppImage` | `scripts/build_linux.sh` |
| Linux | `netengine__amd64.deb` | `scripts/build_linux.sh deb` |
每个平台的安装程序必须在对应平台上构建 — PyInstaller 不是交叉编译器。完整构建说明请参见 [RELEASE.md](./RELEASE.md)。
或者从源代码运行 — 请参见 [设置](#setup)。
## 更新日志
### v1.2.0 — 2026年5月25日
- **macOS 和 Linux 打包** — macOS 使用 `.dmg`,Linux 使用 `.AppImage` 和 `.deb`,与现有的 Windows `.exe` 并行
- **跨平台核心** — 主要开发已迁移到 macOS;Windows 和 Linux 仍是首要支持目标
- 通过新的 `utils/paths.py` 实现平台正确的用户数据目录:
- macOS: `~/Library/Application Support/Net Engine/`
- Windows: `%APPDATA%\NetEngine\`
- Linux: `$XDG_CONFIG_HOME/netengine/` (默认 `~/.config/netengine/`)
- 旧版 `~/.netscope/` 数据在首次启动时自动迁移(非破坏性复制)
- 原生字体回退链 (`gui/platform_fonts.py`) — macOS 使用 SF Pro / SF Mono,Windows 使用 Segoe UI / Cascadia,Linux 使用 Inter / JetBrains Mono
- 修复了 macOS 上扫描器的 MAC 地址精度问题 — `arp -a` 中的短格式 MAC 地址(例如 `c:e8:5c:68:c6:4`)现在会被规范化,修复了约一半主机的供应商查找
- TCP 回退 ping 在 macOS 上速度现在快了约 7 倍
- 修复了 Windows 上助手标签页崩溃的问题
### v1.1.0 — 2026年5月20日
- 重建了便携式单文件 exe — 42.7 MB(原为 675 MB,缩小 94%)
- 启动时间从 20-60 秒缩短到约 3 秒
- 延迟页面初始化 — 启动时仅加载扫描器,所有其他页面在首次访问时初始化
- DNS 线程池现在在首次扫描时创建,而不是在导入时创建
- 主窗口构建前显示启动画面,提供即时视觉反馈
- 新增了文件传输页面(SCP 工作区)
- 从侧边栏移除了工具标签页
- “关于”页面重新设计为四列功能卡片网格
- 重写了帮助页面,提供更清晰的设置指南
- AI 助手:改进了意图解析、安全策略、自动化服务
## 功能
### 扫描器
在任意子网内进行并发 ping 扫描 — 反向 DNS、ARP/MAC 供应商查找、基于 TTL 的操作系统提示、可配置的 TCP 端口扫描、可排序和可筛选的结果表、CSV/JSON 导出、持久化扫描历史(最近 20 次扫描)。

- **主机详情抽屉** — 点击任意行以打开右侧面板,包含快速操作、主机信息和内联 SSH 连接表单。
### 终端
内置完整终端,支持可选的命令行后端(Windows 上为 `PowerShell`、`CMD`、`WSL`;Linux/macOS 上为 `bash`)。支持命令历史记录,内置 `cd` / `clear` / `cls` 命令,支持 `Ctrl+C` / `Ctrl+L`。

### SSH 会话
多标签页 SSH 客户端,具有可折叠的连接表单、已保存会话管理器(搜索 + 置顶 + 最近连接)、快速连接栏(`user@host:port`)、每个标签页的状态指示器、会话复制以及通过双击标签页进行重命名功能。

### 文件传输
基于 SCP 的文件传输工作区,与 SSH 会话管理器集成。无需离开应用程序即可浏览远程目录和移动文件。

### 网络适配器(Windows)
查看当前的 IPv4 设置,管理已保存的 IP 配置文件,并使用 `netsh` 在 DHCP 和静态(地址/掩码/网关/DNS)之间切换。需要管理员权限才能应用更改。

### 监视器
实时多目标 ping 监视器和一次性端口测试工具,带有实时延迟图表。
### API 控制台
内置 REST 客户端,支持 Basic / Bearer 认证、自定义头、请求体、保存/加载命名请求以及 cURL 导入/导出。

### 本地 AI 助手
可选的、完全本地化的助手,由 [Ollama](https://ollama.com) 提供支持。两种模式:
- **命令模式** — 自然语言 → 一条建议的 shell 命令,附带解释和可选的注意事项。可复制或插入终端。永不自动执行。
- **聊天模式** — 流式自由形式帮助:询问扫描结果、解释终端/SSH 输出或说明某项功能。历史记录限制在最近约 10 次交互。
使用 **Ctrl+Enter** 发送。**停止** 可取消正在进行的响应。


此功能不会与云通信 — 请参见 [本地 AI (Ollama)](#local-ai-ollama)。
### 主题系统
四个内置主题(`深色`、`霓虹`、`太空`、`玻璃`),可从 `视图 → 主题` 或设置页面切换。选择会自动持久化。

## 设置
需要 **Python 3.10+**。
```
python -m pip install -r requirements.txt
python main.py
```
在 **Windows** 上,双击 `run.bat`。要进行网络适配器更改,请使用 `run-admin.bat` 启动(会出现 UAC 提示)。
在 **macOS / Linux** 上,直接运行 `python main.py`。两个平台都使用系统原生 shell(`bash` / `zsh`)作为嵌入式终端。
### 依赖项
| 软件包 | 用途 |
|------------|---------------------------------------------------------|
| PyQt6 | 桌面 UI |
| psutil | 网络接口枚举 + 实时系统指标 |
| paramiko | SSH / SCP 传输 |
| requests | 内置 API 控制台 |
| pyserial | 串口工具 |
## 本地 AI (Ollama)
助手页面完全是可选的。如果 Ollama 未安装或未运行,应用程序的其他部分仍正常工作 — 该页面会显示一个横幅说明需要修复的问题。**数据不会离开本机。** 所有推理都通过 `localhost:11434` 上的 Ollama 守护进程在本地运行。
### 1. 安装 Ollama
- **Windows / macOS** — 从 安装 Ollama 桌面应用程序。
- **Linux** — `curl -fsSL https://ollama.com/install.sh | sh`,然后运行 `ollama serve`。
### 2. 拉取模型
```
ollama pull llama3.2:3b
```
`llama3.2:3b` 是默认模型。任何指令/聊天模型都可以 — 拉取后在设置中更改名称即可。
| 模型 | 大小 | 说明 |
|----------------|---------|-------------------------------------------|
| `llama3.2:1b` | ~1.3 GB | 最快,质量最低 |
| `llama3.2:3b` | ~2.0 GB | **默认** — 在笔记本电脑上平衡性好 |
| `qwen2.5:3b` | ~1.9 GB | 对于其大小而言推理能力强 |
| `phi3:mini` | ~2.3 GB | 非常擅长简短的事实性回答 |
### 3. 打开助手标签页
启动 Net Engine,从侧边栏打开**助手**(或按 `Ctrl+8`),选择模式并开始输入。使用 **Ctrl+Enter** 发送。
### 4. 配置
设置位于 `~/.netscope/settings.json` 中的 `ai` 键下:
```
{
"ai": {
"enabled": true,
"base_url": "http://localhost:11434",
"model": "llama3.2:3b",
"command_model": "",
"timeout": 60,
"temperature": 0.3,
"max_tokens": 512,
"system_hint": ""
}
}
```
- `model` — 主聊天模型。
- `command_model` — 可选的、用于命令建议的独立模型(留空则复用 `model`)。
- `timeout` — 每个请求的超时时间(秒);对于首次加载的大型模型可增加此值。
- `system_hint` — 附加到每个系统提示的文本(例如 `"我使用 WSL Ubuntu"`)。
### 隐私
- `ai/` 包仅与 `localhost:11434` 通信。
- 无遥测,无云 API,无托管端点。
- 提示和响应永远不会离开您的机器。
## 键盘快捷键
| 快捷键 | 操作 |
|----------------|-------------------------------|
| `F5` | 开始扫描 |
| `Esc` | 停止扫描 |
| `Ctrl+E` | 导出结果 |
| `Ctrl+B` | 切换侧边栏 |
| `Ctrl+,` | 设置 |
| `Ctrl+1` | 扫描器 |
| `Ctrl+2` | 终端 |
| `Ctrl+3` | SSH 会话 |
| `Ctrl+4` | 文件传输 |
| `Ctrl+5` | 网络适配器 |
| `Ctrl+6` | 监视器 |
| `Ctrl+7` | API 控制台 |
| `Ctrl+8` | AI 助手 |
| `Ctrl+9` | 设置 |
| `F1` | 帮助 |
| `Ctrl+Enter` | 发送 AI 提示(在助手内) |
| `Ctrl+L` | 清除嵌入式终端 |
| `Ctrl+C` | 取消正在运行的终端命令 |
| `Ctrl+Q` | 退出 |
## 项目布局
```
NetEngine/
├── main.py Entry point
├── run.bat Launcher (Windows)
├── run-admin.bat Launcher with elevation (UAC)
├── requirements.txt
├── BUILD.md Windows-only build notes
├── RELEASE.md Cross-platform build / release guide
├── NetEngine.spec PyInstaller spec — Windows
├── NetEngine-macos.spec PyInstaller spec — macOS .app bundle
├── NetEngine-linux.spec PyInstaller spec — Linux executable
├── create_icon.py Generates .ico / .png / .icns
├── scripts/
│ ├── build_windows.bat → Windows .exe
│ ├── build_macos.sh → macOS .dmg
│ └── build_linux.sh → Linux .AppImage / .deb
├── packaging/
│ └── linux/ AppRun, .desktop, debian/control template
├── gui/
│ ├── themes.py Theme palette + ThemeManager + QSS builder
│ ├── main_window.py Sidebar + stacked pages (lazy init)
│ ├── dialogs.py PortScan, Export, About dialogs
│ ├── motion.py Global animation / interaction system
│ └── components/
│ ├── sidebar.py
│ ├── loading_screen.py Boot-sequence splash
│ ├── scanner_view.py
│ ├── scan_toolbar.py
│ ├── host_table.py
│ ├── detail_panel.py Host details drawer
│ ├── terminal_view.py
│ ├── terminal_widget.py Embedded terminal control
│ ├── collapsible.py Collapsible section helper
│ ├── ssh_view.py Multi-session SSH workspace
│ ├── ssh_session_tab.py One SSH session = one tab
│ ├── file_transfer_view.py SCP file transfer workspace
│ ├── monitor_view.py Multi-ping monitor + port tester
│ ├── api_console_view.py Built-in REST client
│ ├── network_config_view.py Windows netsh adapter config
│ ├── assistant_view.py Local AI assistant (Ollama)
│ ├── settings_view.py App settings UI
│ ├── help_view.py Help page
│ ├── about_view.py About / credits
│ └── app_status_bar.py Live CPU/MEM status bar
├── ai/
│ ├── ollama_client.py HTTP client, no Qt imports
│ ├── model_config.py AI config (~/.netscope/settings.json)
│ ├── prompts.py Centralized system prompts
│ ├── command_assistant.py One-shot command suggestion + parser
│ ├── chat_assistant.py Bounded-history chat
│ └── ai_service.py Facade + AIStatus + QThread workers
├── scanner/
│ ├── network.py Interface enumeration, ARP, IP range
│ ├── host_scanner.py Ping/DNS/MAC pipeline + ScanController
│ ├── live_ping.py Continuous ping worker (Monitor page)
│ ├── port_scanner.py TCP connect scanner
│ ├── service_mapper.py Port to service name + presets
│ ├── fingerprint.py OUI vendor table + OS hint from TTL
│ ├── ssh_client.py paramiko-based SSH session
│ ├── scp_transfer.py SCP file transfer helpers
│ └── net_config.py Windows netsh adapter helper
└── utils/
├── paths.py Platform-correct user data directory
├── export.py CSV / JSON export
├── history.py Scan history persistence
└── settings.py Theme + saved sessions + IP profiles
```
## 操作系统特定说明
- **macOS** 是主要开发平台。扫描器、终端、SSH、文件传输、监视器、API 控制台和 AI 助手均可原生工作。Ping 使用 `ping -c 1`,ARP 缓存通过 `arp -a` 获取(带短格式 MAC 地址规范化)。
- **Windows** 仍然是完全支持的发布目标 — Ping 使用 `ping -n 1`,ARP 缓存通过 `arp -a` 获取,适配器配置通过 `netsh interface ipv4`。终端支持 `PowerShell`、`CMD` 和 `WSL` 后端。
- **Linux** — 扫描器、终端、SSH 和文件传输均可工作。网络适配器页面会显示“仅限 Windows”的提示。
- **管理员权限** 仅在适配器页面的“应用”操作时需要。其他所有功能都以普通用户身份运行。
## 持久化状态
Net Engine 会写入平台标准的用户数据位置:
| 操作系统 | 设置 + 历史记录 |
|----------|---------------------------------------------------------------|
| macOS | `~/Library/Application Support/Net Engine/` |
| Windows | `%APPDATA%\NetEngine\` |
| Linux | `$XDG_CONFIG_HOME/netengine/` (默认 `~/.config/netengine/`) |
该目录下包含:
- `settings.json` — 当前主题、已保存的 SSH 会话(除非按会话选择加入,否则密码不保存)、已保存的 IP 配置文件、已保存的 API 请求、终端 shell 偏好设置、AI 配置。
- `history/scan_*.json` — 最近 20 次完成的扫描。
位于 `~/.netscope/` 的旧版数据(来自 v1.1.0 及更早版本)在首次启动时通过非破坏性复制自动迁移;原始目录作为用户控制的备份保留原样。
## 局限性
- 嵌入式终端是行缓冲的。不是完整的 PTY — 期望 TTY 的程序(`vim`、`top`)应通过 SSH 启动。
- OUI 供应商表是手动策划的子集(约 150 个前缀)。
- 不在范围内;扫描器仅支持 IPv4。
- 网络适配器配置仅限 Windows。
- 本地 AI 助手需要一个在本地运行的 [Ollama](https://ollama.com) 实例。无云回退。
标签:AI助手, AI风险缓解, PyQt6, Python, SSH客户端, WSL, 云存储安全, 多会话, 扫描器, 插件系统, 文件传输, 无后门, 本地AI, 桌面应用, 系统工具, 终端, 网络安全, 网络工具, 网络扫描, 网络适配器, 网络配置, 逆向工具, 隐私保护