前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9309
  • 神经网络训练到底改变了什么:权重可视化解读
  • 静态审查不够:AI 生成的 systemd 服务需运行时形状对比
  • 用 LangChain 构建多 Agent AI 系统
  • AI 建站最佳实践:分阶段评审而非一次性生成
  • DeepSeek V4 Pro GA 评测:推理 token 减少 18-62%,JSON 提取终于可靠
  • tracelint:用静态分析检测 Agent 工具调用失败
  • Agent安全第三轴:身份与授权之外的工具安全
  • crewai-go v0.4.0:Go语言多Agent编排框架量产就绪
  • PromptShrink:生产级Prompt压缩工具,省60%Token
  • 多模型 Node.js 路由架构深度对比
  • AI 编程 Agent 正在走出 IDE
  • GPT-5.6 Sol API 价格下调 50%
  • AI 编程的边界:代码能跑≠系统可维护
  • 以色列疑似利用虚假智库诱导AI聊天机器人
  • GitHub Actions绿色不等于发布成功
  • AI 修复工具引入漏洞,另一 AI 自主发现并利用
  • Snowflake CLI 与 OpenHands 高危漏洞预警
  • Claude 新增生产语音 Agent 管理和删除功能
  • AI;DR:程序员视角审视AI阅读工具的局限
  • 同集群利用率提升33点:调换任务顺序就够了
  • AI Agent应锁定工具契约而非仅工具名
  • Vercel发布Agent Plugins 1.0:AI Agent互操作标准成型
  • robots.txt 对 AI 爬虫的屏蔽效果:你可能误读了 RFC 9309
  • 15 款 AI API 真实延迟横评:150 次测试揭示实际响应速度
  • 给 AI Agent 加记忆模块避免重复踩坑
  • 五个程序员必知的Prompt管理工具
  • 5 款值得关注的 Prompt 管理工具评测
  • 我把AI API费用削减了95%的真实经验
  • 我的 AI API 账单如何降低了 95%(质量不降)
  • 免费模型端点上线 CI 前必做的 5 项检查
  • MiniMax 开源音乐生成模型:一次生成 5 分钟完整歌曲
  • 用哈希链审计免费 LLM 模型输出:防止响应篡改
  • Tracewood:将 AI 编码 Agent 遥测数据变为 3D 森林可视化
  • 私有知识库 Node.js 应用的多模型路由计费设计
  • NVIDIA 30B MoE 模型登陆 SageMaker:Agent 任务吞吐量提升 4 倍
  • xAI + Cursor 联合推出 Grokbot:云端操控电脑的 AI Agent 体验评测
  • 2025 本地优先 AI Agent 实战总结:ScreenPipe、Headroom 与隐私代价
  • AI Agent 上线前必须回答的权限设计问题
  • 2026年AI模型延迟实测:TTFT与吞吐量全排行
  • Circle推出AI Agent应用商店:机器间支付发现成为竞争壁垒
  • 从零构建 Agentic AI 系统:混合 RAG、GraphRAG、12 工具与 K8s 部署
  • AI Agent 监控的实战教训:空输出比报错更难发现
  • TokenCap 2.1:AI 编码助手的上下文压缩与 Debt Ledger
  • Qwen3.8-27B 基准测试逼近 DeepSeek V4 与 GPT-5.6 Luna Max
  • AI Agent 测试范式转变:从验证代码到评估行为
  • LLM 路由指南:按任务选对模型
  • 2026年AI Agent实战指南:选型核心维度与架构对比
  • 付费沙箱中 AI Agent 的隐性计费陷阱
  • 免费模型端点 ≠ 免费服务器:四层对比选型框架
  • Amodei反驳开源AI:开放权重并非万能解
  • Replit 引入黑盒渗透测试强化 AI 应用安全
  • 已加载 51 / 9309
8.0
热点
AI SCORE
编程提效2026-08-18 03:37

AI Agent应锁定工具契约而非仅工具名

dev.to · AI#Agent#架构设计#LLM
Editor brief · 编辑速览

文章提出将工具引用视为(name, version, schema_hash, capabilities, effect_class, credential_version)元组而非字符串,避免工具同名但行为变更导致的兼容性问题。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

工具名不等于 API 契约。

如果一个 Agent 调用了 send_invoice,仅凭这个名称,你无法知道它将使用哪个输入 schema、哪些权限集合、什么样的副作用行为,或者由哪个 provider 版本执行。同一个工具可以保持名称不变,却修改了必填字段、扩大了资源作用域,或者把一次空跑(dry-run)变成了真正的变更操作。

本文展示一个轻量的工具契约注册中心,以及一套使契约漂移(contract drift)变得可见的测试计划。目标是让不兼容的变更在模型调用它之前就失败。

