Skip to content

K3 tool call error repeat and repeat #12

Description

@yiminghub2024

K3 tool call error repeat and repeat

K3貌似工具调用有点问题?谁遇到过?请教下 会话不是"自己崩溃"或"超时死掉",而是陷入了一个无限重试循环,最终模型主动 end_turn 结束,Jenkins Pipeline
正常走完 exit 0。

时间线(最后 10 秒):

  • 12:55:37 模型决策要 Read bugfix-batch.md 继续批处理
  • 12:55:37 → 12:55:50 共 6 次连续调用 Read,每次 harness 都拒掉,回 "Wasted call — file unchanged since
    your last Read"(去重拦截)
  • 每次被拒,模型又在 thinking 里"重新决策 → 再 Read",构成死循环
  • 最后一次循环里,模型 reply 文本 "读取批处理编排文件。" 后 stop_reason=end_turn —— 没再发
    tool_use,harness 视为对话完成,正常结束

根本原因(两层)

  1. 直接原因 — kimi-k3 决策循环 bug:模型把 harness
    的"文件未变更就去重返回之前结果"的拦截响应,误判成"上次 Read 没拿到,需要再调一次",于是反复重发同一个
    tool_use。在 14 个 turn 里光这一个文件就调了 6 次。
  2. 诱因 — 中断+空消息循环:日志显示此前发生过 [Tool use interrupted] 后跟一个空 user
    message。这种空消息在 harness 里被当成"用户催促继续",于是模型每次被重唤都又回到"/agent-pipe:fix
    流程要求读批处理文件"那一帧,反复触发同一个被拒的 Read。

验证证据

  • #160.txt:3172 终止 record: "stop_reason":"end_turn", "subtype":"success",
    "terminal_reason":"completed", "is_error":false,exit 0 —— 不是超时、不是 API 错误、不是 5xx
  • #160.txt:3104/3133/3152/3155/3157/3167/3170 — 全部 7 个 Wasted call 拦截响应
  • #160.txt:3172 duration_api_ms:27104, num_turns:14 — 14 个 turn 大部分耗在这个循环

规避建议

  1. 临时规避:中断(Esc)后不要用空回车重唤,改用具体的指令,比如"继续执行 /agent-pipe:fix --list
    ./buglist.yaml 第 2 步"
  2. 模型侧:kimi-k3 对 "Wasted call" 拦截的反应需要修正 —— 看到这个响应应该引用之前的
    tool_result,而不是重发相同调用
  3. harness 侧:可观察到的失败模式,连续 3 次相同被拒 tool_use 应该硬中止而不是让模型继续循环

简单说:不是被 kill,是模型自己把自己绕死在重复 Read 上,最后选择结束对话

#160.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions