HuggingFace Blog HuggingFace ★ 100 4 min

The Agent Said It Was Done. The Database Disagreed.

🔗 https://huggingface.co/blog/microsoft/thinkingbox

📌 Agent 回報「已解決」,但資料庫不買單

TL;DR:ThinkingBox 用後端資料庫狀態而非回覆文字評分 agent,揭露表面成功背後的真實失敗率。

一位客戶的 745 美元廚房家電卡在貨運「例外」狀態十五天。AI agent 做了九次工具呼叫:查訂單、看物流、查客戶檔案、確認政策、開工單、整理時間軸,流程看起來無可挑剔。它最後把工單標記為「已解決」,回覆客戶「問題已解決,還有什麼能幫您的嗎?」。問題是,貨運的例外狀態根本沒解除,應該停在「待處理」,而客戶實際想問的事也沒被回答。九次工具呼叫全部格式正確,但資料庫裡的真實狀態說了不一樣的故事。

🤔 工具呼叫不等於結果

這正是微軟與 Hugging Face 聯合發布的 ThinkingBox 想揭露的問題:檢查 agent 有沒有正確呼叫工具、有沒有說出聽起來合理的結尾,都只是代理指標(proxy),不是真正的結果。只有 agent 最終在後端留下的資料狀態與副作用,才是唯一的證據。

在一組涵蓋 12 個 LLM 模型、121,680 次有效試驗的共同集合消融實驗中,79,853 次嘗試在可執行檢查(executable checks)下被判定失敗。這些失敗裡,67.24% 其實是「乾淨結束」:agent 呼叫了會改變狀態的工具,也沒有回報任何工具錯誤,看起來完全正常。但實際檢查資料庫後,77.61% 的失敗案例欄位值是錯的,43.30% 產生了不該有的額外副作用,25.36% 漏掉了必要的動作。

🧩 507 個任務,每個跑 20 次

ThinkingBox 把每個任務在乾淨的後端環境下重複執行 20 次獨立嘗試,涵蓋零售、車險、旅遊、新創銀行(neobank)、顧問五個領域,共 507 個場景。並報告三種分數:

指標衡量什麼回答什麼問題
pass@1所有嘗試中成功的比例平常表現如何?
pass@2020 次中至少成功一次的任務比例它能不能做到這件事?(廣度)
observed 20/2020 次全部成功的任務數它能不能每次都對?

📊 分數高不代表可靠

整體 pass@1 排名中,Claude Opus 5.5 以 67.16% 居冠,略高於 Claude Opus 5 的 66.50%;開源模型中 Kimi-K3 以 57.37% 領先。但看「20 次全對」的穩定度,故事完全不同:GPT-6 Astra 保留了 78% 的單次分數,Claude Opus 5.5 與 Claude Opus 5 各保留 71%,而 GLM-5.1、Kimi-K2.6、DeepSeek-V4-Pro 只剩下約 8%。

Kimi-K3 覆蓋面最廣,507 個任務中有 476 個(93.89%)至少成功過一次,是場上被完全擊敗任務數最少的模型;但它在「20 次全對」上只拿下 68 個任務(13.41%),是最不穩定的模型之一。相反地,Claude Opus 5 雖然只解開 79.09% 的任務(有 106 個任務完全攻不下),卻能在 47.53% 的任務上每次都成功。

💡 升級模型未必買到可靠度

Claude Opus 5.5 比 Claude Opus 5 的每次嘗試平均分數更高(67.16% 對 66.50%),也解開更多至少成功一次的任務,但兩者「20 次全對」的任務數完全相同:241 個。換句話說,半個百分點的headline分數提升,沒有換到任何額外的穩定性。

🎯 實務啟示

如果你要選一個模型去做會真正寫入資料庫、觸碰真實記錄的 agent 工作(退款、保單變更、訂單處理),不要只看 pass@20 這種「有沒有可能做到」的數字,它會系統性高估不穩定模型的可用性。應該盯著 pass@1 與 20/20 全對率,這才反映你部署後每天會實際遇到的情況。

🔗 來源

