关于 Yggdrasil
Yggdrasil 是供编码 Agent 使用的本地持久记忆 MCP 服务,适用于希望在不同会话和工具间保留项目决策的开发者。它以 SQLite 和 Markdown 保存记忆,支持关键词检索,并可选加入语义搜索与后台整理。
主要功能
- 01跨会话共享持久记忆
- 02SQLite 与 FTS5 关键词检索
- 03可选本地模型语义检索
- 04将记忆保存为 Markdown
- 05通过 MCP 工具提供记忆操作
- 06支持设备间直接同步
适用场景
- 01让新编码会话延续项目背景
- 02检索其他项目中的相关经验
- 03从对话记录和 Obsidian 导入记忆
- 04在联网设备间同步本地记忆
MCP 相关
Yggdrasil 以 MCP 服务形式向客户端提供搜索、回忆和保存记忆等工具。安装程序可为检测到的 Agent 主机注册这些工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx yggdrasil-memoryYGG_ENGINE_URLBase URL of the Yggdrasil engine HTTP API.YGG_ENGINE_TOKEN密钥Bearer token for authenticating to the Yggdrasil engine (from ~/.yggdrasil/token after `ygg install`).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
6收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
🌳 Yggdrasil
别再每次开启新的 AI 会话时,都重新解释你的项目。
为 Claude Code、Codex 和所有 MCP Agent 提供一份本地记忆,供不同会话、工具和项目共享。零依赖。数据绝不离开你的设备。
阅读其他语言版本:Русский · 简体中文 · Español · Français · 日本語 · Deutsch
每次开启新聊天,AI 都会忘记一切。你不得不在每次使用每种工具时,重新解释项目、决策和注意事项。**Yggdrasil 是一份轻量、始终运行的记忆,任何 Agent 都能接入。**在任何项目中使用任何 AI 开启新会话,它都能立即了解你做出的决策、遇到的问题,以及尚未解决的事项。
$ cd ~/projects/checkout-api && claude # a brand-new session
🌳 Yggdrasil (injected automatically at session start)
• [project_status] payments refactor: idempotency keys added; open: e2e tests
• [lesson] webhook 401 → signing secret rotated; update env + redeploy
> "have I solved a flaky websocket reconnect anywhere before?"
🌳 recall → found in project `realtime-dash`:
refresh the token *before* opening the socket, then retry with capped backoff.
再也不用说“让我提醒你昨天做了什么”。它就在那里。
🚀 安装
在 Claude Code 中运行两条命令(插件通过 uv 启动):
/plugin marketplace add VonderVuflya/Yggdrasil
/plugin install yggdrasil
引擎会在首次使用时延迟启动,并生成自己的本地令牌——无需 API 密钥、云服务,也无需任何配置。Codex 和 Cursor 使用相同的流程。
所有其他渠道 — CLI 守护进程、Homebrew、npm、Claude Desktop、从源代码安装……
| 宿主 / 工具 | 命令 |
|---|---|
| uvx (推荐的 CLI) | uvx --from yggdrasil-memory ygg install |
| npm / npx | npx yggdrasil-memory install |
| pipx | pipx install yggdrasil-memory && ygg install |
| pip | pip install yggdrasil-memory && ygg install |
| Homebrew (macOS) | brew install VonderVuflya/tap/yggdrasil && ygg install |
| Claude Desktop (应用) | 将 最新版本中的 .mcpb 拖到“设置 → 扩展”,粘贴你的令牌(ygg token)——之后,桌面应用就会与你的 CLI Agent 共享同一份记忆(指南) |
| 从源代码安装 | uvx --from git+https://github.com/VonderVuflya/yggdrasil.git ygg install |
ygg install 是一次性引导设置:它会安装一个始终运行的后台服务,为找到的每个 Agent 宿主注册 MCP 工具——Claude Code、Codex、OpenCode——并在硬件条件允许时推荐可选的本地模型(也可以选择 none,保持零配置)。
OpenCode — 无需配置
先安装 OpenCode,然后运行 ygg install(如果已设置 Yggdrasil,则运行 ygg redeploy)——它会自动写入配置项,并合并到任何现有的 opencode.json 中。运行以下命令确认:
opencode mcp list # -> ✓ yggdrasil connected
如果是在 Yggdrasil 之后才安装 OpenCode?只需重新运行 ygg install。
如果你更愿意手动编写配置,请注意,OpenCode 的架构与 Claude 的架构有四处差异——服务位于 mcp 下(而非 mcpServers)、type 是必需项、command 是一个数组(而非 command + args),环境变量使用 environment(而非 env),因此 Claude 的配置片段无法直接移植:
// ~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yggdrasil": {
"type": "local",
"command": ["/path/to/python3", "~/.yggdrasil/scripts/ygg_mcp_server.py"],
"enabled": true,
"environment": { "YGG_ENGINE_URL": "http://127.0.0.1:42069" }
}
}
}
配置中无需填写令牌——引擎会自行读取权限为 0600 的 ~/.yggdrasil/token。如果工具没有显示,请运行 ygg doctor。
此外,还有适用于所有 Claude 界面的 yggdrasil-memory 技能:MCP 连接的是工具,技能则教会 Agent 何时使用它们。两者配合使用效果最佳。
无需安装任何内容,也可以用一个临时数据库试用:uvx --from yggdrasil-memory ygg serve --reset --db /tmp/ygg.sqlite。
然后就可以开始工作了:让 Agent “回忆一下我们对这个项目做了什么决定”,告诉它*“记住这个决定”*——下次会话中,这些内容就已经在那里了。随时运行 ygg doctor 验证安装情况。
已有历史记录? 从现有的 Claude Code 和 Codex 对话记录、Obsidian 库以及 CLAUDE.md 仓库中提取记忆——整个过程都在本地完成:
ygg seed --dry-run # see what it would import; drop the flag to distill for real
要从其他记忆工具迁移? ygg import --from mcp-memory --path memory.json 会将其中的全部数据导入 Yggdrasil(自动去重并防护机密信息)——之后你就可以删除原工具了。
为什么选择它
- 🧠 持久保存 — 决策、经验和项目状态会跨会话保留。
- 🔌 一个大脑,适用于每种工具 — Claude Code、Codex、OpenCode 和任何 MCP 宿主都共享同一份记忆。
- 🌐 跨项目回忆 — “这看起来和你在项目 B 中做过的事情很像——要复用吗?”
- 🧹 精选,而非全盘记录 — 你的 Agent 只保存少数重要内容;治理机制会去重和归档,但绝不删除。
- 🌱 自我维护 (可选) — 一个小型本地模型会在后台整理记忆。无需 API 令牌。
- 🪪 统一身份 — 可选的名称和角色设定会被每个 Agent 采用,让 Claude Code 和 Codex 感觉就像同一个助手。
- 🔒 100% 本地 — 你的记忆保存在自己的设备上。没有云服务、账户或遥测数据。
🧠 工作原理
Yggdrasil = 记忆 + 工具,智能来自你的 LLM。它只负责确保在正确的时机,将正确的记忆提供给正确的 Agent。
- 🛎️ 始终运行的守护进程 — 一个小型本地服务(约占用 21 MB RAM),你的 Agent 可通过 MCP 工具(
ygg_search、ygg_recall、ygg_remember…)访问它。 - 🪝 钩子 — 会话开始时自动注入身份信息、项目状态和待跟进事项(约 300 个 token);可选的逐提示词钩子会自动召回与每个请求相关的记忆。
- 📌 排序 — 置顶和经常召回的记忆会优先显示。
- 🧹 治理 — 重复和冲突内容会进入审核队列;更改不会造成破坏(只归档,绝不删除)。
- 📓 Obsidian — 每条记忆也都是一份纯 Markdown 笔记,可供你阅读、编辑和搜索。
🎛️ 记忆层级——默认零配置
开箱即用时,Yggdrasil 使用 SQLite + FTS5,无需任何依赖——即时关键词搜索,无需模型,也无需下载。可选的本地模型可增加两个独立层级:
| 层级 | 需要添加 | 可获得 |
|---|---|---|
| 0 · 默认 | 无——SQLite + FTS5 | 关键词搜索、零依赖、即时响应——recall@1 = 0.77 |
| 1 · 语义搜索 | 一个嵌入模型(all-minilm 45 MB · paraphrase-multilingual 约 560 MB) | 按含义跨语言搜索——recall@1 = 0.94,recall@3 1.00 |
| 2 · 自维护 | 一个小型 LLM(qwen2.5:1.5b 约 1 GB) | 在后台去重/合并记忆(仅提出建议) |
运行时只会计算向量并运行后台模型——所有记忆和向量都保存在同一个本地 SQLite 数据库中。
ygg install 会扫描 Ollama、LM Studio 和 llama.cpp,提供启动已安装但处于闲置状态的运行时,然后针对每项任务显示一个菜单:绿色表示你已有的模型,红色表示需要下载的模型。选择一项后,它会替你写入 embed_backend、embed_url 和 distill_url——包括那个没人能猜对的细节:embed_url 需要以 /v1 结尾,而 distill_url 需要指向主机根目录。在另一台机器上运行的运行时只需一个 URL:粘贴后即可自动检测接口类型。ygg recommend 会显示相同的扫描结果和完整目录,但不会更改任何设置。
完整模型菜单
嵌入模型(语义搜索):
| 模型 | 大小 | 适用场景 |
|---|---|---|
all-minilm | 45 MB | 英语、小巧且快速 |
nomic-embed-text | 274 MB | 英语、质量更好(768d) |
mxbai-embed-large | 670 MB | 英语、高质量(1024d) |
paraphrase-multilingual | 约 560 MB | 多语言(英语/俄语 + 50 种语言,768d) |
bge-m3 | 1.2 GB | 多语言、顶级质量(更大) |
嵌入后端——默认使用 Ollama。选择运行时后,ygg install 会替你完成所有设置;下方的手动配置方式适用于脚本化设置,以及之后单独修改某项设置的场景。若要改用兼容 OpenAI 的 /v1/embeddings 服务(llama.cpp 的 llama-server --embeddings、OpenRouter、LM Studio、vLLM),请设置 embed_backend:
# local llama.cpp — no key needed
ygg config set embed_backend openai
ygg config set embed_url http://127.0.0.1:8080/v1
ygg config set embed_model bge-small-en-v1.5
ygg redeploy
# OpenRouter — free embeddings, no GPU needed
ygg config set embed_backend openai
ygg config set embed_url https://openrouter.ai/api/v1
ygg config set embed_model nvidia/llama-nemotron-embed-vl-1b-v2:free
ygg config set embed_api_key sk-or-... # or export YGG_EMBED_API_KEY
ygg redeploy
密钥会存储在 ~/.yggdrasil/embed_api_key(0600)中,而非 config.json,并以文件路径的形式传给守护进程——因此不会出现在 ps、launchd plist 或 systemd unit 中。ygg config list 会隐藏该密钥。
运行 ygg doctor 检查配置是否生效——dense 一栏应显示你的模型:
✓ dense active (nvidia/llama-nemotron-embed-vl-1b-v2:free)
要手动连接 LM Studio 或 OpenRouter?相关注意事项(两种 URL 格式、模型 ID、JIT 加载、推理密钥与配置密钥、隐私过滤器)见 docs/model-backends.md。
在质量和隐私方面,本地方案仍然更胜一筹:在包含 232 条记忆和 110 个查询的语料库上,本地 paraphrase-multilingual 的 recall@1 得分为 0.964,而免费的托管模型为 0.946——你的记忆也不会离开本机。只有当设备无法运行 Ollama 时才考虑托管后端,而不是为了追求更高准确率。
更大的向量在这里并不能提升准确率——在同一语料库上,mxbai-embed-large(1024d)得分为 0.809,nomic-embed-text(768d)为 0.818,差异完全落在置信区间内。真正影响结果的是模型能否处理你的语言:这两个模型都只支持英语,在跨语言查询中的得分会降至 0.40–0.45,而默认的多语言模型则能保持 0.95。
后台整合(小型 LLM):
| 模型 | 大小 | 适用场景 |
|---|---|---|
qwen2.5:0.5b | 约 400 MB | 体积小,在 CPU 上运行快速 |
qwen2.5:1.5b | 约 1 GB | 最适合作为 CPU 默认选项 |
llama3.2:3b | 约 2 GB | 质量更好,但在 CPU 上速度较慢 |
引擎本身可替换——任何符合 MemoryBackend 契约的服务都可直接接入(YGG_ENGINE_URL);参见 docs/backend-boundary.md。
同时使用笔记本和性能更强的机器?配对一次,它们就不再是两个独立的大脑。
# on the laptop
$ ygg link
🔗 pairing code valid 5 minutes · single use
ygg://192.168.3.152:42070/a4e0df489737#FOucjgJ1FrUB…
# on the other machine — paste it
$ ygg link ygg://192.168.3.152:42070/a4e0df489737#FOucjgJ1FrUB…
✓ linked with laptop https://192.168.3.152:42070
✓ laptop: fetch 84 · push 12 · delete 0 · tombstones 0
就这么简单。从此,在一台机器上写入的记忆大约一秒后就会出现在另一台机器上;执行 ygg delete 会从两台机器上删除记忆;即使另一台机器处于休眠状态,每台机器也能使用自己的本地副本继续工作——读取绝不会等待网络。机器重新上线时,会比较指纹并修复所有遗漏,无需你执行任何操作。
不会轮询。 Yggdrasil 每天只会被调用几次,因此写入会即时推送,读取会触发同步;空闲机器不会发送任何内容。
这不是云服务: 没有中继、没有账户,也没有我们的服务介入通信。机器通过你自己的网络直接互连,使用 TLS,并固定对方的证书;密钥对只存在于这两台机器上。配对码本身会标明签发机器的证书,因此即使是首次连接,也会经过验证——网络上的其他设备若冒充对方响应,会在发送配对码密钥之前被拒绝。只有运行 ygg link 后才会绑定网络端口——安装 Yggdrasil 后,它仍与之前一样只监听本地回环接口。
ygg link --list # what's linked, and whether writes are actually arriving
ygg link --sync # reconcile now, don't wait for a read
ygg unlink <name> # revoke that machine's key here
详情:哪些内容会同步、哪些会保留在本地,以及何时改用 ygg sync
会同步: 记忆、记忆间的关系以及删除操作。保留在本地: 你打开某条记忆的次数,以及在哪台机器上读取过它——这些属于本地排序信息,并非知识。嵌入向量通常也保留在本地,只有一种例外:如果两台机器运行相同的嵌入模型,向量就会随记忆一起传输,这样性能强劲的机器可以为笔记本生成嵌入,笔记本无需运行模型。
较新的编辑会胜出。 在两台机器互相通信之前,若你在两边都编辑了同一条记忆,较新的编辑会保留在两台机器上(包括较短的修正)。
删除优先。 如果你在一台机器上删除某条记忆,同时在另一台机器上编辑它,删除会胜出,编辑会丢失。这是刻意设计的:即使两台机器的时钟不一致,“我删除了泄露的令牌”也必须成立。如果你的意思是改变主意了,请改用归档——内容不会丢失,执行 ygg unarchive 就能在两台机器上恢复它(较晚做出的决定会胜出)。
防火墙问题会在配对时发现。 显示配对码的机器会立即回连另一台机器;如果无法连接,ygg link 会说明情况,并显示仅为该机器开放端口所需的一条命令(ufw、firewalld、Windows)。之后,ygg link --list 和 ygg doctor 会持续检查:只有在确认写入已送达后,对等机器才会显示 ✓;否则会显示错误及等待同步的更改数量。机器通过 DHCP 获取新地址后,会在下次建立连接时重新发现。
ygg sync(git)仍然可用,但用途不同:用于彼此无法连接的机器、连接到不同网络的工作笔记本,以及放在 USB 存储盘上随身携带的裸仓库。同一网络内的机器使用 ygg link,其他情况使用 ygg sync。两者采用相同的合并规则,因此可以同时使用。如果两台机器都在同一个 Tailscale tailnet 中,ygg link --tailscale 也能跨网络使用。
如果配对码显示的地址不正确(它会优先选择真实的以太网和 Wi-Fi,而非虚拟机网桥和 VPN,但仍可能猜错),可以手动指定:
ygg config set sync_host 192.168.3.152 —— 或者在另一台机器上显示配对码:粘贴配对码的一方始终会使用实际路由所经过的地址。
使用 eval/ygg_eval.py 测得:232 条记忆、110 个带标签的查询;排序权重仅在 dev 划分上调优,因此 holdout 是无偏的指标(recall@1,使用 paraphrase-multilingual 模型):
| 搜索视图 | holdout recall@1 | recall@3 | 零依赖词法搜索 |
|---|---|---|---|
| 在一个项目内(实际使用路径,候选池约 11 条) | 0.94 | 1.00 | 0.76 |
| 整个存储库(无筛选,候选池 232 条) | 0.72 | 0.87 | 0.69 |
在一个项目内——也就是你实际使用的路径——0.94 的查询中,正确的记忆排名第 1,且每次都在前 3 名内(recall@3 = 1.00)。 不加筛选、搜索整个存储库更难(全部 232 条记忆的 recall@1 为 0.72,recall@3 为 0.87)。零依赖词法模式已能处理关键词和代码标识符查询(1.00);本地模型则能理解语义并支持跨语言搜索(跨语言查询从 0.25 提升至 0.95)。BENCHMARKS.md 中的完整细分数据包含 95% 置信区间、候选池大小和各类别得分——一分钟即可重新运行:python3 eval/ygg_eval.py --report。
语料库大小也是指标的一部分。 在一个包含 4,799 条记忆的真实存储库中,默认的多语言嵌入器会退化至词法基线(recall@1 为 0.55);bge-m3 在此规模下仍能达到 0.775。如果你的存储库增长到数千条,请选择 bge-m3——详情见 BENCHMARKS.md。
🆚 Yggdrasil 与其他方案对比
其他方案要么自动捕获对话记录,要么向你兜售云服务。Yggdrasil 的选择是:只保留少量重要内容,经过整理去重,以你拥有的纯文本行存储,并在所有工具和项目之间共享。
| Yggdrasil | 内置记忆 (Claude Code · Codex) | claude-mem | mem0 / OpenMemory | basic-memory | |
|---|---|---|---|---|---|
| 整理后的决策 / 经验 / 状态(非对话记录) | ✅ | ⚠️ 自动记录 | ❌ 捕获所有内容 | ⚠️ | ⚠️ 自由格式笔记 |
| 跨工具共享同一条记忆 | ✅ | ❌ 受供应商限制 | ✅ | ✅ | ✅ |
| 跨项目回忆(“在项目 B 中解决过此问题”) | ✅ | ❌ 限于代码仓库 | ⚠️ | ⚠️ | ⚠️ |
| 默认 100% 本地运行 | ✅ | ✅ | ⚠️ 云同步附加功能 | ❌ 优先托管服务 | ✅ |
| 零依赖(标准库 + SQLite) | ✅ | — | ❌ Node + Bun + worker 守护进程 | ❌ Docker + Qdrant + 大模型密钥 | ❌ |
| 无需大模型和 API 密钥即可运行 | ✅ | ✅ | ❌ 由 AI 压缩内容 | ❌ | ✅ |
| 完全本地的语义搜索 | ✅ 可选使用 Ollama | ❌ 仅 grep | ⚠️ 可选使用 Chroma | ⚠️ 需要 API 密钥或 Docker 技术栈 | ❌ |
| 由你拥有的纯 Markdown(兼容 Obsidian) | ✅ | ✅ | ❌ | ❌ | ✅ |
最接近的同类方案——claude-mem: 捕获所有内容的记忆系统,会记录并由 AI 压缩每次会话(需要 Node 20+ 和 Bun、持久运行的 worker 守护进程;Chroma 可选)。Yggdrasil 选择了相反的方向:小而精、信号密集的存储库,而不是不断扩大的信息洪流。mem0 是一套 SDK 加托管平台,用于构建能记住用户的应用——即使自托管,也需要大模型 API 密钥。内置记忆确实很有用——但在结构上受限于单一供应商、单个代码仓库和单台机器,且只能进行字面 grep。Yggdrasil 是它们之上的一层(而且 ygg seed 可以从相同的对话记录中为自身建立初始数据)。它们处于完全不同的层级:context-mode(实时上下文窗口)和 Context7(最新库文档)都能与 Yggdrasil 良好配合。
🧰 命令
Agent 可以使用六个 MCP 工具:ygg_health、ygg_bootstrap、ygg_search、ygg_recall、ygg_remember、ygg_materialize——由插件或 ygg install 自动注册。
完整的 ygg CLI 参考
记忆操作
| 命令 | 功能 |
|---|---|
ygg recall --query "…" | 跨项目搜索——“我以前在什么地方做过这个吗?” |
ygg search --project P --query "…" | 按项目范围搜索(--type、--tag、--limit、--json) |
ygg remember --project P --type lesson --content "…" | 保存持久记忆(防止保存密钥、自动去重) |
ygg bootstrap --project P | 开始工作前获取项目记忆 |
ygg pin --id ID · ygg unpin --id ID | 固定记忆,使其可靠地显示出来 |
ygg relate --from A --rel solves --to B · ygg relations --id ID | 关联记忆(solves/supersedes/contradicts)· 查看记忆存在的原因/被什么取代 |
ygg supersede --id OLD --by NEW | 归档过时记忆——--by 记录取代它的内容 |
ygg unarchive --id ID | 恢复已归档的记忆(也会同步到已关联的机器) |
ygg materialize --id ID --project P | 将一条记忆导出为 Obsidian 笔记 |
ygg export-native --project P | 将精选摘要写入 AGENTS.md/MEMORY.md——供 Claude Code 和 Codex 使用原生记忆 |
ygg import --from TOOL --path P | 将其他记忆工具的数据存储迁移到 Yggdrasil(mcp-memory、basic-memory;先使用 --dry-run) |
ygg review [--apply] | 处理治理队列——合并重复记忆、标记过时或冲突的记忆(仅归档,可撤销) |
ygg delete --id ID · ygg reset … | 永久删除一条记忆 · 批量撤销错误的初始导入(会先确认) |
冷启动
| 命令 | 功能 |
|---|---|
ygg seed | 提炼 Claude Code 和 Codex 对话记录、Obsidian 库、CLAUDE.md 仓库——增量处理、自动去重、完全本地 |
ygg seed --dry-run · --force | 仅发现并估算 · 重新提炼全部内容 |
ygg seed --schedule 03:30 | 每晚自动提炼(launchd)——让记忆自动保持最新;off / status |
ygg sync --repo <your-git-repo> | 通过你自己的 git 仓库在多台机器间同步记忆——使用纯 JSON 文件,不经过云端 |
ygg link · ygg link <code> | 直接在同一网络上关联你自己的两台机器——实时共享记忆、固定 TLS、无中继 |
ygg link --list · ygg unlink <name> | 显示已关联的机器 · 撤销一台机器的关联 |
ygg distill --source PATH | 将一个目录/文件提炼为经验 |
ygg reindex | 补齐缺失的嵌入(恢复稠密记忆召回) |
服务与设置
| 命令 | 功能 |
|---|---|
ygg install · ygg doctor · ygg update | 引导式设置 · 诊断并提供可执行的修复方案 · 升级 |
ygg config | 查看/设置持久设置(list · get · set · unset) |
ygg status · start · stop · restart · logs | 管理常驻守护进程 |
ygg hooks · unhooks · register | 开启/关闭 SessionStart hook · (重新)注册 MCP |
ygg recommend · token · uninstall | 模型目录 · 打印身份验证令牌 · 移除所有内容 |
编辑 ~/.yggdrasil/identity.json,赋予它个性:
{ "name": "Jarvis", "persona": "concise, proactive, dry wit", "user_facts": ["prefers TypeScript", "ships small PRs"] }
需要大量初始导入,但笔记本性能不足?将提炼任务指向局域网中的任意设备——配备 Ollama、LM Studio、llama.cpp 的台式机,甚至运行本地大模型服务应用的 iPhone:ygg config set distill_url http://<box>:11434。Yggdrasil 会自动检测 API 方言(Ollama 或 OpenAI 兼容);你的数据仍不会离开网络——详情见 docs/ygg-cli.md。
Claude Code 已经内置了记忆功能,为什么还需要 Yggdrasil?
内置记忆因供应商、代码仓库和机器而异,并且只能通过字面文本匹配来检索。Yggdrasil 是更上一层的记忆层:在 Claude Code、Codex 和任何 MCP 主机中使用同一份记忆,跨项目召回,还可选择语义搜索——同时仍然 100% 在本地运行。它支持双向桥接:ygg seed 会将现有的原生记忆和对话记录提炼到共享记忆库中,而 ygg export-native 会将精选摘要写回 AGENTS.md/MEMORY.md——因此,即使是全新的克隆,或是不支持 Yggdrasil 的工具,也能使用你精选的记忆。
它会把我的代码或记忆发送到云端吗?
不会。引擎、数据库和可选模型都在本地运行。无需账户,也没有遥测。唯一的外部请求是向 PyPI 检查版本。
如果你使用 ygg link 连接自己的两台机器,记忆会通过你自己的网络在这两台机器之间传输——直接通过 TLS 连接,并固定证书,不经过中继,也不经过我们的服务器。在你运行该命令之前,除环回接口外,不会有任何监听服务。
恶意代码仓库能在我的记忆中植入指令吗?
召回的记忆会以清晰标注的参考笔记,而非指令的形式注入,并注明每条笔记的来源;如果笔记来自其他项目,也会添加标记——因此 Agent 会将其视为数据,并在执行其中任何内容前先询问。提炼前会从对话记录中删去秘密信息,写入时也会拒绝包含秘密信息的内容。不过,记忆的可信度只取决于写入它的内容——记得偶尔运行 ygg review 检查一下。
它会自动记住所有内容吗?
不会,这是有意为之。检索是自动的;写入则是审慎进行的(Agent 会调用 ygg_remember 保存长期有用的经验)。记下所有内容会污染记忆并消耗令牌,所以我们不会这么做。可选的后台模型会整理已保存的内容(仅提出建议)。
我需要 GPU 或 API 密钥吗?
不需要。默认使用纯词法搜索——零依赖,响应即时。语义搜索是可选功能,通过 Ollama 使用本地模型。安装程序会推荐适合你硬件的模型。
它占用多少资源,会消耗多少令牌?
引擎空闲时占用 约 21 MB RAM(默认使用词法搜索),CPU 占用约为 0%;每条记忆占用几十 KB 磁盘空间。每次会话开始时会注入约 300 个令牌;每次工具调用只返回一小段内容。所有繁重工作(索引、嵌入、整理)都在你的机器上由大模型之外的程序完成。
我可以手动编辑或删除记忆吗?
可以。记忆会以 Markdown 笔记的形式存放在 Obsidian 库中,你可以像处理任何文件一样读取、编辑或删除它们。治理和审查不会删除任何内容,只会将其归档,因此可以恢复。只有你能通过 ygg delete 明确执行彻底删除(在已连接的机器上,删除操作也会同步到两台机器)。
🚦 状态与路线图
Alpha。 主流程和治理循环已通过门禁测试(scripts/run_gates.sh);目前尚未针对多用户或生产环境进行加固。目前支持 macOS;Linux/Windows 服务安装程序已构建完成,正在进行最终的设备端测试。
近期已交付:🔗 机器间记忆(ygg link)· 关系图(ygg relate:solves / supersedes / contradicts)。
接下来:🛰️ 跨界面支持(在命令行、Web 和手机之间共用一份记忆——HTTP 门面已就绪,详见 docs/cross-surface.md)· 🐧 Linux/Windows 正式发布。
🤝 参与贡献
欢迎提交问题和 PR。提交前请运行 scripts/run_gates.sh 和 python3 -m unittest discover -s tests——所有门禁都必须通过。
📜 许可证
GNU AGPL v3.0——详见 LICENSE。免费开源:可使用、修改、可自托管和再分发。如果你修改了它,或将其作为网络服务提供,则必须以相同许可证发布源代码。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。