diff --git a/Makefile b/Makefile index 343d1ca..6932efb 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: install web gui all server stop status build-web test test-go test-ui desktop +.PHONY: install web gui all server stop status build-web test test-go test-ui desktop homepage install: npm install @@ -24,6 +24,10 @@ status: desktop: ./run.sh desktop +# homepage = 官网/文档/定价静态站构建(源在 homepage/,产物 homepage/dist) +homepage: + scripts/build-homepage.sh + build-web: npm run build:ui diff --git a/server/internal/site/assets/site.css b/homepage/assets/site.css similarity index 100% rename from server/internal/site/assets/site.css rename to homepage/assets/site.css diff --git a/server/internal/docs/content/01-intro.md b/homepage/content/01-intro.md similarity index 52% rename from server/internal/docs/content/01-intro.md rename to homepage/content/01-intro.md index 350a1cd..22fc5fd 100644 --- a/server/internal/docs/content/01-intro.md +++ b/homepage/content/01-intro.md @@ -6,29 +6,27 @@ OpsxDB 是一款**本地优先**的桌面数据库工作台,面向运维与开 | 能力 | 说明 | | --- | --- | -| 多驱动连库 | MySQL 族 / PostgreSQL 族 / SQL Server / Oracle / SQLite / Redis,native Go 驱动编译内置 | -| 连接选择器 | 搜索 / 分类 / 最近 / 图标网格;粘贴连接 URL 一键填入表单 | -| SQL 工作台 | CodeMirror 编辑器、⌘/Ctrl+Enter 执行语句或选区、多 Tab、可拖分栏 | -| 对象树 | 懒加载库 / 表 / 列;点表名直接看前 100 行 | -| 结果处理 | 一键复制 / CSV / 生成 INSERT;双击单元格复制;截断有提示 | -| Redis 工作台 | 编辑器执行 PING / GET / SET / DEL / KEYS,键空间浏览 | -| 安全通道 | 每连接独立配置 SSL/TLS 与 SSH 隧道;密码本机混淆存储 | -| AI 面板 | Ask 生成/解释/优化;Agent 真查库(与 MCP 同源只读工具) | +| 18 种数据库 | 关系型 / NoSQL / 时序·搜索 / 国产库,全部端到端验收;常用引擎原生内置 | +| 连接选择器 | 搜索 / 分类 / 最近 / 图标网格;粘贴连接 URL 一键填入表单;连接颜色标记区分环境 | +| SQL 工作台 | CodeMirror 编辑器、⌘/Ctrl+Enter 执行语句或选区、多 Tab、可拖分栏、格式化、执行历史 | +| 对象树 | 懒加载库 / 表 / 列 / 索引 / 触发器;点表名直接看前 100 行;右键管理对象 | +| 结果处理 | 单元格编辑回写 / 右键复制(值·行·JSON·INSERT)/ CSV·JSON·INSERT 导出 / 过滤构建器 / 分页 | +| Redis 工作台 | 单机 / Sentinel / Cluster;键树浏览(SCAN 游标)、TTL、Hash/JSON 编辑、危险命令拦截 | +| 安全通道 | 每连接独立配置 SSL/TLS 与 SSH 隧道;后端本机监听 + 访问令牌 | +| AI 助手 | 生成 / 解释 / 优化 / 修复 / 方言转换 / 样例;OpenAI 兼容协议 + SSE 流式输出 | | 危险操作防护 | DROP / TRUNCATE / 无 WHERE 的 UPDATE·DELETE 执行前确认 | | 桌面唯一形态 | 桌面 GUI(Tauri 2),本地后端随应用自动拉起 | ## 支持的数据库 -| 家族 | 覆盖 | 默认端口 | -| --- | --- | --- | -| MySQL 族 | MySQL · MariaDB · TiDB · OceanBase · PolarDB · TDSQL | 3306 | -| PostgreSQL 族 | PostgreSQL · GaussDB / openGauss · 人大金仓 | 5432 | -| SQL Server | 原生协议直连 | 1433 | -| Oracle | 纯 Go 驱动 go-ora(不引入 JVM) | 1521 | -| SQLite | 本地文件库 | — | -| Redis | 命令执行 + 键管理 | 6379 | +| 家族 | 覆盖 | +| --- | --- | +| 关系型 | MySQL · MariaDB · TiDB · PostgreSQL · SQL Server · Oracle · SQLite | +| NoSQL | Redis · MongoDB | +| 时序 / 搜索 | Elasticsearch · ZooKeeper · InfluxDB | +| 国产库 | 达梦 DM · OceanBase · GaussDB / openGauss · PolarDB · TDSQL · Kingbase | -> **提示**:达梦 DM8、MongoDB、ZooKeeper、Elasticsearch、InfluxDB 已列入路线,规划 agent 按需接入。 +> 逐引擎的接入方式、默认端口与能力边界见《[驱动支持](/docs/drivers)》;全部 18 引擎均已实测验收。 ## 为什么选 OpsxDB diff --git a/server/internal/docs/content/02-quickstart.md b/homepage/content/02-quickstart.md similarity index 99% rename from server/internal/docs/content/02-quickstart.md rename to homepage/content/02-quickstart.md index 3115bd4..8058787 100644 --- a/server/internal/docs/content/02-quickstart.md +++ b/homepage/content/02-quickstart.md @@ -20,6 +20,7 @@ npm install ## 2. 新建连接 1. 打开应用,进入**连接选择器**,选择数据库类型(如 MySQL); + 2. 或者直接粘贴连接 URL,点「填入」自动拆解字段: ``` @@ -33,6 +34,7 @@ npm install ## 3. 第一次查询 1. 左侧对象树展开库,**点表名**直接查看前 100 行(展开表可看列结构); + 2. 打开 SQL 编辑器,输入: ```sql @@ -40,6 +42,7 @@ npm install ``` 3. 按 **⌘/Ctrl + Enter** 执行当前语句(或选中的片段); + 4. 结果面板支持**复制 / 导出 CSV / 生成 INSERT**,双击单元格即复制。 ## 4. 验证服务 diff --git a/server/internal/docs/content/03-interface.md b/homepage/content/03-interface.md similarity index 82% rename from server/internal/docs/content/03-interface.md rename to homepage/content/03-interface.md index a26b026..86d9405 100644 --- a/server/internal/docs/content/03-interface.md +++ b/homepage/content/03-interface.md @@ -24,6 +24,8 @@ OpsxDB 的界面为「高频操作」设计:从打开应用到看到数据, - 点**表名**:直接打开前 100 行数据; - 展开**表**:查看列结构; +- **右键表**:打开表 / 查看 DDL / 生成 SQL(SELECT·INSERT·UPDATE·DELETE)/ 重命名 / 克隆表结构·克隆表(含数据)/ 清空 / 截断 / 删除 —— 危险项红色并二次确认; +- **右键库**:新建查询 / 新建表(生成 CREATE TABLE 模板到编辑器)/ 复制 / 设为默认库 / 刷新 / 删除库; - Redis:按键分隔符编文件夹,点键打开类型化详情(TTL / JSON / 增删字段); - 库列表懒加载,大实例也不卡。 diff --git a/server/internal/docs/content/04-connect.md b/homepage/content/04-connect.md similarity index 100% rename from server/internal/docs/content/04-connect.md rename to homepage/content/04-connect.md diff --git a/homepage/content/05-drivers.md b/homepage/content/05-drivers.md new file mode 100644 index 0000000..ab85abb --- /dev/null +++ b/homepage/content/05-drivers.md @@ -0,0 +1,49 @@ +OpsxDB 当前支持 18 种数据库,覆盖关系型、NoSQL、时序/搜索与国产库,全部经真实实例端到端验收(ready + verified)。常用引擎以原生 Go 驱动编译内置,开箱即用;JVM 系数据库通过 Agent 桥按需接入。 + +## 完整支持矩阵 + +| 数据库 | 类型 | 接入方式 | 默认端口 | 状态 | +| --- | --- | --- | --- | --- | +| MySQL | 关系型 | 原生内置 | 3306 | ✅ 已验收 | +| MariaDB | 关系型 | 原生内置 | 3307 | ✅ 已验收 | +| TiDB | 关系型 | 原生内置 | 4000 | ✅ 已验收 | +| PostgreSQL | 关系型 | 原生内置 | 5432 | ✅ 已验收 | +| SQL Server | 关系型 | 原生内置 | 1433 | ✅ 已验收 | +| Oracle | 关系型 | 原生内置(go-ora,不引入 JVM) | 1521 | ✅ 已验收 | +| SQLite | 关系型 | 原生内置(本地文件) | — | ✅ 已验收 | +| MongoDB | NoSQL | Agent 桥(官方驱动) | 27017 | ✅ 已验收 | +| Redis | NoSQL | 原生内置 | 6379 | ✅ 已验收 | +| Elasticsearch | 时序/搜索 | 原生内置(SQL API) | 9200 | ✅ 已验收 | +| ZooKeeper | 时序/搜索 | Agent 桥 | 2181 | ✅ 已验收 | +| InfluxDB | 时序/搜索 | 原生内置(Flux) | 8086 | ✅ 已验收 | +| 达梦 DM | 国产库 | Agent 桥(JDBC) | 5236 | ✅ 已验收 | +| OceanBase | 国产库 | 原生内置(MySQL 协议族) | 2881 | ✅ 已验收 | +| GaussDB / openGauss | 国产库 | 原生内置(PG 协议族) | 5432 | ✅ 已验收 | +| PolarDB | 国产库 | 原生内置(MySQL 协议族) | 3306 | ✅ 已验收 | +| TDSQL | 国产库 | 原生内置(MySQL 协议族) | 3306 | ✅ 已验收 | +| Kingbase | 国产库 | 原生内置(PG 协议族) | 54321 | ✅ 已验收 | + +## 协议族复用 + +MySQL 族(MySQL / MariaDB / TiDB / OceanBase / PolarDB / TDSQL)共用同一原生驱动,PostgreSQL 族(PostgreSQL / GaussDB / openGauss / Kingbase)同理 —— 同族引擎的连接体验与能力完全一致,仅默认端口不同。 + +## Agent 桥驱动(按需下载) + +MongoDB、ZooKeeper、达梦通过 JVM Agent 桥接入: + +- 首次使用时在**驱动管理器**按需下载对应组件,版本固定并做 sha256 校验(Gitee 主源 + GitHub 备源); +- 商业数据库(如达梦官方 JDBC)不代下,需自备 jar 放入驱动目录; +- Agent 进程随会话池化管理,崩溃自动摘除重建,应用退出级联清理。 + +## 各引擎能力边界 + +| 引擎 | 浏览 | 执行 | 写入 | 说明 | +| --- | --- | --- | --- | --- | +| 关系型全家 | 库/表/视图/存储过程/索引/外键/触发器 | SQL | ✅(含结果集编辑回写) | MySQL 族附执行计划 | +| Redis | 键树(SCAN 游标)/ TTL | 命令编辑器 | ✅ | 单机 / Sentinel / Cluster 三模式;危险命令族拦截 | +| MongoDB | 库/集合 | `db.coll.find()` DSL | ✅(增删改单文档) | 官方驱动经 Agent 桥 | +| ZooKeeper | 路径树 | GET / SET | ✅(写动词二次确认) | 经 Agent 桥 | +| Elasticsearch | 索引浏览 | SQL API | 只读 | 官方 JDBC 付费,故走原生 SQL API | +| InfluxDB | org/bucket 浏览 | Flux 脚本 | 只读 | 用户=org、密码=token | + +> **说明(Oracle)**:go-ora 纯 Go 驱动,无需安装 Java;Apple Silicon 容器环境起 Oracle XE 会遇到 ORA-00442 属环境限制,x86 或真实实例不受影响。 diff --git a/homepage/content/06-workbench.md b/homepage/content/06-workbench.md new file mode 100644 index 0000000..53a8915 --- /dev/null +++ b/homepage/content/06-workbench.md @@ -0,0 +1,47 @@ +SQL 工作台是日常使用率最高的界面,所有交互围绕「快」设计。 + +## 执行模型 + +- **⌘/Ctrl + Enter**:执行光标所在的**当前语句**;有选区时执行**选区**; +- 不是「整页脚本」模式 —— 多条语句互不干扰,想跑哪句把光标放哪; +- Redis 连接共用同一编辑器,按**行**执行命令(见 [Redis 工作台](redis)),不另开 CLI; +- 执行在会话上运行,连接断开后自动提示。 + +## 多 Tab 与分栏 + +- 每个查询一个 Tab,并行执行互不阻塞; +- 编辑器 / 结果区可拖动分栏,长查询时编辑器不被结果挤占; +- Tab 与布局持久化,重开应用保持原样。 + +## 对象树联动 + +- 左侧对象树懒加载库 / 表 / 列; +- **点表名 = 打开表工作台**(前 100 行 + 条件过滤 + 结构分页),并回填 SELECT; +- 展开表看列名与类型,写 SQL 时可对照。 + +## 查询历史 + +- 本地留存最近 200 条(不上传、不同步); +- **相同语句自动去重置顶** —— 历史即「最近用过的不同语句」,高频查询永远在第一条; +- 点击条目回填编辑器;悬停出现 **▶** 按钮,回填并直接重跑; +- 顶部过滤框支持按语句内容或连接名搜索; +- 条目显示时间、连接名、行数与耗时;失败的语句红色标出。 + +## 危险 SQL 防护 + +执行以下语句前会弹确认框: + +| 类型 | 规则 | +| --- | --- | +| 删除对象 | DROP / TRUNCATE | +| 全表更新 | 无 WHERE 的 UPDATE / DELETE | + +> **注意**:确认框只拦「明确危险」的模式,不替代事务与备份习惯;生产库操作请配合审批流程。 + +## 快捷键 + +| 快捷键 | 动作 | +| --- | --- | +| ⌘/Ctrl + Enter | 执行当前语句 / 选区 | +| 双击结果单元格 | 复制单元格内容 | +| Esc | 关闭弹层 / 取消确认 | diff --git a/homepage/content/07-results.md b/homepage/content/07-results.md new file mode 100644 index 0000000..66d96bc --- /dev/null +++ b/homepage/content/07-results.md @@ -0,0 +1,40 @@ +查询跑完只是开始,把结果带走才算完成 —— OpsxDB 给了三条最快路径。 + +## 三种取数方式 + +| 方式 | 用途 | +| --- | --- | +| **复制** | 直接进剪贴板,贴到群聊 / 文档 / 表格 | +| **CSV** | 导出标准 CSV 文件,Excel / Numbers 直接打开 | +| **INSERT** | 把结果行生成为 INSERT 语句,直接可在别的库回放 | + +## 表数据工作台(关系库) + +从对象树打开表后,结果区按 DBeaver / DBX 的数据编辑器组织,而不是只有一张裸网格: + +- **工具栏**:刷新、增行、删行、提交(有主键才写回); +- **条件过滤**:列 + 运算符(= ≠ > < 包含 空…)+ 值,可加多条 AND;应用后重查,SQL 回填编辑器; +- **本页搜索**:不打库,只过滤当前结果; +- **列头**:列名 + 类型色 + 主键标记,悬停看注释。 + +## 表结构 + +「结构」分页签:列 / 索引 / 外键 / 触发器 / DDL。MySQL 族、PostgreSQL 族、SQLite、SQL Server、Oracle 都拉元数据;DDL 可复制或插入编辑器。 + +## 单元格操作 + +- **双击单元格**:进入编辑(有主键时写回);长文本可展开; +- 列头点击排序(仅当前页)。 + +## 截断提示 + +为保护界面与内存,超大结果集会按阈值截断展示: + +- 结果面板顶部显示「已截断」提示与实际行数; +- 需要完整数据时,缩小查询范围(加 LIMIT / WHERE)或使用导出。 + +> **提示**:默认「点表名看前 100 行」就是截断策略的一部分 —— 快速浏览用 100 行,精确取数写 WHERE。 + +## 与 AI 面板联动 + +写不出来的查询可以直接在 AI 面板用自然语言描述(「查最近 7 天下单但未支付的用户」),生成 SQL 后放回编辑器执行,见《AI 助手》。 diff --git a/server/internal/docs/content/08-redis.md b/homepage/content/08-redis.md similarity index 94% rename from server/internal/docs/content/08-redis.md rename to homepage/content/08-redis.md index 8c38a78..38b1792 100644 --- a/server/internal/docs/content/08-redis.md +++ b/homepage/content/08-redis.md @@ -8,14 +8,14 @@ SQL 工作台已经有:多 Tab、⌘/Ctrl+Enter、查询历史、书签、危 因此: -| | SQL | Redis | +| | SQL | Redis | | --- | --- | --- | | 输入框 | 同一 CodeMirror | 同一 CodeMirror(占位/补全换成命令) | | 切分 | 分号语句 | **按行**(`SET k "a;b"` 不会被分号拆开) | | 执行 | ⌘/Ctrl+Enter 当前语句或选区 | ⌘/Ctrl+Enter 当前行或选区 | | 结果 | 结果表 | 命令结果表;从对象树打开键则进入键详情 | -独立 CLI Tab、单行命令与输出日志可在后续评估,不属于当前主路径。 +Another Redis Desktop Manager 的独立 CLI Tab、opsxsql 的单行命令 + 输出日志,列为后续 P1,不是现在的主路径。 ## 键空间浏览 @@ -28,7 +28,7 @@ SQL 工作台已经有:多 Tab、⌘/Ctrl+Enter、查询历史、书签、危 ## 键详情 -Hash/List/Set 键详情支持: +对标 Another Redis Desktop Manager 的 Hash/List/Set 视图: - 类型徽章、键名(回车重命名)、TTL(回车或「保存 TTL」,`-1` 永久)、刷新、导出还原命令、删除; - **结构**表:Hash 为 ID / Field / Value,JSON 值自动美化;可新增字段、编辑、删除; diff --git a/server/internal/docs/content/09-security.md b/homepage/content/09-security.md similarity index 100% rename from server/internal/docs/content/09-security.md rename to homepage/content/09-security.md diff --git a/homepage/content/10-ai.md b/homepage/content/10-ai.md new file mode 100644 index 0000000..fd76f4b --- /dev/null +++ b/homepage/content/10-ai.md @@ -0,0 +1,39 @@ +AI 面板的目标:让「写不出的 SQL」和「看不懂的 SQL」不再阻塞你。 + +侧栏支持 **Ask | Agent**:Ask 只生成 SQL;Agent 调用与 MCP 同源的只读工具真查库。外部编辑器可用 `npx @rlwj-lab/opsxdb-mcp` 接入(见应用内《AI 助手》文档)。 + +## 六种动作 + +| 动作 | 用途 | +| --- | --- | +| 生成 | 自然语言 → SQL(「查最近 7 天下单但未支付的用户」) | +| 解释 | 把一段复杂 SQL 翻译成中文说明 | +| 优化 | 分析慢查询,给出索引 / 改写建议 | +| 修复 | 报错信息 + SQL → 修正版本 | +| 方言 | MySQL ↔ PostgreSQL 等跨方言转换 | +| 样例 | 按表结构生成示例查询 | + +## 使用方式 + +1. 连接库后打开右侧 AI 面板; +2. 选择动作,输入需求或粘贴 SQL(可附上对象树上下文); +3. 生成结果一键放回编辑器,⌘/Ctrl + Enter 执行。 + +> **提示**:生成的 SQL 依旧走危险语句确认流程 —— AI 产出与手写 SQL 同等对待,不放宽防护。 + +## 接入真实模型 + +AI 面板支持任何 **OpenAI 兼容协议**的服务(OpenAI / DeepSeek / 通义 / 本地 vLLM 等),回复以 **SSE 流式**逐字输出,等待模型时不再面对空白。 + +配置入口(二选一): + +1. AI 面板右上角「**配置**」:填 Base URL、API Key、模型名,保存后可一键测试; +2. 配置文件 `~/.opsxdb/ai.json`(权限 0600),或环境变量 `OPSXDB_AI_PROVIDER / OPSXDB_AI_BASE_URL / OPSXDB_AI_API_KEY / OPSXDB_AI_MODEL`。 + +> **说明**:未配置 API Key 时回落本地 stub(离线占位,内容为模板演示);AI Key 保存后服务端只回显掩码(`sk-***`)。 + +## 数据流向承诺 + +- 默认只发送你明确提交的内容(附当前库表结构上下文,不含连接凭据); +- 可完全关闭 AI 功能(顶栏隐藏面板即可,无后台请求); +- 使用云端模型时在界面上明确标识,生成 SQL 依旧走危险语句确认流程。 diff --git a/server/internal/docs/content/11-faq.md b/homepage/content/11-faq.md similarity index 64% rename from server/internal/docs/content/11-faq.md rename to homepage/content/11-faq.md index 52ad595..b3d8635 100644 --- a/server/internal/docs/content/11-faq.md +++ b/homepage/content/11-faq.md @@ -1,51 +1,40 @@ ## 产品形态 -**Q:能在浏览器里操作数据库吗?** +**Q:能在浏览器里操作数据库吗?** 不能。OpsxDB 客户端唯一形态是桌面 App(Tauri 2);浏览器只承载官网与文档(由本地后端 `:8788` 内置提供)。开发时的 `:5174` 只是桌面 devUrl 的资产服务,不是网页客户端。 -**Q:官网和文档部署在哪?** +**Q:官网和文档部署在哪?** 就内置在你运行的那个二进制里:`http://127.0.0.1:8788/` 是官网,`/docs` 是文档;无需额外部署。 -**Q:怎么打安装包?** +**Q:怎么打安装包?** `./run.sh package` 产出 Tauri 安装包(DMG)并内嵌 sidecar 后端二进制。 ## 数据与安全 -**Q:我的连接密码存在哪?** +**Q:我的连接密码存在哪?** 本机,混淆存储;查询只带会话 ID,密码不会随请求重复上送,也不会同步到云端。 -**Q:会上传我的 SQL 或查询结果吗?** -不会。没有遥测、没有账号、没有云依赖;AI 功能当前为本地 stub,接入模型服务时会明确标注数据流向。 +**Q:会上传我的 SQL 或查询结果吗?** +不会。没有遥测、没有账号、没有云依赖。AI 助手为可选功能:只有你主动配置了模型服务并主动提问时,才会把当次请求(含库表结构上下文,不含连接凭据)发给你指定的服务地址。 -**Q:能在公司内网用吗?** +**Q:能在公司内网用吗?** 能。单二进制 + 内置静态页,无外部依赖;默认只监听回环地址,对外需显式配置。 ## 驱动相关 -**Q:Oracle 能用吗?** +**Q:Oracle 能用吗?** 驱动代码就绪(go-ora 纯 Go 实现,无需 JVM),但本机 docker 验收在 Apple Silicon 上受镜像限制未通过(ORA-00442),需 x86 环境或真库完成验收,详见《驱动支持》。 -**Q:达梦 / MongoDB 什么时候支持?** +**Q:达梦 / MongoDB 什么时候支持?** 已列入路线:长尾库(达梦、MongoDB、ZooKeeper、ES、InfluxDB)规划 agent 按需接入,驱动分发走独立仓库并校验 sha256。 -**Q:MySQL 族 / PG 族的国产库怎么连?** +**Q:MySQL 族 / PG 族的国产库怎么连?** 协议兼容直接复用家族驱动:TiDB / OceanBase / PolarDB / TDSQL 选对应类型(MySQL 协议);GaussDB / Kingbase 走 PostgreSQL 表单。注意各自默认端口与用户名差异。 ## 其他 -**Q:和 OpsxAPI 是什么关系?** +**Q:和 OpsxAPI 是什么关系?** 同一团队的姊妹项目:OpsxAPI 是接口工作台,OpsxDB 是数据库工作台,共用一套 monorepo 脚手架(web + Gin + 可选 Tauri),产品面各自独立。 -**Q:快捷键有哪些?** +**Q:快捷键有哪些?** 核心就一个:⌘/Ctrl + Enter 执行当前语句或选区;双击结果单元格复制。完整列表见《SQL 工作台》。 - - -## 如何把 OpsxDB 接到 Cursor? - -安装并配置 MCP: - -```bash -npx @rlwj-lab/opsxdb-mcp -``` - -在 Cursor 的 `mcp.json` 中指向该命令(或本机构建的 `bin/opsxdb-mcp`),并在设置 → MCP 勾选允许访问的连接。新配置默认允许读写与危险 SQL,写入须确认;详见《MCP 接入》。 diff --git a/homepage/content/12-shortcuts.md b/homepage/content/12-shortcuts.md new file mode 100644 index 0000000..1bab372 --- /dev/null +++ b/homepage/content/12-shortcuts.md @@ -0,0 +1,48 @@ +快捷键是 OpsxDB 的第一等操作方式 —— 高频动作全部可以不碰鼠标完成。 + +> Windows / Linux 上 `⌘` 对应 `Ctrl`。 + +## 全局与工作台 + +| 快捷键 | 动作 | +| --- | --- | +| `⌘ Enter` | 执行当前语句或选区(自动按语句切分) | +| `⌘ P` | 快速跳转:模糊搜索库 / 表,Enter 直达数据 | +| `⌘ T` | 新建查询 Tab | +| `⌘ W` | 关闭当前查询(有未保存改动会确认) | +| `⌘ 1–9` | 切到第 N 个查询 | +| `Ctrl Tab` | 循环切换查询 | +| `Alt ↑ / ↓` | 上一条 / 下一条语句(编辑器内) | +| `⌘ ⇧ F` | 聚焦对象树过滤框 | +| `F5` | 刷新对象树 | +| `⌘ B` | 显示 / 隐藏 AI 面板 | +| `⌘ /` | 快捷键帮助 | + +## 结果网格 + +| 快捷键 / 操作 | 动作 | +| --- | --- | +| `↑` `↓` | 上下移动选中行 | +| `PgUp` `PgDn` | 翻页移动 | +| `Home` `End` | 跳到首行 / 末行 | +| 双击单元格 / `Enter` | 进入单元格编辑 | +| `Delete` `Backspace` | 清空选中格(进入编辑) | +| `⌘ Z`(编辑中) | 撤销本格改动,恢复进入编辑前的值 | +| `Esc` | 取消编辑 / 关闭弹层与菜单 | +| `Ctrl/⌘ + C` | 复制选中单元格值(无列选中时复制整行 TSV) | +| 右键单元格 | 编辑 / 复制单元格值 / 复制行(TSV · JSON · INSERT)/ 查看全文 | +| 多格复制粘贴 | 与 Excel 互通:复制区域后直接粘贴进网格批量暂存 | +| 双击分栏分隔条 | 结果区最大化 / 还原 | + +## 对象树 + +| 操作 | 动作 | +| --- | --- | +| 双击表名 | 打开表工作台(看前 100 行) | +| 右键库 | 新建查询 / 浏览对象 / 复制 / 设为默认库 / 刷新 / 删除库 | +| 右键表 / 视图 | 查看数据 / 查看 DDL / 复制 / 清空截断 / 删除表 | +| `↑` `↓` `→` `←` `Enter` | 键盘导航(展开 / 收起 / 进入) | + +## SQL 编辑器右键 + +编辑器内右键可完成:执行选中语句、执行当前语句、查看数据、查看 DDL、剪切 / 复制 / 粘贴 / 全选 —— 系统默认菜单被替换,不再跳出「Look Up / 检查元素」。 diff --git a/server/internal/docs/content/12-mcp.md b/homepage/content/13-mcp.md similarity index 100% rename from server/internal/docs/content/12-mcp.md rename to homepage/content/13-mcp.md diff --git a/homepage/content/manifest.json b/homepage/content/manifest.json new file mode 100644 index 0000000..e911cf4 --- /dev/null +++ b/homepage/content/manifest.json @@ -0,0 +1,43 @@ +{ + "productVersion": "0.1", + "groups": [ + { + "name": "开始使用", + "pages": [ + { "file": "01-intro.md", "slug": "intro", "title": "产品介绍", "updated": "2026-09-23" }, + { "file": "02-quickstart.md", "slug": "quickstart", "title": "快速开始", "updated": "2026-09-20" }, + { "file": "03-interface.md", "slug": "interface", "title": "界面导览", "updated": "2026-09-20" } + ] + }, + { + "name": "连接与驱动", + "pages": [ + { "file": "04-connect.md", "slug": "connect", "title": "新建连接", "updated": "2026-09-20" }, + { "file": "05-drivers.md", "slug": "drivers", "title": "驱动支持", "updated": "2026-09-23" } + ] + }, + { + "name": "SQL 工作台", + "pages": [ + { "file": "06-workbench.md", "slug": "workbench", "title": "SQL 工作台", "updated": "2026-09-20" }, + { "file": "07-results.md", "slug": "results", "title": "结果与导出", "updated": "2026-09-20" }, + { "file": "08-redis.md", "slug": "redis", "title": "Redis 工作台", "updated": "2026-09-20" } + ] + }, + { + "name": "安全与 AI", + "pages": [ + { "file": "09-security.md", "slug": "security", "title": "安全设计", "updated": "2026-09-20" }, + { "file": "10-ai.md", "slug": "ai", "title": "AI 助手", "updated": "2026-09-23" }, + { "file": "13-mcp.md", "slug": "mcp", "title": "MCP 接入", "updated": "2026-10-15", "hidden": true } + ] + }, + { + "name": "参考", + "pages": [ + { "file": "11-faq.md", "slug": "faq", "title": "常见问题", "updated": "2026-09-20" }, + { "file": "12-shortcuts.md", "slug": "shortcuts", "title": "快捷键", "updated": "2026-09-23" } + ] + } + ] +} diff --git a/homepage/dist/docs/search-data.json b/homepage/dist/docs/search-data.json index 644a7fa..bdc5362 100644 --- a/homepage/dist/docs/search-data.json +++ b/homepage/dist/docs/search-data.json @@ -1 +1 @@ -[{"Slug":"intro","Title":"产品介绍","Group":"开始使用","Text":"OpsxDB 是一款 本地优先 的桌面数据库工作台,面向运维与开发:连库、写 SQL、看结果,全在本机完成。 主交付形态是可安装的桌面应用(Tauri 2),本地 Go 后端随应用自动启动;同一套界面也可用单个二进制在 Web / 内网部署。数据全部保存在本机,不经过任何第三方服务器。 功能总览 能力 说明 18 种数据库 关系型 / NoSQL / 时序·搜索 / 国产库,全部端到端验收;常用引擎原生内置 连接选择器 搜索 / 分类 / 最近 / 图标网格;粘贴连接 URL 一键填入表单;连接颜色标记区分环境 SQL 工作台 CodeMirror 编辑器、⌘/Ctrl+Enter 执行语句或选区、多 Tab、可拖分栏、格式化、执行历史 对象树 懒加载库 / 表 / 列 / 索引 / 触发器;点表名直接看前 100 行;右键管理对象 结果处理 单元格编辑回写 / 右键复制(值·行·JSON·INSERT)/ CSV·JSON·INSERT 导出 / 过滤构建器 / 分页 Redis 工作台 单机 / Sentinel / Cluster;键树浏览(SCAN 游标)、TTL、Hash/JSON 编辑、危险命令拦截 安全通道 每连接独立配置 SSL/TLS 与 SSH 隧道;后端本机监听 + 访问令牌 AI 助手 生成 / 解释 / 优化 / 修复 / 方言转换 / 样例;OpenAI 兼容协议 + SSE 流式输出 危险操作防护 DROP / TRUNCATE / 无 WHERE 的 UPDATE·DELETE 执行前确认 桌面唯一形态 桌面 GUI(Tauri 2),本地后端随应用自动拉起 支持的数据库 家族 覆盖 关系型 MySQL · MariaDB · TiDB · PostgreSQL · SQL Server · Oracle · SQLite NoSQL Redis · MongoDB 时序 / 搜索 Elasticsearch · ZooKeeper · InfluxDB 国产库 达梦 DM · OceanBase · GaussDB / openGauss · PolarDB · TDSQL · Kingbase 逐引擎的接入方式、默认端口与能力边界见《 》;全部 18 引擎均已实测验收。 为什么选 OpsxDB 数据主权 :连接配置与查询历史只存在本机;后端默认仅监听 127.0.0.1。 开箱即用 :桌面版双击即用,本地后端随应用自动拉起;官网与文档也由它内置提供。 为快设计 :点表即看数据、⌘Enter 即执行、结果三键取走(复制 / CSV / INSERT)。 轻量克制 :一个 Go 二进制 + 一份前端,内网可部署,无遥测无账号。 提示 :想马上动手?直接看下一章《快速开始》,30 秒连上第一个库。"},{"Slug":"quickstart","Title":"快速开始","Group":"开始使用","Text":"本章从零到出结果:起服务 → 建连接 → 执行第一条 SQL。 1. 启动 桌面版(主交付形态)双击 OpsxDB 应用即可,本地后端随应用自动拉起。 从源码运行(开发): 注意 :客户端只在桌面 App 里运行。 起的 是桌面 devUrl 的资产服务,不是浏览器客户端;浏览器只用于官网 与文档 (后端 直接提供)。 2. 新建连接 1. 打开应用,进入 连接选择器 ,选择数据库类型(如 MySQL); 2. 或者直接粘贴连接 URL,点「填入」自动拆解字段: 3. 点 测试 验证连通性,再点 保存并连接 。 连接配置保存在本机,密码混淆存储;后续查询只携带会话 ID,不再上送账密。 3. 第一次查询 1. 左侧对象树展开库, 点表名 直接查看前 100 行(展开表可看列结构); 2. 打开 SQL 编辑器,输入: 3. 按 ⌘/Ctrl + Enter 执行当前语句(或选中的片段); 4. 结果面板支持 复制 / 导出 CSV / 生成 INSERT ,双击单元格即复制。 4. 验证服务 5. 手边没有数据库? 本地还没有可连的库?用仓库自带的辅助脚本一键起一个(需要 Docker,一次只起一个): 各驱动的验收状态见《驱动支持》。"},{"Slug":"interface","Title":"界面导览","Group":"开始使用","Text":"OpsxDB 的界面为「高频操作」设计:从打开应用到看到数据,路径越短越好。 连接选择器 启动后的第一个界面: 搜索 :按名称快速过滤已保存的连接; 分类 :关系型 / NoSQL / 国产库 / 时序·搜索 分组浏览; 最近 :最近使用的连接排在最前; 图标网格 :按数据库类型直选,未就绪的类型会标注「未就绪」(仅可保存配置); URL 填入 :粘贴 点「填入」,字段自动拆解。 工作台布局 连接成功后进入工作台,三栏结构: 区域 内容 左侧 连接列表 + 对象树(库 → 表 → 列,懒加载) 中部 SQL 编辑器(多 Tab)+ 结果面板,可拖动分栏 右侧 AI 面板(生成 / 解释 / 优化 / 修复 / 方言 / 样例) 对象树 点 表名 :直接打开前 100 行数据; 展开 表 :查看列结构; 右键表 :打开表 / 查看 DDL / 生成 SQL(SELECT·INSERT·UPDATE·DELETE)/ 重命名 / 克隆表结构·克隆表(含数据)/ 清空 / 截断 / 删除 —— 危险项红色并二次确认; 右键库 :新建查询 / 新建表(生成 CREATE TABLE 模板到编辑器)/ 复制 / 设为默认库 / 刷新 / 删除库; Redis:按键分隔符编文件夹,点键打开类型化详情(TTL / JSON / 增删字段); 库列表懒加载,大实例也不卡。 编辑器与结果 CodeMirror 语法高亮,⌘/Ctrl+Enter 执行 当前语句或选区 (不是整页脚本); 多 Tab 并行查询,互不阻塞; 结果面板:复制 / CSV / INSERT 三种取数方式,双击单元格复制; 超过截断阈值时结果有明确提示。 个性化 深色 / 浅色主题切换; Tab 布局与主题选择持久化,下次打开保持原样; 查询历史本地留存,可回跳重跑。"},{"Slug":"connect","Title":"新建连接","Group":"连接与驱动","Text":"本章说明各数据库类型的连接表单、URL 格式与高级选项(SSL / SSH 隧道)。 通用流程 1. 连接选择器点「新建」或选某个数据库类型; 2. 填写表单(不同驱动表单不同,见下表); 3. 测试 → 通过后 保存并连接 。 支持直接粘贴 URL 自动填表: 各驱动表单 驱动 表单 特有字段 MySQL / PostgreSQL / SQL Server standard host · port · user · password · database · ssl · ssh Oracle oracle host · port · user · password · service (如 ORCL) SQLite file database 填本地文件路径(如 ) Redis redis host · port · password · database 序号 · 模式 (单机 / 哨兵 / 集群)· 键分隔符 表单只收集服务端实际消费的字段;历史遗留的死参数不会出现在表单里。 MySQL 族与 PostgreSQL 族 协议兼容的国产库无需单独驱动,直接复用家族驱动: MySQL 族 :MariaDB(3307)、TiDB(4000)、OceanBase(2881)、PolarDB / TDSQL(3306)—— 表单里选对应类型即可; PostgreSQL 族 :GaussDB / openGauss、人大金仓 Kingbase(54321)—— 走 postgres 表单,注意默认库与用户名差异。 SSL / TLS 连接表单中开启 ssl 即可;按连接独立配置,互不影响。内网自签证书场景按需放宽校验策略。 SSH 隧道 数据库在跳板机后面时,开启 ssh 字段组,填写跳板机地址与凭据:OpsxDB 会先建 SSH 隧道,再把数据库连接走隧道转发,无需把库端口暴露到公网。 Redis 哨兵与集群 哨兵 :模式选 Sentinel,填写 Sentinel 节点列表( ,多行)和主节点名 ; 集群 :模式选 Cluster,填写至少一个种子节点。对象树只显示 DB 0(Cluster 无 ); 单机模式只填 host/port,与原先一致。 字段细节与键浏览见 。 提示 :连接保存后,后续查询仅携带 ,账密不会随每次请求上送;密码在本机混淆存储。"},{"Slug":"drivers","Title":"驱动支持","Group":"连接与驱动","Text":"OpsxDB 当前支持 18 种数据库,覆盖关系型、NoSQL、时序/搜索与国产库,全部经真实实例端到端验收(ready + verified)。常用引擎以原生 Go 驱动编译内置,开箱即用;JVM 系数据库通过 Agent 桥按需接入。 完整支持矩阵 数据库 类型 接入方式 默认端口 状态 MySQL 关系型 原生内置 3306 ✅ 已验收 MariaDB 关系型 原生内置 3307 ✅ 已验收 TiDB 关系型 原生内置 4000 ✅ 已验收 PostgreSQL 关系型 原生内置 5432 ✅ 已验收 SQL Server 关系型 原生内置 1433 ✅ 已验收 Oracle 关系型 原生内置(go ora,不引入 JVM) 1521 ✅ 已验收 SQLite 关系型 原生内置(本地文件) — ✅ 已验收 MongoDB NoSQL Agent 桥(官方驱动) 27017 ✅ 已验收 Redis NoSQL 原生内置 6379 ✅ 已验收 Elasticsearch 时序/搜索 原生内置(SQL API) 9200 ✅ 已验收 ZooKeeper 时序/搜索 Agent 桥 2181 ✅ 已验收 InfluxDB 时序/搜索 原生内置(Flux) 8086 ✅ 已验收 达梦 DM 国产库 Agent 桥(JDBC) 5236 ✅ 已验收 OceanBase 国产库 原生内置(MySQL 协议族) 2881 ✅ 已验收 GaussDB / openGauss 国产库 原生内置(PG 协议族) 5432 ✅ 已验收 PolarDB 国产库 原生内置(MySQL 协议族) 3306 ✅ 已验收 TDSQL 国产库 原生内置(MySQL 协议族) 3306 ✅ 已验收 Kingbase 国产库 原生内置(PG 协议族) 54321 ✅ 已验收 协议族复用 MySQL 族(MySQL / MariaDB / TiDB / OceanBase / PolarDB / TDSQL)共用同一原生驱动,PostgreSQL 族(PostgreSQL / GaussDB / openGauss / Kingbase)同理 —— 同族引擎的连接体验与能力完全一致,仅默认端口不同。 Agent 桥驱动(按需下载) MongoDB、ZooKeeper、达梦通过 JVM Agent 桥接入: 首次使用时在 驱动管理器 按需下载对应组件,版本固定并做 sha256 校验(Gitee 主源 + GitHub 备源); 商业数据库(如达梦官方 JDBC)不代下,需自备 jar 放入驱动目录; Agent 进程随会话池化管理,崩溃自动摘除重建,应用退出级联清理。 各引擎能力边界 引擎 浏览 执行 写入 说明 关系型全家 库/表/视图/存储过程/索引/外键/触发器 SQL ✅(含结果集编辑回写) MySQL 族附执行计划 Redis 键树(SCAN 游标)/ TTL 命令编辑器 ✅ 单机 / Sentinel / Cluster 三模式;危险命令族拦截 MongoDB 库/集合 DSL ✅(增删改单文档) 官方驱动经 Agent 桥 ZooKeeper 路径树 GET / SET ✅(写动词二次确认) 经 Agent 桥 Elasticsearch 索引浏览 SQL API 只读 官方 JDBC 付费,故走原生 SQL API InfluxDB org/bucket 浏览 Flux 脚本 只读 用户=org、密码=token 说明(Oracle) :go ora 纯 Go 驱动,无需安装 Java;Apple Silicon 容器环境起 Oracle XE 会遇到 ORA 00442 属环境限制,x86 或真实实例不受影响。"},{"Slug":"workbench","Title":"SQL 工作台","Group":"SQL 工作台","Text":"SQL 工作台是日常使用率最高的界面,所有交互围绕「快」设计。 执行模型 ⌘/Ctrl + Enter :执行光标所在的 当前语句 ;有选区时执行 选区 ; 不是「整页脚本」模式 —— 多条语句互不干扰,想跑哪句把光标放哪; Redis 连接共用同一编辑器,按 行 执行命令(见 ),不另开 CLI; 执行在会话上运行,连接断开后自动提示。 多 Tab 与分栏 每个查询一个 Tab,并行执行互不阻塞; 编辑器 / 结果区可拖动分栏,长查询时编辑器不被结果挤占; Tab 与布局持久化,重开应用保持原样。 对象树联动 左侧对象树懒加载库 / 表 / 列; 点表名 = 打开表工作台 (前 100 行 + 条件过滤 + 结构分页),并回填 SELECT; 展开表看列名与类型,写 SQL 时可对照。 查询历史 本地留存最近 200 条(不上传、不同步); 相同语句自动去重置顶 —— 历史即「最近用过的不同语句」,高频查询永远在第一条; 点击条目回填编辑器;悬停出现 ▶ 按钮,回填并直接重跑; 顶部过滤框支持按语句内容或连接名搜索; 条目显示时间、连接名、行数与耗时;失败的语句红色标出。 危险 SQL 防护 执行以下语句前会弹确认框: 类型 规则 删除对象 DROP / TRUNCATE 全表更新 无 WHERE 的 UPDATE / DELETE 注意 :确认框只拦「明确危险」的模式,不替代事务与备份习惯;生产库操作请配合审批流程。 快捷键 快捷键 动作 ⌘/Ctrl + Enter 执行当前语句 / 选区 双击结果单元格 复制单元格内容 Esc 关闭弹层 / 取消确认"},{"Slug":"results","Title":"结果与导出","Group":"SQL 工作台","Text":"查询跑完只是开始,把结果带走才算完成 —— OpsxDB 给了三条最快路径。 三种取数方式 方式 用途 复制 直接进剪贴板,贴到群聊 / 文档 / 表格 CSV 导出标准 CSV 文件,Excel / Numbers 直接打开 INSERT 把结果行生成为 INSERT 语句,直接可在别的库回放 表数据工作台(关系库) 从对象树打开表后,结果区按 DBeaver / DBX 的数据编辑器组织,而不是只有一张裸网格: 工具栏 :刷新、增行、删行、提交(有主键才写回); 条件过滤 :列 + 运算符(= ≠ \u003c 包含 空…)+ 值,可加多条 AND;应用后重查,SQL 回填编辑器; 本页搜索 :不打库,只过滤当前结果; 列头 :列名 + 类型色 + 主键标记,悬停看注释。 表结构 「结构」分页签:列 / 索引 / 外键 / 触发器 / DDL。MySQL 族、PostgreSQL 族、SQLite、SQL Server、Oracle 都拉元数据;DDL 可复制或插入编辑器。 单元格操作 双击单元格 :进入编辑(有主键时写回);长文本可展开; 列头点击排序(仅当前页)。 截断提示 为保护界面与内存,超大结果集会按阈值截断展示: 结果面板顶部显示「已截断」提示与实际行数; 需要完整数据时,缩小查询范围(加 LIMIT / WHERE)或使用导出。 提示 :默认「点表名看前 100 行」就是截断策略的一部分 —— 快速浏览用 100 行,精确取数写 WHERE。 与 AI 面板联动 写不出来的查询可以直接在 AI 面板用自然语言描述(「查最近 7 天下单但未支付的用户」),生成 SQL 后放回编辑器执行,见《AI 助手》。"},{"Slug":"redis","Title":"Redis 工作台","Group":"SQL 工作台","Text":"Redis 连接使用专用表单(redis)。连上后,对象树是键空间浏览器,编辑器是 Redis 命令行 —— 和 SQL 共用同一套输入框 ,不另开 CLI 页。 为什么命令行不单独做一套 SQL 工作台已经有:多 Tab、⌘/Ctrl+Enter、查询历史、书签、危险确认、取消。Redis 命令同样是「输入 → 执行 → 结果表」。 拆成独立 CLI(终端 REPL)会让快捷键、历史、危险确认分叉,也和 Navicat 式多引擎工作台不一致。 因此: SQL Redis 输入框 同一 CodeMirror 同一 CodeMirror(占位/补全换成命令) 切分 分号语句 按行 ( 不会被分号拆开) 执行 ⌘/Ctrl+Enter 当前语句或选区 ⌘/Ctrl+Enter 当前行或选区 结果 结果表 命令结果表;从对象树打开键则进入键详情 Another Redis Desktop Manager 的独立 CLI Tab、opsxsql 的单行命令 + 输出日志,列为后续 P1,不是现在的主路径。 键空间浏览 对象树对 Redis 显示 DB0–15(Cluster 仅 0)。展开库后: SCAN 过滤 :输入 点「应用」;生产大库请带前缀,避免扫全库。最多展示 500 个键,超出提示截断。 按分隔符编文件夹 :连接表单的「键分隔符」默认 , 显示为 。文件夹显示数量;右键可「只看此前缀」「在此新建键」。 类型色点 :string 绿 / hash 蓝 / list 橙 / set 紫 / zset 青。 点键 :打开键详情(不是假 SELECT)。 键详情 对标 Another Redis Desktop Manager 的 Hash/List/Set 视图: 类型徽章、键名(回车重命名)、TTL(回车或「保存 TTL」, 永久)、刷新、导出还原命令、删除; 结构 表:Hash 为 ID / Field / Value,JSON 值自动美化;可新增字段、编辑、删除; JSON 视图:整体格式化; 表内关键字过滤。 String 可直接改值保存。 命令执行 编辑器直接写 Redis 命令: 未点名的命令走通用 ( / / / 等不必再加白名单); / / / 仍要二段确认; 在大库上会阻塞 —— 请用 。 切换逻辑库(SELECT) 是 Redis 官方的切库命令,编辑器直接支持 —— 语义与 redis cli 一致: 切换后本 Tab 的后续命令都在目标库执行 : 没有也没有 (那是 SQL 语法)—— 输入 会得到 Redis 原生报错 ,与 redis cli 行为一致; 切库只影响当前查询 Tab(多 Tab 可各连各的库),左侧对象树点开对应库可浏览键; Cluster 模式只有 DB 0, 无效。 连接参数 字段 说明 host / port 单机默认 127.0.0.1:6379 password / user ACL / requirepass database 逻辑库序号(0–15 常见;Cluster 忽略) 键分隔符 对象树文件夹分隔,默认 ssl TLS redisMode (默认)/ / redisNodes Sentinel / Cluster 节点列表, 多行或逗号分隔 masterName Sentinel 主节点名(必填) sentinelPassword Sentinel 密码(可空) Sentinel 模式选「哨兵」,填写至少一个 Sentinel 地址和 (如 )。逻辑库序号仍可用。 Cluster 模式选「集群」,填写至少一个种子节点。Cluster 不支持 多库,对象树只暴露 DB 0。槽位路由由客户端处理,键浏览走 。 环境 :Sentinel / Cluster 表单与后端已接好;真实拓扑联调见 环境缺口。"},{"Slug":"security","Title":"安全设计","Group":"安全与 AI","Text":"连生产库的工具,安全必须是默认项。OpsxDB 的安全设计围绕一句话: 数据不出你的机器。 本地优先 连接配置、查询历史、主题偏好全部保存在本机; 无账号体系、无遥测、无云端同步; 后端默认只监听 ,对外服务需要显式配置( 或 )。 凭据保护 层面 机制 存储 连接密码在本机混淆存储,不落明文 传输 连接建立后,后续查询只携带 ,账密不再每次上送 会话 会话在服务端维护,可主动关闭(连接断开即失效) 加密通道 SSL / TLS :每个连接可独立开启;数据库支持 TLS 即可启用(MySQL、PostgreSQL、SQL Server、Redis、MongoDB 均支持)。 SSH 隧道 :数据库在跳板机后时,配置 SSH 字段组,OpsxDB 先建隧道再转发数据库连接 —— 库端口不必暴露公网。 危险操作防护 DROP / TRUNCATE 执行前确认; 无 WHERE 的 UPDATE / DELETE 执行前确认; 结果集按阈值截断,避免误操作拖垮界面。 内网部署形态 单二进制 + 内置静态页(官网 / 文档 / 工作台),无外部依赖: 任意内网主机可部署; 无外联请求,可在纯内网环境运行; 升级即替换一个二进制。"},{"Slug":"ai","Title":"AI 助手","Group":"安全与 AI","Text":"AI 面板的目标:让「写不出的 SQL」和「看不懂的 SQL」不再阻塞你。 六种动作 动作 用途 生成 自然语言 → SQL(「查最近 7 天下单但未支付的用户」) 解释 把一段复杂 SQL 翻译成中文说明 优化 分析慢查询,给出索引 / 改写建议 修复 报错信息 + SQL → 修正版本 方言 MySQL ↔ PostgreSQL 等跨方言转换 样例 按表结构生成示例查询 使用方式 1. 连接库后打开右侧 AI 面板; 2. 选择动作,输入需求或粘贴 SQL(可附上对象树上下文); 3. 生成结果一键放回编辑器,⌘/Ctrl + Enter 执行。 提示 :生成的 SQL 依旧走危险语句确认流程 —— AI 产出与手写 SQL 同等对待,不放宽防护。 接入真实模型 AI 面板支持任何 OpenAI 兼容协议 的服务(OpenAI / DeepSeek / 通义 / 本地 vLLM 等),回复以 SSE 流式 逐字输出,等待模型时不再面对空白。 配置入口(二选一): 1. AI 面板右上角「 配置 」:填 Base URL、API Key、模型名,保存后可一键测试; 2. 配置文件 (权限 0600),或环境变量 。 说明 :未配置 API Key 时回落本地 stub(离线占位,内容为模板演示);AI Key 保存后服务端只回显掩码( )。 数据流向承诺 默认只发送你明确提交的内容(附当前库表结构上下文,不含连接凭据); 可完全关闭 AI 功能(顶栏隐藏面板即可,无后台请求); 使用云端模型时在界面上明确标识,生成 SQL 依旧走危险语句确认流程。"},{"Slug":"faq","Title":"常见问题","Group":"参考","Text":"产品形态 Q:能在浏览器里操作数据库吗? 不能。OpsxDB 客户端唯一形态是桌面 App(Tauri 2);浏览器只承载官网与文档(由本地后端 内置提供)。开发时的 只是桌面 devUrl 的资产服务,不是网页客户端。 Q:官网和文档部署在哪? 就内置在你运行的那个二进制里: 是官网, 是文档;无需额外部署。 Q:怎么打安装包? 产出 Tauri 安装包(DMG)并内嵌 sidecar 后端二进制。 数据与安全 Q:我的连接密码存在哪? 本机,混淆存储;查询只带会话 ID,密码不会随请求重复上送,也不会同步到云端。 Q:会上传我的 SQL 或查询结果吗? 不会。没有遥测、没有账号、没有云依赖。AI 助手为可选功能:只有你主动配置了模型服务并主动提问时,才会把当次请求(含库表结构上下文,不含连接凭据)发给你指定的服务地址。 Q:能在公司内网用吗? 能。单二进制 + 内置静态页,无外部依赖;默认只监听回环地址,对外需显式配置。 驱动相关 Q:Oracle 能用吗? 驱动代码就绪(go ora 纯 Go 实现,无需 JVM),但本机 docker 验收在 Apple Silicon 上受镜像限制未通过(ORA 00442),需 x86 环境或真库完成验收,详见《驱动支持》。 Q:达梦 / MongoDB 什么时候支持? 已列入路线:长尾库(达梦、MongoDB、ZooKeeper、ES、InfluxDB)规划 agent 按需接入,驱动分发走独立仓库并校验 sha256。 Q:MySQL 族 / PG 族的国产库怎么连? 协议兼容直接复用家族驱动:TiDB / OceanBase / PolarDB / TDSQL 选对应类型(MySQL 协议);GaussDB / Kingbase 走 PostgreSQL 表单。注意各自默认端口与用户名差异。 其他 Q:和 OpsxAPI 是什么关系? 同一团队的姊妹项目:OpsxAPI 是接口工作台,OpsxDB 是数据库工作台,共用一套 monorepo 脚手架(web + Gin + 可选 Tauri),产品面各自独立。 Q:快捷键有哪些? 核心就一个:⌘/Ctrl + Enter 执行当前语句或选区;双击结果单元格复制。完整列表见《SQL 工作台》。"},{"Slug":"shortcuts","Title":"快捷键","Group":"参考","Text":"快捷键是 OpsxDB 的第一等操作方式 —— 高频动作全部可以不碰鼠标完成。 Windows / Linux 上 对应 。 全局与工作台 快捷键 动作 执行当前语句或选区(自动按语句切分) 快速跳转:模糊搜索库 / 表,Enter 直达数据 新建查询 Tab 关闭当前查询(有未保存改动会确认) 切到第 N 个查询 循环切换查询 上一条 / 下一条语句(编辑器内) 聚焦对象树过滤框 刷新对象树 显示 / 隐藏 AI 面板 快捷键帮助 结果网格 快捷键 / 操作 动作 上下移动选中行 翻页移动 跳到首行 / 末行 双击单元格 / 进入单元格编辑 清空选中格(进入编辑) (编辑中) 撤销本格改动,恢复进入编辑前的值 取消编辑 / 关闭弹层与菜单 复制选中单元格值(无列选中时复制整行 TSV) 右键单元格 编辑 / 复制单元格值 / 复制行(TSV · JSON · INSERT)/ 查看全文 多格复制粘贴 与 Excel 互通:复制区域后直接粘贴进网格批量暂存 双击分栏分隔条 结果区最大化 / 还原 对象树 操作 动作 双击表名 打开表工作台(看前 100 行) 右键库 新建查询 / 浏览对象 / 复制 / 设为默认库 / 刷新 / 删除库 右键表 / 视图 查看数据 / 查看 DDL / 复制 / 清空截断 / 删除表 键盘导航(展开 / 收起 / 进入) SQL 编辑器右键 编辑器内右键可完成:执行选中语句、执行当前语句、查看数据、查看 DDL、剪切 / 复制 / 粘贴 / 全选 —— 系统默认菜单被替换,不再跳出「Look Up / 检查元素」。"}] \ No newline at end of file +[{"Slug":"intro","Title":"产品介绍","Group":"开始使用","Text":"OpsxDB 是一款 本地优先 的桌面数据库工作台,面向运维与开发:连库、写 SQL、看结果,全在本机完成。 主交付形态是可安装的桌面应用(Tauri 2),本地 Go 后端随应用自动启动;同一套界面也可用单个二进制在 Web / 内网部署。数据全部保存在本机,不经过任何第三方服务器。 功能总览 能力 说明 18 种数据库 关系型 / NoSQL / 时序·搜索 / 国产库,全部端到端验收;常用引擎原生内置 连接选择器 搜索 / 分类 / 最近 / 图标网格;粘贴连接 URL 一键填入表单;连接颜色标记区分环境 SQL 工作台 CodeMirror 编辑器、⌘/Ctrl+Enter 执行语句或选区、多 Tab、可拖分栏、格式化、执行历史 对象树 懒加载库 / 表 / 列 / 索引 / 触发器;点表名直接看前 100 行;右键管理对象 结果处理 单元格编辑回写 / 右键复制(值·行·JSON·INSERT)/ CSV·JSON·INSERT 导出 / 过滤构建器 / 分页 Redis 工作台 单机 / Sentinel / Cluster;键树浏览(SCAN 游标)、TTL、Hash/JSON 编辑、危险命令拦截 安全通道 每连接独立配置 SSL/TLS 与 SSH 隧道;后端本机监听 + 访问令牌 AI 助手 生成 / 解释 / 优化 / 修复 / 方言转换 / 样例;OpenAI 兼容协议 + SSE 流式输出 危险操作防护 DROP / TRUNCATE / 无 WHERE 的 UPDATE·DELETE 执行前确认 桌面唯一形态 桌面 GUI(Tauri 2),本地后端随应用自动拉起 支持的数据库 家族 覆盖 关系型 MySQL · MariaDB · TiDB · PostgreSQL · SQL Server · Oracle · SQLite NoSQL Redis · MongoDB 时序 / 搜索 Elasticsearch · ZooKeeper · InfluxDB 国产库 达梦 DM · OceanBase · GaussDB / openGauss · PolarDB · TDSQL · Kingbase 逐引擎的接入方式、默认端口与能力边界见《 》;全部 18 引擎均已实测验收。 为什么选 OpsxDB 数据主权 :连接配置与查询历史只存在本机;后端默认仅监听 127.0.0.1。 开箱即用 :桌面版双击即用,本地后端随应用自动拉起;官网与文档也由它内置提供。 为快设计 :点表即看数据、⌘Enter 即执行、结果三键取走(复制 / CSV / INSERT)。 轻量克制 :一个 Go 二进制 + 一份前端,内网可部署,无遥测无账号。 提示 :想马上动手?直接看下一章《快速开始》,30 秒连上第一个库。"},{"Slug":"quickstart","Title":"快速开始","Group":"开始使用","Text":"本章从零到出结果:起服务 → 建连接 → 执行第一条 SQL。 1. 启动 桌面版(主交付形态)双击 OpsxDB 应用即可,本地后端随应用自动拉起。 从源码运行(开发): 注意 :客户端只在桌面 App 里运行。 起的 是桌面 devUrl 的资产服务,不是浏览器客户端;浏览器只用于官网 与文档 (后端 直接提供)。 2. 新建连接 1. 打开应用,进入 连接选择器 ,选择数据库类型(如 MySQL); 2. 或者直接粘贴连接 URL,点「填入」自动拆解字段: 3. 点 测试 验证连通性,再点 保存并连接 。 连接配置保存在本机,密码混淆存储;后续查询只携带会话 ID,不再上送账密。 3. 第一次查询 1. 左侧对象树展开库, 点表名 直接查看前 100 行(展开表可看列结构); 2. 打开 SQL 编辑器,输入: 3. 按 ⌘/Ctrl + Enter 执行当前语句(或选中的片段); 4. 结果面板支持 复制 / 导出 CSV / 生成 INSERT ,双击单元格即复制。 4. 验证服务 5. 手边没有数据库? 本地还没有可连的库?用仓库自带的辅助脚本一键起一个(需要 Docker,一次只起一个): 各驱动的验收状态见《驱动支持》。"},{"Slug":"interface","Title":"界面导览","Group":"开始使用","Text":"OpsxDB 的界面为「高频操作」设计:从打开应用到看到数据,路径越短越好。 连接选择器 启动后的第一个界面: 搜索 :按名称快速过滤已保存的连接; 分类 :关系型 / NoSQL / 国产库 / 时序·搜索 分组浏览; 最近 :最近使用的连接排在最前; 图标网格 :按数据库类型直选,未就绪的类型会标注「未就绪」(仅可保存配置); URL 填入 :粘贴 点「填入」,字段自动拆解。 工作台布局 连接成功后进入工作台,三栏结构: 区域 内容 左侧 连接列表 + 对象树(库 → 表 → 列,懒加载) 中部 SQL 编辑器(多 Tab)+ 结果面板,可拖动分栏 右侧 AI 面板(生成 / 解释 / 优化 / 修复 / 方言 / 样例) 对象树 点 表名 :直接打开前 100 行数据; 展开 表 :查看列结构; 右键表 :打开表 / 查看 DDL / 生成 SQL(SELECT·INSERT·UPDATE·DELETE)/ 重命名 / 克隆表结构·克隆表(含数据)/ 清空 / 截断 / 删除 —— 危险项红色并二次确认; 右键库 :新建查询 / 新建表(生成 CREATE TABLE 模板到编辑器)/ 复制 / 设为默认库 / 刷新 / 删除库; Redis:按键分隔符编文件夹,点键打开类型化详情(TTL / JSON / 增删字段); 库列表懒加载,大实例也不卡。 编辑器与结果 CodeMirror 语法高亮,⌘/Ctrl+Enter 执行 当前语句或选区 (不是整页脚本); 多 Tab 并行查询,互不阻塞; 结果面板:复制 / CSV / INSERT 三种取数方式,双击单元格复制; 超过截断阈值时结果有明确提示。 个性化 深色 / 浅色主题切换; Tab 布局与主题选择持久化,下次打开保持原样; 查询历史本地留存,可回跳重跑。"},{"Slug":"connect","Title":"新建连接","Group":"连接与驱动","Text":"本章说明各数据库类型的连接表单、URL 格式与高级选项(SSL / SSH 隧道)。 通用流程 1. 连接选择器点「新建」或选某个数据库类型; 2. 填写表单(不同驱动表单不同,见下表); 3. 测试 → 通过后 保存并连接 。 支持直接粘贴 URL 自动填表: 各驱动表单 驱动 表单 特有字段 MySQL / PostgreSQL / SQL Server standard host · port · user · password · database · ssl · ssh Oracle oracle host · port · user · password · service (如 ORCL) SQLite file database 填本地文件路径(如 ) Redis redis host · port · password · database 序号 · 模式 (单机 / 哨兵 / 集群)· 键分隔符 表单只收集服务端实际消费的字段;历史遗留的死参数不会出现在表单里。 MySQL 族与 PostgreSQL 族 协议兼容的国产库无需单独驱动,直接复用家族驱动: MySQL 族 :MariaDB(3307)、TiDB(4000)、OceanBase(2881)、PolarDB / TDSQL(3306)—— 表单里选对应类型即可; PostgreSQL 族 :GaussDB / openGauss、人大金仓 Kingbase(54321)—— 走 postgres 表单,注意默认库与用户名差异。 SSL / TLS 连接表单中开启 ssl 即可;按连接独立配置,互不影响。内网自签证书场景按需放宽校验策略。 SSH 隧道 数据库在跳板机后面时,开启 ssh 字段组,填写跳板机地址与凭据:OpsxDB 会先建 SSH 隧道,再把数据库连接走隧道转发,无需把库端口暴露到公网。 Redis 哨兵与集群 哨兵 :模式选 Sentinel,填写 Sentinel 节点列表( ,多行)和主节点名 ; 集群 :模式选 Cluster,填写至少一个种子节点。对象树只显示 DB 0(Cluster 无 ); 单机模式只填 host/port,与原先一致。 字段细节与键浏览见 。 提示 :连接保存后,后续查询仅携带 ,账密不会随每次请求上送;密码在本机混淆存储。"},{"Slug":"drivers","Title":"驱动支持","Group":"连接与驱动","Text":"OpsxDB 当前支持 18 种数据库,覆盖关系型、NoSQL、时序/搜索与国产库,全部经真实实例端到端验收(ready + verified)。常用引擎以原生 Go 驱动编译内置,开箱即用;JVM 系数据库通过 Agent 桥按需接入。 完整支持矩阵 数据库 类型 接入方式 默认端口 状态 MySQL 关系型 原生内置 3306 ✅ 已验收 MariaDB 关系型 原生内置 3307 ✅ 已验收 TiDB 关系型 原生内置 4000 ✅ 已验收 PostgreSQL 关系型 原生内置 5432 ✅ 已验收 SQL Server 关系型 原生内置 1433 ✅ 已验收 Oracle 关系型 原生内置(go ora,不引入 JVM) 1521 ✅ 已验收 SQLite 关系型 原生内置(本地文件) — ✅ 已验收 MongoDB NoSQL Agent 桥(官方驱动) 27017 ✅ 已验收 Redis NoSQL 原生内置 6379 ✅ 已验收 Elasticsearch 时序/搜索 原生内置(SQL API) 9200 ✅ 已验收 ZooKeeper 时序/搜索 Agent 桥 2181 ✅ 已验收 InfluxDB 时序/搜索 原生内置(Flux) 8086 ✅ 已验收 达梦 DM 国产库 Agent 桥(JDBC) 5236 ✅ 已验收 OceanBase 国产库 原生内置(MySQL 协议族) 2881 ✅ 已验收 GaussDB / openGauss 国产库 原生内置(PG 协议族) 5432 ✅ 已验收 PolarDB 国产库 原生内置(MySQL 协议族) 3306 ✅ 已验收 TDSQL 国产库 原生内置(MySQL 协议族) 3306 ✅ 已验收 Kingbase 国产库 原生内置(PG 协议族) 54321 ✅ 已验收 协议族复用 MySQL 族(MySQL / MariaDB / TiDB / OceanBase / PolarDB / TDSQL)共用同一原生驱动,PostgreSQL 族(PostgreSQL / GaussDB / openGauss / Kingbase)同理 —— 同族引擎的连接体验与能力完全一致,仅默认端口不同。 Agent 桥驱动(按需下载) MongoDB、ZooKeeper、达梦通过 JVM Agent 桥接入: 首次使用时在 驱动管理器 按需下载对应组件,版本固定并做 sha256 校验(Gitee 主源 + GitHub 备源); 商业数据库(如达梦官方 JDBC)不代下,需自备 jar 放入驱动目录; Agent 进程随会话池化管理,崩溃自动摘除重建,应用退出级联清理。 各引擎能力边界 引擎 浏览 执行 写入 说明 关系型全家 库/表/视图/存储过程/索引/外键/触发器 SQL ✅(含结果集编辑回写) MySQL 族附执行计划 Redis 键树(SCAN 游标)/ TTL 命令编辑器 ✅ 单机 / Sentinel / Cluster 三模式;危险命令族拦截 MongoDB 库/集合 DSL ✅(增删改单文档) 官方驱动经 Agent 桥 ZooKeeper 路径树 GET / SET ✅(写动词二次确认) 经 Agent 桥 Elasticsearch 索引浏览 SQL API 只读 官方 JDBC 付费,故走原生 SQL API InfluxDB org/bucket 浏览 Flux 脚本 只读 用户=org、密码=token 说明(Oracle) :go ora 纯 Go 驱动,无需安装 Java;Apple Silicon 容器环境起 Oracle XE 会遇到 ORA 00442 属环境限制,x86 或真实实例不受影响。"},{"Slug":"workbench","Title":"SQL 工作台","Group":"SQL 工作台","Text":"SQL 工作台是日常使用率最高的界面,所有交互围绕「快」设计。 执行模型 ⌘/Ctrl + Enter :执行光标所在的 当前语句 ;有选区时执行 选区 ; 不是「整页脚本」模式 —— 多条语句互不干扰,想跑哪句把光标放哪; Redis 连接共用同一编辑器,按 行 执行命令(见 ),不另开 CLI; 执行在会话上运行,连接断开后自动提示。 多 Tab 与分栏 每个查询一个 Tab,并行执行互不阻塞; 编辑器 / 结果区可拖动分栏,长查询时编辑器不被结果挤占; Tab 与布局持久化,重开应用保持原样。 对象树联动 左侧对象树懒加载库 / 表 / 列; 点表名 = 打开表工作台 (前 100 行 + 条件过滤 + 结构分页),并回填 SELECT; 展开表看列名与类型,写 SQL 时可对照。 查询历史 本地留存最近 200 条(不上传、不同步); 相同语句自动去重置顶 —— 历史即「最近用过的不同语句」,高频查询永远在第一条; 点击条目回填编辑器;悬停出现 ▶ 按钮,回填并直接重跑; 顶部过滤框支持按语句内容或连接名搜索; 条目显示时间、连接名、行数与耗时;失败的语句红色标出。 危险 SQL 防护 执行以下语句前会弹确认框: 类型 规则 删除对象 DROP / TRUNCATE 全表更新 无 WHERE 的 UPDATE / DELETE 注意 :确认框只拦「明确危险」的模式,不替代事务与备份习惯;生产库操作请配合审批流程。 快捷键 快捷键 动作 ⌘/Ctrl + Enter 执行当前语句 / 选区 双击结果单元格 复制单元格内容 Esc 关闭弹层 / 取消确认"},{"Slug":"results","Title":"结果与导出","Group":"SQL 工作台","Text":"查询跑完只是开始,把结果带走才算完成 —— OpsxDB 给了三条最快路径。 三种取数方式 方式 用途 复制 直接进剪贴板,贴到群聊 / 文档 / 表格 CSV 导出标准 CSV 文件,Excel / Numbers 直接打开 INSERT 把结果行生成为 INSERT 语句,直接可在别的库回放 表数据工作台(关系库) 从对象树打开表后,结果区按 DBeaver / DBX 的数据编辑器组织,而不是只有一张裸网格: 工具栏 :刷新、增行、删行、提交(有主键才写回); 条件过滤 :列 + 运算符(= ≠ \u003c 包含 空…)+ 值,可加多条 AND;应用后重查,SQL 回填编辑器; 本页搜索 :不打库,只过滤当前结果; 列头 :列名 + 类型色 + 主键标记,悬停看注释。 表结构 「结构」分页签:列 / 索引 / 外键 / 触发器 / DDL。MySQL 族、PostgreSQL 族、SQLite、SQL Server、Oracle 都拉元数据;DDL 可复制或插入编辑器。 单元格操作 双击单元格 :进入编辑(有主键时写回);长文本可展开; 列头点击排序(仅当前页)。 截断提示 为保护界面与内存,超大结果集会按阈值截断展示: 结果面板顶部显示「已截断」提示与实际行数; 需要完整数据时,缩小查询范围(加 LIMIT / WHERE)或使用导出。 提示 :默认「点表名看前 100 行」就是截断策略的一部分 —— 快速浏览用 100 行,精确取数写 WHERE。 与 AI 面板联动 写不出来的查询可以直接在 AI 面板用自然语言描述(「查最近 7 天下单但未支付的用户」),生成 SQL 后放回编辑器执行,见《AI 助手》。"},{"Slug":"redis","Title":"Redis 工作台","Group":"SQL 工作台","Text":"Redis 连接使用专用表单(redis)。连上后,对象树是键空间浏览器,编辑器是 Redis 命令行 —— 和 SQL 共用同一套输入框 ,不另开 CLI 页。 为什么命令行不单独做一套 SQL 工作台已经有:多 Tab、⌘/Ctrl+Enter、查询历史、书签、危险确认、取消。Redis 命令同样是「输入 → 执行 → 结果表」。 拆成独立 CLI(终端 REPL)会让快捷键、历史、危险确认分叉,也和 Navicat 式多引擎工作台不一致。 因此: SQL Redis 输入框 同一 CodeMirror 同一 CodeMirror(占位/补全换成命令) 切分 分号语句 按行 ( 不会被分号拆开) 执行 ⌘/Ctrl+Enter 当前语句或选区 ⌘/Ctrl+Enter 当前行或选区 结果 结果表 命令结果表;从对象树打开键则进入键详情 Another Redis Desktop Manager 的独立 CLI Tab、opsxsql 的单行命令 + 输出日志,列为后续 P1,不是现在的主路径。 键空间浏览 对象树对 Redis 显示 DB0–15(Cluster 仅 0)。展开库后: SCAN 过滤 :输入 点「应用」;生产大库请带前缀,避免扫全库。最多展示 500 个键,超出提示截断。 按分隔符编文件夹 :连接表单的「键分隔符」默认 , 显示为 。文件夹显示数量;右键可「只看此前缀」「在此新建键」。 类型色点 :string 绿 / hash 蓝 / list 橙 / set 紫 / zset 青。 点键 :打开键详情(不是假 SELECT)。 键详情 对标 Another Redis Desktop Manager 的 Hash/List/Set 视图: 类型徽章、键名(回车重命名)、TTL(回车或「保存 TTL」, 永久)、刷新、导出还原命令、删除; 结构 表:Hash 为 ID / Field / Value,JSON 值自动美化;可新增字段、编辑、删除; JSON 视图:整体格式化; 表内关键字过滤。 String 可直接改值保存。 命令执行 编辑器直接写 Redis 命令: 未点名的命令走通用 ( / / / 等不必再加白名单); / / / 仍要二段确认; 在大库上会阻塞 —— 请用 。 切换逻辑库(SELECT) 是 Redis 官方的切库命令,编辑器直接支持 —— 语义与 redis cli 一致: 切换后本 Tab 的后续命令都在目标库执行 : 没有也没有 (那是 SQL 语法)—— 输入 会得到 Redis 原生报错 ,与 redis cli 行为一致; 切库只影响当前查询 Tab(多 Tab 可各连各的库),左侧对象树点开对应库可浏览键; Cluster 模式只有 DB 0, 无效。 连接参数 字段 说明 host / port 单机默认 127.0.0.1:6379 password / user ACL / requirepass database 逻辑库序号(0–15 常见;Cluster 忽略) 键分隔符 对象树文件夹分隔,默认 ssl TLS redisMode (默认)/ / redisNodes Sentinel / Cluster 节点列表, 多行或逗号分隔 masterName Sentinel 主节点名(必填) sentinelPassword Sentinel 密码(可空) Sentinel 模式选「哨兵」,填写至少一个 Sentinel 地址和 (如 )。逻辑库序号仍可用。 Cluster 模式选「集群」,填写至少一个种子节点。Cluster 不支持 多库,对象树只暴露 DB 0。槽位路由由客户端处理,键浏览走 。 环境 :Sentinel / Cluster 表单与后端已接好;真实拓扑联调见 环境缺口。"},{"Slug":"security","Title":"安全设计","Group":"安全与 AI","Text":"连生产库的工具,安全必须是默认项。OpsxDB 的安全设计围绕一句话: 数据不出你的机器。 本地优先 连接配置、查询历史、主题偏好全部保存在本机; 无账号体系、无遥测、无云端同步; 后端默认只监听 ,对外服务需要显式配置( 或 )。 凭据保护 层面 机制 存储 连接密码在本机混淆存储,不落明文 传输 连接建立后,后续查询只携带 ,账密不再每次上送 会话 会话在服务端维护,可主动关闭(连接断开即失效) 加密通道 SSL / TLS :每个连接可独立开启;数据库支持 TLS 即可启用(MySQL、PostgreSQL、SQL Server、Redis、MongoDB 均支持)。 SSH 隧道 :数据库在跳板机后时,配置 SSH 字段组,OpsxDB 先建隧道再转发数据库连接 —— 库端口不必暴露公网。 危险操作防护 DROP / TRUNCATE 执行前确认; 无 WHERE 的 UPDATE / DELETE 执行前确认; 结果集按阈值截断,避免误操作拖垮界面。 内网部署形态 单二进制 + 内置静态页(官网 / 文档 / 工作台),无外部依赖: 任意内网主机可部署; 无外联请求,可在纯内网环境运行; 升级即替换一个二进制。"},{"Slug":"ai","Title":"AI 助手","Group":"安全与 AI","Text":"AI 面板的目标:让「写不出的 SQL」和「看不懂的 SQL」不再阻塞你。 侧栏支持 Ask Agent :Ask 只生成 SQL;Agent 调用与 MCP 同源的只读工具真查库。外部编辑器可用 接入(见应用内《AI 助手》文档)。 六种动作 动作 用途 生成 自然语言 → SQL(「查最近 7 天下单但未支付的用户」) 解释 把一段复杂 SQL 翻译成中文说明 优化 分析慢查询,给出索引 / 改写建议 修复 报错信息 + SQL → 修正版本 方言 MySQL ↔ PostgreSQL 等跨方言转换 样例 按表结构生成示例查询 使用方式 1. 连接库后打开右侧 AI 面板; 2. 选择动作,输入需求或粘贴 SQL(可附上对象树上下文); 3. 生成结果一键放回编辑器,⌘/Ctrl + Enter 执行。 提示 :生成的 SQL 依旧走危险语句确认流程 —— AI 产出与手写 SQL 同等对待,不放宽防护。 接入真实模型 AI 面板支持任何 OpenAI 兼容协议 的服务(OpenAI / DeepSeek / 通义 / 本地 vLLM 等),回复以 SSE 流式 逐字输出,等待模型时不再面对空白。 配置入口(二选一): 1. AI 面板右上角「 配置 」:填 Base URL、API Key、模型名,保存后可一键测试; 2. 配置文件 (权限 0600),或环境变量 。 说明 :未配置 API Key 时回落本地 stub(离线占位,内容为模板演示);AI Key 保存后服务端只回显掩码( )。 数据流向承诺 默认只发送你明确提交的内容(附当前库表结构上下文,不含连接凭据); 可完全关闭 AI 功能(顶栏隐藏面板即可,无后台请求); 使用云端模型时在界面上明确标识,生成 SQL 依旧走危险语句确认流程。"},{"Slug":"faq","Title":"常见问题","Group":"参考","Text":"产品形态 Q:能在浏览器里操作数据库吗? 不能。OpsxDB 客户端唯一形态是桌面 App(Tauri 2);浏览器只承载官网与文档(由本地后端 内置提供)。开发时的 只是桌面 devUrl 的资产服务,不是网页客户端。 Q:官网和文档部署在哪? 就内置在你运行的那个二进制里: 是官网, 是文档;无需额外部署。 Q:怎么打安装包? 产出 Tauri 安装包(DMG)并内嵌 sidecar 后端二进制。 数据与安全 Q:我的连接密码存在哪? 本机,混淆存储;查询只带会话 ID,密码不会随请求重复上送,也不会同步到云端。 Q:会上传我的 SQL 或查询结果吗? 不会。没有遥测、没有账号、没有云依赖。AI 助手为可选功能:只有你主动配置了模型服务并主动提问时,才会把当次请求(含库表结构上下文,不含连接凭据)发给你指定的服务地址。 Q:能在公司内网用吗? 能。单二进制 + 内置静态页,无外部依赖;默认只监听回环地址,对外需显式配置。 驱动相关 Q:Oracle 能用吗? 驱动代码就绪(go ora 纯 Go 实现,无需 JVM),但本机 docker 验收在 Apple Silicon 上受镜像限制未通过(ORA 00442),需 x86 环境或真库完成验收,详见《驱动支持》。 Q:达梦 / MongoDB 什么时候支持? 已列入路线:长尾库(达梦、MongoDB、ZooKeeper、ES、InfluxDB)规划 agent 按需接入,驱动分发走独立仓库并校验 sha256。 Q:MySQL 族 / PG 族的国产库怎么连? 协议兼容直接复用家族驱动:TiDB / OceanBase / PolarDB / TDSQL 选对应类型(MySQL 协议);GaussDB / Kingbase 走 PostgreSQL 表单。注意各自默认端口与用户名差异。 其他 Q:和 OpsxAPI 是什么关系? 同一团队的姊妹项目:OpsxAPI 是接口工作台,OpsxDB 是数据库工作台,共用一套 monorepo 脚手架(web + Gin + 可选 Tauri),产品面各自独立。 Q:快捷键有哪些? 核心就一个:⌘/Ctrl + Enter 执行当前语句或选区;双击结果单元格复制。完整列表见《SQL 工作台》。"},{"Slug":"shortcuts","Title":"快捷键","Group":"参考","Text":"快捷键是 OpsxDB 的第一等操作方式 —— 高频动作全部可以不碰鼠标完成。 Windows / Linux 上 对应 。 全局与工作台 快捷键 动作 执行当前语句或选区(自动按语句切分) 快速跳转:模糊搜索库 / 表,Enter 直达数据 新建查询 Tab 关闭当前查询(有未保存改动会确认) 切到第 N 个查询 循环切换查询 上一条 / 下一条语句(编辑器内) 聚焦对象树过滤框 刷新对象树 显示 / 隐藏 AI 面板 快捷键帮助 结果网格 快捷键 / 操作 动作 上下移动选中行 翻页移动 跳到首行 / 末行 双击单元格 / 进入单元格编辑 清空选中格(进入编辑) (编辑中) 撤销本格改动,恢复进入编辑前的值 取消编辑 / 关闭弹层与菜单 复制选中单元格值(无列选中时复制整行 TSV) 右键单元格 编辑 / 复制单元格值 / 复制行(TSV · JSON · INSERT)/ 查看全文 多格复制粘贴 与 Excel 互通:复制区域后直接粘贴进网格批量暂存 双击分栏分隔条 结果区最大化 / 还原 对象树 操作 动作 双击表名 打开表工作台(看前 100 行) 右键库 新建查询 / 浏览对象 / 复制 / 设为默认库 / 刷新 / 删除库 右键表 / 视图 查看数据 / 查看 DDL / 复制 / 清空截断 / 删除表 键盘导航(展开 / 收起 / 进入) SQL 编辑器右键 编辑器内右键可完成:执行选中语句、执行当前语句、查看数据、查看 DDL、剪切 / 复制 / 粘贴 / 全选 —— 系统默认菜单被替换,不再跳出「Look Up / 检查元素」。"}] \ No newline at end of file diff --git a/server/internal/site/template.html b/homepage/dist/home/index.html similarity index 90% rename from server/internal/site/template.html rename to homepage/dist/home/index.html index 997126e..7d8ca2c 100644 --- a/server/internal/site/template.html +++ b/homepage/dist/home/index.html @@ -35,6 +35,8 @@ 功能 驱动 安全 + 定价 + 授权 下载 文档 @@ -52,7 +54,7 @@

