another

在多个 coding agent 之间浏览、管理、迁移并继续真实会话。把对话写进目标 agent 的原生存储,在那里直接打开继续,而不是粘贴一份摘要重新解释。 Browse, manage, and resume native coding-agent sessions — or carry one into another agent instead of replacing it with a pasted summary.

another 的标志:紫色与绿色两个相同的 a 字形互相重叠
10
支持的 coding agentcoding agents supported
6
每次发布都跑回归的 agentagents in every release regression
100%
迁移写入都会回读校验of migrations reloaded and verified
MIT
开源许可,本地运行licensed, runs locally

摘要是转述,会话才是原件。A summary is a retelling. The session is the original.

模型用完额度,或者手上这段活更适合另一个模型时,常规做法是总结一遍再粘到另一边,然后把已经讲清楚的事重讲一次。another 迁移的是会话本身。When the model runs out of quota, or the work turns out to want a different one, the usual escape is to summarize and paste, then re-explain what was already understood. another moves the session itself.

native store

落在原生存储里Lands in the native store

会话按目标 agent 自己的格式写入,用它自己的命令打开,例如 codex resumeclaude --resume。不是一条粘贴进去的消息。The session is written in the target agent's own format and opens with its own command — codex resume, claude --resume. Not a pasted message.

verify + rollback

写完再读一遍Every write is read back

每次迁移都会重新加载写入结果并比对内容摘要,不一致就只删除这次迁移产生的东西。来源会话自始至终不动。Each migration reloads what it wrote and compares a content digest. On mismatch it removes only what that migration created. The source session is never mutated.

one screen

一个界面管完One screen for all of it

浏览、搜索、预览、重命名、归档、删除、迁移都在同一个列表里完成,默认只看当前 Git 项目,按 f 切到全部项目。Browse, search, preview, rename, archive, delete, and migrate without leaving the list. It starts scoped to the current Git project; f shows all of them.

another 的终端界面:来自多个 coding agent 的会话列表与目标 agent 选择器
会话列表用等宽色块标记 agent,来源与去向选择器里色块和全名同时出现。The list marks each agent with a fixed-width color chip; the pickers show the chip next to the full name.

十个 agent,两级承诺。Ten agents, two levels of promise.

Pi、OpenCode 2、Claude Code、Codex、Antigravity 和 Qwen Code 进入每次发布的回归检查。Cursor、OpenCode、CommandCode 和 Hermes 保留兼容适配,但不承诺每个版本都完成端到端实测。OpenCode 与 OpenCode 2 是两个独立 provider。Pi, OpenCode 2, Claude Code, Codex, Antigravity, and Qwen Code enter every release regression pass. Cursor, OpenCode, CommandCode, and Hermes remain compatibility adapters without a promised end-to-end test each release. OpenCode and OpenCode 2 are deliberately separate providers.

Agent 标记Tag 原生恢复命令Native resume 重命名Rename 归档Archive 删除Delete
PiPIpi --session <file>
CodexCDXcodex resume <id>
Claude CodeCLAclaude --resume <id>
OpenCode 2OC2opencode2 --session <id>
Qwen CodeQWNqwen --resume <id>
AntigravityAGYagy --conversation <id>
CursorCURcursor-agent --resume <id>
OpenCodeOPCopencode --session <id>
CommandCodeCMDcommandcode --resume <id>
HermesHRMhermes --resume <id>

绿色标记是持续实测的六个。 表示这个 agent 没有经过验证的原生操作契约:重命名、归档和删除都直接改对应 agent 的原生状态,another 不维护一份刷新后就消失的私有标记。首次 setup 也不会按本机残留数据自动全选,索引和展示哪些 agent 由你手动决定。Green tags are the continuously tested six. A dash means that agent has no verified native contract for the operation — rename, archive, and delete change the agent's own state rather than an another-only marker that disappears on refresh. First-run setup never auto-selects agents from detected binaries; you choose what another indexes and exposes.

迁移什么,不迁移什么,写在页面上。What crosses the boundary is part of the product.

按顺序排列的用户与 assistant 文本、目标格式支持的时间戳、项目目录、标题,以及一个用于去重和校验的迁移标记会被保留。供应商特有的推理签名、工具调用与结果、图片和系统记录没有可移植的等价物,不迁移。Ordered user and assistant text, timestamps the target supports, the project directory, the title, and a migration marker used for deduplication and verification all cross. Provider-specific reasoning signatures, tool calls, tool results, images, and system records have no portable equivalent and are excluded.

失败只回收这一次的产物Failure removes only that artifact校验不通过时,只删除这次迁移创建的目标会话,来源保持原样。A failed verification removes only the target created by that migration; the source stays as it was.
删除默认停在取消上Delete defaults to CancelCtrl+D 会先显示 provider、标题、项目和完整会话 ID,默认选中取消;正在运行的会话受保护。Ctrl+D shows the provider, title, project, and full session ID with Cancel preselected, and exactly identified active sessions are protected.
本地文件权限收紧Local files stay tight配置目录 0700,配置与 SQLite 索引文件 0600;索引放在 ~/.cache/another/,重新扫描时跳过未变会话。The configuration directory is mode 0700, config and SQLite index files are 0600, and the index under ~/.cache/another/ skips unchanged sessions on re-scan.
不保存任何 API keyNo API keys of its own标题建议借用你已经登录的 agent CLI;在 setup 里关掉某个 agent,只会删掉它的本地索引行,不动它的原生会话。Title suggestions borrow an agent CLI you already authenticated. Disabling an agent in setup removes only its local index rows, never its native sessions.
another migrate --to codex
# 读取来源会话read the source read claude-code 42 turns write codex native rollout verify digest match source untouched # 上下文模式context modes auto 全部放得下就全留,否则选近期上下文keep every turn when it fits, else recent context full 保留清理后的全部轮次keep every cleaned turn regardless recent 始终生成有上限的近期上下文always a bounded recent view

标题按规则生成,不靠模型自由发挥。Titles follow a contract, not the model's mood.

在 setup 里指定一个已安装的 agent 后,Ctrl+R 会在后台请求一个标题:中文 MMDD|类型|主题,英文 MMDD|Type|Topic。日期取自索引里的创建时间并转换到 Asia/Shanghai,不交给模型猜。不符合格式、晚到或失败的建议一律丢弃,不覆盖你已经输入的文字。Name an installed agent in setup and Ctrl+R asks it, in the background, for one title: MMDD|类型|主题 in Chinese, MMDD|Type|Topic in English. The date comes from the indexed creation time converted to Asia/Shanghai, never from the model. Suggestions that miss the contract, arrive late, or fail outright are discarded without touching what you typed.

another 的批量命名确认页:原标题到新标题的对照表与折叠计数
x 标记会话,Ctrl+T 批量生成。确认页只列出会变更的行,冻结、失败和无变化折成计数,应用时逐行回读验证。Mark sessions with x and press Ctrl+T. The review page lists only rows that would change, folds frozen, failed, and unchanged rows into counts, and verifies each row on apply.
模型列表来自 CLI 本身The model list comes from the CLI能列模型的 agent 用它自己的命令列(pi --list-modelsagy modelsopencode models);不能列的直接进手输,并说明原因。Agents that can list models use their own command (pi --list-models, agy models, opencode models); the rest go straight to typing, with the reason shown.
残留会话会被挡在索引外Headless leftovers stay out of the index生成标题时几个 CLI 会为每次无头调用留下一条自己的会话。another 按固定提示词首行和 another-titler-* 临时目录识别并排除它们,只清自己的索引。Several CLIs record a session for every headless run. another identifies those by the prompt's fixed first line and the another-titler-* throwaway directory and keeps them out — of its own index only.
OpenCode 2 可以少调一次模型OpenCode 2 can skip the extra call随二进制分发的标题插件让 OpenCode 2 在自己首次命名时就执行同一规则。它只写 plugins/another-title-policy/,从不改你的 opencode.json(c)A title plugin ships inside the binary so OpenCode 2 enforces the same contract during its own first-title request. It writes only plugins/another-title-policy/ and never edits your opencode.json(c).
another --help
# 浏览和搜索browse and search another list --provider codex --cwd --json another search "stripe webhook" # 迁移move a session another migrate <id> --to pi -y another resume <id> --to claude-code # 可移植备份portable backup another export <id> -o session.another.json another import session.another.json --to codex # 配置和索引config and index another setup another providers doctor

装上,选 agent,开始迁移。Install it, pick your agents, move a session.

支持 macOS 与 Linux(amd64 / arm64)。首次运行会打开 setup:选界面语言、勾选要索引的 agent,可选一个用于生成标题的 agent。macOS and Linux, amd64 and arm64. The first run opens setup: pick the interface language, choose which agents to index, and optionally name one agent for title suggestions.

HomebrewHomebrew

Homebrew 6 要求先信任第三方 tap,否则会拒绝安装。旧版 Homebrew 不认识 brew trust,跳过第一行即可。Homebrew 6 refuses to load a third-party tap until it is trusted. Older versions treat brew trust as unknown — skip that line there.

brew trust nxxxsooo/tap brew install nxxxsooo/tap/another another
安装脚本Install scriptcurl -fsSL https://raw.githubusercontent.com/nxxxsooo/another/main/scripts/install.sh | bash
从源码From sourcego install github.com/nxxxsooo/another/cmd/another@latest,需要 Go 1.24 或更高版本。 — requires Go 1.24 or newer.
手动下载Manual download从 Releases 取对应压缩包,用 checksums.txt 校验后把二进制放进 PATHTake the matching tarball from Releases, verify it against checksums.txt, and put the binary on your PATH.
更新Updatesbrew upgrade another。Homebrew 之外的安装方式需要手动更新,已装的二进制不会跟随仓库变化。 — outside Homebrew, updates are manual; an installed binary does not follow the repository.

换一个 agent,不用重讲一遍。Change the agent without starting over.

本地运行,读各 agent 自己的原生存储,MIT 许可,源码可读。Runs locally against each agent's own native store. MIT licensed, source readable.