Token导航 LogoToken导航TokenDH.com
Forkscout Memory MCP logo
AI代理stdio官方级别未说明来源级核验

Forkscout Memory MCP

MCP Server

为AI代理提供持久化长期记忆的MCP服务器,支持结构化事实存储、置信度评分、矛盾检测和知识图谱等功能,适用于需要跨会话记忆和学习的自主代理场景。

工具数

9

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude知识图谱Claude DesktopClaudeCursorVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Forkscout

提供方

Forkscout

最后核验

2026/5/17 20:19

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d -p 3211:3211 -v memory-data:/data forkscout-memory-mcp

详细介绍

forkspect内存mcp

AI代理的持久长期记忆 --单机 主控程序 服务器为LLM提供了他们根本缺乏的东西:在对话中记忆、学习和发展的能力。

叉子侦察机 自主代理。适用于任何兼容MCP的客户端(VS Code Copilot、Claude Desktop、Cursor、自定义代理)。

______________________________________________________________________

问题:LLMs没有记忆

每次你与法学硕士开始对话,都是从零开始的。它不知道:

  • 你昨天说了什么
  • 你在做什么项目
  • 它以前犯过什么错误,是如何纠正的
  • 你是谁或你喜欢什么
  • 已经做出了哪些决定,为什么

标准的“解决方案”实际上并没有解决这个问题:

方法它做什么为什么失败
系统提示粘贴在顶部的静态指令无法学习。永远一样的指示。无法适应。
对话历史在上下文中发送以前的消息受上下文窗口限制。会议结束后就走了。跨项目噪音。
RAG/矢量数据库嵌入文档,按相似性检索专为 _文件_,不 _信念_没有信心,没有矛盾处理,没有遗忘。返回陈旧的块和无法区分的新鲜块。
微调训练数据权重昂贵、缓慢、无法学习错误,不是每个用户。
聊天记忆插件存储键值对或摘要扁平结构,没有关系,没有信心,没有范围界定,没有进化跟踪。

核心问题: 这些系统都没有以智能实际工作的方式对知识进行建模。 它们存储数据。他们不坚持信仰。

______________________________________________________________________

此服务器的不同之处

forkspect内存mcp是一个 信念维持系统 伪装成MCP服务器。它为LLMs提供了:

1.有信心的结构化事实(不仅仅是字符串)

每个事实都有一个置信度得分、源计数和时间元数据:

"TypeScript is the primary language" → confidence: 0.92, sources: 5, last confirmed: 2h ago
"Port is 3211"                      → confidence: 0.85, sources: 2, last confirmed: 3d ago
"Uses webpack for bundling"         → confidence: 0.31, sources: 1, last confirmed: 90d ago ← stale

置信度是根据证据强度+新近度自动计算的。多个来源证实的事实排名更高。旧的未经证实的事实会衰减,但永远不会低于其证据下限(一次陈述的事实即使在一年后仍然得分0.30)。

为什么这很重要: 当LLM检索内存时,它会得到一个关于它最有信心的内容的排名视图,而不是一个关于所有记录内容的简单列表。

2.非破坏性信仰修正(取代,而非删除)

当新信息与旧信息相矛盾时,旧事实不会被删除,而是 取代:

✓ Active:     "Project uses AI SDK v6"  (confidence: 0.95)
  ⤷ Superseded: "Project uses AI SDK v5" → replaced by "Project uses AI SDK v6" (2025-12-15)
    ⤷ Superseded: "Project uses AI SDK v4" → replaced by "Project uses AI SDK v5" (2025-09-01)

完整的更正历史被保留。LLM可以检查 其信仰是如何演变的 --它过去犯了哪些错误,什么时候纠正了这些错误。

为什么这很重要: RAG和向量DB将过时的块永远与正确的块放在一起。LLM无法知道哪个版本是最新的。在这里,只有主动的事实出现在搜索中,但学习历史总是按需提供的。

3.自动矛盾检测

