feigeCode/navop
GitHub: feigeCode/navop
Navop 是一款基于 Rust 和 GPUI 构建的原生桌面一体化工作区,将数据库管理、SSH/SFTP、终端、远程桌面和 AI 助手整合在单一应用中,解决开发者在多个运维工具间频繁切换上下文的问题。
Stars: 46 | Forks: 3
## v0.8.0 有哪些新功能
- **AI Agent 和 Function Calling** — AI agent 可以调用工具来完成结构化任务,通过工具加载技能,并使用改进的资源池、资源提及和目录刷新。
- **公共 MCP、CLI 和 Agent Skill** — 外部 Codex、Claude 及其他 MCP 客户端可以通过 `@navop/mcp` 连接到 Navop 经过身份验证的 loopback 运行时;工具、schema、工具暴露、权限、会话和审批仍由宿主端全权控制。
- **HTML 预览流程** — HTML 代码块可以在浏览器中打开,也可以在应用内对话框中渲染,保持聊天内容的可读性,避免侵入性的内联预览。
- **数据库比较与同步** — 改进了 schema/数据比较窗口、比较目标加载、多表同步以及数据库比较同步的稳定性。
- **终端生产力** — 新增了终端命令历史面板、跨窗口的 SSH 广播输入,并改进了远程 shell 集成的安装、卸载和环境处理。
- **连接导入** — 新增了从其他应用程序导入连接的入口,并优化了主侧边栏布局。
- **团队入口** — 新增了由 feature flag 控制的团队管理入口。
- **扩展与语言包** — 新增了语言包扩展支持,包括检测和安装功能。
- **渲染与字体修复** — 修复了可能导致乱码的字体回退/渲染问题,并减少了可能导致连接列表和数据列表在滚动时卡顿的渲染进程阻塞。
- **设置与 UI 优化** — API key 字段现在支持显示/隐藏切换,输入组件支持本地主题样式,窗口/选择器布局也进行了优化。
## 为什么选择 Navop?
## 功能
### 数据库工作区
通过单一界面连接到 MySQL、PostgreSQL、SQLite、DuckDB、SQL Server、Oracle 和 ClickHouse。网络数据库连接可以通过每个连接的 SOCKS5 或 HTTP CONNECT 代理进行路由,包括经过代理到达的带身份验证的代理和 SSH 隧道。在支持的数据库中,可以浏览 schema、表、列、索引、外键、存储过程、函数、触发器和序列。
除了内置驱动外,Navop 还提供了一个扩展市场,添加了针对 Dameng DM、KingbaseES、GBase 8s、OceanBase、openGauss、Apache IoTDB 的数据库驱动,以及一个无需 Oracle Instant Client 即可运行的纯 Go Oracle 驱动。只需安装你所需的驱动,它们就会与内置连接并列显示。
### SQL 编辑器与 Schema 工具
使用具有语法工具支持的 SQL 编辑器,进行具备 schema 感知的浏览、表结构编辑、查询执行、explain 支持和 ER 图绘制。数据库比较工具支持 schema/数据比较、目标选择、同步规划和多表同步工作流。
### Redis 和 MongoDB
使用专用的 Redis 查看器进行 key 浏览、value 检查和集群连接。在同一个工作区中探索 MongoDB 集合、检查文档并运行查询。
### SSH、SFTP、端口转发、串口和终端
打开集成的 SSH 会话,管理 SFTP 文件,启动端口转发隧道,连接到串口设备,并在多标签页会话中保留本地终端。本地终端 profile 支持系统 shell、PowerShell、命令提示符、WSL、Git Bash 以及带有安全解析参数的自定义程序。终端还包含命令历史、跨窗口的 SSH 广播输入以及远程 shell 集成管理。内置的 SFTP 侧边栏支持拖拽上传,从系统文件管理器复制的文件可以通过粘贴上传,路径收藏夹提供对常用目录的快速跳转。终端会话还可以将剪贴板图像粘贴到兼容的服务器端 TUI 应用程序中。
### 端口转发
从现有的 SSH/SFTP 服务器创建可重用的 SSH 端口转发连接。Navop 支持为数据库或内部 HTTP 端点等服务进行本地转发,以及通过远程主机路由工具的动态 SOCKS 隧道。
### 远程文件编辑
直接在 Navop 内部编辑远程文件,支持语法高亮和自动补全。无需打开另一个编辑器或在终端和文件工具之间来回切换。
### 远程桌面 (RDP 和 VNC)
通过可安装的远程桌面提供程序打开 RDP 和 VNC 会话。每个连接都可以使用 SOCKS5 或 HTTP CONNECT 代理,而无需提供程序升级协议。通过 RDP 连接到 Windows 机器,或连接到任何 VNC 服务器,并在存放数据库、终端和文件的同一工作区中控制远程桌面。
### 监控与图表
使用内置的服务器监控和原生渲染图表来检查远程机器状态和数据分析输出。
### AI 助手
在应用内与 AI 聊天。Navop 支持自然语言转 SQL、查询解释、BI 风格数据分析、图表生成、流式 LLM 响应、AI Agent 工作流以及用于基于工具执行任务的 Function Calling。Navop 还支持 ACP (Agent Client Protocol),允许外部 AI agent 通过扩展进行连接;目前可用于 Codex、Claude Code 和 OpenCode 的 ACP 扩展。HTML 代码块可以在浏览器中打开或在应用内对话框中预览,生成的终端命令可以快速粘贴到终端会话中并运行。
### 公共 MCP、Navop CLI 和 Agent Skill
Navop 包含一个经过身份验证的公共 MCP 运行时,用于外部 Codex、Claude、MCP 客户端和自动化。在 **Settings > General > MCP > MCP Server** 下启用它,选择权限配置,并在 **Settings > General > Tool Exposure** 下仅暴露你所需的工具组。
该运行时绑定到动态的仅限 loopback 的端口,并需要存储在 Navop 仅限用户的发现文件中的 64 字符 token。Navop 仍然是唯一的工具实现、安全、权限、批准、连接/会话和审计边界。内置 Agent 继续直接调用内部 Rust ToolRegistry;它不会通过 npm 重新连接到 Navop。
外部客户端使用单独发布的 [`@navop/mcp`](https://github.com/feigeCode/navop-mcp) 包作为轻量级 stdio 桥接、宿主端驱动的 CLI 和可安装的 Agent Skill:
```
npx -y @navop/mcp@0.1.2 status --json
npx -y @navop/mcp@0.1.2 tools --json
npx -y @navop/mcp@0.1.2 schema --json
npx -y @navop/mcp@0.1.2 call --arguments '' --json
npx -y @navop/mcp@0.1.2 mcp
```
npm 版本是外部客户端、CLI、Skill 和 stdio 启动器的版本,而不是 Navop 宿主端工具注册表的版本。工具名称、描述、schema、注解、工具暴露组、权限模式、会话和结果均通过 MCP `initialize`、`tools/list`、`tools/call` 以及只读的 `navop.runtime_status` 工具从运行中的 Navop 宿主端获取。因此,Navop 可以添加或更新宿主端工具,而无需同步发布 npm 版本。
当前的公共 MCP 能力组包括:
| 组 | 当前宿主端能力 |
| --- | --- |
| 运行时 | 兼容性元数据、权限指引、工具暴露组状态、实时工具和 schema |
| SSH | 隔离的命令执行、会话诊断、后台命令轮询/输出/取消 |
| 可见终端 | 有限的输出读取、可见的 PTY 执行、显式中断 |
| SQL 数据库 | schema、表、描述、样本行、只读查询、具备写入能力的执行 |
| Redis | 活动连接、命令、keys、get、set |
| MongoDB | databases、collections、find、aggregate、count、indexes、validation、CRUD、explain |
| SFTP | list、stat、read、write、upload、download |
| 连接 | list、find、show、kinds、schema、validate、save、delete、test、open、sessions |
| 工作区 | list 和 show |
| 内部函数 | 列出已注册的宿主端函数,并通过其实时 schema 调用它们 |
可用性始终在运行时确定。在“工具暴露”中被禁用的组不会被播报为可用,且特定于连接/会话的操作需要 Navop 返回的真实资源 id。调用者不得猜测 id 或绕过权限和批准决策。
Navop 权限配置映射到公共 MCP 行为:
| 配置 | 行为 |
| --- | --- |
| 安全 / `deny` | 可用只读发现;拒绝变更操作 |
| 确认 / `ask` | 变更操作需要在 Navop UI 中批准 |
| 自动 / `allow` | 变更操作自动运行;破坏性意图仍必须显式执行 |
Navop 可以安装和检查确切版本的 Codex 和 Claude Code MCP 配置,复制通用的 MCP JSON 配置,以及为 Codex 或兼容 Agents 的客户端安装/更新捆绑的 `navop` Skill。该 Skill 不嵌入静态工具手册;它指示 Agents 从 `navop status`、`tools/list` 和实时的工具 schema 获取当前方法。
### 性能与渲染
Navop 使用原生 GPUI 渲染,并持续优化繁重的 UI 路径。近期的版本修复了可能导致乱码的字体回退/渲染问题,并减少了可能导致连接列表和数据列表在滚动时卡顿的渲染进程阻塞。
### 同步、安全与 i18n
使用基于 AES-GCM 和 Ed25519 的加密 key 存储在跨设备间同步连接和设置。Navop 支持浅色和深色主题、英语、简体中文和繁体中文。
## 截图
| 数据库 | SSH |
|:-:|:-:|
| [](database.png) | [](ssh.png) |
| SFTP | Redis |
|:-:|:-:|
| [](sftp.png) | [](redis.png) |
| MongoDB | AI 聊天 |
|:-:|:-:|
| [](mongodb.png) | [](chatdb.png) |
| 监控 | SFTP 侧边栏 |
|:-:|:-:|
| [](monitor.png) | [](sftp_sidebar.png) |
| 远程文件编辑器 | ER 图 |
|:-:|:-:|
| [](remote_file_editor.png) | [](er.png) |
| 扩展 |
|:-:|
| [](extension.png) |
## 安装
从 [Releases](https://github.com/feigeCode/navop/releases/latest) 页面下载最新的构建版本。
当前发布构件按平台分发:
| 平台 | 架构 | 构件 |
|----------|--------------|----------|
| macOS | Apple Silicon, Intel | `.dmg`, `.tar.gz` |
| Linux | x86_64 | `.tar.gz`, `.deb`, `.rpm`, `.AppImage` |
| Windows | x86_64 | `.msi`, `.zip` |
校验和会在每次发布时以 `sha256sums.txt` 文件的形式发布。
在 Windows 上,请使用 `navop-x86_-pc-windows-msvc.msi` 获取中英双语的用户级安装程序。它默认安装到 `%LOCALAPPDATA%\Programs\Navop`,当你选择其他可写的父目录时,它会附加 `Navop` 子目录。它还会创建桌面和开始菜单快捷方式;默认位置不需要管理员权限。`.zip` 压缩包仍可用于便携式使用和应用内更新。
### macOS Gatekeeper
如果 macOS 在安装 DMG 后以“Apple 无法检查其是否包含恶意软件”为由阻止该应用,请运行:
```
sudo xattr -rd com.apple.quarantine /Applications/Navop.app
```
### Oracle 支持
内置的 Oracle 驱动需要 [Oracle Instant Client](https://www.oracle.com/database/technologies/instant-client/downloads.html)(Basic package)。下载与你的平台相匹配的版本,并确保这些库位于你的库搜索路径中。或者,从扩展市场安装纯 Go 的 Oracle 驱动,它没有 Instant Client 依赖。
## 快速上手
1. 打开 Navop 并创建你的第一个数据库连接。
2. 添加一个 SSH 主机并打开远程终端。
3. 当你需要本地隧道或 SOCKS 代理时,从该 SSH 主机创建一个端口转发连接。
4. 打开 SFTP 文件管理以浏览远程目录或传输文件。
5. 尝试 Redis key 浏览或 MongoDB 文档浏览。
6. 在 SQL 或数据分析工作流中使用 AI 助手。
## 从源码构建
### 前置条件
- Rust 2024 edition
- 特定于平台的系统依赖
### 系统依赖
**macOS / Linux:**
```
./script/bootstrap
```
**Windows (PowerShell):**
```
.\script\install-window.ps1
```
### 运行
```
cargo run -p main
```
### 开发检查
```
# Build
cargo build
# Test
cargo test --all
# Lint
cargo clippy --workspace --all-targets
# Format check
cargo fmt --check
```
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取完整的开发指南。
## 技术栈
| 类别 | 技术 |
|----------|--------------|
| UI 框架 | [GPUI](https://gpui.rs) |
| 语言 | Rust |
| 数据库 | tokio-postgres, mysql_async, rusqlite, tiberius, oracle, clickhouse, duckdb |
| 数据库扩展 | Dameng DM, KingbaseES, GBase 8s, OceanBase, openGauss, Apache IoTDB, 纯 Go Oracle |
| Redis / MongoDB | redis, mongodb |
| SSH / SFTP / 端口转发 | russh, russh-sftp, 基于 SSH direct-tcpip 的 SOCKS5 |
| 远程桌面 | 通过扩展运行时的 RDP & VNC 提供程序 |
| 终端 | alacritty_terminal |
| 文本编辑 | ropey, tree-sitter, sqlparser |
| AI | llm-connector |
| 加密 | aes-gcm, sha2, ed25519 |
| i18n | rust-i18n |
## 常见问题解答
## 支持
Navop 由一人长期维护。如果它节省了你的时间,你可以通过捐赠、加星、错误报告或有针对性的 pull request 来支持该项目。
### 捐赠
捐赠是可选的,不会解锁或限制任何功能。有关微信支付、支付宝和 PayPal 选项,请参阅 [DONATE.md](DONATE.md)。
### 社区联系方式
官方社区渠道:
- QQ 群:[860670605](https://qm.qq.com/cgi-bin/qm/qr?k=&group_code=860670605)
- 微信群:[加入](https://docs.qq.com/doc/DVEFFd2RnSnJLcFBD)
## 致谢
ER 图渲染基于 [ferrum-flow](https://github.com/tu6ge/ferrum-flow.git)。
## 许可证
在 [Apache License 2.0](LICENSE-APACHE) 下授权。
Navop 应用程序的分发和使用还受 [Navop 补充许可证](NAVOP_LICENSE) 的约束,该许可证在 Apache 2.0 的基础上增加了以下限制:
- 不得将其作为独立产品重新分发、转售或重新打包
- 不得基于此软件创建竞争产品或服务
- 不得在未经授权的分发平台上托管
有关许可咨询,请联系 xiaofei.hf@gmail.com。
## Star 历史
原生桌面,而非浏览器外壳Navop 使用 Rust 和 GPUI 构建,提供具有 GPU 加速渲染的原生桌面体验。 |
日常运维的一体化工作区数据库管理、SSH 终端、SFTP 文件传输、端口转发、串口连接、本地终端和远程桌面 (RDP/VNC) 集于一个应用中。 |
数据旁边的 AI使用内置的 AI 助手进行自然语言到 SQL 的转换、查询解释、BI 风格的分析和图表生成。 |
无需切换上下文的远程工作打开远程终端,通过 SFTP 浏览文件,将文件拖拽到侧边栏,并使用语法高亮编辑远程文件。 |
支持哪些数据库?
Navop 内置支持 MySQL、PostgreSQL、SQLite、DuckDB、SQL Server、Oracle 和 ClickHouse,并提供专用的 Redis 和 MongoDB 视图。扩展市场添加了对 Dameng DM、KingbaseES、GBase 8s、OceanBase、openGauss、Apache IoTDB 和纯 Go Oracle 驱动程序的支持,因此在主流数据库之外,国产和特殊数据库也得到了很好的覆盖。Oracle 需要额外的设置吗?
是的。内置的 Oracle 驱动程序需要安装 Oracle Instant Client,并能通过你的系统库搜索路径访问。你也可以从扩展市场安装纯 Go 的 Oracle 驱动程序,它无需 Instant Client 即可运行。我可以在哪里下载 Navop?
使用 GitHub [Releases](https://github.com/feigeCode/navop/releases/latest) 页面。当前的发布工作流会发布带有校验和的 macOS、Linux 和 Windows 构件。Navop 是免费的吗?
所有功能无需赞助即可使用。源代码在 Apache License 2.0 下授权,分发或产品使用还需遵循 Navop 补充许可证。我该如何报告错误或请求功能?
在 [GitHub Issues](https://github.com/feigeCode/navop/issues) 上提 issue。对于代码更改,请先阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。标签:MITM代理, Rust, SOC Prime, 可视化界面, 开发工具, 数据库管理, 桌面应用, 终端工具, 网络流量审计, 远程管理, 通知系统