搜索记忆
搜索是「先资格、后排序、最后按预算装箱」的只读操作。查询本身不会记录曝光、改变记忆真值或调用模型。
一次查询如何完成
Section titled “一次查询如何完成”| 步骤 | 输入或动作 | 输出 |
|---|---|---|
1. 定义范围 |
当前工作区、 scope_epoch、known_at、valid_at |
明确的 Query |
2. 资格筛选 |
状态、来源支持、时间和作用域 |
可读取的 Claim 候选 |
3. 生成候选 |
词法、实体和可选语义索引 |
带分数的候选 |
4. 排列与装箱 |
相关性排序、 max_items、max_bytes |
有界 MemoryPack |
5. 展示前复核 |
revision、epoch、来源和大小 |
可交给 Cue、问答或回顾的快照 |
没有明确作用域时,查询不会扩大到其它工作区。候选索引只能加速查找,不能绕过第 2 步的资格门。
| 信号 | 做什么 | 适合回答 |
|---|---|---|
作用域 |
限制在当前工作区或明确授权的全局偏好 |
避免不同项目互相混入 |
状态与来源 |
排除被纠正、冲突、失效、遗忘或失去依据的 Claim |
当前能否可靠使用 |
词法 |
用 BM25 风格统计和中文相邻双字词匹配原词 |
名称、编号和事实查找 |
实体 |
使用真实的人物、项目和来源连接增强候选 |
关于某个人或项目的问题 |
语义 |
接收作用域和版本一致的可选语义候选 |
概念相近但用词不同的问题 |
时间 |
根据 known_at、valid_at 和 Transitions 判断状态 |
「什么时候」「现在是否仍然」 |
多个通道合并时,每个通道只贡献一次确定性排名。Grounded 只表示引用片段仍可读取,不表示模型推断已经被语义证明。
Cue、问答和检查页
Section titled “Cue、问答和检查页”| 查询模式 | 会返回什么 | 典型入口 |
|---|---|---|
Cue |
Current + Grounded 的当前记忆 |
停顿建议、原位续写 |
Inspect |
用于核对的完整状态,包括部分支持或历史项 |
记忆列表、来源和图谱 |
恢复 |
用户确认的决定和承诺,再加近期有依据的事实 |
query_resume |
偏好 |
用户明确确认的偏好 |
query_preferences |
query_resume 不用问题文本的相似度假装待办事项;query_preferences 也不会自动读取其它工作区。
max_items限制返回条目数。max_bytes计算序列化items数组的 UTF-8 字节。- 放不下的完整条目会跳过,不会截断一句 Claim。
- 记忆包是某个 revision 上的快照;删除、纠正或切换工作区后必须重新查询。
桌面 Cue 会把结果转换为有界的 TabFuel。显示前和按 Tab 接受前,ProductMemoryService::validate_pack 会重新比较作用域、revision、epoch、有效性、来源和序列化大小。输入、焦点、插入点或工作区变化时,旧提示会被清除。
明确的 / 问答可以继续读取当前输入和按需工具结果。它与自动 Cue 共用同一记忆资格规则,但问题本身是用户主动触发。
| 关注点 | 代码证据 |
|---|---|
Query 资格、时间和预算 |
crates/harocue-memory/src/retrieval.rs |
版本绑定的词法索引 |
crates/harocue-memory/src/indexed.rs |
语义向量适配约束 |
crates/harocue-memory/src/semantic.rs |
工作区、恢复和偏好查询 |
crates/harocue-runtime/src/product_memory.rs |
Cue 燃料、焦点绑定和接受前复核 |
crates/harocue-runtime/src/completion_engine.rs |