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 非空,执行到这里时最后一条看起来总是 user,else 分支似乎走不到(空列表也不会从当前入口传进来)。
这个分支是为了以后支持后台任务完成后主动唤醒 agent,还是单纯让函数可以独立复用?如果是有意保留,能否加一句注释或一个测试说明场景?
相关但不完全相同:#46
Source: shareAI-lab/learn-claude-code