mcpField
M
memex

memex

本地服务
github.com/STiFLeR7记忆与知识121 天前更新

关于 memex

memex 是面向软件工程 Agent 的开源 MCP 服务和钩子服务,将代码库变更整理为带时间与来源信息的工程上下文。它为 Claude Code 和 Codex 提供任务相关上下文,并在编辑依据失效时暂停编辑、要求修正。

主要功能

  1. 01构建代码库双时态知识图谱
  2. 02会话开始时提供工作上下文
  3. 03编辑前检查上下文是否仍有效
  4. 04恢复会话时提示变更文件
  5. 05为并行工作树提供独立视图
  6. 06对决策与问题进行记录和检索

适用场景

  1. 01让编码 Agent 获取当前代码库背景
  2. 02在代码变化后阻止依据过时的编辑
  3. 03查找模块、符号和架构决策
  4. 04识别文件变更可能影响的模块

MCP 相关

MCP 服务向客户端提供代码库上下文查询、影响预测、变更解释等工具,也支持记录决策和问题等写入工具,并暴露 MCP 资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"stifler7-memex": {
"command": "npx",
"args": [
"-y",
"stifler-memex-mcp"
],
"env": {
"NEO4J_URI": "<NEO4J_URI>",
"NEO4J_USER": "<NEO4J_USER>",
"NEO4J_PASSWORD": "<NEO4J_PASSWORD>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}
启动命令npx -y stifler-memex-mcp
需要配置的环境变量
NEO4J_URIBolt URI of your Neo4j instance
NEO4J_USERNeo4j username
NEO4J_PASSWORD密钥Neo4j password
GEMINI_API_KEY密钥Google Gemini API key for entity extraction

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmstifler-memex-mcp1.0.3
pypimemex-mcp1.0.3

工具

14

收录的工具列表 · 更新于 2 天前

参数类型必填说明
repostring否用于限定结果范围的可选仓库绝对路径。
scopestring否用于筛选概要的可选相对路径(例如,'src/auth')。
projectstring否用于限定结果范围的可选 project_id(可替代或补充 'repo' — 参见 `memex init --project-id`)。

详细介绍

memex:面向 Agent 软件工程的可信工程上下文

开源 MCP 服务和钩子服务,可在代码变更时持续更新 Claude Code 和 Codex 的工程上下文,并暂缓应用证据已发生变化的编辑。

memex.stifler.in

守护进程、钩子服务和 MCP 服务,可将提交和文件变更转化为结构化工程知识,并在保留时效性和来源信息的前提下将其提供给 Agent,而不会让 memex 成为个人记忆或原始会话状态的来源。

memex 会为你的代码库构建双时态知识图谱(模块、符号、决策、问题、证据和代码演变)。v1 还会接入 Claude Code 和 Codex:每个会话启动时都会获得恰当的上下文,每次编辑都会根据当前代码进行检查,并准确告知 Agent 发生了什么变化。

Website PyPI PyPI downloads npm npm downloads Claude Code marketplace memex MCP server GitHub stars Tests CodeQL OpenSSF Scorecard License: MIT

Memex on AI Agents Listing

memex 所在位置

网站memex.stifler.in
源代码github.com/STiFLeR7/memex
Python 包memex-mcp on PyPI
Node 包stifler-memex-mcp on npm
MCP Registryregistry.modelcontextprotocol.io,登记名称为 io.github.STiFLeR7/memex
Claude Code 插件STiFLeR7/claude-plugins
目录Glama · AI Agents Listing

评估记录见 BENCHMARK.md,版本历史见 CHANGELOG.md,问题报告流程见 SECURITY.md, 参与项目开发的方法见 CONTRIBUTING.md。

https://github.com/user-attachments/assets/b14e3185-ea36-4ae5-bd18-2d34e6bf7be4

60 秒了解 memex v1。如果播放器无法加载,下载视频。

实时上下文(v1)

编码 Agent 基于代码快照工作。队友推送代码,另一个 Agent 编辑文件,分支发生变化,而 Agent 仍继续依据之前读取的内容操作。v1 会在 Claude Code 和 Codex 中保持该快照最新:

时机memex 的作用
会话开始为任务提供有界工作集,并通过客户端自身的会话记录确认已交付
每次编辑之前检查编辑所依据的上下文是否仍然成立。如果不成立,则暂缓编辑,向 Agent 提供范围明确的更正,并由其修订
恢复会话时如果会话离开期间代码发生了变化,指出需要重新读取的文件
并行 Agent为每个关联的工作树提供独立视图,让并行工作的 Agent 各自看到自己的代码
试用memex v1 mode shadow 会记录需要更正的内容,但不做任何更改;钩子会在故障时放行;memex v1 rollback 会立即停止 memex
uv tool install memex-mcp          # installs the `memex` command
cd your-repo
memex v1 doctor                    # what is set up, what is missing, what to do next
memex v1 install claude            # hooks in .claude/settings.json; global settings untouched
memex v1 install codex --neo4j-uri bolt://localhost:7687   # optional, for Codex

memex 需要你已在运行的 Neo4j 5 服务(无需 Docker)。钩子只会写入检出目录自身的项目配置,memex 也绝不会索取或存储你的客户端凭据。完整指南、主机配置示例和回滚说明: docs/v1/25_ONBOARDING.md。

flowchart LR
    A[Your repository<br/>files + git] --> B[memex watcher<br/>tree-sitter + Gemini]
    B --> C[Neo4j graph<br/>bitemporal facts]
    C --> D[memex core<br/>ContextPacket selection]
    D --> H[Hook service<br/>session start · edit checks · resume notice]
    D --> E[Hermes MemoryProvider<br/>automatic read-only prefetch]
    D --> F[MCP tools<br/>explicit lookup]
    H --> G[Claude Code / Codex]
    E --> G
    F --> G

    style B fill:#cfe8ff,stroke:#0066cc,color:#000
    style C fill:#fff4cf,stroke:#cc9900,color:#000
    style H fill:#d4f5d4,stroke:#2d8f2d,color:#000

安装

通过 Claude Code marketplace
/plugin marketplace add STiFLeR7/claude-plugins
/plugin install memex-mcp@stifler-marketplace

重启 Claude Code 会话。

安装或升级后的首次启动会下载 memex 的 Python 依赖项(约 40 秒),可能会超过 Claude Code 的 MCP 连接超时时间。请先预热,再重启:

npx -y stifler-memex-mcp --help     # one-time download; later starts take a few seconds

如果 Claude Code 仍显示连接超时,请打开 /mcp 并重新连接 memex。如果工具提示 memex 无法连接 Neo4j,请启动 Neo4j(例如 docker start memex-neo4j);工具无需重启即可恢复。

手动安装
docker compose -f docker/docker-compose.yml up -d
cat > .env <<EOF
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=memex-local
GEMINI_API_KEY=your-key-here
EOF
npx stifler-memex-mcp init --repo .
npx stifler-memex-mcp watch --repo .
npx stifler-memex-mcp serve --repo .
Hermes 集成

Hermes 集成为只读模式。Hermes 会保留个人记忆、原始会话状态和执行状态。memex 通过有界的 ContextPacket 提供代码库工程上下文;它不会导入 Hermes 的 state.db、转录内容、提示词或工具结果。

将 memex 提供方添加到 Hermes 的配置文件中:

memory:
  provider: memex
plugins:
  memex:
    repo_path: /absolute/path/to/repository
    prefetch_timeout_seconds: 7
    max_items: 8
    max_chars: 12000

如果尚未安装 Hermes,请通过 MCP get_engineering_context 工具使用相同的上下文选择器。这两种方式共用与协议无关的 memex 核心,并在检索不可用时放行。

渠道命令
Claude Code marketplace/plugin install memex-mcp@stifler-marketplace
npx(无需安装)npx stifler-memex-mcp <cmd>
uvuv add memex-mcp
pippip install memex-mcp
源码git clone github.com/STiFLeR7/memex && uv sync
团队自托管部署

适用于共享团队环境(一个 Neo4j + 一个 memex-server,默认启用身份验证,Neo4j 的端口绝不暴露给主机):

bash docker/bootstrap-team-env.sh
docker compose -f docker/docker-compose.team.yml up -d

完整流程、初始管理员密钥的保存方法,以及需要避免的 down -v 陷阱,请参阅 docker/TEAM-DEPLOY.md。

概览

属性值
输出持续从你的代码仓库填充的 Neo4j 图
存储通过 Graphiti 使用 Neo4j。双时态:每条边都有 created_at 和可选的 expired_at
上下文有界、经过排序且感知来源的 ContextPacket
实时上下文(v1)会话启动工作集、带作用域修正的编辑检查、恢复时的变更通知、按工作树划分的视图(Claude Code 和 Codex hooks)
集成Hermes MemoryProvider、MCP 资源/工具、Claude Code、Cursor、Codex、Gemini CLI
故障模式失败时放行;即使没有 memex,Agent 仍会继续执行
粒度通过分层 Leiden 聚类,可从 50 个模块扩展到 5000+ 个模块
综合Gemini Flash 将提交内容提炼为 Decision 节点;基于依据的综合使用 Pro
置信度在查询时计算。双区间衰减(已验证半衰期约为 139 天,未验证内容在 30 天后过时)
写入治理按节点类型设置 ACL、Agent 写入时进行意图确认、明确的 corroborates / supersedes 语义
Goal 10 证据8/8 次有效配对运行,处理组失败数为 0,处理组回归数为 0

生命周期

flowchart TD
    Init[memex init<br/>extract baseline] --> Watch[memex watch<br/>daemon + git hooks]
    Watch -->|commit| Extract[tree-sitter extract<br/>symbols, imports, lockfile]
    Extract --> Synth[Gemini Flash<br/>diff → Decision nodes]
    Synth --> Write[Graphiti add_episode<br/>+ post-hoc bitemporal SET]
    Write --> Decay[Scheduler<br/>nightly confidence decay]
    Decay -->|stale edges| Archive[expired_at = now]

    Serve[memex serve<br/>MCP stdio/HTTP] -.->|reads| Write
    Agent[AI agent] -->|14 MCP tools| Serve
    Serve -->|record_decision / record_problem| Write

    Cluster[memex cluster<br/>Leiden over hybrid edges] -.->|every N commits| Write

    style Init fill:#e8f4ff,color:#000
    style Watch fill:#fff4cf,color:#000
    style Synth fill:#ffe0cc,color:#000
    style Serve fill:#d4f5d4,color:#000

MCP 工具

共 14 个工具:8 个读取、4 个写入、2 个分析。

读取
工具使用时机
get_project_context会话开始时。无论代码仓库大小如何,均返回少于 1500 个 token 的集群级简报
get_symbol_context编辑函数或类之前。返回调用方、被调用方和关联的决策
get_recent_decisions最近 N 天的架构决策,可按模块限定范围
get_open_problems按严重程度排序的活跃 bug 和技术债
search_context混合搜索:语义 × 关键词 × 图遍历 × RRF 合并
get_stale_context复合置信度低于阈值的边
explain_change给定提交 SHA,将差异与关联的 Decision/Problem 节点进行交叉引用,并请求 Gemini Pro 提供基于依据的解释
predict_impact给定文件路径,根据图耦合度返回可能受影响模块的排序列表(不调用 LLM)
写入
工具使用时机
record_decision做出技术选择后。支持 corroborates(强化)和 supersedes(替代)
record_problem发现 bug 或技术债时
resolve_problem已跟踪的问题修复后
invalidate_edge存储的事实不再成立时

双时态置信度

置信度不是一个会发生变化的存储数值。它会在查询时根据 base_confidence、验证状态、自上次强化以来的时间以及访问次数计算。

flowchart LR
    Edge[Edge created<br/>base_confidence] --> Q{Validated by<br/>a human?}
    Q -->|yes| Slow[Slow regime<br/>half-life ~139d]
    Q -->|no| Fast[Fast regime<br/>stale at exactly 30d]
    Slow --> Score[Composite score<br/>conf × recency × rehearsal]
    Fast --> Score
    Score -->|below floor| Stale[get_stale_context surfaces it]
    Score -->|access| Bump[last_reinforced_at updated]
    Bump --> Score

    style Slow fill:#d4f5d4,color:#000
    style Fast fill:#ffd4d4,color:#000
属性值
已验证半衰期约 139 天
未验证内容的过时阈值30 天(复合值 < 0.3)
时效性 τ90 天(指数衰减)
复合公式conf × recency × (1 + rehearsal_w × log(1 + access_count))
冲突相似度阈值0.4(低于此值且有效期重叠时视为冲突)
意图确认阈值0.85(MCP 写入相似度检查)

分层集群

memex cluster 对混合边图运行分层 Leiden:

边类型权重
目录共置1.0
模块导入2.0
符号调用log(1 + calls)
属性值
算法使用固定种子的 graspologic.partition.hierarchical_leiden
命名对模块文档字符串和符号名称进行 TF-IDF 排序取前 3 项;无法命名时回退到父目录
ID 固定跨次运行时 Jaccard ≥ 0.5(即使重命名,集群名称也保持稳定)
用户覆盖.memex/clusters.yaml,可锁定任意分配
上下文预算无论代码仓库有 50 个还是 5000 个模块,get_project_context 始终少于 1500 个 token

衡量你的节省

memex 会在本地 SQLite 数据库(~/.config/memex/telemetry.db)中跟踪 Token 减少指标和人工审核操作。

你可以随时使用 CLI 查询节省情况:

memex stats

也可以查看原始 JSON 负载:

memex stats --json

也可以指定特定的代码仓库范围:

memex stats --repo /path/to/repo

这会返回以下内容的汇总:

  • 周期摘要:today、last 7 days、last 30 days 和 lifetime 的调用次数、返回的 Token 数、朴素 Token 数(所请求文件的大小)、节省的 Token 数以及 Token 减少百分比。
  • 热门工具:按节省的 Token 总数排序的最有价值工具。
  • Agent 客户端:活跃的 Agent(Claude Code、Gemini CLI、Cursor、Codex)及其 Token 节省分布。
  • 验证健康度:已验证、未验证和相互印证的节点总数,以及距离上次审核经过的天数。

同样的统计信息也可通过 HTTP MCP 传输方式获取:

GET /stats?repo=/path/to/repo
Authorization: Bearer <your-key>

连接你的 Agent

Claude Code

通过上方的 Marketplace 安装即可完成配置。手动配置请编辑 .claude/settings.json:

{
  "mcpServers": {
    "memex": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
    }
  }
}
Cursor

添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "memex": {
      "command": "npx",
      "args": ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
    }
  }
}
Gemini CLI