一个窗口,
管好全公司的数据库

连库、写 SQL、看结果,全在本机完成。
- MySQL / PostgreSQL / SQL Server / Oracle / SQLite / Redis 内置驱动, + MySQL / PostgreSQL / SQL Server / Oracle / SQLite / Redis 内置驱动,TiDB · OceanBase · GaussDB · 人大金仓同协议直连, SSH 隧道与 SSL 加密直达内网库,AI 帮你把 SQL 写得又快又稳。

@@ -151,35 +153,11 @@

结果随手取

结果集一键复制 / 导出 CSV / 生成 INSERT;双击单元格即复制,截断行数有提示。

对象树与表数据

懒加载库 / 表 / 列;点表名直接看前 100 行,展开表即看列结构。

Redis 工作台

编辑器直接执行 PING / GET / SET / KEYS,键空间浏览、TTL 管理。

-

AI / MCP

Ask 写 SQL;Agent 操作授权连接,写入前逐次确认。设置 → MCP 复制 Cursor / Claude 配置。

+

AI / MCP

Ask 写 SQL;Agent 真查白名单库。可用 npx @rlwj-lab/opsxdb-mcp 接到 Cursor(默认只读)。

- - -
-
-

AI / MCP:桌面连库,助手真查库

-

MCP-first:Cursor、Claude Code 与侧栏 Agent 共用同一套只读工具与安全策略。

