5月15日消息,Google正式发布Genkit Middleware v2,把Agent构建过程中的重试、回退、人工审批、可观测性、文件系统访问、技能注入等通用关切,统一封装为可组合的中间件层。这是Genkit框架自2024年发布以来在生产级特性上最系统的一次升级——把过去开发者反复手写的"包装ai.generate()"或"散落各处的辅助函数"标准化为npm install就能用的官方组件。Genkit Middleware v2目前已支持TypeScript/JavaScript、Go和Dart三种语言,Python版本即将上线,配合原生OpenTelemetry可观测性,构成Google对标LangChain、Vercel AI SDK的Agent生产栈正面武器。
三层拦截:model、tool、generate的正交切入点
Genkit Middleware v2在架构上最值得关注的设计是没有把所有控制点压成一个钩子,而是提供三个正交的拦截阶段。第一层是model(模型调用层)拦截:包装对底层模型的实际API调用,适合做重试、回退、请求/响应日志和响应转换。第二层是tool(工具执行层)拦截:包装工具调用,是工具审批、沙箱化、审计日志、输入输出校验的理想切入点。第三层是generate(高层生成循环层)拦截:包装包含提示词构造、工具调用、输出解析的完整Agent循环,用于在循环开始前注入工具或系统指令。
这种"三层正交"的设计与Codex Hooks的5个事件钩子(UserPromptSubmit/PreToolUse/PermissionRequest/PostToolUse/Stop)思路不同——Codex是按Agent生命周期的时间线切分,Genkit是按抽象层级切分。两者各有优势:时间线切分对单一Agent内部的细粒度控制更直观,抽象层级切分对跨模型、跨工具的横切关注点更自然。开发者通过use:[]数组组合中间件,顺序从外到内执行——把logger放最外面记录所有重试和回退后的最终状态,把retry放在fallback之前先尝试恢复瞬时错误,把toolApproval放在最内层守住危险工具调用。
内置中间件清单:把生产关切打包成npm包
@genkit-ai/middleware官方包内置五个核心中间件,覆盖了Agent生产化中最高频的痛点。retry提供指数退避自动重试,针对RESOURCE_EXHAUSTED、UNAVAILABLE等瞬时错误,可配置maxRetries、initialDelayMs、backoffFactor等参数。fallback在主模型失败时自动切换到备用模型,最经典的用法是"Gemini Pro被限流时降级到Gemini Flash",可按statuses指定触发码精确控制降级时机。 toolApproval是human-in-the-loop(人工参与审批)的核心实现——把工具调用限制在白名单内,未白名单的工具会触发ToolInterruptError,Agent进入中断状态等待外部恢复。Go版本进一步提供InterruptWith机制,允许工具自身在执行前判断条件(例如"转账金额超过$1000时主动中断")并附上结构化的中断元数据,由调用方在UI层完成人工确认后用FinishReasonInterrupted的resume机制继续。这种"工具中断+恢复"的范式比同步式的"等待审批回调"更适合长任务Agent。
filesystem让模型获得本地文件系统访问,提供list_files、read_file(开启AllowWriteAccess时还有write_file/edit_file)等沙箱化工具,所有路径都被限制在指定RootDir下,通过Go 1.25+的os.Root防止..、绝对路径、符号链接逃逸。skills自动把SKILL.md文件注入system prompt并提供use_skill工具按需检索——这条与Anthropic的Skills、Codex Skills、Grok Build Skills概念几乎完全对齐,反映出"Skills as Code"已成为跨厂商的事实标准。 多语言押注:TS/Go/Dart三线齐进
Genkit Middleware v2的语言覆盖是Google相较其他Agent框架的最明显差异化。TypeScript/JavaScript是默认主线,覆盖Node.js后端和前端BFF场景;Go版本面向高性能后端、CLI工具和云原生服务(Genkit Go本身就是用Go写的Firebase后端伴生框架);Dart版本对应Flutter移动端和跨平台桌面应用,让Agent能力可以直接嵌入移动App而无需中间服务层;Python版本仍处于alpha阶段,是当前最显眼的拼图缺口。
对独立开发者而言,三语言并行的实际意义是技术栈选型的自由度。用Cursor + Claude Code构建后端Agent时可以用TypeScript/Go版本无缝接入;用Flutter构建移动端App(比如TimeMage这类场景)时可以直接在客户端集成Genkit Dart,把Agent能力下沉到设备端而非全部走服务器。配合OpenTelemetry原生支持,Genkit的telemetry可以无缝导出到Datadog、New Relic、Grafana等任意可观测平台,企业级部署的尾段问题被前置解决。Google Cloud Plugin还额外提供Model Armor中间件,把用户提示词和模型响应的安全清洗集成在中间件链上,这对受合规约束的金融、医疗场景是直接可用的现成方案。 竞品坐标与局限
把Genkit Middleware v2放在Agent框架的全局图谱看,最直接的对手是Vercel AI SDK的wrapLanguageModel和LangChain/LangGraph的中间件系统。Vercel AI SDK的中间件更轻量、聚焦前端流式场景;LangChain生态最广但概念分散、版本升级历史复杂;Genkit的差异化是"Google官方背书+完整的多语言SDK+原生可观测+紧密集成Firebase/Cloud Run/Vertex AI部署链路"。对已经在Google Cloud体系内的团队,Genkit Middleware v2是几乎没有迁移成本的升级;对其他云体系的团队,Genkit的依赖捆绑度仍是采纳的现实顾虑。
本次发布也并非全无短板。Python版本仍在alpha阶段,对国内大量Python优先的AI团队是直接的接入门槛;toolApproval目前是"中断+恢复"的异步范式,没有官方现成的实时审批UI组件,开发者需要自行实现前端审批面板和resume逻辑;中间件抽象虽然优雅,但跨模型时仍依赖Genkit的Model接口实现,对接非主流模型(如国内Kimi、Moonshot、智谱)需要等待社区插件成熟。此外,与同周发布的Codex Hooks GA、Grok Build CLI的Plugin Marketplaces相比,Genkit Middleware更偏"框架内组件"而非"跨工具生态",在Agent能力的可移植性叙事上还需要更多生态侧动作。 从行业节奏看,Genkit Middleware v2与Codex Hooks、Grok Build CLI同周发布构成了一个明确信号——2026年5月的Agent赛道关键词不是"模型更聪明",而是"Agent更可靠"。重试、回退、人工审批、可观测、技能注入这些过去被视为"工程脏活"的部分,正在被各家厂商以不同范式标准化。对独立开发者和小团队而言,这意味着从"自己造轮子"转向"组合标准组件"的临界点正在到来,构建一个生产级Agent的工程成本将在未来12个月内显著下降。