OpenClaw 中的 PR 和提交约定
本文档基于存储库分析,记录了关于 OpenClaw git 工作流程、PR 模板和 pre-commit 钩子的观察。这些约定确保 PR 可审查、安全且文档记录正确。
提交格式: Conventional Commits
OpenClaw 使用带有作用域的 Conventional Commits。
格式
常见类型
fix- 错误修复feat- 新功能refactor- 代码重构(无行为变化)docs- 文档更改test- 测试添加或修复chore- 构建、CI 或工具更改perf- 性能改进security- 安全修复
常见作用域
基于 git 历史分析:
- 平台集成:
android,ios,macos,telegram,slack,discord - 核心系统:
gateway,agents,config,skills,sandbox,memory - UI:
ui,control-ui - 基础设施:
ci,cd,build,deps - 安全:
security,auth,secrets
示例
PR 模板要求
PR 模板位于 .github/pull_request_template.md 中,需要特定部分。
必需部分
1. 摘要(2-5 个要点)
解释:
- 问题: 此 PR 解决的问题
- 为什么: 为什么需要此更改
- 更改内容: 更改的高级描述
- 范围边界: 范围内与范围外的内容
示例:
2. 更改类型(复选框)
3. 作用域(复选框)
4. 安全影响(必需)
关键部分 - 每个 PR 都必须完成。
5. 重现 + 验证
6. 证据
7. 人工验证(必需)
关键部分 - 解释您亲自验证的内容。
8. 兼容性/迁移
9. 故障恢复
Pre-Commit 钩子
Pre-commit 钩子在 .pre-commit-config.yaml 中配置,并通过 prek install 安装。
安装
注意: OpenClaw 使用 prek(而非标准的 pre-commit)。
钩子管道
钩子按以下顺序运行:
1. 基本检查
- 尾随空格删除
- 文件末尾修复程序
- 合并冲突检测
2. 密钥检测
detect-secrets带基线(.secrets.baseline)- 防止意外提交 API 密钥、令牌或密码
3. Shell Linting
shellcheck用于 shell 脚本- 强制执行 shell 脚本最佳实践
4. GitHub Actions Linting
actionlint用于工作流语法zizmor用于 Actions 中的安全问题
5. Python 检查(用于技能)
ruff用于 linting 和格式化pytest用于 Python 技能测试
6. 依赖审计
pnpm audit用于生产依赖项- 高严重性漏洞会失败
7. TypeScript Linting 和格式化
oxlint(不是 ESLint)oxfmt(不是 Prettier)
8. Swift 检查(用于 macOS/iOS)
swiftlint用于 Swift lintingswiftformat用于 Swift 格式化
绕过钩子(不推荐)
警告: 仅在有特定原因并了解风险时绕过钩子。
Changelog 约定
Changelog 更新位于存储库根目录的 CHANGELOG.md 中。
格式
指南
- 仅面向用户 - 不要包含内部重构,除非它们影响用户
- 感谢贡献者 - 对外部贡献使用
(thanks @username) - 按类型分组 - "Changes"用于功能,"Fixes"用于错误修复
- 使用 conventional commit 格式 - 与提交消息相同的格式
示例
Git 工作流程摘要
为什么这很重要
遵循这些约定可确保:
- 可审查性 - PR 包含审查者所需的所有必要上下文
- 安全性 - Pre-commit 钩子捕获密钥和安全问题
- 一致性 - Conventional commits 使历史记录可搜索
- 文档 - Changelog 准确反映面向用户的更改
- CI 可靠性 - Pre-commit 钩子在 CI 运行之前捕获问题