-
-
-

本地优先

-

连接与策略在本机 ~/.opsxdb;查询不经公网中转。默认 只读,写操作需显式开启并确认。

-
-
-

一键接入

-

npm i -g @rlwj-lab/opsxdb-mcp,在设置 → MCP 复制客户端片段。详见 MCP 接入文档。

-
-
-

Ask | Agent

-

Ask 只生成 SQL;Agent 多轮调工具查白名单库,步骤时间线可流式展示,结果可插入编辑器或结果区。

-
-
-

安全边界:连接白名单、危险 SQL 拦截、审计日志。可写为可选能力,见文档说明。

-
-
-
@@ -271,11 +249,9 @@
我的连接密码保存在哪?安全吗?

全部保存在本机(混淆存储),查询时只携带会话 ID,密码不会随每次请求上送,也不会同步到任何云端。

能在浏览器里操作数据库吗?

不能。客户端唯一形态是桌面应用(Tauri 2);浏览器只承载官网与文档,由后端 :8788 内置提供。开发时的 :5174 只是桌面 devUrl 的资产服务。

-
OpsxDB 适合哪些场景?

OpsxDB 面向运维与开发的日常高频操作(连库、点表、写 SQL、取结果),界面密度和快捷键为「快」设计;本地优先、后端随桌面应用拉起、内置中文文档。重度管理功能(ER 图、数据比对等)在路线图中。