当“port is 3211”已存在时添加“port is 8080”会触发警告:

⚠️ CONTRADICTIONS DETECTED:
  • "port is 3211" vs "port is 8080" — Number/version conflict

三种检测策略:

  • 否定模式 --“使用X”vs“不使用X”
  • 数量/版本冲突 --相同的背景,不同的价值观
  • 主题重叠分歧 --单词重叠程度高,但关键词不同(Jaccard相似性)

矛盾的事实会自动被取代。LLM受到警告,因此可以对冲突进行推理。

4.混合语义+BM25搜索

召回用途 并行运行的两个搜索层:

  • BM25(词汇) --精确的关键字匹配,词频,快速
  • 语义(向量) --基于意义的匹配 Xenova/all-MiniLM-L6-v2 (384-dim,量化ONNX,本地运行,不需要API密钥)

结果与可调的alpha权重合并(默认值:60%语义,40%BM25)。这意味着:

  • 搜索“数据库端口”还可以找到“3211侦听地址”(语义)
  • 搜索“libsimdjson”即使没有语义邻居,也能找到完全匹配的结果(BM25)
  • 这两个信号在常见查询中相互强化

嵌入按需计算并缓存在 memory-embeddings.jsonXenova型号在首次启动时自动下载(约23MB)并保存到 TRANSFORMERS_CACHE (默认值: /data/.cache 在Docker中)。

5.跨项目隔离的多维标记

跨项目共享内存的首要问题: 搜索返回来自无关项目的噪声。

每个实体和交易所都可以被标记:

{
  "tags": {
    "project": "forkscout",
    "scope": "universal",
    "category": "debugging"
  }
}

搜索用途 智能过滤:

  • 搜索方式 project: "forkscout" 返回:

- ✅ 已标记的项目 project: "forkscout" (项目特定) - ✅ 已标记的项目 scope: "universal" (跨项目知识) - ✅ 没有标签的项目(向后兼容,旧数据) - ❌ 已标记的项目 project: "other-project" (已过滤掉)

为什么这很重要: 周一在forkscot上工作、周二在future gain上工作的代理需要其TypeScript调试模式(通用),但不需要futuregain的数据库模式(特定于项目)。标签过滤器会自动执行此操作,而不需要LLM手动过滤结果。

6.具有120多种关系类型的知识图(非平面存储)

实体通过类型化的加权关系连接:

forkscout-memory-mcp  ──uses──▶  TypeScript       (weight: 0.95, 5x confirmed)
forkscout-memory-mcp  ──uses──▶  Bun              (weight: 0.80, 3x confirmed)
forkscout-memory-mcp  ──part-of──▶  Forkscout     (weight: 0.90, 4x confirmed)

跨越认知的30种实体类型(goal, task, plan, hypothesis, decision),经验(event, outcome, failure, success),以及环境(resource, state, signal).

120多种关系类型,分为15个类别,包括结构、故意、因果、时间和学习维度。反复的证据强化了这种关系——一个联系被独立陈述的次数越多,它的权重就越高。

7.自我认同和学习

代理维护一个自我实体,在那里记录对其自身行为的观察:

Forkscout Agent (agent-self):
  • [95%] Prefer spawn_agents for parallel research tasks
  • [88%] Always check memory before starting work
  • [72%] When debugging, reproduce the error first before reading code

这些自我观察在各个会话中积累。代理从字面上学习如何成为一个更好的代理——什么调试策略有效,用户喜欢什么通信模式,要避免什么错误。

8.具有自动重要性的交换内存+重复数据删除

对话交换被存储和搜索:

observe("How do I fix port conflict?", "Check if port 3211 is in use with lsof -i :3211...")
→ importance auto-calculated from message length + keyword density
→ deduplication: similar exchanges (>0.85 similarity) are merged, not duplicated
→ hot tier: last 500 exchanges in full
→ archive tier: older exchanges indexed by embedding only