添加到 ~/.gemini/settings.json:

{
  "mcpServers": {
    "memex": {
      "command": "npx",
      "args": ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
    }
  }
}
Codex

添加到 ~/.codex/config.toml:

[mcp_servers.memex]
command = "npx"
args = ["-y", "stifler-memex-mcp", "serve", "--repo", "."]
Anthropic memory tool (memory_20250818)

memex 可以为 Claude 的原生记忆工具提供支持:Agent 从按会话生成的图谱投影和可写的临时区域中读取内容。

memex memory-tool serve --repo .                     # in-process
memex memory-tool serve --repo . --transport http    # FastAPI on :7464
from memex.memory_tool import MemexAsyncMemoryTool
memory_tool = MemexAsyncMemoryTool(repo_root=".")
client.beta.messages.run_tools(..., tools=[memory_tool])

运作原则

#原则核心思路
1双时态,绝不销毁边会过期,而不会被删除。WHERE r.expired_at IS NULL 用于筛选当前状态
2置信度通过计算得出,而非存储修改数值容易造成无声偏移。每次读取时都重新计算
3两种衰减机制已验证事实缓慢衰减;未验证事实必须通过访问来证明其价值
4人类参与决策memex review 会将置信度最低的 Decision 节点加入队列,供人工明确验证
5写入治理按节点类型设置 ACL。Decision.policy = open,Module.policy = locked。写入相似内容时确认意图
6Token 设有预算通过 Leiden 聚类,get_project_context 在任何代码仓库规模下都控制在 1500 个 Token 以内
7仅在提交时进行综合监视器按防抖窗口批量处理。工具调用的热路径上不会调用 Gemini Flash
8综合使用 Pro,提取使用 Flashexplain_change 使用 Pro,因为依据来源很重要。其他所有操作都使用 Flash
9支持多代码仓库一个监视器和一个 MCP 服务即可管理数百个代码仓库。使用 --repo 切换范围
10本地优先Neo4j 在你的 Docker 中运行。唯一的外部调用是 Gemini,而且仅在提交时进行

