感谢你为 code-terminator 做出贡献。提交变更前,请先确认你的工作
已关联明确的问题描述,并且可以被其他开发者复现、审查和验证。
所有开发工作都应从 Issue 开始。请先搜索现有 Issue,避免重复提交。
Bug Report 请至少包含以下内容:
- 标题:
[Bug]+ 一句话概述问题 - 版本信息:提交 SHA、运行环境、Python 或 Node 版本
- 复现步骤:按顺序列出最小复现步骤
- 预期结果:说明正确行为
- 实际结果:说明错误现象、报错信息或截图
- 影响范围:是否阻塞主流程、是否存在回退方案
- 附加信息:日志、截图、配置差异、相关链接
示例:
[Bug] Worker runtime fails when Docker image is unavailable
Version
- commit: abcdef1
- OS: Ubuntu 24.04
- Python: 3.11
Steps to reproduce
1. Set CODEX_WORKER_DOCKER_IMAGE to a non-existing image
2. Run uv run python scripts/dispatch_real_worker_task.py
Expected result
- The CLI returns a clear configuration error
Actual result
- The process exits with an uncaught exception
Feature Request 请至少包含以下内容:
- 标题:
[Feature]+ 一句话概述需求 - 背景问题:当前流程的缺口或痛点
- 目标收益:该功能解决什么问题、服务谁
- 建议方案:核心设计、接口变化、约束条件
- 备选方案:是否评估过其他实现方式
- 验收标准:可以量化的完成条件
- 附加上下文:相关 Issue、设计稿、日志或讨论链接
示例:
[Feature] Add reviewer approval status to leader event stream
Background
- The UI cannot show whether a task is waiting for review
Proposal
- Add a reviewer status field in the event payload
- Persist the field in the checkpoint snapshot
Acceptance criteria
- Backend exposes reviewer status in history API
- Web UI renders the latest reviewer state
请在独立分支上开发,不要直接在 main 分支提交。
默认分支前缀如下:
feature/<issue-id>-<short-description>:新功能或非紧急增强bugfix/<issue-id>-<short-description>:缺陷修复hotfix/<issue-id>-<short-description>:线上紧急修复
命名要求:
- 使用小写字母和
kebab-case issue-id必须对应已存在的 Issue 编号short-description保持简短,建议不超过 5 个单词
示例:
feature/123-add-reviewer-status
bugfix/456-fix-history-pagination
hotfix/789-recover-worker-dispatch
如果维护者为纯文档改动单独指定分支名,例如
docs/contributing-guide,以对应 Issue 或 reviewer 要求为准;
未特别说明时,仍按 feature/、bugfix/、hotfix/ 规则执行。
所有 Pull Request 都必须关联 Issue,并通过代码审查后才能合并到
main。默认流程如下:
- 创建或认领一个 Issue,并确认验收标准。
- 从最新
main拉出独立分支进行开发。 - 完成代码、文档和测试更新,并自行检查改动范围。
- 提交 PR,在描述中关联 Issue,例如
Closes #123。 - 至少获得 1 个 reviewer 批准后再合并。
PR 描述建议包含以下内容:
- 变更背景与目标
- 主要实现说明
- 风险点与回滚方式
- 验证方式与执行结果
- 关联 Issue 编号
提交 PR 前,请确认以下检查项全部完成:
- 已关联 Issue,并在 PR 描述中写明
Closes #<id> - 变更范围聚焦单一主题,没有混入无关修改
- 已补充或更新必要文档
- 已补充或更新与改动匹配的测试
- 本地执行过相关验证命令,结果通过
- 未提交密钥、令牌、个人配置或临时调试代码
- 若存在破坏性变更,已在 PR 描述中明确说明
提交信息使用 Angular 风格:
type(scope): subject
规则:
type使用小写,常用值包括feat、fix、docs、refactor、test、chore、ciscope可选,建议填写模块名,例如api、worker、websubject使用祈使句,简洁说明本次改动,不以句号结尾
示例:
feat(api): add reviewer status to history response
fix(worker): handle missing docker image gracefully
docs(readme): clarify local runtime requirements
test(app): cover invalid plan state transitions
建议:
- 一个 commit 只处理一个明确目标
- 避免使用
update、fix stuff之类无信息量描述 - 大改动请拆分为多个可审查的 commit
请优先遵循仓库现有代码结构、命名方式和模块边界,不要为单次需求 引入额外复杂度。
代码风格要求:
- Python 代码兼容项目要求的
Python >= 3.11 - 保持函数职责单一,避免无关重构混入功能修改
- 新增接口、状态字段或配置项时,同步更新相关文档
- 前后端变更需保持接口字段、类型定义和文档一致
测试要求:
- 功能修复和新功能默认都要附带测试或说明无法补测的原因
- Python 相关改动至少运行:
uv run pytest- 若只影响特定模块,可补充执行最相关的测试文件,例如:
uv run pytest tests/test_leader_event_runtime.py tests/test_leader_query_set.py- 若改动涉及真实 Docker Worker / Kimi 集成链路,优先补充并执行本地集成验证:
uv run --python python3.12 python scripts/run_kimi_local_integration.py- 若需要把真实 Kimi 集成用例纳入 pytest,请显式打开:
RUN_KIMI_LOCAL_INTEGRATION=1 \
OPENAI_BASE_URL="https://your-openai-compatible-endpoint" \
OPENAI_API_KEY="your-api-key" \
uv run --python python3.12 pytest -q tests/test_kimi_local_integration.py- 提交前建议同步检查:
docs/kimi-local-integration-checklist.md
docs/kimi-local-integration-troubleshooting.md
- 涉及 Web 或联调改动时,至少确认开发环境可以正常启动:
npm run dev在测试、文档和代码审查要求都满足后,再发起合并请求。