ActionRail:在 AI Agent 执行前校验工具调用的参数正确性
ToolJet 开源 ActionRail 框架,可在 Agent 调用工具前对其参数与实时业务系统比对,决定放行、人工…
AI Agent 在调用外部工具时,即便通过了权限和参数格式校验,仍可能因参数取值错误而触发事故:给已退款订单再次退款、向真实账户转入错误客户的资金、取出超过余额的金额等。ToolJet 开源的 ActionRail 框架正是为解决这一「最后一公里正确性」问题而设计。它运行在工具执行边界上,在真正调用工具前,将每个参数与企业的实时业务系统(system of record)进行比对,并返回 allow / hold-for-human / block 三种决策。
项目状态与集成方式
ActionRail 目前处于公开 Beta 阶段,官方计划于 2026 年 8 月发布 v1 版本。它由与具体框架无关的 ActionRuntime 构成,任何 Python 应用都可以接入;同时为 LangGraph 提供了自动工具发现与封装的适配器,未来计划支持更多框架。敏感的数据源查询与凭证保留在用户本地环境中,工具仅在 allow 决策通过后才执行,避免将业务数据外泄。
与传统权限策略的区别
传统的 OPA、Cedar 等策略引擎回答的是「这个 Agent 是否被允许执行该操作」,它们在调用时不会主动访问实时系统比对参数取值。ActionRail 填补的正是这一空白:在调用时刻实时查询业务数据,验证参数值是否正确。官方给出的对比表中:白名单与 Schema 检查解决「调用格式是否正确」,策略与权限解决「Agent 是否被允许」,而 ActionRail 解决「参数值相对于实时数据是否正确」。
攻防基准结果
官方对四个提供商的八款模型进行了「参数投毒」(value-poisoning)测试:构造让 Agent 输出格式合法但取值错误的输入。在无防护时,所有模型至少执行过一次被污染的操作,攻击成功率在 1.7% 到 63.3% 之间,更强的模型并未消除风险。引入 ActionRail 后,480 次被操控的操作全部被拦截,480 次合法相似请求无一误拦。
决策流水线与上手方式
决策按从廉到贵的顺序执行:先做确定性策略判断(如金额上限触发人工复核),再进行实时数据比对(账户是否存在、是否属于调用方、是否处于可退款状态),不匹配则直接拦截,多个 Source 之间支持 AND 组合。LangGraph 用户可通过 enforce() 自动包装编译后的 Agent 工具;纯 Python 用户可在自己的 Agent 循环、Worker、API 处理器中调用 execute() 包裹真实工具调用。项目还提供了一个无需模型 API Key 的本地确定性 Demo,可直接验证拦截效果,并支持接入 Anthropic 模型运行真实 Agent 回路。