+
和 DBeaver / Navicat 有什么差别?

OpsxDB 面向运维与开发的日常高频操作(连库、点表、写 SQL、取结果),界面密度和快捷键为「快」设计;本地优先、后端随桌面应用拉起、内置中文文档。重度管理功能(ER 图、数据比对等)在路线图中。

Oracle 支持好了吗?

驱动代码已就绪(纯 Go 的 go-ora,无需 JVM),但本机 docker 验收在 Apple Silicon 上受镜像限制未通过,需 x86 环境或真库完成验收,详见文档《驱动支持》。

-
AI 功能需要联网吗?

配置云端模型(如 DeepSeek)时,提问与结构上下文会发往该服务;可改用本地兼容端点。MCP / Agent 查库在本机执行;Agent 写入前需确认具体命令。

-
如何把 Cursor / Claude 接到 OpsxDB?

安装 @rlwj-lab/opsxdb-mcp 并构建 Go 二进制,在桌面 设置 → MCP 勾选连接白名单、复制对应客户端配置。完整步骤见 MCP 接入。

- +
AI 功能需要联网吗?

配置云端模型(如 DeepSeek)时,提问与结构上下文会发往该服务;可改用本地兼容端点。MCP / Agent 查库始终在本机执行,默认只读。

支持达梦 / MongoDB 吗?

