内容
<p align="center">
<img src="assets/readme-logo.png" width="128" alt="GoNavi Logo" />
</p>
<h1 align="center">GoNavi</h1>
<p align="center">
<b>浏览每种数据源 - 原生速度,代理就绪,零Electron膨胀。</b>
</p>
<p align="center">
一个使用
<a href="https://wails.io">Wails</a>(Go)+ <a href="https://react.dev">React</a> 构建的高性能跨平台数据库客户端。
桌面优先。MCP就绪。约30MB级别的二进制文件。
</p>
<p align="center">
<a href="https://github.com/Syngnat/GoNavi/releases"><img src="https://img.shields.io/github/v/release/Syngnat/GoNavi?style=for-the-badge&color=8B5CF6" alt="发布版本" /></a>
<a href="https://github.com/Syngnat/GoNavi/releases"><img src="https://img.shields.io/github/downloads/Syngnat/GoNavi/total?style=for-the-badge&color=6366F1&label=下载量" alt="下载量" /></a>
<a href="https://github.com/Syngnat/GoNavi/stargazers"><img src="https://img.shields.io/github/stars/Syngnat/GoNavi?style=for-the-badge&color=F59E0B" alt="星标" /></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-22C55E?style=for-the-badge" alt="许可证" /></a>
</p>
<p align="center">
<a href="https://go.dev"><img src="https://img.shields.io/github/go-mod/go-version/Syngnat/GoNavi?style=flat-square&logo=go&logoColor=white&label=Go" alt="Go" /></a>
<a href="https://wails.io"><img src="https://img.shields.io/badge/Wails-v2-red?style=flat-square" alt="Wails" /></a>
<a href="https://reactjs.org"><img src="https://img.shields.io/badge/React-18-61DAFB?style=flat-square&logo=react&logoColor=white" alt="React" /></a>
<a href="https://github.com/Syngnat/GoNavi/actions"><img src="https://img.shields.io/github/actions/workflow/status/Syngnat/GoNavi/release.yml?style=flat-square&label=构建" alt="构建" /></a>
</p>
<p align="center">
<b>语言</b>: 简体中文 · <a href="README.zh-CN.md">简体中文</a>
·
<a href="https://github.com/Syngnat/GoNavi/releases"><b>⬇ 下载</b></a>
·
<a href="#-快速开始"><b>⚡ 快速开始</b></a>
·
<a href="#-主要功能"><b>✨ 功能</b></a>
·
<a href="#-mcp--代理"><b>🤖 MCP</b></a>
</p>
---
## 为什么选择GoNavi?
大多数数据库GUI都是Electron壳,体积庞大。GoNavi走了一条不同的道路:
| | 典型的Electron客户端 | **GoNavi** |
|---|---|---|
| 运行环境 | Chromium + Node | **Go + 原生WebView** |
| 二进制文件大小 | 数百MB | **约30MB** |
| 启动速度 | 慢 | **快** |
| 内存占用 | 高基准 | **轻量** |
| AI / 代理 | 附加或缺失 | **一流的MCP + 多供应商AI** |
| 数据源 | 大多是RDBMS | **SQL · 缓存 · 向量 · 消息队列 · 搜索 · 时序 · 国内数据库** |
> **一个驾驶舱适用于MySQL,Postgres,Redis,Kafka,Milvus,OceanBase,ClickHouse…**
> 查询,编辑,审计,同步 - 并将结构化上下文交给编码代理,而不会在主机上泄露密码。
---
## 一览
```text
┌──────────────────────────────────────────────────────────────────────┐
│ GoNavi 工作台 │
│ ┌─────────────┐ ┌──────────────────┐ ┌─────────────────────────┐ │
│ │ 连接 │ │ Monaco SQL + AI │ │ 虚拟化数据网格 │ │
│ │ SSH / 代理 │ │ 模式上下文 │ │ 批量编辑 · 导出 │ │
│ │ 驱动程序 │ │ 斜杠命令 │ │ 事务提交 / 回滚 │ │
│ └─────────────┘ └────────┬─────────┘ └─────────────────────────┘ │
│ │ │
│ ┌─────────────▼─────────────┐ │
│ │ Go核心 · 审计 · 同步 │ │
│ │ MCP HTTP · Web服务器 │ │
│ └───────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
```
### 产品截图
每个图像都是一个**完整的GoNavi应用程序窗口**,按比例缩放以适应README显示。
<p align="center">
<img src="https://raw.githubusercontent.com/Syngnat/GoNavi/dev/assets/screenshots/01-home-workbench.png" alt="GoNavi完整窗口 - 连接,查询和工作台" width="560" />
<img src="https://raw.githubusercontent.com/Syngnat/GoNavi/dev/assets/screenshots/04-ai-assistant.png" alt="GoNavi完整窗口 - AI助手,具有模式上下文" width="560" />
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/Syngnat/GoNavi/dev/assets/screenshots/06-new-connection.png" alt="GoNavi完整窗口 - 新连接数据源选择器" width="560" />
</p>
<p align="center"><sub>真正的桌面截图 · 完整窗口</sub></p>
---
## ✨ 主要功能
<table>
<tr>
<td width="50%" valign="top">
### 🤖 了解您的模式的AI
- OpenAI · Gemini · Claude · 自定义OpenAI兼容API
- 附加实时表模式作为上下文
- 斜杠命令:生成SQL,解释,优化,审查
- **MCP**:安装到Claude Code / Codex,或Streamable HTTP用于远程代理
- 密钥保留在GoNavi主机上 - 代理获得工具,而不是原始密码
</td>
<td width="50%" valign="top">
### ⚡ 适用于大数据
- 虚拟化数据网格适用于大型结果集
- 原位单元格编辑 · 批量CRUD · 事务提交/回滚
- 大字段弹出编辑器 · 智能读写模式
- 导出:CSV · XLSX · JSON · Markdown
- 具有上下文感知完成的Monaco编辑器
</td>
</tr>
<tr>
<td width="50%" valign="top">
### 🔌 无剧情的连接
- URI生成/解析
- SSH隧道 · 代理
- 连接JSON导入/导出
- 按需可选驱动程序代理
- 自定义驱动程序 + DSN可扩展性
</td>
<td width="50%" valign="top">
### 🛡️ 可观察和可交付
- SQL执行日志,附带时间
- 审计中心(默认情况下被删除,保留,导出)
- 桌面+实验性**Web服务器**模式
- Docker / K8s / Helm / Podman打包
- 自动更新检查 · 多架构发布
</td>
</tr>
</table>
### 🧩 技术栈
`Go 1.24` · `Wails v2` · `React 18` · `TypeScript` · `Vite` · `Ant Design 5` · `Zustand` · `Monaco`
---
## 🗄 支持的数据源
> **内置** - 开箱即用 · **可选代理** - 通过驱动程序管理器安装
| | |
|---|---|
| **内置** | MySQL · GoldenDB · PostgreSQL · Oracle · Redis · Chroma · Qdrant · Milvus · RocketMQ · MQTT · Kafka · RabbitMQ |
| **可选** | MariaDB · Doris · StarRocks · Sphinx · SQL Server · SQLite · DuckDB · OceanBase · Dameng · Kingbase · HighGo · Vastbase · OpenGauss · GaussDB · IRIS · MongoDB · TDengine · IoTDB · ClickHouse · Trino · Elasticsearch · 自定义驱动程序/DSN |
<details>
<summary><b>完整功能矩阵</b></summary>
| 类别 | 数据源 | 驱动程序模式 | 典型功能 |
|---|---|---|---|
| 关系型 | MySQL | 内置 | 模式浏览,SQL查询,数据编辑,导出/备份 |
| 国内数据库 | GoldenDB | 内置 | MySQL兼容查询工作流和分布式事务场景 |
| 关系型 | PostgreSQL | 内置 | 模式浏览,SQL查询,数据编辑,对象管理 |
| 关系型 | Oracle | 内置 | 查询执行,对象浏览,数据编辑 |
| 缓存 | Redis | 内置 | 键浏览,命令执行,编码/视图切换 |
| 向量数据库 | Chroma | 内置 | 集合浏览,向量检索,元数据过滤 |
| 向量数据库 | Qdrant | 内置 | 集合浏览,向量搜索,载荷过滤 |
| 向量数据库 | Milvus | 内置 | 集合浏览,向量搜索,标量过滤 |
| 消息队列 | RocketMQ | 内置 | 主题浏览,消费者组检查,面向消息的工作流 |
| 消息队列 | MQTT | 内置 | 代理和主题过滤工作流,具有QoS感知连接设置 |
| 消息队列 | Kafka | 内置 | 主题浏览,代理元数据,消费者组工作流 |
| 消息队列 | RabbitMQ | 内置 | 队列/交换浏览,虚拟主机检查,管理API工作流 |
| 关系型 | MariaDB | 可选驱动程序代理 | 查询,对象管理,数据编辑 |
| 关系型 | Doris | 可选驱动程序代理 | 查询,对象浏览,SQL执行 |
| 列式分析 | StarRocks | 可选驱动程序代理 | 查询,对象浏览,SQL执行 |
| 搜索 | Sphinx | 可选驱动程序代理 | SphinxQL查询和对象浏览 |
| 关系型 | SQL Server | 可选驱动程序代理 | 模式浏览,SQL查询,对象管理 |
| 文件型 | SQLite | 可选驱动程序代理 | 本地DB浏览,编辑,导出 |
| 文件型 | DuckDB | 可选驱动程序代理 | 大表查询,分页,文件DB工作流 |
| 国内数据库 | OceanBase | 可选驱动程序代理 | MySQL / Oracle租户访问,对象浏览,查询工作流 |
| 国内数据库 | Dameng | 可选驱动程序代理 | 查询,对象浏览,数据编辑 |
| 国内数据库 | Kingbase | 可选驱动程序代理 | 查询,对象浏览,数据编辑 |
| 国内数据库 | HighGo | 可选驱动程序代理 | 查询,对象浏览,数据编辑 |
| 国内数据库 | Vastbase | 可选驱动程序代理 | 查询,对象浏览,数据编辑 |
| 国内数据库 | OpenGauss | 可选驱动程序代理 | PostgreSQL类似模式浏览,SQL查询,对象管理 |
| 国内数据库 | GaussDB | 可选驱动程序代理 | PostgreSQL类似模式浏览,SQL查询,对象管理 |
| 多模型 | InterSystems IRIS | 可选驱动程序代理 | 命名空间浏览,SQL查询,对象管理 |
| 文档 | MongoDB | 可选驱动程序代理 | 文档查询,集合浏览,连接管理 |
| 时序 | TDengine | 可选驱动程序代理 | 时序模式浏览和查询 |
| 时序 | Apache IoTDB | 可选驱动程序代理 | 存储组/设备/时序浏览和查询 |
| 列式分析 | ClickHouse | 可选驱动程序代理 | 分析查询,对象浏览,SQL执行 |
| 联邦查询 | Trino | 可选驱动程序代理 | 通过多个目录进行跨源SQL,`catalog.schema`浏览,SQL执行 |
| 搜索 | Elasticsearch | 可选驱动程序代理 | 索引浏览,映射检查,JSON DSL / 查询字符串搜索 |
| 可扩展性 | 自定义驱动程序/DSN | 自定义 | 通过驱动程序 + DSN扩展到更多数据源 |
</details>
---
## 🚀 快速开始
### erequisites
- [Go](https://go.dev/dl/) 1.21+
- [Node.js](https://nodejs.org/) 18+
- [Wails CLI](https://wails.io/docs/gettingstarted/installation)
```bash
go install github.com/wailsapp/wails/v2/cmd/wails@v2.11.0
```
### 开发
```bash
git clone https://github.com/Syngnat/GoNavi.git
cd GoNavi
wails dev # 完整的热重载
node tools/wails-fast-dev.mjs # 当Go导出不变时更快
node tools/wails-fast-dev.mjs --refresh-bindings # Go导出签名更改后
```
### 构建
```bash
wails build
wails build -clean # 清洁构建后发布
```
构建产物 → `build/bin`.
### 更喜欢二进制文件?
从 **[Releases](https://github.com/Syngnat/GoNavi/releases)** 获取最新构建
(macOS AMD64/ARM64 · Windows AMD64 · Linux WebKitGTK 4.0/4.1)
---
## 🌐 Web 服务器(实验性)
与React UI相同的Go后端 + HTTP - **不是** 容器化的Wails窗口
```powershell
go build .
.\GoNavi-Wails.exe web-server --addr 127.0.0.1:34116
```
- 第一次访问 → `/setup`(管理员密码;可选Google Authenticator)
- 桥接:`window.go.*` / `window.runtime.*` → HTTP / SSE
- 会话恢复代码,登录速率限制
#### Docker / Podman
```bash
cp docker.web-server.env.example docker.web-server.env
cp env vars (absolute path)
# optional: GONAVI_WEB_PASSWORD (min 6 chars)
docker compose --env-file docker.web-server.env -f docker-compose.web-server.yml up -d
```
Open `http://127.0.0.1:34116`. Mount active data root at `/data`
(`connections.json`, `daily_secrets.json`, optional `drivers/`).
Auth state → `web_auth.json`.
> **Do not expose an unhardened web entry to the public internet.** 使用反向代理 + HTTPS生产环境。
健康检查:`GET /__gonavi/healthz`
本地源代码构建:添加 `-f docker-compose.web-server.local.yml --build`.
更改环境变量密码后:
```bash
docker compose --env-file docker.web-server.env -f docker-compose.web-server.yml up -d --force-recreate
```
(`docker restart` **不**重新加载环境文件。)
---
## 🤖 MCP & 代理
将模式工具交给代理而不交付您的保险库:
```bash
cp docker.mcp-server.env.example docker.mcp-server.env
docker compose --env-file docker.mcp-server.env -f docker-compose.mcp-server.yml up -d
```
| 界面 | 入口 |
|---|---|
| MCP 容器 | `docker-compose.mcp-server.yml` → `ghcr.io/syngnat/gonavi-mcp-server` |
| Web UI 容器 | `docker-compose.web-server.yml` → `ghcr.io/syngnat/gonavi-web-server` |
| Podman / Quadlet | [deploy/podman/gonavi-mcp-server](deploy/podman/gonavi-mcp-server) |
| Kubernetes | [deploy/k8s/gonavi-mcp-server](deploy/k8s/gonavi-mcp-server) |
| Helm | [deploy/helm/gonavi-mcp-server](deploy/helm/gonavi-mcp-server) |
| 构建镜像 | `Dockerfile.build-env` → `ghcr.io/syngnat/gonavi-build-env` |
安全默认值:远程`schema-only`省略`execute_sql`; 变更SQL需要显式`allowMutating=true`.
详情:[cmd/gonavi-mcp-server/README.md](cmd/gonavi-mcp-server/README.md).
### 仅限Linux构建环境
```bash
docker build -f Dockerfile.build-env -t gonavi-build-env:local .
docker run --rm -it -v "$PWD:/workspace" -w /workspace gonavi-build-env:local bash
```
---
## 📦 发布流程
推送 `v*` 标签 → GitHub Actions 构建多架构版本。
自动从合并的PR生成注释 via `.github/release.yaml`.
---
## 🛠 故障排除
<details>
<summary><b>Windows: 缺失Microsoft Edge WebView2 Runtime(Windows常见问题)</b></summary>
Windows上的GoNavi桌面应用程序依赖于 **Microsoft Edge WebView2 Runtime** (系统组件,而非完整的Chrome)。
一些内联网/精简/服务器/ LTSC镜像不包含它。 症状:
- 进程立即退出,空白/白色窗口
- 关于缺少WebView2 / WebView2 Runtime的错误
- 安装程序被AV或组策略阻止
### 1. 检查运行时是否已安装
在 **PowerShell** 中:
```powershell
# 公共的Evergreen安装路径(64位Windows)
Test-Path "${env:ProgramFiles(x86)}\Microsoft\EdgeWebView\Application"
# 注册表(`pv`版本通常表示已安装)
Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" `
-ErrorAction SilentlyContinue |
Select-Object pv, name
```
如果路径不存在且注册表无`pv`,请安装运行时。
### 2. 在线安装(最简单)
1. 打开官方下载页面:
[Microsoft Edge WebView2](https://developer.microsoft.com/microsoft-edge/webview2/)
2. 下载 **Evergreen Bootstrapper** (小,需要安装时联网)
3. 以管理员身份运行,然后 **重启GoNavi**
### 3. 离线/内联网:独立安装程序(推荐用于IT)
Bootstrapper在完全断网的机器上失败。改用 **Evergreen Standalone Installer**:
1. 在联网的机器上,下载匹配架构的软件包,例如:
- `MicrosoftEdgeWebView2RuntimeInstallerX64.exe` (大多数64位PC)
- `…X86.exe` / `…ARM64.exe` 根据需要
2. 将安装程序复制到内联网(USB,软件中心,共享)
3. **以管理员身份** 在目标PC上安装:
```powershell
# 交互式
.\MicrosoftEdgeWebView2RuntimeInstallerX64.exe
# 静默(适用于批处理/ SCCM友好)
.\MicrosoftEdgeWebView2RuntimeInstallerX64.exe /silent /install
```
4. 再次启动GoNavi。 如果仍然失败,请退出,注销或重启Windows。
### 4. 组策略/锁定PC
- 需要本地管理员,或IT通过SCCM/软件中心推送
- 确保策略不阻止Edge/WebView2安装或更新
- 企业可能固定一个[固定版本](https://developer.microsoft.com/microsoft-edge/webview2/) 运行时(大多数用户应更喜欢Evergreen)
### 5. 临时解决方法:Web服务器模式
如果无法安装桌面WebView,请运行实验性Web服务器并使用普通浏览器:
```powershell
.\GoNavi.exe web-server --addr 127.0.0.1:34116
```
打开 `http://127.0.0.1:34116`. 参考上面的 **Web服务器** 部分。
**不要** 将未加固的Web入口暴露给公共互联网。
问题跟踪器/讨论:[#672](https://github.com/Syngnat/GoNavi/issues/672).
</details>
<details>
<summary><b>macOS: “App is damaged and can’t be opened”</b></summary>
如果没有Apple签名,Gatekeeper可能会阻止应用程序:
```bash
sudo xattr -rd com.apple.quarantine /Applications/GoNavi.app
```
或右键 → 打开(Control-click流程)。 将应用程序移动到 **Applications** 首先。
</details>
<details>
<summary><b>Linux: 缺失WebKitGTK</b></summary>
```bash
# Debian 13 / Ubuntu 4.0+
sudo apt-get update
sudo apt-get install -y libgtk-3-0 libwebkit2gtk-4.1-0 libjavascriptcoregtk-4.1-0
# Ubuntu 22.04 / Debian 12
sudo apt-get update
sudo apt-get install -y libgtk-3-0 libwebkit2gtk-4.0-37 libjavascriptcoregtk-4.0-18
```
带有`-WebKit41`的制品更适合Debian 13 / Ubuntu 24.04+。
</details>
<details>
<summary><b>Linux: 中文字体作为豆腐块</b></summary>
```bash
sudo apt-get update
sudo apt-get install -y fonts-noto-cjk fonts-wqy-microhei
fc-cache -fv
```
</details>
---
## 🤝 贡献
Issues和PRs欢迎。 从 **`dev`** 分支开始,针对 **`dev`** 分支进行PR。
- [CONTRIBUTING.md](CONTRIBUTING.md)
- 呼吁贡献者: [Issue #671](https://github.com/Syngnat/GoNavi/issues/671)
---
## 💬 联系与反馈
| 渠道 | 备注 |
|---|---|
| **GitHub Issues** | 首选用于bug,功能请求和文档 - 更容易跟踪和重现 |
| **微信** | `ygf1140302783`(备注“GoNavi”)- 维护者可以邀请您加入社区群组进行讨论 |
> 技术报告中,请尽可能包含版本,操作系统和重现步骤。 Windows在内联网镜像上空白/崩溃: [WebView2指南](https://github.com/Syngnat/GoNavi/issues/672).
---
## ⭐ 星标历史
<a href="https://www.star-history.com/?repos=Syngnat%2FGoNavi&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/image?repos=Syngnat/GoNavi&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/image?repos=Syngnat/GoNavi&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://api.star-history.com/image?repos=Syngnat/GoNavi&type=date&legend=top-left" />
</picture>
</a>
---
## 链接
- [linux.do](https://linux.do/)
- [AIBook](https://aibook.ren/)
## 许可证
[Apache-2.0](LICENSE)
<p align="center">
<sub>为生活在SQL,模式和代理循环中的人构建。</sub>
</p>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器