进阶 docs.cloudreve.org 2026-10-17 18:46:57 · 23 阅读

第42章 参与 Cloudreve 开源贡献指南

参与贡献

如果你有兴趣为 Cloudreve 做贡献,请参考本章内容入门。需要注意的是,Cloudreve 采用双许可证策略:社区版基于 GPL-3.0 发布,Pro 版则使用专有许可证。我们只接受针对社区版的贡献,且贡献者在 PR 合并前需要签署 CLA。

项目结构

Cloudreve 的主仓库是 cloudreve/cloudreve,其中通过 git submodule 引入了前端仓库 cloudreve/frontend。

开始开发

开发环境

请参考「从源码构建」一节安装所需工具。

克隆仓库

```bash git clone --recurse-submodules https://github.com/cloudreve/cloudreve.git cd cloudreve ```

启动后端

```bash # 首次启动前,先安装依赖 go mod download

# 启动后端 go run main.go ```

如需传递命令行参数:

```bash go run main.go -c /path/to/conf.ini ```

由于前端静态资源并未内嵌,后端启动后,http://localhost:5212 只能提供 API 服务。在典型的开发流程中,你还需要启动前端开发服务器才能访问本地站点。

启动前端

保持后端运行,在另一个终端中执行以下命令:

```bash cd frontend yarn install yarn run dev ```

开发服务器启动后,访问 http://localhost:5173 即可打开站点。默认情况下,所有 API 请求都会转发到 http://localhost:5212,你可以在 vite.config.ts 中修改这一配置。

选择任务

在 Cloudreve 的 issues 中,筛选带有 Backlog 标签的 issue,这些是待认领的任务。选定任务后,在 issue 下留言表明你要认领,并提醒维护者将任务分配给你。

对于新手,我们建议优先选择带有 good first issue 标签的 issue。

提出新任务

如果你有新的任务想法,可以在 issues 中新建一个 issue,详细描述你的想法和实现方案,并提醒维护者将任务分配给你。请先等待其他开发者确认你的想法,再开始开发。

提交 PR

完成任务后,你可以向 cloudreve/cloudreve 和 cloudreve/frontend 仓库提交 PR。PR 提交后,机器人会引导你签署 CLA。

提交 PR 时请遵守以下要求:

- PR 必须关联带有 Backlog 标签的 issue:我们不接受直接通过 PR 提出新功能贡献。任何新功能或变更都必须先在 issue 中讨论,经维护者确认并打上 Backlog 标签后,才能开始开发并提交对应的 PR。如果你有新想法,请先按照「提出新任务」的流程创建 issue。

- 每个 PR 对应一个独立变更:保持 PR 聚焦,一个 PR 只解决一个问题或实现一个功能。对于大型功能或重构,请尽量拆分成多个较小的 PR,以便逐步审查和合并,这会大大降低审查和后续排查问题的难度。

讨论

你可以在我们 Discord 社区的开发频道讨论任务细节或寻求支持。

AIGC

我们不反对使用 AI 生成代码工具(AIGC)辅助开发,但坚决反对"vibe coding"(不理解代码含义,盲目复制粘贴 AI 生成的代码)。

AIGC 使用准则

如果你选择使用 AI 工具辅助开发,请遵循以下准则:

- 理解每一行代码:你必须完全理解 AI 生成的每一行代码的用途和原理 - 仔细审查:检查 AI 生成的代码是否符合项目的编码规范和最佳实践 - 充分测试:对 AI 生成的代码进行全面测试,确保其正确性和稳定性 - 适配项目:确保 AI 生成的代码与现有代码库的架构和设计模式保持一致 - 不要提交纯粹的 vibe coding PR:如果你打算完全依赖 AI 生成代码,而不深入理解和掌控实现细节(即纯粹的"vibe coding"),请不要提交 PR。但你完全可以在对应的 issue 下分享你与 AI 对话中获得的实现思路、设计方案、参考资料等内容,让其他开发者从中受益。

需要说明的是,我们并不反对 AI——恰恰相反,熟悉项目的贡献者也在用 AI 提升效率。但审查一个由 AI 生成、提交者本人都未完全理解的 PR 所耗费的精力,足以让一个熟悉项目结构的贡献者在 AI 的帮助下产出质量相当甚至更高的变更。因此,如果你无法对自己提交的代码负责,请不要把审查成本转嫁给维护者。

请记住,AI 工具只是辅助手段,最终的代码质量和正确性仍需开发者自己保证。

评论 (0)