返回博客列表

工具执行前先审一刀:LangChain 把 Jev 接入 Agent 中间件,安全护栏不再是闭源 harness 专利

2026-09-25T09:05:00+08:00
LangChainJevGuardrailsAgent安全中间件AutoMode模型路由

工具执行前先审一刀:LangChain 把 Jev 接入 Agent 中间件,安全护栏不再是闭源 harness 专利

先收藏,回头一定用得上。

Agent 真正危险的时刻,不是它"想"什么,而是它"动手"的那一下。

一个 Agent 在循环里跑了几十轮,读了文件、查了数据,最后决定执行一条 bash 命令、删一个文件、往生产库写一笔数据。如果这一步是被错误指令甚至攻击者诱导出来的,前面再聪明也没用——损害在工具真正执行的瞬间发生。

Claude Code、Codex、Cursor 这些编码 harness 早就意识到这点,各自在工具执行前加了一个"危险动作分类器",先判断这一步安不安全,再决定放行。但这个关键的安全环节,一直被锁在各家 harness 的闭源部分里,你想用在自己的 Agent 上,拿不到。

LangChain 最近一篇博文(Building a Harness with Jev)改变了这件事。他们把 TypeSafe AI 新出的模型 Jev 接进 Agent 中间件,用一个又快又便宜的分类器,在工具执行前检查风险。这意味着安全护栏这一环,终于可以被所有 Agent 自由使用了。

本文提纲

  1. Jev 是什么:一个不生成文本的"系统一"模型
  2. 三种提问方式与并行决策
  3. LangChain 集成:TypeSafeClassifier
  4. 应用一:模型路由中间件
  5. 应用二:Auto Mode——工具执行前的风险拦截(重点)
  6. 为什么这件事重要

Jev 是什么:一个不生成文本的"系统一"模型

要理解它为什么适合做安全检查,先得打破"AI = 会聊天、会生成文本"的固有印象。

Jev 来自 TypeSafe AI,官方称其为 System One(系统一)模型——这个名字借自认知科学:系统一思考是快速、直觉、并行的,系统二才是缓慢、需要推理的。它根本不生成文本,而是:

接收一个 state(状态/上下文),对这个状态返回带类型的答案和概率,供软件直接使用。

官方数据(厂商口径):在分类任务上,比同等 LLM 推理快最多 200 倍、成本低最多 400 倍。它用 RLCD(面向校准决策的强化学习) 训练,输出的是经过校准的概率,而不是一段需要再解析的自然语言。

这个特性恰好命中 Agent 循环的一个痛点。博文开头说得清楚:Agent 在循环里"LLM 决策 → 工具执行 → 模型评估结果 → 继续",即便有了 tool calling 和 structured outputs,循环依然又慢又贵——每一个小决策都要再调一次完整的聊天模型。让一个几百毫秒、几分钱的重型 LLM 去回答"这条工单紧急吗""这步操作危险吗"这种是非题,是巨大的浪费。Jev 就是来接管这些高频、结构化、不需要文本生成的决策的。

三种提问方式与并行决策

调用 Jev,你给它一个 state 和若干 questions。state 可以是一句话、结构化数据或 LangChain 消息。它支持三种问题类型:

  • Choice(选择):从一组选项里挑,返回每个选项的概率和整体置信度。
  • Score(评分):按有序等级(低/中/高)评估,返回连续分数、底层分布和置信度。
  • Noul(是非):回答一个 yes/no 问题,返回陈述为真的概率。这个词就是 TypeSafe 对布尔判定的命名。

看一个工单紧急度的例子:

{
  "model": "jev-latest",
  "state": "我连着三天连不上 Stripe,一直失败,正在流失订单,请尽快帮忙。",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "这条消息是否表达紧急或时间敏感"
    }
  }
}

返回 {"is_urgent": {"type": "noul", "noul": 0.999}}——99.9% 的概率为紧急,系统据此给工单排优先级。

一个关键能力:可以对同一个 state 一次问多个问题,且全部并行评估。 多加问题几乎不增加响应时间,只多花几个便宜 token。这让"在一次调用里同时判断紧急度、风险等级、意图类别"非常划算——对比每次都串行调 LLM,延迟和成本天差地别。

LangChain 集成:TypeSafeClassifier

LangChain 的 provider 无关架构天然适合把 Jev 和上千个模型/集成并列支持。

集成包 langchain-typesafe 把 Jev 暴露为 TypeSafeClassifier,你给它 state 和 questions 调 .invoke(),拿到的是分类结果而非聊天回复。装包、设好 TYPESAFE_API_KEY 后:

from langchain_typesafe import Noul, TypeSafeClassifier

classifier = TypeSafeClassifier()
response = classifier.invoke({
    "state": "部署连续失败两次,客户都在看到 500 错误,能现在看一下吗?",
    "questions": {
        "urgent": Noul(instructions="这是否需要立刻处理?"),
    },
})
urgency = response.nouls["urgent"].noul

