使用说明
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
链接
许可证
麻省理工学院