已列入路线:常用库 native 内置,长尾库(达梦、MongoDB、ZooKeeper、ES、InfluxDB)规划 agent 按需接入,驱动分发走独立仓库并校验 sha256。

@@ -308,8 +284,9 @@

资源

+ 定价 + 授权与激活 用户文档 - MCP 接入 驱动验收状态 常见问题
@@ -320,7 +297,7 @@ 快速开始 - + diff --git a/homepage/dist/index.html b/homepage/dist/index.html index 56ec621..7d8ca2c 100644 --- a/homepage/dist/index.html +++ b/homepage/dist/index.html @@ -36,7 +36,8 @@ 驱动 安全 定价 - 下载 + 授权 + 下载 文档

资源

+ 定价 + 授权与激活 用户文档 驱动验收状态 常见问题 @@ -294,7 +297,7 @@ 快速开始
- + diff --git a/homepage/dist/license.html b/homepage/dist/license.html new file mode 100644 index 0000000..9f4198c --- /dev/null +++ b/homepage/dist/license.html @@ -0,0 +1,212 @@ + + + + + +授权与激活 · OpsxDB + + + + + + + + +
+
+ 30 天免费试用 · 首次启动自动开始 · 无需注册 +

授权与激活

+

一次说清四件事:怎么买、授权码怎么交付、程序里怎么激活、换机与断网怎么办。授权绑定设备而非账号,全流程不需要注册。

