管理后台
个人记忆服务 · 零依赖

让记忆跨过
AI 之间的墙。

Codex 记住的,Claude 也想得起来;这台电脑说过的,换台电脑不用重讲。 一个轻量服务挡在你和模型中间,自动把对话沉淀成事实,再在下一次对话时递回去。

同一份记忆 1
CodexOpenAI Responses
Claude CodeAnthropic Messages
iMac · MacBook Air多台电脑
换工具、换电脑,记忆不重置
工作机制

捕获 → 提取 → 召回

服务以透明代理的方式坐在客户端和模型之间。你照常对话,它在旁边把值得留下的东西留下来。

1

捕获

每一轮真实对话原样入库(L0)。工具调用的中间往返、客户端自己发的起标题请求都会被识别并跳过,不污染记录。

2

提取

对话结束后异步交给小模型,从中挑出稳定可复用的事实(L1):偏好、身份、习惯、项目背景。一次性的寒暄不留。

3

召回

新会话开始时,按关键词命中相关记忆并注入 system prompt。命中不足时回退到最近记忆,交给模型自己判断。

协同方式

一个中间层,两套协议

Codex 说 OpenAI Responses,Claude Code 说 Anthropic Messages。服务同时听懂两种, 写进的是同一个记忆库——所以它们之间才谈得上"协同"。 Claude Code 用原生账号时不走代理:改地址等于把订阅和原生模型一起换掉, 所以它只把召回和入库交给服务,对话仍旧直连自己的账号。

Codex 桌面端 / CLI Claude Code 原生账号 · 钩子旁路 整条对话转发 只要召回 / 入库 XMemory 注入记忆 · 转发 · 沉淀 仅代理路径 上游模型 照常推理 写入 · 召回 同一份记忆库 L0 对话 · L1 事实 · 按项目归档
项目维度

「关于这个项目,我都记了些什么」

写代码时说的每一句话,本来就是在某个仓库里说的。所以对话和事实都带上项目, 事后按这条轴回看,而不是在一条越来越长的时间线里翻。

1

自动归属

客户端上报工作目录,从 cwd 向上找最近的 .git——在子目录里开的会话仍然算同一个仓库,不会旁边再冒出一个项目。

2

一处收窄

后台顶部选一个项目,记忆、会话、统计一起跟着走。分开筛两次的话,两边说的就不是同一件事了。

3

老数据补得回来

历史对话重跑一次回填就补上项目。历史记忆没记下自己从哪一轮来,只能按时间就近推断——所以后台只给建议,连依据那一轮一起摆出来给你看。

目前项目只是"存"和"看"的维度:召回仍然是全库一起竞争注入名额, 后台的召回调试台因此也不受项目筛选影响——它要是跟着筛,就不再是真实情况了。

快速接入

两种接法,各走各的

Codex 改个地址就行。Claude Code 用的是原生账号,改地址等于把订阅赔进去, 所以换成装两个钩子——账号、模型、订阅全都不动。

Codex — ~/.codex/config.toml

# 记忆由服务端统一处理 model_provider = "custom" [model_providers.custom] name = "XMemory" wire_api = "responses" base_url = "https://jy.guoxiaoli.com/codex/default"

Claude Code — 装钩子,不动 settings 的 env

# 提问前调 /recall 注入,答完调 /ingest 入库 node client/install-claude-hooks.mjs \ --url "https://jy.guoxiaoli.com" \ --token "<你的 token>" # 装完重启 Claude Code 才生效
为什么是它

够用就好,不必是三件套

团队级的记忆系统要 Docker、Redis、管理面板和多租户模型。个人场景不需要那些。

零依赖

纯 Node.js,不装任何 npm 包。JSON 文件存储,数据能直接打开、备份、迁走。

数据在自己手里

跑在你自己的服务器上。记忆库是一个 JSON 文件,随时可查可删,没有第三方经手。

换模型只改一处

服务端指定模型后,所有电脑、所有工具自动跟着走,不用逐台改配置。