Persistproc

Persistproc

🚀 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
(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 开发

假设你需要运行四个进程才能在本地运行你的 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 许可证。

  • 0 关注
  • 0 收藏,29 浏览
  • system 提出于 2025-10-06 08:42

相似服务问题

相关AI产品