# 7. 参与贡献

Jarvis 是一个开放的社区驱动项目，我们欢迎并感谢所有形式的贡献，无论是报告Bug、提交新功能、改进文档还是分享使用经验。本章将为您提供参与项目贡献的详细指南。

## 7.1 贡献流程

我们采用标准的 Fork & Pull Request 工作流。Jarvis 在 GitHub 和 Gitee 都有镜像仓库，您可以选择其中任一平台进行贡献：

- **GitHub**: <https://github.com/skyfireitdiy/Jarvis>
- **Gitee**: <https://gitee.com/skyfireitdiy/Jarvis>

1. **Fork 仓库**: 首先，访问您偏好的平台（GitHub 或 Gitee）上的 Jarvis 仓库页面，点击 "Fork" 或 "Forked From" 按钮，将项目复刻到您自己的账户下。

2. **Clone 您的 Fork**: 将您复刻的仓库克隆到本地。

   ```bash
   git clone https://github.com/YourUsername/Jarvis.git
   cd Jarvis
   ```

3. **创建特性分支**: 为您的修改创建一个新的分支。请使用有意义的分支名，例如 `feature/add-new-tool` 或 `fix/resolve-issue-123`。

   ```bash
   git checkout -b feature/your-amazing-feature
   ```

4. **进行修改**: 在这个新分支上进行您的代码或文档修改。

5. **提交更改**: 完成修改后，提交您的更改。我们推荐使用 `jarvis-git-commit` (`jgc`) 来生成符合规范的提交信息。

   ```bash
   git add .
   jgc
   # 或者手动提交
   # git commit -m "feat(scope): your commit message"
   ```

6. **推送到您的 Fork**: 将您的特性分支推送到您在 GitHub 上的复刻仓库。

   ```bash
   git push origin feature/your-amazing-feature
   ```

7. **创建 Pull Request (PR)**: 打开您在 GitHub 上的 Fork 仓库页面，切换到您的特性分支，然后点击 "New pull request" 或 "Compare & pull request" 按钮。填写 PR 的标题和描述，清晰地说明您的修改内容和目的，然后提交。

项目维护者将会审查您的 PR，可能会提出一些修改建议。一旦您的 PR 被接受，它将被合并到主分支中。

## 7.2 编码规范

- **代码风格**: 我们遵循 PEP 8 Python 编码风格指南。请确保您的代码符合该规范。推荐使用 `black` 或 `autopep8` 等工具来自动格式化您的代码。
- **类型提示**: 请为所有函数定义和变量添加类型提示（Type Hinting），这有助于提高代码的可读性和健壮性。
- **文档字符串**: 请为所有公开的模块、类和函数编写清晰的 Docstring，解释其功能、参数和返回值。

## 7.3 提交信息规范

为了保持 Git 历史的清晰和可追溯性，我们要求提交信息遵循 **Conventional Commits** 规范。这也是为什么我们强烈推荐使用 `jgc` 的原因。

提交信息的格式如下：

```text
<type>(<scope>): <subject>
<BLANK LINE>
[optional body]
<BLANK LINE>
[optional footer]
```

- **type**: 必须是以下之一：
  - `feat`: 引入新功能
  - `fix`: 修复 Bug
  - `docs`: 只修改了文档
  - `style`: 不影响代码含义的修改（格式化、分号等）
  - `refactor`: 代码重构，既不修复Bug也不添加功能
  - `perf`: 提升性能的修改
  - `test`: 添加或修改测试
  - `chore`: 构建过程或辅助工具的变动
- **scope**: (可选) 指明本次提交影响的范围（例如 `tool`, `agent`, `docs`）。
- **subject**: 简短描述本次提交的目的，不超过50个字符。

感谢您为 Jarvis 社区贡献宝贵的时间和才华！
