CodexMonitor 是一个基于 Tauri 的桌面与移动端应用,用于跨本地工作区编排多个 Codex 智能体。它提供工作区管理、线程持久化、git/GitHub 集成、文件浏览、提示词库,以及用于连接 iOS 客户端或无头设置的远程守护进程模式。
主要能力
- 多工作区编排:每个工作区启动一个 codex app-server,可恢复线程、跟踪未读/运行状态。
- 线程管理:固定、重命名、归档、复制线程;每线程草稿;停止/中断进行中的回合。
- Worktree 智能体:在应用数据目录下为隔离工作克隆智能体(支持旧版 .codex-worktrees)。
- Git 与 GitHub:差异统计、已暂存/未暂存文件、提交日志、分支管理,通过 gh 操作 GitHub Issues/PRs。
- Composer:图片附件,技能($)、提示词(/prompts:)、审查(/review)、文件路径(@)自动补全。
- 远程守护进程:在另一台机器上运行 Codex,通过 TCP 连接 iOS 客户端(支持 Tailscale)。
- 提示词库:全局/工作区提示词,支持创建/编辑/删除/移动并在线程中运行。
- 文件树:搜索、文件类型图标、在 Finder/资源管理器中显示。
- 终端停靠:多个后台命令标签页(实验性)。
安装
要求:Node.js + npm、Rust 工具链(stable)、CMake(用于原生依赖、听写/Whisper)、LLVM/Clang(仅 Windows,用于 bindgen)、已在 PATH 中的 Codex CLI、Git CLI(用于 worktree 操作)、GitHub CLI gh(可选,用于 GitHub 集成)。
安装依赖:npm install;检查环境:npm run doctor;开发运行:npm run tauri:dev;构建生产包:macOS/Linux 使用 npm run tauri:build,Windows 使用 npm run tauri:build:win。产物位于 src-tauri/target/release/bundle/(平台特定子目录)。
工作区管理
工作区持久化到应用数据目录中的 workspaces.json。UI 方式:侧边栏 → Add workspace → 选择目录。数据结构定义于 src-tauri/src/workspaces/mod.rs,包含 id、name、path、codex_home(可选,覆盖全局 Codex home)、is_remote、remote_host、remote_token 字段。可通过前端服务 src/services/tauri.ts 中的 invoke 调用 workspace_list、workspace_add、workspace_update、workspace_remove 等命令进行程序化访问。
线程管理
线程状态由 reducer 管理,切片位于 src/features/threads/hooks/threadReducer/。ThreadAction 类型包括 SET_MESSAGES、ADD_MESSAGE、UPDATE_MESSAGE、SET_RUNNING、SET_UNREAD、RESET。恢复线程通过 useThreadResume.ts 调用 thread_resume;发送消息调用 thread_send_message。线程生命周期命令包括 thread_interrupt(停止进行中的回合)、thread_pin(固定)、thread_rename(重命名)、thread_archive(归档)、thread_copy(复制线程/克隆消息)。
Worktree 智能体
Worktree 智能体在 <app-data>/worktrees/<workspace-id>/ 下创建隔离的 git worktree。创建调用 worktree_create(参数 workspaceId、branch),列表调用 worktree_list,移除调用 worktree_remove。后端实现位于 src-tauri/src/shared/workspaces_core/worktree.rs,通过 git worktree add 命令创建。
Git 集成
差异统计通过 git_diff_stats 获取已暂存和未暂存文件状态,后端位于 src-tauri/src/shared/git_ui_core/diff.rs。分支管理支持 git_list_branches、git_checkout_branch、git_create_branch。
GitHub 集成
需要 gh CLI。支持 github_list_issues、github_list_prs、github_pr_diff、github_ask_pr(将 PR 上下文发送到新线程)。后端位于 src-tauri/src/shared/git_ui_core/github.rs。
远程守护进程模式
远程守护进程模式允许在单独机器(如桌面)上运行 Codex,并从 iOS 或其他客户端连接。桌面设置:Settings → Server,设置远程后端令牌(共享密钥),在 Mobile access daemon 中点击 Start daemon。独立守护进程 CLI:构建 codex_monitor_daemon 和 codex_monitor_daemonctl 二进制,通过 start/status/stop 管理,可覆盖 --listen、--token、--data-dir。守护进程使用 JSON-RPC 架构,入口位于 src-tauri/src/bin/codex_monitor_daemon.rs,路由位于 rpc.rs,支持 workspace/list、workspace/add、thread/list、thread/resume、thread/send、git/diff_stats 等方法。
iOS 客户端连接(Tailscale):桌面端 Settings → Server → Tailscale helper,点击 Detect Tailscale 获取建议主机;iOS 端 Settings → Server 输入主机和匹配令牌,点击 Connect & test。前端客户端实现位于 src/services/remoteDaemon.ts。
Composer 与自动补全
自动补全触发符:$ 表示技能,/prompts: 表示提示词,/review 表示代码审查,@ 表示文件路径。前端钩子位于 src/features/composer/hooks/useAutocomplete.ts。后续行为:Settings → Composer → Follow-up default 可选 Queue(智能体运行时排队消息)或 Steer(中断当前回合并引导);单条消息覆盖:macOS 为 Shift+Cmd+Enter,Windows/Linux 为 Shift+Ctrl+Enter。
提示词库
提示词从 $CODEX_HOME/prompts(或 ~/.codex/prompts)加载。提示词文件使用 frontmatter 格式,包含 description 和 args 定义,正文中使用 {{arg}} 占位符。管理命令包括 prompt_list、prompt_create、prompt_run(在当前线程运行)、prompt_run_new_thread(在新线程运行)。