# 为 Hermes Desktop 做贡献

感谢你愿意为 Hermes Desktop 做出贡献。无论是修复 bug、添加新功能、完善文档，还是修正一个拼写错误，每一份贡献都很有价值。

## 语言

- 英文：`CONTRIBUTING.md`
- 简体中文：`CONTRIBUTING.zh-CN.md`
- 日本語：`CONTRIBUTING.ja-JP.md`

## 快速开始

1. **Fork** 本仓库，并将你的 fork 克隆到本地。
2. **安装依赖：**

   ```bash
   npm install
   ```

3. **以开发模式启动应用：**

   ```bash
   npm run dev
   ```

## 修改代码

1. 从 `main` 创建新分支：

   ```bash
   git checkout -b your-branch-name
   ```

2. 完成你的改动。请保持提交聚焦，每个 commit 只做一类逻辑改动。

3. 提交前先运行检查：

   ```bash
   npm run lint
   npm run typecheck
   ```

4. 使用 `npm run dev` 在本地测试改动，确保行为符合预期。

## 提交 Pull Request

1. 将分支推送到你的 fork。
2. 在上游仓库中向 `main` 发起 Pull Request。
3. 清楚描述你改了什么，以及为什么这样改。
4. 如果你的 PR 解决了某个已有 issue，请在描述中引用它（例如：`Fixes #42`）。

### 保持 Pull Request 精简

请保持 PR 小而聚焦——这样更容易审核和合并。触及过多文件或捆绑了不相关改动的 PR 可能会被要求拆分，甚至可能不被接受。

- 每个 PR 只做一类逻辑改动（一个修复、一个功能、一次重构）。
- 如果你发现自己改了很多不相关的文件，请将工作拆分成多个 PR。
- 避免将格式化/样式改动与功能改动混在一起提交。
- 更小的 PR 能更快得到审核和合并。

维护者会审核你的 PR，并可能提出修改建议。审核通过后，PR 会被合并。

## 报告 Bug

如果你发现了 bug，请在 GitHub 上 [提交 issue](https://github.com/fathah/hermes-desktop/issues/new)，并尽量包含：

- 清晰的标题和描述
- 复现步骤
- 预期行为与实际行为
- 你的操作系统和应用版本（如果相关）

## 功能请求

如果你有新想法，也欢迎 [提交 issue](https://github.com/fathah/hermes-desktop/issues/new)，并描述：

- 你想解决的问题
- 你希望它如何工作
- 你考虑过的替代方案

## 项目结构

```text
src/main/                Electron 主进程、IPC 处理器、Hermes 集成
src/preload/             安全的 renderer bridge
src/renderer/src/        React 应用和 UI 组件
resources/               应用图标和打包资源
build/                   打包配置资源
```

## 代码风格

- 项目使用 TypeScript、React 和 Electron。
- 运行 `npm run lint` 检查 lint 错误。
- 运行 `npm run typecheck` 验证类型安全。
- 尽量遵循当前仓库现有模式和约定。

## 社区

- 欢迎加入 [Nous Research Discord](https://discord.gg/NousResearch)，与其他贡献者交流。
- 也可以查看 [文档](https://hermes-agent.nousresearch.com/docs/) 了解 Hermes 的整体工作方式。

## 许可证

通过提交贡献，即表示你同意你的贡献将按照 [MIT License](LICENSE) 授权。
