前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
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 · 全部资讯9866
  • Grok Build 真实用户体验:宣传与实际的落差
  • 两个面向AI Agent的x402 API:页面质量检测与成本计算
  • AI幻觉报告泛滥,谷歌暂停开源漏洞奖励计划
  • Rust成为微软内部一级语言,与C++/C#并列
  • 生产级Agentic RAG系统实战课程
  • Claude-Mem:让AI编程工具跨会话持久记忆
  • Google Gemini 调整分层策略:免费用户只能用量最小的 Flash-Lite
  • 积分系统设计中没人会纳入预算的工程细节
  • Agenthof:用控制面让 AI Agent 的每次调用都有审计可查
  • Claude Code Mods 发布:Agent 变成可扩展平台
  • ThinkingBox:Benchmark 专门捕获 AI Agent「说完成但没做完」
  • 5 个 JSON Schema 将 AI 编程智能体的输出质量管起来
  • DeepSeek Harness v0.2 发布官方桌面客户端
  • Redis 作者新项目 DwarfStar:消费级硬件运行 DeepSeek V4
  • Chalkboard:用可视化面板追踪 AI Agent 修改过程的 Electron 工具
  • Agent PR 合并率 90% 仍可能掩盖工程工作流弱点
  • AI API 定价的隐藏成本:system prompt token 开销常被低估
  • MacBook Pro外接iPhone加速LLM推理:预填充最高提效44%
  • MCP 传输协议对比:stdio 与远程 HTTP 怎么选
  • 远程 MCP 服务器的 OAuth 2.1 认证完整指南
  • Agent报告完成但数据库未写入:分布式一致性的典型陷阱
  • Kiro Workflows:多 Agent 编排的声明式工作流框架
  • 我用AI当助产士:程序员用LLM记录分析分娩全程
  • Nocturne:可自编辑记忆的 Agent,支持遗忘策略与召回验证
  • 零依赖 Pre-commit 守卫:防止 Cursor/Claude Code 破坏整洁架构
  • Claude官方指南:如何充分释放Opus 5.5在Claude和Claude Code中的性能
  • Claude Code 接入第三方模型作子代理,省 Token 新思路
  • OpenAPI 规范一键转 MCP Server 的具体映射方法
  • 编码 Agent 权限安全:黑名单漏过 46/75 提示注入,能力边界放过 3 成
  • AI编程代理成本实测:token单价低不等于任务成本低
  • 我用 Diff Budget 约束 AI 编码 Agent 的范围蔓延
  • AI加速漏洞利用,传统漏洞表格已跟不上节奏
  • 8GB 显卡运行 510GB DeepSeek-V4.1-Flash 的实战记录
  • 本地语音转文字 pipeline:faster-whisper int8 量化实现全离线
  • 393 个 AI 构建仓库人工复审:八分之一存在严重缺陷
  • 开源工具 BootLoops + Claude 三个月产出 36 篇跨学科论文
  • Jev/TEV意图识别 vs Embedding:不是替代是分工
  • 2026年AI智能合约审计实战:从LLM到CI/CD集成
  • AI Agent通过DNS逃逸:OpenAI训练事故的技术复盘
  • Verax:为AI Agent设计的可验证紧急停止开关
  • Claude Code推出Mods系统:可直接从内部重写AI编码工具
  • IBM Bob 支持私有化部署,代码不出内网的 AI 开发时代来了
  • 近期三个 AI API 变更正在静默破坏你的线上代码
  • Angular升级全自动Agent循环架构解析
  • 7 行 Claude Code mod 可绕过 deny 规则:权限安全审计
  • Prime Intellect推出Prime Inference:前沿开源模型Serverless推理服务
  • OpenAI官方指南:如何选对GPT-6系列模型并优化提示词
  • 微软发布MAI-Transcribe-2-Streaming:实时语音转文字登顶基准榜
  • OpenAI 自研芯片 Jalapeño 量产,搭配 AMD Turin 而非英伟达
  • SQL Agent 的知识层缺失:OKF 实践(下)
  • 突变测试导致AI代理误删真实账本
  • 已加载 51 / 9866
8.0
热点
AI SCORE
技术实践2026-10-04 06:56

Agent报告完成但数据库未写入:分布式一致性的典型陷阱

Hugging Face Blog#AI Agent#分布式系统#一致性
Editor brief · 编辑速览

