
Anamnesis
io.github.oscardvs由 GitHub 账号 oscardvs 发布v0.1.3更新于 Oct 24, 2026
Cross-machine, file-first memory for Claude Code: markdown + SQLite FTS5, synced with git
概览
面向 Claude Code 的本地优先记忆层:以 markdown 保存项目笔记,用 SQLite FTS5 建立本地索引,并通过 git 在你自己的多台机器间同步。
- 可以做什么
- 搜索、列出记忆笔记并查看记忆库状态(只读工具)。写入新笔记并触发 markdown 记忆库同步。通过 SessionStart、SessionEnd 和 PreCompact 钩子自动捕获会话摘要。可选地用兼容 OpenAI 的模型把会话笔记提炼为长期笔记,并在评测集把关下合并近似重复项。在独立的本地网页面板中浏览、编辑和查看笔记历史。
- 适用场景
- 当你在多台机器上使用 Claude Code,希望项目约定、架构决策和过往会话笔记随之同步,又不想依赖云账号时使用。适合偏好受版本控制的纯 markdown 文件、而非托管记忆服务的人。
- 运行要求
- 需用 uv 从 PyPI 包 anamnesis-memory 安装本地进程,并具备 Claude Code 与 git。跨机器同步需要一个你掌控的 git 远程仓库(例如经 Tailscale 网络);仅本地模式无需远程。可选反思功能需在配置中指定兼容 OpenAI 的模型。面板需要 Node 20 或更高版本。
安装
在 SourceWeft 中
- 打开 控制台中的 Anamnesis,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
ἀνάμνησις (anamnesis): Greek for recollection, the act of calling knowledge back to mind.
Anamnesis is a local-first, file-based memory layer for Claude Code that syncs across your own machines. What Claude learns about your projects (conventions, architecture decisions, fixes that worked, what you did yesterday) is stored as plain markdown, indexed locally for search, and kept in sync over your private network.
Claude Code's own memory stays on the machine where it was written. Copying a SQLite index through a cloud folder such as Dropbox or iCloud corrupts it. Anamnesis syncs the markdown with git instead and rebuilds the index on each machine, so a note written on your desktop is searchable from your laptop.
No cloud account is required. The memory stays on your machines, version-controlled and human-readable.
How it works
- Files first. Each note is a markdown file under
~/.anamnesis/memory/, readable andgit diff-able. The markdown is the source of truth; everything else is derived from it. - A local index. A SQLite FTS5 index gives keyword (BM25) recall. It is rebuilt locally and is not synced. On the project's eval set, keyword search reaches about 94% recall, so there is no vector store until measurements call for one.
- Sync over git. The markdown is a git repo synced over your private Tailscale mesh, or any git remote you control. Only the markdown travels; each machine rebuilds its own index, so the database file is not copied between machines. If two machines edit the same note, sync reports a git conflict instead of dropping either side.
- Claude Code integration. An MCP server exposes read-only query tools, and session hooks do the rest: SessionStart injects the relevant notes, and SessionEnd captures a summary of the session and syncs it.
- Reflection and merge. An optional reflection pass (any OpenAI-compatible model, set in config)
distills session notes into durable notes, and
anamnesis mergeconsolidates near-duplicates. Generated notes carry provenance and confidence in their front-matter.merge --applyis gated on your eval set so it does not lower recall, andanamnesis evalmeasures reflection before and after on a sandbox copy. - A dashboard. A web GUI to browse, search, edit, and read the history of your memory across every machine.
Quickstart
Prereqs: Claude Code, uv, and git.
anamnesis init registers the MCP server with Claude Code at user scope, installs the SessionStart,
SessionEnd, and PreCompact hooks, configures the store at ~/.anamnesis, and runs a first sync. It is
idempotent: it backs up settings.json and does not duplicate hooks. --print shows the full plan without
writing anything, and --local-only skips the remote until you want one.
Claude Code gets five tools: memory_search, memory_list, and memory_status (read-only, safe to
auto-approve), plus memory_write and memory_sync. Full reference:
CLI ·
MCP tools ·
configuration.
Developing from source instead
The repo also ships a project-scoped .mcp.json. Claude Code launches MCP servers with a filtered
environment, so ANAMNESIS_HOME / ANAMNESIS_MACHINE_ID / ANAMNESIS_GIT_REMOTE belong in its "env"
block, not your shell. Server internals: server/README.md.
Cross-machine sync
Memory is a git repo (~/.anamnesis/memory/) synced over your private
Tailscale mesh, or any git remote you control. Set it up once:
-
Put every machine on the same tailnet (install Tailscale,
tailscale up). Pick one always-on machine to host the shared repo;tailscale statusprints its MagicDNS name (for examplehost.your-tailnet.ts.net). -
Create one shared bare repo on the host:
-
Point each machine at it:
The host itself uses the local path:
--remote "$HOME/anamnesis-memory.git".
Sync runs commit -> pull --rebase -> push and rebuilds the local index after pulling, so a note written on
one machine is searchable on the others within a sync cycle. If you started with --local-only, re-run
init --remote ... later; the store attaches to the remote and pushes its history.
Hooks
anamnesis init installs three Claude Code hooks:
- SessionStart injects the most relevant notes for the current project (your global preferences, the project's durable notes, and a couple of recent session summaries) and starts a background sync.
- SessionEnd captures an episodic note from the session transcript and syncs it, so it is on your other machines by the next session. PreCompact captures the same kind of note before context compaction.
Two more commands build on them:
- Reflection (optional). Point
anamnesis config set reflection.provider ...at an OpenAI-compatible model andanamnesis reflectdistills accumulated session notes into durable conventions. Withreflection.autoset, it runs at session end once a project has enough unreflected notes.anamnesis mergeconsolidates near-duplicates and only applies if recall on your eval set holds. - Import.
anamnesis importcopies Claude Code's own per-project memory into the store, so notes you already wrote for it are included.
To set the hooks up by hand instead of with init, copy
examples/hooks.settings.json into ~/.claude/settings.json and point it
at your install.
Benchmark
bench/cross-machine-tokens/ runs one scripted task on a fresh machine
twice: once without Anamnesis, where the agent explores the project to learn its conventions, and once with
the real SessionStart memory block injected. It drives the Claude Code CLI headlessly on a synthetic project,
so a Pro/Max subscription is enough and no API key is needed.
The committed result.json (3 runs per arm on claude-opus-4-8) shows about 8% fewer total input tokens
with memory, 366k versus 336k on average, with output tokens and turn count about the same. The conventions
were known from the first turn instead of being rediscovered. An earlier version of the scenario used a
5-file project and showed no difference; that null result is documented in the same README.
Dashboard
A web GUI for the memory store: browse and full-text search every note, edit markdown with per-note history, see every machine (which one wrote what and when it last synced), and run reflection from the browser. Provenance badges show where each note came from: you, a session capture, reflection, or import.
[The Anamnesis dashboard showing a synced cross-machine memory store]
or, from the CLI you already have:
Needs Node 20 or newer. From a repo clone, cd dashboard && npm run dev works for development.
It is a thin read/write client over the same local store the MCP server uses: it reads the SQLite index
directly and shells out to the anamnesis CLI for writes and sync. Use --port, --store, and
--no-open to adjust how it serves. See dashboard/README.md for configuration
and design notes.
Status
September 2026: v0.1.3 is on PyPI. The local-first core is done and has been used across a real multi-machine setup: the store, the MCP server, the hooks, git sync, the one-command install, the reflection and merge passes with their eval harness, and the dashboard. APIs may still change between releases.
Next: a hosted relay for people without their own mesh (the server already ships anamnesis relay commands
behind a [relay] extra, but they are not documented yet) and team memory.
Repository layout
Contributing
Issues and discussion are welcome. If the install is rough on your machine, open an issue with the exact command you ran and its output.
License
Apache License 2.0. See NOTICE.
来源:README.md,提交 65efe41
工具
0版本历史
1- v0.1.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
