Google 这周给 Genkit 加了一个中间件层——三个可编程 hook 点(generation calls、model calls、tool execution),让横切关注点能插入到 agent loop 而不碰应用逻辑。形状对写过 Express 或 Connect 中间件的人很熟悉:组件按定义的执行顺序堆叠,每个看到请求,可以修改它或短路它,然后把控制传给链条下游。预置中间件随发布:指数退避重试、自动模型 fallback、敏感工具调用 approval gate、文件系统访问控制,以及用于动态指令注入的 "skills" 系统。Genkit 本身支持 TypeScript、Go 和 Dart,Python 即将到来。

拦截模型重要,因为它标准化了大多数 agent 团队一直在手工搓的东西。模型生成输出、执行工具、处理结果、持续直到完成——那就是 loop,中间件可以在每个阶段 hook。Model-call 层的退避重试意味着瞬态 API 故障不会炸掉 agent 运行。模型 fallback 意味着主 API 速率限制命中时切到一个降级但功能性的备份模型,无需编排胶水。Tool-execution 层的 approval gate 意味着 agent 调用 `delete_database` 或转账之前会有人被传呼——这是 builder 一直在自定义 dispatcher 里特别处理的安全原语。文件系统访问控制限制接触文件的工具的爆炸半径。Skills 系统让你能按调用注入上下文相关的指令,而不用重建 prompt 模板。

生态解读:这是 Google agent 策略的应用层一面。据 Google 工程师 Michael Doyle 在发布里说:Genkit 目标是「应用层 AI 特性集成」,而 Agent Development Kit(ADK)目标是「复杂的、独立的、多 agent 系统」运行在专用基础设施上。这个分裂落在 SDK-vs-平台 的标准问题上——你在已有 app 里加 AI 特性时用 Genkit,你构建 agent 平台时用 ADK。中间件可组合性正是让 Genkit 在第一种情况下工作的东西:重试、fallback、approval gate 和可观测性 hook 是每个生产 agent 都被困扰的横切关注点,把它们推到一个可 hook 的层是正确的架构选择。与 LangChain callback、OpenAI Agents SDK hook 和 Anthropic SDK 中间件的对比留给读者——InfoQ 的稿子没做这些正面对比。

周一上午:如果你跑 Genkit,评估你自己一直在写哪些预置中间件组件。特别是敏感工具调用的 approval gate——如果你的 agent 有任何可能花真钱、发消息或修改共享状态的工具,把 gate 插上。Developer UI 追踪中间件执行,让你调试 stack 交互,这一点重要,因为执行顺序 bug 是中间件 stack 崩溃的方式。如果你不在 Genkit 上而在 LangChain 或自定义 harness 上,三 hook 点分类(generation / model / tool)是可移植的设计词汇——你的 callback 或拦截器应该显式打到这三层,其中工具层的 approval gate 是生产安全中被最低估的原语。