交换可以按项目标记,以便进行范围召回。在搜索中,词汇和语义匹配都与交换历史相冲突。

9.工作记忆持久性(会话上下文)

会话中的工作内存(最近的操作、决策、错误)在服务器重启时持续存在:

"workingMemorySessions": {
  "session_abc": [
    { "content": "Started migrating schema to v7", "event_type": "action", "timestamp": 1708600000000 },
    { "content": "Found contradiction in port facts", "event_type": "observation" }
  ]
}

每个会话的最后25个事件将被保留。重新启动时,代理可以准确地回忆起它在任务中途停止的地方。

10.主动任务跟踪(执行记忆)

服务器重启后任务仍然存在:

⚡ Running: "Implement multi-dimensional tagging" (task_abc123) — 45min, P80
✓ Completed: "Fix planner duplicate processing" — 12min
✗ Aborted: "Migrate to Rust" — Deprioritized

2小时后自动过期可防止僵尸任务。类似任务检测可防止重复。

______________________________________________________________________

架构比较

┌─────────────────────────────────────────────────────────┐
│                   Traditional RAG                        │
│                                                         │
│  Documents → Chunker → Embeddings → Vector DB → Search  │
│                                                         │
│  ✗ No confidence       ✗ No contradiction handling      │
│  ✗ No belief evolution  ✗ No project scoping            │
│  ✗ Stale = Fresh        ✗ No relationships              │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│              forkscout-memory-mcp                        │
│                                                         │
│  Facts → Confidence + Sources → Contradiction Check →   │
│  Knowledge Graph (entities + relations) →               │
│  Tag-filtered Hybrid Search (BM25 + Semantic) →         │
│  Ranked results (confidence × recency × access) →       │
│  Supersession chains (belief evolution history)         │
│                                                         │
│  ✓ Confidence scoring   ✓ Automatic contradiction       │
│  ✓ Non-destructive      ✓ Multi-project isolation       │
│  ✓ Self-identity        ✓ Task tracking                 │
│  ✓ Relationship graph   ✓ Two-tier consolidation        │
│  ✓ Hybrid search        ✓ Working memory persistence    │
│  ✓ Exchange memory      ✓ Interactive visualizer        │
└─────────────────────────────────────────────────────────┘

______________________________________________________________________

快速开始

本地开发

bun install
bun --watch src/server.ts    # watch mode, auto-reload on changes
注: Bun是必需的。Xenova/all-MiniLM-L6-v2型号(约23MB)在首次启动时自动下载到 TRANSFORMERS_CACHE。后续启动是即时的。

生产

bun run src/server.ts        # Bun runs TypeScript natively — no build step

码头工人

docker build -t forkscout-memory-mcp .
docker run -d -p 3211:3211 -v memory-data:/data forkscout-memory-mcp

# or with docker compose
docker compose up -d

Docker中心/GHCR

docker pull ghcr.io/martianacademy/forkscout-memory-mcp:latest
docker run -d -p 3211:3211 -v memory-data:/data ghcr.io/martianacademy/forkscout-memory-mcp

从VS代码连接

添加 .vscode/mcp.json:

{
  "servers": {
    "forkscout-memory": {
      "type": "http",
      "url": "http://localhost:3211/mcp"
    }
  }
}

______________________________________________________________________

环境变量

变量默认值描述
MEMORY_PORT3211HTTP服务器端口
MEMORY_HOST0.0.0.0绑定地址
MEMORY_STORAGE.forkscout (本地)/ /data (Docker)目录 memory.jsonmemory-embeddings.json
MEMORY_OWNERAdmin自我实体中使用的所有者名称
SELF_ENTITY_NAMEForkscout Agent代理人的自我身份实体名称
CONSOLIDATION_INTERVAL_MS86400000 (24小时)全固结间隔
VERIFY_FILEStrue根据文件系统验证文件实体
TRANSFORMERS_CACHE/data/.cache (Docker)缓存Xenova模型权重的地方
CORS_ORIGIN*CORS允许的来源

