Skip to main content
Glama

hist-bridge

Claude Code / Codex 里列出并继续另一个工具的历史对话——当 Claude 额度用完时,把某次对话接到 Codex 继续;或反过来。也支持 GLM 5.2(跑在另一个走 z.ai 后端的 Claude Code 里)。

本质是上下文接力(把历史对话作为上下文喂给当前工具继续),不是无损的完整状态重放——跨厂商的内部推理状态/KV cache/工具执行状态无法迁移,这是物理限制。对“继续问答”而言上下文接力完全够用。

它能读哪些历史

来源 (source)

存储

说明

claude

~/.claude/projects/<slug>/<uuid>.jsonl

Claude Code 原生 transcript

codex

~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl + session_index.jsonl

Codex CLI rollout

cursor

<Cursor globalStorage>/state.vscdb(SQLite)

Cursor 的 composer/bubble;在 Cursor 里用 GLM 跑的会话也在这里,按 model 区分(GLM-5/GLM-5.1)

glm

另一个 Claude Code(z.ai 后端)的 projects 目录

与 claude 同格式,默认关闭,需配 root

Related MCP server: claude-kb

暴露的 MCP 工具

  • list_sources() — 列出已配置来源及是否可用。

  • list_conversations({source?, project?, query?, limit?}) — 列历史会话,按时间倒序。

  • get_conversation({source, id, format?, max_messages?, include_reasoning?, include_tools?}) — 把某次会话渲染成可续接内容。format:markdown(完整 transcript,默认)| summary(紧凑交接卡)| json(结构化)。

  • summarize_conversation({source, id}) — 抽取式压缩成「🎯目标 / ✅已完成 / ⚠️卡点 / 📋待办 / 🧭最后状态」交接卡。无需 LLM、确定性、省上下文,长会话优先用它。

  • search_conversations({query, source?, limit?}) — 跨来源全文检索(先标题,后正文)。

摘要器(省上下文)

长会话(几十上百条消息)直接全量载入会吃掉大量上下文。summarize_conversation / format:"summary" 用确定性规则从归一化对话里抽取:首条用户消息→目标;write/edit 工具参数→改动文件;shell 命令→已运行命令;isError 结果→卡点;工具自带的 todo 列表(Cursor todos、Claude TodoWrite)→待办;最后一条真实用户/助手消息→当前状态。一张卡通常只有原文的几十分之一,但保留了「目标 + 进度 + 下一步」——续接问答足够。

安装

npm install
npm run build      # 生成 dist/

在 Claude Code 用

方式 A — 直接注册 MCP server(最快):

claude mcp add --scope user hist-bridge -- node "<绝对路径>/hist-bridge/dist/server.js"

之后在 Claude Code 里直接说:「列出我最近的 codex 对话」「把第 3 个载进来接着聊」。重启 Claude Code 生效。

方式 B — 作为插件安装(额外带 /resume 命令和续接技能): 本仓库已是合法插件结构(.claude-plugin/plugin.json 内联了 MCP server 声明,外加 commands/ + skills/)。通过你的插件 marketplace 或本地插件机制安装后,会多出:

  • /hist-bridge:resume [codex|glm|claude|搜索词] 斜杠命令

  • continue-foreign 技能(自动梳理目标/已完成/未完成再续接)

在 Codex 用

编辑 ~/.codex/config.toml,加:

[mcp_servers.hist-bridge]
command = "node"
args = ["<绝对路径>/hist-bridge/dist/server.js"]
startup_timeout_sec = 20

然后在 Codex 里就能调 list_conversations / get_conversation 等工具。Codex 自己的历史它本来就能 codex resume;这个 server 额外给它跨工具 + 统一检索。

配置 GLM 来源

GLM 有两个去处,按你怎么用分别覆盖:

  1. 在 Cursor 里用 GLM → 已被 cursor 来源自动覆盖,按 model 字段(GLM-5 / GLM-5.1 等)就能认出来,无需额外配置。

  2. 在另一个 z.ai 后端的 Claude Code 里用 GLM(文件格式同 Claude Code)→ 启用 glm 来源:

    • 环境变量(最简单):HIST_BRIDGE_GLM_ROOT=<那个实例的 projects 目录>(自动启用)。

    • 或改 config.jsonsources.glm.root 并把 enabled 设为 true

    • 若那份历史在另一台机器,把对应的 .jsonl 同步过来再指向即可。

Cursor 来源说明

  • 默认按平台自动探测 state.vscdb 路径(win/mac/linux);也可在 config.jsonsources.cursor.root 指定。

  • 读取时会先把 state.vscdb 拷到临时目录再以只读打开,不碰你正在运行的 Cursor,也不会写回。

  • 同一个库里也存着 cursorAuth/* 令牌——本工具只读 composerData/bubbleId,不会导出这些密钥。

调试 CLI(不连 MCP 直接试)

npm run cli -- sources
npm run cli -- list [codex|cursor|glm|claude] [--project X] [--query Y] [--limit N]
npm run cli -- get <source> <id> [--max N] [--json] [--reasoning]
npm run cli -- summarize <source> <id>      # 紧凑交接卡
npm run cli -- search <关键词> [source]

已知边界

  • 会话格式是各工具私有且会变的;解析器做了防御,但厂商改格式时可能需要更新适配器。

  • Codex 的推理(reasoning)是加密的,无法还原;Claude 不在 transcript 里存 system prompt(Codex 存),归一化时会体现这种不对称。

  • search_conversations 的正文扫描有数量上限(默认 60 个会话)以控制开销;标题命中不受限。

  • Cursor 读取依赖 Node 内置 node:sqlite(需 Node ≥ 22.13,本机 Node 24 直接可用;旧版本上 cursor 来源会被报为不可用而非报错)。读取时把 state.vscdb 连同 -wal/-shm 一起拷到私有临时目录(0600 权限、进程退出即删),以只读方式打开;副本含 cursorAuth/* 令牌,故不落在共享 /tmp、用完即清。

  • 摘要器是确定性抽取式,不调 LLM:目标取首条用户消息、已完成取工具调用、卡点取报错结果、待办取工具原生 todo 列表——它不"理解"语义,只做高信噪比的结构化提取。

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/maqitong/hist-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server