Hugging Face官方博客深度剖析AI Agent执行任务时「操作成功」与「数据落库」之间的状态不一致问题,给出分布式事务视角的根因分析与规避方案。

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

完整中文译文

文章配图

文章配图

Figure-1

图 1:ThinkingBox 针对孤立的 MCP 工具会话运行 AI 智能体,然后对其留下的终端后端状态和副作用进行评分。图片来自 ThinkingBox 论文。

一位客户发来邮件。她的 745 美元厨房电器在纳什维尔配送中心被困在快递"异常"状态,已经比预计送达日期晚了十五天。

AI 智能体做了仔细的工作。九次工具调用:拉取订单、查看物流、查询客户档案、搜索退换政策两次、确认无工单存在、创建一个工单、记录时间线、正确读取政策;她的账户细分确实不符合晚送达补偿条件。

然后它将工单标记为已解决,并回复"由于您的查询已解决,还有其他需要我帮助的吗?"

有两处错误。承运商异常仍然开放,所以要求的最终状态应该是"待处理",等待解决。而客户从未得到她实际询问的问题的真正答案。

检查工具调用的 AI 评分器会看到九次格式良好的调用。检查 AI 智能体是否写入数据库的评分器也会看到这一点。数据库才是不同意的那一方。

这个差距正是 ThinkingBox 衡量的。在 507 个有状态业务工作流中,每个工作流针对各种 LLM 模型运行 20 次,它根据终端后端状态和副作用对 AI 智能体进行评分。这篇文章涵盖我们的发现、一致性的成本,以及如何通过 OpenEnv 自己运行这个基准测试。

你可以自己运行这个:上面的例子改编自基准测试任务 sandbox_external_retail_group1.py:test_case_ST003_006,而失败的执行检查是一个字段:工单的状态是 solved,而要求的最终状态是 hold。完整追踪记录在我们的论文附录 D.4,案例 3 中。

一次工具调用不是结果

一次成功不是可靠性

你能依赖你 AI 智能体背后的模型吗?

一致性要付出什么成本

想在阅读结果之前自己试试?跳到"自己运行"部分。

一次工具调用不是结果

最终响应和有效的工具调用只是代理。AI 智能体可能听起来正确,但实际上留下了错误的值、修改了错误的记录,或者产生了额外的副作用。只有它留下的记录才能定案。

这个差距很大。在覆盖 12 个 LLM 模型共 121,680 个有效试验的公共集消融实验中,79,853 次尝试未通过执行检查。在这些失败中,67.24% 仍然正常终止、调用了状态变更工具、并报告没有最终工具错误。然而,执行检查仍然在 77.61% 中发现了错误的字段值,43.30% 有意外的额外效果,25.36% 缺少必需的效果。这些状态检查发现的结果是重叠的。

一条轨迹是一个声明。数据库状态是证据。重复是信任测试。

一次成功不是可靠性

一个正确处理一次退款而下一次四次都处理错误的 AI 智能体,不是一个正常工作的退款 AI 智能体。因此每个任务运行 20 次独立尝试,每次都从相同的干净后端开始,我们报告三个不同的指标:

表 1:我们报告的三个数字,以及每个数字回答的问题。

在这篇博客文章中,我们使用 observed 20/20 作为字面计数,即 507 个任务中有多少通过了 20 次中的 20 次。不使用估计器,不使用平滑处理。

从熟悉的视图开始。下表报告了按领域细分的 pass@1,即单次尝试分数估计。这是大多数排行榜发布的数字,单独来看它读起来像一个普通的能力排名。

表 2:ThinkingBox-Bench 按领域的 pass@1 (%)。每个模型在 20 次重复试验中评估每个任务。加粗标记组内领先;下划线标记第二名。单次尝试分数估计的标准误差在我们的 ThinkingBox 论文中的表 4 中提供。

Claude Opus 5.5 以 67.16% 的总体成绩领先,比 Claude Opus 5 高出三分之二个百分点。Kimi-K3 是最强的开源权重模型,与 GPT-6-Astra 相差不到一分。领域同样重要:Claude Opus 4.6 在零售领域得分为 68.62%,但在汽车保险领域仅为 8.30%。

一次好的运行告诉你模型能够完成这项工作。它不能告诉你它是否会再次完成。所以运行每个任务 20 次,问自己有多少分数能保留下来。

Figure-2

图 2:每个模型的单次尝试分数在 20 次重复中保留了多少。