______________________________________________________________________

端点

方法路径描述
GET/health健康检查——实体/关系/交换/任务计数
GET//health
GET/api/memory原始内存JSON(完整的MemoryData转储——用于调试)
GET/visualizer交互式知识图可视化工具(无限画布)
POST/mcpMCP JSON-RPC端点(带SSE响应的流式HTTP)

______________________________________________________________________

MCP工具(9)

remember --存储或更新实体事实

将事实存储在命名实体上。新的事实被合并了。矛盾会引发警告,并自动取代旧事实。

参数类型必填描述
namestring实体名称(完全匹配合并,创建新名称)
type枚举实体类型——请参阅下面的实体类型
factsstring\[\]要添加/合并的事实。传递 [] + supersede 删除事实
supersedestring--替换事实的子字符串 facts[0]
tags对象--范围标签,例如。 { "project": "forkscout", "scope": "universal" }
{
  "name": "forkscout-memory-mcp",
  "type": "service",
  "facts": ["HTTP port is 3211", "runs on Bun 1.3.9"],
  "tags": { "project": "forkscout" }
}

______________________________________________________________________

recall --多模态内存检索

五种检索模式覆盖所有存储层。

参数类型必填描述
mode枚举--search (默认)· entity · history · relations · exchanges
querystring\*搜索文本(必填 searchexchanges 模式)
namestring\*实体名称(必填 entityhistory 模式)
limitnumber--最大结果数(默认值:5)
projectstring--用于范围筛选的项目标记
include_historybool--在中包含被取代的事实 entity 模式(默认值:false)

模式:

  • search --BM25+跨实体+交换的语义混合搜索
  • entity --按确切名称获取一个实体; include_history: true 显示替代链
  • history --信仰演变:什么时候被纠正(要求 name)
  • relations --所有知识图边;可选的 name 限制为一个实体
  • exchanges --按关键字搜索对话历史记录

______________________________________________________________________

observe --录制对话交流

将一段重要的对话记录到长期记忆中,并推送到工作记忆中。

参数类型必填描述
userstring用户留言
assistantstring助理回应
sessionIdstring会话标识符
importancenumber--重要性0-1(如果省略,则自动计算)
projectstring--用于范围调用的项目标记

如果省略,重要性将根据消息长度和关键字密度自动计算。重复数据删除以0.85的相似性阈值运行——重复数据被合并,而不是附加。

只记录与非琐碎决策、根本原因或获得的见解的交流。跳过常规工具输出。

______________________________________________________________________

relate --建立或加强关系

在两个实体之间创建键入边。

参数类型必填描述
fromstring源实体名称
tostring目标实体名称
type枚举关系类型——请参阅下面的关系类型

重复边会自动合并并获得置信度权重。缺失的实体会自动创建为类型 other.

规则:recall(mode="search") 首先确认这两个名称的存在,避免创建重复的实体。

______________________________________________________________________

context --工作内存(会话范围)

在RAM中,会话范围的工作内存。跟踪你现在正在做什么:采取的行动、做出的决定、出现的错误。

参数类型必填描述
action枚举push · get · clear
session_idstring会话标识符
contentstring\*\[push\]发生了什么/决定了什么/失败了
event_typeenum--\[push\] action · observation · decision · error · fact
limitnumber--\[get\]要返回的最近事件(默认值:10)

保留每个会话的最后25个事件。会话开始时呼叫 action: "get" 回忆起你从哪里停下来的。工作记忆会持续到 memory.json 跨服务器重启。

______________________________________________________________________

task --用于多步工作的执行记忆

任务在服务器重启后仍然存在,并提供按时间顺序的跟踪。

