反思 Reflect
反思 Reflect 用于在已有记忆的基础上生成综合性的回答。
与检索主要用于"查找相关记忆"不同,反思会进一步理解、归纳和分析这些记忆,帮助 AI 输出更完整、更有判断力的结论。检索是"搜索引擎",帮助 AI 找到相关信息;反思则是"分析师",帮助 AI 基于已有信息进行分析和判断。
例如,当询问"上次会议讨论了什么?"时,可以使用检索查找会议相关记忆;当问到"这个客户最关心什么?"或"当前项目有哪些风险?"时,更适合使用反思进行综合分析。
工作原理
反思不是简单的查表检索,而是一个自主推理循环(Agentic Loop)。收到问题后,系统会自主决定何时检索、何时查找更多细节、何时扩展探索,经过多轮迭代后生成最终回答。这个过程中,系统的每一步决策都受到提示词、硬性规则和性格设置的影响,确保输出方向与业务需求一致。
什么时候使用反思
当用户需要的不只是原始信息,而是总结、判断或分析时,建议使用反思:
- 综合性结论而非罗列事实:总结用户偏好、项目进展、客户需求或团队共识。
- 判断和分析而非数据:判断当前项目状态、识别潜在风险、分析反复出现的问题。
- 基于多条记忆生成回答:从多次对话、文档和任务记录中提炼出整体结论。
检索与反思的区别
| 维度 | 检索 | 反思 |
|---|---|---|
| 主要作用 | 查找与当前问题相关的记忆内容。 | 基于记忆进行总结、分析和判断。 |
| 角色定位 | 搜索引擎 | 分析师 |
| 返回内容 | 相关记忆、事实片段和上下文。 | 综合生成的自然语言结论。 |
| 适用场景 | 给 Agent 补充上下文、查找具体事实。 | 总结、画像、风险判断、状态分析。 |
| 使用频率 | 更适合高频调用。 | 更适合在关键问题或综合分析场景中使用。 |
| 输出方式 | 通常作为 Agent 的上下文参考。 | 可以直接展示给用户,也可以作为 Agent 的高层判断依据。 |
如果只是需要找到某条事实或补充上下文,优先使用检索;如果需要基于多条记忆得出结论,则使用反思。
关联配置
为了让反思的回答更符合具体业务场景,Agent 记忆服务支持通过推理配置调整回答方向、规则和表达倾向。
| 配置项 | 作用 | 使用建议 |
|---|---|---|
| 提示词 | 定义记忆库的目标、身份和回答方向。 | 可按业务场景设置,例如工程助手、客服助手或研究助手。 |
| 硬性规则 | 设置反思必须遵守的硬性约束。 | 适用于合规、隐私、禁用主题或固定输出格式等场景。 |
| 性格 | 影响反思的推理性格 | 可根据 Agent 角色微调,相同事实搭配不同性格会产生不同结论。 |
| 心智模型 | 为常见问题预先生成综合摘要。 | 适用于高频总结、用户画像、项目状态等问题。 |
提示词
用于定义当前记忆库的角色定位和回答方向,可以帮助反思在生成回答时保持一致的身份和语气。
例如,设置提示词"你是一名关注架构决策的资深工程助手"后,反思在回答项目问题时会更关注技术架构、长期维护成本和工程决策,而不是只给出泛泛的总结。
性格
控制 AI 在反思时的推理方式。在面对同样的记忆内容时,不同的推理性格会影响回答的侧重点,产生不同的结论:
- 怀疑度 Skepticism(1-5):1 = 充分信任,接受所有信息。5 = 高度怀疑,质疑一切。数值越高,回答越倾向于谨慎判断,不轻易接受未经验证的信息。
- 字面度 Literalism(1-5):1 = 自由联想,善于言外之意。5 = 严格字面解读。数值越高,回答越严格基于已有事实,减少过度联想。
- 共情度 Empathy(1-5):1 = 纯理性分析,5 = 高度考虑情感背景和感受。数值越高,回答越关注用户情绪、感受和沟通语气。
例如,客服类 Agent 可以适当提高共情度;工程决策类 Agent 可以适当提高怀疑度和字面度,让分析更谨慎、结论更稳妥。
心智模型
为针对常见问题预先生成的综合记忆摘要,适合用于用户画像、项目状态、客户需求、团队经验总结等相对固定且经常查询的问题:
- 相同或相似的查询可命中缓存的心智模型,实现即时响应,得到一致回答。
- 写入新记忆后,相关心智模型自动刷新。
- 你可以手动创建心智模型来预设常见问题的答案。
对于经常被问到的问题,例如"这个用户的偏好是什么?""当前项目状态如何?""这个客户最关心什么?",系统可以提前整理出相对稳定的综合结论。
具体详见心智模型
使用建议
- 当用户需要总结、判断、画像、风险分析或多来源综合时,优先使用反思。
- 反思适合输出自然语言结论,可以直接展示给用户,也可以作为 Agent 的高层判断依据。
- 对于高频综合问题,可以使用心智模型提升回答速度和一致性。
- 如果只需要原始事实列表、上下文片段或具体记忆内容,优先使用检索。
请求示例
反思用户的技术偏好
1curl "$MEMORY_API_BASE_URL/reflect" \
2 -H "Authorization: Bearer $MEMORY_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "bank_id": "'"$MEMORY_BANK_ID"'",
6 "query": "请总结这个用户的前端技术偏好,并给出接下来生成代码时应遵循的建议。",
7 "budget": "mid",
8 "include_facts": true,
9 "tags": ["user:alice"],
10 "tags_match": "any_strict"
11 }'
返回示例
1{
2 "text": "用户偏好使用 TypeScript + React + Tailwind 构建前端应用,状态管理从 Redux 迁移到 Zustand。团队已引入 Storybook 做组件文档,部署在 Vercel 上。\n\n建议:生成前端代码时默认使用 TypeScript,组件采用 React 函数式写法,样式使用 Tailwind 工具类,状态管理优先使用 Zustand。",
3 "based_on": {
4 "memories": [
5 {"id": "f1a2b3c4", "text": "用户前端技术栈使用 TypeScript + React + Tailwind,状态管理使用 Zustand", "type": "experience"},
6 {"id": "g5h6i7j8", "text": "团队引入 Storybook 做组件文档,部署在 Vercel 上", "type": "experience"}
7 ],
8 "mental_models": [],
9 "directives": []
10 },
11 "usage": {
12 "input_tokens": 420,
13 "output_tokens": 180,
14 "total_tokens": 600
15 }
16}
反思返回的 text 是综合生成的自然语言结论,可以直接展示给用户或作为 Agent 的高层判断依据。开启 include_facts 后,based_on 字段会列出回答所依据的具体记忆,便于审计和追溯。
评价此篇文章