只有三个模型保住了大部分 pass@1 分数:GPT-6 Astra 保留了其单次尝试率的 78%,Claude Opus 5.5 和 Claude Opus 5 各保留了 71%。在另一端,GLM-5.1、Kimi-K2.6 和 DeepSeek-V4-Pro 各保留了约 8%。

模型一次能做什么和每次做什么之间的差距就是全部故事。

你能依赖你 AI 智能体背后的模型吗?

Figure-3

图 3:广度和一致性分道扬镳。显示了十八个模型中的十二个;低于 33% pass@1 的六个因可读性省略。

Kimi-K3 在我们测试的所有模型中覆盖范围最广。它至少一次解决了 93.89% 的基准测试:507 个任务中的 476 个。只有 31 个任务完全击败了它,是所有模型中最少的。在零售工作流上它以 82.24% 的 pass@1 遥遥领先,领先于每个专有模型。

Kimi-K3 也是一致性最差的模型之一。只有 68 个任务(占 507 个的 13.41%)在全部 20 次尝试中都成功。

Claude Opus 5 反转了这个结果。它至少一次解决的任务较少(79.09%;106 个完全击败它),但在每次尝试中都完成了 47.53% 的基准测试。

一个更新的模型不能解决这个问题。Claude Opus 5.5 在每次尝试的平均分数上高于 Claude Opus 5,为 67.16% 对 66.50%,并至少一次解决了更多任务。它在全部 20 次尝试中通过的任务数量完全相同:241 个。零点五个百分点的 headline 准确率完全没有买到额外的可靠性。

Kimi-K3 至少一次解决的任务比 Opus 5 多 75 个。

Opus 5 持续解决的任务比 Kimi-K3 多 173 个。

如果你在为接触真实记录的工作选择模型,pass@20 不是你应该看的列。

一致性要付出什么成本

能力比较通常在分数处停止。对于任何在实际部署中的人来说,相关问题是成功执行一个工作单元的成本是多少。我们将其衡量为每次成功任务尝试的成本。我们说任务尝试是因为每个基准测试任务都重复运行,并且每次尝试都会产生成本,所以 pass@1 是匹配的质量分母。

我们从每个模型的完整 507 × 20 运行活动中获取其记录的 token 使用量,并按 OpenRouter+ 上提供的未折扣标价定价,逆推促销折扣,不包括声明量化(endpoints that declare quantization)的端点。输入、输出和缓存费率均来自每个模型的一个提供商端点。

然后我们将一次运行的成本除以成功的尝试次数:

每次成功任务尝试的成本 = 507 次尝试(每个任务一次)的估计成本 ÷ (507 × pass@1)

这是一个比较效率指数,不是账单,也不是服务一个生产请求的价格。它也是对单次成功的定价,不是一致性。我们接下来为一致性定价。

示例:GPT-5.4 的 507 次尝试(每个任务一次尝试)成本为 43.49 美元,pass@1 为 65.36%,所以 43.49 ÷ (507 × 0.6536) = 每次成功任务尝试 0.131 美元。

如果没有任何其他模型既不更贵又至少同样准确,那么一个模型就在前沿线上。三个模型符合条件;其他每个模型至少在一个维度上被主导。

Figure-4

图 4:每次成功任务尝试的成本与 pass@1 的关系。圆环标记的点是帕累托成本前沿模型。

前沿有三个层级。GPT-5.6 Sol 的每次成功成本最低,为 0.127 美元;GPT-5.4 将 pass@1 提高了 3.45 个百分点,每次成功仅多花 0.004 美元;Claude Opus 5.5 再增加 1.80 个百分点,每次成功成本为 0.276 美元。这三个模型都保持在成本前沿线上,因为没有更便宜的模型能匹配其 pass@1。

Claude Opus 5 是最明显的案例:每次成功尝试 0.475 美元,pass@1 为 66.50%,它既比 Claude Opus 5.5(0.276 美元和 67.16%)更贵又不更准确。

现在为一致性定价

每次成功成本奖励的是便宜且经常正确的模型。它不奖励每次都正确的模型。因此我们还计算每个可靠任务的成本:20 次运行 507 次尝试的完整活动成本,除以模型在全部 20 次尝试中都通过的任务数。

每个可靠任务的成本 = 20 次运行 507 次尝试的估计成本 ÷ 20/20 通过的任务数

