Back to MCP directory
publicPublicdnsLocal runtime

persistproc

persistproc是一个为多智能体开发工作流设计的共享进程层工具,通过MCP服务器和命令行工具,允许智能体和人类用户查看和控制长时间运行的进程(如Web服务器),旨在减少编码时与AI的复制粘贴操作,支持多智能体协作,并保持工具无关性。

article

README

🚀 persistproc

persistproc 是一个用于多智能体开发工作流的共享进程层工具,它能让智能体和人类查看并控制像 Web 服务器这样的长时间运行的进程,减少编码时的复制粘贴操作,便于使用多个智能体,且与具体工具无关。

PyPI version Python 3.10+ License: MIT


完整文档:steveasleep.com/persistproc

🚀 快速开始

1. 安装 persistproc

pip install persistproc

2. 启动服务器并配置智能体

在一个专用终端中运行以下命令并保持其运行:

persistproc serve

persistproc serve 输出的第一部分是针对各种智能体的配置说明,如果还未配置,请按照这些说明操作。

3. 启动进程

在另一个终端中,切换到项目目录并通过 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

💻 使用示例

基础用法:基础 Web 开发

假设你正在开发一个待办事项列表应用,通常使用 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<br/>(Web 服务器)"]
    PP -.->|"流式输出"| User
    
    Agent[Cursor] -.->|"output()<br/>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 开发

假设你需要运行四个进程才能在本地运行你的 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] -.->|"读取日志<br/>诊断问题"| PP
    Agent2[Cursor] -.->|"读取日志<br/>诊断问题"| 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 许可证。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client