记忆评估
记忆评估不能只看模型有没有生成一句流畅的话。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。