Document and guard against empty optional fields in Codex spawn_agent calls
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 75/100
- Issue 类型
- 文档
- 描述清晰度
- 描述清楚
- 活跃度
- 冷清
- 技术栈
- typescript
调研方向
从 plugins/omo/skills/visual-qa/SKILL.md、plugins/omo/skills/ulw-loop/SKILL.md 和 plugins/omo/components/rules/bundled-rules/hephaestus/gpt-5.5.md 开始,然后检查 skill-sync 或 rule-generation 测试。运行 sync-skills、ulw-loop、visual-qa 和 Hephaestus 规则测试;当生成的 Codex 指南始终说明应省略未设置的可选 spawn_agent 键,并验证有效的 V1 payloads 时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
Summary
LazyCodex's Codex-facing skill/rule guidance depends heavily on native spawn_agent, but current Codex tool parsing rejects common empty optional-field shapes. Until upstream normalizes those fields, LazyCodex should make its generated guidance and any spawn guardrails explicitly tell agents to omit unused optional keys, especially items: [], message: \"\", model: \"\", reasoning_effort: \"\", and service_tier: \"\".
Upstream issue filed: https://github.com/openai/codex/issues/37037
Environment
- Codex CLI on PATH:
codex-cli 0.146.0 - Runtime: Codex Desktop / ChatGPT-auth session exposing
multi_agent_v1.spawn_agent - OS: macOS 26.5.2, Darwin 25.5.0 arm64
- Node:
v26.6.0 - LazyCodex source checked:
code-yeongyu/lazycodexmainatfb48ddc4bc8be02a0cfe0a509a30cf3543edf72a - Upstream Codex source checked:
openai/codexmainat1fe6be9719ac4a18ad08f8341b89f9a0f386105e
Repository Decision
- Target repository:
code-yeongyu/lazycodex - Why this belongs here: the root parser bug is upstream Codex, but LazyCodex ships the skills/rules that repeatedly instruct agents to dispatch subagents through
multi_agent_v1.spawn_agent/ flatspawn_agent. A downstream compatibility issue is useful so LazyCodex can harden its generated instructions and guardrails while waiting for upstream. - LazyCodex evidence:
plugins/omo/skills/visual-qa/SKILL.md:6-22maps OpenCode examples to Codexmulti_agent_v1.spawn_agentcalls.plugins/omo/components/rules/bundled-rules/hephaestus/gpt-5.5.md:42-44tells agents to spawn subagents viamulti_agent_v1.spawn_agent({"message":"...","fork_context":false}).plugins/omo/skills/ulw-loop/SKILL.md:56-66already gives a good V2 warning not to setagent_type/model/reasoning_effort; V1 guidance could use similarly explicit "omit empty optional keys" wording.
- Upstream Codex evidence:
codex-rs/core/src/tools/handlers/multi_agents_common.rs:137-144rejectsSome(message), Some(items)without treating empty unused values as absent.codex-rs/protocol/src/openai_models.rs:119-133rejects emptyreasoning_effortduring deserialization.
Reproduction
In a Codex session exposing multi_agent_v1.spawn_agent, attempts with serialized empty optional fields failed as follows:
message: \"...task...\"plusitems: []returned:
Provide either message or items, but not both
items: [{ type: \"text\", text: \"...task...\" }]plusmessage: \"\"returned:
Provide either message or items, but not both
reasoning_effort: \"\"returned:
failed to parse function arguments: reasoning_effort must not be empty at line 1 column 219
Expected Behavior
LazyCodex-generated instructions should make the valid payload shape unambiguous for both tool surfaces:
- For V1: pass only
message,agent_typewhen needed, andfork_context; omititems,model,reasoning_effort, andservice_tierunless they are intentionally non-empty. - For V2: pass only
task_name,message, andfork_turnsunless the active schema explicitly exposes additional non-empty fields. - Never emit empty placeholder values for optional spawn fields.
Actual Behavior
The current shipped guidance mostly shows minimal calls, but it does not consistently warn that empty optional fields are actively dangerous on the native tool surface. In a real visual QA workflow, this caused subagent dispatch to fail and forced the parent agent to continue single-threaded.
Evidence
- Live Codex Desktop tool-call failures on 2026-08-05.
- Source-backed upstream root cause captured in https://github.com/openai/codex/issues/37037.
- LazyCodex source references above show the downstream surface area likely affected by this parser sharp edge.
Root Cause
Upstream Codex currently treats empty optional values as supplied, while LazyCodex guidance assumes agents can safely follow the model-visible shape and omit optional fields. When a caller/tool wrapper serializes empty defaults, the upstream parser rejects the call before a subagent is spawned.
Proposed Fix
- Update Codex subagent compatibility sections in shared LazyCodex skill/rule templates to explicitly say: omit optional keys entirely when unset; do not pass empty
items, emptymessage, or empty override strings. - Add a small regression/fixture in the skill sync or rule generation tests to preserve this warning in generated skills that mention
spawn_agent. - If LazyCodex has any hook or guard that inspects tool-call payloads before execution, consider warning when
spawn_agentincludesitems: [],message: \"\", or empty override strings.
Verification Plan
- Regenerate/sync skills and confirm all shared Codex harness compatibility blocks contain the warning.
- Run LazyCodex skill/rule tests touching
sync-skills,ulw-loop,visual-qa, and Hephaestus bundled rules. - Manually validate a V1 spawn call with only non-empty keys in a Codex session.
This issue or PR was generated by LazyCodex.
Tag: lazycodex-generated
- 主要语言
- TypeScript
- 星标
- 3.8k
- 派生
- 246
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
code-yeongyu/lazycodex 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
code-yeongyu/lazycodex#170 ·
-
Fix Codex browser QA routing before standalone Playwright可能已有人在做 @berkshirehathaways 于 86 天前认领。 未关闭
难度 2/5 1-2 天 新手友好度 72/100
code-yeongyu/lazycodex#148 ·
-
teammode tells leaders to spawn V2 members without agent_type, which the spawn guard denies可能已有人在做 @LilMGenius 于 3 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 25/100
code-yeongyu/lazycodex#173 ·
-
难度 5/5 一周以上 新手友好度 35/100
code-yeongyu/lazycodex#172 ·
-
[5.0.0-beta.78] High cost and rapid quota consumption: use role-appropriate agent model defaults未关闭
难度 4/5 3-5 天 新手友好度 48/100
code-yeongyu/lazycodex#166 ·
查看 code-yeongyu/lazycodex 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
VictoriaMetrics/victorialogs-datasource#747 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 79/100
维护者通常 1 天内回复
-
bug from-studio
难度 2/5 1-3 小时 新手友好度 62/100
esengine/DeepSeek-Reasonix#14608 ·
维护者通常 1 天内回复
-
triage
难度 2/5 1-3 小时 新手友好度 75/100
getarcaneapp/arcane#4590 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 77/100
Clouditera/VulnHunter#57 ·