开发与工程 terminal-multiplexertmuxsession-managerwailssveltexterm-jscode-reviewgit-diff

Agent Session Manager 桌面版

在一个窗口里并行运行多个 AI 编码代理,每个独占终端标签,关掉窗口也不中断。

FollowAgents 评估 · FARS-2.1
谨慎使用
67/ 100 五分制 3.4 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全16 / 29 · 2.8/5

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。

2可靠稳定9 / 14 · 3.2/5

README 对 tmux/psmux 缺失、崩溃后会话存活、活动检测误判等场景给出解释,失败信息与恢复路径描述一致,给 2;但全部为文档断言,仓库内未见对应错误处理代码或测试证据,无法给更高。依赖可用性方面 go.mod 与 CI 明确列出原生依赖(WebKitGTK、PortAudio、MSYS2 工具链)及安装方式,可复现性尚可,给 2。自一致性上 README 与 CI/release 工作流对构建标签、产物命名的描述基本吻合,给 2。

3适用触发14 / 18 · 3.9/5

受众与场景描述非常具体(多 agent 并行、等待提醒、移动推送、SSH/无头不适用),给 3。能力边界有“不适用于 SSH/无头”“自定义 agent 命令”等说明,但未系统列出不支持项,给 2。触发精度方面快捷键、命令面板、等待检测模式可更新等描述清晰,但活动检测依赖 pane 输出模式,存在误判且仅靠文档说明,给 2。环境适配覆盖 Linux/macOS/Windows 三平台与 WebKitGTK 版本差异,但 macOS 仅 Apple Silicon、Intel 需 Rosetta,属部分覆盖,给 2。

4规范维护14 / 18 · 3.9/5

信息架构优秀:功能分组、快捷键表、目录布局、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。

5有效结果10 / 13 · 3.8/5

输出可用性高:桌面 GUI、终端复用、diff/文件编辑、任务列表等直接产出可用结果,给 3。边际价值在于把多 agent 会话集中管理并提供等待提醒,相对纯终端有增量,但核心仍依赖 tmux/psmux 与既有 agent CLI,增量属中等,给 2。成本收益方面需安装原生依赖、WebKitGTK、PortAudio 等,构建与运行成本不低,收益对重度多 agent 用户明显、对轻度用户有限,给 2。

6证据核验4 / 8 · 2.5/5

claim_traceability 弱:README 大量功能断言(20 种语言、字节级保存、自更新)在给定文件中无对应实现或测试证据,给 1。交叉印证方面 CI 工作流与 README 在构建标签、平台支持、绑定校验上互相印证,浏览器测试 fixture 也佐证了部分 UI 行为,给 2。事实与推断分离不足:README 将设计意图与已验证行为混述,未标注哪些经过测试,给 1。

证据充分度: 评估于 2026年9月18日 审查版本 8338350a2df2
使用前请注意
  • 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。

  1. 同时跑三四个 Claude Code 或 Codex 会话的开发者,希望在一个窗口里看到谁在等待输入,而不是反复切换终端窗口。
  2. 需要在长时间重构任务中关闭笔记本或重启应用的人:会话存放在 tmux/psmux 中,重新打开后一键 attach 继续。
  3. 想让手机上收到代理等待确认提醒的人:在 Settings → Notifications 里填入 ntfy 主题 URL,配合手机 ntfy 应用接收推送。
  4. 需要在提交前逐文件、逐 hunk 检查代理改动并只回滚其中一处的人,用 diff 视图和 Ctrl+F7 在变更之间跳转。
  5. 在 Windows 上不想用 WSL 或 MSYS2 的开发者:应用可使用原生 psmux 并通过 winget 安装。
  6. 习惯键盘操作的用户:用 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?

  1. 按 Ctrl+Shift+N 新建会话,选择代理、工作目录和名称;会话在独立的复用器窗口中启动并出现在侧边栏,按 Enter attach 进入实时终端。
  2. 按 Ctrl+T 打开完整的新标签对话框(代理、参数、目录),Ctrl+Shift+T 只建一个终端标签并只询问名称;Ctrl+PageUp / Ctrl+PageDown 切换标签。
  3. 用 Ctrl+Shift+G 把会话分组为项目,Ctrl+Shift+8 加星、Ctrl+Shift+1…7 跳到加星会话;Alt+J 把当前标签加入跳转表,Ctrl+J 加数字直接跳转。
  4. 头部 ⏳ 数字表示正在等待输入的代理,点击跳转或在下拉里直接回答 yes/no/Enter/Esc;在 Settings → Notifications 中开启桌面通知、声音和类似 https://ntfy.sh/my-topic 的 ntfy 主题以接收手机推送。
  5. 在视图栏切换终端、Git diff、文件、笔记和任务;diff 中可回滚单个文件或单个 hunk,Ctrl+F7 / Ctrl+Shift+F7 逐处跳转,Ctrl+Shift+Y 查看提交历史,Ctrl+Shift+F 跨所有会话历史搜索,Ctrl+Shift+L 搜索当前终端的回滚缓冲。
  6. 在 Settings → Shortcuts 中重绑定快捷键;Ctrl+Shift+H 打开由同一份列表生成的帮助。数据位于 ~/.config/agent-session-manager-desktop(sessions.json、commands.json、backups/、activity-stats.json、asmgr-desktop.log),任务文件位于各工作目录的 .taskmaster/tasks.json。

常见问题

使用它需要付费或注册账号吗?
不需要。应用本身是 MIT 许可的本地桌面程序,没有遥测,也没有登录流程。费用与账号只可能来自你选用的代理自身(如 Claude、Codex 的订阅与限流窗口),或你为 ntfy 指定的服务端。
它会把我的代码或会话记录上传到哪吗?
按文档,除非你主动触发,否则不会有任何数据离开本机:应用只在检查自身更新时访问 GitHub,在你配置了 ntfy 主题时推送到该服务器,以及首次使用 Task Master AI 动作时调用 npx。会话、输出和文件都留在本地。
关掉窗口或者应用崩溃,正在跑的代理会怎样?
不会受影响。代理进程运行在 tmux/psmux 会话中而不是应用进程里,关闭窗口、应用崩溃或重启机器后会话仍在,重新打开应用即可重新 attach 到原处。
我可以同时开两个窗口吗?
可以,但会被保护机制拦一下:第二个窗口会给出警告,并对该项目保持只读,以免两个实例互相覆盖对方的终端。
我用的代理不在内置列表里怎么办?
在新建标签时选择 Custom 并填入要执行的命令即可,它会像其他代理一样获得标签页和状态行。状态判断依赖 pane 输出的模式匹配,若被非常规提示符误导,可在 Settings 中手动更新检测模式,而不必等待应用发版。

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents