使用说明
DevFlow MCP:AI代理的智能内存
是否曾希望你的AI能在对话之间记住事情?DevFlow MCP为任何支持模型上下文协议(如Claude Desktop)的AI提供了一个持久且可搜索的记忆功能,使其真正变得有意义。
可以把它想象成给你的AI装了一个大脑,这个大脑不会在每次开始新对话时重置。
这有什么不同之处?
大多数人工智能内存系统要么设置过于复杂,要么过于简单而无法发挥作用。DevFlow MCP恰好找到了那个完美的平衡点:
实际上开箱即用无需Docker容器,无需配置外部数据库。只需安装并运行。
为实际开发而构建由那些厌倦了反复向AI助手解释相同上下文的开发者们创建,该系统能够理解软件项目实际的工作原理。
对其功能坦诚相告这里记录的每一个功能都是真实存在且可运行的。不承诺提供“即将推出”的功能或半实现的API。
全程类型安全零 any 在整个代码库中定义的类型。如果 TypeScript 没有报错,代码就是有效的。
这个项目背后的故事
这个问题最初很简单:人工智能助手在会话之间总是忘记重要的项目背景信息。现有的解决方案要么过于复杂,属于企业级过度设计,要么只是玩具项目,无法处理实际的工作负载。
因此,我们构建了一个真正能够解决问题的工具。DevFlow MCP已在实际项目中经过实战检验,能够处理从快速原型开发到复杂企业级应用的各种需求。
核心概念
实体
实体是知识图谱中的主要节点。每个实体具有:
- 一个唯一的名称(标识符)
- 一个实体类型(例如,“人”,“组织”,“事件”)
- 一份观察记录列表
- 向量嵌入(用于语义搜索)
- 完整版本历史
示例:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}
关系
关系定义了具有增强属性的实体之间的有向连接:
- 强度指标(0.0-1.0)
- 置信度级别(0.0-1.0)
- 丰富的元数据(来源、时间戳、标签)
- 带有版本历史的时间感知
- 基于时间的置信度衰减
示例:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at",
"strength": 0.9,
"confidence": 0.95,
"metadata": {
"source": "linkedin_profile",
"last_verified": "2025-03-21"
}
}
提示(工作流程指导)
DevFlow MCP 包括 工作流感知提示 该系统教导AI代理如何在一个级联式开发工作流程(规划者→任务创建者→编码者→评审者)中有效利用知识图谱。
什么是提示? 提示是指导性信息,用于指导人工智能代理何时调用哪些工具。它们在Claude桌面版中以斜杠命令的形式出现(例如。, /init-project并提供情境感知的文档。
重要提示: 提示本身并不保存数据——它们返回的是指导文本,告诉AI应该调用哪些工具。然后AI调用这些工具(如 create_entities, semantic_search) 这些实际上与数据库进行交互。
可用提示
1. /init-project - 开始新项目
指导规划人员创建初始特征实体并构建规划信息结构。
参数:
projectName(必填):项目或功能的名称description(必填):高级别描述goals(可选):具体目标或要求
它所教授的内容:
- 如何为高级项目创建“特性”实体
- 如何早期记录决策
- 如何规划任务并将其与功能相联系
- 项目信息结构化最佳实践
在Claude桌面版中的示例用法:
/init-project projectName="UserAuthentication" description="Implement secure user login system" goals="Support OAuth, 2FA, and password reset"
2. /get-context - 提取相关信息
帮助任何代理在开始工作前,在知识图谱中搜索相关的历史记录、依赖关系和上下文信息。
参数:
query(必填):你正在做什么?(用于语义搜索)entityTypes(可选):按类型过滤(功能、任务、决策、组件、测试)includeHistory(可选):包含版本历史(默认:否)
它所教授的内容:
- 如何使用语义搜索查找相关工作
- 如何通过关系检查依赖项
- 如何审查设计决策
- 如何理解实体版本历史
示例用法:
/get-context query="authentication implementation" entityTypes=["component","decision"] includeHistory=true
3. /remember-work - 存储已完成的工作
指导代理使用适当的实体类型和关系来保存他们的工作。
参数:
workType(必填):工作类型(特性、任务、决策、组件、测试)name(必填):作品名称/标题description(必填):你做了什么?(存储为观测数据)implementsTask(可选):此任务实现的工作(建立“实现”关系)partOfFeature(可选):此功能所属的部分(创建“部分_为”关系)dependsOn(可选):此组件所依赖的组件(创建“依赖关系”)keyDecisions(可选):已做出重要决策
它所教授的内容:
- 如何创建具有正确类型的实体
- 如何在实体之间建立关系
- 如何单独记录决策
- 如何维护知识图谱结构
示例用法:
/remember-work workType="component" name="AuthService" description="Implemented OAuth login flow with JWT tokens" implementsTask="UserAuth" partOfFeature="Authentication" dependsOn=["TokenManager","UserDB"]
4. /review-context - 获取完整的评论上下文
帮助评审者在提供反馈前收集有关某项工作的所有相关信息。
参数:
entityName(必填):待审核实体的名称includeRelated(可选):包含相关实体(默认:true)includeDecisions(可选):包含决策历史(默认:true)
它所教授的内容:
- 如何获取正在被审核的实体
- 如何找到相关工作(依赖项、实现)
- 如何审查设计决策
- 如何检查测试覆盖率
- 如何将评审反馈作为观察结果添加
示例用法:
/review-context entityName="AuthService" includeRelated=true includeDecisions=true
级联工作流示例
以下是提示如何引导一个完整的开发工作流程:
1. 规划代理:
/init-project projectName="UserDashboard" description="Create user analytics dashboard"
# AI learns to create feature entity, plan tasks
2. 任务创建者代理:
/get-context query="dashboard features"
# AI learns to search for related work, then creates task entities
3. 开发者代理:
/get-context query="dashboard UI components"
# AI learns to find relevant components and decisions
/remember-work workType="component" name="DashboardWidget" description="Created widget framework"
# AI learns to store work with proper relations
4. 评审代理:
/review-context entityName="DashboardWidget"
# AI learns to get full context, check tests, add feedback
为什么提示很重要
- 一致性所有代理都采用相同的结构化方法
- 上下文保持工作与适当的元数据和关系一起存储
- 可发现性未来的智能代理可以通过语义搜索找到相关历史信息
- 工作流程意识每个提示在开发周期中都有其特定的位置
- 自我文档化提示语向代理传授最佳实践
其内部工作机制如何
DevFlow MCP 将所有内容存储在一个单独的 SQLite 数据库文件中。没错,真的——只需在您的电脑上保存一个文件。
为何选择 SQLite 而不是更“高级”的选项?
我们首先尝试了那些复杂的东西。外部数据库、Docker容器、云服务——它们都能用,但对于大多数开发者实际的需求来说,这些都太过复杂了。
SQLite为您提供:
- 一个文件,统管一切您的整个知识图谱都存在于一个单一的(系统/数据库中)
.db文件,您可以复制、备份或进行版本控制 - 无需安装烦恼无需配置服务器,无需管理容器,无需创建云账户
- 出乎意料地快SQLite 轻松处理数百万条记录,毫无压力
- 内置向量搜索功能sqlite-vec 扩展原生支持语义搜索
- 处处适用从您的笔记本电脑到生产服务器,SQLite 都能轻松运行
入门指南(极其简单)
# Install globally
npm install -g devflow-mcp
# Run it (creates database automatically)
dfm mcp
# Want to use a specific file? Set the location
DFM_SQLITE_LOCATION=./my-project-memory.db dfm mcp
没有配置文件。无需环境设置。没有需要3小时的“入门”教程。即开即用。
要求Node.js 23+(用于获取最新的 SQLite 功能)
高级功能
语义搜索
基于语义而非仅关键词来查找相关实体:
- 向量嵌入使用OpenAI的嵌入模型,实体会自动编码到高维向量空间中
- 余弦相似度即使使用不同的术语,也能找到相关概念
- 可配置的阈值设置最小相似度分数以控制结果的相关性
- 跨模态搜索使用文本查询来查找相关实体,无论它们是如何被描述的
- 多模型支持兼容多种嵌入模型(OpenAI text-embedding-3-small/large)
- 上下文检索根据语义含义而非精确的关键词匹配来检索信息
- 优化后的默认设置调整参数以平衡精确率和召回率(相似度阈值设为0.6,启用混合搜索)
- 混合搜索结合语义搜索和关键词搜索,以获取更全面的结果
- 自适应搜索系统根据查询特征和可用数据,智能地在仅向量搜索、仅关键词搜索或混合搜索之间进行选择
- 性能优化在优先考虑用于语义理解的向量搜索的同时,保持回退机制以确保系统的鲁棒性
- 查询感知处理根据查询复杂度和可用的实体嵌入调整搜索策略
时间意识
通过时间点图检索追踪实体和关系的完整历史:
- 完整版本历史对实体或关系的每一次更改都会保留时间戳
- 即时查询检索过去任意时刻知识图的准确状态
- 变更跟踪自动记录创建时间(createdAt)、更新时间(updatedAt)、有效开始时间(validFrom)和有效结束时间(validTo)的时间戳
- 时间一致性保持对知识演变历史的准确看法
- 非破坏性更新更新会创建新版本,而不是覆盖现有数据
- 基于时间的过滤根据时间标准过滤图形元素
- 历史探索调查特定信息随时间的变化情况
信心衰退
关系会根据可配置的半衰期随时间自动降低信任度:
- 基于时间的衰减如果关系得不到加强,随着时间的推移,信任自然会下降
- 可配置的半衰期定义信息变得不那么确定的速度(默认:30天)
- 最低置信度下限设置阈值以防止重要信息过度衰减
- 元数据衰减每个关系都包含了详细的衰变计算信息
- 非破坏性的原始置信度值与衰减后的值一同保留
- 强化学习当关系因新观察结果而得到加强时,会重拾信心
- 参考时间灵活性基于任意参考时间进行衰减计算,以用于历史分析
高级元数据
支持实体和关系的丰富元数据,包括自定义字段:
- 源追踪记录信息的来源(用户输入、分析、外部来源)
- 置信水平根据确定性为关系分配置信度评分(0.0-1.0)
- 关系强度表示关系的重要性或强度(0.0-1.0)
- 时间元数据跟踪信息的添加、修改或验证时间
- 自定义标签添加任意标签以进行分类和过滤
- 结构化数据在元数据字段中存储复杂结构化数据
- 查询支持基于元数据属性进行搜索和筛选
- **可扩展架构(或模式)**根据需要添加自定义字段,而无需修改核心数据模型
MCP API 工具
以下工具可通过模型上下文协议提供给大型语言模型(LLM)客户端主机使用:
实体管理
-
创建实体
- 在知识图谱中创建多个新实体
- 输入:
entities(对象数组)- 每个对象包含:
name(字符串):实体标识符entityType(字符串):类型分类observations(string[]): 相关的观测值
- 每个对象包含:
-
添加观测数据
- 向现有实体添加新观测数据
- 输入:
observations(对象数组)- 每个对象包含:
entityName(字符串):目标实体contents(string[]): 要添加的新观测数据
- 每个对象包含:
- 注:与关系不同,观测数据不支持强度、置信度或元数据字段。观测数据是关于实体的原子事实。
-
删除实体
- 移除实体及其关系
- 输入:
entityNames(字符串数组)
-
删除观测数据
- 从实体中移除特定观测值
- 输入:
deletions(对象数组)- 每个对象包含:
entityName(字符串):目标实体observations(字符串数组):要移除的观察值
- 每个对象包含:
关系管理
-
创建关系
- 在实体之间创建具有增强属性的多个新关系
- 输入:
relations(对象数组)- 每个对象包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型strength(数字,可选):关系强度(0.0-1.0)confidence(数字,可选):置信水平(0.0-1.0)metadata(对象,可选):自定义元数据字段
- 每个对象包含:
-
获取关系
- 获得具有增强属性的特定关系
- 输入:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
-
更新关系
- 更新现有关系并增强其属性
- 输入:
relation(对象):- 包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型strength(数字,可选):关系强度(0.0-1.0)confidence(数字,可选):置信水平(0.0-1.0)metadata(对象,可选):自定义元数据字段
- 包含:
-
删除关系
- 从图中移除特定关系
- 输入:
relations(对象数组)- 每个对象包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
- 每个对象包含:
图操作
-
读取图表
- 阅读整个知识图谱
- 无需输入
-
搜索节点
- 根据查询搜索节点
- 输入:
query(字符串)
-
open_nodes 翻译为中文是“开放节点”
- 通过名称检索特定节点
- 输入:
names(字符串数组)
语义搜索
-
语义搜索
- 使用向量嵌入和相似性进行语义实体搜索
- 输入:
query(字符串):用于语义搜索的文本查询limit(数字,可选):要返回的最大结果数(默认:10)min_similarity(数字,可选):最小相似度阈值(0.0-1.0,默认值:0.6)entity_types(`string[]`, 可选):按实体类型过滤结果hybrid_search(布尔值,可选):结合关键词搜索和语义搜索(默认:true)semantic_weight(数字,可选):混合搜索中语义结果的权重(0.0-1.0,默认:0.6)
- 特点:
- 根据查询上下文智能选择最优搜索方法(向量、关键词或混合)
- 通过回退机制优雅地处理无语义匹配的查询
- 通过自动优化决策保持高性能
-
获取实体嵌入
- 获取特定实体的向量嵌入
- 输入:
entity_name(字符串):要获取嵌入表示的实体名称
时间特征
-
获取实体历史记录
- 获取实体的完整版本历史记录
- 输入:
entityName(字符串)
-
获取关系历史
- 获取关系的完整版本历史
- 输入:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
-
获取特定时间点的图表
- 获取特定时间戳时的图表状态
- 输入:
timestamp(数字):Unix时间戳(自纪元以来的毫秒数)
-
获取衰减图
- 获取带有时间衰减置信度的图表
- 输入:
options(对象,可选):reference_time(数字):用于衰减计算的参考时间戳(自纪元以来的毫秒数)decay_factor(数字):可选的衰减因子覆盖值
配置
环境变量
使用这些环境变量配置DevFlow MCP:
# SQLite Configuration
DFM_SQLITE_LOCATION=./knowledge.db
# Embedding Service Configuration
OPENAI_API_KEY=your-openai-api-key
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
# Debug Settings
DEBUG=true
嵌入模型
可用的OpenAI嵌入模型:
text-embedding-3-small高效且成本效益高(1536维)text-embedding-3-large更高的精度,更昂贵(3072维)text-embedding-ada-002传统模型(1536维)
OpenAI API配置
要使用语义搜索,您需要配置OpenAI API凭据:
- 从(某处)获取API密钥 OpenAI(开放人工智能研究所)
- 使用以下命令配置您的环境:
# OpenAI API Key for embeddings
OPENAI_API_KEY=your-openai-api-key
# Default embedding model
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
注对于测试环境,如果未提供API密钥,系统将模拟嵌入生成。然而,建议在集成测试中使用真实的嵌入。
与Claude桌面版的集成
配置
对于本地开发,请将此添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"devflow": {
"command": "dfm",
"args": ["mcp"],
"env": {
"DFM_SQLITE_LOCATION": "./knowledge.db",
"OPENAI_API_KEY": "your-openai-api-key",
"OPENAI_EMBEDDING_MODEL": "text-embedding-3-small",
"DEBUG": "true"
}
}
}
}
重要在您的Claude Desktop配置中,始终明确指定嵌入模型,以确保行为的一致性。
推荐的系统提示
为了与Claude实现最佳集成,请在您的系统提示中添加以下语句:
You have access to the DevFlow MCP knowledge graph memory system, which provides you with persistent memory capabilities.
Your memory tools are provided by DevFlow MCP, a sophisticated knowledge graph implementation.
When asked about past conversations or user information, always check the DevFlow MCP knowledge graph first.
You should use semantic_search to find relevant information in your memory when answering questions.
测试语义搜索
一旦配置完成,Claude便能通过自然语言访问语义搜索功能:
-
创建带有语义嵌入的实体:
User: "Remember that Python is a high-level programming language known for its readability and JavaScript is primarily used for web development." -
进行语义搜索:
User: "What programming languages do you know about that are good for web development?" -
检索特定信息:
User: "Tell me everything you know about Python."
这种方法的强大之处在于,用户可以进行自然交互,而大型语言模型(LLM)则负责处理选择和使用合适记忆工具的复杂性。
实际应用
DevFlow MCP的自适应搜索功能带来了实际效益:
-
查询多功能性用户无需担心如何措辞提问——系统会自动适应不同类型的查询
-
**抗失败韧性(或称为“抗挫韧性”、“逆境适应能力”)**即使在无法进行语义匹配的情况下,系统也可以在无需用户干预的情况下转而采用其他方法
-
性能效率通过智能选择最佳搜索方法,系统为每个查询平衡了性能和相关性
-
改进的上下文检索大型语言模型(LLM)的对话得益于更佳的上下文检索能力,因为系统能够在复杂的知识图谱中找到相关信息
例如,当用户询问“你对机器学习了解多少?”时,系统即使没有明确提到“机器学习”,也能检索到概念上相关的实体,比如关于神经网络、数据科学或特定算法的实体。但如果语义搜索的结果不足,系统会自动调整其方法,以确保仍然返回有用的信息。
故障排除
向量搜索诊断
DevFlow MCP 包含内置的诊断功能,以帮助排查向量搜索问题:
- 嵌入验证该系统检查实体是否具有有效的嵌入表示,如果缺失则自动生成
- 向量索引状态验证向量索引是否存在且处于ONLINE状态
- 备用搜索如果向量搜索失败,系统将回退到基于文本的搜索
- 详细日志记录为故障排除全面记录向量搜索操作
调试工具(当 DEBUG=true 时)
当启用调试模式时,将提供更多诊断工具:
- 诊断向量搜索关于SQLite向量索引、嵌入计数和搜索功能的信息
- **强制生成嵌入(或向量表示)**强制为特定实体生成嵌入表示
- 调试嵌入配置当前嵌入服务配置的相关信息
开发者重置
在开发过程中彻底重置您的 SQLite 数据库:
# Remove the database file
rm -f ./knowledge.db
# Or if using a custom location
rm -f $DFM_SQLITE_LOCATION
# Restart your application - schema will be recreated automatically
dfm mcp
建设与发展
# Clone the repository
git clone https://github.com/takinprofit/dev-flow-mcp.git
cd dev-flow-mcp
# Install dependencies (uses pnpm, not npm)
pnpm install
# Build the project
pnpm run build
# Run tests
pnpm test
# Check test coverage
pnpm run test:coverage
# Type checking
npx tsc --noEmit
# Linting
npx ultracite check src/
npx ultracite fix src/
安装
本地开发
对于项目开发或贡献:
# Clone the repository
git clone https://github.com/takinprofit/dev-flow-mcp.git
cd dev-flow-mcp
# Install dependencies
pnpm install
# Build the CLI
pnpm run build
# The CLI will be available as 'dfm' command
许可证
麻省理工学院(MIT)
