This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
MTGA 是一个基于本地代理的 IDE 固定模型服务商解决方案,支持 Windows 和 macOS 平台。项目通过本地代理服务器拦截 IDE 对 OpenAI API 的调用,并转发到用户自定义的 API 服务商。
项目提供两个版本:
- mtga_gui.py - 重构版本(单进程模块化架构,支持 Nuitka 打包)
注意:原 mtga_gui_v2.py 已重命名为 mtga_gui.py,原版本已归档到 archive/ 目录。
- mtga_gui.py - 主 GUI 应用程序,单进程架构
- modules/ - 模块化组件目录
resource_manager.py- 资源路径管理,支持开发和打包环境cert_generator.py- 证书生成模块,内置调用cert_installer.py- 证书安装模块,支持多平台hosts_manager.py- hosts 文件管理模块proxy_server.py- 代理服务器模块,使用线程模式
- 通过修改 hosts 文件将
api.openai.com指向本地 (127.0.0.1) - 启动本地 HTTPS 代理服务器,监听 443 端口
- 使用自签名证书处理 SSL 连接
- 将 IDE 发送的请求转发到用户配置的目标 API 端点
- 无多进程问题 - 所有功能在主进程中通过模块调用实现
- 无虚拟环境依赖 - 消除了对
.venv目录的硬依赖 - 智能路径管理 - 自动检测开发和打包环境,动态调整资源路径
- 线程化代理 - 代理服务器在后台线程运行,避免子进程问题
- 模块化设计 - 便于维护和打包,支持 Nuitka 编译
项目使用 uv 作为包管理器,支持 Python 3.13:
# 安装依赖
uv sync
# 安装构建依赖 (Windows)
uv sync --group win-build
# 安装构建依赖 (macOS)
uv sync --group mac-build- Flask - Web 服务器框架
- requests - HTTP 请求库
- PyYAML - 配置文件解析
- tkinter - GUI 界面 (内置)
# GUI 自动启动(自动管理员权限、依赖安装)
run_mtga_gui.bat
# 或直接运行(需要管理员权限)
uv run python mtga_gui.py# GUI 自动启动(自动权限管理、依赖安装)
./run_mtga_gui.sh
# 或直接运行(需要 sudo 权限)
sudo uv run python mtga_gui.py# 安装基础依赖
uv sync
# 安装构建依赖 (Windows)
uv sync --group win-build
# 安装构建依赖 (macOS)
uv sync --group mac-build# 测试目标 API 连接
uv run python test_target_api.py
# 生成证书(开发调试)
uv run python -c "from modules.cert_generator import generate_certificates; generate_certificates()"
# 安装CA证书(开发调试)
uv run python -c "from modules.cert_installer import install_ca_cert; install_ca_cert()"# 构建单文件可执行程序
build_onefile.bat- 需要 Visual Studio 2022 和 C++ 构建工具
- 输出位置:
dist-onefile\MTGA_GUI-v{版本号}-x64.exe - 推荐用于生产发行和用户分发
- 支持用户数据持久化存储
# 构建独立版本程序
build_standalone.bat- 需要 Visual Studio 2022 和 C++ 构建工具
- 输出位置:
dist-standalone\mtga_gui.dist\MTGA_GUI.exe - 适用于开发测试环境
# 构建 macOS 应用包(.app)
./build_mac_app.sh- 使用 Nuitka
--standalone+--macos-create-app-bundle - 输出位置:
dist-onefile/MTGA_GUI-v{版本号}-{架构}.app - 支持 Intel/Apple Silicon 架构自动识别
- 启动速度快,无需解压过程
# 创建应用包并生成 DMG
cd mac && ./create_mac_app.sh
# 可选:创建 DMG 安装包
uv run dmgbuild -s mac/dmg_settings.py "MTGA GUI Installer" MTGA_GUI-v{版本号}-{架构}.dmg- 支持 DMG 安装包生成
- 自动配置应用图标和启动脚本
项目配置文件,包含:
- 目标 API 端点配置
- 自定义模型 ID 映射
- SSL 证书路径设置
证书相关文件和配置:
- OpenSSL 配置文件 (*.cnf)
- 证书主题配置 (*.subj)
- Shell 脚本 (genca.sh, gencrt.sh)
- 开发和测试 - 使用
mtga_gui.py(源码运行) - 生产发行 - 使用
build_onefile.bat(单文件版本) - 开发测试打包 - 使用
build_standalone.bat(独立版本)
- ✅ 多进程子进程找不到 Python 解释器 - 改为模块化直接调用
- ✅ 相对路径依赖失效 - 使用智能资源管理器
- ✅ 虚拟环境路径硬编码 - 消除对
.venv的依赖 - ✅ 临时文件创建复杂 - 简化配置管理流程
- ✅ 代理服务器子进程问题 - 改为后台线程模式
| 特性 | 原版本 | 重构版本 |
|---|---|---|
| 证书生成 | 子进程调用 | 模块化直接调用 |
| 代理服务器 | 子进程 + 临时文件 | 后台线程 |
| 路径管理 | 硬编码相对路径 | 智能资源管理器 |
| 虚拟环境依赖 | 必需 | 无依赖 |
| Nuitka 兼容性 | ❌ 有问题 | ✅ 完全兼容 |
单文件版本提供专门的用户数据管理功能:
- Windows:
%APPDATA%\MTGA\ - Unix/macOS:
~/.mtga/
mtga_config.yaml- 配置文件(API端点、模型映射等)ca/- SSL证书文件夹(根证书、服务器证书等)hosts.backup- hosts文件备份backups/- 数据备份文件夹
- 打开目录 - 使用系统文件管理器打开用户数据目录
- 备份数据 - 创建带时间戳的完整数据备份
- 还原数据 - 从最新备份恢复用户数据(覆盖现有数据)
- 清除数据 - 删除所有用户数据(保留历史备份)
注意:用户数据管理标签页仅在单文件模式(is_packaged())下显示。
- 证书私钥文件 (*.key) 包含敏感信息,不应提交到版本控制
- 代理服务器需要管理员权限运行 (监听 443 端口)
- hosts 文件修改需要系统管理员权限
- GUI 相关代码使用中文注释
- 使用 CRLF 换行符 (Windows 兼容)
- 函数级注释保持中文
- 优先编辑现有文件而非创建新文件
- Bash 命令路径规范 - 在 Bash 环境中使用正斜杠路径格式 (例如:
C:/github/mtga/而非C:\github\mtga\)
# 验证目标 API 连接
uv run python test_target_api.py
# 以调试模式运行(如果支持)
uv run python mtga_gui.py --debugmodules/resource_manager.py- 处理开发/打包环境的路径问题is_packaged()- 检测是否在 Nuitka 打包环境中运行get_user_data_dir()- 获取用户数据持久化存储目录
mtga_gui.py (主程序)
├── modules/
│ ├── resource_manager.py # 资源路径管理
│ ├── cert_generator.py # 证书生成
│ ├── cert_installer.py # 证书安装
│ ├── hosts_manager.py # hosts文件管理
│ └── proxy_server.py # 代理服务器(线程模式)
├── ca/ # 证书配置和脚本
├── openssl/ # OpenSSL 工具
└── icons/ # 应用图标资源
- 端口冲突 - 检查 443 端口是否被其他服务占用
- 证书信任 - 确保 CA 证书已正确安装到系统信任存储
- 权限不足 - 确保以管理员权限运行程序
- 依赖缺失 - 使用
uv sync重新安装依赖
使用 --debug 参数启动代理服务器获取详细日志:
uv run python trae_proxy.py --debug- 不要自己运行macos app构建脚本,我运行更方便。