只读、幂等、超时和限流为什么属于能力声明?
关键词Agent 工具幂等、AI 工具调用重试、Agent 超时、Agent 限流、业务 API 执行约束假设一套企业系统向 Agent 提供四项能力order.read 查询订单 refund.request.create 创建退款申请 notification.batch.send 批量发送通知 report.generate 生成经营报表它们的参数都可以由 OpenAPI 或其他输入 Schema 描述运行时也知道应该向哪个地址发送请求。但只知道“怎么调用”仍然不足以安全执行。运行时还需要知道查询订单是否真的不改变业务状态创建退款申请失败后能不能用同一组参数重试报表生成等待多久应该停止批量通知在一分钟内最多允许调用多少次这些问题看起来像运行时配置实际上首先描述的是 operation 本身的稳定执行属性。如果每个 Agent 平台都靠 HTTP 方法、接口名称或私有经验重新猜一次就会出现完全不同的行为运行时 A 看到 GET默认无限重试 运行时 B 看到 POST永不重试 运行时 C 等待模型接口的默认 30 秒 运行时 D 没有限流短时间发起数百次批量通知因此能力声明除了说明参数结构和治理意图还需要一组最小、可移植的执行提示。执行提示不负责替运行时编排整个工作流但它应该让不同运行时对“这项操作能否安全读取、重复、等待和限速”形成同一基本理解。1. 输入 Schema 描述形状执行语义描述行为下面这段 Schema 可以告诉运行时退款接口需要哪些参数type:objectrequired:-order_id-amountproperties:order_id:type:stringamount:type:number它不能回答调用会不会改变业务状态 网络断开后重发会不会创建两笔退款 等待 10 秒后超时服务端是否仍可能继续执行 这个能力能承受多高调用频率参数结构与执行行为是两个维度。前者保证调用格式正确后者帮助运行时避免用错误方式调用一项本来合法的能力。对于普通人工页面这些知识可能被写死在前端代码、SDK 或开发者经验里。进入 Agent 场景后调用者可能来自不同模型、平台、工作流和网关隐含知识就会迅速失效。这正是把最小执行语义放进能力声明的原因。2.readonly描述的是业务状态不只是 HTTP 方法ACC v1 可以这样声明execution:readonly:true它表示该 operation 不应改变业务状态。这里强调的是业务效果不是网络协议表面。一个GET请求通常只读但并不天然安全GET /export-and-mark-as-downloaded GET /track-email-open GET /legacy/trigger-sync这些历史接口可能产生状态变化或外部副作用。反过来一些只读查询因为参数复杂可能使用POSTPOST /reports/query POST /search/advanced如果运行时只根据 HTTP 方法推断就可能同时犯两类错误把会改变状态的GET当作只读能力把使用POST的纯查询当作写操作。显式readonly为不同绑定和运行时提供一项稳定信号。但它仍然只是一项声明不是最终保证。API 作者必须如实标注实现本身必须真的不改变业务状态读取敏感数据仍然需要主体和业务授权“只读”不等于“无风险”大规模导出即使不修改状态也可能具有高后果。所以readonly回答的是执行效果不替代risk、subject和最终 Authority。3.idempotent解决的是“同一动作能不能安全重复”分布式系统里最危险的一句话之一是刚才好像超时了再发一次试试。客户端超时时可能存在至少三种情况请求根本没有到达服务端请求到达但业务事务失败请求已经成功只是响应没有返回客户端。如果第三种情况下直接重试可能产生两笔退款两次库存扣减两条通知两个重复工单两次外部部署。ACC v1 的声明是execution:idempotent:true它表示使用相同参数重复调用该 operation可以被安全地视为同一逻辑动作。这项语义让运行时知道重试是否可能成立但它不会凭空让接口获得幂等性。真正的幂等通常需要业务实现提供稳定的幂等键唯一约束请求指纹重复结果回放明确的幂等窗口对并发请求的原子处理。如果 API 没有这些保证却把idempotent: true写进声明运行时会基于错误信号采取危险行动。因此幂等声明描述已经存在的能力属性不是要求运行时替业务系统发明幂等。同样idempotent: true也不等于“应该无限自动重试”。是否重试还需要考虑错误类型最大次数退避策略剩余任务期限服务端是否返回明确终态当前调用是否仍绑定原始主体和参数外部系统是否具有同样的幂等保证。幂等是重试的必要信号之一不是完整重试策略。4.timeout_ms是等待边界提示不是取消保证长时间没有结果时Agent 运行时必须决定继续等待、转为异步、返回待处理还是终止本次尝试。ACC v1 支持execution:timeout_ms:10000它表示 invocation 的超时提示以毫秒为单位。这项信息有几个现实价值避免运行时无限等待帮助工作流设置有界阻塞时间让用户界面区分同步操作和长任务为模型提供明确的“暂未完成”状态而不是让它自行猜测让不同运行时不必为同一 operation 各自发明默认值。但“客户端停止等待”和“服务端停止执行”不是一回事。下面这条链路完全可能发生运行时等待 10 秒后超时 - 客户端关闭连接 - 业务服务继续处理 - 第 15 秒完成退款 - Agent 因为超时又发起一次调用所以timeout_ms不能被解释为服务端已经取消业务事务已经回滚可以立即安全重试超时后一定没有产生业务后果运行时必须采用某一种 UI 或错误文本。如果系统需要真正的取消语义还必须定义取消令牌、服务端确认、可取消阶段、补偿动作和最终状态查询。这已经超出一个简单执行提示能够承担的范围。5.rate_limit描述调用节奏不替代企业配额系统一项能力单次调用可能完全合法但短时间高频调用仍会产生风险。例如批量发送通知单次参数正确连续调用会骚扰大量客户 报表导出单次只读高频执行会拖垮数据库 库存查询单次低风险循环调用会放大成本 外部供应商 API超过频率会触发封禁或额外费用ACC v1 可以声明execution:rate_limit:count:30window:1m它表达一项运行时限流提示在给定窗口内调用次数不应超过声明上限。这让兼容运行时能够在调用到达业务系统之前建立基本节奏控制。但一条通用声明无法替整个企业回答所有配额问题是按 route、Agent、用户、主体还是租户计数多个运行时如何共享计数窗口是固定、滑动还是令牌桶超限后拒绝、排队还是降级不同客户套餐是否有不同额度内部重试是否计入配额审批等待后的恢复是否重新计数这些问题依赖部署策略、计费体系和组织边界。因此通用契约适合提供可移植的调用频率提示部署方负责决定计数键、算法、共享状态和失败行为。6. 四项执行提示彼此正交不能相互推导一项能力可以同时具有不同组合能力readonlyidempotenttimeoutrate limit查询单个订单truetrue短较宽松生成复杂报表truetrue长较严格创建退款申请false可能为 true中严格批量发送通知false取决于业务键长很严格触发一次性部署false通常为 false长严格从readonly: true不能自动推出数据不敏感风险一定是 low可以无限并发可以无限重试不需要可信主体。从idempotent: true也不能自动推出操作是只读没有业务副作用任何错误都值得重试相同参数在任何时间都代表同一业务意图。执行提示的价值就在于它们分别描述不同事实而不是被压缩成一个模糊的“safe”字段。7. 为什么这些信息不能只留在运行时私有配置里团队当然可以在某个平台里配置refund.create timeout10s refund.create retryfalse refund.create limit10/min问题是同一业务能力可能同时被Difyn8nMCP Client自研 AgentAPI Gateway本地执行器云端工作流调用。如果执行语义只存在某一个运行时里其他调用方仍然需要重新猜测和配置。随着平台增加配置会分叉平台 A 认为可重试 平台 B 认为不可重试 平台 C 等待 30 秒 平台 D 没有限流把 operation 的稳定属性放在能力声明里可以建立一份共同事实源。部署方仍可采用更保守的本地策略声明上限 30/min当前组织限制为 10/min 声明超时 10s当前路由只允许等待 5s 声明可幂等重试当前高风险场景仍选择不自动重试但本地策略不应该悄悄放宽声明中的安全边界。8. 为什么 ACC 不继续定义重试、并发和事务看到idempotent和timeout_ms后一个自然问题是为什么不顺便把重试次数、退避算法、并发数、回滚和事务都写进 ACC因为这些概念已经从稳定 operation 属性进入具体执行策略和工作流语义。重试策略需要区分网络错误、业务拒绝、超时、限流和未知终态还要定义退避、抖动、预算和截止时间。并发控制需要确定计数维度、共享状态、一致性模型和租户边界。事务与回滚跨多个业务 API 的原子性不能由一个atomic: true字段创造。它需要事务协调、Saga、补偿授权、状态恢复和失败语义。取消需要服务端协议确认而不是客户端停止等待。这些都是真实需求但它们属于运行时、工作流、业务系统或独立协议。把它们没有边界地塞进能力声明会让一个薄契约逐渐变成无法跨实现兑现的编排语言。9. 声明、运行时与业务系统怎样分工一条可靠链路可以这样理解能力声明 告诉调用方 operation 是否只读、是否幂等、建议等待多久、调用频率上限 运行时 结合本地策略决定等待、限流、是否尝试重试以及怎样报告状态 业务系统 真正保证状态变化、幂等唯一性、最终授权和业务结果更完整地说层次责任ACC Core定义可移植执行提示及其稳定含义协议 Binding映射承载协议的原生信号、优先级和保守回退Agent 运行时执行超时与限流结合错误和本地政策作保守决策工作流系统管理重试预算、异步等待、并发、编排和补偿业务系统保证真实只读效果、幂等实现、最终权限和状态一致性这仍然遵循 Reach 与 Authority 的分离。执行提示告诉运行时“怎样更安全地尝试调用”并不授予主体操作业务对象的最终权限。10. 一段完整声明应该怎样理解例如x-agent-capability:version:1enabled:truescope:order.readrisk:level:lowsubject:required:trueaudit:sensitive:trueexecution:readonly:trueidempotent:truetimeout_ms:5000rate_limit:count:60window:1m它表达的是该 operation 显式允许进入 Agent-facing 候选范围当前场景可通过稳定 scope 引用它最坏合理后果被声明为 low每次调用都需要可信行动主体参数或响应可能含敏感数据需要保守日志处理操作不应改变业务状态相同参数可以安全重复运行时建议在 5 秒处建立等待边界运行时应尊重每分钟 60 次的调用频率提示。它没有表达当前用户一定可以读取这个订单所有 low 风险能力都不需要治理运行时可以无限重试5 秒后服务端一定取消任何租户都拥有相同配额审计和限流已经由某个产品自动完成。契约的专业性不在于字段看起来多而在于每项声明都清楚说明自己保证什么、不保证什么。11. 八个常见误区误区一GET 一定只读历史接口和不规范实现可能在 GET 中产生副作用显式声明与实现审查仍然必要。误区二POST 一定不可幂等带稳定业务键、唯一约束和结果回放的 POST 可以具备幂等语义。误区三幂等就应该自动重试重试仍要看错误类型、次数、截止时间和未知终态。误区四客户端超时代表业务没有执行停止等待不等于服务端取消更不等于事务回滚。误区五限流只为保护服务器性能限流也控制外部通知、资金动作、第三方成本和业务影响范围。误区六只读操作天然低风险大规模导出、敏感查询和跨租户读取即使不改状态也可能具有严重后果。误区七声明了幂等运行时就能替业务系统保证幂等幂等必须由真正持有业务状态的一侧实现。误区八执行提示等于最终授权调用方式正确不代表当前主体有权操作当前资源。12. 一份最小执行语义检查表在把 operation 暴露给 Agent 前可以先回答readonly是否按真实业务效果标注而不是只看 HTTP 方法只读能力是否仍按数据敏感性和影响范围评估风险idempotent: true是否有服务端唯一约束或等价机制支撑相同参数在幂等窗口内是否真的代表同一逻辑动作超时后是否可以查询最终状态而不是立即盲目重试客户端停止等待与服务端取消是否被明确区分限流的本地计数维度和失败行为是否已经定义部署策略是否只会收紧而不会悄悄放宽声明边界重试、并发、补偿和事务是否留在正确的运行时或工作流层业务系统是否仍执行最终主体权限与业务状态校验日志和审计能否区分首次调用、重试、重复消费和幂等命中如果这些事实只能藏在某一个 SDK 或某位开发者脑中多 Agent、多运行时接入后迟早会产生不一致。13. 结语执行语义是能力的一部分但不是整个执行系统Agent 调用业务能力时风险不只来自“选错工具”或“参数写错”。即使工具和参数完全正确错误的执行方式仍然可能造成真实后果把有副作用的操作当成查询把未知终态当成失败并重复执行无限等待一个已经失联的任务在短时间内放大一项原本有限的业务动作。因此只读、幂等、超时和限流不是某个产品的界面偏好而是不同运行时理解一项能力时需要共享的最小执行语义。它们应该进入能力声明因为它们描述 operation 的稳定属性。它们又必须保持克制因为完整的重试、取消、并发、事务和补偿需要更丰富的运行时与业务协议。好的契约不会试图执行一切。它只会在不同系统即将采取行动之前把那些不能继续依赖猜测的事实明确说出来。对 Agent 系统而言这已经足以避免大量昂贵而且完全可以预防的错误。

