@ewanjasper/sessionrelay weekly downloads statistics
By ewanjasper · npm · Claude Code
会话接力 SessionRelay — 属于项目、不属于任何厂商的本地记忆层(跨 Agent 会话记忆 / 中文检索 / MCP / HOP 交接协议)
@ewanjasper/sessionrelay has 30 recorded weekly downloads on npm, a decrease of 99.8% over the past 30 days, ranking #1871 of 2,322 tracked listings.
About @ewanjasper/sessionrelay
会话接力 SessionRelay
简体中文 | English
属于项目、不属于任何厂商的本地记忆层。 Memory is always complete. Retrieval is always yours to shape. 记忆始终完整收录;检索边界由你划定。
你和 AI 聊了 3 天的方案,不应该随关窗消失。它属于项目,属于下一个接手的人。
60 秒演示

GIF 无声音——完整配音版(中文/英文 + 手机竖版)在 Releases · v0.2.2 页面内可直接播放。
它解决什么
| 痛点 | 会话接力的答案 |
|---|---|
| 跨时间失忆:新会话问"上周讨论的方案?"——AI 不知道 | 按需检索历史会话,带出处 |
| 跨工具断裂:Claude Code 定的方案,ZCode 不知道 | 双源同库,任何 agent 通过 MCP 查同一份记忆 |
| 跨人交接:你和 AI 聊了 3 天,接手的人只能"去看代码" | 导出 .hop 交接包,对方的 AI 立刻拥有全部上下文 |
与 claude-mem 的架构区别:会话级存储
这是最核心的设计决策,不是功能差异,是存储粒度的架构差异:
| claude-mem | SessionRelay | |
|---|---|---|
| 存储单位 | 记忆片段(压缩摘要,跨会话打散混合) | 会话(完整对话,有标题/时间线/来源/状态/决策) |
| AI 看到的 | 一堆"你之前说过…"碎片 | "根据 8 月 28 日 ZCode 会话《数据库选型》第 12 条…" |
| 幻觉风险 | 高:上下文污染 + 压缩失真 + 无法溯源 | 结构性抑制:出处强制 + 按需查询 + 原文可回跳 |
三个反幻觉设计(不是功能,是架构承诺):
- 出处强制:AI 回答必须带"哪个会话/哪条消息/哪个 agent"——有源可查,不能瞎编
- 按需查询(pull):AI 不问就不查 → 上下文干净,不被无关记忆污染
- 原文可回跳:AI 拿到的是原始对话全文,不是压缩摘要——决策的"为什么"完整保留
架构总览
你和任何 AI 工具聊的内容,被统一收进一个项目级数据库;你、AI、同事都能查。换工具不丢记忆,换人可交接。
graph TB
subgraph Sources["🖥️ 你的 AI 编程工具(各聊各的)"]
CC["Claude Code<br/>JSONL 文件"]
ZC["ZCode<br/>SQLite 数据库"]
CX["Codex<br/>JSONL 文件"]
QD["Qoder<br/>JSONL 文件"]
TR["Trae<br/>部分支持*"]
end
subgraph Relay["🧠 会话接力(本地记忆层)"]
DAEMON["守护进程 watch<br/>每 30 秒自动同步"]
DB[("relay.sqlite<br/>统一记忆库")]
EXTRACT["结构化提取器<br/>决策 · 话题 · 摘要 · 关键往返"]
end
subgraph Consumers["👥 谁来查询记忆"]
YOU["你(CLI)<br/>search · decisions · history"]
AGENT["AI Agent(MCP)<br/>16 个工具"]
TEAM["同事(HOP 交接包)<br/>export → import"]
end
CC -->|adapter| DAEMON
ZC -->|adapter| DAEMON
CX -->|adapter| DAEMON
QD -->|adapter| DAEMON
TR -.->|仅用户提问| DAEMON
DAEMON --> DB
DB --> EXTRACT
DB --> YOU
DB --> AGENT
DB --> TEAM
style Relay fill:#1a1a2e,color:#e94560
style Sources fill:#16213e,color:#fff
style Consumers fill:#0f3460,color:#fff
* Trae 的 AI 回复端到端加密,仅能采集用户提问。其他工具不在列表里?写一个自定义适配器即可,零改核心代码。
记忆的生命周期
每个会话在记忆库中经历两阶段判定,宁可多等,不固化没聊完的对话:
stateDiagram-v2
[*] --> active: 对话开始/守护捕获
active --> pending_end: 超过10分钟没新消息
pending_end --> active: 你回来继续聊(复活)
pending_end --> confirmed: 安静超过6小时
active --> active: 新消息追加
confirmed --> active: 追加新消息(回滚+摘要重算)
confirmed --> archived: srelay archive(归档)
archived --> active: 新消息到达(复活)
confirmed: ✅ 已固化
confirmed: 提取决策/话题/摘要
confirmed: 进入全文搜索主索引
archived: 📦 已归档
archived: 骨架保留(决策/话题)
archived: 正文已释放(99.4%空间)
为什么需要中间的 pending 状态:对话可以复活(第二天 --resume 继续)。如果直接固化,提取的决策就是残缺的。pending 是 6 小时缓冲带;就算固化了,追加消息也会自动回滚重算。原始会话文件是唯一事实源——库里任何时候都能 srelay rebuild 重建。
核心能力
🖥️ 被动捕获(零打扰)
- 五源适配:Claude Code · ZCode · Codex · Qoder(完整支持)+ Trae(部分:仅用户提问)+ 自定义适配器(加一个 JS 文件接入新工具,零改核心代码)
- 三档隐私:
full(默认) /meta(只存元数据) /off(仅手动) .sessionrelayignore硬边界:隐私排除对自动捕获、手动 save、导出全部生效- 两阶段判定:
active → pending_end → confirmed,resume 自动回滚,原始会话文件是唯一事实源(库随时可rebuild) - 历史回填:
srelay init默认回填近 30 天;srelay sync --backfill all一条命令全量入库
🔍 中文检索
- jieba 分词 + FTS5 双索引(正文 + 元数据),AND 覆盖度语义,OR 兜底
- 语义检索(可选):
srelay semantic enable一键开启——换一种说法也能命中("登录"↔"认证"、"很卡"↔"性能"),本地 CPU 推理(bge-small-zh),字面命中优先、语义只做补充,未启用时行为与纯字面检索完全一致 - jieba 分词 + SQLite FTS5 双索引(六条中文验收用例门禁)
- 会话级 AND 覆盖 + OR 兜底:连写词拆分("认证方案"→ 认证+方案)、短语精确匹配(
"按月分区") - 每条结果强制携带出处块(会话 ID / 来源 agent / 日期 / 消息序号 / 摘要片段)
🤖 MCP Server(16 个工具,9 读 + 7 写域)
任何支持 MCP 的 AI agent 接入后,从此在这个项目里不再是失忆的:
<details> <summary><b>9 个读工具</b>——AI 从此能回答的问题</summary>| 工具 | 回答的问题 |
|---|---|
search_sessions | "我们之前讨论过 X 吗?"(中文全文 + 元数据过滤) |
get_session_detail | "那场讨论具体聊了什么?"(完整消息,支持范围) |
list_sessions | "这个项目都聊过哪些话题?" |
get_decisions | "为什么决定用 X 而不是 Y?"(全部已确认决策,带出处) |
get_file_history | "这个文件为什么这么写?"(跨会话文件讨论史) |
suggest_related_sessions | "还有哪些讨论和这个相关?"(算法发现的同主题会话,可解释理由) |
get_unresolved | "还有什么没定的?"(未决问题清单) |
get_stats | "记忆库什么状态?"(会话数/来源分布/体积) |
set_scope | 检索边界逃生口 |
| 工具 | 能力 | 安全边界 |
|---|---|---|
annotate_session | 给会话打标签 / 写人工摘要 | 只改元数据,不改写对话 |
save_note | AI 把结论写成笔记(决策句式直接入决策库) | source=note,可识别可审计 |
export_handoff | 生成 .hop 交接包 | 只读导出 |
import_handoff | 导入交接包(sha256 校验 + 归化) | 默认隔离模式(正文待放行) |
release_quarantine | 放行隔离会话正文 | 需显式调用 |
link_sessions | 建立会话关联(continues/related/pinned) | 关联可查可撤销 |
get_linked_sessions | 双向查询会话关联(出边/入边) | 只读 |
写域三原则(D21):旁路写入(不碰状态机)· 导入默认隔离 · 笔记可溯源——每条 AI 写入都能被识别、审计、撤销。
🎯 Scope 检索边界
- B 档:
scope.json项目契约(CLI 与 MCP 共用),交集语义只能收窄 - A 档:auto-scope 兜底(MCP 侧近 30 天可配),防上下文污染
- attach:开新会话前挂载指定历史会话(最高优先级谓词)
- 热更新:scope 改动下一次调用立即生效
🧹 遗忘权(srelay forget)
AI(MCP 工具)永远没有删除能力——删除是人的特权。需要时由你亲手执行:…
Description from the npm listing.
- mcp
- mcp-server
- claude-code
- zcode
- session-memory
- cross-agent
- ai-memory
- local-first
- handoff
README badge
Show your rank in a README or on your website. The badge updates automatically.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Ranking history
Listing placement
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (122)Similar npm Claude Code plugins
All 20 @ewanjasper/sessionrelay alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/@ewanjasper/sessionrelay. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.