
Switchyard LLM路由贡献者指南从Fork仓库到DCO签名的完整PR流程【免费下载链接】SwitchyardSwitchyard lets LLM applications route traffic across models and providers while preserving native OpenAI and Anthropic API compatibility - enabling flexible model selection, benchmarking, and cost/performance optimization.项目地址: https://gitcode.com/GitHub_Trending/switch/SwitchyardSwitchyard 是一个开源的LLM 路由项目它让 LLM 应用在不改变原生 OpenAI / Anthropic API 兼容性的前提下灵活地在多个模型和提供商之间路由流量实现成本控制与性能优化。如果你想为它贡献代码本文是一份从零开始的贡献者指南——带你走通Fork 仓库 → 建分支 → 本地检查 → Conventional Commits → DCO 签名 → 提交 PR的完整流程每一步都给出可操作的命令和避坑提示。动手前30秒看懂仓库结构Switchyard 用 Rust 编写附带 Python 绑定。在提交任何改动前先确认你要改的文件属于哪个 crate每个 crate 有明确职责边界写错位置是新手最常见的 PR 问题你要改的内容应放入的模块路由算法、驱动逻辑crates/libsy/模型 HTTP 调用crates/libsy-llm-client/厂商中立的协议类型crates/protocol/OpenAI/Anthropic 格式转换crates/switchyard-translation/HTTP 服务与部署配置crates/switchyard-server/Python 测试tests/详细边界约定见 AGENTS.md 和 DEVELOPMENT.md。小改动错别字、文档、100 行以内的修复可以直接开 PR大改动新功能、重构请先开 Issue 与维护者确认方向避免白做。第1步Fork 仓库并配置开发环境先 Fork 仓库然后克隆到你的本地upstream指向官方仓库方便日后同步git clone https://gitcode.com/GitHub_Trending/switch/Switchyard cd Switchyard git remote add upstream 你的Fork地址Switchyard 使用 uv 管理 Python 环境一条uv sync即可装好依赖和开发工具pytest、ruff、mypyuv sync source .venv/bin/activate最后安装本地 Git 钩子——它会替你提前执行 CI 里的两项关键检查lint 与提交信息格式强烈建议装uvx pre-commit install --install-hooks --hook-type pre-commit --hook-type commit-msg钩子配置定义在 .pre-commit-config.yaml 中。第2步用规范前缀命名功能分支分支名直接决定评审者对改动类型的预期请使用以下前缀feature/...— 新功能如feature/add-new-router-backendfix/...— Bug 修复如fix/async-context-leakdocs/...— 文档更新refactor/...— 不改变行为的结构调整test/...— 测试补充git checkout -b feature/your-feature第3步本地跑通全部检查与 CI 同款所有改动在推送前必须通过 5 道关卡它们在 CI 上每次 push 都会重跑。与其在 CI 上等失败不如本地先跑uv run ruff check . # Python lint要求 0 错误 uv run mypy switchyard # 严格类型检查 uv run pytest tests/ -v # Python 测试 cargo fmt --all --check # Rust 格式化 cargo clippy --workspace --all-targets -- -D warnings # Rust lint cargo test --workspace # Rust 测试lint 报错太多先让工具自动修复一轮uv run ruff check --fix .✅ 好消息默认单元测试不需要任何 API Key、不访问网络本地即可完整跑通。第4步Conventional Commits DCO 签名提交这是最容易卡壳的一步两个要求缺一不可① 提交信息必须符合 Conventional Commits 规范由commit-msg钩子和本地 commitlint 强制校验规则见 .commitlintrc.json✅fix: handle async context cleanup in ProxyContext✅feat: add stage-router routing backend❌Fixed stuff/Updated code可用的类型前缀featfixdocsrefactortestperfbuildcichorerevertstylescope 可省略如fix(cli): preserve command arguments。② 每个提交必须带 DCO 签名Developer Certificate of Origin开发者原创声明。只需在 commit 时加-s参数git commit -s -m feat: add stage-router routing backend它会在提交信息末尾自动追加Signed-off-by: Your Name youremail.com这等价于你以书面形式声明该代码由你原创、或有权利以项目许可证提交。没有 Signed-off-by 的提交会被 DCO 检查直接拒绝且通常无法补救——这是新手 PR 被拒的头号原因。完整的 DCO 声明文本见 CONTRIBUTING.md 的 Signing Your Work 章节。 用 AI 工具写代码是被允许的但你必须理解并能解释 PR 中的每一处改动。第5步推送、开 PR 并迎接评审本地检查全绿后推送分支向main发起 PRgit push -u origin feature/your-feature开 PR 时注意 4 个要点按模板填写描述项目提供了 PR 模板只需回答 What改了什么、Why动机、Notes for reviewers评审者从哪看起三个问题。PR 标题也用 Conventional Commits 格式——因为合并时采用 Squash MergePR 标题会成为最终提交信息。关联 Issue在描述中写Closes #42合并后自动关闭。按建议追加 commit不要 force-push评审反馈请用后续提交回应除非维护者明确要求。评审是自动发起的.github/CODEOWNERS 已配置所有 PR 必须由核心团队switchyard_team审核你无需手动指定评审人。合并前CI Success与DCO两个状态检查是硬性要求。PR 被卡住常见原因速查症状大概率原因DCO 检查红叉提交时漏了git commit -scommitlint / PR title 报错提交信息或 PR 标题不符合 Conventional Commits 格式CI lint 失败本地没跑uv run ruff check .推送前请先--fix一直没人审一般不需要等待——CODEOWNERS 会自动通知核心团队写在最后完整的贡献流程以 CONTRIBUTING.md 为准环境搭建细节见 DEVELOPMENT.md行为准则见 CODE_OF_CONDUCT.md。Switchyard 欢迎从错别字修复到新功能的一切大小的贡献——现在Fork 一个仓库签下你的第一个Signed-off-by吧 【免费下载链接】SwitchyardSwitchyard lets LLM applications route traffic across models and providers while preserving native OpenAI and Anthropic API compatibility - enabling flexible model selection, benchmarking, and cost/performance optimization.项目地址: https://gitcode.com/GitHub_Trending/switch/Switchyard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考