项目简介
Cymbiont 作为 AI 助手的外部记忆系统,通过构建和管理一个自组织的知识图谱,让 AI 助手能够“记住”过去的对话、笔记和文档,并在需要时自动检索相关上下文。它旨在将人类的笔记、AI 对话和自动化记忆形成过程无缝地整合到一个流动的协作空间中,显著提升 AI 的长期记忆和推理能力。
主要功能点
- 持久化记忆: 维护跨 AI 助手会话的上下文知识图谱。
- 混合检索: 结合语义相似性(嵌入)、关键词匹配(BM25)和重排序,提供精准的上下文。
- 实体提取: 利用大型语言模型 (LLM) 自动从文本、JSON 或对话中识别实体和关系。
- 时间推理: 追踪事实的创建时间 ('created_at') 和事件的发生时间 ('valid_at')。
- 自动化文档同步: 定期监控指定目录下的 Markdown 文件,智能检测变更并同步到知识图谱。
- 双重检索模式: 提供两种互补的检索方式:语义搜索用于概念探索,BM25 关键词搜索用于获取带出处的精确文本。
- 自动化上下文注入和记忆形成: 通过与 AI 助手客户端的钩子系统,实现无感知上下文注入和记忆存储。
- MCP 工具集: 提供一系列标准化的 MCP 工具,允许 AI 助手进行记忆添加、删除、搜索和文档同步等操作。
安装步骤
- 安装 Neo4j 数据库: 按照仓库 README 中的说明,在您的系统上安装并启动 Neo4j 图数据库,并设置初始密码(例如 'demodemo')。
- 安装 uv (Python 包管理器): 打开终端,运行 'curl -LsSf https://astral.sh/uv/install.sh | sh'。
- 克隆 Cymbiont 仓库: 运行以下命令克隆仓库及其子模块:
git clone --recurse-submodules https://github.com/Brandtweary/cymbiont.git cd cymbiont - 构建 Cymbiont 服务器: 在 Cymbiont 根目录下,运行 'cargo build --release' 以编译 Rust 服务器。
- 配置知识图谱后端:
- 进入 'graphiti-cymbiont' 子目录:'cd graphiti-cymbiont'。
- 创建一个 '.env' 文件,并填入您的 Neo4j 连接信息和 OpenAI API 密钥:
NEO4J_URI=bolt://localhost:7687 NEO4J_USER=neo4j NEO4J_PASSWORD=demodemo # 替换为您设置的Neo4j密码 OPENAI_API_KEY=your-api-key-here # 替换为您的OpenAI API密钥 MODEL_NAME=gpt-4 # 用于实体/关系提取的主要LLM SMALL_MODEL_NAME=gpt-3.5-turbo # 用于去重/属性的较小LLM EMBEDDING_MODEL_NAME=text-embedding-3-small # 用于向量搜索的嵌入模型
- 安装后端依赖:
- 进入 'graphiti-cymbiont/server' 目录:'cd server'。
- 运行 'uv sync' 安装 Python 后端服务所需的依赖。
- 返回 Cymbiont 根目录:'cd ../..'。
- 配置语料库路径:
- 创建您希望存放 Markdown 文件的目录,例如 'mkdir -p ~/Documents/cymbiont-corpus'。
- 复制示例配置文件:'cp config.example.yaml config.yaml'。
- 编辑 'config.yaml' 文件,将 'corpus.path' 设置为您刚刚创建的语料库目录的绝对路径。
- (可选)安装 Claude Code 钩子:
- Cymbiont 提供了 Python 钩子脚本,用于与 Claude Code 客户端进行无缝集成,实现自动上下文注入和记忆形成。
- 请参照 Cymbiont 仓库 README 中“Install Claude Code Hooks”部分的详细说明,将这些钩子添加到您的 Claude Code 客户端配置中。
- 添加 Cymbiont 指令到 CLAUDE.md:
- 为了让 AI 助手更好地理解和使用 Cymbiont,您需要将预设的指令添加到 Claude Code 的 'CLAUDE.md' 文件中。
- 进入 Cymbiont 根目录,运行 'cat CLAUDE_INSTRUCTIONS_TEMPLATE.md >> ~/.claude/CLAUDE.md' (如果您将 Cymbiont 配置为用户范围)。
- 然后编辑 '~/.claude/CLAUDE.md' 文件,将其中关于语料库路径的占位符 ('/path/to/your/corpus/') 替换为您的实际路径。
服务器配置 (MCP 客户端使用)
MCP 客户端需要配置 Cymbiont MCP 服务器的启动命令及其参数。以下是一个供 MCP 客户端参考的配置示例(实际配置可能通过客户端的 UI 或配置文件完成,这里展示的是 JSON 结构):
{ "name": "cymbiont", "description": "Cymbiont 是一个为AI助手提供长期记忆和上下文管理的知识图谱服务器。它通过MCP协议与客户端通信,提供记忆存储、检索和文档同步等功能。", "command": "/full/path/to/cymbiont/target/release/cymbiont", "args": [], "config": { // Cymbiont 主要通过其自身的 config.yaml 文件管理,客户端通常不需要在此处传递额外配置。 // 例如,如果Cymbiont支持通过命令行参数设置日志级别,这里可以添加: // "log_level": "info" } }
配置项说明:
- 'name' (字符串): 服务器在 MCP 客户端中显示的名称,例如 'cymbiont'。
- 'description' (字符串): 对此 MCP 服务器的简短功能描述。
- 'command' (字符串): Cymbiont MCP 服务器可执行文件的绝对路径。例如,如果 Cymbiont 克隆到 '/home/user/cymbiont' 并在 'release' 模式下构建,则路径可能是 '/home/user/cymbiont/target/release/cymbiont'。
- 'args' (字符串数组): 启动 Cymbiont 服务器时需要传递的任何命令行参数。根据当前 Cymbiont 的设计,通常不需要额外的启动参数,所以这里通常留空 '[]'。
- 'config' (对象): 一个可选的 JSON 对象,用于向 MCP 服务器传递额外的运行时配置。Cymbiont 服务器主要依赖其仓库根目录下的 'config.yaml' 文件进行配置,因此通常情况下,MCP 客户端不需要在此处提供额外参数。
基本使用方法
- 启动 Claude Code 或其他兼容的 AI 助手客户端:确保您的 AI 助手已正确配置并连接到 Cymbiont MCP 服务器。
- 与 AI 助手对话:当您与 AI 助手交流、记录笔记或处理文档时,Cymbiont 会在后台自动完成以下工作:
- 上下文检索:根据您的消息和助手的回复,静默查询知识图谱,将相关实体和事实注入助手的上下文。
- 记忆形成:每隔一定数量的用户消息或会话结束时,分析对话内容,提取关键信息并自动添加到知识图谱。
- 利用文档同步:将您的 Markdown 笔记、代码文档等文件放入配置的语料库目录。Cymbiont 会定期自动同步这些文件,将其内容作为记忆的一部分。
- 手动调用 MCP 工具 (可选):如果需要,您可以直接通过 AI 助手明确调用 Cymbiont 提供的 MCP 工具,例如:
- 'add_memory(name="会议纪要", episode_body="我们决定将项目A的截止日期推迟一周...")':手动添加新的记忆。
- 'search_context(query="关于项目B的最新进展")':手动查询相关上下文。
- 'sync_documents()':手动触发文档同步。
Cymbiont 旨在无缝融入您的工作流,让您感觉 AI 助手拥有自然的长期记忆,无需频繁手动干预。
信息
分类
开发者工具