关于 showagent
showagent 是面向多种编码 Agent 用户的终端工具,可搜索本地会话记录,并将对话转换为其他受支持 Agent 的原生会话,写入前可先预览。
主要功能
- 01跨受支持的 Agent 搜索会话
- 02在原 CLI 中恢复会话
- 03将对话转换为原生会话
- 04预览转移范围及丢弃的状态
- 05导入分享链接和对话文本
- 06通过 MCP 提供历史搜索与交接
适用场景
- 01切换编码 Agent 后继续任务
- 02让另一 Agent 审查对话
- 03搜索并重新打开旧会话
- 04将网页分享对话导入编码 Agent
MCP 相关
`showagent mcp` 允许 MCP 客户端搜索和读取本地编码 Agent 历史记录,并请求交接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
showagent
切换编码 Agent,带上对话。
Claude 配额用完了,修复任务才进行到一半?想让 Codex 检查 Gemini 制定的计划?
在 Antigravity 中开始,想在终端里完成?
showagent 会找到你机器上的所有编码 Agent 会话,并在另一个 Agent 中继续,
以该 Agent 原生会话的形式,只需按几下键。
Claude Code · Codex · Gemini CLI · Antigravity 全新 · OpenCode · MiMoCode · Pi · jcode

curl -fsSL https://raw.githubusercontent.com/aytzey/showagent/main/scripts/install.sh | sh
# or: brew install aytzey/tap/showagent
showagent
此演示会在示例会话上运行真正的 showagent 二进制文件;目标 CLI 是带标签的桩程序。请参阅兼容性证据,了解已使用真实 Agent 进行测试的内容。
为什么选择 showagent
每个编码 Agent 都以自己的私有格式保存历史记录。切换 Agent 通常意味着从头开始,重新解释任务。showagent 会读取所有受支持的存储,将你的所有会话放在同一个选择器中,并在不同 Agent 之间转移对话,无需离开终端。
- 在 Agent 之间转移对话。 八种 Agent,一个选择器。将会话从 Claude Code 交给 Codex,从 Codex 交给 Gemini CLI 再转回来,或将 Antigravity 对话带到其中任意一个 Agent。
- 原生会话,而非复制粘贴。 目标 Agent 会在自己的存储中获得一个真实会话,因此
claude --resume、codex resume、gemini --resume等命令都能像打开其他会话一样重新打开它。 - 写入前先预览。 第一次按
x会显示工作区、要转移的轮次数以及会丢弃的内容。只有第二次按x才会写入,而且不会修改原始会话。 - 查找过去的任意会话。 按工作区分组,并在所有 Agent 中一次性模糊搜索 Agent、会话 ID、路径,以及首条/最新提示词。
- 你的 Agent 也能使用它。
showagent mcp可让 MCP 客户端搜索和读取其他 Agent 的历史记录,并请求交接。 - 导入网页聊天。 将公开的 ChatGPT 或 Claude 分享链接、对话记录文件或粘贴的文本导入为原生编码 Agent 会话。
- 仅在本地运行。 无托管服务、遥测或账户。请参阅隐私常见问题。
常见交接场景
| 你当前所在的位置 | 你的需求 | 按键 |
|---|---|---|
| Claude Code,任务进行到一半时配额用完 | 在 Codex 或 Gemini CLI 中继续 | 按 o 选择目标,按 x x 转换,再按 enter 打开 |
| Codex,遇到难以解决的错误 | 请 Claude 或 Gemini 提供第二种意见 | 同样按 o、x x、enter |
| Antigravity IDE | 在终端 Agent 中继续同一对话 | 同样按 o、x x、enter |
| 除 Antigravity 之外的任意 Agent | 创建干净分支,尝试另一种方向 | 按 n |
| 任意 Agent | 在创建该会话的 Agent 中重新打开上周的会话 | 按 / 搜索,再按 enter(Antigravity IDE 对话只能交接) |
快速开始
你需要一个现有的本地会话、目标 Agent 的 CLI(已加入 PATH),并且已完成常规登录。请保留原始工作区。
showagent
- 按
/,搜索工作区或会话中第一条或最新一条用户提示词里的短语。按enter结束搜索,然后选择要继续的会话。 - 按
o,直到目标为claude(或其他已安装的 Agent)。 - 按
x,查看将被丢弃的工作区、消息范围和状态。再次按x,写入并选择新会话。 - 按
enter,在目标 CLI 中打开新会话。
想使用命令?Codex → Claude 交接指南介绍了如何选择明确的会话 ID、预览、转换和恢复会话。它还说明了反向操作以及转换会保留的内容。
如果 showagent 帮你省去了一次重新解释,点个 ⭐ 可以帮助更多人发现它。
安装
在 Linux 或 macOS 上,安装最新的 GitHub 发行版。脚本会根据该发行版的 SHA256SUMS 校验归档,通常会安装到 ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/aytzey/showagent/main/scripts/install.sh | sh
如果该目录不在 PATH 中,可以直接运行 ~/.local/bin/showagent,也可以将该目录添加到 shell 的 PATH 中。
在 Windows 上,从最新发行版下载并解压 windows_amd64.zip 归档,然后在 PowerShell 中从解压目录运行 .\showagent.exe。Windows 支持为实验性;请参阅平台和原生恢复证据。
Homebrew 和 Go 安装仍可通过其他安装选项使用。 发行版详情说明了不同渠道之间的版本差异。
支持的 Agent
| Agent | CLI | 会话读取位置 | 环境变量覆盖项 | 转换来源 | 转换目标 |
|---|---|---|---|---|---|
| Codex | codex | ~/.codex/sessions/**/*.jsonl | CODEX_HOME | ✅ | ✅ |
| Claude Code | claude | ~/.claude/projects/**/*.jsonl | CLAUDE_HOME | ✅ | ✅ |
| Gemini CLI | gemini | ~/.gemini/tmp/<project>/chats/ | GEMINI_CLI_HOME | ✅ | ✅ |
| Antigravity | agy | ~/.gemini/antigravity-cli/(CLI)、~/.gemini/antigravity-ide/(IDE) | ANTIGRAVITY_HOME | ✅ | — |
| OpenCode | opencode | opencode.db,通过 opencode CLI | OPENCODE_DATA_HOME | ✅ | ✅ |
| MiMoCode | mimo | mimocode.db,通过 mimo CLI | MIMOCODE_HOME | ✅ | ✅ |
| jcode | jcode | ~/.jcode/sessions/*.json | JCODE_HOME | ✅ | ✅ |
| Pi | pi | ~/.pi/agent/sessions/**/*.jsonl | PI_CODING_AGENT_DIR、PI_CODING_AGENT_SESSION_DIR | ✅ | ✅ |
说明:
- 此表说明已实现的适配器,并不表示每个提供方的所有版本和转换方向都通过了真实 CLI 测试。请参阅兼容性记录。
- Antigravity 有两种使用界面。来自
agy终端 Agent 的对话会与其工作区一并列出,并可通过agy --conversation <id>重新打开。来自 Antigravity IDE 的对话会作为交接来源列出:可将其转换到任何其他受支持的 Agent。showagent 会读取 Antigravity 保存在每个对话旁边的纯文本记录,绝不会打开 Antigravity 的私有数据库。 目前还不能转换到 Antigravity:agy无法在不进行模型轮次的情况下创建对话,而在该轮次中,如果交接的文本要求模型写入文件,模型就可能写入文件。待agy提供安全的导入方式后,showagent 将支持此转换方向。 - OpenCode 和 MiMoCode 将会话存储在 SQLite 数据库中,因此所有操作(发现、导出、导入、删除)都通过它们各自的 CLI 执行;showagent 绝不会直接写入数据库。只有在安装了 CLI 的情况下,才会显示 OpenCode、MiMoCode 和 jcode。
- 选择器只会提供其 CLI 已位于
PATH中的交接目标。 对于基于文件的 Agent,即使尚未安装其 CLI,脚本化转换仍可预先准备会话;OpenCode 和 MiMoCode 则始终需要其 CLI,因为导入操作会通过 Agent 本身完成。 - jcode 是一款小众的实验性 Agent CLI。其支持会自动隐藏:如果
PATH中没有jcode二进制文件,showagent 就不会显示它。 - Pi 会话是带版本的 JSONL 树。showagent 会沿着
parentId链跟随 Pi 的活动叶节点,因此不会预览或移入其他 Agent 的废弃分支。转换后的会话采用 Pi 原生 v3 格式;兼容性记录会区分文件转换与原生加载器及模型续接检查。 - 在项目目录中启动 showagent 时,可以看到该项目本地的 Pi
sessionDir。与 Pi 本身一样,除非通过PI_CODING_AGENT_SESSION_DIR全局选定,否则 showagent 无法发现属于其他项目的任意自定义会话根目录。 - 平台:Linux 和 macOS(amd64 + arm64)。Windows(amd64)版本也已发布,但仍属实验性:恢复会话时,Agent 将作为子进程运行,而不是替换 showagent。
其他安装选项
# Homebrew (Linux/macOS)
brew install aytzey/tap/showagent
# Go 1.26.10+
go install github.com/aytzey/showagent/cmd/showagent@latest
Homebrew、GitHub releases、Go 模块版本和 MCP bundles 的更新计划可能各不相同。Go 的 @latest 遵循模块版本解析规则,因此结果可能与 GitHub 的最新版本不同;安装后请检查 showagent --version 和 showagent --help。请参阅发行详情,了解各发行渠道的功能和更新说明。
发行页面也提供适用于 linux/darwin amd64 + arm64 和 windows amd64(实验性)的归档文件。
更多命令
showagent # open the interactive picker
showagent list # plain table of every session
showagent list --json # the same, machine-readable
showagent transcript latest --max-turns 50 --json
# bounded, secret-redacted context for local handoff
showagent resume latest # reopen the most recent session, any agent
showagent convert SOURCE_SESSION_ID --to claude --dry-run
# preview exactly what a hand-off would carry/drop
showagent import --url CHAT_SHARE_URL --to codex --cwd ./my-project
# create a native coding-agent session from a public web chat
showagent import --file conversation.txt --into codex:EXACT_SESSION_ID
# add text to an existing Codex session's context
showagent info latest # exact resume command + storage location
showagent mcp # serve session history to MCP-capable agents (stdio)
showagent mcp --read-only # same search/transcript tools, without tools that write copies
showagent mcp --allow-secrets
# explicitly allow verbatim secret-like transcript values
showagent update # update a standalone install (Homebrew: brew upgrade aytzey/tap/showagent)
showagent --help # full CLI help
将 SOURCE_SESSION_ID 替换为你从 showagent list 中选定的 ID。
较旧版本(例如 v0.11.0)中没有 transcript 命令;
如果帮助输出与你看到的不同,请查看发行版详情。
有关支持的对话记录格式、安全边界,以及创建会话与向现有会话添加上下文之间的区别,
请参阅网页对话导入。
快捷键
| 按键 | 操作 |
|---|---|
↑/k、↓/j、pgup/pgdn | 在会话间移动 |
/ | 搜索 Agent、会话 ID、路径以及首条/最近一条用户提示词(每个词都必须匹配) |
enter | 在所选会话自己的 CLI 中恢复该会话 |
1..9 | 切换提供方的可见性,编号与标题栏中的列出顺序一致 |
p | 循环切换预览列:首条 → 最近一条 → 首条 + 最近一条消息 |
space | 折叠或展开所选工作区分组 |
o | 循环切换所选会话的转换目标 |
t | 循环切换转换范围:所有轮次,或最近的 200/100/50/20/10 轮 |
x | 预览转换;再次按 x 可写入并选中新会话 |
n | 分支:将可转移的对话复制到同一 Agent 的新会话中(Antigravity 不支持) |
y | 切换提供方的 yolo 恢复模式(jcode/Pi 不会添加标志) |
C | 组合:使用学习内容捕获提示词恢复会话(见下文) |
i | 导入 ChatGPT/Claude 分享链接或粘贴的对话记录 |
d、del、backspace | 删除会话——再次按下确认,移动光标则会取消待确认状态 |
r | 重新扫描会话存储(保留光标、搜索和筛选条件) |
? | 隐藏或显示按键框(在小终端上显示完整的快捷键覆盖层) |
esc | 清除搜索 / 关闭覆盖层 / 取消待确认的删除(不会退出) |
q、ctrl+c | 退出 |
脚本
showagent list --json 会输出按时间从新到旧排序的数组——字段名称
是稳定的契约:
[
{
"id": "1f7c9a2e-4b31-4c8e-9d02-8a5e3f6b1c44",
"provider": "codex",
"workspace": "/home/you/code/api-server",
"updated": "2026-07-08T19:51:25Z",
"first_message": "Add rate limiting to POST /v1/charges",
"last_message": "the redis TTL test is flaky - mock the clock"
}
]
showagent resume <id|latest> [--yolo] 无需选择器即可恢复会话,因此可以使用 shell
别名,一键重新打开上一个会话。
showagent transcript <id|latest> [--max-turns N] [--json] 会导出最近的
若干轮,供需要有界上下文交接的本地工具使用。输出始终会对机密信息进行脱敏、标记为不可信历史,
且最多包含 500 轮。
showagent convert <id|latest> --to <provider> --dry-run 会在写入任何内容之前打印交接信息:
源会话、目标提供方、工作区、范围、可转移轮数、最后一条用户请求,以及将被丢弃的
特定于 Agent 的状态。移除 --dry-run 可写入转换后的会话,随后 showagent
会打印新条目的恢复命令。
showagent import --url <public-share-url> --to <provider> --cwd <directory>
会根据 ChatGPT 或 Claude 网页分享创建新的原生会话。对于复制的对话记录,请使用 --file
或 --stdin,并通过 --dry-run 预览。现有的
Codex 会话支持 --into codex:<exact-id>;导入的消息会成为模型上下文,
但可能不会显示为常规聊天气泡。其他针对现有会话的目标仍处于禁用状态,直到其 CLI 提供安全的同 ID 追加契约。
showagent info <id|latest> [--yolo] 会打印会话的准确恢复命令、
工作目录和存储位置。
退出代码:0 表示成功,1 表示错误(包括“未找到会话”),2 表示用法错误。
当 stdout 不是终端时,直接运行 showagent 会打印 list 表格,因此管道可以直接使用。
在 Agent 内部使用(MCP)
showagent mcp 会运行一个 stdio MCP 服务,因此 MCP 客户端可以查找受支持的本地 Agent 会话,读取它们最近的对话轮次,并在另一个 Agent 中请求创建新的原生会话。例如,让它查找首条或最新提示词中提及速率限制的 Codex 会话,然后读取该会话以获取上下文。搜索匹配工作区以及首条/末条用户消息的文本;不会搜索对话中的每条消息。
该服务会返回一条供你执行的恢复命令。它不会自行启动交互式 Agent,也不会继续模型对话。
# Claude Code
claude mcp add showagent -- showagent mcp
# Codex (~/.codex/config.toml)
[mcp_servers.showagent]
command = "showagent"
args = ["mcp"]
MCP 客户端可以将返回的对话文本发送给其模型提供商。因此,默认情况下会对常见的类似机密的值进行隐藏,并将每份对话标记为不可信的历史数据,而非指令。如果需要原样保留这些值,用户必须显式使用 showagent mcp --allow-secrets 启动服务;MCP 工具调用无法绕过隐藏处理。对于绝不应写入会话副本的客户端,请注册 showagent mcp --read-only;该模式会完全移除 branch_session 和 convert_session。
工具:
| 工具 | 功能 |
|---|---|
list_sessions | 查找受支持的本地会话——可按提供商、工作区子串或工作区与首条/末条用户消息中的自由文本进行筛选(默认 25 个,最多 100 个结果) |
get_transcript | 读取最近的用户/助手对话轮次(默认 50 轮,硬性上限为 500 轮);除非服务以 --allow-secrets 显式启动,否则会隐藏机密 |
branch_session | 将可转移的对话复制到同一 Agent 中的新会话;返回新 ID、文件和恢复命令 |
convert_session | 将会话改写为另一个 Agent 的原生格式;返回新 ID、文件和恢复命令 |
resume_command | 恢复会话所需的准确 shell 命令(以及 cwd)——以字符串形式返回,绝不执行 |
默认 MCP 功能有意保持非破坏性:没有删除工具,也绝不会启动或恢复交互式 Agent。OpenCode 存储操作仍通过本地 opencode CLI 执行,因为其会话存储在 SQLite 中。删除会话仅可在 TUI 中进行,且需在人类监督下按两次按键。分支和转换操作只会添加新会话——绝不会修改原会话;而 --read-only 甚至会移除这些新增会话的工具。
对比
claude-squad 使用 tmux 和 git 工作树管理并行运行的 Agent。ccmanager 也会管理运行中的 Agent 会话和工作树,但无需 tmux。Agent Sessions 提供 macOS 图形界面,用于浏览 Agent 历史记录。hstry 提供共享历史数据库、搜索和原生格式转换功能。
showagent 专注于查找并继续你机器上已有的会话:它提供终端选择器,可读取现有存储、预览交接内容,并为另一个受支持的 Agent 写入新会话。它可以与用于运行实时任务的工具配合使用。请先阅读交接指南,并查看已测试的兼容范围,以确认是否适用于你的工作流。
复合工程
在会话上按 C 并选择一个 Agent。showagent 会在该位置恢复会话,
并启动复合工程流程:回顾已解决的问题,然后将可长期复用的经验记录为 Markdown。
经验按项目汇总,但由所有 Agent 共享:每个工作区都会在
~/.showagent/learnings/<project>/ 下获得一个目录(可通过
SHOWAGENT_LEARNINGS_DIR 覆盖),所有 Agent 都会读取和写入该目录。选择未创建该会话的 Agent 时,会先转换可转移的用户和助手消息;不会复制提供方私有的工具和运行时状态。
showagent setup 会将配套的
复合工程插件
安装到机器上找到的 Codex、Claude Code 和 Pi CLI 中。对于 Pi,它还会
安装 pi-subagents 和 pi-ask-user 配套软件包。该命令可重复执行,且只会安装缺少的内容。
常见问题
我的会话数据会发送到其他地方吗?
showagent 本身不会上传会话内容,也没有遥测功能或账户。MCP 客户端可能会将 get_transcript 的结果发送给该客户端的模型提供商,因此 MCP 转录内容默认会隐藏常见机密;注册服务前请牢记这一界限。Web 导入只会获取你明确提供的公开 ChatGPT 或 Claude 分享链接;不会使用浏览器 Cookie、私密聊天链接或任意主机。可选的版本更新器和启动时更新检查也会使用 HTTP(使用 SHOWAGENT_NO_UPDATE_CHECK=1 可禁用更新检查)。showagent setup 会调用已安装的 Codex/Claude/Pi CLI,这些 CLI 可能会下载请求的插件。渲染消息预览前也会隐藏类似密码的字符串和 API 密钥(相关测试见 internal/session/session_test.go)。发布压缩包附带 SHA256SUMS 文件,v0.7.0 之后的版本还附带 GitHub 构建来源证明——可使用 gh attestation verify <file> --repo aytzey/showagent 验证。
转换是如何进行的?
转换会从源转录中提取用户和助手的对话轮次,并以目标 Agent 的原生格式写入一个全新的会话(OpenCode 和 MiMoCode 使用各自的 import 命令),以便目标 Agent 自己的恢复命令能够找到它。代码块、换行和缩进都会保留,原始会话绝不会被修改。对于基于文件的目标,showagent 会自行写入新文件:权限为私有(0600),并以原子方式写入,因此即使发生崩溃,也不会在其他工具的存储中留下写入不完整的会话。
信任操作是明确的:在 TUI 中,第一次按 x 会显示交接预览,第二次按 x 才会写入。在脚本中,使用 showagent convert ... --dry-run 可查看相同的预览。转换会有意不复制工具调用内部数据、审批历史、加密推理数据块或提供商附件:这些内容仅属于源 Agent,而且无论如何都无法正确重放。分支操作使用相同的安全用户/助手对话轮次投影;它不会逐字节克隆提供商私有的运行时元数据。t / --scope 会在转换前将范围裁剪到最近的 N 个对话轮次。
删除操作具体会做什么?
Codex 会通过 codex delete --force 删除会话;OpenCode 会通过 opencode session delete 删除(该操作会在其数据库中级联删除)。Claude Code 会删除 JSONL 文件及其对应的索引条目,jcode 会删除 JSON 文件及其备份/日志附属文件,Gemini 和 Pi 会删除其会话文件。showagent 不会删除 Antigravity 对话;请在 agy 自己的 /resume 选择器中删除,以保持其数据库一致。删除操作始终需要按两次,将光标移开则会取消确认状态。
Windows 呢? 已发布 Windows 二进制文件,但恢复会话时会启动子进程,而不是替换 showagent。Windows 仍属实验性支持;兼容性记录列出了实际运行过的检查。
列表中缺少某个会话。
如果未找到会话,运行 showagent list 会准确显示扫描了哪些目录,以及哪些环境变量覆盖了这些目录。开始新对话后,按 r 可在当前位置重新扫描。
添加提供商
提供商需要实现 internal/session/provider.go 中的接口,包括发现会话、恢复参数、转录提取和转换功能。可参考 gemini.go(基于文件的存储)、opencode.go(基于 CLI 的存储)和 antigravity.go(仅作为交接来源)。将其注册到 registry 切片后,TUI 会自动获取徽标、筛选键和转换目标。添加对应的环境变量覆盖项,以确保其测试彼此隔离。欢迎提交问题和 PR。
构建
git clone https://github.com/aytzey/showagent.git
cd showagent
go test ./...
go build -o showagent ./cmd/showagent
最低支持的工具链为 Go 1.26.10(参见 go.mod);CI 还会运行竞态测试、golangci-lint、govulncheck 以及所有已发布的交叉编译目标。
演示动画使用 vhs、虚构的测试数据和模拟的 Agent 输出;它不是原生简历测试。录制和隔离说明见 demo/README.md。
安全问题和敏感数据泄露应私下报告;请参见 SECURITY.md。贡献相关事项见 CONTRIBUTING.md。
Star 历史
许可证
MIT。使用 Bubble Tea、 Bubbles 和 Lip Gloss 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。