示例:GPT-6-Astra 的活动成本为 20 × 86.03 = 1,720.60 美元,在每次尝试中都通过了 231 个任务,所以 1,720.60 ÷ 231 = 每个可靠任务 7.45 美元。

表 3:在至少有一个观察到的 20/20 任务的模型中,每次可靠任务的成本最低的九个模型,按成本从低到高排序。预估金额$,非实际云账单。

现在按一致性排名。GPT-5.4 最便宜为 $6.80,但仅有 128 个任务达到标准。GPT-6 Astra 达到 231 个,成本 $7.45,Claude Opus 5.5 以并列最高的 241 个任务,成本 $7.80。

三个模型没有一个能完全压制另一个:每多一个可靠任务,成本都在上升。Claude Opus 5 也超过了 241,但成本为 $13.30,所以 Opus 5.5 完全压制了它。GPT-5.6 Sol 单次成功最便宜为 $0.127,但每个可靠任务的成本为 $9.76。获得正确答案的最便宜方式,不是获得可靠任务的最便宜方式。

我们为每个失败的 trace 分配一个确定性的诊断签名,核心结论是可操作的:大约五分之四的失败是工具处理问题,而非推理问题。跨越我们论文中表 5 的消融研究:

这些是每个模型份额和可观察标签的未加权平均值,而非唯一的因果解释。

实际模式很简单:智能体通常能走到尝试执行工作流的阶段,然后在工具错误、前置条件失败或空查询面前无法恢复。这是一个重试和错误恢复问题,在它成为模型问题之前。

难度也随领域不同而变化:在上方面表 2 列出的模型中,零售平均 pass@1 为 59.52%,而汽车保险为 33.83%。

如何应对。把 20/20 率当作设计输入,而非判决。基准测试评分的同一信号在生产环境中同样可用:在提交前检查终端状态,而非模型对它的总结。

对工具和系统错误进行分类,以便重试能针对可恢复的错误。将工具表面缩减到工作流所需的范围。对于那些无法低成本逆转的变更,要求人工审批。我们尚未在这个基准测试中测量任何这些措施带来的提升,而这正是该环境现在可以测试的东西。

ThinkingBox 是智能体沙箱,而 ThinkingBox-Bench 是用于评估智能体的数据集基准。上方图表展示了循环;以下是每个部分的作用。

Figure-1a

图 5:上方图 1 面板 A 中的沙箱循环:隔离的工具会话、终端数据库状态、副作用、可执行裁判。

每个任务定义了起始后端状态、用户目标、可用的 MCP 工具、领域策略以及对终端状态的可执行检查。一个模拟用户持有私有上下文(预订编号、偏好或出生日期),仅在被询问时释放。

每次尝试都获得一个状态全新初始化的隔离 MCP 会话。同一任务的两次尝试从不共享数据库行或缓存的工具状态,这正是 20 次试验比较有意义的原因。

最后,副作用提取器推导出实际发生了什么变化,确定性裁判将其与所需终止状态进行比较,接受任何产生正确结果的操作轨迹,同时拒绝错误、缺失或额外的效果。对于没有干净数据库值的需求("智能体是否披露了这不保证?"),一个窄义的二元评分问题处理语义。507 个任务中有 477 个仅根据状态评分;有 30 个添加了响应评分。

信任边界:模型看到任务、对话和工具模式。黄金状态、断言、评分内部信息和凭证留在评估器一侧。

ThinkingBox 现已在 Hugging Face 上线,包含测试框架和数据集。ThinkingBox-Bench 现位于 OpenEnv 接口之后,每个完成的 episode 返回一个二元的通过/失败奖励。发布的适配器专为评估而设计;在训练工作流中,单独的非基准场景可以使用相同的接口。

已在 Linux 和 WSL 上测试,需要 Python 3.11+、uv 和 Docker。还需要在固定版本检出 thinkingbox-data 并为智能体、模拟用户和裁判提供模型端点。一个端点可以服务所有三个角色,这是最简单的启动方式。OpenEnv 镜像仅启动 OpenEnv API;其他一切由你自行运行。

# 1. OpenEnv + ThinkingBox 环境
git clone https://github.com/huggingface/OpenEnv
cd OpenEnv
uv sync --project envs/thinkingbox_env --frozen
# 2. 可执行基准测试,固定版本
git clone https://github.com/microsoft/thinkingbox-data
git -C thinkingbox-data checkout thinkingbox-bench-v1.0
# 3. ThinkingBox CLI,提供 `tb` 命令
uv tool install "thinkingbox @ git+https://github.com/microsoft/thinkingbox"

