用途
Process Compose 是一个基于 Go 的进程管理器(supervisor),用于管理非容器化的服务。资料将其定位为 PM2 / supervisord / Foreman 在本地开发角色中的替代品,特点是单二进制文件、YAML 配置、内置 TUI、REST API、MCP 服务器,并提供 Windows 支持。
资料给出的选择理由:
- 不选 PM2:PM2 5.x 存在 15 个以上已知 CVE(通过 axios/lodash/tar/minimist 等传递性依赖暴露)。Process Compose 在构建时通过 go.sum 哈希编译所有依赖,资料称其在结构上更能抵抗类似 TanStack 风格的 npm 蠕虫攻击。
- 不选 Docker Compose:对直接运行的本地 Python/Node/Go 开发服务器来说,容器开销没有必要。Process Compose 在不引入容器层的情况下提供健康检查、依赖和重启策略。
安装(资料标注为已验证)
资料给出的安装步骤是:固定一个具体版本,对照上游 checksums 校验 SHA-256,然后解压。示例使用 v1.110.0,下载 Windows amd64 包与校验文件,比较预期哈希与实际哈希,不一致则退出;解压后建议将 process-compose.exe 提交到仓库的 bin/ 目录,并在仓库的 SUPPLY-CHAIN.md 中记录该二进制文件的哈希,以便下次升级时重新验证。
主要能力与配置
process-compose.yaml 结构
资料提供的配置片段包含:版本号、日志级别、日志长度、processes 定义。单个进程可配置:
- command:启动命令
- working_dir:工作目录
- environment:环境变量列表
- readiness_probe:就绪探针,支持 http_get(host/port/path)以及 initial_delay_seconds、period_seconds、timeout_seconds、failure_threshold
- availability:恢复策略,包括 restart、backoff_seconds、max_restarts
- depends_on:依赖关系与 condition
- shutdown:signal 与 timeout_seconds
- log_location:日志文件位置
- schedule:cron 表达式(如每日 2 点)
重启策略
- always:无论成功或失败都重启,适合长期运行的守护进程
- on_failure:仅在非零退出码时重启
- exit_on_failure:该进程失败时停止整个 Process Compose,适合关键依赖
- no:从不重启
依赖条件
- process_started:依赖进程已启动(PID 存在),最快、保证最弱
- process_healthy:依赖进程的就绪探针通过,保证较强
- process_completed:依赖进程成功退出,适合初始化/安装类进程
CLI 参考
生命周期:up(默认前台 TUI)、up -t=false(无 TUI)、up --dry-run(仅校验配置)、down(停止所有进程与项目)。 检查:process list、process logs <name> --follow、attach。 进程控制:process restart / stop / start <name>。 热更新:project update -f config.yaml,无需停止即可重载配置。 独立检查(无需运行中的 PC):info、graph -f config.yaml(依赖图)、analyze -f config.yaml(启动耗时分析)。
资料特别指出:没有 --detached 标志。后台运行需借助 shell 后台化(Linux/Mac 用 &)或 Windows 的任务计划程序 / Start-Process -WindowStyle Hidden。
TUI 导航
启动方式为 process-compose attach(或 up 时不加 -t=false)。快捷键包括:↑↓ 或 j k 导航进程列表、Tab 切换焦点、F4 最大化当前面板、F5 取消跟随日志、F6 取消日志换行、r 重启、s 停止、t 启动、/ 过滤、? 帮助、q 退出 TUI(PC 仍在后台运行)。
MCP 服务器集成
Process Compose 内置 MCP 服务器,可将进程作为工具暴露给 AI 智能体,通过配置或 CLI 标志启用。启用后,Claude Code 智能体可直接:列出运行中的进程、获取进程状态/健康、重启/停止/启动进程、读取进程日志。资料称这可替代基于 shell 的胶水脚本(旧的 PM2-broker 模式)。
API 端口选择
默认 API 端口为 8080。资料列出常见冲突(Dagu 面板、Tomcat / Spring Boot 开发),建议使用 -p <端口> 指定,并在 8000–9999 范围内挑一个空闲端口。更改端口后,后续每次 CLI 调用都需要带 -p <port>。
Windows 开机持久化模式
任务计划程序的 PATH 很精简,因此要用包装脚本显式设置 PATH 再启动 PC。资料给出的 PowerShell 包装脚本会设置包含 bin、Git usr/bin、Python Scripts 的 PATH,可选从被 gitignore 的 .env 读取密钥,再以无界面方式启动。注册为任务计划程序条目时使用 LogonType S4U(开机运行、无需密码、无需交互式登录),触发器为 AtStartup。
适用场景
- 本地非容器化服务,需要健康检查、依赖关系、MCP 支持
- 需要跨平台(含 Windows)的本地多进程编排
- 用 MCP 让 AI 智能体直接管理本地进程
限制与注意事项
资料列出的 YAML 常见陷阱:
- Windows PATH 含反斜杠且用双引号会报 unknown escape character,应改用单引号
- 带空格路径的命令,整个命令用单引号包裹、内部路径用双引号
- 忘记 working_dir 会让进程在 PC 的 cwd 启动而找不到文件,应始终指定绝对路径
- 健康探针端口写错会导致进程反复重启并显示 Not Ready,应让 readiness_probe.http_get.port 与实际绑定端口一致
- 密钥写进 YAML 会被提交到 git,应通过 environment 透传,在 shell 环境或被 gitignore 的 .env 中设置
反模式示例:使用不存在的 --detached 标志;把密钥写进 process-compose.yaml;使用 API 端口 8080(与 Dagu、Tomcat 等冲突);忽略 readiness_probe;通过安装器(npm install -g、scoop install、brew install)升级,而应下载特定版本、对照上游 checksums.txt 校验 SHA-256 并提交二进制文件。
工具选择对比(资料原文):生产 node.js 进程监管用 PM2;容器化技术栈用 Docker Compose;带 cron 和 DAG 的任务队列用 Dagu、Temporal、Airflow;系统服务监管用 systemd(Linux)或 Windows 服务;一次性 Procfile 运行用 Foreman / Overmind / Hivemind(仅 Unix)。
技能内附资源
references/:schema-reference.md(完整 schema、字段语义、默认值与命令引号陷阱)、probe-patterns.md(按技术栈的就绪探针配方:Python、Go、Node、仅 TCP、守护进程)、dependency-patterns.md、tui-shortcuts.md、boot-persistence-windows.md、supply-chain-verification.md。 scripts/:install-process-compose.ps1、verify-binary.ps1、boot-start.template.ps1、boot-task-install.template.ps1。 assets/:python-uvicorn.yaml、django-with-companions.yaml、go-binary-service.yaml、tunnel-with-dependency.yaml、cron-job.yaml。 相关技能:portless-ops(配套的路由层,替代 Caddy)、docker-ops、mcp-ops、cli-ops。
未提供的信息
资料未提供收费、价格、平台、性能指标或效果数据。