记忆评估
记忆评估不能只看模型有没有生成一句流畅的话。HaroCue 把「能否正确保存」「能否找到」「是否应该展示」「用户是否认为有用」「删除后是否泄漏」分开测量。
| 面向 | 要回答的问题 | 观察什么 | 当前证据 |
|---|---|---|---|
| 写入 | 提案是否引用真实范围? | 类型、来源、时间、作用域 | harocue-memory 抽取与生命周期测试 |
| 检索 | 合格 Claim 是否在预算内被找到? | 命中、排序、失效项排除 | retrieval.rs、indexed.rs 参考查询 |
| 展示 | Cue 是否应该出现和接受? | 焦点、版本、来源、接受前复核 | runtime completion 测试、Cue 事件日志 |
| 体验 | 建议是否真的减少重复解释? | exact、better、off、unknown |
CueSummary、配对看板 |
| 生命周期 | 纠正、遗忘、过期后是否还会回来? | 旧正文、缓存和快照是否失效 | clear_barrier、kernel、persistence 测试 |
先分清三个结果
Section titled “先分清三个结果”| 结果 | 表示什么 | 不表示什么 |
|---|---|---|
| 抽取通过 | 引用范围和结构契约成立 | Claim 的语义一定正确 |
Grounded |
来源片段仍然可读 | 模型推断已被用户确认 |
| Cue 被采纳 | 用户在当前输入处接受了建议 | 这条记忆永远适用 |
展示、采纳、丢弃、撤销是行为信号;exact / better / off 是用户明确给出的评价;未评分保持 unknown,不能当成正面结果。
每次评估要记录什么
Section titled “每次评估要记录什么”| 记录项 | 为什么需要 |
|---|---|
| 模型与提示版本 | 不同模型不能直接比较 |
| 来源数量和引用粒度 | 决定抽取范围与 Grounded 结果 |
| 候选数量和字节预算 | 影响命中、延迟和展示长度 |
| 时延与费用 | 判断质量提升是否值得成本 |
| 作用域、revision、epoch | 复现并发、清空和切换工作区场景 |
换了模型、提示词、引用粒度或候选数量后,新的结果只能与同条件的对照比较,不能把一次重试的最好值当成整体质量。
在仓库里运行什么
Section titled “在仓库里运行什么”核心记忆契约可以离线运行:
cargo test -p harocue-memory --offline| 位置 | 用途 |
|---|---|
eval/fixtures/v2-paired/ |
成对业务样本 |
eval/src/scorer.rs |
成对偏好、严重错误续接和重复解释字符数评分 |
frontend/src/product-api.ts |
CueSummary 展示、采纳、撤销和评价覆盖率 |
| 诊断页 | 捕捉、记忆、Cue 与问答的有限状态事件 |
解释失败结果
Section titled “解释失败结果”- 先看引用是否真实、作用域和时间是否正确。
- 再看资格门是否按预期排除了失效或不可读来源。
- 最后区分是排序、展示、模型语义还是用户评价出了问题。
没有结果不一定是检索失败;它可能说明当前没有 Current + Grounded 的记忆。
- 仓库测试证明的是列出的契约,不是所有平台、所有应用和所有真实模型的质量。
- 生产接线、外部索引删除传播、规模与尾延迟仍需按对应验收记录单独复核。
- 语义向量索引是可替换的候选适配器,不能绕过内核的作用域、时间、来源和遗忘门。
- 公开官网演示使用固定样例,不应被当作个人数据的评测结果。
评估方法的更完整背景见 crates/harocue-memory/README.md、docs/decisions/2026-09-07-memory-benchmark-hardening.md 与 docs/decisions/2026-09-07-memory-citation-grants.md。