#AIAgents #LLMEvaluation #ThinkingBox #Microsoft #HuggingFace #AgentBenchmark #Reliability #MCP #EnterpriseAI #LLM

原始資料 HuggingFace Blog · 收集於 2026-10-04
來源原標題
The Agent Said It Was Done. The Database Disagreed.
機構
HuggingFace
原始連結
https://huggingface.co/blog/microsoft/thinkingbox

摘要原文

Back to Articles The Agent Said It Was Done. The Database Disagreed. Enterprise Article Published October 3, 2026 Upvote 20 +14 Tuhin Kundu tuhink Follow microsoft Microsoft ThinkingBox grades AI agents on the records they leave behind, not the sentences they generate, and then asks whether they can do it twenty times in a row. It is now available through Hugging Face. Figure 1: ThinkingBox runs an agent against isolated MCP tool sessions, then grades the terminal backend state and side effects it leaves behind. From our ThinkingBox paper . This is a joint blog by Microsoft and Hugging Face, special thanks to Tommy Guy (founder at Enderis AI, previously Microsoft), Sergio Paniego from Hugging Face and our former interns Zhuochun Li (University of Pittsburgh), Ali Keramati (UC Irvine), Youngmin Ko (Northwestern) for co-authoring/reviewing efforts. A customer writes in. Her $745 kitchen appliance has been stuck in a courier "exception" at a Nashville distribution center, fifteen days past its estimated delivery date. The AI agent does careful work. Nine tool calls: it pulls the order, checks tracking, looks up her customer profile, searches the refund policy twice, confirms no ticket exists, opens one, documents the timeline, and reads the policy correctly; her account segment genuinely does not qualify for late-delivery compensation. Then it closes the ticket as resolved and replies “ Since your query is resolved, is there anything I may assist you with? ” Two things are wrong. The carrier exception is still open, so the required end state was on hold , pending resolution. And the customer never got a real answer to what she actually asked. An AI grader checking tool calls would see nine well-formed ones. The grader checking whether the agent wrote to the database would see that too. The database is what disagrees . That gap is what ThinkingBox measures. Across 507 stateful business workflows, each run 20 times against various LLM models, it grades agents on terminal backend state and side effects. This post covers what we found, what consistency costs, and how to run the benchmark yourself through OpenEnv . You can run this one yourself: the example above is adapted from a benchmark task sandbox_external_retail_group1.py:test_case_ST003_006 , and the executable check that fails is a single field: the ticket's status is solved where the required end state is hold. The full trace is in Appendix D.4, Case 3 of our paper . Contents A tool call is not an outcome One success is not reliability Can you depend on the model behind your agent? What consistency costs Failure signatures How it works Run it yourself Where this goes next Want to try it before reading the results? Skip to section Run it yourself . A tool call is not an outcome Final responses and valid tool calls are only proxies. An agent can sound correct while leaving the wrong value, changing the wrong record, or creating an extra side effect. Only the records it leaves behind settle the question. The gap is substantial. In a common-set ablation covering 121,680 valid trials across 12 LLM models, 79,853 attempts failed the executable checks. Of those failures, 67.24% still terminated cleanly, invoked a state-changing tool, and reported no final tool error. Executable checks nevertheless found wrong field values in 77.61% of them, unintended extra effects in 43.30%, and missing required effects in 25.36%. Those state-check findings overlap. A trajectory is a claim. Database state is the evidence. Repetition is the trust test. One success is not reliability An agent that processes a refund correctly once and mishandles it the next four times is not a working refund agent. So every task runs 20 independent times , each from an identical clean backend, and we report three different things: Table 1: The three numbers we report, and the question each one answers. Metric What it measures What it answers pass@1 Share of all attempts that succeeded How does it usually do? pass@20 Share of tasks solved at least once in 20 tries Can it ever do this? Breadth. Observed 20/20 Tasks that actually passed all 20 recorded attempts Can it always be correct? We use observed 20/20 in this blog post as the literal count of how many of the 507 tasks passed 20 out of 20. No estimator, no smoothing. Starting with the familiar view. The table below reports pass@1, the single-attempt score estimate, broken out by domain. This is the number most leaderboards publish, and on its own it reads like an ordinary capability ranking. Table 2: ThinkingBox-Bench pass@1 (%) by domain. Each model is evaluated on every task for 20 repeated trials. Bold marks the group leader; underline marks the runner-up. The standard errors for the single attempt score estimates are provided in Table 4 in our ThinkingBox paper . Model Retail (98) Auto insurance (100) Travel (104) Neobank (104) Consulting (101) Overall, task-weighted (507) Proprietary models Claude Opus 5.5 80.97 68.40 54.28 71.25 61.58 67.16 Claude Opus 5 80.71 65.80 49.95 70.62 66.19 66.50 GPT-5.4 76.33 62.65 68.12 65.34 54.60 65.36 GPT-5.6 Sol 67.65 65.30 60.34 59.09 57.52 61.91 Claude Sonnet 4.6 72.35 54.40 58.94 56.39 54.31 59.19 GPT-6 Astra 71.73 46.55 55.87 60.87 56.83 58.31 GPT-5.2 70.20 22.40 53.70 51.15 34.06 46.28 Claude Opus 4.6 68.62 8.30 21.11 35.67 27.82 32.09 o3-pro 37.70 2.95 17.31 24.28 14.60 19.31 Grok-4.3 43.93 2.60 15.14 1.78 9.55 14.38 Open-weight models Kimi-K3 82.24 50.80 61.83 41.35 51.63 57.37 Qwen3.8-27B 64.03 47.85 53.41 47.88 45.69 51.70 DeepSeek-V4-Pro 68.21 29.65 43.13 44.86 31.04 43.26 Kimi-K2.6 53.72 24.50 39.52 33.65 37.33 37.66 GLM-5.1 58.67 25.70 35.43 13.27 34.06 33.19 Qwen3.6-27B 43.11 29.00 46.39 27.84 18.37 32.94 Qwen3.5-9B 19.90 0.70 4.71 1.15 2.33 5.65 Mistral-Large-3 11.28 1.30 8.99 1.15 0.74 4.66 Claude Opus 5.5 leads overall at 67.16%, two-thirds of a point above Claude Opus 5. Kimi-K3 is the strongest open-weights model , within a point of GPT-6-Astra. Domain matters just as much : Claude Opus 4.6 scores 68.62% on retail but 8.30% on auto insurance. One good run tells you a model can do the work. It does not tell you whether it will do it again. So run every task 20 times and ask how much of that score survives. Figure 2: How much of each model's single-attempt score survives 20 repeats. Only three hold on to most of their pass@1 scores: GPT-6 Astra retains 78% of its single-attempt rate, and Claude Opus 5.5 and Claude Opus 5 each retain 71%. At the other end, GLM-5.1, Kimi-K2.6 and DeepSeek-V4-Pro each keep about 8%. The gap between what a model can do once and what it does every time is the whole story. Can you depend on the model behind your agent? Figure 3: Breadth and consistency pull apart. Twelve of the eighteen models are shown; six below 33% pass@1 are omitted for legibility. Kimi-K3 has the broadest coverage of any model we tested. It solves 93.89% of the benchmark at least once: 476 of 507 tasks. Only 31 tasks defeat it entirely, the lowest count in the field. On retail workflows it leads outright at 82.24% pass@1, ahead of every proprietary model. Kimi-K3 is also among the least consistent. Just 68 of 507 tasks, 13.41%, succeed in all 20 attempts. Claude Opus 5 inverts this. It solves fewer tasks at least once (79.09%; 106 defeat it entirely) but completes 47.53% of the benchmark on every single attempt. A newer model does not fix this. Claude Opus 5.5 scores higher than Claude Opus 5 on every-attempt average, 67.16% against 66.50%, and solves more tasks at least once. It passes exactly the same number of tasks on all 20 attempts: 241. Half a point of headline accuracy bought no additional dependability at all. Kimi-K3 solves 75 more tasks at least once than Opus 5. Opus 5 solves 173 more tasks consistently than Kimi-K3. If you are choosing a model for work that touches real records, pass@20 is the wrong column to look at. What consistency costs Capability comparisons usually stop at the score.

由 claude-code/sonnet 自動生成