Agent 应解析的契约

把工具引用当作一个元组(tuple),而不是字符串:

  • name:稳定的人类可读标识符
  • version:主/次契约版本号
  • schema_hash:输入与输出 schema 的规范哈希值
  • capabilities:此次调用可能触及的具体资源和操作
  • effect_class:PURE、IDEMPOTENT、REPLAYABLE、UNKNOWN 或 NON_RETRYABLE
  • credential_version:调度时校验的身份与策略修订版本号

模型可以看到友好的描述。但运行时必须解析并强制执行这个元组。

下面是一个刻意精简的 Python 设计。解析发生在执行之前,解析后的契约会随这次运行一起被记录下来。

from dataclasses import dataclass
from hashlib import sha256
import json

@dataclass(frozen=True)
class ToolContract:
    name: str
    version: str
    schema_hash: str
    capabilities: frozenset[str]
    effect_class: str
    credential_version: int

def canonical_hash(schema: dict) -> str:
    raw = json.dumps(schema, sort_keys=True, separators=(",", ":"))
    return sha256(raw.encode()).hexdigest()[:16]

def resolve(registry, requested, current_credential_version):
    contract = registry.get((requested["name"], requested["version"]))
    if contract is None:
        raise RuntimeError("tool_contract_not_found")
    if contract.schema_hash != requested["schema_hash"]:
        raise RuntimeError("tool_schema_drift")
    if contract.credential_version != current_credential_version:
        raise RuntimeError("credential_policy_changed")
    return contract

不要让模型自行选择 capabilities、effect_class 或 credential_version。这些是运行时持有的字段。

在调度时记录契约

在副作用开始之前存储一条调度记录:

{
  "run_id": "run_0187",
  "effect_id": "effect_0187_03",
  "tool": "billing.send_invoice",
  "version": "2.1",
  "schema_hash": "a91e7c3b44e0c012",
  "capabilities": ["invoice:write:tenant-42"],
  "effect_class": "IDEMPOTENT",
  "credential_version": 19,
  "status": "DISPATCHED"
}

如果 worker 在调度后崩溃,这条记录让协调器(reconciler)可以向 provider 确认副作用是否真的发生了。它不能悄无声息地用最新的契约重试。

安全发布:扩展、迁移、收缩

扩展(Expand):在新契约旁边发布旧契约。只有在适配器保留了旧的效果语义时才添加它。

迁移(Migrate):更新调用方、prompts、缓存的计划以及队列中的工作,使其请求新版本。拒绝混用版本的新工作。

收缩(Contract):只有在队列、重试记录和协调任务中不再包含对旧版本的引用后,才删除旧版本。

对于小版本变更,只有在能证明输入输出完全向后兼容时,才保持同一主版本号。新增一个可选字段并不自动意味着安全——如果它改变了授权逻辑、费用或副作用行为,则另当别论。

能捕获真实漂移的测试

最有价值的测试是刻意的不匹配:发送一个请求,工具名有效但 schema 哈希错误。如果它仍然执行了,说明注册中心只是装饰品。

这在运维层面改变了什么

这个边界分离了三种不同的失败:

  • 进程失败:worker 宕机或重启了。
  • 契约失败:请求的工具语义已不再可用。
  • 效果不确定性:worker 崩溃前 provider 可能已接受了调用。

它们需要不同的恢复路径。重启 worker 可以解决第一种。它解决不了第二种,而且不能对第三种进行猜测。

如果你持续运行 OpenClaw 或其他 Agent,宿主机层只有在注册中心、持久的调度记录和协调任务能在重启中存活下来时才有价值。托管运行时(例如 Ampere 上的托管 OpenClaw 托管方案)可以作为评估始终在线工作负载的一种部署选项,但它不会定义你的工具契约,也不会消除凭证和 prompt 注入风险。

契约核对清单

  • 契约版本是否显式?
  • schema 哈希是否按规范计算?
  • capabilities 和 effect class 是否由运行时持有?
  • 调度时是否重新校验了凭证和策略版本?
  • 队列中的工作能否解析到精确记录的版本?
  • UNKNOWN 是否通过 provider 证据而非盲目重试来协调?
  • 旧契约是否只在队列和账本迁移后才退役?
  • CI 测试是否证明了同名 schema 变更会被拒绝?

模型可以选择它想做什么。运行时必须决定使用完全相同的工具契约来做是否仍然安全。

你的思考

当前 Agent 运行时中,哪个最小的契约字段你让它保持隐式了?

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
同集群利用率提升33点:调换任务顺序就够了
下一篇
Vercel发布Agent Plugins 1.0:AI Agent互操作标准成型