相关新闻

4个维修隐坑|佛山台式电脑闲置自动重启自查,别盲目花钱换电源

4个维修隐坑|佛山台式电脑闲置自动重启自查,别盲目花钱换电源

台式机闲置重启的高频困扰🖥️很多佛山本地办公、家用台式机,都会遇到这种难以琢磨的故障。日常打字、办公、玩游戏全程稳定,不会卡顿、不会重启。只要离开电脑挂机下载、夜间闲置待机,设备就会莫名自动重启。这类故障隐蔽性很强&…

2026/7/29 23:26:53阅读更多 →
单片机计算机毕设之基于 STM32 的室内温气多参数监测设备开发 基于 STM32 的自动通风与有害气体声光报警系统设计(010801)

单片机计算机毕设之基于 STM32 的室内温气多参数监测设备开发 基于 STM32 的自动通风与有害气体声光报警系统设计(010801)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/29 23:26:53阅读更多 →
ROS传感器数据准备指南:IMU、里程计与GPS消息格式与转换技巧

ROS传感器数据准备指南:IMU、里程计与GPS消息格式与转换技巧

ROS传感器数据准备指南:IMU、里程计与GPS消息格式与转换技巧 【免费下载链接】ros-sensor-fusion-tutorial An in-depth step-by-step tutorial for implementing sensor fusion with robot_localization! 🛰 项目地址: https://gitcode.com/gh_mirror…