+
+ +
+
+

交付与激活:四步

+

从下单到激活通常当天完成,最短几分钟。

+
+
+ STEP 1 +

下单确认

+

邮件说明产品、授权类型(包年 / 永久 / 团队席位)与设备数量。支持对公转账与开具发票,工作日当天回复。

+
+
+ STEP 2 +

邮件交付授权码

+

付款确认后即刻签发,授权码以邮件送达你的邮箱:联网用 LIC- 前缀的在线授权码,隔离内网用 LICOFF- 前缀的离线许可证。

+
+
+ STEP 3 +

应用内激活

+

打开「设置 → 授权」,粘贴授权码点击激活。程序连接授权服务器 licence.rlwj.cn 登记本机设备并回写一次性激活令牌,此后每 7 天自动校验一次。

+
+
+ STEP 4 +

换机与续期

+

在本机自助解绑即可把席位迁到新机器,每年免费换绑 2 次;到期前 30 天邮件提醒,续期后签发新授权码替换即可。

+
+
+
+
+ +
+
+

两种激活方式

+

能联网就用在线授权码,完全不出网就用离线许可证——功能与有效期一致。

+
+ + + + + + + + + + + + +
对比项在线授权码 LIC-离线许可证 LICOFF-
是否联网激活时联网一次,之后每 7 天校验一次全程无需联网,本地验签
设备绑定绑定设备 ID,一机一码绑定设备 ID,一机一码
断网可用激活后可连续离线使用 30 天始终有效,与网络无关
有效期包年 365 天;永久授权长期有效单张最长 365 天,可续签
换绑应用内自助解绑,每年免费换绑 2 次邮件换取新证并解绑旧设备
适合场景办公网、开发机、云主机生产内网、专有云、隔离环境
+
+
+