state 可以是文本、结构化数据或 LangChain message,所以很容易在 Agent 的节点或中间件钩子里,用 Agent 已有的上下文直接调它。博文点出关键:你可以把它做进自定义 middleware 或工具里——这正是后面两个应用的基础。

应用一:模型路由中间件

第一个落地场景是 Model Routing(模型路由)。

简单查询和困难调试不需要同一个模型。让 Jev 先快速评估请求,再按你定义的标准选模型——直接的事用便宜快速的,复杂的事才上强力模型:

from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import ModelChoice, ModelRouterMiddleware

router = ModelRouterMiddleware(
    choices={
        "fast": ModelChoice(
            model="openai:luna",
            criteria="直接查询、信息抽取、局部修改。",
        ),
        "powerful": ModelChoice(
            model="openai:sol",
            criteria="架构设计和高风险决策。",
        ),
    },
    instructions="选择能完成任务、成本最低的模型。",
)
agent = create_agent("openai:gpt-5.6-luna", middleware=[router])

路由器根据最新用户消息选模型,并在整轮运行中沿用;概率和置信度也保留在 Agent state 里。这和我们之前写过的 Cisco MyAgent 自动路由(简单操作走自动化/本地开放权重,复杂推理才调旗舰)、TrueForge 的成本分层是同一思路——用一个极便宜的分类器,把昂贵模型的调用降到真正需要的地方。

应用二:Auto Mode——工具执行前的风险拦截(重点)

这是最值得做 AI 后台、代码执行的团队关注的部分。

博文先陈述一个事实:Agent 本质上不可完全信任。 它可能收到坏指令(无意的,或来自有动机的攻击者),被诱导做出我们不想要的动作。Claude、Codex、Cursor 都靠"危险动作先分类"这一招,逐步建立用户信任——但此前这个分类器被锁在闭源 harness 里。现在有了又便宜又好用的 Jev,同样的模式可以普及到所有 Agent。

LangChain 把它做成 AutoModeMiddleware:

from langchain.agents import create_agent
from langchain_typesafe.experimental.middleware import AutoModeMiddleware

guardrail = AutoModeMiddleware(tools=["bash"])
agent = create_agent("openai:gpt-5.6-luna", middleware=[guardrail])

就这么简单。AutoModeMiddleware 用 Jev 检查每一次工具调用是否包含风险决策,并在工具真正执行之前把它拦下来。

这个架构的精妙之处在于它插入的位置——不是事后审计(损害已经造成),也不是让驱动 Agent 的主模型自己判断(它可能正被诱导),而是在决策与执行之间插一道独立的、专门的安全分类层。主模型负责推理和干活,Jev 只负责快速回答"这一步能不能放行",两者职责分离。这正是安全工程里"最小权限 + 独立校验"原则在 Agent 上的体现:你不会让操作的执行者自己批准自己。

对做 AI 后台管理、代码执行平台的人来说,这个环节基本是必需品。当 Agent 能跑 shell、能操作数据库、能部署系统时,一个独立于主模型、在执行前生效的风险检查点,是把 Agent 从"演示"推进"敢上生产"的最低门槛。

为什么这件事重要

把这条线索放在我们持续跟踪的技术树(你那张 AI 分类图里的 Guardrails / 安全护栏分支)里,能看到一个清晰的演进:

安全护栏正在从"闭源 harness 的私有能力"变成"开源、可插拔的中间件"。

过去,想要"工具执行前风险检查",你要么自己从头训练一个分类器,要么被绑定在某个闭源编码 Agent 里。Jev 这类专用 System One 模型的出现,加上 LangChain 把它做成标准中间件,让安全能力第一次像普通组件一样可复用、可组合——你不必为了一个安全检查,把整个 Agent 架构换掉。

更深一层,这预示 Agent 架构的一种健康分工正在成型:

  • 主 LLM(系统二):开放式推理、规划、生成
  • System One 模型(如 Jev):高频、快速、校准过的结构化决策——路由、分类、风险判断
  • 两者通过中间件协作,各司其职

这比"用一个大模型包揽一切"更接近可持续的生产形态:不是所有决策都需要昂贵的通用智能,把对的决策交给对的模型,既快、又省,还更安全。做 Agent 平台、代码执行、后台管理的团队,这个"执行前先审一刀"的模式,值得尽早纳入自己的架构。

想动手,路径很直接:pip install langchain-typesafe,设 API key,先用 TypeSafeClassifier 跑一个是非分类感受延迟和成本,再给现有 Agent 挂上 AutoModeMiddleware 保护高危工具——一个下午就能把这层独立护栏搭起来。

参考链接

你的 Agent 在执行高危操作前,有独立的一道检查吗,还是让主模型自己说了算?评论区聊聊你的护栏设计。觉得有用点个赞,让更多做 Agent 平台和代码执行的同行看到这个模式。


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

本文首发于 AI人工智能时代,转载请注明出处。

分享给朋友