AGENT PULSESJCPal Special EditionAI 行业证据与趋势
2026年8月11日 · llama.cpp

b10380: chat : fix muse-glimmer detection of tool calls after EOM (#26879)

发生了什么

llama.cpp 发布 b10380 版本,修复 muse-glimmer 模板在工具调用后错误吞掉尾部工具调用的问题。修复前,当模型在同一轮中先回答用户再调用工具时,模板以 </turn> 结束消息,但解析逻辑用 until(" ") 读取内容,假设用户消息总是最后一条,导致内容一直读到轮次结束,吸收了工具调用标记,未发出 tool_calls。在 tau2-bench 电信任务中,114 个任务中有 19 个出现此问题,共影响 43 轮。修复后,在 </turn> 处停止内容解析,并将后续内容解析为工具调用。新增 models/templates/muse-glimmer.jinja 模板和四个解析器测试。

EVENT STORY

发展脉络

  1. 首次出现b10380: chat : fix muse-glimmer detection of tool calls after EOM (#26879)llama.cpp
  2. 当前判断此修复反映了 agent 模型在实际部署中的常见问题:模型在单次生成中混合回答和工具调用,而解析逻辑未能正确处理。随着 agent 应用增多,此类边界情况将频繁出现,开源社区通过快速迭代修复,体现了开源生态在 agent 基础设施上的活跃度。Agent Pulse · 分析
改变了什么

llama.cpp 在 b10380 版本中修复了 muse-glimmer 模板的一个关键 bug:当模型在同一生成中先回答用户再调用工具时,工具调用被错误地吞入内容,导致工具从未执行。问题源于模板以 </turn> 结束消息,但解析逻辑使用 until(" ") 读取内容,假设用户消息总是最后一条,因此内容一直读到轮次结束,吸收了工具调用标记。在 tau2-bench 电信任务中,114 个任务中有 19 个出现此问题,共影响 43 轮。修复方案是在 </turn> 处停止内容解析,并将后续内容解析为工具调用。同时新增了 muse-glimmer.jinja 模板和四个解析器测试,覆盖普通回答、连接点、回答中引用的标记保持为内容、以及 to=self 通道中的工具标记保持为推理等场景。

能力边界怎么变了

此修复揭示了模板与解析器之间的紧密耦合:模板使用 </turn> 作为消息分隔符,但解析器假设内容总是最后一条消息,导致工具调用被误吞。修复通过显式在 </turn> 处截断内容,并将后续内容解析为工具调用,解决了多消息轮次中的解析歧义。这提示在 agent 模型设计中,模板和解析器必须协同设计,确保工具调用标记不会被内容吸收。

为什么重要

此修复反映了 agent 模型在实际部署中的常见问题:模型在单次生成中混合回答和工具调用,而解析逻辑未能正确处理。随着 agent 应用增多,此类边界情况将频繁出现,开源社区通过快速迭代修复,体现了开源生态在 agent 基础设施上的活跃度。

对谁有影响

此修复直接提升了 llama.cpp 在 agent 场景下的可靠性,减少了工具调用失败导致的错误,对依赖 llama.cpp 构建 agent 应用的企业有实际价值。开源社区的快速响应降低了采用风险,增强了生态信心。

接下来观察

未来,类似 muse-glimmer 的模板解析问题可能在其他模型和框架中重现,推动更健壮的解析方案。可观察 llama.cpp 后续版本是否引入更通用的工具调用解析机制,或社区是否出现标准化的模板规范。