Skip to content

[Bug]: io.agentscope.core.agent.StreamOptions.Builder#incremental(累计模式)在 tool call 后无法正确累加内容 #1211

@lhstack

Description

@lhstack

Describe the bug(问题描述)
当使用 StreamOptions.Builder#incremental 并将其设置为 false(累计模式)时,框架的行为与预期不一致。
按文档说明,累计模式应该返回“所有已累加的内容”,但实际表现为:在每次调用工具(tool call)后,之前的内容会被重置,导致历史推理内容和文本内容丢失。


To Reproduce(复现步骤)

  1. 设置参数:
    • incremental = false
  2. 使用如下测试话术(触发多轮推理 + 工具调用):
    "先输出一段推理内容,然后调用工具,再输出一段推理内容和文本,然后再调用工具,最后输出文本。"
  3. 执行请求并观察流式输出结果

Expected behavior(期望行为)
incremental = false(累计模式)下,每次流式返回都应该包含完整的累计内容,包括:

  • 之前的推理内容(reasoning / ThinkingBlock)
  • 之前输出的文本内容
  • 工具调用前后的所有内容

即:整个会话过程中不应丢失任何已生成内容。


Actual behavior(实际行为)

当前表现为:每次工具调用后内容被重置。

具体过程如下:

  1. 模型输出第一段推理内容
    ThinkingBlock 正常按累计模式返回

  2. 模型调用工具,然后输出推理内容 + 文本
    → 推理内容从“工具调用之后”开始重新累计
    → 之前的推理内容丢失
    → 文本内容从此时开始累计

  3. 模型再次调用工具
    → 推理内容再次被重置
    → 上一轮累计的推理内容丢失
    → 上一轮的文本内容也丢失
    → 仅从本次工具调用之后开始累计


Error messages(错误信息)
没有明确的报错信息,该问题体现在流式返回内容的行为上。


Environment(环境信息)

  • AgentScope-Java Version: 1.0.11
  • Java Version: 17
  • OS: Windows 10

Additional context(补充说明)

根据文档描述,incremental = false 表示“累计模式(cumulative)”,理论上应该返回完整的历史累积内容。

但当前观察到的行为更像是:累计范围仅限于“每个 tool call 片段内部”,而不是整个流式会话。

目前不确定这是:

  • 设计如此(即:按 tool call 分段累计),还是
  • 实现上的问题(累计逻辑被错误重置)

希望可以得到确认或说明。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    Status

    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions