Context7
Up-to-date docs for AI agents
作者提供的说明(英文原文)
Git for AI memory — version-controlled, searchable context that persists across sessions
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"memgit": {
"command": "npx",
"args": [
"-y",
"memgit-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add memgit -- npx -y memgit-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"memgit": {
"command": "npx",
"args": [
"-y",
"memgit-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"memgit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"memgit-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过域名 memgit.dev 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.13.0)于30天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js, Python (uv)。
同一分类中有:Context7, Codebase Memory, Exa
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Your AI assistants forget everything when the session ends. memgit fixes that.
Version-controlled, cross-AI context that persists, diffs, rolls back, and syncs like code. Switch from Claude to Cursor to ChatGPT mid-project — your context is already there.
You've probably already tried both. Here's why they hit a ceiling:
| Capability | claude.md | mem-search plugin | memgit |
|---|---|---|---|
| Loads only relevant context | ❌ loads everything | ⚠️ loads recent observations | ✅ BM25 search — top-k per query |
| Project-aware across a multi-repo life | ❌ per-file | ❌ | ✅ memories carry a project; the current workspace ranks first |
| Adopt on an existing codebase | ❌ starts blank | ❌ starts blank | ✅ memgit onboard — seed the store from the repo in one pass |
| Version history | ❌ | ❌ | ✅ full commit log |
| Diff between sessions | ❌ | ❌ | ✅ memgit diff |
| Roll back a wrong memory | ❌ manual edit | ❌ | ✅ memgit rollback |
| Works in Cursor, Windsurf, GPT | ❌ Claude only | ❌ Claude only | ✅ all via MCP / HTTP |
| Team sync | ❌ copy-paste files | ❌ | ✅ memgit git push |
| Scales to 10k+ sessions | ❌ file grows | ❌ search slows | ✅ memgit squash |
| Measurable token savings | ❌ | ❌ | ✅ memgit stats |
| Export / import standard format | ❌ | ❌ | ✅ TOON + git |
Run this on your own store to see the actual numbers (measured where possible; estimates labeled):
$ memgit stats
Total memories: 108 (41 feedback · 23 user · 19 project · 12 reference · 8 convention · 5 lesson) Priority: 3 critical · 67 medium · 38 low
Context footprint (measured where possible; estimates labeled)
Surface Tokens Full store (every memory as context) 12,840 Resume digest (measured render) 540 Recall block (estimate: top-3 rules ≈ chars/4) ~60
per-session injected ≈ 600 tokens (estimate) vs 12,840 tokens if the full store were loaded
Why such a big difference? claude.md loads *all* context every session. memgit injects a bounded resume digest plus BM25-matched recall — *only what is relevant to this session*, not everything you've ever recorded. The digest is measured by actually rendering it, and the store total is the real corpus size; nothing here is a simulated benchmark.
memgit's data model maps exactly to git:
| memgit | git |
|---|---|
mnemonic | file |
MindState | tree |
checkpoint | commit |
thread | branch |
memgit commit | git commit |
memgit diff | git diff |
memgit log | git log |
memgit squash --keep-last 100 | git rebase -i --autosquash |
memgit git push | git push |
This is not metaphorical — memgit uses a content-addressed object store (SHA-256 blobs) identical to git's architecture. Every memory has a stable SHA. Identical content has identical SHAs. Old state is always recoverable.
Every memory is a readable .toon file under memories/. Push your entire memory set to GitHub with standard git:
memgit git init --remote git@github.com:yourteam/ai-memory.git
memgit git push
Teammates pull and start with your AI's learned rules from session 1:
git clone git@github.com:yourteam/ai-memory.git ~/.claude/memgit-store
memgit setup all
You can grep, git blame, and git diff your memories just like code:
grep -rl "database" ~/.claude/memgit-store/memories/
git log --follow memories/no-db-mock.toon git diff HEAD~7 memories/
Mac / Linux:
pip install memgit
Mac (Homebrew):
brew tap code4161/tap && brew install memgit
Windows:
choco install memgit
pip install memgit
(The Chocolatey package is live on community.chocolatey.org; newly pushed versions can take a few days to clear moderation — `pip install memgit` always has the latest.)
Any AI tool config (no Python needed — npx auto-installs on first run):
{ "mcpServers": { "memgit": { "command": "npx", "args": ["-y", "memgit-mcp"] } } }
# 1. Install and initialize
pip install memgit memgit init # auto-detects the best location, finds your existing
memgit setup
memgit stats
init walks you through it — no paths to hunt down. (Importing later is one command with no arguments: memgit sync auto-finds ~/.claude/projects/*/memory.)
Restart your AI tool — it now searches your memory store at the start of every session.
Memory tools have a cold-start problem: install one halfway through a project and it knows *nothing* — there's no initial point, and context only trickles in from future sessions. memgit solves this with a one-time seeding pass:
cd your-project
memgit onboard # mines the repo, prints the bootstrap brief
onboard first extracts a repo digest deterministically — git history (recent commit subjects, hot files/directories by churn, authors, branch, tags), detected stack from manifests, and the docs worth reading — using bounded, read-only probes that stay near-instant even on huge repositories. The brief then tells your AI agent exactly what to do with it: read only the listed files (no tree crawling), extract 10–20 durable facts (purpose, architecture, conventions, current state, gotchas), save each as a typed memory, and checkpoint the seed set. Paste it into a session — or don't: if the AI searches memory in a project that has none, the MCP server itself replies with the bootstrap instructions instead of a bare "no results."
Memories are project-scoped, filter-by-default (v0.7.0): each carries the workspace it belongs to, and searches, recall injections, and the resume digest (recent memories, checkpoints, depth hints) are filtered to the current project's family plus explicitly-global memories — another project's content never leaks in. Widen deliberately with memgit search --all-projects / all_projects: true (every hit then carries its project label), or hard-filter one project with --project. A memory with no project is explicitly global (applies everywhere): save one with memgit add --global or project: "". A save whose project *cannot be determined* is never silently global — it's quarantined under _unknown (visible in list as [?project], flagged by lint, surfaced nowhere) until you relabel it with memgit doctor --relabel.
Ask an AI "can we proceed on the pending tasks?" in a fresh session and it will guess from whatever file happens to be open. memgit resume replaces the guess with the record:
memgit resume # last checkpoints, work in flight, recent + critical memories
memgit resume --plain # plain text, for piping into an AI context memgit resume --json # for tooling
Wire it into Claude Code so memory becomes automatic — no tool call, no judgment required:
memgit setup hooks # installs all six hooks (~/.claude/settings.json)
| Hook | What it enforces |
|---|---|
SessionStart | every session opens with the resume digest in context — status board, checkpoints, critical rules, memory index |
UserPromptSubmit | each prompt is BM25-matched against the store; relevant memories are injected, ending with a "+N more on ' '" depth hint when more exists (silent when nothing clears the relevance bar; never repeats within a session) — --no-recall to skip |
PreToolUse | a Bash or file-write call that matches a memory's triggers is refused with the rule as the reason (priority-3 feedback and conventions) or gets the rule as context (the rest). memgit allow SLUG opens a short override window. Trigger cache only, --no-gate to skip |
PostToolUse | reading a file whose path matches a memory tag surfaces a one-line hint ("6 memories tagged 'x' relate to this path") — tagmap cache only, capped 3/session, --no-ctx-recall to skip |
Stop (guard) | a governed call that went through without the gate, or a session that did real work but saved nothing, gets ONE block before finishing. --no-guard to skip |
Stop (sync) | markdown memories are checkpointed asynchronously at session end |
Why hooks and not just good tool descriptions? We measured it: across 166 real sessions, hook-injected context was delivered in 100% of them while voluntary memory-tool calls happened in 6%. What a hook enforces happens.
The resume digest is deliberately bounded (~350 tokens measured on a 500-memory store): rules are clipped, the critical list is capped, and full text is one get_memory call away.
After months of use, your checkpoint history grows. Squash compresses it, gc reclaims the disk:
memgit squash --keep-last 100 # keep last 100 checkpoints, squash everything older
memgit squash --older-than 30 # squash everything older than 30 days memgit squash --dry-run # preview first
memgit gc # delete unreachable objects, trim reflogs memgit gc --dry-run # preview memgit gc --squash-keep 200 # compact history, then sweep
The current memory state is always preserved — and squash is lossless-in-substance: every collapsed checkpoint leaves a one-line record (time, author, diff, message) in an append-only archive under .memgit/logs/archive/ that gc never touches. Benchmark on a 2,000-checkpoint store: 94% smaller (39.5 MB → 2.2 MB), fsck clean. History operations stay O(1) as the chain grows (SHA resolution and checkpoint counting measured at ~0.08 ms at 2,000 checkpoints).
All writes go through a git-style store lock (0.08 ms overhead), so concurrent agents can't corrupt the store or lose each other's updates. Two patterns:
Shared thread — agents write concurrently; if one commits while another has work staged, the second commit auto-merges (three-way, against the recorded base) instead of clobbering. Set MEMGIT_AUTHOR=agent-name so each checkpoint says who did it.
Thread per agent — isolate, then integrate:
memgit thread create agent-1 # branch off for each agent
memgit merge agent-1 # three-way merge back (common-ancestor based)
Conflicts (same memory changed on both sides) resolve to the newest version; an edit always beats a delete. Both histories are preserved.
Once registered via MCP, every AI tool gets 6 tools:
| Tool | When the AI uses it |
|---|---|
resume_session | When the request depends on prior state — "continue", "the pending tasks", session start |
search_memories | Before answering anything that touches past work or preferences |
get_memory | When it needs full details of a specific memory |
list_memories | To browse or audit what's stored |
save_memory | When it learns something worth keeping for next time |
get_checkpoint_log | To check when memories were last synced |
The tool descriptions teach the AI judgment — "does this request depend on state you don't have in context?" — rather than keyword triggers. Measu
只显示了开头部分;其余内容请在仓库中阅读