Auto-Deployer 是一个 LLM 驱动的自动化部署工具。只需提供 Git 仓库 URL,它就能自主分析项目、生成部署计划并完成部署。支持 SSH 远程部署和本地部署两种模式。
Auto-Deployer 可以智能识别并部署多种类型的项目:
| 项目类型 | 支持的框架/技术 | 部署策略 | 状态 |
|---|---|---|---|
| Python | Flask, Django, FastAPI | Traditional / Docker | ✅ 已验证 |
| Node.js | Express, Next.js, Nuxt, Vue, React, Vite | Traditional / Docker | ✅ 已验证 |
| 静态网站 | HTML, Hugo, Jekyll | Static / Nginx | ✅ 已验证 |
| 容器化项目 | Dockerfile, docker-compose.yml | Docker / Docker-Compose | ✅ 已验证 |
| Go | 标准 Go 项目 | Traditional / Docker | ✅ 支持 |
| Rust | Cargo 项目 | Traditional / Docker | ✅ 支持 |
| Java | Maven, Gradle | Traditional / Docker | ✅ 支持 |
基于真实项目的自动化测试结果(本地部署模式)(使用grok-code Fast1作为基座模型测试):
| 指标 | 数据 | 说明 |
|---|---|---|
| 整体成功率 | ~70% | 基于多个公开仓库的测试 |
| 平均部署时间 | 5-10 分钟 | 简单项目约 3-5 分钟,复杂项目 10-15 分钟 |
| 平均迭代次数 | 20-40 次 | LLM Agent 的决策和执行迭代 |
| 策略准确率 | ~95% | 正确选择部署策略(Docker/Traditional 等) |
| 自动修复率 | ~60% | 遇到错误时成功自我修复的比例 |
部署一个项目平均花费约为 $0.2
以下是实际测试通过的项目示例:
| 项目 | 类型 | 部署时间 | 迭代次数 | 状态 |
|---|---|---|---|---|
| Express.js 官方仓库 | Node.js | ~5 分钟 | 10 次 | ✅ 成功 |
| Flask 官方仓库 | Python | ~4 分钟 | 12 次 | ✅ 成功 |
| Next.js 博客项目 | Node.js | ~6 分钟 | 20 次 | ✅ 成功 |
| Hugo 静态站点 | Static | ~8 分钟 | 30 次 | ✅ 成功 |
| Docker 欢迎页面 | Docker | ~5 分钟 | 15 次 | ✅ 成功 |
| Hugo 静态站点 | Static | ~15 分钟(下载组件耗时久) | 10 次 | ✅ 成功 |
- 快速分析:本地克隆并分析仓库,通常 10-30 秒完成
- 智能规划:生成结构化部署计划,通常 5-15 秒
- 增量部署:重复部署时会跳过已安装的依赖
- 资源优化:自动检测并复用已有环境(Node.js、Python 等)
Auto-Deployer 采用两阶段部署模式:先规划后执行,确保部署过程可预测、可控制。
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 本地预分析 │ ──▶ │ 连接建立 │ ──▶ │ 规划阶段 │ ──▶ │ 执行阶段 │
│ 克隆 + 读取 │ │ SSH/本地探测 │ │ LLM 生成计划 │ │ 按步骤执行 │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
- 本地预分析:克隆仓库到本地,读取关键文件(README、package.json、requirements.txt、Dockerfile 等),识别项目类型和框架
- 连接建立:建立到目标环境的连接(SSH 远程服务器或本地),收集主机信息(操作系统、内核版本等)
- 规划阶段:LLM 分析项目并生成结构化的部署计划(策略选择、步骤拆解、风险识别)
- 执行阶段:按计划逐步执行,每个步骤内 LLM 自主决策,支持步骤级重试/跳过
- 🤖 全自动部署:LLM Agent 模式,无需人工干预
- 📋 智能规划:两阶段部署(规划+执行),执行前生成完整部署计划,可预览和确认
- 📦 智能分析:自动识别项目类型(Python/Node.js/静态网站等)和框架
- 🔄 自我修复:遇到错误时 LLM 会分析日志并尝试修复
- 🎯 步骤化执行:将部署拆解为原子步骤,支持步骤级重试/跳过/中止
- 💬 用户交互:关键决策点可询问用户(端口选择、配置值等)
- 📝 详细日志:每次部署的完整对话记录保存为 JSON 文件,包含计划、步骤、命令历史
- 🔧 灵活配置:支持环境变量和配置文件
- 🖥️ 多平台支持:支持 SSH 远程部署(Linux)和本地部署(Windows/Linux/Mac)
- Python 3.10+
- 支持的 LLM 提供商:Gemini, OpenAI, anthropic, deepseek, openrouter.
git clone https://github.com/ctfy66/Auto-Deployer.git
cd Auto-Deployer
pip install -e .创建 .env 文件(或直接设置环境变量):
# LLM API 密钥
AUTO_DEPLOYER_GEMINI_API_KEY=your-gemini-api-key
# SSH 目标服务器(可选,也可通过命令行指定)
AUTO_DEPLOYER_SSH_HOST=192.168.1.100
AUTO_DEPLOYER_SSH_USERNAME=deploy
AUTO_DEPLOYER_SSH_PASSWORD=yourpassword
# 代理设置(可选)
HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890auto-deployer deploy \
--repo [email protected]:username/project.git \
--host 192.168.1.100 \
--user deploy \
--auth-method password \
--password yourpasswordauto-deployer deploy \
--repo [email protected]:username/project.git \
--local本地部署会在当前机器上执行,支持 Windows(PowerShell)和 Linux/Mac(Bash)。
# 列出所有部署日志
auto-deployer logs --list
# 查看最近一次部署
auto-deployer logs
# 查看特定日志
auto-deployer logs --file deploy_project_20251202_120000.json配置文件位于 config/default_config.json:
| 提供商 | 配置 | 推荐模型 | 环境变量 |
|---|---|---|---|
| Gemini(推荐) | "provider": "gemini" |
gemini-2.0-flash-expgemini-1.5-pro |
AUTO_DEPLOYER_GEMINI_API_KEY |
| OpenAI | "provider": "openai" |
gpt-4ogpt-4o-mini |
AUTO_DEPLOYER_OPENAI_API_KEY |
| Anthropic | "provider": "anthropic" |
claude-3-5-sonnet-20241022claude-3-opus-20240229 |
AUTO_DEPLOYER_ANTHROPIC_API_KEY |
| DeepSeek | "provider": "deepseek" |
deepseek-chatdeepseek-coder |
AUTO_DEPLOYER_DEEPSEEK_API_KEY |
| OpenRouter | "provider": "openrouter" |
anthropic/claude-3.5-sonnetgoogle/gemini-2.0-flash-exp |
AUTO_DEPLOYER_OPENROUTER_API_KEY |
| OpenAI 兼容 | "provider": "openai-compatible" |
取决于端点(Ollama、LM Studio 等) | AUTO_DEPLOYER_LLM_API_KEY |
推荐配置:
- 最佳性价比:
grok Code Fast 1 - 本地部署:使用 OpenAI 兼容模式连接 Ollama、LM Studio 等本地模型
在 config/default_config.json 的 agent 部分可配置 Agent 行为:
| 配置项 | 默认值 | 说明 | 影响 |
|---|---|---|---|
max_iterations |
180 | Agent 最大迭代次数 | 控制整个部署过程的最大执行步骤 |
max_iterations_per_step |
30 | 单个步骤最大迭代次数 | 防止在某个步骤上无限循环 |
use_orchestrator |
true | 是否使用编排器(规划模式) | 启用后会先生成计划再执行 |
require_plan_approval |
false | 是否需要批准计划 | 启用后会在执行前要求用户确认 |
planning_timeout |
60 | 规划阶段超时(秒) | 防止规划阶段耗时过长 |
compression_threshold |
0.5 | 上下文压缩阈值(0-1) | 当上下文使用率超过此值时触发压缩 |
compression_keep_ratio |
0.3 | 压缩保留比例(0-1) | 压缩时保留多少比例的重要信息 |
Agent 内置循环检测机制,防止重复执行相同操作:
| 配置项 | 默认值 | 说明 |
|---|---|---|
loop_detection.enabled |
true | 是否启用循环检测 |
loop_detection.direct_repeat_threshold |
3 | 直接重复命令阈值 |
loop_detection.error_loop_threshold |
4 | 错误循环阈值 |
loop_detection.command_similarity_threshold |
0.85 | 命令相似度阈值(0-1) |
loop_detection.output_similarity_threshold |
0.8 | 输出相似度阈值(0-1) |
loop_detection.temperature_boost_levels |
[0.3, 0.5, 0.7] | 检测到循环后的温度提升级别 |
工作原理:当检测到 Agent 重复执行相似命令或陷入错误循环时,自动提升 LLM temperature 以增加随机性,帮助跳出循环。
控制 Agent 与用户的交互方式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
cli |
命令行交互模式(默认) | 需要人工监督和决策的部署 |
auto |
自动模式,自动选择默认选项 | 无人值守的自动化部署 |
callback |
回调模式 | GUI/Web 应用集成 |
配置示例:
{
"interaction": {
"enabled": true,
"mode": "cli"
}
}如果需要通过代理访问 LLM API:
{
"llm": {
"proxy": "http://127.0.0.1:7890"
}
}或使用环境变量:
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890- 密码认证:
--auth-method password --password yourpassword - 密钥认证:
--auth-method key --key-path ~/.ssh/id_rsa
auto-deployer deploy [OPTIONS]
必需参数:
--repo Git 仓库 URL(支持 SSH 和 HTTPS)
远程部署必需:
--host 目标服务器地址
--user SSH 用户名
--auth-method 认证方式:password 或 key
可选参数:
--local, -L 本地部署模式(无需 SSH)
--deploy-dir 目标部署目录(默认:~/<repo_name>)
--port SSH 端口(默认 22,仅远程部署)
--password SSH 密码(auth-method=password 时)
--key-path SSH 私钥路径(auth-method=key 时)
--config 自定义配置文件路径
--workspace 本地工作目录
# 列出所有部署日志
auto-deployer logs --list
# 查看最近一次部署
auto-deployer logs --latest
# 查看特定日志
auto-deployer logs --file deploy_project_20251202_120000.json
# 仅显示摘要
auto-deployer logs --latest --summarysrc/auto_deployer/
├── cli.py # 命令行接口
├── config.py # 配置管理
├── workflow.py # 部署工作流
├── analyzer/ # 仓库分析模块
│ └── repo_analyzer.py
├── llm/ # LLM 提供商
│ ├── agent.py # Agent 核心逻辑(包含规划功能)
│ ├── gemini.py
│ └── openai.py
├── orchestrator/ # 部署规划与编排
│ ├── orchestrator.py # 部署编排器
│ ├── step_executor.py# 步骤执行器
│ ├── models.py # 数据模型
│ └── prompts.py # Prompt 模板
├── ssh/ # SSH 会话管理
│ ├── session.py
│ └── probe.py
├── local/ # 本地会话管理
│ ├── session.py
│ └── probe.py
├── interaction/ # 用户交互处理
│ └── handler.py
├── knowledge/ # 经验存储与检索(可选)
│ ├── store.py
│ └── retriever.py
└── workspace/ # 工作空间管理
└── manager.py
默认启用,两阶段部署:
- 规划阶段:LLM 分析项目并生成结构化部署计划
- 执行阶段:按计划逐步执行,每个步骤内 LLM 自主决策
优势:
- ✅ 可预测:执行前可查看完整计划
- ✅ 可控制:步骤失败时可选择重试/跳过/中止
- ✅ 可追踪:结构化日志记录每个步骤的执行细节
MIT