dbx/CONTRIBUTING.zh-CN.md

149 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 参与 DBX 贡献
感谢你愿意花时间了解 DBX。不管是改一个错别字、补文档还是修某个数据库相关的问题都很有价值。
## 从哪里开始
1. 浏览 [Issues](https://github.com/t8y2/dbx/issues),选择尚未分配、评论中也没有人正在处理的问题。不要只依赖标签,先阅读完整正文、评论和截图。
2. 在 Issue 下留言说明你想做什么,避免重复劳动;使用 `/claim` 认领,后续无法继续时使用 `/unclaim` 取消认领,也兼容 `/unclaimed`
3. Fork 仓库,新建分支开发,然后向 `main` 提 PR。
4. 关联 PR 合并后,如果 Issue 仍然处于打开状态,可以评论 `/close`。该命令只允许当前 assignee、且必须由关联 PR 作者本人使用。
如果暂时不确定做什么,优先选择复现清晰、改动范围小,或者你能使用真实数据库验证的问题。完整流程见[官网贡献教程](https://dbxio.com/cn/docs/contributing)。
## 开发环境
### 环境要求
- Node.js >= 22.13.0
- pnpm 10.27.0
- Rust >= 1.88
- Make
Linux 桌面端还需要 WebKit/GTK 相关依赖,具体命令见 [README.zh-CN.md](README.zh-CN.md#快速开始)。
### 本地运行
```bash
git clone https://github.com/t8y2/dbx.git
cd dbx
make
```
`make` 会在需要时安装依赖,并启动 Tauri 桌面端开发环境。
常用命令:
```bash
make dev-fast # 本地开发跳过 DuckDB
make dev-web # 只启动前端
make dev-backend # 只启动 Web 后端
make docs # 本地预览文档站
make cargo-check-fast # 快速 Rust 检查
```
### JDBC Agent 驱动
Agent 驱动工程在 `agents/` 目录。Java/JDBC 驱动构建和测试需要 JDK 21环境允许时 Gradle 可以自动下载对应 toolchain。
```bash
cd agents
./gradlew test
```
修改已有 Agent 时不要手动修改 `agents/versions.json`,发布工作流会自动 bump 发生变化的模块。只有新增驱动时才需要登记初始版本;新增 Java/JDBC 驱动还要同步 `agents/settings.gradle` 和支持列表,原生驱动按 Agent authoring/release checklist 登记构建产物。
本地验证 Java Agent 时,需要构建目标 `shadowJar`,备份并覆盖 `~/.dbx/agents/drivers/<db_type>/agent.jar`,然后重启 DBX 或重新连接数据库。完整命令见[官网贡献教程](https://dbxio.com/cn/docs/contributing)。
## 项目结构
| 路径 | 说明 |
| --- | --- |
| `apps/desktop/src/` | Vue 前端 |
| `src-tauri/` | Tauri 桌面端壳层与命令层 |
| `crates/dbx-core/` | 共享 Rust 数据库逻辑 |
| `crates/dbx-web/` | Docker / Web HTTP 后端 |
| `packages/cli/` | `@dbx-app/cli` |
| `packages/mcp-server/` | `@dbx-app/mcp-server` |
| `packages/mongo-shell/` | 桌面端内部 MongoDB 编辑器解析工具 |
| `docs/` | 官方文档站 |
| `examples/` | 配置与自动化示例 |
| `agents/` | JDBC Agent 驱动工程 |
## 开发约定
### 分支命名
分支名尽量简短明确,例如:
- `docs/web-api-reference`
- `fix/mysql-connection-timeout`
- `feat/redis-key-search`
### 控制改动范围
一个 PR 只做一类事。文档 PR 不要夹带无关代码;修 Bug 时也不要顺手大重构,除非重构是修复所必需的。
### 提交说明
提交信息用自然语言写清楚即可:
- `docs: add web API reference for Docker deployments`
- `fix(redis): handle empty scan cursor`
- `feat(schema): show catalog info for Doris`
### 测试
按改动范围跑对应检查:
```bash
make cargo-check-fast
make cargo-test-fast
pnpm test
```
如果改的是前端或某个 package再补跑对应目录下的测试。
### 文档
用户文档主要分两块:
- 仓库内文档:`README.md`、`CONTRIBUTING.md`、各 package README、`examples/`
- 官网文档:`docs/content/docs/`
如果在 `docs/content/docs/` 新增页面,记得同步更新:
- `docs/content/docs/meta.json`
- `docs/content/docs/meta.cn.json`
本地预览:
```bash
make docs
```
## 提 PR
1. 把分支推到你自己的 Fork。
2.`https://github.com/t8y2/dbx``main` 提 PR。
3. 在 PR 描述里关联相关 Issue。
4. 写清楚改了什么、怎么验证的;如果涉及 UI附上截图。
改动越小,越容易 review 和合并。
## 欢迎的贡献类型
- 文档改进与翻译
- 可复现、行为清晰的 Bug 修复
- 你有真实测试环境的数据库专项修复
- 非平凡逻辑的测试补充
- CLI、MCP、Docker、Web API 的使用示例
## 社区
- [Discord](https://discord.gg/W7NyVDRt6a)
- [GitHub Issues](https://github.com/t8y2/dbx/issues)
- [官方文档](https://dbxio.com/cn/docs/what-is-dbx)
合并后的贡献者会出现在 [DBX 贡献墙](https://dbxio.com/cn/community)。