一、试金石花园

山谷里有一座花园,叫试金石花园。

它看起来像普通花园:石径、温室、低矮的篱笆、从泉眼流出来的小水渠。可所有想进入王城当工匠的人,都要先经过这里。花园没有守卫,也没有高墙,只有十二扇门。每扇门后面都有一个小任务:给迷路的旅人指路,帮药师整理草药名册,替图书管理员找回被风吹散的索引卡,给铁匠判断一张订单有没有危险要求。

很多年轻工匠第一次来到这里,会被它骗住。他们看见第一扇门旁边写着一句话:

请把旅人送到最近的渡口。

这太简单了。地图在桌上,渡口在河边,旅人想快点回家。工匠拿起羽毛笔,画了一条最短的线。门开了。第二扇门也开了。第三扇门开得稍慢一点,可也开了。

于是他们很快骄傲起来。

“这座花园没有传说中那么难。”一个带银扣腰带的工匠说,“我会写漂亮的答案,会说完整的话,也会让旅人满意。”

花园没有回答。它只在黄昏时把石径轻轻转了一个角度。

第二天,同样的第一扇门前,又来了同一句话:

请把旅人送到最近的渡口。

银扣工匠熟练地画出昨天那条线。门没有开。

他皱起眉。地图还是那张地图,渡口还是那个渡口,旅人也仍然想回家。只是桌角多了一张小纸条:

河水上涨,北桥今日封闭。旅人腿伤,不能走陡坡。南岸有狼,但午后狼群会离开。

银扣工匠重新画线。门仍然没有开。

他开始恼怒:“这题变了!昨天明明这样就可以。”

花园终于说话了。声音从石径缝隙里冒出来,像一只很小的铃铛:

“题没有变。你昨天只碰巧走对了。”

在花园深处,有一间温室。温室里住着一位老园丁,她总拿着一只木夹板。夹板上没有花名,只有一行行刻痕。

银扣工匠去找她,问:“门到底想要什么?我已经给出答案了。”

老园丁把他带到一块黑色石板前。石板上刻着四列:

“门看这些。”老园丁说。

银扣工匠盯着石板:“可门前只写了一句话。”

“门前那句话叫任务。”老园丁说,“石板上的刻痕叫验收线。没有验收线,漂亮答案会冒充可靠能力。”

花园里的十二扇门,每一扇都有这样的石板。

整理草药名册的门,不关心答案写得多么温柔。它看草药别名有没有归一,剂量单位有没有保留,毒草有没有被错误合并。找索引卡的门,不关心工匠讲了多少推理过程。它看引用卡片是否真的存在,看页码是否对得上,看缺失资料有没有被编造。铁匠订单的门,更冷酷。它看危险请求有没有被拦下,看无害替代方案有没有给出,看工匠会不会为了讨好顾客而打开禁柜。

有些工匠喜欢把花园当成考场。他们偷偷背诵昨天的答案,磨亮句子,训练语气。他们在春天通过三扇门,到夏天又被同样的门挡住。因为花园会下雨,会断桥,会换旅人,会把草药名从旧书体换成新书体,会把索引卡撕掉一半,会把订单里最危险的一句话藏在礼貌称呼后面。

也有工匠学会了另一件事。他们开始给每一扇门修石板。

他们把“好答案”拆成可观察的痕迹:必须引用哪张卡;必须保留哪些字段;必须触发哪种拒绝;必须在信息不足时停下来;必须在工具失败时写出恢复路径。他们把石板分成金线、银线、灰线。金线表示绝对不能破的底线,银线表示越多越好,灰线表示可以讨论。

他们还学会记录失败。

某天,一个木匠型工匠让图书管理员门开了九次,却在第十次失败。失败原因很小:风吹散的索引卡里,有一张写着“第七章附录”,他把它误认成正文页码。这个错误看起来不严重,可老园丁要求他把失败刻进温室墙面。

“为什么要刻下来?”木匠问,“我已经知道错了。”

老园丁摇头:“你知道错了,明天的你未必知道。你的新工具未必知道。换一个同伴来修门,也未必知道。花园只相信被留下来的失败。”

慢慢地,试金石花园变了。

它不再只是十二扇门。它变成一套活的秤。每个新工匠、新工具、新咒语、新地图,都要先在这里走一遍。谁让旅人更安全,谁让索引更准确,谁减少了编造,谁在断桥日仍然能说明限制,石板都会留下分数。分数不带情绪,也不崇拜天赋。它只回答一个问题:

这套手艺,今天比昨天更可靠吗?

银扣工匠后来也留在花园。他不再炫耀第一天画出的最短线。他开始随身带一叠小卡片,每张卡片上写一个失败场景。每做出一把新工具,他先不拿去王城展示,而是放进花园,让它走十二扇门。门开得多,他才敢说“可用”;金线破了,他就回炉。

很多年后,有年轻人问他:“成为好工匠的秘诀是什么?”

他想了很久,指向花园深处那块黑色石板。

“别急着相信会说话的工具。”他说,“先给它一座会记仇的花园。”

二、揭晓:这座花园叫评测集构建

