项目简介

Cymbiont 作为 AI 助手的外部记忆系统,通过构建和管理一个自组织的知识图谱,让 AI 助手能够“记住”过去的对话、笔记和文档,并在需要时自动检索相关上下文。它旨在将人类的笔记、AI 对话和自动化记忆形成过程无缝地整合到一个流动的协作空间中,显著提升 AI 的长期记忆和推理能力。

主要功能点

  • 持久化记忆: 维护跨 AI 助手会话的上下文知识图谱。
  • 混合检索: 结合语义相似性(嵌入)、关键词匹配(BM25)和重排序,提供精准的上下文。
  • 实体提取: 利用大型语言模型 (LLM) 自动从文本、JSON 或对话中识别实体和关系。
  • 时间推理: 追踪事实的创建时间 ('created_at') 和事件的发生时间 ('valid_at')。
  • 自动化文档同步: 定期监控指定目录下的 Markdown 文件,智能检测变更并同步到知识图谱。
  • 双重检索模式: 提供两种互补的检索方式:语义搜索用于概念探索,BM25 关键词搜索用于获取带出处的精确文本。
  • 自动化上下文注入和记忆形成: 通过与 AI 助手客户端的钩子系统,实现无感知上下文注入和记忆存储。
  • MCP 工具集: 提供一系列标准化的 MCP 工具,允许 AI 助手进行记忆添加、删除、搜索和文档同步等操作。

安装步骤

  1. 安装 Neo4j 数据库: 按照仓库 README 中的说明,在您的系统上安装并启动 Neo4j 图数据库,并设置初始密码(例如 'demodemo')。
  2. 安装 uv (Python 包管理器): 打开终端,运行 'curl -LsSf https://astral.sh/uv/install.sh | sh'。
  3. 克隆 Cymbiont 仓库: 运行以下命令克隆仓库及其子模块:
    git clone --recurse-submodules https://github.com/Brandtweary/cymbiont.git
    cd cymbiont
  4. 构建 Cymbiont 服务器: 在 Cymbiont 根目录下,运行 'cargo build --release' 以编译 Rust 服务器。
  5. 配置知识图谱后端:
    • 进入 '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 # 用于向量搜索的嵌入模型
  6. 安装后端依赖:
    • 进入 'graphiti-cymbiont/server' 目录:'cd server'。
    • 运行 'uv sync' 安装 Python 后端服务所需的依赖。
    • 返回 Cymbiont 根目录:'cd ../..'。
  7. 配置语料库路径:
    • 创建您希望存放 Markdown 文件的目录,例如 'mkdir -p ~/Documents/cymbiont-corpus'。
    • 复制示例配置文件:'cp config.example.yaml config.yaml'。
    • 编辑 'config.yaml' 文件,将 'corpus.path' 设置为您刚刚创建的语料库目录的绝对路径
  8. (可选)安装 Claude Code 钩子:
    • Cymbiont 提供了 Python 钩子脚本,用于与 Claude Code 客户端进行无缝集成,实现自动上下文注入和记忆形成。
    • 请参照 Cymbiont 仓库 README 中“Install Claude Code Hooks”部分的详细说明,将这些钩子添加到您的 Claude Code 客户端配置中。
  9. 添加 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 客户端不需要在此处提供额外参数。

基本使用方法

  1. 启动 Claude Code 或其他兼容的 AI 助手客户端:确保您的 AI 助手已正确配置并连接到 Cymbiont MCP 服务器。
  2. 与 AI 助手对话:当您与 AI 助手交流、记录笔记或处理文档时,Cymbiont 会在后台自动完成以下工作:
    • 上下文检索:根据您的消息和助手的回复,静默查询知识图谱,将相关实体和事实注入助手的上下文。
    • 记忆形成:每隔一定数量的用户消息或会话结束时,分析对话内容,提取关键信息并自动添加到知识图谱。
  3. 利用文档同步:将您的 Markdown 笔记、代码文档等文件放入配置的语料库目录。Cymbiont 会定期自动同步这些文件,将其内容作为记忆的一部分。
  4. 手动调用 MCP 工具 (可选):如果需要,您可以直接通过 AI 助手明确调用 Cymbiont 提供的 MCP 工具,例如:
    • 'add_memory(name="会议纪要", episode_body="我们决定将项目A的截止日期推迟一周...")':手动添加新的记忆。
    • 'search_context(query="关于项目B的最新进展")':手动查询相关上下文。
    • 'sync_documents()':手动触发文档同步。

Cymbiont 旨在无缝融入您的工作流,让您感觉 AI 助手拥有自然的长期记忆,无需频繁手动干预。

信息

分类

开发者工具