感谢您对 HarnessCode 项目的关注!我们欢迎各种形式的贡献,包括但不限于代码、文档、问题报告和功能建议。
本项目遵循 Contributor Covenant 行为准则。参与本项目即表示您同意遵守其条款。
- Python 3.8+
- Git
- OpenCode 或 Claude Code(测试需要)
-
Fork 仓库
# 在 GitHub 上 Fork 仓库 git clone https://github.com/你的用户名/harnesscode.git cd harnesscode
-
创建虚拟环境
# Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate
-
安装开发依赖
pip install -e ".[dev]" -
设置 pre-commit 钩子(可选但推荐)
pre-commit install
-
验证环境
pytest ruff check src/ mypy src/
- 使用 Ruff 进行代码风格检查和格式化
- 行宽限制:88 字符
- 使用类型提示(Type Hints)
- 所有公共函数必须有文档字符串(Docstring)
| 类型 | 规范 | 示例 |
|---|---|---|
| 类名 | PascalCase | GitRepository, ConfigManager |
| 函数/变量 | snake_case | get_project_config, file_path |
| 常量 | UPPER_SNAKE_CASE | MAX_DEPTH, DEFAULT_TIMEOUT |
| 私有成员 | _leading_underscore | _internal_method |
使用 Google 风格的文档字符串:
def function_with_types(param1: int, param2: str) -> bool:
"""函数简要描述。
函数详细描述(如果需要)。
Args:
param1: 参数1的描述
param2: 参数2的描述
Returns:
返回值的描述
Raises:
ValueError: 异常情况的描述
Examples:
>>> function_with_types(1, "test")
True
"""- 每个模块都应该有清晰的职责
- 避免循环导入
- 使用相对导入在包内引用
- 查看 Issues 中标记为
good first issue或help wanted的任务 - 如果你想实现新功能,先创建 Issue 讨论
git checkout -b feature/your-feature-name
# 或
git checkout -b fix/issue-description- 编写代码
- 添加测试
- 更新文档
# 运行所有测试
pytest
# 运行特定测试
pytest tests/test_installer.py
# 生成测试覆盖率报告
pytest --cov=src --cov-report=html# 代码风格检查
ruff check src/
# 代码格式化
ruff format src/
# 类型检查
mypy src/git add .
git commit -m "feat: 添加新功能描述"
git push origin feature/your-feature-name- 在 GitHub 上创建 PR 到
main分支 - 填写 PR 模板中的所有必要信息
- 确保所有 CI 检查通过
我们使用 Conventional Commits 规范:
<类型>[可选 范围]: <描述>
[可选 正文]
[可选 脚注]
| 类型 | 描述 | 示例 |
|---|---|---|
feat |
新功能 | feat: 添加Git分支选择功能 |
fix |
修复bug | fix: 修复路径解析错误 |
docs |
文档更新 | docs: 更新安装说明 |
style |
代码格式调整 | style: 调整缩进格式 |
refactor |
代码重构 | refactor: 重构配置加载逻辑 |
test |
测试相关 | test: 添加配置模块测试 |
chore |
构建/工具相关 | chore: 更新依赖版本 |
# 新功能
git commit -m "feat(scanner): 添加多Git仓库并行扫描支持"
# 修复bug
git commit -m "fix(config): 修复YAML解析编码问题"
# 带正文的提交
git commit -m "feat(init): 添加分支选择功能
- 支持本地和远程分支选择
- 支持新建分支
- 支持多个Git仓库依次处理
Closes #123"使用 Bug 报告模板 创建 Issue,包含:
-
环境信息
- 操作系统和版本
- Python版本
- HarnessCode版本
- AI后端(OpenCode/Claude Code)
-
重现步骤
# 具体的命令和操作 hc init hc start -
期望行为
- 描述你期望发生什么
-
实际行为
- 描述实际发生了什么
- 包含错误信息、日志、截图
-
补充信息
- 相关配置
- 可能的解决方案
如果发现安全漏洞,请不要公开创建 Issue。请通过邮件联系维护者。
使用 功能请求模板 创建 Issue,包含:
-
问题描述
- 这个功能要解决什么问题?
-
解决方案
- 你希望如何实现?
-
替代方案
- 考虑过哪些替代方案?
-
使用场景
- 具体的使用示例
- 代码符合项目规范
- 有足够的测试覆盖
- 文档已更新(如需要)
- 没有破坏现有功能
- 性能可接受
- 安全性考虑
- 至少需要一位维护者批准
- 所有 CI 检查必须通过
- 解决所有审查意见
- 使用 "Squash and merge" 合并
遵循 语义化版本:
- 主版本号:不兼容的API修改
- 次版本号:向下兼容的功能性新增
- 修订号:向下兼容的问题修正
- 更新
pyproject.toml中的版本号 - 更新
CHANGELOG.md - 创建 Git 标签:
git tag v4.2.0 - 推送标签:
git push origin v4.2.0 - GitHub Actions 自动发布到 PyPI
- 讨论区:GitHub Discussions
- 问题:GitHub Issues
- 邮件:维护者邮箱
感谢所有贡献者的付出!您的每一份贡献都让 HarnessCode 变得更好。
最后更新:2026年3月28日 维护者:yzddp (油炸电灯泡)