Codeman 评测:把七个 AI 编程 CLI 装进一个自托管控制台
用于 AI 编码代理的自托管任务控制:从任何设备运行 Claude Code、OpenCode、Codex 和 Gemini CLI 24/7,实时观看每个子代理。
秒懂
- 它是什么?
- Codeman 是一个自托管的 AI 编程代理控制台,用 tmux 持久化会话管理 Claude Code、OpenCode、Codex 等七个 CLI,并提供浏览器终端、空闲重试和移动端界面。本文基于 README 与仓库信息,分析它的机制、安装方式和适用边界。
- 适合谁用?
- Codeman 适合已经依赖 Claude Code、OpenCode 或 Codex 的开发者,尤其是需要长时间无人值守运行、或想从手机查看代理进度的场景。它不适合完全离线或对依赖链极其敏感的用户,因为安装器会安装 Node.js、tmux 和编译工具链,且 node-pty 在 Linux 上需要从源码编译。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 4 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题:让代理在你离开后继续干活
AI 编程 CLI 通常是前台进程,关掉终端就中断,遇到 API 限流或空闲超时就会卡住。Codeman 把 Claude Code、OpenCode、Codex、Antigravity、Gemini CLI、Pi 和 Grok Build 放进持久化的 tmux 会话里,让它们在你关闭浏览器后继续运行。它的核心场景是长时间无人值守的任务,比如夜间批量重构,或者出门在外时让代理继续处理 issue。目标用户是已经熟悉至少一个 AI CLI 的开发者,而不是想从零开始学 AI 编程的新手。它不提供自己的模型或代理逻辑,只是这些 CLI 的调度器和观察层。
工作机制:tmux 会话、空闲检测与输入投递
Codeman 的架构围绕 tmux 展开。每个 AI 会话跑在一个独立的 tmux 会话中,终端输出被实时流式传输到浏览器。README 强调两个关键机制:空闲检测与重启循环,以及恰好一次的输入投递。空闲检测会在代理闲置时重新发送提示词,避免任务卡住;当订阅限额重置后,它会自动恢复运行。输入投递的“恰好一次”语义意味着网络抖动不会导致重复按键或丢失命令,这对长时间无人值守特别重要。另一个设计是 tmux 持久化,即使 Codeman 服务重启,代理进程仍在 tmux 里存活,你重新连接后可以继续看到完整滚动历史。
安装与启动:一行命令,但交互很多
安装命令是 `curl -fsSL https://getcodeman.com/install | bash`。这个安装器会做不少事:检查并安装 Node.js、tmux 和构建工具链,因为 node-pty 在 Linux 上没有预编译二进制,需要从源码编译。它会把仓库克隆到 `~/.codeman/app` 并构建。安装过程中每个系统更改都会询问,包括安装 AI CLI。最后会出现一个菜单,让你选择在前台运行、安装为 systemd 或 launchd 服务,或者暂不启动。启动后运行 `codeman web`,打开 http://localhost:3000 即可。默认只绑定到 127.0.0.1,这是最安全的方式。如果需要后台运行,可以用 `codeman web -d`,日志写到 `~/.codeman/web.log`。更新也是同一行命令,本地修改会被 stash 而不是删除。
远程访问与多用户:Tailscale 优先,密码可选
安装器提供三种网络暴露方式:Tailscale、局域网和仅本机。Tailscale 方案用 `tailscale serve` 做前端,得到一个带真实证书的 HTTPS 地址,并用 tailnet 身份作为登录,无需密码。局域网绑定需要设置密码,跳过密码需要明确确认并显示警告。多用户模式是可选功能,用 `codeman users add alice --admin` 创建管理员账号,然后 `codeman web --multiuser` 启动,每个用户有自己的登录和工作区。注意,默认的 `codeman web` 仍绑定回环地址,即使你之前选择了局域网模式,手动启动也不会自动暴露。
移动端与实时可视化:手机上的终端体验
README 声称界面是触摸优化的,有即时本地回显、二维码登录、滑动导航和推送通知。它还提到每个子代理和队友的实时浮动窗口,以及实时转录。这些功能对需要在外出时监控代理的用户很重要。但有一个明显的限制:你只能看到终端输出,不能直接干预代理的内部状态,除非通过终端发送命令。移动端体验依赖浏览器对终端模拟的支持,复杂的 TUI 界面在手机上可能仍然难以操作。
已知限制与失败模式:依赖链和网络绑定风险
最明显的限制是安装依赖。node-pty 在 Linux 上需要编译,这意味着你的机器必须有完整的构建工具链,否则安装会失败。另一个问题是服务与 tmux 会话的耦合:README 警告两个服务器共享同一个数据目录会互相附加到对方的会话,所以不能随意启动第二个实例。网络绑定方面,如果你选择 `0.0.0.0` 而不设密码,会有明确的警告,但这仍然是一个风险点。另外,Gemini CLI 目前是 enterprise-only,普通用户可能无法使用,Antigravity 是它的继任者,但 README 没有详细说明兼容性。
替代方案:各 CLI 的原生 headless 模式
如果你只需要管理一个 CLI,比如 Claude Code 或 Codex,它们本身就有 headless 或非交互模式,可以配合 cron 或 CI 使用。这些原生方案没有 tmux 持久化,也没有统一的浏览器界面,但更轻量,不需要额外安装 Codeman 的依赖链。Codeman 的价值在于统一管理多个 CLI,并提供跨会话的持久化。如果你只用一个 CLI,且不需要远程访问,原生模式可能更合适。另一种替代是直接用 tmux 手动管理会话,但这需要自己处理空闲重试和输入投递,Codeman 把这些封装成了自动化逻辑。
维护与升级成本:更新机制和许可证
更新通过重跑安装命令完成,本地修改会被 stash,服务会重启并验证。`install.sh update` 和 `install.sh uninstall` 是独立的命令。安装为服务时,systemd 或 launchd 单元会写入当前 PATH,这很重要,因为 launchd 默认 PATH 不包含 Homebrew 或 nvm 的路径。许可证是 MIT,允许自由使用和修改,但没有遥测,这减少了隐私顾虑。维护成本主要在于跟踪 CLI 的更新,因为 Codeman 只是包装它们,CLI 本身的变更可能影响会话管理。另外,`codeman service` 命令适用于 npm 全局安装的情况,但如果用安装器,服务管理由安装器负责,两者不要混用。
编辑结论
Codeman 适合已经依赖 Claude Code、OpenCode 或 Codex 的开发者,尤其是需要长时间无人值守运行、或想从手机查看代理进度的场景。它不适合完全离线或对依赖链极其敏感的用户,因为安装器会安装 Node.js、tmux 和编译工具链,且 node-pty 在 Linux 上需要从源码编译。多用户模式适合小团队,但需要额外配置认证。采用前先确认你至少有一个受支持的 AI CLI 已安装,并检查安装器交互提示是否符合你的自动化要求。如果只需要管理单一 CLI,官方自带的 headless 模式可能更轻量;Codeman 的价值在于统一多个 CLI 和提供持久化会话。
社区笔记