让不同设备、不同 Agent,带着同一段项目连续性继续工作。
不是复制意识。不是塞满历史对话。是让值得保留的经历安全回归,并在下一次启动时被重新装载。
启动序列 · 记忆边界 · 宿主接入 · 快速接入 · English
你在 Codex 做出迁移决策,在 Claude Code 接着排障,又在另一台设备继续开发。
Spinal Plug 把真正有长期价值的项目经验变成可追溯、可选择同步、可注入宿主原生记忆的信号。新的会话不必再从“这个项目是做什么的”开始。
做出判断 选择发布 继续工作
Claude / Codex ──► SPINAL-PLUG ──► Claude / Codex
独立会话与环境 受管的记忆链路 有界原生记忆投影
核心原则:共享的是经过治理的项目经验,不是模型权重、隐藏状态、完整对话或无限上下文。
Spinal Plug 的设计叙事受到《新世纪福音战士》中“进入系统前必须完成一段可见仪式”的张力启发:连接、校准、确认、再行动。这里借用的是这种产品节奏和控制室氛围,不使用任何角色、机体、标志、台词或原始画面。
所有图像均为 Spinal Plug 的原创资产;本项目与《新世纪福音战士》及其权利方不存在隶属、授权或认可关系。
M E M O R Y C O R E B O O T S E Q U E N C E
[01/05] PROJECT SPACE LINKED 当前目录已识别为同一个项目空间
[02/05] INCARNATION LINK BOUND 当前 Agent 会话已挂载项目身份
[03/05] MIND CAPSULE READY 有界启动上下文准备完成
[04/05] MEMORY FIDELITY LIVE 可用持久记忆已进入当前投影
[05/05] SYNC UPLINK ARMED 可发现其他分身发布的更新
| 术语 | 它真正表示什么 |
|---|---|
| Spinal Plug | 连接兼容 Agent 宿主的项目记忆链路。 |
| Memory Fidelity | 当前会话真正可用的持久记忆引用,不是虚构百分比。 |
| Mind Capsule | 有 token 预算的启动包,未来可扩展为角色与工作状态。 |
| Incarnation Link | 当前宿主会话与 Project Space 的绑定。 |
| Sync Uplink | 到兼容同步端点的受控连接。 |
+ 技术/产品决策,以及为什么这样决定
+ 持续有效的项目规则和工作方式纠正
+ 无法直接从仓库推导出的关键项目背景
+ 权威外部资料、仪表盘、工单或规范的指针
- 密钥、Token、私有凭证
- 整段对话、工具原始输出、思维链
- “正在跑测试”一类短暂状态
- 必须重新从代码、Git 或外部系统核实的事实
当前工作的接力不应污染长期记忆。它应作为 handoff(工作交接) 独立保存:已完成什么、还缺什么、下一步是什么、有哪些阻塞。
FETCH PREVIEW APPLY PROJECT
发现远端更新 ──► 先看将发生什么 ──► 选择带入当前会话 ──► 写入宿主原生投影
你可以知道另一个分身学到了什么,而不必立刻让它改变当前工作上下文。删除和权限撤销属于安全例外,会优先执行。
| 宿主 | 链路状态 | 具身方式 |
|---|---|---|
| Claude Code | ONLINE |
生命周期 Hook + 受管 Auto Memory 投影。 |
| Codex | ONLINE |
生命周期 Hook + 有界候选提取 + 保留原生记忆投影。 |
| 其他 Agent | ONLINE |
宿主无关 Skill:无 Hook、无原生投影,记忆经 boot 输出注入。 |
| MCP 客户端 | ONLINE |
通过 stdio 调用按目录隔离的状态与记忆检索工具。 |
| Future Hosts | STANDBY |
通过 Adapter Contract 扩展。 |
Spinal Plug 不取代宿主记忆,也不覆盖用户自己写的内容。它只维护带受管标识的投影块。
客户端是一个零依赖单文件(tag 发布后可用):
npm install -g spinal-plug从源码构建(开发客户端时使用):
pnpm install
pnpm build
pnpm typecheck
pnpm -C packages/cli link --global # 把 spinal-plug 挂到 PATHspinal-plug connect "${SPINAL_PLUG_DB_PATH:-$HOME/.spinal-plug/spinal-plug.db}" .
spinal-plug boot "${SPINAL_PLUG_DB_PATH:-$HOME/.spinal-plug/spinal-plug.db}" .本地 SQLite 只是设备缓存与 Outbox。不会上传数据库文件;跨设备传输的是带来源、版本与删除语义的事件。
当前公开版本专注本地功能:不需要账户、登录或远端服务。记忆与 Outbox 保存在设备本地;发布会尝试本机开发端点(127.0.0.1:8787),无人应答时静默留在完整可用的本地模式。
认证 Control Plane 与跨设备账户登录保留为后续功能。当前运行 spinal-plug login 只会回复“登录功能尚未开放。Spinal Plug 当前仅支持本地模式。”,不会打开浏览器、请求端点或写入凭据。
这个仓库本身就是两家宿主的 plugin marketplace,装完即可用斜杠命令驱动整条链路:
# Claude Code
claude plugin marketplace add KylinMountain/spinal-plug
claude plugin install spinal-plug@spinal-plug
# Codex
codex plugin marketplace add KylinMountain/spinal-plug
codex plugin add spinal-plug@spinal-plug插件驱动的是上面那个 CLI,不含 CLI 本身——先完成 01,否则宿主 Hook 找不到 spinal-plug 会静默跳过。仓库更新后,用宿主自己的更新命令拿新版(claude plugin update spinal-plug@spinal-plug;Codex 侧 codex plugin remove 后再 add)。
安装后可使用:
/spinal-plug:connect
/spinal-plug:status
/spinal-plug:share
/spinal-plug:sync
/spinal-plug:handoff
/spinal-plug:boot
其他能加载 SKILL.md 并运行 shell 命令的 agent(Qoder、Gemini CLI、自研 agent)无需插件,直接接入 skills/spinal-plug/:
ln -s "$PWD/skills/spinal-plug" ~/.your-agent/skills/spinal-plug这类宿主没有生命周期 Hook,也没有可写入的原生记忆面,因此记忆通过 boot 的输出注入上下文——同步之后需要重新 boot,会话结束前由 agent 主动提议 share。安装、验证与差异说明见 skills/README.md。
把下面的 stdio 进程加入 MCP 客户端配置;数据库和项目路径都应写绝对路径,因为 MCP 宿主的工作目录可能变化。每个进程只服务启动时指定的 Project Space:
{
"command": "spinal-plug",
"args": ["mcp", "/absolute/path/to/.spinal-plug/spinal-plug.db", "/absolute/path/to/project"]
}当前提供 spinal-plug_status 和 spinal-plug_recall。两个工具都要求调用方传入 cwd;该目录必须属于进程启动时配置的同一 Space,跨 Space 请求会被拒绝。检索和 Outbox 计数只会落在这个 Space 内。stdio 入口支持当前 server/discover 流程,也兼容仍使用 initialize 的客户端。
当前版本聚焦项目级持久记忆、完整工作交接、宿主原生投影、本地优先存储和选择性同步。Mind Core、Mind Capsule 与 Incarnation 仍是保留的运行时扩展方向;本项目不承诺不同模型会产生完全相同的行为。
- Architecture
- Agent guide
pnpm verifyruns repository checks, type checks, builds, and tests.
pnpm test
pnpm typecheckApache License 2.0,见 LICENSE。
SPINAL-PLUG
MEMORY FIDELITY · PROJECT CONTINUITY · MANY CAPABLE HOSTS


