[Bug] callAgent 跨 Agent 调度在云端返回 “Sub-agent did not complete (error)”,Router Agent 无法实际调度子 Agent

用户在 LobeHub 官方云端 Web 端(macOS/Chrome)搭建了一个“Router Agent”(中枢调度员),该 Agent 配置了 lobe-agent 插件提供的 callAgent 工具,用于根据用户问题调度工作区中的其他子 Agent(如命理大师、商业大师等)。使用模型为 o

[Bug] callAgent 跨 Agent 调度在云端返回 "Sub-agent did not complete (error)",Router Agent 无法实际调度子 Agent

[Bug] callAgent 跨 Agent 调度在云端返回 “Sub-agent did not complete (error)”,Router Agent 无法实际调度子 Agent

快速结论:该报错通常出现在 LobeHub 云端环境中,当一个 Agent 通过 callAgent 工具调用工作区中其他 Agent 时,工具调用失败,返回 Sub-agent did not complete (error)。优先排查云端是否已部署 QStash 子 Agent 执行路径的修复补丁,并尝试更换模型以排除模型兼容性问题。

问题场景

用户在 LobeHub 官方云端 Web 端(macOS/Chrome)搭建了一个“Router Agent”(中枢调度员),该 Agent 配置了 lobe-agent 插件提供的 callAgent 工具,用于根据用户问题调度工作区中的其他子 Agent(如命理大师、商业大师等)。使用模型为 opencodecodingplan/deepseek-v4-flash。当 Router Agent 尝试通过 callAgent 调用子 Agent 时,工具返回错误,导致调度失败。

报错原文

Sub-agent did not complete (error).

在日志或工具调用返回值中可见此错误。

原因分析

基于 Issue 评论中维护团队的调查,该问题与云端 QStash 模式下子 Agent 执行路径的多个已知 Bug 强相关。可能原因包括:

  • SUB_AGENT_UNAVAILABLE 在云端模式:QStash 模式下,步骤工作者构建的裸运行时缺少 execSubAgent 分支回调,导致 ctx.subAgentundefinedcallSubAgent 调用失败。此问题在 PR #15609 中修复。
  • 子 Agent 未被实际启动:当父 Agent 以服务器端 QStash 任务运行时,如果 callAgentrunAsTask: true,由于缺少 stop: true 的工具结果标记、服务器端执行器或注入的回调,子 Agent 永远不会被实际调度。此问题在 PR #14913 中修复。
  • 父 Agent 在子 Agent 完成后挂起:在队列模式下,完成桥接钩子从未被传递(仅支持处理器回调,不支持 Webhook),导致父操作永久等待。此问题在 PR #15620 中修复。

此外,可能原因还包括 opencodecodingplan/deepseek-v4-flash 模型对 callAgent 工具调用的参数格式化支持不完整。

环境排查

  • 部署平台:确认使用的是 LobeHub 官方云端环境(Official Cloud),而非自部署。
  • 模型:确认当前使用的模型为 opencodecodingplan/deepseek-v4-flash
  • 插件:确认是否已正确安装 lobe-agent 插件,且 callAgent 工具可用。
  • 工作区:确认父 Agent 和所有子 Agent(包括命理大师 agt_NTUXyRn4DyNh 等)是否属于同一个工作区(Workspace)。
  • Agent ID:确认在 callAgent 调用中传递的 agentId 参数值正确无误(例如 agt_NTUXyRn4DyNh)。
  • 云端补丁状态:确认云端环境是否已部署 PR #15609、#14913、#15620 的修复(这些修复已在 2026年5-6月期间合并)。如果问题在官方云端最新版上持续出现,可能是一个回归或未覆盖的边缘情况。

解决步骤

  1. 更换模型测试可优先尝试将模型更换为 GPT-4oClaude 等主流模型,以排除 opencodecodingplan/deepseek-v4-flash 模型对工具调用参数格式化的兼容性问题。
  2. 确认云端是否已部署修复:如果官方云端已部署上述 PR 的修复,请确认问题是否依然存在。如果问题依旧,则可能是回归或新的边缘情况。
  3. 检查 Agent ID 和工作区范围:反复核对 callAgent 中传入的 agentId 是否属于当前工作区。系统会验证工作区作用域,错误的 ID 或跨工作区调用会导致失败。
  4. 获取原始工具调用 Payload:如果可能,尝试获取 callAgent 工具调用的原始参数(Payload),以及服务器端的错误日志。这有助于区分“子 Agent 从未被启动”还是“子 Agent 已启动但结果未回传”。
  5. 重新创建 Agent 测试:在同一个工作区中,重新创建一个简单的测试场景(例如,Agent A 直接调用 Agent B 并询问一个简单问题),以排除复杂配置下的干扰。

验证方法

在 LobeHub 云端环境中,重新通过 callAgent 工具调用同一个工作区中的另一个 Agent(例如使用命理大师 agt_NTUXyRn4DyNh),并观察:

  1. 工具调用是否返回完整的子 Agent 回复,而非 Sub-agent did not complete (error)
  2. Router Agent 是否能够基于子 Agent 的输出进行后续加工和转发。
  3. 如果之前有固定复现步骤(如“介绍你的能力范围”),请在该步骤上验证。

如果上述验证均通过,则问题已解决。

参考来源

lobehub/lobe-chat #16257

相关修复 PR:PR #15609PR #14913PR #15620

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 10065

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注