准备变更
编码前,先确认范围与契约:- 搜索已有问题单和 PR,确认是否存在重叠工作。
- 阅读架构概览,确定应由哪个组件负责这项行为。
- 检查当前实现、配置结构、相邻组件和公开文档。
- 如果变更依赖外部项目,根据其官方代码仓库、API、论文或 provider 文档确认上游契约。
- 如果契约变更影响范围较广,或新集成会带来较高的维护成本,先创建问题单或发起设计讨论。
origin 应指向你的派生仓库,upstream 应指向 open-compass/AgentCompass。分支名应直接说明本次变更的主题,例如:
实现并验证
实现期间:- 把行为实现放在负责它的组件中。
- 推断默认值时,不得覆盖用户的显式设置。
- 新增公开参数时,将其放入对应的组件配置契约。
- 确定性规划代码不得调用 provider 或 Model。
- 保留错误类别,并在所有退出路径清理资源。
- 变更影响公开行为时,在同一 PR 中更新文档;具体规则见文档贡献。
- 绝不能提交凭证、私有端点、数据集、容器层、完整结果目录或大型生成产物。
主题行应简洁并使用祈使语气。避免使用
update code、fix issue 这类含糊表述;如果实现、Recipe 和文档可以独立审查,应分别提交:
提交 PR
创建或更新 PR 前,把分支变基到最新的upstream/main:
- 要解决的问题、本次变更的范围,以及明确不处理的内容。
- 负责该行为的组件、重要设计决定,以及变更前后的用户可见行为和兼容性。
- 准确且已脱敏的复现或验证命令、关键结果和必要的产物证据。
- 与实现同步更新的文档。
处理有依赖关系的变更
如果一项集成依赖可复用的基础设施变更,应把两者拆成独立 PR,使基础设施可以独立审查和复用:- 从
upstream/main创建基础分支并提交基础 PR。 - 在基础分支上创建集成分支,只用于本地组合测试和后续集成 PR。
- 基础 PR 合并后,把集成分支变基到更新后的
upstream/main。 - 检查提交范围,重新运行受影响的验证,再通过
--force-with-lease更新个人集成分支。
