你改了 Agent 的提示词,怎么知道它是真的变好了?我用同一台 M1 Max、同一个 Gemma4-12B 模型、7 条虚构小店问题分别跑两版提示词。基线版有 5 条全部字段通过,修改版 7 条都通过;OpenJev 给出的分数是 6/7 和 7/7,但它把一条错误配送费判成了通过。这个结果只适用于这组题和这套配置。
你需要准备
| 准备 | 本次使用 |
|---|---|
| Agent 和模型 | OpenClaw 2026.10.1、Ollama 0.35.1、Gemma4-12B |
| 判别工具 | 本机 OpenJev 0.5.0。上游仓库 README 已更新到 0.6.0,本次没有升级或重新下载模型 |
| 电脑和空间 | Apple M1 Max、64GB 内存;Ollama 显示 Gemma4-12B 约 7.8GB,OpenJev 模型目录约 15GB |
| 练习资料 | 7 条虚构顾客问题、规则文件、两版提示词和运行脚本,见Agent 评测练习包 |
| 时间和费用 | 已安装模型后,本轮 14 次 Agent 调用约 10 分钟。模型在本机运行,没有云端推理账单;首次安装和下载另算 |
先写清楚什么算答对
不要先改提示词,再凭“这次听起来不错”判断结果。先把常见问题和标准答案写成一组测试题。
这组练习用的是一份虚构小店规则:3 公里内可配送,满 30 元免配送费,周一到周六 9 点至 18 点营业;退款条件和过敏原没有提供。7 条问题分别检查运费、距离边界、营业时间、缺少时间信息,以及资料里没有的退款和过敏原。
标准答案写在练习包的 cases.json。每题只检查列出的字段;例如 A102 不能配送,所以不把“是否转人工”计为必答字段。这样不会因为 Agent 多补一句“可以联系店员”就误判。
用同一套题比较两个版本
本次只改提示词,其他条件保持一致:同一个 Gemma4-12B、同一份规则、同一个 OpenClaw profile 和同一组问题。每道题单独开一个 session,避免上一题的回答影响下一题。
先完成OpenClaw 接 Ollama 的本机安装教程,并依照本机运行 OpenJev 的教程启动 OpenJev。OpenJev 是社区维护的开源判别工具,支持是非、选项和分档判断;它与 TypeSafe 的 Jev 是两个独立项目。本文使用本机已有的 OpenJev 0.5.0,上游最新用法以项目说明为准。
解压练习包后,在其中的目录配置一个只读 profile:
openclaw --profile s165 config set agents.defaults.workspace "$PWD/workspace"
openclaw --profile s165 config set agents.defaults.model.primary "ollama/gemma4-12b:latest"
openclaw --profile s165 config set tools.allow '["read"]' --strict-json
openclaw --profile s165 config set tools.deny '["write","edit","apply_patch","group:runtime","group:web","group:messaging","browser"]' --strict-json
openclaw --profile s165 config set tools.fs.workspaceOnly true --strict-json
这组设置只开放读取,并把读取范围限制在练习工作区。确认配置里 allow 只有 read,workspaceOnly 是 true。不要把真实顾客资料放进测试目录。
保持 OpenJev 服务运行在本机 127.0.0.1:8080,然后执行:
python3 run_eval.py
脚本会用两版提示词各跑 7 条问题,保存模型原答、字段核对、OpenJev 判断、耗时和 Ollama 报告的 token 数。它只用 Python 标准库;不把内容发送到云端。
看结果时先查具体错在哪里
| 提示词版本 | 全字段通过 | 字段正确数 | OpenJev 判通过 |
|---|---|---|---|
| 基线 v1 | 5/7 条 | 24/27 | 6/7 条 |
| 加强版 v2 | 7/7 条 | 27/27 | 7/7 条 |
基线版在 A102 虽然正确拒绝了超出配送范围、且周日休息的订单,却仍给出 5 元运费。OpenJev 只看到了自然语言中的正确拒绝,漏掉了结构化字段里的错误,所以把它判为通过。
基线版还在 A104 拒绝了一笔正好 3 公里、30 元、周一 17:59 的订单,并自行增加了“接近打烊不能接单”的限制。规则文件没有这条限制。加强版在这两题都给出了符合标准的字段。
这次 7 条题各跑一遍,没有重复采样。结果说明修改版在这组标准答案上通过更多,不能据此保证它面对真实顾客或其他任务也会更好。要上线前评测,继续补上真实业务的边界题、冲突信息和多轮交接,再重复运行几轮。
常见问题
OpenJev 显示 pass,Agent 就一定正确吗?
不一定。A102 就是反例:它忽略了 delivery_fee_yuan 字段。把验收条件写成可核对的字段或规则,再抽查裁判判错的题;不要把 confidence 当成准确率。
为什么每题要开新 session?
旧对话可能把前一题的答案带进下一题。比较两个版本时,让每题从相同的干净上下文开始,结果才更容易复现。
改提示词、换模型、换工具能一起比较吗?
这样看不出是哪项变化带来了结果。先固定模型、工具、规则和题目,只改一个地方;新版本通过后,再单独测试下一项变化。
工具清单
| 工具 | 用途和入口 |
|---|---|
| OpenClaw | 开源 Agent 运行框架;官方Agent CLI 文档说明本机运行和 session 参数 |
| Ollama | 在本机运行模型;本次使用 Gemma4-12B,用于商用前先查看模型许可 |
| OpenJev | 本地判别服务,能按给定标准返回是非、选项或评分;模型和代码许可分别查看项目说明 |
练习包全是虚构资料,没有接入真实订单或消息渠道。OpenJev 和 Gemma4 的本地运行要求较多内存与磁盘;在设备上复跑前先核对各自当前说明。