何时使用 memex

适用场景不适用场景
持续数周或数月的项目一次性脚本、用完即弃的原型
你会在多个 Agent(Claude、Cursor、Codex)间协作,并希望共享上下文你只会在一项任务中与一个 Agent 搭档
架构决策会随时间逐渐形成,需要记录下来整个项目都能放进一个 200k Token 的上下文窗口
你希望能在任何会话中查询“我们对 X 做了什么决定”你的代码仓库已经足够小,可以直接粘贴到提示词中
多名开发者在同一代码库上使用 AI Agent你独自工作,且从不使用 /clear

项目结构

memex/
├── memex/
│   ├── extractor/        tree-sitter + lockfile parsers
│   ├── graph/            Neo4j writes, confidence, archive, cluster engine
│   ├── synthesizer/      Gemini Flash → Decision nodes
│   ├── mcp_server/       14 MCP tools (read + write + analytic)
│   ├── memory_tool/      Anthropic memory_20250818 adapter
│   ├── watcher/          daemon + git hooks
│   └── cli.py            init / watch / serve / review / graph / cluster
├── tests/                unit, integration, and objective evaluation suites
├── docker/               Neo4j compose
├── npm/                  npx wrapper (publishes as stifler-memex-mcp)
└── Dockerfile            introspection-only image for MCP directory sandboxes