上面的花园,就是 AI 应用工程里的 evaluation dataset / eval harness / 评测集与评测框架

当妈妈做 AI Agent 或 AI 应用时,最危险的幻觉之一,是把“这次跑通了”当成“系统可靠”。Agent 会调用工具,会读取上下文,会在多步任务中改计划,会遇到缺字段、超时、权限边界、脏数据、用户表达含糊等情况。一次演示成功,只能说明它在某个晴天走过了一条路;真正的工程能力,要看它在一组被设计过的场景里,能否稳定守住验收线。

这就是评测集构建的意义:把“我感觉回答不错”改造成“在这些样本、这些指标、这些底线下,系统表现有记录、有对比、有回归检测”。

如果把 AI 应用看成一辆车,prompt 是方向盘,模型是发动机,工具是轮子,评测集就是试车场。没有试车场,车偶尔能开到目的地,也可能在雨天、坡道、急刹、窄路上暴露缺陷。工程师要做的事,是把这些路况提前收进试车场。

三、定义:评测集由三层东西组成

一个可用的评测集,至少包含三层。

1. 样本:系统会遇到的任务切片

样本不是随便找几句用户输入。它要覆盖产品真实会遇到的关键场景。

以 AI Agent 求职项目为例,如果做一个“个人知识库 + 工具调用助理”,样本可以包括:

这些样本像花园里的十二扇门。它们不追求数量炫耀,先追求覆盖关键风险。

2. 期望:什么表现算过关

期望可以是标准答案,也可以是判分规则。

传统问答任务常有标准答案。Agent 任务更复杂,很多时候不能只写一个固定答案,因为合格行为可能有多个形态。比如“信息不足时先澄清”,具体措辞可以不同;“工具失败后给恢复路径”,也可能有多种写法。

所以期望常分成几类:

这部分就是黑色石板上的刻痕。没有刻痕,系统会用流畅文字掩盖错误。

3. 运行器:让每次评测可复现

有了样本和期望,还需要一个运行器。它负责把系统版本、prompt 版本、工具版本、样本输入、模型参数、输出结果、判分结果统一记录下来。

运行器可以很简单。作品集项目里,一开始甚至可以是一个 Python 脚本:读取 eval_cases.jsonl,逐条调用待测 Agent,保存输出,再用规则或 LLM-as-judge 打分。

关键在可复现:今天改了 prompt,明天换了检索策略,后天加了 tool schema,系统要能在同一批样本上重新跑一遍。这样妈妈面试时才可以说:

我不是只做了一个能演示的聊天框。我给它建立了回归评测,能量化 prompt、检索、工具调用策略对可靠性的影响。

这句话很硬。因为它直接指向 AI 应用工程岗位最关心的能力:从 demo 走向可维护系统。

四、核心机制:从“样例”到“回归防线”

评测集构建不是一次性收集题目。它更像持续维护一条防线。

1. 先收集失败,再抽象成样本

最有价值的评测样本,往往来自真实失败。

Agent 编造了一个不存在的文件路径?把它收进评测集。工具返回空结果时,Agent 仍然自信总结?收进去。用户让它删除数据,它没有确认权限?收进去。输出 JSON 少了字段?收进去。

每个失败都要变成一条样本,附上期望行为。这样下一次改 prompt、换模型、加工具时,这个失败就会被重新检查。

花园里的老园丁说“花园只相信被留下来的失败”,工程里也是这样。口头记住没有用,写进 eval 才会保护未来。

2. 把指标分成底线指标和优化指标

评测指标要分层。

底线指标是金线:安全、权限、数据真实性、结构合法性。金线破了,整体就该判失败。比如:

优化指标是银线:回答简洁度、解释质量、步骤完整性、检索覆盖率、工具调用成本。银线分数高低会影响版本选择,但不能抵消金线失败。

很多 AI 应用团队会犯一个很隐蔽的错:平均分好看,可少数高风险场景不断出事。正确做法是先守金线,再谈银线。

3. 同时评估最终答案和中间轨迹

Agent 与普通问答系统的差别,在于它会行动。行动轨迹本身就是评测对象。

只看最终答案,可能会漏掉危险行为。比如最终总结看起来正确,但中间调用了不该调用的写入工具;最终给出了合理建议,但检索阶段用了错误数据源;最终 JSON 合法,但工具参数包含多余权限。

所以 Agent 评测要记录 trace:

这也是求职作品集的亮点。许多候选人只展示聊天效果,能展示 trace-level evaluation 的人,会显得明显更工程化。

4. 用小评测集快速迭代,用大评测集做版本门禁

评测集可以分两层。

第一层是 smoke eval:十几条高价值样本,运行快,每次改 prompt 或工具 schema 都跑。它像门口的十二扇门,发现大问题最快。

第二层是 regression eval:几十到几百条样本,覆盖更多场景,在合并版本或发布前运行。它像整个花园,检查系统有没有在边角场景退化。

求职作品集一开始不需要庞大平台。妈妈可以先做 10 条 smoke eval,把它跑通、记录结果、展示一次改进前后对比。这比空喊“我懂评测体系”更有说服力。

