[Feedback] Windows Codex CLI integration: fork patch and remaining upstream seams #1215
lyd123qw2008
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
我在 Windows 的 DSH Web 场景中接入本机官方 Codex CLI / 模型,整理了一个可审查的 fork 提交,以及随后实际遇到的几个集成问题。这里不包含 API key、网关地址或会话内容。
可审查的 fork 提交
47f943859bef60e4160492346772ded9b24f765a(当前master)codex/fix-delegation-and-sandbox36f2d61fcb0daa15d094a837a581424ff4f5e1c1(64 files,当前比上游多 1 commit)该提交包含三组相关改动:
max时,in-process child 不应只复制 provider/model 而遗漏 effort;否则适配器可能回退并发送不被当前 Codex 模型接受的值。workspace-write或danger-full-access,模型附带相同或更窄的sandbox_permissions时,不应把它当作新的 escalation,也不应要求justification或触发 approval。实际遇到的问题与建议
1. 同一路由的辅助调用也必须继承选中的 reasoning effort
实际报错:
除子代理外,direct compaction summarizer 也可能只带 provider/model 而遗漏当前
max。建议:只有汇总目标仍是同一 provider+model 时,继承持久化请求头中的显式 effort;目标不同则让目标路由自行选择默认值,不能把none或另一个模型的 effort 强行复制过去。2. Codex 会在无需升级时仍携带 sandbox 字段
这与 #1201 的报告相同。实际出现过:
在
approval never且当前 mode 已覆盖目标的情况下,这些是继承/模型生成的冗余元数据,不是新的权限请求。建议在 shell/fs consumer 已解析 standing policy 后先判定“已覆盖的已知目标”,直接按原策略执行;未知模式或真正变宽的请求仍保留现有 fail-closed、justification 与 approval 路径。3. 重试必须基于下游结构化 code/status,而不是英文文案
一次 Codex Gateway 流式失败只在 DSH UI 中落为:
这会跳过 provider 配置的有界重试。pi-ai 0.82.1 的 Responses 路径实际可从 HTTP error 取到 status,也可从 SSE
error/response.failed取到如server_error的 code,但在生成AssistantMessage前把这些字段扁平为errorMessage。因此下游语义在 DSH 重试层不可用。建议在 pi-ai / DSH seam 中保留可选的
errorCode与errorStatus:先按 machine code(例如server_error->SERVER、rate_limit_exceeded->RATE_LIMIT),再按 HTTP status 分类;仅对没有结构化字段的旧协议保留受限的文字兜底。这样不会因供应商调整英文提示而改变重试语义,也能补充 #530 所述的PI_AI_ERROR漏重试问题。4. 官方 Codex CLI 的 native web search 与会话导入
当前 Web
web_search默认走 DeepSeek provider。为了明确使用本机已认证的 Codex CLI 内置搜索,我在一个codexpreset 中只暴露subagent_codex,移除竞争性的web_search,并在 persona 中要求研究任务走 native Codex search。这样不是把不同语义的 subagent 工具伪装成通用 search。会话导入方面,已有社区插件(例如 #1087)覆盖更广场景;这里的实现刻意保持为 source-checkout 命令和严格的 DSH event 转换,不扩张 DSH persistence 格式。希望确认维护者更倾向于核心提供最小导入器、还是只保留插件扩展点。
希望的上游方向
如果这些方向可接受,我可以按可独立评审的范围拆成 PR:
欢迎指出更合适的拆分、目标 package 或已有进行中的实现。
All reactions