Skip to content

贡献指南

感谢您对 Agido 项目的关注!我们欢迎各种形式的贡献,包括但不限于:

  • 提交 Bug 报告
  • 提出功能建议
  • 开发引擎适配器
  • 改进文档
  • 提交代码修复
  • 分享使用经验

开发环境搭建

前置要求

  • Node.js >= 18
  • Python >= 3.11
  • Rust >= 1.75
  • pnpm >= 8
  • Git

克隆仓库

bash
git clone https://github.com/gitcoffee-os/agido.git
cd agido

安装依赖

bash
pnpm install

启动开发服务器

bash
pnpm dev

贡献流程

1. 创建 Issue

在提交代码之前,请先创建 Issue 描述您要解决的问题或要添加的功能:

  • 如果是 Bug,请描述复现步骤
  • 如果是功能,请描述使用场景
  • 如果是引擎适配器,请描述引擎的核心能力和 API

2. Fork 仓库

点击 GitHub 页面的 Fork 按钮,将仓库 fork 到您的账号下。

3. 创建分支

bash
git checkout -b feature/your-feature-name
# 或
git checkout -b fix/your-bug-fix
# 或
git checkout -b adapter/your-engine-adapter

分支命名规范:

  • feature/*: 新功能
  • fix/*: Bug 修复
  • docs/*: 文档更新
  • refactor/*: 代码重构
  • adapter/*: 引擎适配器

4. 提交代码

代码规范

  • 使用 ESLint 和 Prettier 进行代码格式化
  • TypeScript 严格模式启用
  • Rust 使用 clippy + rustfmt
  • 引擎适配器遵循 EngineAdapter 接口规范
  • 组件命名使用 PascalCase
  • 函数命名使用 camelCase

提交信息规范

类型(scope): 简短描述

详细描述(可选)

Footer(可选)

类型说明:

  • feat: 新功能
  • fix: 修复
  • docs: 文档
  • style: 格式
  • refactor: 重构
  • perf: 性能优化
  • test: 测试
  • chore: 构建/工具
  • adapter: 引擎适配器

示例:

feat(scheduler): 添加负载感知路由策略

- 根据引擎负载智能分发任务
- 支持自定义负载阈值
- 添加负载趋势预测

Closes #123

5. 推送分支

bash
git push origin feature/your-feature-name

6. 创建 Pull Request

  1. 访问您 fork 的仓库
  2. 点击 "New Pull Request"
  3. 填写 PR 描述,关联相关 Issue
  4. 等待代码审查

引擎适配器贡献

Agido 欢迎社区贡献新的引擎适配器。开发新适配器请遵循以下步骤:

  1. 在 Issue 中提出适配器开发计划
  2. 实现 EngineAdapter 接口
  3. 编写单元测试和集成测试
  4. 提交文档说明
  5. 提交 PR

详细的适配器开发指南请参考开发指南

代码审查

所有代码提交都需要经过审查:

  1. 确保 CI 检查通过
  2. 至少一名维护者审查通过
  3. 解决审查意见

文档贡献

文档位于 docs/ 目录,使用 Markdown 编写。

文档规范

  • 使用中文编写
  • 代码块标明语言
  • 图片放在 docs/public/images/ 目录
  • 架构图使用 Mermaid 或 ASCII art

测试

运行测试

bash
# 运行所有测试
pnpm test

# 运行指定模块测试
pnpm test -- packages/core

# 覆盖率报告
pnpm test:coverage

添加测试

  • 单元测试放在 __tests__ 目录
  • 测试文件名以 .test.ts 结尾
  • 覆盖率要求 >= 80%
  • 引擎适配器需要集成测试

发布流程

维护者会定期发布新版本:

  1. 更新版本号
  2. 更新 CHANGELOG
  3. 创建 Release
  4. 发布到 npm

行为准则

参与本项目即表示您同意遵守我们的行为准则:

  • 尊重他人,友善交流
  • 接受建设性批评
  • 关注社区最佳利益
  • 禁止骚扰、歧视等行为

获取帮助

许可证

贡献即表示您同意将代码以 Apache License 2.0 许可发布。

致谢

感谢所有为 Agido 做出贡献的开发者!