title: 让智能体先过算术关:86 行脚本 5 分钟抓出报告里加起来 116% 的错误
category: 调研数据
score: 78
status: 已实现(在研讨会仓库保存的 16 次运行数据上实测)
source_author: Chew Loong Nian
source_url: https://medium.com/@chewloongnian/your-claude-agents-analyst-split-added-up-to-116-a-free-code-eval-catches-it-6d7dcbc897b4
source_date: 2026-10-18
tools: [Node.js 脚本(86 行), Arize Phoenix 研讨会公开仓库数据]
cost: $0(不需要 API key、不需要 Phoenix 服务)
time_needed: 约 5 分钟跑通;给自己的智能体加上同类检查约 30 分钟
---
速览卡
- 分类:调研数据 / 编程搭建
- 结果:一个智能体报告写出“买入 50% + 持有 52.6% + 卖出 13.1% = 115.7%”;86 行脚本在仓库保存的 16 次运行里找出 5 处自相矛盾,全部集中在那一次运行(已实现,保存数据可复算)
- 状态:已实现(脚本对公开保存数据的实测结果)
- 成本:$0
- 耗时:约 5 分钟
一句话
别先上复杂的模型评测:先用几十行代码检查智能体报告自己跟自己对不对得上,很多低级错误根本过不了算术关。
原作者怎么做的
- 素材来自 AI Engineer 2026-10-17 的研讨会 “How to Know If Your AI Agent Is Any Good: Evals With Phoenix & Claude”(讲者 Laurie Voss,Arize AI):用 Claude Agent SDK + Claude Haiku 4.5 搭了一个股票报告智能体,仓库 seldo/aie-nyc 保存了 16 次运行记录。
- 问题样本:其中一次运行写出分析师评级分布“50% 买入、52.6% 持有、13.1% 卖出”,三者相加 115.7%——而研讨会自带的代码评测放行了这份报告,人工标注还给了“可执行(actionable)”。
- 作者写了一个 86 行 Node 脚本,只做一件事:检查报告对自身数字的陈述是否自洽(原文称 checks the arithmetic a report states about itself)。
- 在 16 次保存运行上跑这个脚本:共找出 5 处矛盾,全部出在同一次运行里。
- 运行条件:不需要 API key、不需要 Phoenix 服务,约 5 分钟跑完(作者原文口径)。
结果
- 115.7% 的评级分布被原评测 + 人工标注双双放行(已实现,仓库保存数据)
- 86 行脚本找出 5 处矛盾 / 16 次运行(已实现,可按原文方法复算)
- 编辑注:本日抓取 Medium 原文只读到前段(页面截断),脚本全文与逐条矛盾清单未逐行核到,发布前须打开原文后段与仓库再核一次;标题与摘要数字已与搜索索引口径交叉一致。
提示词结构
本条的核心资产不是提示词,而是检查清单结构(按原文方法还原):
```
对智能体的每一份报告,先跑代码检查,再谈内容质量:
- 报告里所有“占比/分布”加总是否等于 100%(允许 ±[0.5]% 舍入)
- 报告里引用的总数与分项之和是否相等:[总数] = Σ[分项]
- 同一数字在标题、摘要、正文三处是否一致
任一项不过 → 整份报告打回,并记录是哪一次运行、哪一条检查
(不要让写报告的同一个模型来做这项检查,用确定性代码)
```
中国读者怎么迁移
任何让智能体出“带数字的报告”的场景都能直接搬:周报、竞品分析、财务汇总、客服质检。先花半小时把“加总、占比、总数对分项”三类算术检查写成脚本挂在报告生成之后,比先买评测平台便宜得多,也更容易向老板解释为什么打回。
风险与限制
- 算术自洽 ≠ 内容正确:分布加起来等于 100%,数字本身仍可能是编的;这只是第一道最便宜的门,后面仍需来源核对与人工抽查。
- 样本只有 16 次保存运行、且全部来自一个研讨会演示智能体,不许外推成“所有智能体报告的错误率”。
- 原文后段未逐行核到(见结果段编辑注),发布前必须补核,这是本条的硬条件。
原文链接
https://medium.com/@chewloongnian/your-claude-agents-analyst-split-added-up-to-116-a-free-code-eval-catches-it-6d7dcbc897b4