persistproc 是一个用于多智能体开发工作流的共享进程层工具,它能让智能体和人类查看并控制像 Web 服务器这样的长时间运行的进程,减少编码时的复制粘贴操作,便于使用多个智能体,且与具体工具无关。
persistprocpip install persistproc
在一个专用终端中运行以下命令并保持其运行:
persistproc serve
persistproc serve 输出的第一部分是针对各种智能体的配置说明,如果还未配置,请按照这些说明操作。
在另一个终端中,切换到项目目录并通过 persistproc 运行命令:
# 示例:启动一个 Node.js 开发服务器
cd /path/to/your/project
persistproc npm run dev
该命令会被发送到服务器,其输出会流式传输到你的终端。你可以安全地关闭此终端,进程将继续运行。
💡 使用建议
你也可以直接要求你的智能体“使用 persistproc 运行开发服务器”,它可能会通过查看你的
package.json文件找到正确的命令并使用persistproc运行它。
通过以上步骤,你的智能体现在可以使用可用的工具来管理你的开发环境。
persistproc 允许智能体和人类共同查看和控制长时间运行的进程,减少了编码过程中复制粘贴错误信息的繁琐操作,提高了与 AI 协作编码的效率。
无需配置文件,进程完全在运行时进行管理,这与 supervisord 不同。
persistproc 是工具无关的,不依赖特定的开发工具或 IDE。
persistproc 公开了一个标准的 Model Context Protocol (MCP) 服务器,可使用任何兼容 MCP 的客户端以编程方式与之交互。
使用 pip 安装 persistproc:
pip install persistproc
假设你正在开发一个待办事项列表应用,通常使用 npm run dev 启动开发服务器。这个服务器会监视代码更改、进行类型检查、代码检查并热重载页面。当出现错误时,会在终端打印错误信息。
如果使用像 Cursor 或 Claude Code 这样的大语言模型(LLM)智能体,当你看到错误时,可能需要将错误信息从终端复制粘贴给智能体并询问如何修复。有了 persistproc,可以直接让智能体查看错误信息。
persistproc npm run dev
智能体可以立即读取其输出,甚至重启它。你仍然可以在原始终端中看到其输出,并像往常一样使用 Ctrl+C 终止它。
graph TB
User[用户] -->|"persistproc npm run dev"| PP[persistproc 服务器]
PP <-->|"管理 / 记录日志"| NPM["npm run dev
(Web 服务器)"]
PP -.->|"流式输出"| User
Agent[Cursor] -.->|"output()
restart()"| PP
style PP fill:#e1f5fe,stroke:#01579b,stroke-width:2px
style NPM fill:#fff3e0,stroke:#e65100,stroke-width:2px
style User fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
style Agent fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
假设你需要运行四个进程才能在本地运行你的 Web 应用,例如 API 服务器、前端服务器、SCSS 构建器和 Postgres 数据库。每个服务都会输出自己的日志。
如果你在本地测试时遇到错误,需要查看四个日志文件才能找出问题所在。但如果你使用 persistproc 启动这些进程,智能体可以一次性读取所有日志并可能更快地给出诊断结果。
graph TB
User[用户] -->|"启动进程"| PP[persistproc 服务器]
subgraph processes["管理的进程"]
API[API 服务器]
FE[前端服务器]
SCSS[SCSS 构建器]
DB[Postgres]
end
PP <-->|"管理 / 记录日志"| processes
Agent1[Claude Code] -.->|"读取日志
诊断问题"| PP
Agent2[Cursor] -.->|"读取日志
诊断问题"| PP
style PP fill:#e1f5fe,stroke:#01579b,stroke-width:2px
style API fill:#fff3e0,stroke:#e65100,stroke-width:2px
style FE fill:#fff3e0,stroke:#e65100,stroke-width:2px
style SCSS fill:#fff3e0,stroke:#e65100,stroke-width:2px
style DB fill:#fff3e0,stroke:#e65100,stroke-width:2px
style User fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
style Agent1 fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
style Agent2 fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
style processes fill:#f5f5f5,stroke:#999,stroke-width:1px,stroke-dasharray: 5 5
persistproc 服务器公开了以下工具:
| 工具 | 描述 |
|---|---|
ctrl |
统一的进程控制:启动、停止或重启进程。 |
list |
列出所有受管理的进程及其状态。可以选择按进程 ID、命令或工作目录进行过滤,并提供日志路径。 |
output |
检索进程捕获的输出。 |
这个列表有意保持简短,因为大语言模型在工具过多的情况下表现会变差,一些 IDE(如 Cursor)对可用工具的数量有限制。
一旦你的智能体连接成功,你可以要求它管理你的进程。假设你已经使用 persistproc npm run dev 启动了一个 Web 服务器(进程 ID 为 12345),你可以进行以下交互:
你:“列出正在运行的进程。”
list() 并向你显示正在运行的 npm run dev 进程。你:“Web 服务器似乎卡住了。你能重启它吗?”
ctrl(action="restart", pid=12345)。你:“显示 Web 服务器的任何错误信息。”
output(pid=12345, stream="stderr") 以检索最新的错误日志。本项目采用 MIT 许可证。