跳转到内容

添加记忆

添加记忆有两条入口:自动抽取负责把获准的桌面线索整理成候选,手动记录负责把你明确写下的内容直接保存为用户记忆。两条路径最后都经过同一个内核的证据、作用域、时间和原子提交检查。

入口 你提供什么 记忆如何产生 适合什么时候用
自动抽取 获准的窗口文字、OCR 或其它观察 模型提出带引用的 Producer Claim 正常工作时,希望留下可复用线索
手动记录 你在记忆页输入的完整文字 原文 + User Claim 一起保存 自动采样没有看到,或你想明确确认

原则 先有依据,再有记忆。没有可核对的来源时,HaroCue 不会用相似文字补出一条看似合理的内容。

步骤 内核做什么 结果
1. 捕捉 读取获准的前台文字;必要时在本机补充单帧 OCR EvidenceInput
2. 准备 prepare_extraction 创建带作用域、版本和有效期的短期任务 受限 source grants
3. 提取 模型返回 Claim 文本、类型、有效时间和 range_id JSON 提案
4. 编译 compile_extraction 重新解析精确 UTF-8 字节区间 通过或拒绝提案
5. 提交 内核检查作用域、时间、保留期、revision 和 scope_epoch 原子写入 Producer Claim
  • 一次抽取最多带 32 个来源块。
  • 来源正文总量受 64 KiB 限制。
  • 每个 source grant 最多暴露 1,024 字节,并带有宿主发放的范围句柄。
  • 模型不能发明来源 ID、作用域、操作或引用原文。

这些限制让提案只能指向当前任务实际授权的文字;提案失败时,整批不会部分写入。

桌面运行时通过 extract_facts_scoped 调度这条路径。旧 facts 链路仍作为迁移兼容面存在,但新内核路径和产品记忆视图不会把没有可核验来源的旧摘要自动当成 Grounded Claim。

对应代码:crates/harocue-runtime/src/orchestrator.rscrates/harocue-memory/src/extraction.rscrates/harocue-memory/src/mutation.rscrates/harocue-memory/src/model.rs

  1. 在「记忆」页选择「记住一件事」。
  2. 输入内容,并选择事实、偏好、决定或承诺。
  3. 产品适配器在同一事务中写入一个 UserInput Evidence 和一个 User Claim。
  4. Claim 引用覆盖完整 UTF-8 文本,之后可以从节点展开原文。
规则 说明
全局偏好 全局作用域只接受 Preference,并要求用户明确确认
有效时间 未来日期和有效期会进入内核校验
空内容 空文本、无效有效期不会提交
作用域 仍受当前工作区和 scope_epoch 约束

手动记录可以补充自动采样没有看到的背景,但不会绕过资格和生命周期规则。

  • 尚未同意记录、采样被暂停、命中敏感应用或前台窗口不再一致。
  • 来源已过期、已遗忘,或片段被明确禁止重新抽取。
  • 抽取任务看到的 revision 或 epoch 已经过时。
  • 模型返回无效 JSON、重复提案、越界引用或不完整的时间区间。

没有新增不是错误的替代答案。你可以在诊断页查看失败原因,也可以稍后重新选择来源。