# 贡献指南
**🌍 Language / 语言**
[🇺🇸 English](./Contributing.en.md) | [🇨🇳 中文](./Contributing.md)
感谢你对 AI Proxy Worker 项目的关注!本指南将帮助你了解如何参与项目开发。
## 🚀 快速开始
### 前置要求
- Node.js 18+ 和 npm
- Git
- Cloudflare 账户(用于测试)
- JavaScript 和 Cloudflare Workers 基础知识
### 开发环境设置
```bash
# 克隆仓库
git clone https://github.com/qinfuyao/AI-Proxy-Worker.git
cd ai-proxy-worker
# 安装依赖
npm install -g wrangler
# 登录 Cloudflare
wrangler login
# 设置开发环境
cp wrangler.toml.example wrangler.toml
# 编辑 wrangler.toml 配置你的设置
```
## 🔧 开发流程
### 1. Fork 和 Clone
```bash
# 在 GitHub 上 Fork 仓库,然后克隆你的 fork
git clone https://github.com/qinfuyao/AI-Proxy-Worker.git
cd ai-proxy-worker
# 添加上游远程仓库
git remote add upstream https://github.com/original-owner/ai-proxy-worker.git
```
### 2. 创建功能分支
```bash
# 创建并切换到新分支
git checkout -b feature/your-feature-name
# 或者修复 bug
git checkout -b fix/bug-description
```
### 3. 本地开发
```bash
# 启动本地开发服务器
wrangler dev
# 测试你的更改
curl -X POST http://localhost:8787/chat \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-chat", "messages": [{"role": "user", "content": "测试"}]}'
```
### 4. 测试
```bash
# 运行测试(如果可用)
npm test
# 手动测试清单:
# - 基本聊天功能
# - 流式响应
# - 错误处理
# - 身份验证
```
### 5. 提交和推送
```bash
# 添加更改
git add .
# 使用描述性消息提交
git commit -m "feat: 添加新 AI 模型支持"
# 推送到你的 fork
git push origin feature/your-feature-name
```
### 6. 创建 Pull Request
1. 在 GitHub 上访问你的 fork
2. 点击 "New Pull Request"
3. 填写 PR 模板
4. 等待审查
## 📝 代码规范
### JavaScript 风格
- 使用现代 ES6+ 特性
- 保持一致的缩进(2个空格)
- 使用有意义的变量名
- 为复杂逻辑添加注释
```javascript
// 好的示例
const handleChatRequest = async (request, env) => {
const { messages, model } = await request.json();
// 验证必需字段
if (!messages || !Array.isArray(messages)) {
throw new Error('消息必须是数组格式');
}
return await processChat(messages, model, env);
};
// 避免这样写
const h = async (r, e) => {
const d = await r.json();
return await p(d.m, d.mod, e);
};
```
### 错误处理
始终提供有意义的错误消息:
```javascript
// 好的示例
if (!env.DEEPSEEK_API_KEY) {
return new Response(JSON.stringify({
error: 'configuration_error',
message: '需要设置 DEEPSEEK_API_KEY 环境变量',
timestamp: new Date().toISOString()
}), {
status: 500,
headers: { 'Content-Type': 'application/json' }
});
}
```
### 安全最佳实践
- 永远不要记录敏感信息(API 密钥、用户数据)
- 验证所有输入参数
- 使用适当的 HTTP 状态码
- 在适当的地方实施速率限制
## 🐛 Bug 报告
### 报告前检查
1. 检查现有 issues
2. 使用最新版本测试
3. 能够一致地重现问题
### Bug 报告模板
```markdown
**Bug 描述**
清楚地描述 bug 是什么。
**重现步骤**
1. 使用配置 X 部署 worker
2. 发送载荷 Y 的请求
3. 观察到错误 Z
**预期行为**
应该发生什么。
**环境信息**
- Cloudflare Workers 版本
- 使用的浏览器/客户端
- 任何相关配置
**附加上下文**
日志、截图或其他有用信息。
```
## 💡 功能请求
### 功能请求模板
```markdown
**功能描述**
清楚地描述你希望看到的功能。
**使用场景**
解释为什么这个功能有用。
**建议实现**
如果你对如何实现有想法。
**考虑的替代方案**
你考虑过的其他解决方案。
```
## 📖 文档
### 写作指南
- 使用清晰、简洁的语言
- 提供实用示例
- 包含中英文版本
- 测试所有代码示例
### 文档结构
```
docs/
├── Installation.md/en.md # 安装指南
├── Configuration.md/en.md # 配置选项
├── API-Reference.md/en.md # API 文档
├── Examples.md/en.md # 使用示例
├── Troubleshooting.md/en.md # 常见问题
└── Contributing.md/en.md # 本文件
```
## 🔄 发布流程
### 版本编号
我们遵循 [语义化版本](https://semver.org/lang/zh-CN/):
- `主版本.次版本.修订版本`
- 主版本:不兼容的 API 修改
- 次版本:向下兼容的功能性新增
- 修订版本:向下兼容的问题修正
### 发布清单
- [ ] 更新 `wrangler.toml` 中的版本
- [ ] 更新 CHANGELOG.md
- [ ] 测试所有功能
- [ ] 更新文档
- [ ] 创建发布说明
- [ ] 标记发布
## 🏆 致谢
### 贡献者
所有贡献者将在以下地方得到认可:
- README.md 贡献者部分
- 发布说明
- GitHub 贡献者页面
### 贡献类型
- 🐛 Bug 修复
- ✨ 新功能
- 📝 文档
- 🎨 UI/UX 改进
- 🔧 基础设施
- 🌍 翻译
## ❓ 获取帮助
### 社区支持
- [💡 Discussions](https://github.com/qinfuyao/AI-Proxy-Worker/discussions) - 一般问题
- [📋 Issues](https://github.com/qinfuyao/AI-Proxy-Worker/issues) - Bug 报告和功能请求
- [Discord/Slack] - 实时聊天(如果可用)
### 代码审查流程
1. 所有 PR 需要至少一次审查
2. 维护者将在 48 小时内审查
3. 及时处理反馈
4. 合并前压缩提交
## 📋 贡献清单
提交 PR 前,确保:
- [ ] 代码遵循项目风格指南
- [ ] 所有测试通过
- [ ] 如需要已更新文档
- [ ] 提交消息具有描述性
- [ ] PR 描述解释了更改
- [ ] 代码中没有敏感信息
- [ ] 功能在生产环境中正常工作
---
**感谢你为 AI Proxy Worker 做出贡献!** 🎉
你的贡献让这个项目对每个人都更好。