Lore

触发条件与术语

告诉 Lore 一条记忆该在什么时候出现,以及哪些词应该找到它。

触发条件决定记忆何时出现,术语决定哪些词能找到它。把触发条件写成一个未来的情境,把术语写成人们会输入的词,召回就能通过两条路径匹配到这条记忆。两者各司其职,不要混用。

触发条件

触发条件描述的是应当唤起这条记忆的情境。请把它写成未来会遇到的情境,而不是内容摘要。Agent 会根据触发条件判断记忆是否与当前任务相关,所以它应当点明任务、涉及的区域或出现的症状。

使用这个句式:

When [doing a task], [touching an area], or [seeing a symptom] in [project or product].
触发条件判断原因
修改 checkout-api 中的退款或支付 webhook 时好一个情境,点明了涉及的区域
checkout-api 中退款 webhook 重试失败时好点明 Agent 会看到的症状,仍然是一个情境
重要的 webhook 信息弱没有说明何时适用
摘要:webhook 按 event.id 保证幂等弱描述的是内容,不是情境
修改 webhook、退款邮件或发票时弱三个情境用 OR 连接,应拆成三条记忆

请遵循三条规则:

  1. 一条记忆只对应一个情境。 如果描述触发条件时需要用到“或”,就把记忆拆成每个情境一个节点。
  2. 描述未来,而不是内容。 问自己:什么时候有人会需要这条记忆?
  3. 使用工作中的用语。 用团队实际使用的词来描述任务、区域或症状。

注意

触发条件检查会在新建记忆时提醒缺少触发条件;无论是新建还是修改触发条件,它都会提醒使用了 OR 逻辑。提醒不会阻止保存。检查只识别中文的 OR 标记(或、或者、以及),不会识别英文单词 "or",因此请自行检查英文触发条件。

Lore 会根据触发条件生成记忆的视图,因此清楚的情境也有助于语义召回。

术语

术语收录的是人们真正会输入、用来找到这条记忆的词:名称、别名、缩写、同一概念的中英文写法,以及错误名称。

应该添加示例
产品和项目名称,包括带连字符的写法checkout api、checkout-api
缩写RLS(行级安全)
中英文写法退款回调、refund webhook
人们会粘贴的错误名称和症状duplicate key、idempotency conflict
提示词中会出现的工具名和文件名stripe、CLAUDE.md

以下内容不要添加:

  • 泛泛的词,例如 code、test、fix。它们会匹配到太多记忆。
  • 整句或粘贴的日志。术语应当是简短的词组。
  • 没人会输入的词。只出现在内容里、没人会搜的词对召回没有帮助。
  • 不同形式的重复项。Lore 只去掉完全相同的重复项,所以 Stripe 和 stripe 可能会存为两个术语。选定一种写法即可。

术语如何参与匹配

术语会参与三种匹配:

匹配方式说明默认权重
精确匹配提示词中出现的术语即为精确匹配。0.30(recall.weights.w_exact)
术语语义匹配术语会被向量化,因此语义相近的提示词也能匹配。0.25(recall.weights.w_glossary_semantic)
全文匹配(词法)术语文本与其他文本一起按词参与全文检索。0.03(recall.weights.w_lexical)

召回如何工作说明了这些信号如何组合。

举个例子,假设提示词是:

为什么 stripe 退款 webhook 会插入两行?

stripe 和 refund webhook 是术语的精确匹配。这个问题的含义也接近触发条件。在这种情况下,记忆可以同时通过术语和视图被匹配到。两条独立的路径让它更容易被找到。

触发条件、术语与内容对比

触发条件术语内容
回答的问题这条记忆何时应当出现?哪些词应该找到它?什么是真的,Agent 应该怎么做?
写法一个未来的情境简短的词和别名事实、规则、决策或工作流
示例修改 checkout-api 中的退款或支付 webhook 时refund webhook、stripe退款 webhook 按 event.id 保证幂等。
召回通过以下方式使用视图和关键词搜索精确匹配、术语语义匹配和全文匹配视图和关键词搜索
常见错误把内容摘要当作触发条件添加泛泛的词把触发条件写进内容