社区
贡献指南
如何为 Downcity 做贡献
贡献指南
感谢您有兴趣为 Downcity 做贡献!本指南将帮助您开始。
贡献方式
🐛 报告错误
发现了 bug?报告它:
- 先搜索现有问题
- 创建 bug 报告,包含:
- 清晰的标题和描述
- 重现步骤
- 预期 vs 实际行为
- 环境详情(操作系统、Node 版本等)
- 相关截图(如适用)
💡 建议功能
有好主意?提议它:
- 检查路线图和现有讨论
- 创建功能请求,包含:
- 问题陈述
- 建议的解决方案
- 用例
- 潜在的实现
📖 改进文档
文档也是代码!您可以:
- 修正拼写和语法
- 添加示例
- 澄清混淆的部分
- 翻译成其他语言
- 添加新指南
🔧 代码贡献
准备编码?太好了!
- 从标记为
good-first-issue的问题开始 - 遵循下面的贡献指南
- 提交拉取请求
开发设置
前提条件
- Node.js >= 18
- pnpm(推荐)或 npm
- Git
Fork 和克隆
# 在 GitHub 上 fork 仓库
# 克隆您的 fork
git clone https://github.com/YOUR_USERNAME/downcity.git
cd downcity
# 添加 upstream 远程
git remote add upstream https://github.com/wangenius/downcity.git安装依赖
# 安装依赖
pnpm install
# 设置开发环境
pnpm dev:setup构建和测试
# 构建项目
pnpm build
# 运行测试
pnpm test
# 运行 linter
pnpm lint
# 类型检查
pnpm typecheck项目结构
downcity/
├── packages/
│ ├── cli/ # CLI 工具
│ ├── core/ # 核心 agent 逻辑
│ ├── llm/ # LLM 提供商实现
│ └── tools/ # 内置工具
├── homepage/ # 文档站点
└── examples/ # 示例配置进行更改
分支策略
# 创建功能分支
git checkout -b feature/my-feature
# 或修复 bug
git checkout -b fix/issue-123
# 或文档
git checkout -b docs/update-guide提交消息
遵循约定式提交:
feat: 添加对自定义工具的支持
fix: 解决任务调度器中的竞态条件
docs: 更新安装指南
chore: 升级依赖
test: 为权限系统添加测试
refactor: 改进 LLM 提供商抽象代码风格
遵循项目的代码风格:
# 运行格式化工具
pnpm format
# 运行 linter
pnpm lint:fix
# 类型检查
pnpm typecheck拉取请求流程
提交之前
- 运行测试:
pnpm test - 格式化代码:
pnpm format - 检查类型:
pnpm typecheck - 更新文档:如适用
- 添加测试:针对新功能
提交 PR
- 推送到您的 fork
- 创建拉取请求到
wangenius/downcity:main - 填写 PR 模板:
- 更改描述
- 相关问题
- 测试步骤
- 破坏性更改(如有)
审查流程
维护者将审查您的 PR 并提供反馈。解决审查意见并更新您的分支。
合并
一旦批准,您的 PR 将被合并。维护者将:
- 如需要则压缩提交
- 更新更新日志
- 部署到生产环境
编码标准
TypeScript
- 使用严格模式
- 避免
any类型 - 优先使用
const/let而不是var - 回调使用箭头函数
- 为公共 API 编写文档
- 在
cli/city/src内可使用@/路径别名(映射到src),pnpm build会自动回写为bin中可运行的相对路径
测试
- 为新功能编写单元测试
- 目标是 >80% 的代码覆盖率
- 模拟外部依赖
- 测试边缘情况
文档
- 为公共 API 编写文档
- 添加 JSDoc 注释
- 包含使用示例
- 如果行为更改,更新指南
开发工作流程
功能开发示例
# 1. 创建分支
git checkout -b feature/add-discord-plugin
# 2. 进行更改
# ... 编辑文件 ...
# 3. 提交更改
git add .
git commit -m "feat: 添加 Discord bot 集成"
# 4. 测试
pnpm test
# 5. 推送到 fork
git push origin feature/add-discord-plugin
# 6. 在 GitHub 上创建 PR
# 访问您的 fork 并创建拉取请求与上游同步
保持您的 fork 最新:
# 获取上游更新
git fetch upstream
# 合并上游 main
git checkout main
git merge upstream/main
# 推送到您的 fork
git push origin main社区准则
行为准则
- 保持尊重和包容
- 提供建设性反馈
- 优雅地接受反馈
- 关注什么对社区最有利
获取帮助
- 在 Discord 中提问
- 为复杂主题开始讨论
- 尽早请求审查(WIP PR)
开发者起源证书
通过贡献,您同意 DCO:
开发者起源证书
版本 1.1
1. 开发者和利益相关者通过贡献和补丁与项目的合作
是项目的预期合作和协作方法。
2. 开发者保证:
(a) 贡献全部或部分由我创建,我有权在文件中
指示的开源许可证下提交;或
(b) 贡献基于先前的工作,据我所知,涵盖在适当的
开源许可证下,我有权在该许可证下提交该工作,
包括对其进行的修改,无论是全部或部分由我创建,
与该项目相关的同一开源许可证(除非被允许
在不同许可证下提交),如文件中所示;或
(c) 贡献直接由我提供的其他一些创建、认证 (a)、(b)
或 (c) 且我未修改它的人。
(d) 我理解并同意该项目和贡献是公开的,贡献记录
(包括我提交的所有个人信息,包括我的签名)
将无限期维护,并根据该项目或所涉及的开源许可证
一致地重新分发。添加到您的提交:
git commit -s -m "feat: 添加新功能"项目特定指南
核心包更改
对于 packages/city 的更改:
- 为新功能添加测试
- 如需要更新架构文档
- 考虑向后兼容性
CLI 更改
对于 cli/city 的更改:
- 更新 CLI 帮助文本
- 添加使用示例
- 为新命令编写文档
文档更改
对于 homepage/ 的更改:
- 本地测试:
pnpm dev - 检查损坏的链接
- 如需要更新导航
资源
文档
社区
- Discord - 实时聊天
- Telegram 社区群组 - 问答
- GitHub Issues - Bug 报告
认可
感谢您的贡献!您的帮助让 Downcity 对每个人都更好。
贡献者在以下地方得到认可:
- 贡献者
- 发布说明
- 年度亮点
下一步
准备贡献?
- 查找 good first issues
- 加入 Discord 社区
- 开始编码!🚀