pax-beehive/paxm
GitHub: pax-beehive/paxm
为 Codex、Claude Code 等 AI 编程助手提供跨会话持久化记忆的 provider 中立适配器,让项目决策和工作上下文在不同 agent 之间延续。
Stars: 245 | Forks: 9
# PAXM
### 不再为每个新的 coding-agent 会话重复解释你的项目。
[](https://github.com/pax-beehive/paxm/actions/workflows/ci.yml)
[](https://github.com/pax-beehive/paxm/releases/latest)
[](go.mod)
[](https://github.com/pax-beehive/paxm/releases/latest)
PAXM 可将决策、规范和工作上下文延续到后续的 Codex、
Claude Code、OpenCode、Pi、Cursor、TRAE、Kimi Code、ZCode、Kiro、Cline 和 MCP
会话中。在本地以 SQLite 启动,无需账户、API key、embeddings 或
额外的 memory-layer 模型调用。之后可以更改 memory provider,而无需重构每个 agent。
[为 Codex 安装](#codex-plugin) · [安装 CLI](#opencode-pi-cli-or-mcp) · [查看结果](#what-changes-after-installation) · [文档](#documentation) · [中文](docs/README.zh-CN.md)
## 安装后的改变
在一个会话中记录一项决策:
```
paxm remember --profile ltm --text \
"Production deploys run through GitHub Actions; never deploy from a laptop"
```
在之后的会话中,Codex、Claude Code、OpenCode、Pi 或 MCP client 可以
恢复它:
```
paxm recall --query "how do we deploy production?"
```
启用被动集成后,paxm 会在 agent 响应前召回相关上下文,并在事后持久化捕获已完成的对话轮次。Provider 延迟或失败不会阻塞 coding 会话。
实际效果:
- **新会话基于项目上下文恢复**,而不是让你重新陈述架构决策、约定和操作限制。
- **一条 memory 路径适用于所有 agent。** 从 Codex 捕获的决策可以从 Claude Code、OpenCode、Pi 或任何 MCP client 召回。
- **你的存储由你决定。** 可以从本地 SQLite 开始,接入 Zep、
Mem0、MemOS 或 OpenViking,或者通过 JSON-RPC 引入私有 provider。
- **你始终拥有控制权。** 凭据、hook 信任、路由、数据位置、
禁用、卸载和回滚始终由用户掌控。
## 快速开始
选择你已经在使用的 agent。Codex 插件是实现完整主动与被动 memory 循环的最快捷径。
### Codex 插件
```
codex plugin marketplace add pax-beehive/paxm --ref paxm-memory-v0.1.4
codex plugin add paxm-memory@pax-agent-nexus
curl -fsSL https://github.com/pax-beehive/paxm/releases/latest/download/install.sh | bash
paxm setup --integration codex-plugin
```
开启一个新的 Codex 任务,并在 `/hooks` 提示时信任 Pax Agent neXus hooks。
显式安装程序会下载最新发布的 paxm 二进制文件。该插件会注册 active-memory 技能,并在设置完成后接管被动的 Codex hooks;
它绝不会自行安装二进制文件、写入凭据或绕过 hook 信任。
在依赖被动 memory 之前,请验证首个成功的循环:
```
paxm config doctor
paxm remember --profile stm --text "PAXM_FIRST_RECALL_OK"
paxm recall --query "PAXM_FIRST_RECALL_OK"
paxm history --days 1
```
在安装前设置 `PAXM_VERSION` 可实现可重现的版本或回滚。
Provider 凭据仍由用户管理。
### Claude Code 插件
安装 paxm CLI,然后安装 Claude Code 插件:
```
curl -fsSL https://github.com/pax-beehive/paxm/releases/latest/download/install.sh | bash
claude plugin marketplace add pax-beehive/paxm
claude plugin install paxm-claude@pax-memory
paxm setup --integration claude-plugin
```
Claude 插件包含 active-memory 技能、paxm MCP server 和五个
生命周期 hook:`SessionStart`、`UserPromptSubmit`、`PostToolUse`、
`PostToolUseFailure` 和 `Stop`。
会话引导会注入配置好的用户、agent 和会话身份,
以及当前的本地时间和时区。Codex、Claude Code 和 Pi
使用它们的会话启动事件;OpenCode 在会话中发送第一条消息之前执行相同的引导。如果后续的用户输入距离上一次对话活动超过 12 小时,paxm 会在 agent 处理该输入之前刷新本地时间上下文。
### OpenCode、Pi、CLI 或 MCP
安装最新版本并运行交互式设置。默认的 SQLite provider 让 adaptor 无需事先创建账户或 API key 即可使用。
```
curl -fsSL https://github.com/pax-beehive/paxm/releases/latest/download/install.sh | bash
paxm setup
paxm config doctor
```
`paxm setup` 允许用户选择稳定的用户 ID、provider 和被动 agent 集成。选定的 agent 默认使用诸如 `codex-todd` 的 ID,并可以在交互式设置期间重命名。使用上/下键移动,空格键切换,回车键确认。
可选的团队 ID 会创建显式的持久化写入配置文件,例如
`team-pax-core`;非交互式设置可以传入 `--user-id todd --team-id pax-core`。
主动召回技能仍由用户安装。SQLite 无需 API key 即可工作;诸如 Zep、Mem0、MemOS 和 OpenViking 等远程 provider 则需要在设置期间提供连接详情。
必须允许 SQLite 健康检查在配置的数据库旁创建 WAL/SHM 文件。如果沙盒可以读取数据库但无法写入其父目录,可能会报告 SQLite 错误 14。
对于沙盒评估,请使用隔离的可写 SQLite 路径。在真实的 agent 进程中,相同的配置可能是健康的。
当 Codex 使用内置的 `paxm-memory` 插件时,请让该插件管理 Codex 的
hooks,这样 paxm 就不会注册重复的全局 hook:
写入并召回 memory:
```
paxm remember --profile ltm --text "We chose SQLite for the local memory layer"
paxm recall --query "local memory layer"
paxm history --days 7
paxm dashboard # localhost metrics, logs, sessions, and recall inspection
```
在设置期间选择 OpenCode 可在
`~/.config/opencode/plugins/` 下安装全局本地插件。选择 Pi 则会安装其被动扩展。
选择 Cursor、TRAE、TRAE CN、Kimi Code、ZCode、Kiro 和 Cline 会安装客户端原生的 hook/MCP 集成,同时保留无关的客户端配置。
有关确切的事件映射、路径、主机限制、验证和回滚,请参阅 [agent 集成矩阵](docs/agent-integrations.md)。任何兼容 MCP 的 client 都可以使用 `paxm mcp serve --agent codex`;请将 `codex` 替换为已配置的 client 身份。
## SQLite 质量预览
SQLite 让新用户在选择或部署专用 memory 系统之前,就能获得完整的本地 memory 循环。它使用 FTS5 和 BM25 检索,具有对话轮次级别的 memory 和确定性的、针对查询的摘要。Memory 摄取和检索不会调用任何外部 LLM 或 embedding 服务。
在最初的 30 个问题 LoCoMo agent 评估中,SQLite turn memory 成功回答了 13 个问题,相比之下 Mem0 product-default 回答了 11 个。
| Memory 组别 | 成功回答数 | 平均 token F1 | memory 层中的外部模型 |
| --- | ---: | ---: | --- |
| paxm SQLite turn memory | 13 / 30 | 0.4211 | 无 |
| Mem0 product-default | 11 / 30 | 0.3811 | GPT-5 mini + OpenAI embeddings |
这是一个探索性结果,并非官方的 LoCoMo 得分,也不能证明 SQLite 在整体上优于 Mem0。它涵盖了使用 OpenCode 和 DeepSeek V4 Flash 的一次平衡对话,并使用了确定性的 token F1。请参阅[方法论与局限性](evals/locomo/README.md)。
## 工作原理

PAXM 是一个 memory adaptor,而不是另一个托管的 memory 服务:
```
AI agents -> CLI / MCP / skills / hooks -> paxm -> any memory provider
```
Agent 通过两种方式访问 paxm:
| 路径 | 入口点 | 最适用于 |
| --- | --- | --- |
| 主动 | CLI、MCP、skill | 刻意召回、显式写入、检查 |
| 被动 | Agent 生命周期 hook | Prompt 阶段召回和自动对话轮次捕获 |
两条路径都使用相同的 runtime 和 provider 路由。在所有 agent 界面中,过滤、配置文件、排名、超时、遥测和 provider 行为保持一致。
被动写入在 provider 交付之前提交到本地持久化队列。缓慢或不可用的 provider 会在后台重试,而不是阻塞 agent。
被动召回默认使用 `800ms` 的总体预算和每个 provider `250ms` 的预算。它会返回健康的部分结果并记录下游超时。
### 运行示意
一个 agent 界面,适配任何 memory provider
被动召回和持久化的后台写入
标签:AI编程助手, EVTX分析, Go, MCP, Ruby工具, SOC Prime, SQLite, 上下文管理, 开发工具, 日志审计, 记忆存储