mirror of
https://github.com/kuaifan/dootask.git
synced 2026-01-18 13:28:12 +00:00
3.0 KiB
3.0 KiB
Graphiti 长期记忆集成
本项目使用 Graphiti 作为「长期记忆层」,用于持久化用户偏好、工作流程、重要约束和关键事实。
统一 group_id: dootask-main
任务开始前(读取记忆)
在进行实质性工作(写代码、设计方案、做大改动)前,应先通过 Graphiti 查询已有记忆:
- 使用节点搜索(如
search_nodes)在group_id = "dootask-main"下查找与当前任务相关的 Preference / Procedure / Requirement - 使用事实搜索(如
search_facts)查找相关事实与实体关系 - 查询语句中可包含:任务类型(Bug 修复 / 重构 / 新功能等)、涉及模块(任务、项目、对话、WebSocket、报表等)以及关键字
dootask
发现与当前任务高度相关的偏好 / 流程 / 约束时,应优先遵守;如存在冲突,应在回答中说明并做合理选择。
什么时候写入 Graphiti
| 类型 | 说明 | 示例 |
|---|---|---|
| 偏好 (Preferences) | 用户表达持续性偏好时 | 语言、输出格式、技术选型 |
| 流程 (Procedures) | 形成稳定的开发/发布/调试流程时 | 可复用步骤 |
| 约束 (Requirements) | 项目长期有效的决策 | 不再支持某版本、架构约定 |
| 事实 (Facts) | 模块边界、服务调用关系、外部集成方式 | AgoraIO、Manticore Search |
写入建议
- 默认使用
source: "text",在episode_body中用简洁结构化自然语言描述背景、类型、范围、具体内容 - 需要结构化数据时可用
source: "json",保证episode_body是合法 JSON 字符串 - 所有写入默认使用
group_id: "dootask-main"
更新与更正
- 偏好 / 流程发生变化时,新增一条 episode 说明新约定,并标明这是对旧习惯的更新
- 用户要求「忘记」某些记忆时,可通过删除或更正相关 episode / 关系的方式处理
- 尽量通过新增 episode 记录「更正 / 废弃说明」,而不是直接改写历史事实
使用原则
- 尊重已存偏好:编码风格、回答结构、工具选择等应对齐已知偏好
- 遵循已有流程:若图谱中已有与当前任务匹配的 Procedure,应尽量按步骤执行
- 利用事实:理解系统行为、模块边界、历史决策时优先查已存 Facts
- 代码优先:如 Graphiti 与当前代码实际冲突,应以代码实际为准,并视情况新增 episode 更新事实
不要写入的内容
- 敏感信息(密钥、密码、隐私数据)
- 只与当前一次任务相关、未来不会复用的临时信息
- 体量巨大的原始数据(完整日志、长脚本全文),应只存摘要和关键结论
最佳实践
- 先查再做:在提出方案或改动架构前,优先查阅 Graphiti 中已有的设计、偏好和约束
- 能复用就沉淀:只要发现某个偏好 / 流程 / 约束未来会反复用到,就尽快写入 Graphiti
- 保持一致:确保 Graphiti 中的记忆与实际代码长期保持一致,避免「记忆漂移」