Version: 1.1 | 基于大语言模型(LLM)的智能自动化编译工具
能够自动分析项目结构、安装依赖、识别编译错误并自动修复。
- � README智能解析 (v1.1新增): 自动从README文件中提取构建指令,提高编译成功率
- �🔍 智能项目分析: 自动识别项目类型、编程语言和构建系统
- 📦 自动依赖管理: 智能下载和安装编译所需的依赖
- 🐛 错误自动修复: 使用LLM分析编译错误并自动生成修复方案
- 🔄 迭代修复: 支持多次尝试修复,直到编译成功
- 🌐 广泛支持: 支持多种编程语言和构建系统
- 🎯 零配置: 给定项目路径即可自动化完成全流程
系统现在会首先尝试从项目的README文件中提取构建指令:
- 自动查找README: 支持
README.md,README.txt,README.rst等多种格式 - 智能提取: 使用LLM从README中智能提取:
- 构建系统类型(CMake, Make等)
- 完整的构建命令序列
- 所需的依赖项
- 项目使用的编程语言
- 优先级: README指令 > 自动检测的构建系统 > LLM推断
- ✅ 自动修正
mkdir build为mkdir -p build,避免目录已存在错误 - ✅ 修复构建命令更新机制,避免无限循环
- ✅ 支持LLM动态调整构建命令
更多详情见 CHANGELOG.md
cd auto-compiler
pip install -r requirements.txt编辑 config/config.json 文件,填入你的OpenAI API密钥:
{
"openai_api_key": "your-api-key-here",
"openai_api_base": "https://api.openai.com/v1",
"model": "gpt-4-turbo-preview",
"max_retry": 5
}💡 支持任何兼容OpenAI格式的API服务,如Azure OpenAI、OpenRouter等
# 以root用户运行
sudo python main.py /path/to/your/project
# 或切换到root
sudo su
python main.py /path/to/your/projectdocker run -it --rm \
-v $(pwd)/auto-compiler:/app \
-v /path/to/project:/project \
-e OPENAI_API_KEY="your-api-key" \
ubuntu:22.04 \
bash -c "cd /app && pip3 install -r requirements.txt && python3 main.py /project"💡 Docker方式最安全方便,详见 DOCKER_GUIDE.md
# 编译指定项目
python main.py /path/to/project
# 使用自定义配置文件
python main.py /path/to/project --config custom_config.json
# 显示详细日志
python main.py /path/to/project --log-level DEBUG
# 设置最大重试次数
python main.py /path/to/project --max-retry 10project_path: (必需)待编译项目的路径-c, --config: 配置文件路径(默认: config/config.json)-l, --log-level: 日志级别,可选 DEBUG/INFO/WARNING/ERROR(默认: INFO)--max-retry: 最大重试次数(默认: 5)
| 构建系统 | 语言 | 支持状态 |
|---|---|---|
| CMake | C/C++ | ✅ |
| Make | C/C++ | ✅ |
| Maven | Java | ✅ |
| Gradle | Java/Kotlin | ✅ |
| npm | JavaScript/TypeScript | ✅ |
| Cargo | Rust | ✅ |
| Go Modules | Go | ✅ |
| setuptools/pip | Python | ✅ |
| Poetry | Python | ✅ |
| Meson | C/C++ | ✅ |
| Bazel | 多语言 | ✅ |
| Autotools | C/C++ | ✅ |
┌─────────────────────┐
│ 1. 项目分析 │ ← 识别项目类型和构建系统
└──────────┬──────────┘
↓
┌─────────────────────┐
│ 2. 依赖安装 │ ← 自动下载和安装依赖
└──────────┬──────────┘
↓
┌─────────────────────┐
│ 3. 尝试编译 │ ← 执行构建命令
└──────────┬──────────┘
↓
[成功?]
/ \
是 否
↓ ↓
完成 ┌─────────────────────┐
│ 4. 错误分析与修复 │ ← LLM分析错误并生成修复
└──────────┬──────────┘
↓
重新编译
↓
[成功或达到重试上限]
- 扫描项目文件结构
- 识别构建配置文件
- 检测编程语言
- 生成项目元信息
- 根据构建系统自动安装依赖
- 支持 npm, pip, cargo, maven, gradle 等
- 处理依赖安装错误
- 解析编译错误输出
- 使用LLM分析错误原因
- 生成具体的修复方案
- 应用代码修改
- 封装OpenAI API调用
- 支持工具调用(Function Calling)
- 支持流式响应
- 协调各个模块
- 管理编译流程
- 记录编译历史
{
"openai_api_key": "your-api-key", // OpenAI API密钥
"openai_api_base": "https://...", // API端点
"model": "gpt-4-turbo-preview", // 使用的模型
"max_retry": 5, // 最大重试次数
"timeout": 300, // API超时时间(秒)
"log_level": "INFO" // 日志级别
}也可以通过环境变量配置:
export OPENAI_API_KEY="your-api-key"
export OPENAI_API_BASE="https://api.openai.com/v1"
export OPENAI_MODEL="gpt-4-turbo-preview"# 克隆一个开源项目
git clone https://github.com/example/project.git
# 自动编译
python main.py project/# .github/workflows/build.yml
- name: Auto Compile
run: |
python auto-compiler/main.py ./ --config ci-config.json# 批量编译多个项目
for project in projects/*; do
python main.py "$project"
doneLLM使用Function Calling与工具交互,你可以扩展工具定义来增强能力:
# 在相应的工具文件中添加新的工具定义
tools = [{
"type": "function",
"function": {
"name": "your_custom_tool",
"description": "工具描述",
"parameters": {
# 参数定义
}
}
}]系统使用以下策略修复编译错误:
- 代码修改: 修改源代码文件
- 依赖安装: 安装缺失的依赖包
- 配置调整: 修改构建配置文件
- 环境设置: 设置必要的环境变量
编译过程会生成详细的日志文件 auto_compiler.log,包含:
- 项目分析结果
- 依赖安装过程
- 编译命令执行
- 错误分析过程
- LLM交互记录
- 修复方案应用
- API费用: 使用LLM API会产生费用,建议设置合理的重试次数
- 代码备份: 系统会修改源代码,建议先备份或使用版本控制
- 网络连接: 需要稳定的网络连接访问LLM API
- 权限要求:
- 需要文件读写权限和执行构建工具的权限
- 建议在root用户或具有足够权限的用户下运行
- 系统会自动安装缺失的构建工具和依赖(如cmake、make等)
- 隐私安全: 项目代码会发送给LLM服务,请注意隐私和安全
- 自动安装: 系统会自动执行包管理器命令(apt、yum等)安装依赖,不使用sudo前缀
- 适合容器: 特别适合在Docker等容器环境中使用,可以自动配置完整的编译环境
# 检查网络连接
curl https://api.openai.com/v1/models
# 检查API密钥
export OPENAI_API_KEY="your-key"
python -c "import os; print(os.getenv('OPENAI_API_KEY'))"# 使用DEBUG日志级别查看详细信息
python main.py /path/to/project --log-level DEBUG
# 查看日志文件
tail -f auto_compiler.log# 手动安装依赖后再运行
cd /path/to/project
npm install # 或其他包管理器
cd -
python main.py /path/to/project系统会自动移除命令中的sudo前缀并执行。如遇到apt锁定错误:
# 等待其他进程完成
lsof /var/lib/dpkg/lock-frontend
# 或强制解锁(谨慎使用)
rm /var/lib/dpkg/lock-frontend
rm /var/lib/dpkg/lock
# 然后重新运行
python main.py /path/to/project注意:
- 系统会自动执行
apt-get install、yum install等命令 - 不会添加 sudo 前缀
- 建议在root用户或Docker容器中运行
- 详见
SECURITY_IMPROVEMENTS.md
欢迎提交Issue和Pull Request!
git clone <repository-url>
cd auto-compiler
pip install -r requirements.txt
pip install -r requirements-dev.txt # 如果有开发依赖- 遵循PEP 8规范
- 使用type hints
- 添加详细的docstring
GPL-3.0 License
如有问题或建议,请通过以下方式联系:
- 提交Issue
- 发送邮件
让编译变得简单,让LLM成为你的编译助手! 🚀