haystack — 本课题摘录
读了哪几篇: 04-agent-loop(在引擎之上手写的 LLM↔工具循环)。
其余四篇(管道引擎、组件契约、RAG 路径、巧妙之处)本轮没读——属 RAG 与工作流课题。
这一家最值钱的一条:它把"这一轮的多个工具调用谁能并行"变成了一道可计算的依赖分析题。
它对本课题回答了什么
决定一(架构):有图引擎,但 agent 不用图引擎
一个值得记的取舍: 它自己有一套成熟的管道图引擎,但 agent 不是一张图,而是引擎之上手写的一个 while。 (依据:前沿库 · Haystack · Haystack Agent —— 引擎之上手写的 LLM↔工具循环 —— Haystack 的 Agent 不是 Pipeline 图,而是手写的 while 循环;理由是管道引擎调度的是一次性 DAG 数据流,而 agent 要的是「LLM 看结果再决定下一步」的循环)
它给的理由:管道引擎调度的是"一次性 DAG 数据流",而 agent 要的是"看结果再决定下一步"。两件事不一样,不硬凑。
这跟 langchain / crewai 新执行器"把循环编译成图"是直接对立的判断。 有意思的是:haystack 有图引擎却选择不用,而 langchain 没有循环引擎却把循环做成了图。
决定一:每一步重铺工具列表
不是循环开始时铺一次,是每一步都重算。 (依据:前沿库 · Haystack · Haystack Agent —— 引擎之上手写的 LLM↔工具循环 —— 每步先跑 flatten_tools_or_toolsets 重算工具列表,让动态工具集在后续步骤发现的新工具能冒出来,重名在这一步就炸)
两个连带好处:
- 动态工具集在后续步骤发现的新工具能冒出来;
- 重名在这一步就炸,不带病上路。