Skip to content

Release v0.9.0

架构重构 - 配置与 Provider 重构 + CI 模式 + 配置验证

本次发布是一个重大内部重构版本,重新组织了配置系统、LLM Provider 架构和错误处理,同时新增 CI 模式支持、配置验证和安全审计 CI。

新增

CI 模式支持

  • 新增 CI/CD 环境变量:GCOP_CI_PROVIDERGCOP_CI_API_KEYGCOP_CI_MODELGCOP_CI_ENDPOINT
  • CI=1 时,自动创建 "ci" provider 并设为最高优先级
  • 可无缝集成 GitHub Actions、GitLab CI 等

配置验证

  • 启动时自动执行 AppConfig::validate() 检查配置合法性
  • Provider 验证:temperature 范围 [0.0, 2.0]、API key 非空
  • 网络验证:timeout 值不为零
  • 无效配置现在会快速失败并给出清晰的错误消息

CI 安全审计与代码覆盖率

  • 新增 audit 任务,使用 rustsec/audit-check 扫描依赖漏洞
  • 新增 coverage 任务,使用 cargo-llvm-cov 并集成 Codecov

Diff 截断

  • 当 diff 超过 max_diff_size(默认 100KB)时自动截断
  • 截断时显示本地化警告信息

IssueSeverity 方法增强

  • 新增 level()from_config_str()label()colored_label() 方法
  • 简化 review 命令中的严重性过滤和显示逻辑

变更

配置模块重构

  • 将单体 config/mod.rs 拆分为 structs.rsloader.rsglobal.rstests.rs
  • 全局配置单例使用 OnceLock + ArcSwap(一次加载,全局共享)
  • config/schema.rs 重命名为 config/structs.rs
  • 使用 serde 默认值替代手动 set_default

LLM Provider 架构重构

  • provider/base.rs 拆分为 base/ 目录:config.rsresponse.rsretry.rsvalidation.rs
  • 新增 ApiBackend trait,通过 blanket impl 自动实现 LLMProvider
  • Provider 只需实现独有部分(call_apicall_api_streaming
  • 大幅减少 OpenAI/Claude/Ollama 之间的重复代码

错误处理改进

  • GcopError::Other 替换为具体变体(GitCommandInvalidInput
  • 所有错误建议改用 i18n 键,不再硬编码英文
  • 状态机中的 unreachable! 宏替换为正确的错误处理

环境变量命名

  • 嵌套配置环境变量改用双下划线:GCOP__LLM__DEFAULT_PROVIDER(原 GCOP_LLM_DEFAULT_PROVIDER
  • 独立 API key 环境变量(ANTHROPIC_API_KEYOPENAI_API_KEY)仍作为 fallback 支持

依赖优化

  • futures 替换为更轻量的 futures-util
  • 移除 bytesedittoml 依赖
  • reqwest 切换到 rustls-no-provider + 显式 ring crypto provider
  • tokio 从 full 缩减为具体 features
  • Release 二进制启用 strip(strip = true),减小体积

移除

  • 配置字段 commit.confirm_before_commit:移除未使用的预留字段
  • 配置字段 review.show_full_diff:移除未使用的预留字段
  • 配置字段 ui.verbose:CLI -v 参数为主要机制

通往 1.0 之路

v0.9.0 是 1.0 前的最后一个预发布版本。如果 0.9.x 期间无需再进行 breaking changes,下一个 minor 版本将是 v1.0.0,标志着 API 稳定。

升级

现有配置文件保持兼容(未知字段会被静默忽略)。

如果你使用环境变量配置,请更新为双下划线格式:

bash
# 旧格式
GCOP_LLM_DEFAULT_PROVIDER=openai

# 新格式
GCOP__LLM__DEFAULT_PROVIDER=openai
bash
# Homebrew
brew upgrade gcop-rs

# Cargo
cargo install gcop-rs

# pip
pip install --upgrade gcop-rs