命令

命令功能
memex init提取基线图状态,运行首次聚类
memex watch监听文件和 git 事件并写入 Neo4j 的守护进程
memex serve运行 MCP 服务(stdio、HTTP 或两者)
memex review遍历置信度最低的决策,供人工验证的 TUI
memex graph --output graph.html带有聚类叠加层的独立 D3 力导向布局
memex cluster [--rerun] [--dry-run]在混合边图上运行 Leiden;按 Jaccard ≥ 0.5 固定聚类 ID
memex memory-tool serve使用图投影支持 Anthropic 的 memory_20250818 工具
memex stats [--json] [--repo <path>]显示上下文令牌节省量和遥测统计信息

许可证

MIT。请参阅 LICENSE。

作者

Hill Patel (@STiFLeR7)

核心贡献者与维护者

  • Hill Patel (@STiFLeR7),架构师与维护者
  • Nirvaan Lagishetty (@Nirvaan05),主要贡献者与维护者

贡献

请提交 issue 或 PR。uv sync --all-extras 会安装开发工具链。 在提交 PR 前,运行 uv run pytest -m "not integration" 执行离线测试套件,并运行 uv run ruff check .。版本升级时,必须同时更新 pyproject.toml、 npm/package.json、server.json 和团队 Docker 镜像标签。

发布历史见 CHANGELOG.md。v1 设计与评估记录位于 docs/v1/,v0.9 架构位于 docs/architecture/v0.9/。

Vannevar Bush,1945 年:“设想一种供个人使用的未来设备,它有点像机械化的私人档案和图书馆。它需要一个名字;随便造一个,叫 memex 就行。”

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。