参数类型必填描述
action枚举start · done · abort · list
titlestring\*\[start\]短标签(3-7个单词)
goalstring\*\[start\]你想完成什么
successConditionstring--\[start\]如何知道何时完成
prioritynumber--\[start\]优先级0-1
importancenumber--\[start\]长期重要性0-1
taskIdstring\*\[done/abort\]返回的任务ID start
resultstring--\[完成\]结果摘要
reasonstring\*\[abort\]任务停止的原因
  • start:检测类似的现有任务以避免重复。退货 taskId.
  • done:标记完成+自动保存成功记录以备将来召回。
  • abort:停止+保存失败的事后分析,以备将来学习。
  • list:显示所有具有已用持续时间的活动和暂停任务。

2小时后自动过期可防止僵尸任务。

______________________________________________________________________

introspect --内存自检

获取统计数据并识别过时或不稳定的事实。在会话启动时运行。

参数类型必填描述
view枚举--stats · stale · gaps · all (默认值: stats)
limitnumber--过期/空白的最大结果(默认值:20)
typesarray--\[过时\]按实体类型筛选

意见:

  • stats --实体/关系/交换计数和类型细分
  • stale --最近未访问的实体(用于验证或修剪的候选实体)
  • gaps --可能已过时的易失性事实(版本、端口、路径、环境变量)
  • all --合并报告-- 建议在会话启动时使用

______________________________________________________________________

consolidate --内存维护

刷新置信度评分,删除过时的事实,删除空实体,清理孤立关系,存档旧数据,检测近乎重复的数据。

参数类型必填描述
archiveDaysnumber--被取代事实存档前的最小年龄(默认值:180)
maxStaleDaysnumber--修剪前低置信度事实的最大年龄(默认值:60)
minConfidencenumber--保持活动事实的最小置信度(默认值:0.15)

定期运行或当内存变大时运行。被取代的(历史)事实仅在以下情况下存档 archiveDays 保存学习历史。

______________________________________________________________________

forget --删除事实

通过子字符串匹配替换实体中的事实。

参数类型必填描述
namestring实体名称
factSubstringstring以事实取代

事实被取代了(不是被硬删除了)——历史被保留了。使用 recall(mode="entity", include_history: true) 看到被取代的事实。

______________________________________________________________________

信心如何发挥作用

每个事实的置信度都是自动计算的:

confidence = sourceBase + recencyBonus

sourceBase (permanent floor):
  1 source  → 0.30
  2 sources → 0.42
  3 sources → 0.50
  5+ sources → 0.60

recencyBonus (decays over 90 days):
  just confirmed → +0.30
  30 days ago    → +0.21
  90 days ago    → +0.11
  180 days ago   → +0.04

关键设计决策: 长期的知识永远不会衰减到零。一个曾经陈述过的事实多年后仍然得分为0.30。只有最近的奖金会衰减——证据库是永久的。这可以防止常见的RAG问题,即有效但旧的信息被垃圾回收。

无论置信度如何,受保护的实体类型都不会被修剪: agent-self, person, project, preference, decision, organization, skill, constraint.

______________________________________________________________________

混合搜索的工作原理

每次搜索调用都会并行运行两个引擎,然后合并结果:

Query: "database port configuration"
         │
    ┌────┴─────────────┐
    │                  │
  BM25              Semantic
  (keyword)         (vector)
    │                  │
  Finds:             Finds:
  "database"    "listen address 3211"
  "port"        "server bind config"
  "configuration"  "networking setup"
    │                  │
    └────┬─────────────┘
         │
    Merge (alpha=0.6)
    → 60% semantic score + 40% BM25 score
         │
    Rerank by confidence × recency
         │
    Top-K results
仅BM25仅语义
错过同义词和释义错过确切的版本字符串
“3211端口”≠“侦听地址”“libsimdjson”没有语义邻居
快速,无需模型需要嵌入计算

它们共同涵盖了两端:确切的技术字符串和概念意义。

嵌入在第一次访问时延迟计算并缓存在 memory-embeddings.json实体更改时,缓存无效。

______________________________________________________________________

两层整合

灯(每次冲洗,5分钟节流)

  • 所有活动事实的信心评分刷新

