环境
- Moon Bridge:
4dd578a (main)
- Go: 1.25.0
- Codex CLI:
@openai/codex (npm global)
- 插件:
superpowers@openai-curated v5.1.1 (obra/superpowers)
- Provider: DeepSeek V4 Pro (
api.deepseek.com/anthropic)
- Mode: Transform
复现步骤
- 按 CookBook 配置
config.yml,路由到 deepseek-v4-pro
codex 启动后在 Codex 中安装 superpowers 插件
- 正常对话 → Codex 加载插件 skill → 触发多轮工具调用
现象
插件加载后,模型尝试执行工具调用时陷入死循环重试,所有请求返回 400。Moon Bridge 日志中同一错误出现 120+ 次:
level=ERROR msg=提供商错误 model=deepseek-v4-pro status=400
error="messages.24: `tool_use` ids were found without `tool_result` blocks
immediately after: call_00_LNkq2jRqL1Dbu1ToYi7x7744. Each `tool_use` block
must have a corresponding `tool_result` block in the next message."
req_messages=25 req_tools=22
分析
Superpowers 插件工作流中会产生大量 tool_use/tool_result 消息交互(子代理调度、文件读写等)。adapter 在转换 Codex → DeepSeek Anthropic Messages 格式时,某条 tool_use 消息与其对应的 tool_result 被拆分到了不同的请求中,破坏了 DeepSeek API 的约束(每个 tool_use 必须紧跟 tool_result)。
Superpowers 是 Codex 目前最流行的插件框架之一,修复此问题能显著提升 moon-bridge 对 Codex 生态的兼容性。
config.yml (脱敏)
mode: "Transform"
server:
addr: "127.0.0.1:38440"
models:
deepseek-v4-pro:
context_window: 1000000
max_output_tokens: 384000
extensions:
deepseek_v4:
enabled: true
default_reasoning_level: "high"
supported_reasoning_levels:
- effort: "high"
- effort: "xhigh"
supports_reasoning_summaries: true
default_reasoning_summary: "auto"
providers:
deepseek:
base_url: "https://api.deepseek.com/anthropic"
api_key: "sk-***"
offers:
- model: deepseek-v4-pro
routes:
moonbridge:
model: deepseek-v4-pro
provider: deepseek
环境
4dd578a(main)@openai/codex(npm global)superpowers@openai-curatedv5.1.1 (obra/superpowers)api.deepseek.com/anthropic)复现步骤
config.yml,路由到deepseek-v4-procodex启动后在 Codex 中安装superpowers插件现象
插件加载后,模型尝试执行工具调用时陷入死循环重试,所有请求返回 400。Moon Bridge 日志中同一错误出现 120+ 次:
分析
Superpowers 插件工作流中会产生大量
tool_use/tool_result消息交互(子代理调度、文件读写等)。adapter 在转换 Codex → DeepSeek Anthropic Messages 格式时,某条tool_use消息与其对应的tool_result被拆分到了不同的请求中,破坏了 DeepSeek API 的约束(每个tool_use必须紧跟tool_result)。Superpowers 是 Codex 目前最流行的插件框架之一,修复此问题能显著提升 moon-bridge 对 Codex 生态的兼容性。
config.yml (脱敏)