贡献
此项目正在积极开发中,代码可能会发生相当显著的变化。
目前,我们只计划优先审查错误或安全修复的外部贡献。
如果你想添加新功能或更改现有功能的行为,请提出建议该功能的问题,并在花费时间构建之前获得 OpenAI 团队成员的批准。
未经此过程的新贡献可能会被关闭,如果它们与我们的当前路线图不一致或与其他优先级/即将推出的功能冲突。
开发工作流
- 从
main
创建一个_主题分支_ - 例如feat/interactive-prompt
。 - 保持你的更改专注。多个不相关的修复应该作为单独的 PR 打开。
- 遵循上面的开发设置说明,确保你的更改没有 lint 警告和测试失败。
编写高影响力的代码更改
- 从一个问题开始。 打开一个新问题或在现有讨论上发表评论,这样我们可以在编写代码之前就解决方案达成一致。
- 添加或更新测试。 每个新功能或错误修复都应该带有测试覆盖,在你的更改之前失败,之后通过。不需要 100% 的覆盖率,但要有意义的断言。
- 记录行为。 如果你的更改影响面向用户的行为,请更新 README、内联帮助(
codex --help
)或相关示例项目。 - 保持提交原子化。 每个提交都应该能够编译并且测试应该通过。这使得审查和潜在的回滚更容易。
打开拉取请求
- 填写 PR 模板(或包含类似信息)- 什么?为什么?如何?
- 在本地运行所有检查(
cargo test && cargo clippy --tests && cargo fmt -- --config imports_granularity=Item
)。可以在本地捕获的 CI 失败会拖慢整个过程。 - 确保你的分支与
main
保持最新,并且你已经解决了合并冲突。 - 只有当你认为 PR 处于可合并状态时,才将其标记为准备好审查。
审查过程
- 将分配一个维护者作为主要审查者。
- 如果你的 PR 添加了以前未讨论和批准的新功能,我们可能会选择关闭你的 PR(参见贡献)。
- 我们可能会要求更改 - 请不要个人化。我们重视这项工作,但我们也重视一致性和长期可维护性。
- 当大家一致认为 PR 达到标准时,维护者将进行压缩合并。
社区价值观
- 友善和包容。 尊重他人;我们遵循贡献者公约。
- 假设善意。 书面沟通很难 - 宽大为怀。
- 教学与学习。 如果你发现令人困惑的地方,请打开问题或 PR 进行改进。
获取帮助
如果你在设置项目时遇到问题,想要对想法的反馈,或者只是想说声_你好_ - 请打开讨论或跳转到相关问题。我们很乐意提供帮助。
我们可以一起使 Codex CLI 成为一个令人难以置信的工具。快乐编程! :rocket:
贡献者许可协议 (CLA)
所有贡献者必须接受 CLA。过程很简单:
- 打开你的拉取请求。
- 粘贴以下评论(如果你以前签署过,请回复
recheck
):
text
我已阅读 CLA 文档并在此签署 CLA
- CLA-Assistant 机器人会在仓库中记录你的签名并将状态检查标记为通过。
不需要特殊的 Git 命令、电子邮件附件或提交页脚。
快速修复
场景 | 命令 |
---|---|
修改最后一次提交 | git commit --amend -s --no-edit && git push -f |
DCO 检查会阻止合并,直到 PR 中的每个提交都带有页脚(使用压缩,这只是一个)。
发布 codex
仅限管理员。
确保你在 main
上并且没有本地更改。然后运行:
VERSION=0.2.0 # 也可以是 0.2.0-alpha.1 或任何有效的 Rust 版本。
./codex-rs/scripts/create_github_release.sh "$VERSION"
这将在 main
之上进行本地提交,在 codex-rs/Cargo.toml
中将 version
设置为 $VERSION
(注意在 main
上,我们将版本保留为 version = "0.0.0"
)。
这将使用标签 rust-v${VERSION}
推送提交,这反过来会启动发布工作流。这将创建一个名为 $VERSION
的新 GitHub Release。
如果生成的 GitHub Release 中的一切看起来都很好,请取消选中预发布框,使其成为最新版本。
创建 PR 来更新 Homebrew 上的 Formula/c/codex.rb
。
安全和负责任的 AI
你是否发现了漏洞或对模型输出有担忧?请发送电子邮件至 security@openai.com,我们将及时回应。