> ## Documentation Index
> Fetch the complete documentation index at: https://docs.53ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 成为贡献者

# 成为贡献者

非常高兴你能关注53AI Hub项目，我们热切期待与你一同打造更卓越的 AI 生态。作为一个聚焦创新的创业团队，我们正致力于构建**简单易用、功能强大的 AI 门户**。在这个过程中，每一位社区成员的智慧与付出都至关重要 —— 你的贡献，将直接推动我们向目标迈进。

为了让贡献者更高效地参与开发，我们精心编写了 这份成为贡献者的指南》。这份指南将帮助你：

* 快速熟悉代码库结构与技术框架
* 了解项目协作流程与贡献规范
* 掌握从环境搭建到代码提交的全流程操作

需要说明的是，这份指南与 53AI Hub 产品一样，始终处于**动态进化**状态。若文档内容与项目实际进展存在偏差，我们诚恳希望你能及时反馈问题或提出优化建议 —— 你的声音，正是我们持续迭代的重要驱动力。

期待与你携手，共同书写 AI 领域的创新篇章！ 🚀

在许可方面，请花一分钟阅读我们简短的 [开源协议和贡献者协议](https://github.com/53ai/53aihub/LICENSE)。社区还遵守 [行为准则](https://github.com/53ai/53aihub/blob/main/CODE_OF_CONDUCT.md)。

## 在开始之前

[查找](https://github.com/53ai/53aihub/issues?q=is:issue+is:closed) 现有问题，或 [创建](https://github.com/53ai/53aihub/issues/new/choose) 一个新问题。我们将问题分为两类：

### 新增功能：

* 如果你要提出新增功能的请求，请详细介绍提议新增功能的应用场景与目标，并尽可能提供详细的上下文。
* 如果你想从现有问题中选择一个，请在其下方留下评论表示你的意愿。

相关方向的团队成员将参与其中。如果一切顺利，他们将批准你开始编码。在此之前，请不要开始工作，以免我们提出更改导致你的工作付诸东流。

根据所提议的功能所属的领域不同，你可能需要与不同的团队成员交流。以下是我们团队成员目前正在从事的各个领域的概述：

| Member                                 | Scope         |
| -------------------------------------- | ------------- |
| [@seekart](https://github.com/seekart) | API Developer |
| [@zasoms](https://github.com/zasoms)   | Web Developer |

## 安装

以下是设置 53AIHub 进行开发的步骤：

### 1. Fork 该仓库

### 2. 克隆仓库

从终端克隆 fork 的仓库：

```
git clone git@github.com:53AI/53AIHub.git
```

### 3. 验证依赖项

53AIHub依赖以下工具和库：

* [Docker](https://www.docker.com/)
* [Docker Compose](https://docs.docker.com/compose/install/)
* [Node.js v18.x (LTS)](http://nodejs.org)
* [npm](https://www.npmjs.com/) version 8.x.x or [Yarn](https://yarnpkg.com/)
* [Go](https://golang.google.cn)
* [Gin Web Framework](https://gin-gonic.com/zh-cn/docs/)

### 4. 安装

53AIHub由后端和前端组成。通过 `cd api/` 导航到后端目录，然后按照 [后端 README](https://github.com/53AI/53AIHub/api/README.md) 进行安装。在另一个终端中，通过 `cd web/` 导航到前端目录，然后按照 [前端 README](https://github.com/53AI/53AIHub/web/front/README.md) 进行安装。

### 5. 在浏览器中访问 53AIHub

为了验证你的设置，打开浏览器并访问 [http://localhost](http://localhost)（默认或你自定义的 URL 和端口）。现在你应该看到 53AIHub正在运行。

## 开发

> **注意**：如果你想要贡献新的工具，请确保已在工具的 `YAML` 文件内留下了你的联系方式，并且在 [53AIHub-docs](https://docs.53ai.com) 帮助文档代码仓库中提交了对应的文档 PR。

为了帮助你快速了解你的贡献在哪个部分，以下是 53AIHub后端和前端的简要注释大纲：

### 后端开发

53AIHub的后端使用 Go 编写，使用 [Gin](https://flask.palletsprojects.com/en/3.0.x/) 框架。它使用 [SQLAlchemy](https://www.sqlalchemy.org/) 作为 ORM，使用 [Celery](https://docs.celeryq.dev/en/stable/getting-started/introduction.html) 作为任务队列。授权逻辑通过 Flask-login 进行处理。

```
[api/]
├── constants             // Constant settings used throughout code base.
├── controllers           // API route definitions and request handling logic.   
├── core                  // Core application orchestration, model integrations, and tools.
├── docker                // Docker & containerization related configurations.
├── events                // Event handling and processing
├── extensions            // Extensions with 3rd party frameworks/platforms.
├── fields                //field definitions for serialization/marshalling.
├── libs                  // Reusable libraries and helpers.
├── migrations            // Scripts for database migration.
├── models                // Database models & schema definitions.
├── services              // Specifies business logic.
├── storage               // Private key storage.  
├── tasks                 // Handling of async tasks and background jobs.
└── tests
```

### 前端开发

前端开发分为53AI Hub用户前台和管理员后台两个项目，使用基于 Typescript 的 [VUE3](https://cn.vuejs.org/) 模板进行引导与样式设计。

* 用户前台文件结构

```
[web/front]
├── src/renderer/main     # 源代码目录
│   ├── api/              # api接口与错误code
│   ├── assets/           # 样式跟icon
│   ├── components/       # 组件
│   ├── directive/        # 自定义指令
│   ├── views/            # 页面
│   ├── router/           # 路由配置
│   ├── typings/          # 类型定义
│   ├── constants/        # 常用变量
│   ├── locales/          # 语言包
│   ├── store/            # 状态管理
│   ├── utils/            # 工具箱
│   └── main.ts           # 入口文件
├── src/renderer/public   # 公共资源
├── dist/                 # 构建输出目录
├── .eslintrc.js          # ESLint 配置
├── .prettierrc           # Prettier 配置
├── tsconfig.json         # TypeScript 配置
└── vite.config.ts        # Vite 配置
```

管理员后台文件结构

```
[web/console]
├── src/src     # 源代码目录
│   ├── api/              # api接口与错误code
│   ├── assets/           # 样式跟icon
│   ├── components/       # 组件
│   ├── directive/        # 自定义指令
│   ├── views/            # 页面
│   ├── router/           # 路由配置
│   ├── typings/          # 类型定义
│   ├── constants/        # 常用变量
│   ├── locales/          # 语言包
│   ├── store/            # 状态管理
│   ├── utils/            # 工具箱
│   └── main.ts           # 入口文件
├── src/renderer/public   # 公共资源
├── dist/                 # 构建输出目录
├── .eslintrc.js          # ESLint 配置
├── .prettierrc           # Prettier 配置
├── tsconfig.json         # TypeScript 配置
└── vite.config.ts        # Vite 配置
```

## 提交你的 PR

最后，是时候向我们的仓库提交一个拉取请求（PR）了。对于重要的功能，我们首先将它们合并到 `deploy/dev` 分支进行测试，然后再合并到 `main` 分支。如果你遇到合并冲突或者不知道如何提交拉取请求的问题，请查看 [GitHub 的拉取请求教程](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests)。

就是这样！一旦你的 PR 被合并，你将成为我们 [README](https://github.com/53AI/53AIHub/README.md) 中的贡献者。

## 获取帮助

如果你在贡献过程中遇到困难或者有任何问题，可以通过相关的 GitHub 问题提出你的疑问，或者加入我们的微信群进行快速交流。
