ARTICLE DETAIL

资讯详情

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

OpenCodex 夜间 Issue 分诊实录:从 11 个报告到三桶分类与源码级修复路线

OpenCodex 夜间 Issue 分诊实录:从 11 个报告到三桶分类与源码级修复路线 【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载本文以 OpenCodex面向 OpenAI Codex 与 Claude Code 的通用 Provider 代理在 2026-07-22 夜间12:41Z–20:39Z集中涌现的 11 个 GitHub Issue 为切入点完整还原仓库维护者devlog/_fin/260723_issue_triage/单元中盘点 → 独立审计 → 并行调查 → 结论归档 → 修复落地的分诊闭环。读者将看到每个 Issue 如何被判定为可关闭的配置问题 / 需立即调查的源码缺陷 / 长期路线图以及 #289、#292、#287、#295/#300 五个确认缺陷最终以何种方案落地为源码变更。文中所有结论均可回溯到 issue 清单、调查文档 与当前src/实现。分诊单元的结构与目标本次分诊的目标文件是 001_issue_inventory.md它记录了 2026-07-23 KST 凌晨通过gh issue list --state open与gh issue view拉取到的 11 个 Issue#280 为前夜收到解决确认的旧 Issue其余为当夜新开。单元计划 000_plan.md 明确了执行纪律只做调查与文档不直接改生产代码工作相内不触碰src/、tests/、gui/不向 GitHub 发评论、不 push三桶分类Bucket 1回答 关闭、Bucket 2立即调查/修复、Bucket 3长期路线图并行调查B 阶段用 6 个 Sol workergpt-5.6-sol/ priority / high分别对 6 个调查车道做只读源码审计每个 worker 产出一份带path:line精确锚点的调查文档验收标准每个 Bucket 2 调查文档必须包含至少 3 个可复验的源码锚点、明确结论opencodex-bug / upstream / feature / needs-repro与工作量估算。最终的分类结果见 009_triage_result.md为Bucket 1 四个#280、#291、#288、#297Bucket 2 六个#287、#289、#290、#292、#295、#300Bucket 3 一个#294。11 个 Issue 速览#标题缩写报告人最终分桶结论280codex 无法通信rushidea1缺少启用的 openai Provider属配置错误fail-closed 是设计行为287Linux 上 Claude Code 自动连接未生效jhste102lab2darwin-only 注入与 GUI 承诺不一致走 GUI 诚实化修复288spawn_agent 拒绝自定义模型Ark/glm-5.2Kling00121边界混合Catalog 由 OpenCodex 注入校验由 Codex 执行289Volcengine Ark Agent Plan URL 重复 /v1lijianmac2key-auth 适配器强制拼/v1/responses确认缺陷290V2 自定义父模型发出空 spawn_agent 参数brunoflma2需要四边界抓包与 #92 不同源291Providers 页缺少编辑按钮str02031功能已存在Provider workspace Settings PATCH292allowPrivateNetwork 被 model discovery 忽略str02032发现路径根本没有目标策略守卫SyntaxError 是诊断缺陷294Claude 账号池str02033自动配额路由/亲和性/冷却/故障转移属架构级295Multi-agent 指南宣传被拒模型mihneaptu2文案与名册均与实际运行时契约不符确认缺陷297catalog clamp 剥离 max/ultraWibias1机制存在但当前二进制不触发需要版本证据300multi-agent 指南注入需要总开关ildunari2功能缺口确认与 #295 同一处代码Bucket 1配置问题与已存在能力的判定四个被关闭的 Issue 展示了分诊中审计推翻初始判断的价值。#280codex 无法通信报告人只启用了cursor一个 Provider直接选择裸的gpt-5.6-sol时因没有启用的 OpenAI Provider而 fail-closed。维护者引导执行ocx provider add openai --sync保留 Cursor 配置后新旧会话均恢复正常。这是典型的用户配置不完整 代理刻意 fail-closed组合最终作为配置问题回答并关闭。#291编辑按钮A 阶段审计发现该能力其实早已上线——Provider workspace 的 Settings 表单可编辑 adapter、baseUrl、defaultModel、authMode、note、allowPrivateNetwork保存路径为onUpdateProvider→PATCH /api/providersmanagement-api.ts 相关实现。因此从 Bucket 3 直接提升为 Bucket 1答复指向 Settings 页签并等待报告人确认后关闭。#288spawn_agent 拒绝 Ark/glm-5.2最初是 Bucket 1 候选但 A 阶段审计发现边界比表面复杂。Codex Desktop 在 Windows 上主会话经 OpenCodex 路由到 Volcengine ARK但spawn_agent(modelArk/glm-5.2)在请求到达代理之前就报Unknown model ... Available models: gpt-5.6-sol, gpt-5.6-terra。调查文档 007_investigation_290_288_spawn_agent.md 的结论是混合边界OpenCodex 注入的 catalog 决定候选行config.subagentModels作为 featured 排序输入catalog.ts 中 priority 最低者排在最前对应 Codex 的MAX_SPAWN_AGENT_MODEL_OVERRIDES5上限校验本身由 Codex 在上游完成multi_agent_version必须与当前 v2 后端匹配multi_agents_common.rs 的上游锚点默认模式下只有gpt-5.6-sol/gpt-5.6-terra被上游 pin 为 v2gpt-5.6-luna为 v1Ark 行无 pin因此被 V2 校验排除。工作区方案ocx v2 mode v2把所有 catalog 行强制标记 v2src/cli/v2.ts或将 Ark 加入 Dashboard 的 Sub-agents 列表subagentModels使其进入前五广告位省略model参数则继承父模型。这解释了为什么错误文本是 Codex 客户端生成的——候选集合却来自 OpenCodex 注入的 catalog。#297catalog clamp 剥离 max/ultra报告人 Wibias 给出了精确的回归定位b7ce5aadclampCatalogModelsToCodexSupport作为同步的最后一步用二进制内置 catalog 的裸 slug 推理等级并集去过滤所有模型从而撤销了此前ensureGpt56ReasoningLevels/ensureUltraReasoningLevel追加的max/ultra。调查文档 002_investigation_297_catalog_clamp.md 区分了两个层面机制确认codexSupportedReasoningEffortscatalog.ts 对应实现收集裸 slug 的等级并集clampEntryToCodexSupportedEfforts对每个条目含 routed 模型执行过滤等级全部不支持时回退到low/medium/high。合成测试tests/codex-catalog.test.ts明确证明探测集合止于xhigh时 max/ultra 被剥离六阶并集时被保留。当前触发不成立本机codex-cli 0.144.5的codex debug models --bundled输出显示 Sol/Terra 均含low…ultra六阶、Luna 含 max并集覆盖全部 OpenCodex 等级clamp 实际是 no-op。0.133.0 这类严格枚举二进制才是 clamp 存在的意义防止 catalog 反序列化失败。评估三个候选方案Option A从CODEX_REASONING_LEVELS常量播种会使兼容 clamp 失效拒绝Option B按版本门控 clamp是唯一能同时保住 0.133.0 安全性并允许新二进制保留合成等级的方向但必须先拿到报告人二进制的真实输出Option C把 ensure 函数挪到 clamp 之后对 routed 条目不完整且有回归风险拒绝。最终 #297 以提供 0.144.5 六阶并集证据 索取报告人版本信息关闭重开条件是该二进制存在能解析 max/ultra 但自带等级不全的矛盾。Bucket 2确认缺陷与修复路线#289key-auth Responses 适配器强制注入 /v1报告人配置https://ark.cn-beijing.volces.com/api/plan/v3期望请求到/api/plan/v3/responses实际被拼成/api/plan/v3/v1/responses返回 404。调查确认问题锚点005_investigation_289_responses_url.mdkey-auth 分支的正则只剥离结尾的/v1然后无条件追加/v1/responses因此任何非/v1的版本化 base 都会被重复注入/v1。而openai-chat适配器与 forward/OAuth 分支采用baseUrl 即完整 base只追加资源路径的约定如 Z.AI 的/api/coding/paas/v4、腾讯 Coding Plan 的/api/lkeap.cloud.tencent.com/coding/v3都直接存在 registry baseUrl 中。方案评估后选定在OcxProviderConfig上新增可选、相对路径的responsesPath不用responsesUrl避免重复 origin 且需独立目标校验不做Volcengine 主机名特判避免把厂商身份硬编码进通用适配器。缺失时保持现有算法不变向后兼容存在时剥掉 baseUrl 尾斜杠后追加校验过的相对路径要求以/开头拒绝 scheme、query、fragment。当前实现已在 src/adapters/openai-responses/passthrough.ts 落地provider.responsesPath undefined走旧分支否则url \${base}${provider.responsesPath}配套的 URL 矩阵回归在tests/openai-responses-passthrough.test.ts既有/v1Provider 的端到端基线由tests/openai-provider-option-e2e.test.ts 保持。工作量0.5–1 工程日。#292model discovery 的目标策略缺口与 SyntaxError 误诊报告人称allowPrivateNetwork: true能让数据面请求通过但模型发现GET /v1/models仍被拦截如解析到 198.18.0.0/15 基准网段的主机Dashboard 显示 —ocx sync日志报 SyntaxError。调查004_investigation_292_private_network.md推翻了守卫忽略了 allowPrivateNetwork的说法目标策略守卫src/lib/destination-policy.ts覆盖 IPv4 loopback、RFC1918、CGNAT、link-local、198.18.0.0/15基准网段、metadata IP 与 IPv6 对应形态allowPrivateNetwork: true与 registry 内建本地 ProviderOllama、vLLM、LM Studio在同步检查阶段在 DNS 之前短路发现路径fetchProviderModelscatalog.ts 聚合实现持有完整 provider 对象却根本没有调用目标策略——直接fetch(url)后res.ok检查再res.json()catch 只记录error.name。因此SyntaxError不是守卫抛出的守卫抛的是普通Error而是2xx 非 JSON 中间响应体代理/WAF/拦截页在res.json()处解析失败——这恰好解释了 Dashboard 空模型与 sync 日志报错的全部症状。修复方向已落地在buildModelsRequest产出有效 URL 之后、fetch 之前用providerDestinationResolvedError(name, { baseUrl: url, allowPrivateNetwork })校验实际请求 URL而非仅prov.baseUrl因为传输层解析可能改写端点拒绝时走既有 stale/configured 回退同时把 2xx 解析改为内容类型感知的安全诊断只记录 status、URL 类别与 content-type绝不落盘响应体。回归点包括tests/destination-policy-resolved.test.ts的 17 项既有测试其中显式断言 opt-in 时 DNS 不被调用与tests/codex-catalog.test.ts的 198.18.x 双旗标用例。工作量约 0.5 工程日。#287Linux 上 Claude Code 自动连接的GUI 承诺问题报告人观察到 Linux 上/#claude页面保存了systemEnv: true但新开的 shell 没有ANTHROPIC_BASE_URL~/.opencodex/claude-env.sh也不存在——只有ocx claude包装器能路由。报告人明确接受诚实的不支持状态作为合法解法。调查006_investigation_287_linux_autoconnect.md确认四个 darwin-only 守卫全部存在src/server/system-env.ts 的 installShellHook / uninstallShellHook / injectSystemEnv / revertSystemEnv 均以process.platform ! darwin短路并有测试把Linux 上 injectSystemEnv 是 no-op固化为契约tests/system-env.test.ts。macOS 注入是launchctl .zshrc source 钩子双机制写~/.opencodex/claude-env.sh可被OPENCODEX_HOME覆盖权限 0600含代理 URL、网关发现开关、可选 token并向.zshrc追加幂等 source 行同时用launchctl setenv注入 launchd 域并在system-env-port跟踪文件里记录只撤销自己注入过的键user-wins 语义。这些机制无法平移到 Linuxlaunchctl 是 macOS 专属Linux 侧 bash 登录/非登录、zsh、fish 多 shell 启动文件规则不同systemd user 环境无法覆盖 SSH shell/etc/environment需要提权且影响面越界。两个方案对比后选定(b) GUI 诚实化服务端从/api/claude-code返回平台能力字段SettingToggle 增加 disabled 状态非 Darwin 主机上显示本地化仅 macOS请使用ocx claude说明并阻止看似成功的保存当前 PUT 保存systemEnv后静默丢弃not macOS结果仍返回ok: true。这与 docs-site 的 claude-code 指南 中macOS-only的既有边界一致且避免承担跨 shell dotfile 与密钥生命周期的隐性风险。工作量4–8 工程小时方案 (a) 完整 Linux 注入需 2–4 工程日。#295 #300multi-agent 指南的准确性与总开关这是同一处代码的两个独立问题调查报告 003_investigation_295_300_guidance.md 给出完整分歧链文案缺陷内置 v2 指南无条件声称model/reasoning_effort是hidden且not in the schema、要求never claim但当前上游在启用 override 暴露时可以在 v2 schema 中保留这些字段绝对断言不成立src/server/responses/collaboration.ts 已重写为 schema 无关措辞名册缺陷subagentRosterText只按 slug 在 catalog 中是否有等级元数据来保留配置项catalogModelEfforts 的匹配逻辑并不检查该模型是否对当前协作后端可用。上游 Codex 侧则是picker 可见 后端兼容 priority 升序取前五multi_agents_spec.rs与multi_agents_common.rs。默认 catalog 中 Sol/Terra pin 为 v2、Luna 为 v1、GPT-5.5 无 pin因此 v2 会话运行时只接受 Sol/Terra——报告人配置的四模型名册被全部写入提示词运行时却只认两个正是其观察到的分裂#300 功能缺口没有任何可表达的关闭状态。injectionPrompt: null/清空覆盖、单空格字符串绕过 API 校验变成 truthy 的空白块未文档化的 containmentmultiAgentMode是协作面切换而非注入开关调用点无条件注入。合并修复方案已全部落地并配套测试默认文案改为 schema 无关的中性措辞并保留fork_turns/ 自包含消息规则名册改为从最终落盘 catalog 推导与 Codex 相同谓词的 picker 可见 后端兼容 priority 前五再与subagentModels取交集新增multiAgentGuidanceEnabled布尔开关默认开、缺失键保持旧行为关闭时在 v1/v2 两个分支前直接返回null不触碰 catalog、subagentModels、等级上限、路由与multiAgentMode。配置面通过/api/injection-model的 GET/PUT 暴露agent-settings-routes.ts 中multiAgentGuidanceEnabled(config)读取、非布尔返回 400GUI Dashboard 增加开关回归覆盖见tests/codex-integration/injection-model-api.test.ts含 true/false 往返、缺失键保留、非法类型拒绝与持久化重载与tests/codex-integration/multi-agent-compat.test.ts。工作量1–2 工程日。#290V2 自定义父模型发出空 spawn_agent 参数报告人 brunoflma 发现自定义模型父进程生成自定义模型子进程时工具路由收到空参数message缺失每次尝试都被拒父进程重试至超时v2.7.31。调查007_investigation_290_288_spawn_agent.md确认失败点在子进程创建之前的上游参数解析SpawnAgentArgs的#[serde(deny_unknown_fields)]message: String必填因此与 #92有效 spawn 之后子任务明文丢失完全不同源。OpenCodex 侧存在一个明确的零参数字节 →{} 规范化src/bridge.ts中空输入必须序列化为{}而非但当前代码没有发现把非空message/task_name参数串清空为{}的路径。仓库中还有一份真实 Codex Desktop 抓包 fixtureResponses Lite 的additional_tools内全部协作工具携带空parameters: {}若自定义父模型收到的 schema 本身就是空的则属上游 Codex 表面问题。结论保留needs-info要求报告人按四个脱敏边界抓包入站 schema → 出站 provider schema → provider 原始参数 → 出站 Responses 参数事件以区分上游表面、模型能力与 OpenCodex 桥接缺陷临时方案是ocx v2 mode v1。Bucket 3长期路线图#294Claude 账号池在 A 阶段审计后被修正表述多账号 Claude 已存在ProviderAuthPanel 账号列表与添加、management-api 的 active-account 选择但 Anthropic 请求只使用当前激活账号oauth 实现。真正的缺口是 ChatGPT 池同级的自动配额感知路由、亲和性、冷却与故障转移属架构级改动进入路线图而非立即修复。分诊成果与落地验证全部确认缺陷在当日内完成实现见 009_triage_result.md 附录WPIssue落地方式验证门禁2#289可选相对responsesPath缺省保持旧算法focused 68/68full 3519/3519tscprivacydocs build3#292discovery 目标策略对齐 内容类型感知诊断focused 106/106full 3525/35254#287非 Darwin 禁用 Auto-connect 服务端能力字段 本地化说明32/32 API 5/5 GUI SSRfull 3527/3527lint:guigui build5#295中性文案 运行时一致名册 排除诊断focused 31/31full 3531/35316#300multiAgentGuidanceEnabled总开关 PUT 局部更新语义修正focused 97/97full 3542/3542lint:guibuild:gui值得留意的是 WP6 还顺带修复了一个潜在缺陷PUT /api/injection-model原先不是真正的局部更新缺省 model 键会删除已存模型与等级现在为纯增量更新。分诊过程中零生产代码变更、零 push所有结论以path:line锚点可复验——这正是该单元最具参考价值的方法论先用证据把用户报告翻译成可验证的源码事实再决定修什么、何时修、由谁修。赞分享【免费下载链接】opencodexUniversal provider proxy for OpenAI Codex Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code项目地址https://gitcode.com/gh_mirrors/ope/opencodex点击查看免费下载相关推荐OpenCodex 夜间 Issue 分诊实战三桶分类、源码级验证与五条修复落地OpenCodex 夜间 Issue 分诊实战三桶分类、源码级验证与五条修复落地 本文基于 devlog/_fin/260723_issue_triage/OpenCodex Overnight Issue Triage 实践证据驱动的 Issue 三桶分类、并行调查与修复路线图OpenCodex Overnight Issue Triage 实践证据驱动的 Issue 三桶分类、并行调查与修复路线图 本文以 OpenCodex 仓库OpenCodex 未关闭 Issue 全量分诊:四桶分类法与源码级裁决依据OpenCodex 未关闭 Issue 全量分诊:四桶分类法与源码级裁决依据 本文基于 OpenCodex 通用 LLM Provider 代理,支持 Open上一篇UnrealPakViewer完全使用指南快速掌握UE4资源管理终极教程下一篇0day项目快速入门5步学会使用各种CMS和平台EXP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表