在人工智能辅助软件开发日益普及的今天,一个关键的挑战浮出水面:如何让 AI 编码助手像人类开发者一样拥有跨会话的“记忆”,能够记住并应用项目的编码规范、偏好设置、特定流程甚至需求细节。目前,广受欢迎的 AI 集成开发环境(IDE) Cursor
尚未提供完善的记忆解决方案。
近期,一项利用开源时序图谱框架 Graphiti
及其 MCP
(Model Context Protocol) 服务器为 Cursor IDE
增添持久化记忆能力的尝试,为解决这一痛点带来了新的可能。这一集成使得 Cursor
内的 AI 助手能够有效地存储、管理和回忆信息,有望处理更复杂的开发任务。
为何持久记忆至关重要?
缺乏跨会话的记忆能力,意味着 AI 编程助手在每次交互或新的开发会话中,可能都需要重新获取上下文信息。这不仅降低了效率,也限制了其处理复杂项目和长期任务的能力。持久化记忆让 AI 能够:
- 保持一致性:确保在整个项目周期中遵循相同的编码标准和开发者偏好。
- 理解上下文:更好地理解长期项目需求和不断演变的技术规格。
- 处理复杂任务:基于历史交互和项目知识,执行更复杂、多步骤的开发任务。
赋予 AI 编程助手可靠的记忆力,是其从简单的代码补全工具向真正智能开发伙伴进化的关键一步。
解读 MCP 与 Graphiti
MCP
,即模型上下文协议(Model Context Protocol),是一种旨在促进 AI 应用(MCP
客户端)与外部资源(MCP
服务器)之间结构化交互的开放标准。它允许 AI 模型访问外部数据或工具,突破静态训练数据的限制。在此次集成中,Graphiti
充当 MCP
服务器,而 Cursor IDE
则作为 MCP
客户端。
Graphiti
是一个用于构建和查询时序感知知识图谱的框架,特别适用于在动态环境中运行的 AI 智能体。与传统的检索增强生成(RAG)方法主要依赖静态或批量更新的向量数据库不同,Graphiti
能够持续地将用户交互、结构化与非结构化的企业数据以及外部信息整合到一个连贯、可查询的图谱中。该框架支持增量数据更新、高效检索和精确的历史状态查询,且无需完全重新计算整个图谱,非常适合开发交互式、具备上下文感知能力的 AI 应用。
Graphiti
团队发布了一个实验性的 MCP
服务器,将其框架能力以工具形式暴露给 AI 智能体(如 Cursor
Agent)直接调用。鉴于 Cursor
在开发社区的流行度以及团队自身的使用体验,选择 Cursor
来演示 MCP
集成是一个自然的选择。
定制 Graphiti 以适配 Cursor
Graphiti
的一个特点是允许通过自定义实体定义来使用丰富的、领域特定的数据结构,用具体的模型替代通用的图节点。例如,在与 Cursor IDE
集成的场景中,可以定义一个 Requirement
(需求)实体:
from pydantic import BaseModel, Field
class Requirement(BaseModel):
"""需求代表了产品或服务必须满足的特定需要、特性或功能。
始终确保在需求和其所属项目之间创建一条边,并在边上明确指出该需求是一个 requirement。
识别和提取需求的说明:
1. 寻找明确的需求或必要性陈述(“我们需要X”,“X是必需的”,“X必须有Y”)。
2. 识别描述系统应做什么的功能规范。
3. 注意非功能性需求,如性能、安全或可用性。
4. 提取必须遵守的约束或限制。
5. 关注清晰、具体、可衡量的需求,而不是模糊的愿望。
6. 如果提到优先级或重要性(“关键”、“高优先级”等),则捕获它们。
7. 包括需求之间的明确依赖关系。
8. 保留原始意图和范围。
9. 根据领域或功能进行适当分类。
"""
project_name: str = Field(
...,
description='需求所属项目的名称。',
)
description: str = Field(
...,
description='需求的描述。仅使用上下文中提到的信息来编写此描述。',
)
这种结构化的方法使得 Cursor
能够精确地将项目需求存储在 Graphiti
的知识图谱中,并在需要时进行检索。
集成实现步骤
将 Graphiti
的 MCP
服务器集成到 Cursor IDE
以提供记忆功能,主要通过以下步骤实现:
- 配置:将
Cursor IDE
配置为连接到Graphiti MCP
服务器的MCP
客户端,建立直接交互通道。详细配置可参考Graphiti MCP
的 ReadMe 文档。 - 自定义实体定义:在
Graphiti
中定义代表项目规格、编码标准等的自定义实体,如Requirement
(需求)、Preference
(偏好)、Procedure
(流程)等。 - 实时数据更新:指示
Cursor
助手在Graphiti
知识图谱中添加和更新实体。例如,当开发者将 UI 框架偏好从Chakra UI
更改为ShadCN
时,这一变更会立即反映在图谱中,并附带记录变更时间的时序元数据。 - 行动前检索:指示
Cursor
助手在执行操作前查询Graphiti
,以检索存储的偏好、需求和流程。这些信息可以在不同会话甚至不同项目间保持持久。
相关项目提供了一个演示视频,展示了 Cursor
Agent 如何利用 Graphiti MCP
服务器来管理和回忆项目需求和开发者偏好设置。
潜在影响与后续步骤
这项 Cursor
与 Graphiti MCP
的集成,展示了为 AI 编码助手赋予持久化、结构化记忆的一种有效途径。虽然 Graphiti
的 MCP
服务器目前仍处于实验阶段,但它预示着 AI 辅助开发工具未来可能的发展方向——AI 不仅能理解当前指令,还能基于积累的知识和上下文提供更智能、更个性化的辅助。这有望显著提升开发效率,并使 AI 能够参与到更长期、更复杂的软件工程任务中。
对 Graphiti
框架或 MCP
集成感兴趣的开发者,可以进一步探索以下资源:
Graphiti
GitHub 仓库: https://github.com/getzep/graphitiMCP
服务器文档: https://github.com/getzep/graphiti/blob/main/mcp_server/README.mdZep
的相关研究论文 (arXiv): Zep: A Temporal Knowledge Graph Architecture for Agent Memory