Skip to content

Release v0.2.0

⚙️ 配置驱动架构重构

这个版本将之前硬编码的常量全部迁移到配置系统,让用户可以根据自己的需求自定义各种参数。

新增配置项

1. 网络配置 [network]

控制 HTTP 请求行为:

toml
[network]
request_timeout = 120    # HTTP 请求超时(秒)
connect_timeout = 10     # HTTP 连接超时(秒)
max_retries = 3          # API 请求失败时的最大重试次数
retry_delay_ms = 1000    # 初始重试延迟(毫秒,指数退避)

2. 文件配置 [file]

控制文件大小限制:

toml
[file]
max_size = 10485760      # 最大文件大小(字节,默认 10MB)

3. LLM 参数配置

每个 provider 现在可以显式配置 max_tokenstemperature

toml
[llm.providers.claude]
api_key = "sk-ant-..."
model = "claude-sonnet-4-5-20250929"
max_tokens = 2000        # 最大响应 token 数
temperature = 0.3        # 生成温度

4. Commit 重试次数

toml
[commit]
max_retries = 10         # 用户手动重试的最大次数

架构改进

删除 constants.rs

不再使用集中式常量文件,每个模块自己管理自己的默认值:

原常量新位置
DEFAULT_MAX_TOKENSsrc/llm/provider/base.rs
DEFAULT_TEMPERATUREsrc/llm/provider/base.rs
ERROR_PREVIEW_LENGTHsrc/llm/provider/base.rs
MAX_FEEDBACK_LENGTHsrc/ui/prompt.rs
Prompt 模板src/llm/prompt.rs

配置优先级

所有参数都支持配置文件覆盖,保持向后兼容:

  1. 配置文件值(如果设置)
  2. 默认值(如果未设置)

Breaking Changes

⚠️ API 变更(仅影响库用户):

rust
// 之前
let repo = GitRepository::open()?;

// 现在
let repo = GitRepository::open(None)?;                    // 使用默认配置
let repo = GitRepository::open(Some(&config.file))?;      // 使用自定义配置

升级说明

从 v0.1.6 升级无需任何配置更改

所有新配置项都有默认值,与之前的硬编码值相同:

  • network.request_timeout = 120
  • network.connect_timeout = 10
  • network.max_retries = 3
  • network.retry_delay_ms = 1000
  • file.max_size = 10485760 (10MB)
  • commit.max_retries = 10

如果需要自定义,在 ~/.config/gcop/config.toml 中添加对应配置即可。

配置示例

完整配置示例:

toml
[llm]
default_provider = "claude"

[llm.providers.claude]
api_key = "sk-ant-..."
model = "claude-sonnet-4-5-20250929"
max_tokens = 4000        # 增加响应长度
temperature = 0.5        # 稍微增加创意度

[commit]
max_retries = 5          # 减少重试次数

[network]
request_timeout = 60     # 缩短超时
max_retries = 5          # 增加自动重试次数

[file]
max_size = 5242880       # 限制为 5MB

📦 安装

bash
cargo install gcop-rs

或从源码构建:

bash
git clone https://github.com/AptS-1547/gcop-rs.git
cd gcop-rs
cargo build --release

📚 文档

反馈与贡献

如有问题或建议,欢迎提交 Issue