发布我的 PR 到项目 Bifrost
Source: Dev.to
最终回顾 – 在 Bifrost 中实现 “启用/禁用 API Key” 功能
当我第一次开始处理这个问题时,我以为这只是一次简单的前端修改——只需要添加一个小组件并做一点后端调整。然而,随着我对项目的深入了解,我意识到这实际上是一个涉及前端、后端和数据库层的全栈功能。
Bifrost 是一个大规模、高性能的 AI 网关,主要使用 Go 编写,且没有使用任何后端 Web 框架。这让我有机会直接学习在 Go 中如何构建生产级系统的架构。前端方面,项目使用 Next.js 与 Shadcn UI,这两者对我来说都是相对新颖的技术,成为一次极好的学习体验。
技术实现
前端
在 ui/app/workspace/providers/views/modelProviderKeysTableView.tsx 中,我使用现有的 Switch 组件实现了该功能,使用户能够启用或禁用其 API Key,而不是直接删除它们。这一小小的 UI 改动显著提升了用户体验,让用户可以临时控制密钥的使用。
后端
我更新了多个后端文件,以扩展数据模式并在逻辑中处理新的 enabled 字段。
核心
在 core/bifrost.go 中,我加入了逻辑,确保请求仅使用已启用的密钥,跳过任何被禁用的密钥。
数据库
在 framework/configstore/migrations.go 中,我编写了手动迁移脚本,为 keys 表添加了新的 enabled 列,并将其默认值设为 true。这在不依赖任何框架级 ORM 迁移工具的情况下,保证了数据的一致性。
协作与审查过程
在推送我的 Pull Request 后,我遵循了 CodeRabbitAI 的自动化反馈以及其他贡献者的建议。他们的建议帮助我发现了遗漏的细节,遵循了仓库的编码规范,并完善了我的迁移逻辑。这些自动化工具和社区互动减少了沟通延迟,提升了我的工作流和代码质量。
结论
通过这次贡献,我学会了 Go 在后端、CLI 和微服务开发中的强大能力。参与 Bifrost 的开发让我了解了如何在不依赖框架的情况下设计和实现 Web 应用功能——手动管理 SQL 迁移并在全栈范围内集成业务逻辑。
这段宝贵的经历加强了我对 全栈开发、开源协作以及现代团队如何维护高质量生产系统的理解。