预判注入机制

白龙马项目 · Yuanda 2026-04-22


这是什么

一句话:在模型开口之前,系统就把它需要的东西查好,直接塞进去。

模型不再需要一个个调工具、等结果、再思考——它一睁眼,该有的信息已经在了。


现在的问题

现在的 Agent 是这样工作的:

用户问天气
  → 模型想:我要查天气
  → 调 fetch_url
  → 等结果
  → 模型想:好,现在我知道了
  → 回答

如果要做的事情多一点,就是这样:

用户说:帮我写今日早报
  → 模型想:我要查天气         → 等
  → 模型想:我要查今日新闻     → 等
  → 模型想:我要看今天的日程   → 等
  → 好,现在全有了,开始写

三件事全串在一起,每一步都要等模型"想到"才执行。它已经知道自己要做什么了,却还是一步一步来。


预判注入想做什么

把上面那个串行流程变成这样:

用户说:帮我写今日早报
  ↓ 系统识别出"写早报"这个意图
  ↓ 同时开始:查天气 + 查新闻 + 看日程  ← 三件事并行
  ↓ 结果全部塞进提示词
  ↓ 模型一开口就看到所有信息,直接写

省掉的是什么:模型不用再调三次工具,不用等三次,直接处理信息就好。


三种预判方式

第一种:根据你说的话,猜你需要什么记忆

你说"上次那个 TICK 机制是怎么回事"——系统不用等模型说"我要搜索记忆",直接就把 TICK 相关的记忆找出来塞进去。

这一步用语义相似度来做,不是关键词匹配。"心跳机制"和"TICK"搜出来的是同一批记忆。

风险:零。最坏情况是找偏了,多注入了几条不相关的记忆。


第二种:认出重复的工作模式,提前把工具跑完

有些任务你每次都会做,每次都走同一套流程。比如"写早报",每次都要查天气、查新闻、看日程。

系统可以记住这个规律:

用户说"写早报"
  ↓ 认出来了:这个我们做过很多次
  ↓ 直接并行跑:查天气 + 查新闻 + 看日程
  ↓ 结果注入
  ↓ 模型直接写

这套模式可以手动配置,也可以让识别器从历史记录里自动学。


第三种:定时查好,随时可用

有些信息和你说什么话根本没关系,比如天气、新闻、日历——这些每天定时查一次就够了,随时可以直接用。

每天早上 8 点:
  → 把天气查好,存起来,有效 1 小时
  → 把热点新闻查好,存起来,有效 30 分钟
  → 把今天日历拉一下,存起来,有效一整天

白龙马被唤醒的时候:
  → 这些都已经是现成的,直接注入
  → 不需要调任何工具

这是三种方式里最稳的,因为不需要猜,时间到了就查,没有任何不确定性。


什么东西可以预判,什么不行

不是什么都能提前跑的,有个原则:只能提前做"查"的事,不能提前做"改"的事。

可以预判的:查天气、查网页、读文件、搜记忆、查日历……

不能预判的:发消息、写文件、删东西、执行命令……

道理很简单——如果预判错了,查了个用不上的天气,顶多浪费一次请求。但如果提前发了一条消息,就收不回来了。


猜错了怎么办

预判不是每次都准,偶尔会猜偏。但猜偏了不会坏事:

  • 注入了没用上的信息 → 模型忽略就行,多占一点提示词空间
  • 没猜到需要的信息 → 模型还是可以自己调工具,和现在一样

预判是锦上添花,不是模型的命根子。

有把握的时候直接注入,不太确定的时候只提示一句"可能用得上这个",完全没把握就不注入。


跟学界的关系

这套东西我们自己想出来的,后来查了一下,学界在 2025-2026 年也独立研究了同样的方向,论文里叫"投机工具执行"(Speculative Tool Execution)。

他们的实验结论是:这种方式可以把任务完成时间缩短将近一半。

不同的地方是他们在底层推理引擎里做,我们在应用层的注入器里做,更轻,对任何模型都适用,而且我们把记忆检索和工具预执行合在一起,是一套完整的东西。


怎么一步步做

第一步(先做这个):把记忆检索换成语义向量,不再用关键词硬匹配。引入一个小的本地向量模型,记忆写进去的时候顺带生成一个向量,检索的时候按语义相似度来找。

第二步:加一张"预热缓存"表,定时任务把查好的东西存进去,注入器每次优先取缓存。

第三步:识别器开始记录工具调用模式,注入器认出意图后并行预执行,结果直接注入。


一句话总结

让系统比模型更早知道模型需要什么。