PluginsHooksExamples
一条消息的完整流转
用一个完整场景把 pipeline、guard、effect 串起来,看清谁在什么时候被调用
一条消息的完整流转
这篇不再单看某一个点,而是把三种 hook 串起来。
场景
你有一条进入系统的消息,希望它经历这三步:
- 先补充来源和页面信息
- 再检查这条消息是否已经审核
- 最后记录一次观测日志
宿主代码
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 再在每个点里参与