2026/7/29 23:26:53阅读更多 →
【数字信号处理含matlab代码】第三篇:线性相位 FIR 滤波器(二)——Type-3 与 Type-4 及自动识别

【数字信号处理含matlab代码】第三篇:线性相位 FIR 滤波器(二)——Type-3 与 Type-4 及自动识别

第三篇:线性相位 FIR 滤波器(二)——Type-3 与 Type-4 及自动识别 在上一篇中,我们领略了偶对称(Type‑1/2)的优美余弦展开。然而,工程中还存在另一类重要的线性相位滤波器——奇对称&#xff0…

2026/7/30 0:37:02阅读更多 →
Linux内核调试工具链终极对比:printk/ftrace/perf/eBPF/BCC的场景选择

Linux内核调试工具链终极对比:printk/ftrace/perf/eBPF/BCC的场景选择

Linux内核调试工具链终极对比:printk/ftrace/perf/eBPF/BCC的场景选择作者:钟伊人 | 日期:2026-07-29 | Week5 总结与避坑模块一:内核调试的工具图谱与选型框架 为什么需要多种调试工具? Linux内核拥有超过3000万行代码…

2026/7/30 0:37:02阅读更多 →
短剧已经进入内卷化process----AI化主流

短剧已经进入内卷化process----AI化主流

