开发服务器监控工具

DevPilot是一款专为AI编码工具设计的开发服务器监控工具,用于管理开发服务器生命周期、检测重载、检查健康状态并提供可解析的JSON反馈,以避免AI编码过程中的混乱。

  • by benseverndev-oss
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 benzsevern/devpilot

使用说明

devpilot

AI程序员的开发服务器主管。

AI编码代理(Claude Code、Cursor、Copilot)不断破坏开发服务器——在重新加载过程中编辑文件,导致端口冲突,产生僵尸进程。然后他们惊慌失措:杀死随机PID,轮换端口,核化所有Python进程。情况变得更糟了。

devpilot 为AI程序员提供结构化、可靠的流程感知。它管理开发服务器生命周期,检测重新加载,检查健康状况,并返回人工智能可以解析和处理的JSON,因此恐慌周期永远不会开始。

安装

MCP服务器(推荐用于AI工具)

DevPilot作为 本地 MCP服务器,因为它需要直接访问您机器的进程、端口和文件系统。安装一次,每个AI会话都有可用的工具。

克劳德代码:

pip install "devpilot-ai[mcp]"
claude mcp add devpilot -- devpilot-mcp

光标/VS代码/其他MCP客户端:

{
  "mcpServers": {
    "devpilot": {
      "command": "devpilot-mcp"
    }
  }
}

为什么是本地的,而不是远程的? DevPilot生成进程,读取stdout,检查 localhost 端口,并管理您机器上的PID。远程服务器无法做到这些。这 Smithery上市 用于发现和记录——实际使用需要本地服务器。

命令行界面

pip install devpilot-ai

或者使用pipx进行全局CLI使用:

pipx install devpilot-ai

快速开始

自动检测和配置您的项目

devpilot init

扫描 pyproject.toml, requirements.txt, package.json 并生成 .devpilot.yaml 使用正确的框架配置文件。

在devpilot下启动您的开发服务器

devpilot run api "uvicorn main:app --reload --port 8000"

或连接到已运行的服务器

devpilot attach api --port 8000

检查编辑文件后发生了什么

devpilot changed src/main.py

返回结构化JSON:

[{
  "service": "api",
  "reload": "reloaded",
  "reload_time_ms": 340,
  "healthy": true,
  "response_time_ms": 12
}]

一次管理一切

devpilot up      # start all services from .devpilot.yaml
devpilot down    # stop all services
devpilot status  # health check everything

为什么存在

当AI程序员编辑你的代码时,开发服务器会重新加载。但AI无法知道:

  • 重新加载成功还是失败?
  • 服务器是否正常?
  • 哪个服务受到了文件更改的影响?
  • 它应该等待、重试还是升级?

没有答案,AI程序员就会猜测。它们杀死了不应该杀死的进程,随机旋转端口,并造成级联故障。devpilot通过结构化、可靠的信号关闭了这个反馈回路。

运作原理

两种模式:

  • 管理 (devpilot run)--devpilot生成进程,捕获stdout,检测重载模式,拥有整个生命周期
  • 附上 (devpilot attach)--devpilot按端口监视现有进程,仅进行健康检查,从不杀死未启动的进程

三个恢复层:

层级 行动 示例
静默 自动重启并回退 进程崩溃,最多重试3次
报告 自动恢复+通知 重复崩溃,端口重新分配
上报 仅报告,从不采取行动 端口上的进程未知,代码错误

核心原则: devpilot从不随机旋转端口,从不杀死未启动的进程,从不核化所有Python任务。

MCP服务器

DevPilot通过 模型上下文协议,使其可本地访问任何兼容MCP的AI客户端。

工具 说明
devpilot_status 健康检查服务
devpilot_changed 报告文件编辑,获取reload+健康结果
devpilot_run 启动托管服务
devpilot_attach 监控现有服务
devpilot_stop 停止托管服务
devpilot_init 自动检测项目并生成配置
devpilot_up 从配置启动所有服务
devpilot_log 查看事件和恢复操作
devpilot_cleanup 删除过时状态
devpilot_health_check 直接端口健康检查

MCP服务器通过stdio在本地运行——它需要直接访问您机器的进程和端口。看 安装 用于设置。

内置框架配置文件

框架 检测 默认端口
FastAPI/Uvicorn uvicorn 指挥 8000
烧瓶 flask 指挥 5000
Django manage.py runserver 8000
快 vite 在命令中 5173
Next.js next dev 指挥 3000
创建React应用程序 react-scripts start 3000

可以在中添加自定义框架 .devpilot.yaml.

配置

.devpilot.yaml (由 devpilot init 或手动书写):

services:
  api:
    cmd: "uvicorn main:app --reload --port 8000"
    port: 8000
    health: /health
    file_patterns:
      - "src/**/*.py"
    reload_patterns:
      - "Reloading..."

  frontend:
    cmd: "npm run dev"
    port: 3000
    file_patterns:
      - "src/**/*.tsx"
      - "src/**/*.css"

recovery:
  max_retries: 3
  backoff_seconds: [1, 3, 5]
  auto_port_reassign: true

所有命令

命令 描述
devpilot init 自动检测项目并生成 .devpilot.yaml
devpilot run <name> <cmd> 启动托管服务
devpilot attach <name> --port N 监控现有服务
devpilot status [name] 健康检查一项或所有服务
devpilot changed <filepath> 报告文件更改,获取重新加载/健康结果
devpilot stop [name] [--all] 停止托管服务
devpilot restart <name> 重新启动托管服务
devpilot log [name] 显示最近的事件
devpilot cleanup 删除过时状态和死PID
devpilot up 从配置启动所有服务
devpilot down 停止所有服务

每个命令都将结构化JSON返回到stdout,退出代码为0(成功)、1(全部失败)或2(部分失败)。

面向AI工具作者

devpilot旨在以编程方式调用。MCP服务器是推荐的集成路径,但CLI也可以工作:

import subprocess, json

result = subprocess.run(
    ["devpilot", "changed", "src/main.py"],
    capture_output=True, text=True
)
changes = json.loads(result.stdout)

for svc in changes:
    if not svc["healthy"]:
        if svc["reload"] == "reload_failed":
            print(f"Code error in {svc['service']}: {svc.get('error')}")
        elif svc["reload"] == "timeout":
            print(f"Reload slow for {svc['service']}, waiting...")

需求

  • Python 3.10+
  • 适用于Windows、macOS和Linux

链接

许可证

麻省理工学院