授权服务器会收到什么?客户端只与 licence.rlwj.cn(443)通信,用于设备登记与周期校验,只发送授权码与设备标识(设备 ID、设备名称)——不发送连接串、库表名、SQL 语句与查询结果等任何业务数据。服务端返回 Ed25519 签名,客户端本地验签,验签失败按未授权处理。

+
    +
  • 内网只放行白名单出网:把 licence.rlwj.cn 加入白名单,或直接使用离线许可证。
  • +
  • 授权服务器不可达:按宽限期继续可用,业务不会当场中断;恢复网络后自动补校验。
  • +
  • 不想让客户端出网:一律选离线许可证,客户端永不发起网络请求。
  • +
+
+
+
+ +
+
+

授权类型与价格

+

个人非商业用途免费;工作中的商业用途需要授权。

+
+ + + + + + + + + + + +
授权价格设备数包含
个人 · 非商业¥0不涉及授权日常连库、写 SQL、看结果;商业用途需购买授权
专业版 · 包年¥99 / 年3 台全部内置驱动(含国产库)、SQL 执行与导出转储、SSH 隧道与 SSL、AI SQL 助手、设备自助解绑
专业版 · 永久¥199 一次性5 台包年全部能力,一次买断、无续费
团队版¥99 / 人 / 年按席位,5 席起个人版全部能力 + 共享连接库(自托管)、驱动离线包分发、优先支持
企业私有化¥6,000 / 年(标价)单法人不限席位内网部署、数据不出企业、远程部署协助、定制开发通道
+
+

