Agent Session Manager 桌面版
在一个窗口里并行运行多个 AI 编码代理,每个独占终端标签,关掉窗口也不中断。
按维度查看评分与理由
README 明确说明数据本地化、无遥测、外部通信仅限 GitHub 更新检查、用户配置的 ntfy 推送与首次 Task Master 的 npx 调用,透明度较好;但 go.mod 引入 robotgo/gohook/uinput/portaudio 等全局输入与音频采集能力,属于远超“会话管理”所需的权限面,且未见权限最小化说明或运行时授权边界,故 least_privilege 仅 1。删除会话有回收站、自动快照与手动快照,回滚能力证据充分给 3。敏感数据处理方面,语音转写可走 Google Speech API,但 README 未说明音频/凭据如何存储与传输,扣分至 1。依赖安全有 CI 中 npm audit --audit-level=moderate 与固定 commit 的 action 版本,但 Go 侧无漏洞扫描,给 2。外部效果(自更新、winget 安装 psmux、npx 拉取包)有描述但缺少确认与失败回退细节,给 1。来源归属仅指向同作者 TUI 仓库,无第三方代码/数据来源标注,给 1。
README 对 tmux/psmux 缺失、崩溃后会话存活、活动检测误判等场景给出解释,失败信息与恢复路径描述一致,给 2;但全部为文档断言,仓库内未见对应错误处理代码或测试证据,无法给更高。依赖可用性方面 go.mod 与 CI 明确列出原生依赖(WebKitGTK、PortAudio、MSYS2 工具链)及安装方式,可复现性尚可,给 2。自一致性上 README 与 CI/release 工作流对构建标签、产物命名的描述基本吻合,给 2。
受众与场景描述非常具体(多 agent 并行、等待提醒、移动推送、SSH/无头不适用),给 3。能力边界有“不适用于 SSH/无头”“自定义 agent 命令”等说明,但未系统列出不支持项,给 2。触发精度方面快捷键、命令面板、等待检测模式可更新等描述清晰,但活动检测依赖 pane 输出模式,存在误判且仅靠文档说明,给 2。环境适配覆盖 Linux/macOS/Windows 三平台与 WebKitGTK 版本差异,但 macOS 仅 Apple Silicon、Intel 需 Rosetta,属部分覆盖,给 2。
信息架构优秀:功能分组、快捷键表、目录布局、FAQ 齐备,给 3。安装说明含 deb/rpm/tar/安装器与运行时依赖,给 3。命名稳定性方面二进制名 asmgr-desktop 与产品名 Agent Session Manager 并存,macOS 包名被重命名,存在一定不一致,给 2。示例与 FAQ 丰富,给 3。已知限制有零散说明(无头不可用、检测误判、渲染器性能)但未集中成节,给 2。LICENSE 为完整 MIT 文本,给 3。版本与变更方面 release 工作流引用 CHANGELOG.md 并做 SemVer 校验,但仓库未提供 CHANGELOG 内容,给 2。维护责任方面发布者身份未经验证,无 SECURITY/CONTRIBUTING/维护者承诺,给 1。
输出可用性高:桌面 GUI、终端复用、diff/文件编辑、任务列表等直接产出可用结果,给 3。边际价值在于把多 agent 会话集中管理并提供等待提醒,相对纯终端有增量,但核心仍依赖 tmux/psmux 与既有 agent CLI,增量属中等,给 2。成本收益方面需安装原生依赖、WebKitGTK、PortAudio 等,构建与运行成本不低,收益对重度多 agent 用户明显、对轻度用户有限,给 2。
claim_traceability 弱:README 大量功能断言(20 种语言、字节级保存、自更新)在给定文件中无对应实现或测试证据,给 1。交叉印证方面 CI 工作流与 README 在构建标签、平台支持、绑定校验上互相印证,浏览器测试 fixture 也佐证了部分 UI 行为,给 2。事实与推断分离不足:README 将设计意图与已验证行为混述,未标注哪些经过测试,给 1。
- go.mod 引入 robotgo/gohook/uinput/portaudio 等全局输入注入与音频采集依赖,权限面远超会话管理所需,静态审查无法确认其运行时边界。
- 语音转写可调用 Google Speech API,但音频与凭据的存储、传输与保留策略未在文档中说明。
- 自更新、winget 安装 psmux、npx 拉取 Task Master 等外部动作缺少确认与失败回退细节。
- 发布者身份未经验证,无 SECURITY/CONTRIBUTING 或维护者承诺,长期维护责任不明确。
- README 中大量功能与质量断言在给定文件中无实现或测试证据支撑,属未验证声明。
- macOS 产物仅支持 Apple Silicon,Intel 需 Rosetta,平台覆盖不完整。
这个 Agent 能做什么,适合哪些场景?
这是一个用 Wails(Go)+ Svelte + xterm.js 构建的桌面应用,把 Claude、Codex、Gemini、Aider、Amazon Q、OpenCode 或自定义命令放进同一个窗口的多个标签页里管理。核心执行模型是把每个会话托管在终端复用器中:Linux/macOS 用 tmux,Windows 用 psmux,因此代理进程不依赖 App 生命周期,关闭窗口、重启程序甚至换机器后都能重新 attach 继续。终端输入输出走本地带令牌认证的 WebSocket(xterm.js ⇄ Go ⇄ 复用器),后台标签的输出由后端缓存并在返回该标签时回放。应用侧还提供项目看板、按文件和 hunk 的 Git diff 审阅、文件浏览器与编辑器、提交历史、任务与截止日期、跨会话历史搜索、桌面与 ntfy 手机推送。它自带自更新、回收站与自动快照,所有数据默认留在本机(~/.config/agent-session-manager-desktop),仅在检查更新、配置推送或使用 Task Master AI 动作时联网。
启动时为每个会话创建一个复用器窗口,并在其中运行所选代理的可执行命令(Claude、Gemini、Aider、Codex、Amazon Q、OpenCode、自定义命令或纯 shell),可带独立工作目录。通过 xterm.js 与 Go 后端之间的本地令牌认证 WebSocket 完成输入输出转发;非前台标签的输出在后端暂存,返回时回放。读取 pane 输出判断 busy / waiting / idle 状态,用 ⏳ 收件箱聚合等待输入的标签并支持 yes/no/Enter/Esc 直接应答,可发出系统通知或 ntfy 推送。支持会话内多标签、Resume & Fork、Claude --bg 后台代理面板、会话模板、带参数的保存命令({{name:default}})、Ctrl+K 命令面板与 Ctrl+J 快速跳转表。提供项目看板(Git 分支/脏状态/ahead-behind/最后提交、Claude 与 Codex 用量窗口)、逐文件与逐 hunk 的 diff 审阅与回滚、CodeMirror 6 文件编辑器(保留行尾、BOM、末尾换行)、Ctrl+Shift+Y 提交历史、Ctrl+Shift+F 跨会话历史搜索、任务列表与 Task Master(可选,通过 task-master-ai MCP 包)。状态写入 sessions.json、commands.json、activity-stats.json、backups/ 与 asmgr-desktop.log,任务写入各工作目录的 .taskmaster/tasks.json。
- 同时跑三四个 Claude Code 或 Codex 会话的开发者,希望在一个窗口里看到谁在等待输入,而不是反复切换终端窗口。
- 需要在长时间重构任务中关闭笔记本或重启应用的人:会话存放在 tmux/psmux 中,重新打开后一键 attach 继续。
- 想让手机上收到代理等待确认提醒的人:在 Settings → Notifications 里填入 ntfy 主题 URL,配合手机 ntfy 应用接收推送。
- 需要在提交前逐文件、逐 hunk 检查代理改动并只回滚其中一处的人,用 diff 视图和 Ctrl+F7 在变更之间跳转。
- 在 Windows 上不想用 WSL 或 MSYS2 的开发者:应用可使用原生 psmux 并通过 winget 安装。
- 习惯键盘操作的用户:用 Ctrl+K 命令面板、Ctrl+P 保存命令库、Ctrl+J 数字跳转表和可重绑定的快捷键驱动全部操作。
这个 Agent 有哪些优点和局限?
- 会话托管在 tmux/psmux 而非 App 进程中,关闭窗口、重启应用甚至重装后仍可重新 attach,代理不会中断。
- 跨平台覆盖面完整:Linux 的 .deb/.rpm、macOS 的 .app(Intel 走 Rosetta 2)、Windows 的按用户安装包,并支持三平台原地自更新。
- 审阅能力落在会话产物上:逐文件与逐 hunk 的 diff 回滚、CodeMirror 6 编辑器保留行尾/BOM/末尾换行使未改动文件字节一致、Ctrl+Shift+Y 提交历史与 Ctrl+Shift+F 跨会话历史搜索。
- 注意力管理具体可操作:⏳ 收件箱可在不切换标签的情况下回答 yes/no/Enter/Esc,并支持系统通知与 ntfy 手机推送(默认全部关闭)。
- 代理无关且可扩展:Claude、Gemini、Aider、Codex、Amazon Q、OpenCode、纯 shell 或自定义命令,另可导入 Konsole/kitty/Alacritty/WezTerm/Ghostty/iTerm2 配色方案并重绑定所有快捷键。
- 本机优先并带恢复机制:无遥测,删除的会话与标签进入回收站,设置与会话列表按分钟/小时/天/周自动快照,任务文件单独备份。
- 硬性运行时依赖终端复用器:缺少 tmux(Linux/macOS)或 psmux(Windows)时无法创建会话,只能在启动提示里接受自动安装命令。
- 仅限桌面图形环境:官方明确说明不能用于 SSH 或 headless 服务器,这类场景只能用同作者的 TUI 版本。
- 架构栈较重:Go 1.24+、Node.js + npm、Wails CLI 以及 Linux 上的 WebKitGTK 都是构建前提,Ubuntu 24.04+/Fedora 40+ 还需要 -tags webkit2_41。
- 跨标签的输出重放与渲染共用 WebKit 主线程,README 自身也指出繁忙的后台代理不能被允许饿死正在输入的前台标签,终端卡顿时需在 canvas/DOM/WebGL 渲染器之间切换排查。
- 任务数据放在各工作目录的 .taskmaster/tasks.json 而不是统一配置目录,意味着任务随代码库走、需要单独纳入版本控制或备份策略。
- 部分便利功能依赖外部服务或包:ntfy 需要自备主题与手机 App,Task Master AI 动作需要 npx 拉取 task-master-ai MCP 包。
如何安装或部署这个 Agent?
安装前必须准备终端复用器:Linux 用 tmux,macOS 执行 brew install tmux,Windows 需 psmux(应用可用 winget install psmux 代为安装,无需 WSL 或 MSYS2)。
Linux:
sudo dpkg -i asmgr-desktop_*_linux_x86_64.deb # Debian/Ubuntu
sudo rpm -i asmgr-desktop_*_linux_x86_64.rpm # Fedora/RHEL安装到 /usr/bin/asmgr-desktop 并创建菜单项,依赖 libwebkit2gtk-4.1-0/webkit2gtk4.1 与 tmux 会被自动拉入。
macOS(Apple Silicon;Intel 走 Rosetta 2):
tar -xzf asmgr-desktop_*_darwin_arm64.tar.gz将 asmgr-desktop.app 移入 /Applications,然后 brew install tmux
Windows(x64):运行 asmgr-desktop_*_windows_amd64_setup.exe,按用户安装,无需管理员权限;也可使用 .tar.gz 免安装包。
从源码构建需要 Go 1.24+、Node.js + npm、Wails CLI 和 WebKitGTK:
wails build -tags webkit2_41 # Ubuntu 24.04+/Fedora 40+ 等仅提供 webkit2gtk-4.1 的系统
wails build # 其他/较旧的 WebKitGTK
产物在 build/bin/。开发模式用 wails dev -tags webkit2_41,前端也会在 http://localhost:34115 提供。
如何使用这个 Agent?
- 按 Ctrl+Shift+N 新建会话,选择代理、工作目录和名称;会话在独立的复用器窗口中启动并出现在侧边栏,按 Enter attach 进入实时终端。
- 按 Ctrl+T 打开完整的新标签对话框(代理、参数、目录),Ctrl+Shift+T 只建一个终端标签并只询问名称;Ctrl+PageUp / Ctrl+PageDown 切换标签。
- 用 Ctrl+Shift+G 把会话分组为项目,Ctrl+Shift+8 加星、Ctrl+Shift+1…7 跳到加星会话;Alt+J 把当前标签加入跳转表,Ctrl+J 加数字直接跳转。
- 头部 ⏳ 数字表示正在等待输入的代理,点击跳转或在下拉里直接回答 yes/no/Enter/Esc;在 Settings → Notifications 中开启桌面通知、声音和类似 https://ntfy.sh/my-topic 的 ntfy 主题以接收手机推送。
- 在视图栏切换终端、Git diff、文件、笔记和任务;diff 中可回滚单个文件或单个 hunk,Ctrl+F7 / Ctrl+Shift+F7 逐处跳转,Ctrl+Shift+Y 查看提交历史,Ctrl+Shift+F 跨所有会话历史搜索,Ctrl+Shift+L 搜索当前终端的回滚缓冲。
- 在 Settings → Shortcuts 中重绑定快捷键;Ctrl+Shift+H 打开由同一份列表生成的帮助。数据位于 ~/.config/agent-session-manager-desktop(sessions.json、commands.json、backups/、activity-stats.json、asmgr-desktop.log),任务文件位于各工作目录的 .taskmaster/tasks.json。