Skip to content

superpowers 插件触发 tool_use without tool_result 协议适配错误 #79

Description

@aajj1314

环境

  • 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

复现步骤

  1. 按 CookBook 配置 config.yml,路由到 deepseek-v4-pro
  2. codex 启动后在 Codex 中安装 superpowers 插件
  3. 正常对话 → 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions