🤝 参与贡献 (Contributing)
帮助我们共同构建每个人都值得拥有的优秀 AI 交互界面。
Open WebUI 是一个独立的开源项目,由一个规模精简且充满激情的核心团队进行开发与日常维护。事实上,许多最宝贵的贡献并不一定局限于编写代码——测试开发分支的最新构建、提交清晰的 Bug 报告、在社区论坛中建言献策、持续改进文档翻译,以及进行网页 UI 的多语言本地化,均能对本项目产生极为巨大的影响。本页面将向您介绍如何参与其中以及后续的贡献期望。
社区行为准则
所有贡献者及社区参与者都必须无条件遵守我们的 行为准则 (Code of Conduct)。我们执行严格的 零容忍政策:对任何社区成员采取不尊重、理所当然的态度或敌意行为,均将导致相关账号及人员在无需事先预警的情况下,立即被移除出社区。
本开源项目是由志同道合的志愿者们在业余时间无偿奉献建立的。请在每一次沟通中都保持绝对的专业、善意与互相尊重。
贡献方式
1. 测试开发分支 (dev branch)
这是无需编写任何代码便能做出的最宝贵的贡献之一。直接运行我们的开发分支,将其作为您的日常工具使用,并积极报告发生的任何异常或破损。
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:dev由于开发分支(dev branch)迭代频繁、更新速度极快,请定期拉取最新的 Docker 镜像。如果您不想使用 Docker,请参考 Open WebUI 本地开发环境搭建 教程进行手动构建。
若发现问题,请在 GitHub Issues 提交报告,并附带清晰的复现步骤。没有社区的高频测试,我们就无法交付高质量的稳定版本。
2. 提交代码 (PR)
对项目最有影响力的贡献方式还包括:撰写高品质的 Bug 报告、参与功能的深度技术论证,以及在 GitHub Discussions 中提出富有远见的想法。这些意见将直接塑造 Open WebUI 的未来走向。
如果您决定向我们提交 Pull Request (PR),请理解 Open WebUI 对代码质量、一致性以及系统架构的连贯性均执行行业极其严苛的标准。任何一行被合并的代码,都意味着核心开发团队必须在未来无限期地为其承担运维、重构和技术支持责任。因此,您提交的代码可能会被核心团队重新重构、改写,甚至仅作为实现另一套不同设计方案的灵感来源。这绝不是对您工作质量的否定,而是我们确保一个微型核心开发团队能够深度掌控、演进系统每个核心组件的必要手段。
在提交 PR 之前,请务必遵守:
- 先发起社区讨论:在开 始编写代码前,请先在 社区讨论区 提出您的构想,以便团队在技术路线上与您达成共识。
- 遵循现有的代码规范:代码编写必须与项目既有的编码风格、命名模式及底层架构保持高度一致。
- 保持 PR 的原子性:每个 PR 应当仅聚焦并解决一个单一的具体目标。若开发规模扩大,请将其拆分为多个体积更小、逻辑相互独立的子 PR。
- 尽量避免引入新的外部依赖:在未事先深入论证前,请勿随意添加任何第三方库或框架。我们的设计目标是保持底层的轻量化,在可行情况下尽量由我们自己手写实现相应功能。
- 附带完善的自动化测试:新功能开发应配套对应的自动化测试,并同步更新相应的文档。
- 编写清晰的 Commit 信息:使用具描述性的 Commit 信息能极大提升代码审查及历史版本回溯的效率。
3. 改进文档 (Improve Docs)
您可以帮助我们撰写更通俗易懂的文档、编写详尽的配置实战指南或入门教程。所有的文档项目均托管在 Docs 官方仓库 中。
4. 汉化与多语言本地化 (i18n)
Open WebUI 的前端国际化翻译文件存放在 src/lib/i18n/locales 目录下,均为 JSON 字典格式。每个语言的子目录均使用规范的 ISO 639 语言代码(例如 en-US、zh-CN、fr-FR)进行命名。
若要为系统添加新语言的界面汉化:
- 在
src/lib/i18n/locales目录下创建一个与目标语言代码相对应的新文件夹; - 将
en-US目录下的所有原始 JSON 文件拷贝至该新文件夹中; - 在保持 JSON 对象层级结构完好无损的前提下,逐个将字符串值翻译为目标语言;
- 在
src/lib/i18n/locales/languages.json配置文件中注册并启用该新语言。
5. 优化无障碍支持 (Accessibility)
无障碍支持是优秀产品设计中不可或缺的灵魂。在向我们贡献 UI 修改时,请严格遵守以下标准:
| 核心原则 | 落地执行规范 |
|---|---|
| 语义化 HTML | 优先使用 <button>、<label>、<nav> 等原生语义化元素,严禁滥用 generic 的 <div> 标签进行层层包裹 |
| 纯键盘导航支持 | 确保网页上所有的交互式组件均能在脱离鼠标、仅依靠键盘导航的情况下流畅操作 |
| ARIA 无障碍标签 | 在语义化 HTML 依然无法充分满足无障碍表达的复杂交互组件中,必须补齐 ARIA 角色与标签属性 |
| 高对比度色彩 | 使用 WebAIM 对比度检查工具 校验所有前背景色对比度是否达标 |
| 图片替代文本 | 为具备明确含义的配图补充详尽描述性的 alt 替代文本属性;对于纯装饰性无实际含义的图片,使用 alt="" 占位符 |
在提交 UI 修改后,请使用 Lighthouse 或浏览器自带的 Accessibility 无障碍检测工具进行全面自测。
如何规范地提交 Bug 报告
在发起新的 Issue 之前,请务必先检索 GitHub Issues 列表 确认是否已有重复的问题。在提交时:
- 严格使用提供的 Issue 模板:未按要求填写模板或缺失关键排障日志信息的 Issue 可能会被直接关闭。
- 提供详尽的重现步骤:清晰说明您的操作流程、预期输出结果以及实际发生的报错异常。
- 描述力求精准详实:过于空洞模糊的报告(如“它用不了”、“白屏了”)将无法获得有效的调查。
Open WebUI 官方支持标准的 Docker 容器化部署方案,但我们默认您已掌握 Docker 容器的基本操作常识。对于有关反向代理(Reverse Proxy,如 Nginx)、容器虚拟网络配置或宿主机 OS 底层系统调优等技术答疑,均超出了本项目的技术支持范畴。遇到此类问题,请参阅 Docker 官方文档 自行配置。
获取联系方式
| 官方频道 | 快速加入链接 |
|---|---|
| Discord 官方社区 | discord.gg/5rJgQTnV4s |
| Reddit 社区 | r/OpenWebUI |
| GitHub Issues | open-webui/open-webui/issues |
| GitHub Discussions | open-webui/open-webui/discussions |