ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Open Interpreter 贡献指南:分支范围界定、PR 提交流程与模型/提供商元数据生成管线

Open Interpreter 贡献指南:分支范围界定、PR 提交流程与模型/提供商元数据生成管线 Open Interpreter 贡献指南分支范围界定、PR 提交流程与模型/提供商元数据生成管线【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreterOpen Interpreter 是 OpenAI Codex 的一个开源分支本指南面向希望向该分支提交代码、文档或元数据修复的开发者说明项目「究竟在管什么」——低内存多标签运行时、模型/提供商适配层、专属 TUI 与安装器——以及哪些通用改动应回馈上游。读完本文你将掌握如何先立议题再动手、如何按仓库规范格式化并跑最小测试、为什么绝不能手改 Rust 里的模型列表以及如何通过codex-rs/scripts/下的生成器脚本安全地刷新提供商与模型目录。关联文档docs/contributing.md中文版见 docs/zh/contributing.md仓库官方安全政策见 SECURITY.md。贡献边界这个分支「拥有」什么Open Interpreter 定位为 Codex 的衍生分支产品范围更窄。仓库只接受影响分支「所有权」范围内的改动主要包括Open Interpreter 的低内存多标签运行时以及共享运行时相关的工作模型/提供商适配层harness行为适配层选择、适配层兼容性、提供商专属的 coding-agent 行为Open Interpreter 特有的 TUI 与引导流程模型选择器、状态 UI、onboarding 界面安装程序、独立standalone目录布局与更新行为提供商/模型目录的生成面向 Open Interpreter 支持的提供商Open Interpreter 文档、示例与迁移指南。反过来以下几类改动主要属于上游 Codex 的关注范围应直接提交到上游仓库而不是在本分支里打补丁通用沙箱sandbox内部实现通用 MCP 协议行为通用 app-server 协议改动与 Open Interpreter 产品方向无关的宽泛 CLI 功能。把通用修复留在上游既让两个项目同时受益也能显著降低分支长期演进带来的 fork drift。这一点在判断「改动归属」时是第一原则判断标准不是代码是否在仓库里而是这个行为是否由 Open Interpreter 的产品方向所拥有。首次贡献步骤先议事后动手在打开 Pull RequestPR之前请先打开或加入一个issue把行为与改动范围讨论清楚。这并非形式主义——下列改动方向风险高、影响面大尤其需要提前对齐改动领域为什么需要提前讨论低内存多标签行为、共享运行时涉及内存调度与运行时资源分配影响面广适配层选择 / 兼容性 / 提供商专属 coding-agent 行为关系到多个提供商接入矩阵容易引入回归TUI、onboarding、模型选择器、状态 UI直接决定用户体验与首次启动引导安装器、独立布局、更新行为与打包发布流程耦合改动成本高Open Interpreter 支持提供商的 provider/model 目录生成属于自动生成工件必须走生成管线见下文文档、示例、迁移指南面向用户的对外承诺需与实际行为一致属于上游 Codex 关注范围的改动则应该在上游仓库发起议题与 PR例如通用沙箱、MCP 协议、app-server 协议等。提交拉取请求的硬性要求聚焦与可审查性保持每个 PR 改动聚焦、易于审查。一个 PR 解决一个问题并遵循改动影响用户行为时同步更新docs/下相关文档并在合适位置更新 CLI 帮助信息--help文案避免在同一个 PR 里夹带无关重构——无关重构会显著拖慢 review 并模糊 diff 的真实意图。代码改动四步走针对代码改动仓库的要求顺序非常明确对改动区域运行格式化工具先运行最窄的、有意义的测试目标在可行时为行为改动补充回归测试保持 PR 内容聚焦见上。格式化工具怎么跑仓库根目录的 scripts/format.py 是统一的格式化入口它并行管理五组 formatter源码中对每个分组都有明确职责注释分组底层工具覆盖范围Justjust --fmtjustfile 本身Rustcargo fmt--config imports_granularityItemcodex-rs工作区Bazel/Starlarktools/buildifierDotSlash 方式调用BUILD、*.bzl、MODULE.bazel等Python SDKuv run --project sdk/python ruff formatruff check --fixsdk/pythonPython 脚本uv run --project scripts ruff formatscripts/目录在仓库根 justfile 中fmt与fmt-check两个 target 就是直接调用这个脚本just fmt会一次跑完全部五组CI 场景用just fmt-check只校验不落盘python3 ../scripts/format.py --check脚本支持--check参数。Rust 的具体风格约束定义在 codex-rs/rustfmt.toml工具链版本由 codex-rs/rust-toolchain.toml 锁定。实操提示如果你的改动只涉及 Rust直接用cargo fmt -- --config imports_granularityItem与 format.py 保持一致即可跨语言改动则统一用just fmt。测试怎么选仓库默认用cargo nextest跑测试justfile中testtargetNEXTEST_PROFILElocal cargo nextest run --no-fail-fast需cargo install --locked cargo-nextest同时用RUST_MIN_STACK8388608保证栈空间。遵循「窄而准」的原则优先运行你改动的 crate 对应的最小测试目标例如cargo nextest run -p codex-rs 内相关包名的局部子集对行为变更尽量补回归测试——仓库各 crate 的tests/目录如 codex-rs/core/tests、codex-rs/cli/tests积累了相当数量的回归用例可作为参考模板Bazel 路径的开发者可执行just bazel-testbazel test --test_tag_filters-argument-comment-lint //... --keep_going或针对单目标bazel test //codex-rs/...过滤。模型与提供商元数据绝对不要手改 Rust 列表这是本仓库贡献规范中最特别、最容易踩坑的一条提供商/模型的成员关系是自动生成的。不要把手工 patch 模型列表写进 Rust 当作产品修复。原因在于这些目录信息会在编译期被内嵌bundle进二进制。其生成与消费是一个完整的「脚本 → 覆盖配置 → JSON 工件 → include_str! 编译期内嵌」管线两个主生成器文档明确指出的生成器位于codex-rs/scripts/write_provider_catalog.py codex-rs/scripts/write_model_compatibility_catalog.py提供商目录生成器codex-rs/scripts/write_provider_catalog.py拉取社区 models.dev 数据源脚本第 14 行MODELS_DEV_URL https://models.dev/api.json并结合实时 provider 源依据覆盖配置决定「哪些提供商/模型进目录」should_include_provider()脚本第 313-339 行会跳过无 base_url、含${}占位符或指向localhost/127.0.0.1的条目再按支持列表过滤输出工件为 codex-rs/model-provider-info/provider_catalog.json该文件头部generated_from字段会记录本次生成的真实数据来源当前为 models.dev Moonshot、Z.ai、Groq 三个实时源覆盖配置集中在 codex-rs/model-provider-info/provider_catalog_overrides.json包含supported_provider_npm_packages按 AI SDK npm 包过滤、include_provider_ids/exclude_provider_ids、api_base_url_overrides、env_key_overrides、live_model_sources、provider_model_metadata_overrides、wire_api_overrides、sort_priorities等段。模型兼容性目录生成器codex-rs/scripts/write_model_compatibility_catalog.py以 LiteLLM 价格/上下文窗口表脚本第 12-15 行为输入为每个模型推导visibilitylist/hide、reasoning_controleffort/thinking_toggle/none、supported_parameters、supported_reasoning_levels、input_modalities与context_window等字段输出工件为 codex-rs/codex-api/model_compatibility_catalog.json覆盖配置在 codex-rs/codex-api/model_compatibility_overrides.json含force_hide_ids与metadata_overrides。运行时如何消费工件两个工件都由 Rust 在编译期通过include_str!内嵌进二进制运行期只做惰性解析codex-rs/model-provider-info/src/bundled_provider_catalog.rs 用OnceLock把provider_catalog.json解析成静态切片并提供按provider_id或归一化base_url的查询函数同文件第 84-99 行附近的测试会断言目录中必须包含github-models、anthropic、deepseek、moonshotai等关键提供商。codex-rs/codex-api/src/model_compatibility_catalog.rs 将model_compatibility_catalog.json反序列化为CompatibleModelCatalogEntry字段带#[serde(default)]兼容性扩展友好codex-rs/models-manager/src/compatibility_enrichment.rs 的模块头注释进一步说明了它在模型管理侧的消费关系。这条链路意味着手改 JSON 工件或手改 Rust 中的模型表都会被下一次「重新生成」覆盖因此任何目录级修复都必须落在「生成器输入上游数据源」或「overrides 覆盖文件」上然后重新运行生成脚本。如何只刷新特定提供商生成器脚本自带细粒度刷新能力文档给出的关键命令是python3 codex-rs/scripts/write_provider_catalog.py --provider id该参数定义在 write_provider_catalog.py 中--provider以append方式接收destprovider_ids。它的语义值得展开--provider id只替换已有生成工件中该 provider 的条目其余条目原样保留——见write_catalog()脚本第 359-404 行被选中的 provider 会重新生成未选中的从现有OUTPUT_PATH读回并入该选项可重复传多次用于一次性刷新一批相关提供商这样做的直接收益是不需要为无关的实时 provider 源准备凭证——因为只有被点名的 provider 才会触发各自的live_model_sources网络请求该逻辑在merge_live_provider_models()中需要 Bearer 凭证的源会从auth_env指定的环境变量取 token缺失时脚本会报错退出若传入的--provider在生成后不存在脚本会报selected providers were not generated: ...并拒绝覆盖工件不带任何--provider参数时则为全量重建产物按sort_priority 名称排序后落盘并打印Wrote N provider entries to ...。模型兼容性目录则整表重建python3 codex-rs/scripts/write_model_compatibility_catalog.py无参数运行即可。改动目录行为的正确姿势修改 overrides 输入如provider_catalog_overrides.json/model_compatibility_overrides.json或上游数据源同步用上述命令重新生成 JSON 工件验证编译期内嵌无异常cargo build/bazel build时会经serde解析异常会 panic 提示把生成器输入改动 重新生成的工件一起提交而不是只提交手改的模型列表。面向用户的文档必须同步当模型/提供商/配置的用户可见行为发生变化时仓库要求同步更新下列文档注意仓库同时维护英文版与docs/zh/中文版改动时两份通常都要覆盖模型说明docs/models.md / docs/zh/models.md提供商说明docs/providers.md / docs/zh/providers.md配置参考docs/config-reference.md / docs/zh/config-reference.md这与「改动影响用户行为需更新文档」是同一原则在元数据领域的具体化provider 目录决定了codex登录与接入清单模型兼容性目录决定了模型选择器里模型的可见性、排序与推理参数能力任何增减都会直接暴露给终端用户。安全问题如何报告规范明确要求不要在公开 issue 线程里报告漏洞。完整的报告流程见仓库根 SECURITY.md要点如下若漏洞落在 Open Interpreter 拥有的面适配层仿真、provider 兼容性、打包与更新、ACP 支持、兼容/导入行为等请以邮件正文主题Open Interpreter security report通过仓库列出的安全联系人私密提交仓库会在内部完成分类与路由若该漏洞在未改动的上游 Codex 中同样存在则优先走上游披露流程让上游先修复Open Interpreter 再随上游版本合入修复无法确定归属时一律走 Open Interpreter 的私密渠道仓库负责把继承自上游的问题转交而不公开敏感细节。小结一份高质量 PR 的自检清单把整篇规范浓缩成提交前的自检列表归属正确改动是否在 Open Interpreter 的所有权范围内通用 Codex 行为是否已计划提交上游先有议题是否已与维护者在 issue 中确认行为与范围改动聚焦有没有夹带无关重构格式达标是否对改动区域跑了just fmt或等价工具测试精准是否先跑了最窄的测试目标并为行为变更补了回归测试元数据走管线涉及 provider/model 的改动是否改的是 overrides/生成器输入并重新生成工件而非手改 Rust 或 JSON文档同步用户可见行为变化是否同步了 docs/models.md、docs/providers.md、docs/config-reference.md含中文版以及 CLI 帮助信息安全合规漏洞是否走了私密渠道而非公开 issue遵循上述流程既能保证分支低 drift、可长期演进也能让你的贡献更快、更顺畅地被审查与合入。【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表