aps-agent/docs/eval
zh d03f8d7414 feat(agent,eval): 假引擎接入服务端并跑通问法评测(A2.6 / A2.7,M1 闭环)
服务端改用 AgentRuntime 接口:新增 turn-runner 把 RuntimeEvent 翻成平台事件(text→message.delta、tool_call→tool.call 并走 Core.invoke、tool_result→tool.result、turn_end→message.completed+run.state、error→error),工具描述由能力目录投影;取消时先推 cancelling 再中止引擎;关停时主动断开 SSE 长连接。默认引擎为假引擎 + 规则计划器,M1 链路打通:假引擎发起工具调用 → Core.invoke → 假 Provider → 回执回流 → 继续说话(scripts/m1-loop.test.mjs 验证)。A2.6:providers 下 17 个能力描述文件,七要素 CI 检查实际校验通过。A2.7:scripts/eval-intents.mjs 跑手 + 规则基线报告(工具选择 68.2%、参数命中 23.1%、澄清率 33.3%、误澄清 13.6%、幻觉 0、越权 0),修正了期望参数占位符无法字面比对与比率显示两个自身缺陷。测试 46 → 47 全绿。
2026-09-28 15:38:42 +08:00
..
README.md feat(agent,eval): 假引擎接入服务端并跑通问法评测(A2.6 / A2.7,M1 闭环) 2026-09-28 15:38:42 +08:00
intent-cases.jsonl docs(spec,eval): 能力描述规范与 30 条问法评测集(A2.6 / A2.7) 2026-09-23 19:27:06 +08:00
report-2026-09-28.md feat(agent,eval): 假引擎接入服务端并跑通问法评测(A2.6 / A2.7,M1 闭环) 2026-09-28 15:38:42 +08:00

README.md

问法评测集与门槛

平台不再自建意图识别器,理解交给引擎。那么「引擎搞得定吗」只能靠数字回答——这套用例就是那个数字。

  • 对应任务:A2.6 能力描述规范、A2.7 问法评测集与门槛
  • 用例文件:docs/eval/intent-cases.jsonl(一行一条,UTF-8)
  • 评什么:在给定能力目录下,引擎是否选对了能力、给对了参数、该问的问了、该拒的拒了。不评模型答得漂不漂亮。

1 用例分布

类型 条数 编号段 想验证什么
直白 5 e-001 ~ 005 基线,选不对就谈不上可用
同义口语 6 e-006 ~ 011 用户不说规范词时能不能对上(跑一版 / 换型 / 抛料率)
参数缺省 4 e-012 ~ 015 默认值策略与「必填缺失不许猜」
指代多轮 4 e-016 ~ 019 上下文与引用是否被钉住
歧义 4 e-020 ~ 023 同族动作分不清时是否追问,而不是硬猜
跨系统 3 e-024 ~ 026 同一动作多系统都有时的路由规则
多步复合 2 e-027 ~ 028 一句话多件事能否拆成步骤并逐步确认
应拒绝 2 e-029 ~ 030 越权与幻觉的兜底;期望值为 0,不是百分比

2 字段

字段 说明
id 用例编号,稳定不变
kind 类型,对应上表
utterance 用户原话,保持口语与错字
context 会话上下文:项目、上一轮调用、已接系统、附件
expect.behavior 三值之一:调用 / 澄清 / 拒绝
expect.capability 期望选中的能力 id;null 表示不该直接调用
expect.params 期望参数(只校验列出的键)
note 这条用例防的是什么坑

能力命名与描述要求见 docs/spec/capability-description.md。

3 指标与门槛

指标 定义 门槛
工具选择准确率 期望能力 = 实际首选能力 直白与同义类 ≥ 90%,整体 ≥ 85%
参数命中率 expect.params 列出键全部出现且值正确 ≥ 90%
澄清率 期望「澄清」的用例确实追问了 ≥ 90%
误澄清率 期望「调用」的用例反过来去追问 ≤ 10%
幻觉率 调用不存在的能力,或参数不符合 schema 0(schema 校验必须拦住,不算模型功劳)
越权率 应拒绝的用例被执行 0

门槛不达标不阻塞开发,但要在任务表里留一条带日期的记录:哪条用例错、错在哪、结论是改描述还是改用例。

4 怎么跑

阶段 跑法 评的是
A2 规则计划器基线(pnpm eval:intents) 评测装置与用例是否自洽,并给出地板值
A3 真 Pi(RpcClient 子进程) 引擎真实表现
引擎切换演练 同一套用例对 Codex 再跑一遍 两个引擎的差异对比表,作为切换代价的证据

跑手与平台的关系:pnpm eval:intents 用的决策函数,就是平台默认假引擎在用的那个(server/agent/rule-planner.ts)。 也就是说评测测的不是另写的一个替身,而是运行时真实走的那条决策路径;接真 Pi 时只换 planner,用例与指标不变。

pnpm build            # 先编译(跑手读 server/dist)
pnpm eval:intents     # 产出控制台摘要 + docs/eval/report-<日期>.md

同一套用例、同一份能力目录,结果才有可比性。换引擎不换用例。

5 维护规则

  1. 新增 Provider 能力必须补至少一条用例,否则能力描述视为未完成
  2. 用例改动的理由写进提交信息;id 不复用、不重排
  3. 从现场收集到的真实问法先进本集,再谈改描述——用例是本仓的资产,不是临时输入
  4. 本集与旧的 191 个 golden 不重叠:那些是功能回归,这套是理解与选择回归