完整功能对比、让利与组合报价见 定价页。表中为标价,成交可按规模与场景议价。

+
+
+ +
+
+

授权常见问题

+
+
授权码多久能收到?

付款确认后即刻签发并邮件发出,工作日通常当天完成(含开票需求)。邮件里就是完整授权码,无需注册账号或登录任何后台。

+
授权绑定设备还是账号?

绑定设备。每台机器有唯一设备 ID,一个授权码按授权的设备数占座,与账号无关;团队版按席位签发多个授权码,组织内可转移。

+
换电脑 / 重装系统后设备 ID 变了怎么办?

旧机还在:在「设置 → 授权」点解绑,腾出席位后在新机激活。旧机已不在手:邮件与我们说明(附授权码后四位与新设备 ID),由我们在授权后台释放旧设备。每年免费换绑 2 次。

+
断网了授权会失效吗?

不会。离线许可证本地自验,永不联网也有效;在线授权码激活后可连续离线使用 30 天,超时后联网校验一次即可继续。授权服务器不可达时按宽限期放行,不会打断正在执行的查询。

+
生产内网完全不出网,怎么激活?

改用离线许可证(LICOFF-):在应用内导出本机机器码,邮件发我们换取离线证,本地导入即完成激活,全程不需要客户端联网——数据库连接与查询本来就在本机完成。

+
续期怎么操作?

到期前 30 天我们会邮件提醒。付款后签发新的授权码,在「设置 → 授权」里替换旧码即可,同一台设备无需先解绑;永久授权无需续期。

+
试用期结束后我的连接配置和数据还在吗?

都在。授权只控制专业功能是否可用,本机连接配置、查询历史与 ~/.opsxdb 下的数据不做任何改动;试用结束后个人非商业用途可继续使用,购买授权后专业功能立即恢复。

+
激活失败怎么排查?

先在「设置 → 授权」看当前状态与到期时间。若提示无效或不匹配,请把授权码后四位、设备 ID 与报错截图一并发邮件,我们核对授权服务器上的记录后处理(常见原因是设备数已占满或授权码输漏字符)。

+
能开发票、走对公转账吗?

可以。个人与企业均可开具发票,支持对公转账、多产品捆绑与批量授权;邮件说明抬头与税号即可。

+
三个产品(OpsxDB / OpsxAPI / OpsXShell)要分别买吗?

三个产品独立授权、独立计价;它们共用同一套授权体系(同一个设备 ID 规则与同一个授权服务器)。多产品组合、团队或教育用途可邮件说明需求,给捆绑价。

+
+

本页更新于 2026-10-16,授权口径与授权服务器 licence.rlwj.cn 实际配置一致。

+
+
+ +
+
+

准备好购买授权

+

邮件说明产品、授权类型与设备数,当天回复并开票。

+ +

付款后当场发放授权码(LIC-),粘贴到「设置 → 授权」即完成激活——整个流程无需注册账号。

+
+
+
+ + + + diff --git a/homepage/dist/license/index.html b/homepage/dist/license/index.html new file mode 100644 index 0000000..9f4198c --- /dev/null +++ b/homepage/dist/license/index.html @@ -0,0 +1,212 @@ + + + + + +授权与激活 · OpsxDB + + + + + + + + +
+
+ 30 天免费试用 · 首次启动自动开始 · 无需注册 +

授权与激活

+

一次说清四件事:怎么买、授权码怎么交付、程序里怎么激活、换机与断网怎么办。授权绑定设备而非账号,全流程不需要注册。

+
+ +
+
+

交付与激活:四步

+

从下单到激活通常当天完成,最短几分钟。

+
+
+ STEP 1 +

下单确认

+

邮件说明产品、授权类型(包年 / 永久 / 团队席位)与设备数量。支持对公转账与开具发票,工作日当天回复。

+
+
+ STEP 2 +

邮件交付授权码

+

付款确认后即刻签发,授权码以邮件送达你的邮箱:联网用 LIC- 前缀的在线授权码,隔离内网用 LICOFF- 前缀的离线许可证。

+
+
+ STEP 3 +

应用内激活

+

打开「设置 → 授权」,粘贴授权码点击激活。程序连接授权服务器 licence.rlwj.cn 登记本机设备并回写一次性激活令牌,此后每 7 天自动校验一次。

+
+
+ STEP 4 +

换机与续期

+

在本机自助解绑即可把席位迁到新机器,每年免费换绑 2 次;到期前 30 天邮件提醒,续期后签发新授权码替换即可。

+
+
+
+
+ +
+
+

两种激活方式

+

能联网就用在线授权码,完全不出网就用离线许可证——功能与有效期一致。

+
+ + + + + + + + + + + + +
对比项在线授权码 LIC-离线许可证 LICOFF-
是否联网激活时联网一次,之后每 7 天校验一次全程无需联网,本地验签
设备绑定绑定设备 ID,一机一码绑定设备 ID,一机一码
断网可用激活后可连续离线使用 30 天始终有效,与网络无关
有效期包年 365 天;永久授权长期有效单张最长 365 天,可续签
换绑应用内自助解绑,每年免费换绑 2 次邮件换取新证并解绑旧设备
适合场景办公网、开发机、云主机生产内网、专有云、隔离环境
+
+
+

授权服务器会收到什么?客户端只与 licence.rlwj.cn(443)通信,用于设备登记与周期校验,只发送授权码与设备标识(设备 ID、设备名称)——不发送连接串、库表名、SQL 语句与查询结果等任何业务数据。服务端返回 Ed25519 签名,客户端本地验签,验签失败按未授权处理。

+
    +
  • 内网只放行白名单出网:把 licence.rlwj.cn 加入白名单,或直接使用离线许可证。
  • +
  • 授权服务器不可达:按宽限期继续可用,业务不会当场中断;恢复网络后自动补校验。
  • +
  • 不想让客户端出网:一律选离线许可证,客户端永不发起网络请求。
  • +
+
+
+
+ +
+
+

授权类型与价格

+

个人非商业用途免费;工作中的商业用途需要授权。

+
+ + + + + + + + + + + +
授权价格设备数包含
个人 · 非商业¥0不涉及授权日常连库、写 SQL、看结果;商业用途需购买授权
专业版 · 包年¥99 / 年3 台全部内置驱动(含国产库)、SQL 执行与导出转储、SSH 隧道与 SSL、AI SQL 助手、设备自助解绑
专业版 · 永久¥199 一次性5 台包年全部能力,一次买断、无续费
团队版¥99 / 人 / 年按席位,5 席起个人版全部能力 + 共享连接库(自托管)、驱动离线包分发、优先支持
企业私有化¥6,000 / 年(标价)单法人不限席位内网部署、数据不出企业、远程部署协助、定制开发通道
+
+

完整功能对比、让利与组合报价见 定价页。表中为标价,成交可按规模与场景议价。

+
+
+ +
+
+

授权常见问题

+
+
授权码多久能收到?

付款确认后即刻签发并邮件发出,工作日通常当天完成(含开票需求)。邮件里就是完整授权码,无需注册账号或登录任何后台。

+
授权绑定设备还是账号?

绑定设备。每台机器有唯一设备 ID,一个授权码按授权的设备数占座,与账号无关;团队版按席位签发多个授权码,组织内可转移。

+
换电脑 / 重装系统后设备 ID 变了怎么办?

旧机还在:在「设置 → 授权」点解绑,腾出席位后在新机激活。旧机已不在手:邮件与我们说明(附授权码后四位与新设备 ID),由我们在授权后台释放旧设备。每年免费换绑 2 次。

+
断网了授权会失效吗?

不会。离线许可证本地自验,永不联网也有效;在线授权码激活后可连续离线使用 30 天,超时后联网校验一次即可继续。授权服务器不可达时按宽限期放行,不会打断正在执行的查询。

+
生产内网完全不出网,怎么激活?

改用离线许可证(LICOFF-):在应用内导出本机机器码,邮件发我们换取离线证,本地导入即完成激活,全程不需要客户端联网——数据库连接与查询本来就在本机完成。

+
续期怎么操作?

到期前 30 天我们会邮件提醒。付款后签发新的授权码,在「设置 → 授权」里替换旧码即可,同一台设备无需先解绑;永久授权无需续期。

+
试用期结束后我的连接配置和数据还在吗?

都在。授权只控制专业功能是否可用,本机连接配置、查询历史与 ~/.opsxdb 下的数据不做任何改动;试用结束后个人非商业用途可继续使用,购买授权后专业功能立即恢复。

+
激活失败怎么排查?

先在「设置 → 授权」看当前状态与到期时间。若提示无效或不匹配,请把授权码后四位、设备 ID 与报错截图一并发邮件,我们核对授权服务器上的记录后处理(常见原因是设备数已占满或授权码输漏字符)。

+
能开发票、走对公转账吗?

可以。个人与企业均可开具发票,支持对公转账、多产品捆绑与批量授权;邮件说明抬头与税号即可。

+
三个产品(OpsxDB / OpsxAPI / OpsXShell)要分别买吗?

三个产品独立授权、独立计价;它们共用同一套授权体系(同一个设备 ID 规则与同一个授权服务器)。多产品组合、团队或教育用途可邮件说明需求,给捆绑价。

+
+

本页更新于 2026-10-16,授权口径与授权服务器 licence.rlwj.cn 实际配置一致。

+
+
+ +
+
+

准备好购买授权

+

邮件说明产品、授权类型与设备数,当天回复并开票。

+ +

付款后当场发放授权码(LIC-),粘贴到「设置 → 授权」即完成激活——整个流程无需注册账号。

+
+
+
+ + + + diff --git a/homepage/dist/pricing.html b/homepage/dist/pricing.html index dcfd1ae..ddb0a65 100644 --- a/homepage/dist/pricing.html +++ b/homepage/dist/pricing.html @@ -45,16 +45,17 @@