s11: inject_background_results 里的 else 分支是不是走不到?

Author: lll1024Created Sep 15, 2026Updated Sep 15, 2026

看 s11 的时候有点没想明白这段:

if messages and messages[-1].get("role") == "user":
    # merge notifications into the last message
    ...
else:
    messages.append({"role": "user", "content": blocks})

inject_background_results() 目前只在 agent_loop() 每次调用模型之前执行。按现在的流程:

  • 用户输入后,外层会先 append 一条 user 消息,再进入 agent_loop()
  • 模型调用了工具时,循环末尾也会 append 一条 user/tool_result
  • 模型没有调用工具时,循环直接 return,不会再次执行 inject。

所以在当前入口下,只要 messages 非空,执行到这里时最后一条看起来总是 userelse 分支似乎走不到(空列表也不会从当前入口传进来)。

这个分支是为了以后支持后台任务完成后主动唤醒 agent,还是单纯让函数可以独立复用?如果是有意保留,能否加一句注释或一个测试说明场景?

相关但不完全相同:#46

Source: shareAI-lab/learn-claude-code