Releases: lhhkuki/deepseek-proxy-manager
Releases · lhhkuki/deepseek-proxy-manager
AI Proxy Manager v3.0.0
AI Proxy Manager v3.0.0
新增
- 新增总览页,集中显示代理状态、Codex 模式、当前模型、当前账号、诊断报告、最近错误、更新检查和配置备份恢复。
- 新增模型预设选择页,选择预设后进入模型配置页面,并预填模型 ID、名称、API 地址、上游协议、推理能力和图片输入能力。
- 新增软件内确认弹窗,替换删除模型、删除账号、恢复配置等 Windows 原生弹窗。
- 新增后端诊断、模型预设、备份恢复和最新版本检查接口。
优化
- 模型配置支持手动选择“支持图片输入”,不再只依赖内部模型判断。
- 优化 Tab 切换动画,总览和其他板块切换体验保持一致。
- 优化备份策略:不再生成账号流水备份,配置备份自动保留最近 20 个,并清理历史 auth 流水备份。
- 新增 release 目录清理脚本,打包前自动清理旧安装包,避免多个历史安装包堆叠。
验证
- 通过 Python 编译检查。
- 通过前端 ESLint。
- 通过前端生产构建。
- 通过备份裁剪和账号保险箱保留的接口测试。
AI Proxy Manager v2.5.2
更新内容
- 重做项目介绍页,突出 Codex 本地模型与账号控制台定位。
- 更新版本到 2.5.2,并同步安装包文件名说明。
- 延续 2.5.x 的 Codex 配置切换、纯 API 启动器、插件增强、多账号管理和额度查看能力。
- 包含本地安全加固:管理接口写操作校验、本地代理 bearer token、模型 Base URL SSRF 防护、配置接口不暴露明文 API Key。
- 修复 Responses 协议兼容问题:字符串 input、Anthropic system/tool_choice 映射、OpenAI 流式完成事件重复等。
安装
下载 AI Proxy Manager Setup 2.5.2.exe 并双击安装。安装包已包含后端程序,不需要额外安装 Python。
验证
python -m compileall -f proxy api_server.py proxy_manager.pynpm run lintnpm run buildpython -m PyInstaller proxy-backend.spec --noconfirm --cleannpm run electron:build:win
v2.5.1 — 安全加固、搜索级联、消息清理修复
v2.5.1 更新内容
Codex 配置切换
- 新增官方账号 / 第三方插件兼容模式切换:可在软件「设置」页一键切换
~/.codex/config.toml。 - 插件兼容模式:保留 ChatGPT 官方登录态,模型请求走本地代理
http://127.0.0.1:15800/v1,用于 API 中转时继续使用插件市场。 - 官方账号模式:移除
AIProxyManagerprovider,切回官方 ChatGPT 登录态,不修改auth.json。 - 登录态检测:读取
~/.codex/auth.json判断是否已完成 ChatGPT 官方登录。 - 自动备份:写入 Codex 配置前备份到
~/.codex/backups_proxy_manager/。
安全加固
- API Key 加密存储:Fernet 加密 +
enc:v2:前缀,明文不再落盘 - 原子化配置写入:临时文件 +
os.replace(),JSON 损坏自动恢复 - SSRF 防护:
base_url校验拒绝内网/私有 IP - CORS 限制:仅允许 localhost/dev 来源
- Electron 安全:
nodeIntegration: false+contextIsolation: true+preload.cjs - Fernet 密钥随机生成:
os.urandom(32)替代确定性推导 - cryptography 顶层 import:缺失时友好报错
搜索功能
- 四级搜索引擎级联:Bing → 搜狗 → 360 → DuckDuckGo,一个不通自动切下一个
- 流式路径自动执行:web_search 结果内联推送,Codex 无需自己执行搜索
- 工具消息去重排序:按 tool_calls 顺序排列,去除重复
关键修复
- 修复未知
/v1/*透传 URL 拼接错误 - 日志队列满时不再影响代理请求
- API Key 加密失败时阻止保存,避免静默写入空密文
- 启动时不再强杀未知端口占用进程
- 推理开关只看模型配置,忽略 Codex 请求级的值
- thinking 字段仅对已知推理模型注入
- 孤儿 tool_calls/tool 消息全面清理(邻接检查 + 去重 + 排序)
- response_format 过滤,仅透传 text/json_object
- 推理缓存 TTL 生效(1小时)
- 流式读取 socket 120s 超时,防止线程挂起
- HTTPError 连接关闭,防止 fd 泄漏
- 重试指数退避(2^attempt)
- 优雅关闭:API stop 先于 SIGTERM
清理
- 删除不可用的 gui/、重复的 main.js、多余的 electron-builder.yml
安装
下载 AI.Proxy.Manager.Setup.2.5.1.exe 运行即可。
修复
- 修复 Codex 配置切换后按钮高亮没有跟随当前模式更新的问题。切回官方账号后,官方选项会变成蓝色,第三方选项会恢复普通状态。
- 修复 Codex 在官方账号和第三方插件兼容模式之间切换后,会话记录列表按 provider 分组导致看起来丢失的问题。现在切换时会同步会话 provider,并在同步前备份会话元数据和状态索引。
v2.5.0 — 安全加固、异常恢复、优雅生命周期
v2.5.0 更新内容
P0 修复
- JSON 解析异常处理:请求体 JSON 解析失败时返回友好错误,不再崩溃
- 响应体大小限制:上游响应超过 50MB 时拒绝读取,防止内存溢出
P1 修复
- fetchWithRetry 重试逻辑:5xx 服务端错误自动重试(带退避),4xx 客户端错误直接返回
- _drain_log_queue 并发竞态:改用
try get_nowait except Empty替代不安全的.empty()检查 - handleToggleProxy 乐观更新:操作后轮询服务器实际状态,不再盲目乐观
- ModelDialog 退出动画:去掉内部冗余的 AnimatePresence,由 App.tsx 统一管理
P2 改进
- Electron 启动轮询:用健康检查轮询替代写死的 4 秒延迟,后端就绪后立即显示窗口
- 后端优雅关闭:窗口关闭时先发 SIGTERM,等待 3 秒,再发 SIGKILL
- is_already_running 平台兼容:非 Windows 平台跳过 ctypes,改用端口检测
- ModelCard 空值保护:name/id 均为空时 firstLetter 用
?兜底 - 日志 ID 去重:用自增计数器替代时间戳,消除碰撞警告
v2.4.0 以来的累积改动
- Fernet 加密替代 XOR(兼容旧密钥自动迁移)
/api/models接口字段白名单防注入- API Key 加密失败时记录日志
- Fernet key 文件版本标记(F1 前缀)
- 流式错误分类:区分 HTTPError / ConnectionError / 其他异常
_stream_anthropic请求顺序修复:先发 SSE 头再请求上游- API 线程崩溃隔离:异常时打印 traceback
- 流式传输保证
response.completed事件(即使上游请求失败) - config 验证白名单、日志清理、线程安全锁
- model owned_by 改为
openai兼容插件
安装方法
下载 AI-Proxy-Manager-Setup-2.5.0.exe 运行即可,无需安装 Python。
v2.4.0 — 无需安装 Python,开箱即用
重大更新
- Python 后端打包为独立 exe — 不再需要用户单独安装 Python
- 安装程序包含完整运行环境,双击安装即可使用
- 包体积:112MB(Electron + 后端 exe)
不再需要
- ❌ 安装 Python
- ❌ 运行 pip install
- ❌ 配置环境变量
迁移
如果你之前使用 v2.3.x,卸载旧版后安装 v2.4.0 即可。模型配置保留在 .codex/proxy_config.json 不受影响。
v2.3.1 — 工具输出图片修复
修复
- 工具输出图片处理 — function_call_output 返回值中的 image 数据块现在正确转换为对应协议的图像格式(OpenAI: image_url,Anthropic: image source),不再丢弃为文本 placeholder
- 两个翻译路径(OpenAI / Anthropic)均已修复
安装程序
包含最新 Python 后端代码,支持 DeepSeek / Kimi Code / Moonshot 三供应商。
v2.3 — 流式修复 + 推理完善 + 全量审查
修复
- OpenAI 流式 502 — 补充缺失的 HTTP 响应头(send_response + end_headers),非流式流式均正常
- Anthropic thinking 注入 — 带 tool_calls 的 assistant 消息自动补空 thinking 块,Kimi 推理不再 400
- handler.py try/except — 整个 _handle_responses 纳入 try 保护,异常不再悄悄崩溃
- 前端日志去重 — 轮询改为就地替换,不再重复追加
- reasoning_content 缓存 — 响应中的推理内容缓存并在输出回退,V4 Pro 空 content 不再 502
- system 消息去重 — instructions 和 input 中的 system 消息不再重复
清理
- 移除死代码、精简日志输出
- requirements.txt 标注 pystray/pillow 为旧 GUI 可选依赖
- 全文语法编译通过,TypeScript 编译通过
v2.2 — Electron 前端 + 推理开关 + 多供应商完善
新增
- Electron + React 桌面应用 — 全新前端,替代 tkinter GUI。单窗口启动,关闭即停止后端
- 推理开关 — 每个模型独立开启/关闭推理增强(布尔值
reasoning,开启时自动设 budget_tokens=8192) - Anthropic thinking 块往返保留 — 推理内容在 Anthropic ↔ Responses 双向翻译中完整保留,Kimi Code 开启推理不再 400
- API Key 静态加密 — XOR + 机器绑定密钥加密存储(
proxy_api_key.enc),不再明文落盘 - Headless 启动器 —
proxy_manager.py纯后台运行,不弹 tkinter 窗口。控制台显示状态,Ctrl+C 停止 - NSIS 安装程序 — 打包为
AI Proxy Manager Setup.exe,用户到手直接安装
改进
- 每模型独立配置 — 模型新增
base_url+api_key+reasoning字段,多供应商随意切换 - 孤儿 tool_use 邻接清理 — Anthropic 格式消息自动匹配/清理,不再逐个硬编码 spawn_agent/update_plan
- 图片传输 — data URI → base64 / URL 源双向转换,保留图像数据
- stream_options.include_usage — 流式响应确保完整 token 计数
- max_completion_tokens — 替代已废弃的 max_tokens
- 推理缓存线程安全 — threading.Lock 保护
_REASONING_CACHE读写
修复
- 自启动
__file__指向proxy/config.py而非入口文件 _extract_text(None)返回字符串 "None"(应返回 "")- 推理循环:空
reasoning_content注入逻辑改为仅 tool_calls 消息,避免文本消息循环 - 工具调用:spawn_agent、update_plan 等 Codex 专有工具不再导致上游 API 报错
- PowerShell 宽度标识
.pack(width=80)tkinter 无效参数 get_active_model_config()无 api_key 时返回 401 明确报错
文件结构
deepseek-proxy-manager/
├── proxy_manager.py ← 后端启动器(代理 15800 + API 15801)
├── api_server.py ← Flask REST API
├── proxy/
│ ├── config.py ← 配置、密钥加密、推理缓存
│ ├── server.py ← HTTP 代理服务器
│ ├── handler.py ← 请求路由 + 通用方法
│ ├── translate_openai.py ← Responses → Chat Completions
│ └── translate_anthropic.py ← Responses → Anthropic Messages
├── gui/ ← tkinter(旧版保留)
├── frontend/ ← Electron + React 前端
└── 启动代理.bat
v2.1 — spawn_agent 恢复 + 代码审查修复
修复
- 恢复 Anthropic 路径 spawn_agent 支持:不再硬删除,改为邻接匹配算法自动判断保留/清理
- 推理循环修复:移除空
reasoning_content注入,解决 V4 Pro 重复输出 bug - 自启动修复:
__file__正确指向入口文件而非 config.py - 线程安全:推理缓存加
threading.Lock - 空值处理:
_extract_text(None)不再返回字符串 "None" - 死代码清理:移除不可达的
data: [DONE]检查 - 未用导入清理:gui/app.py 移除
sys、json
变更文件
proxy/translate_anthropic.py— spawn_agent 特判移除,改为通用邻接清理proxy/translate_openai.py— 推理缓存空值注入移除 + 线程锁proxy/config.py— 自启动路径修复 + 线程锁proxy/handler.py— _extract_text 空值处理gui/app.py— 未用导入清理README.md— 项目结构更新
v2.0 — 模块化重构 + 多供应商支持
新增
- Anthropic Messages API 翻译:自动检测 Kimi Code 地址,切换协议格式
- 多供应商支持:DeepSeek / Kimi Code / Moonshot 无缝切换,填什么地址自动适配
- 图片传输修复:data URI 正确转为 base64 图像块,不再当纯文本发送
- 启动器 .bat:双击即可启动,无需命令行
重构
- 1615 行单体文件拆分为 7 个模块(proxy/、gui/)
- Mixin 继承架构:
ProxyHandler(OpenAITranslateMixin, AnthropicTranslateMixin, BaseHTTPRequestHandler) - 入口文件精简化至 30 行
修复
- 孤儿 tool_use/tool_result 通用清理算法(邻接匹配 + 全局扫荡)
- spawn_agent、update_plan 等 Codex 专属工具调用不再导致上游 API 报错
- 流式 SSE 格式兼容(OpenAI
data:vs Anthropicdata:空格差异) - total_tokens 字段补全
文件结构
deepseek-proxy-manager/
├── proxy_manager.py ← 入口
├── requirements.txt
├── 启动代理.bat
├── proxy/
│ ├── config.py ← 配置、常量、推理缓存
│ ├── server.py ← 代理服务器线程
│ ├── handler.py ← HTTP 路由 + 通用方法
│ ├── translate_openai.py ← OpenAI Chat Completions 翻译
│ └── translate_anthropic.py ← Anthropic Messages 翻译
└── gui/
└── app.py ← 托盘 GUI