满(每24小时+按需通过 consolidate 工具)

  1. 所有实体的信心刷新
  2. 存档取代了超过180天的事实
  3. 删除非受保护实体上陈旧的低置信度活动事实(>60天,\0.70)
  4. 将旧交易所从热层(500个上限)归档到归档层
  5. 根据文件系统验证文件实体(可选)

______________________________________________________________________

内置展示台

打开 http://localhost:3211/visualizer 在浏览器中以交互方式探索知识图。

特性

  • 无限画布 --在任何方向上自由地摇动,没有界限。点网格SVG背景无限延伸。
  • 防缩放缩放 --节点、标签和边在任何缩放级别都保持最小屏幕尺寸:
  nodeRadius = max(base / zoom^1.25, 9px / zoom)   → always ≥9px on screen
  fontSize   = max(base / zoom^1.15, 10px / zoom)  → always ≥10px on screen
  edgeWidth  = max(base / zoom^0.95, 0.8px / zoom) → always visible
  • 按度径向布局 --具有最多关系的实体被放置在外环;中心附近的孤立节点集群:
  pct = 1 - rank / (N-1)   // rank 0 (most connected) → pct=1 → outermost
  r   = maxRadius × (0.12 + pct × 0.88)
  • 节点拖动 --将任何节点拖动到自定义位置,保存到本地存储(键: v4)并在下次访问时恢复。
  • 全屏幕模式 --展开到全视口、无边界的无限画布。
  • 智能限制 --显示多达300个节点和600条边,而不会降低性能。

控制

互动行动
滚动放大/缩小
拖动画布(空)在任何方向上无限平移
拖动节点重新定位节点(保存到本地存储)
双击画布调整所有节点以查看
双击节点突出显示节点+其直接关系
单击列表中的实体缩放并突出显示该节点
展开按钮(↗)全屏无限画布模式

节点颜色图例

颜色实体类别
蓝色服务/技术
绿色个人/组织
紫色项目/目标/计划
橙色任务/决策/约束
红色故障/问题
蒂尔概念/技能/偏好
灰色文件/其他
黄金边界代理人自身实体

______________________________________________________________________

数据格式

memory.json内存数据v7 (具有置信度、版本控制、多维标签和工作记忆会话的结构化事实):

{
  "version": 7,
  "entities": [
    {
      "name": "forkscout-memory-mcp",
      "type": "service",
      "facts": [
        {
          "content": "TypeScript MCP server with JSON persistence",
          "confidence": 0.92,
          "sources": 3,
          "firstSeen": 1708000000000,
          "lastConfirmed": 1708600000000,
          "status": "active"
        },
        {
          "content": "Uses MemoryData v5 schema",
          "confidence": 0.65,
          "sources": 1,
          "firstSeen": 1707000000000,
          "lastConfirmed": 1707000000000,
          "status": "superseded",
          "supersededBy": "Schema v7 with multi-dimensional tags",
          "supersededAt": 1708600000000
        }
      ],
      "lastSeen": 1708600000000,
      "accessCount": 42,
      "tags": { "project": "forkscout", "scope": "project" }
    }
  ],
  "relations": [
    {
      "from": "forkscout-memory-mcp",
      "to": "TypeScript",
      "type": "uses",
      "weight": 0.95,
      "evidenceCount": 5,
      "lastValidated": 1708600000000,
      "createdAt": 1707000000000
    }
  ],
  "exchanges": [
    {
      "id": "ex_1708600000000_a1b2",
      "user": "How does contradiction detection work?",
      "assistant": "Three strategies: negation patterns, number/version conflicts, and topic overlap divergence...",
      "timestamp": 1708600000000,
      "sessionId": "session_abc",
      "importance": 0.8,
      "tags": { "project": "forkscout" }
    }
  ],
  "activeTasks": [
    {
      "id": "task_1708600000000_x1y2",
      "title": "Implement tagging system",
      "goal": "Add multi-dimensional tags to entities and exchanges",
      "status": "completed",
      "startedAt": 1708600000000,
      "lastStepAt": 1708603600000,
      "priority": 0.8,
      "importance": 0.9
    }
  ],
  "workingMemorySessions": {
    "session_abc": [
      {
        "content": "Started migrating schema to v7",
        "event_type": "action",
        "timestamp": 1708600000000
      },
      {
        "content": "Found contradiction in port facts — resolved to 3211",
        "event_type": "observation",
        "timestamp": 1708600100000
      }
    ]
  }
}