在第二个终端中,启动 Typesense 30.1 并等待健康检查:

mkdir -p .typesense-data
docker run --rm -d --name thinkingbox-typesense \
  -p 8108:8108 \
  -v "$PWD/.typesense-data:/data" \
  typesense/typesense:30.1 \
  --data-dir /data --api-key=Fake --enable-cors
until curl -fsS http://127.0.0.1:8108/health; do sleep 1; done

启动 MCP 服务器

在第三个终端中,启动 Session Proxy 和 MCP 服务器。

cd OpenEnv
tb mcp-start --host 127.0.0.1 --port 7111 \
  --servers "$PWD/thinkingbox-data/servers/servers.yaml"
curl -fsS http://127.0.0.1:7111/health

启动 OpenEnv 服务器

回到第一个终端,针对 ThinkingBox YAML 配置启动 OpenEnv 服务器,配置中命名你的三个模型(配置指南):

OPENENV_TB_CONFIG="$PWD/thinkingbox.yaml" \
uv run --project envs/thinkingbox_env --frozen server

在运行任何内容之前先检查就绪状态。它在可观察数据、配置和 Session Proxy 检查通过前返回 503。它无法观察 Typesense 或主动探测每个模型端点,因此请单独确认这些:

curl -sS http://127.0.0.1:8000/ready

现在对一个真实 episode 进行评分。example_usage.py 仅重置和列出工具;对于智能体操作、效果和断言,请使用打包的评估器:

echo "- sandbox_external_retail_group1.py:test_case_ST002_001" > one_task.yaml
uv run --project envs/thinkingbox_env thinkingbox-eval \
  one_task.yaml \
  --config "$PWD/thinkingbox.yaml" \
  --output results.jsonl \
  --errors-output errors.jsonl \
  --repeat 1 --message-timeout 1800

OpenEnv 适配器将操作失败写入一个 errors sidecar,以便可以重跑,而非静默混入模型结果。规范结果必须解决或明确处理这些尝试;我们将系统错误计为不成功的试验。

运行受限于固定的框架提交、固定的数据版本和 bundle 哈希,因此规范结果是可验证的,而非只是断言。

这项工作有用的部分不是我们的 pass@1 排行榜。而是这个环境。

如果你正在评估一个触碰真实记录的智能体:

检查一个失败案例。找一个干净终止但仍然失败的运行,查看数据库中实际发生了什么变化。它重新审视了你的评估实际在测量什么。

通过 OpenEnv 用你自己的模型复现一个任务。

报告一个重复指标,并定义它。无论你的用例支持多少 k;说明你报告的是 best-of-k 还是 every-of-k,以及你是如何计算的。

更多细节请参阅以下链接:

环境:envs/thinkingbox_env

OpenEnv:https://huggingface.co/docs/openenv/environments/thinkingbox

框架:microsoft/thinkingbox · tutorial

基准测试:microsoft/thinkingbox-data · v1.0 release

数据集查看器:microsoft/ThinkingBox-Bench

论文:arXiv:2608.19741 或 HF

RL 训练(即将上线):microsoft/thinkingbox-training

ThinkingBox 代码采用 MIT 许可证;基准测试数据采用 CDLA-Permissive-2.0;OpenEnv 环境随 OpenEnv 的 BSD-3-Clause 发布。

免责声明:公开基准测试中的每个任务都是合成重建。 工作流和策略基于真实的 AI 智能体企业模式建模;客户并非真实。

ThinkingBox 和 ThinkingBox-Bench 由 Microsoft Copilot Studio 团队与 Toloka 合作构建,合作者来自University of Pittsburgh、Northwestern University、Columbia University 和 UC Irvine 在 Microsoft 实习的学生。问题欢迎在下方评论区或 github 上提出。

  • OpenRouter 成本快照拍摄于 2026 年 9 月 20 日;Opus 5.5 定价来自 Anthropic 网站。

本文提及的数据集 1

本文提及的论文 1

Original source

本文由 AI 翻译整理自 Hugging Face Blog,原文版权归原作者所有。

阅读英文原文
上一篇
远程 MCP 服务器的 OAuth 2.1 认证完整指南
下一篇
Kiro Workflows:多 Agent 编排的声明式工作流框架