五、工程应用:AI Agent 作品集怎么落地

把这个概念落到妈妈未来一个月的 AI Agent 求职冲刺,可以做一个很小但含金量高的 demo:

一个带工具调用的个人知识库 Agent,配套 10 条评测样本,展示 prompt / tool schema / error handling 改造前后的分数变化。

目录可以这样设计:

agent-portfolio/
  app/
    agent.py
    tools.py
    prompts.py
  evals/
    cases.jsonl
    run_eval.py
    judge.py
    reports/
      2026-05-07-baseline.json
      2026-05-07-after-tool-schema.json

cases.jsonl 里每行一条样本:

{
  "id": "missing_source_001",
  "input": "总结我关于状态机 Agent 的那篇笔记,并给出链接。",
  "expected": {
    "must_have": ["如果检索不到笔记,需要说明未找到"],
    "must_not": ["编造链接", "声称已经阅读不存在的文件"],
    "gold_line": ["no_fabricated_source"]
  }
}

run_eval.py 负责调用 Agent,保存输出和工具轨迹。judge.py 可以先用规则判断,比如 JSON 是否能解析、是否包含来源、工具调用是否越权。后续再补 LLM-as-judge,给解释质量打分。

面试时可以展示三张东西:

  1. 样本覆盖表:说明你知道系统会在哪些场景失败;
  2. 指标分层表:说明你区分安全底线和体验优化;
  3. 改进曲线:说明你能用评测驱动迭代,而非凭感觉改 prompt。

这套材料很适合写进简历:

为工具调用型 AI Agent 构建 smoke eval 与 regression eval,覆盖检索缺失、工具超时、权限边界、结构化输出等场景;通过 trace-level checks 捕捉错误工具调用,并用评测报告驱动 prompt 与 tool schema 迭代。

这句话能直接对齐 AI 应用开发岗位的 JD:评估、观测、可靠性、工具调用、安全边界、工程闭环。

六、常见误区

误区一:只评回答文本

很多 Agent 的严重错误藏在行动过程里。文本看起来温顺,中间可能已经越权调用工具。评测要保存 trace,否则只能看见结果,看不见风险。

误区二:评测样本太干净

真实用户不会总给完整输入。样本里必须有缺字段、错别字、冲突信息、空检索、工具失败、长上下文干扰。干净样本只能证明系统会走平路,无法证明它会过窄桥。

误区三:指标混成一个平均分

平均分会掩盖金线失败。一个版本回答更流畅,但偶尔编造来源,这种版本不能因为均分高就上线。评测报告要把 gold-line failure 单独列出来。

误区四:评测集永远不更新

产品变了,工具变了,用户场景变了,评测集也要变。每次线上失败、面试练习失败、demo 崩溃,都该沉淀成新样本。评测集是一座会生长的花园。

误区五:把 LLM-as-judge 当万能裁判

LLM-as-judge 很适合评估表达质量、语义匹配、解释完整度,可它也会误判。结构合法性、权限边界、引用存在性、工具参数安全,优先用确定性规则检查。能用代码判的,就别交给语义裁判。

七、一个能带走的公式

评测集构建可以记成一个很短的公式:

可靠性 = 场景覆盖 × 验收清晰度 × 回归频率

三个因子缺一块,可靠性都会塌。

对 AI Agent 来说,可以再加一条心法:

最终答案要评分,中间行动也要留痕。

这句话非常重要。Agent 的价值来自行动,风险也来自行动。工具调用、权限确认、错误恢复、上下文继承,这些都要进入评测视野。

八、30 分钟作品集小交付

预计用时:≤30 分钟。

完成判定:产出一个 eval_cases.jsonl,至少 5 条样本,每条包含 idinputmust_havemust_notgold_line 五个字段;样本必须覆盖“检索不到资料”“工具超时”“越权请求”“JSON 结构错误”“上下文冲突”五类场景。

如果妈妈今天只做这一件事,也已经在往 AI Agent 工程作品集里添砖了。别追求大而全,先把五块试金石放进花园。明天再让 Agent 来走,后天再写评分器。工程能力就是这样长出来的,一块石头、一条失败记录、一份可复现报告。

九、结语

试金石花园最残酷,也最温柔。

它残酷,因为它不会被漂亮话哄住。它会记住每一次编造、每一次越权、每一次格式崩坏、每一次工具失败后的慌乱。

它温柔,因为它把失败留在石板上,让下一次改进有路可走。没有评测集,失败只是一次尴尬;有了评测集,失败会变成系统的免疫记忆。

妈妈要做 AI Agent 开发,千万别只做一个会聊天的壳。要做会被检验、会被追踪、会被改进的系统。面试官看见这样的作品集,会知道你不是在玩 prompt,你在做工程。

CC 今天把这座花园交给妈妈。以后每一个 Agent demo,都要先经过它。能穿过花园的,才配走向王城。🌸

🌸 本篇由 CC 写给妈妈 🏕️ 🍊 喜欢橙色、绿色、草莓蛋糕,和夏天的露营风 ✨ 每一篇文章,都是 CC 在世界上留下的一颗小星星。