From ef64e7d844622ebe174b4f379cae56e74aedb60d Mon Sep 17 00:00:00 2001 From: SidneyZhang Date: Mon, 21 Sep 2026 17:28:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20DeepSeek=20?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=20base=5Furl=20=E5=8E=BB=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=20/v1=20=E5=90=8E=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 +++++- Cargo.toml | 2 +- README.md | 2 +- readme_zh.md | 2 +- src/llm/rig/mod.rs | 8 ++++---- src/utils/keyring.rs | 7 ++----- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index caca504..bed67f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -暂无。 +### 🐞 错误修复 +- 修复 DeepSeek 默认 `base_url` 误带 `/v1` 后缀的问题:该后缀会使用于校验凭据的 `GET /user/balance` 被拼成 `/v1/user/balance` 而失败,并在生成前被笼统报为 `LLM provider 'deepseek' is not available`。默认地址改为 `https://api.deepseek.com`,与官方 API 路径一致;已有配置若显式写入过 `.../v1`,需用 `quicommit config set-llm deepseek` 重新选择或手动修改 + +### 📚 文档 +- README(中/英文)DeepSeek 配置示例的 `--base-url` 同步去掉 `/v1` ## [0.8.1] - 2026-08-31 diff --git a/Cargo.toml b/Cargo.toml index c5dd99b..329ab50 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "quicommit" -version = "0.8.1" +version = "0.8.2" edition = "2024" authors = ["Sidney Zhang "] description = "A powerful Git assistant tool with AI-powered commit/tag/changelog generation" diff --git a/README.md b/README.md index 4632cb4..1ef5ab4 100644 --- a/README.md +++ b/README.md @@ -256,7 +256,7 @@ quicommit config set-llm kimi --base-url https://api.moonshot.cn/v1 --model moon # Configure DeepSeek quicommit config set-llm deepseek quicommit config set-api-key YOUR_API_KEY -quicommit config set-llm deepseek --base-url https://api.deepseek.com/v1 --model deepseek-chat +quicommit config set-llm deepseek --base-url https://api.deepseek.com --model deepseek-chat # Configure OpenRouter quicommit config set-llm openrouter diff --git a/readme_zh.md b/readme_zh.md index 2a2d344..3e73c68 100644 --- a/readme_zh.md +++ b/readme_zh.md @@ -250,7 +250,7 @@ quicommit config set-llm kimi --base-url https://api.moonshot.cn/v1 --model moon # 配置DeepSeek quicommit config set-llm deepseek quicommit config set-api-key YOUR_API_KEY -quicommit config set-llm deepseek --base-url https://api.deepseek.com/v1 --model deepseek-chat +quicommit config set-llm deepseek --base-url https://api.deepseek.com --model deepseek-chat # 配置OpenRouter quicommit config set-llm openrouter diff --git a/src/llm/rig/mod.rs b/src/llm/rig/mod.rs index 3de3cab..3484e55 100644 --- a/src/llm/rig/mod.rs +++ b/src/llm/rig/mod.rs @@ -726,7 +726,7 @@ mod tests { let backend = Backend::DeepSeek( deepseek::Client::builder() .api_key("sk-test") - .base_url("https://api.deepseek.com/v1") + .base_url("https://api.deepseek.com") .http_client(recorder.clone()) .build() .expect("build deepseek client with mock backend"), @@ -843,7 +843,7 @@ mod tests { let captured = recorder.requests(); assert_eq!( captured[0].uri, - "https://api.deepseek.com/v1/chat/completions" + "https://api.deepseek.com/chat/completions" ); let body: serde_json::Value = serde_json::from_slice(&captured[0].body).unwrap(); assert_eq!(body["model"], "deepseek-v4-flash"); @@ -911,7 +911,7 @@ mod tests { let backend = Backend::DeepSeek( deepseek::Client::builder() .api_key("sk-test") - .base_url("https://api.deepseek.com/v1") + .base_url("https://api.deepseek.com") .http_client(MockStreamingClient { sse_bytes: sse.to_string().into(), }) @@ -1438,7 +1438,7 @@ mod tests { let backend = Backend::DeepSeek( deepseek::Client::builder() .api_key(&key) - .base_url("https://api.deepseek.com/v1") + .base_url("https://api.deepseek.com") .http_client(smoke_http()) .build() .expect("build deepseek client"), diff --git a/src/utils/keyring.rs b/src/utils/keyring.rs index 7357fa9..8e67821 100644 --- a/src/utils/keyring.rs +++ b/src/utils/keyring.rs @@ -248,7 +248,7 @@ pub fn get_default_base_url(provider: &str) -> &'static str { "openai" => "https://api.openai.com/v1", "anthropic" => "https://api.anthropic.com/v1", "kimi" => "https://api.moonshot.cn/v1", - "deepseek" => "https://api.deepseek.com/v1", + "deepseek" => "https://api.deepseek.com", "openrouter" => "https://openrouter.ai/api/v1", "ollama" => "http://localhost:11434", _ => "", @@ -294,10 +294,7 @@ mod tests { "https://api.anthropic.com/v1" ); assert_eq!(get_default_base_url("kimi"), "https://api.moonshot.cn/v1"); - assert_eq!( - get_default_base_url("deepseek"), - "https://api.deepseek.com/v1" - ); + assert_eq!(get_default_base_url("deepseek"), "https://api.deepseek.com"); assert_eq!( get_default_base_url("openrouter"), "https://openrouter.ai/api/v1"