因为我是发评论,所以他越卷,我就越好发,因为他们更加需要我的评论 ------------------------------------------- 结论先说:短剧(微短剧)确实处在热度高位,是当下国内增长最强的文娱赛道之一&…

2026/7/30 0:37:02阅读更多 →
初识Git:为什么AI时代的开发者需要版本控制

初识Git:为什么AI时代的开发者需要版本控制

面向 AI 开发者的 Git 实操教程,技术布道式写作,11篇文章从入门到精通 系列目录 序号文章核心主题图解01初识Git版本控制概念、Repo/Commit/Branch/Merge01 手动备份对比02Git基本操作init/add/commit/log/switch,论文案例02 基本工作流03Gi…

2026/7/30 0:37:02阅读更多 →
今日头条成功的原因-----界面创新-----节省脑力成本

今日头条成功的原因-----界面创新-----节省脑力成本

在今日头条产生的时候,已经有很多新闻网站了,但是那些都是这个样子的:就是说:你要什么新闻,你自己去找,这里有很多个官网菜单,你要什么自己去挑选。然后今日头条出来了,是这个样子的…

2026/7/30 0:37:02阅读更多 →
什么是“外部结果”?

什么是“外部结果”?

外部结果,就是你的能力经过行动转化后,在现实世界中产生的、别人能够观察、验证和使用的变化。简单理解: 内部资产 你拥有的东西。 外部结果 你创造出来的东西。第一层:为什么叫“外部”? 因为它不只存在于你的脑中。…

2026/7/30 0:35:01阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →