agent-deck:一个终端窗口管理所有 AI 编程代理会话
该项目围绕「asheshgoplani/agent-deck」构建,面向真实业务场景提供可复用的开源实践方案,支持稳定落地与可扩展的项目实践。
秒懂
- 它是什么?
- agent-deck 是一个用 Go 编写的终端会话管理器,统一管理 Claude、Gemini、OpenCode、Codex 等 AI 编程代理的多个会话。它提供 TUI、会话分叉、MCP 和技能管理,以及一个可通过手机控制的 conductor 功能。
- 适合谁用?
- agent-deck 适合同时运行多个 AI 编程代理、需要在一个终端里切换和管理这些会话的开发者,尤其是那些已经依赖 Claude Code 或 OpenCode 并希望减少上下文丢失的人。不适合只用单个代理、不需要会话分叉或远程监督的用户,因为它的核心价值在于规模化管理。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 2 天前。
- 用什么语言写的?
- 主要是 Go(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
一个终端,管理整支代理舰队
如果你同时用 Claude Code 跑十个项目,用 OpenCode 跑另外五个,再有一个代理在后台执行任务,那么每个代理都有自己的终端窗口,切换和追踪状态会变得混乱。agent-deck 解决的问题正是这个:它提供一个统一的 TUI,展示所有会话的状态,包括运行中、等待中、已完成,并允许你通过按键在不同会话之间切换。这个工具面向的是重度使用 AI 编程代理的开发者,尤其是那些需要并行处理多个任务、不希望丢失每个会话上下文的人。它不是一个新的代理,而是一个会话管理器,相当于给现有代理加了一个指挥中心。
会话分叉与上下文继承
agent-deck 的核心机制之一是会话分叉。按 f 键可以快速分叉当前会话,按 F 可以自定义名称和分组。分叉的会话会继承父会话的对话历史,这是通过调用代理工具的原生分叉支持实现的,例如 Claude 和 OpenCode 都有内置的分叉功能。对于 Codex,分叉要求 codex CLI 支持 codex fork <session-id>,README 中明确提到在 codex-cli 0.137.0 上验证过。这意味着你可以从一次探索中分出多个分支,尝试不同方案,而不会丢失原始上下文。这种设计避免了复制整个会话目录或手动拼接历史,而是依赖每个代理自己的机制,所以分叉的可靠性取决于你使用的代理版本。
MCP 和技能管理:不碰配置文件
MCP(Model Context Protocol)服务器通常需要手动编辑配置文件才能附加到会话,agent-deck 的 MCP 管理器允许你在 TUI 中按 m 打开,用空格键切换启用状态,用 Tab 键在 LOCAL 和 GLOBAL 作用域之间循环。你只需要在 $XDG_CONFIG_HOME/agent-deck/config.toml(默认 ~/.config/agent-deck/config.toml)中定义一次 MCP 服务器,之后就可以按项目或全局来切换。Skills Manager 则针对 Claude 会话,按 s 打开,可以从一个池中附加或分离技能。值得注意的是,这些操作会自动处理代理重启,比如附加 MCP 后 agent-deck 会重启会话以加载新配置。这个功能的价值在于,你不需要记住每个代理的配置文件路径和格式,而是通过一个统一界面管理。
安装与快速上手
安装 agent-deck 有多种方式,最简单的是执行 curl 脚本:curl -fsSL https://raw.githubusercontent.com/asheshgoplani/agent-deck/main/install.sh | bash,然后运行 agent-deck 启动 TUI。也支持 Homebrew(brew install asheshgoplani/tap/agent-deck)、Go install(go install github.com/asheshgoplani/agent-deck/cmd/agent-deck@latest)和从源码构建(make install)。快速开始包括几个关键命令:agent-deck add . -c claude 添加当前目录并用 Claude 创建会话,agent-deck session fork my-proj 分叉一个会话,agent-deck session send my-proj --message-file task.md 发送多行提示词,agent-deck mcp attach my-proj exa 附加 MCP,agent-deck skill attach my-proj docs --source pool --restart 附加技能并重启。还有一个 web UI 可以通过 agent-deck web 启动,默认监听 http://127.0.0.1:8420。
conductor:把监督交给手机
conductor 是 agent-deck 的一个独特功能,它允许你通过 Telegram、Slack 或 Discord 远程监督所有会话。设置过程被设计成向导式:先创建 Telegram bot 获取 token 和用户 ID,然后运行 agent-deck conductor setup work --description "Work fleet" 和 agent-deck session start conductor-work,之后给 bot 发 /status 就能查询所有会话状态。conductor 会回答常规问题,并把重要问题升级到你的手机,避免等待中的会话无人处理。文档中还提到可以添加 watcher,让外部事件(如 GitHub 事件、gmail、ntfy 推送、会议)唤醒 conductor。这个机制本质上是一个常驻的代理会话,它监督其他会话,适合需要在外出时保持代理运行的用户。但要注意,远程通道意味着你的会话状态会经过第三方服务,如果项目敏感,这可能是一个隐私考量。
已知的摩擦点:版本变化与配置
README 中特别提到一个 v1.9.55 的行为变化:在新会话对话框中,按 Enter 现在会前进到下一个字段(Name 和 Branch),而不是提交会话。如果你习惯输入名称后直接回车,可能会意外创建不完整的会话。要创建会话,需要使用 Ctrl+S。如果你喜欢旧行为,可以在配置中设置 [ui].new_session_enter_advances = false。这个变化说明 agent-deck 的交互细节在快速迭代,升级版本后可能需要调整习惯。另一个限制是卸载时,agent-deck uninstall 会交互式删除,而 --keep-data 可以保留会话数据,但如果你希望完全清除,需要确认数据存储位置。这些细节表明,工具虽然方便,但配置和版本差异需要用户留意。
维护与替代方案
agent-deck 采用 MIT 许可证,允许自由使用、修改和分发。项目维护依赖社区:README 明确欢迎贡献者,并描述了一个验证管道,声称每个 PR 大约一天内被验证(应用、构建、测试),好的 PR 会在下一个发布批次中合并。它还在寻找 1-2 名共同维护者来负责特定领域。这意味着项目的长期健康取决于社区参与,如果你需要商业支持,这可能不是最佳选择。与 agent-deck 相似的替代方案是 tmux 配合手动脚本,或者使用每个代理自带的会话管理功能,例如 Claude Code 的 --resume 和 --continue。区别在于,tmux 只管理终端窗口,不理解会话状态或代理上下文,而 agent-deck 专门针对代理会话设计,提供了分叉、MCP 和成本追踪等高级功能。如果你只需要简单的窗口切换,tmux 更轻量且稳定;如果你需要代理特有的操作,agent-deck 更合适。
成本追踪与全局搜索
agent-deck 内置了成本仪表盘,按 $ 键打开,可以追踪每个会话的 API 消耗。对于使用多个代理的用户来说,这比分别登录各个提供商控制台更直观。全局搜索(按 G)允许你跨所有会话搜索,而单会话搜索用 /。这些功能在大量会话中定位特定对话或审查成本时很实用。不过,成本追踪的准确性取决于代理是否报告 token 使用情况,对于不支持该功能的代理,数据可能不完整。README 没有详细说明成本数据的来源,如果你依赖精确的成本核算,可能需要先验证它是否与你的代理提供商的账单一致。
编辑结论
agent-deck 适合同时运行多个 AI 编程代理、需要在一个终端里切换和管理这些会话的开发者,尤其是那些已经依赖 Claude Code 或 OpenCode 并希望减少上下文丢失的人。不适合只用单个代理、不需要会话分叉或远程监督的用户,因为它的核心价值在于规模化管理。采用前先验证三件事:你的代理 CLI 是否支持原生分叉(例如 Codex 需要 codex fork 支持,README 中验证过 codex-cli 0.137.0);你的终端是否兼容 TUI 快捷键(如 Enter 在新会话对话框中已改为前进而不是提交,需要适应或调整配置);以及 conductor 的远程通道(Telegram/Slack/Discord)是否符合你的隐私和网络要求。agent-deck 的 MIT 许可证允许自由使用和修改,但维护依赖社区贡献,如果你需要长期稳定支持,需评估其活跃度。
社区笔记