架构迁移

服务器在启动时自动迁移:

  • v4 → v7:普通字符串事实→ 具有置信度、版本控制和标签的结构化事实
  • 版本5 → v7:添加事实状态(active/superseded),清洁 [SUPERSEDED] 文本前缀,添加标签
  • v6 → v7:添加 tags 对于实体和交易所,添加 workingMemorySessions

迁移是非破坏性的。所有数据均已保存。

实体类型(30)

核心: person · project · technology · preference · concept · file · service · organization · agent-self · other

认知: goal · task · plan · skill · problem · hypothesis · decision · constraint

经验: event · episode · outcome · failure · success

环境: resource · state · signal

关系类型(120+)

结构: uses · owns · works-on · prefers · knows · depends-on · created · related-to · part-of · manages · dislikes · learned · improved

有意: pursues · plans · executes · blocks · requires · prioritizes

时间/原因: causes · results-in · leads-to · precedes · follows

学习: observed · predicted · confirmed · contradicted · generalizes · derived-from

演出 succeeded-at · failed-at · improved-by · degraded-by

内存: remembers · forgets · updates · replaces

沟通: discusses · mentions · references · quotes · summarizes · clarifies · asks-about · answers

社会: collaborates-with · reports-to · reviews · approves · delegates-to · advises · teaches · learns-from

技术: implements · extends · overrides · calls · imports · exports · configures · deploys · monitors · tests · documents · generates · parses · validates · transforms

状态/生命周期: initializes · activates · deactivates · pauses · resumes · completes · fails · retries · cancels · schedules

空间/组织: contains · located-in · belongs-to · groups · categorizes · indexes · archives

比较: similar-to · different-from · better-than · worse-than · equivalent-to · alternative-to · complement-to

因果关系延伸: enables · prevents · triggers · mitigates · amplifies · constrains · supports · contradicts-with

认识论: believes · doubts · assumes · hypothesizes · verifies · refutes · questions · trusts

目标/动机: motivates · discourages · aligns-with · conflicts-with · depends-on-goal

______________________________________________________________________

协议

MCP结束 可流式传输的HTTP (无状态模式):

  • POST /mcp --JSON-RPC 2.0请求
  • 回复:SSE已包装(event: message\ndata: {json}\n\n)
  • 通知(否 id):HTTP 202 Accepted
  • 方法: initialize, tools/list, tools/call

没有持久连接。没有WebSocket。一个请求=一个响应。可轻松部署在任何反向代理或负载均衡器后面。

______________________________________________________________________

项目结构

forkscout-memory-mcp/
├── src/
│   ├── server.ts         # HTTP server, MCP transport, consolidation timer, graceful shutdown
│   ├── store.ts          # MemoryStore — CRUD, search, contradiction detection, consolidation, tag filtering
│   ├── tasks.ts          # TaskManager — active task tracking, auto-expiry, similarity detection
│   ├── tools.ts          # 9 MCP tool registrations with Zod schemas
│   ├── types.ts          # Type definitions (MemoryData v7, Entity, Fact, Relation, Exchange, etc.)
│   ├── embeddings.ts     # Xenova/all-MiniLM-L6-v2 embedding + BM25 hybrid search engine
│   ├── working-memory.ts # Session-scoped working memory (push/get/clear, last 25 events)
│   └── visualizer.ts     # Infinite canvas knowledge graph visualizer (SVG, radial layout)
├── Dockerfile            # Single-stage: oven/bun:1 (Debian) — runs TypeScript natively, no build step
├── docker-compose.yml    # Volume: memory-data → /data, network: forkscout_default
├── package.json
├── tsconfig.json
└── .dockerignore
Docker基础镜像: 用途 oven/bun:1 (Debian),而不是Alpine。Alpine因musl-libc与Xenova ONNX运行时不兼容而被删除。

