PluginsHooksExamples

一条消息的完整流转

用一个完整场景把 pipeline、guard、effect 串起来,看清谁在什么时候被调用

一条消息的完整流转

这篇不再单看某一个点,而是把三种 hook 串起来。

场景

你有一条进入系统的消息,希望它经历这三步:

  1. 先补充来源和页面信息
  2. 再检查这条消息是否已经审核
  3. 最后记录一次观测日志

宿主代码

const enriched = await agent.plugins.pipeline("chat.enrich_message", {
  text: "Please summarize this page",
});

await agent.plugins.guard("review.require_checked", enriched);

await agent.plugins.effect("audit.observe", enriched);

对应的 plugin 们

MessageAugmentPlugin

负责 pipeline

  • 给输入补字段

ReviewGuardPlugin

负责 guard

  • 判断能不能继续

AuditEffectPlugin

负责 effect

  • 记录发生过什么

这三步为什么不能混成一个点

因为它们回答的是三种不同问题:

  • pipeline:值要不要变
  • guard:流程能不能过
  • effect:要不要记录点什么

如果把它们都塞进一个点里,后面几乎一定会变得难读。

读这篇最该得到的感觉

hook 不是“某个 plugin 自己决定什么时候跑”。

而是:

  • 宿主先定义调用顺序
  • plugin 再在每个点里参与

相关文档