Release v0.1.6
🔄 LLM API 自动重试与网络增强
这个版本专注于提升网络请求的稳定性和容错能力,添加了自动重试机制和完整的代理支持。
新功能
1. 自动重试机制
LLM API 请求现在会自动重试,应对临时性网络故障和 API 限流。
重试策略:
- 指数退避: 1秒 → 2秒 → 4秒
- 最多重试: 3 次(总共尝试 4 次)
- 智能重试: 仅对可恢复错误重试
- ✅ 连接失败 (connection failed)
- ✅ 429 限流 (rate limit)
- ❌ 401/403 认证错误(不重试)
- ❌ 400 请求格式错误(不重试)
重试日志示例(使用 -v 查看):
WARN OpenAI API request failed (attempt 1/4): connection failed. Retrying in 1.0s...
WARN OpenAI API request failed (attempt 2/4): connection failed. Retrying in 2.0s...
INFO OpenAI API request succeeded after 3 attempts2. HTTP 超时配置
防止请求无限挂起:
- 请求超时: 120 秒(整个 API 调用)
- 连接超时: 10 秒(建立连接)
这确保即使 API 响应缓慢或网络不稳定,程序也不会卡死。
3. 增强的错误信息
网络错误现在提供详细的诊断信息和解决建议:
✗ Error: OpenAI API connection failed: error sending request. Check network connectivity or API endpoint.
💡 Suggestion: Cannot connect to API server. Check endpoint URL, network, or DNS settings错误类型识别:
timeout- 请求超时connection failed- 无法建立连接request error- 请求构造错误body error- 请求体错误decode error- 响应解码错误
4. 代理支持
支持通过环境变量配置代理(reqwest 内置功能):
HTTP/HTTPS 代理:
bash
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
gcop-rs commitSOCKS5 代理(新增 socks feature):
bash
export HTTP_PROXY=socks5://127.0.0.1:1080
export HTTPS_PROXY=socks5://127.0.0.1:1080
gcop-rs commit代理认证:
bash
export HTTP_PROXY=http://username:password@proxy.example.com:8080排除代理:
bash
export NO_PROXY=localhost,127.0.0.1,.local其他改进
常量重构
提取所有魔法数字到 src/constants.rs:
rust
// 新增常量模块
pub mod http {
pub const REQUEST_TIMEOUT_SECS: u64 = 120;
pub const CONNECT_TIMEOUT_SECS: u64 = 10;
}
pub mod retry {
pub const MAX_RETRY_ATTEMPTS: usize = 3;
pub const INITIAL_RETRY_DELAY_MS: u64 = 1000;
}文件大小校验优化
优化了大文件跳过逻辑,避免发送超大 diff 到 LLM API。
使用示例
在网络不稳定环境下使用
bash
# 启用 verbose 模式查看重试过程
gcop-rs -v commit
# 输出示例:
# DEBUG Sending request to: https://api.openai.com/v1/chat/completions
# ERROR OpenAI API request failed [connection failed]: ...
# WARN OpenAI API request failed (attempt 1/4): connection failed. Retrying in 1.0s...
# WARN OpenAI API request failed (attempt 2/4): connection failed. Retrying in 2.0s...
# INFO OpenAI API request succeeded after 3 attempts配置代理
bash
# 临时使用代理
HTTP_PROXY=http://127.0.0.1:7890 HTTPS_PROXY=http://127.0.0.1:7890 gcop-rs commit
# 或永久配置(添加到 ~/.bashrc 或 ~/.zshrc)
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890验证代理是否生效
bash
gcop-rs -v commit
# 如果看到类似日志,说明代理已启用:
# DEBUG reqwest::connect: proxy(http://127.0.0.1:7890/) intercepts 'https://api.openai.com/'升级说明
从 v0.1.5 升级无需任何配置更改。
所有新功能都是自动启用的:
- ✅ 自动重试 - 开箱即用
- ✅ 超时保护 - 开箱即用
- ✅ HTTP/HTTPS 代理 - 通过环境变量
- ✅ SOCKS 代理 - 通过环境变量
📦 安装
bash
cargo install gcop-rs或从源码构建:
bash
git clone https://github.com/AptS-1547/gcop-rs.git
cd gcop-rs
cargo build --release📚 文档
反馈与贡献
如有问题或建议,欢迎提交 Issue。