Skip to content

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 attempts

2. 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 commit

SOCKS5 代理(新增 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:[email protected]: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