______________________________________________________________________

为什么不直接使用矢量数据库?

矢量数据库(Pinecone、Chroma、Weaviate)非常适合文档检索。它们是代理记忆的错误工具。

功能矢量数据库forkspect内存mcp
存储单元文档块带元数据的结构化事实
置信度无-所有结果都相等每个事实0-1分,自动计算
矛盾处理无——新旧并存自动检测+替代
信念进化不可能具有替代链的完整历史
跨项目隔离仅命名空间智能作用域(项目+通用+无标记)
关系建模加权、类型化知识图(120多种类型)
自我身份不适用内置代理自我实体
工作内存不适用会话范围,在重新启动时持续存在
Exchange内存不适用使用混合搜索进行完整对话回忆
遗忘手动删除信心衰减+巩固
Visualizer需要外部工具在/visitor上内置无限画布
搜索仅矢量混合BM25+语义(本地,不需要API)
设置托管服务或繁重的基础设施单个JSON文件,零外部依赖
成本按查询定价或托管免费,在本地运行

正确的思维模式: 矢量数据库是一个库 (存储文档以供查找)。 forkspect记忆mcp是一个大脑 (保持信念,从纠正中学习,跟踪信心,记住对话,并在浏览器中可视化完整的知识图)。

______________________________________________________________________

语义三元组vs RDF vs Graph DB vs本项目

三重模型

关系知识的基本单位是 三倍: Subject → Predicate → Object

forkscout-memory-mcp  →  uses  →  TypeScript

在本项目中: { from: "forkscout-memory-mcp", type: "uses", to: "TypeScript" }

资源描述框架

RDF是使用URI和共享词汇表的三元组的正式标准。这个项目是三重的,但 不是RDF --没有SPARQL,没有本体层,没有URI要求。专为快速代理工作流设计的轻量级。

图形数据库

Graph DB(Neo4j、JanusGraph)存储针对大规模遍历查询优化的节点和边。这个项目使用了一个存储在JSON中的图形模型——不是一个大规模的图形引擎,而是一个简单的可移植性和零依赖性。

这个项目实际上是什么

forkspect内存mcp是一个 混合代理存储系统 分层在图形之上:

  1. 图形层 --实体+类型化关系(120+种类型)
  2. 信仰层 --具有可信度、时效性和来源计数的事实
  3. 修订层 --旧的信仰被取代而不是被删除
  4. 对话层 --通过混合搜索存储和搜索重要交易所
  5. 执行层 --活动任务在会话中存活
  6. 工作层 --短期会话上下文在重启过程中持续存在

并排

模型最佳知识单位最适合缺失与本项目
语义三元组Subject → Predicate → Object干净的关系语句没有信心,没有历史记录,没有任务/交换记忆
资源描述框架具有URI的标准化三元组互操作性、形式语义对于快速代理内存工作流来说过于僵化/繁重
图形数据库节点+边+遍历查询大规模图分析不模拟信念修正、置信度或交换
forkspect内存mcp图+事实+交换+任务持久代理内存+学习不是正式的RDF,也不是大规模的图引擎

一句话:这不仅仅是一个SPO图——它是SPO图加 信心、新近性、矛盾处理、纠正历史、对话记忆、工作记忆、任务跟踪和内置可视化工具.

______________________________________________________________________

许可证

麻省理工学院

目录标签

目录标签

TypeScriptClaude知识图谱AI代理记忆本地部署置信度评分矛盾检测MCP协议

支持客户端

Claude DesktopClaudeCursorVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP