SwarmVault 是一个本地优先的 LLM Wiki、知识图谱构建器和 RAG 知识库,同时可作为 AI 智能体的记忆存储。它基于 Andrej Karpathy 提出的 LLM Wiki 模式构建,被定位为个人知识管理、AI 第二大脑以及 Claude Code / Codex / OpenClaw 的持久记忆工具的 Obsidian 替代方案。它可以把文档、代码、转录文本、笔记和 URL 转换成持久的 Markdown 维基,并生成一个本地知识图谱,供用户查看、查询并交给智能体使用。
三层架构
SwarmVault 采用遵循 Karpathy 所述模式的三层结构:
- 原始来源(raw/):经过人工整理的源文档集合,包括书籍、文章、论文、转录文本、代码、图片、数据集等。这些内容是不可变的,SwarmVault 只读取而不会修改。
- 维基(wiki/):由 LLM 生成和人工编写的 Markdown,包含来源摘要、实体页面、概念页面、交叉引用、仪表盘和各类输出。维基是持久且不断累积的产物。
- 模式(swarmvault.schema.md):定义维基的结构方式、遵循的约定以及领域中重要的内容,由用户与 LLM 共同演进。
主要能力
- 首次编译后,磁盘上会生成:raw/(来源的不可变副本)、wiki/(生成的 Markdown 页面、保存输出、图谱报告、上下文包和任务笔记)、state/graph.json(机器可读知识图谱)、state/retrieval/(本地搜索索引),以及 wiki/graph/ 下的可复制和可视化首次运行摘要(share-card.md、share-card.svg、share-kit/)。
- 混合检索:合并 SQLite 全文搜索与语义嵌入,使查询无需把每个页面都塞入上下文。可用 compile --max-tokens 裁剪输出以适应有界窗口。
- 图谱导航:提供 graph query、graph path、graph explain、graph callers 等命令,让用户通过遍历而非单纯搜索来使用知识。
- 针对幻觉与矛盾的应对:每条边都会标记为 extracted(抽取)、inferred(推断)或 ambiguous(模糊);矛盾检测会标记冲突性断言;compile --approve 会把所有改动暂存到可审查的审批包;新概念先进入 wiki/candidates/;lint --conflicts 可随时审计矛盾。
- 团队可用性:支持 Git 工作流(--commit)、带 git 钩子的监听模式、定时自动化,以及 MCP 服务器。
- 本地离线:内置启发式提供者完全离线,无需 API 密钥。
使用方式
- 桌面应用(无需 Node.js):可从 GitHub Releases 下载 macOS、Windows 或 Linux 版本,捆绑自带运行时。
- SwarmVault 要求 Node >=24,需要验证安装并更新到最新发布版本。全局 CLI 已包含图谱查看器工作流和 MCP 服务器流程,最终用户无需单独安装 @swarmvaultai/viewer。
- 快速开始:在空文件夹或临时文件夹中运行 quickstart,它会初始化 vault、摄入本地文件/目录或公共 GitHub 仓库、编译维基与图谱、写出分享产物并打开图谱查看器。它是 swarmvault scan . 的初学者友好别名。可传 --no-serve 或 --no-viz 跳过查看器。交互运行时会在 stderr 显示有界摄入进度(含当前文件)。
- 若想把生成产物放在源树之外,可用 SWARMVAULT_OUT=.swarmvault-out;swarmvault.config.json 和 swarmvault.schema.md 保留在项目根目录,raw/、wiki/、state/、agent/、inbox/ 在输出目录下解析。
- swarmvault next 是只读命令,会提示应初始化、摄入、编译、查询、审查还是刷新。
- 最小启动器:swarmvault init --lite 只创建 raw/、wiki/、wiki/index.md、wiki/log.md 和 swarmvault.schema.md,无配置、无状态、不安装 agent。
- 常规 init、quickstart、scan、clone 默认不写智能体规则文件;需要项目本地智能体指令时运行 swarmvault install --agent <agent>。
- vault 位于 git 仓库内时,ingest、compile 和 query 支持 --commit。
- 媒体工作流:swarmvault ingest ./customer-call.mp3、ingest YouTube 链接、ingest --video 视频链接,在具备所需提供者或辅助二进制时可用。
- 管理来源流程:source add 注册来源、同步进 vault、编译一次,并在 wiki/outputs/source-briefs/ 下写出来源范围简报;加 --guide 可得到可恢复的引导会话;支持周期性本地文件、目录、公共仓库和文档中心。source add、source list、source reload --all、source session 等命令用于保持同一仓库/文件夹/文档中心长期注册和可刷新。
模型与嵌入提供者
- 无需 API 密钥:内置启发式提供者支持本地/离线 vault 初始化、摄入、编译、图谱/报告/搜索工作流,以及轻量 query 或 lint 默认值。只用启发式提供者运行 compile/query 时会提示配置模型,可设 SWARMVAULT_NO_NOTICES=1 静默。
- 推荐本地 LLM:Ollama + Gemma,可完全本地运行且无需 API 密钥。
- 本地语义嵌入:使用支持嵌入的本地后端(如 Ollama)替代 heuristic;tasks.embeddingProvider 可显式选择该后端,也可回退到支持嵌入的 queryProvider;设 retrieval.rerank: true 可让 queryProvider 对合并后的顶部命中重排序。
- 云 API 提供者:可添加 provider 配置块,也支持用 CLI 管理 provider 路由;命令会保留未知字段并通过 apiKeyEnv 存储密钥引用,不接受字面 API 密钥值。
- 语音优先捕获(本地 Whisper):安装 whisper.cpp 后,命令会校验二进制、下载 base.en ggml 模型(约 147 MB)到 ~/.swarmvault/models/,并在 swarmvault.config.json 的 providers.local-whisper 下注册;之后的音频转写完全离线进行,摄入时 redactor 会清除口述的密钥。可用 --model {tiny.en,small.en,medium.en,large-v3} 调节精度,localWhisper.threads 设线程数,还可通过 localWhisper.binaryPath / localWhisper.modelPath / SWARMVAULT_WHISPER_BINARY 覆盖发现路径。local-whisper 提供者类型在 1.1.0 的 STABILITY.md 中标为实验性。也可把 tasks.audioProvider 指向具备音频能力的托管提供者(OpenAI、Groq 等);YouTube 转录摄入不需要模型提供者。
智能体与 MCP 集成
- 可为具备钩子的智能体安装钩子,引导图谱优先读取,强制执行可选。
- 对 Claude Code,--hook 会在会话开始时注入图谱优先指令,建议用 swarmvault graph query|explain|path(避免 --json 产生更大输出)、swarmvault query、swarmvault context build 或 wiki/graph/report.md 回答代码理解问题,仅在编辑时读取源文件,并附图谱新鲜度提示。graph query "<seed>" 会打印顶部匹配的页面路径和最佳匹配维基页面的内联摘录。对 who-calls 和变更影响问题,钩子建议使用 swarmvault graph callers <symbol>,它根据图的调用边列出每个调用者及精确 file:line 调用点证据。
- 默认钩子以 advisory 模式(context)运行:每会话首个宽泛 Grep/Glob/Bash 搜索会收到一次性指引,不阻止任何操作。安装时传 --graph-first 可选择强制执行:每会话首个宽泛搜索会被拒绝一次并重定向到图谱命令,重复同一搜索随后允许,不阻塞工作。该标志接受可选值 deny(传标志时的默认)、context、off,并将所选模式持久化为 hooks.graphFirst;SWARMVAULT_GRAPH_FIRST=deny|context|off 仍可每会话覆盖。Edit/Write 工具之后钩子会启动后台 swarmvault graph update --file <path> 刷新,使图谱跟踪编辑。针对 vault 产物目录(wiki/、raw/、state/)或单文件的搜索不会被拦截,仅过滤管道输出的搜索工具(如 some-command | grep)不算宽泛搜索。Codex、Gemini、Copilot、OpenCode 和 Kilo 的钩子带有相同的图谱优先指引。
- swarmvault install --agent claude --mcp 还会在项目的 .mcp.json 中注册 SwarmVault MCP 服务器({"mcpServers":{"swarmvault":{"command":"swarmvault","args":["mcp"]}}})。Claude 安装还会在 .claude/skills/swarmvault/SKILL.md 写入项目技能包,--scope user 会在 ~/.claude 下一次性安装技能、钩子和设置供所有仓库使用。
适用场景
可用于个人知识管理、研究深入探索、书籍伴读、代码文档、商业智能,以及任何需要长期积累并有序组织知识的领域。它把 LLM Wiki 模式变成了带图谱导航、搜索、审查、自动化和可选模型增强综合的本地工具链。也可仅从独立 schema 模板起步(零安装、任意 LLM 智能体),在不够用时再升级到完整 CLI。