fix: address PR review feedback and enable cache telemetry for Volcengine

- Remove Volcengine from reasoning_effort 'off' no-auth group (HIGH)
- Add Volcengine to proper reasoning_effort handling (like DeepSeek)
- Remove 'deepseek-reasoner' alias from DeepSeek-V4-Flash (MEDIUM)
- Separate WanjieArk and Volcengine env vars in CLI (MEDIUM)
- Group config keys by provider for readability (MEDIUM)
- Use 'codewhale' instead of 'deepseek' in login hints (MEDIUM)
- Enable cache_telemetry_supported for Volcengine provider
This commit is contained in:
dzyuan8
2026-05-24 18:15:58 +08:00
parent 45b04c4444
commit a96e5e45ca
6 changed files with 28 additions and 27 deletions
-1
View File
@@ -114,7 +114,6 @@ impl Default for ModelRegistry {
aliases: vec![
"deepseek-v4-flash".to_string(),
"deepseek-chat".to_string(),
"deepseek-reasoner".to_string(),
"volcengine-deepseek-v4-flash".to_string(),
"ark-deepseek-v4-flash".to_string(),
],
+8 -4
View File
@@ -1452,10 +1452,12 @@ fn build_tui_command(
if resolved_runtime.provider == ProviderKind::Atlascloud {
cmd.env("ATLASCLOUD_API_KEY", api_key);
}
if resolved_runtime.provider == ProviderKind::WanjieArk || resolved_runtime.provider == ProviderKind::Volcengine {
cmd.env("VOLCENGINE_API_KEY", api_key);
if resolved_runtime.provider == ProviderKind::WanjieArk {
cmd.env("WANJIE_ARK_API_KEY", api_key);
}
if resolved_runtime.provider == ProviderKind::Volcengine {
cmd.env("VOLCENGINE_API_KEY", api_key);
}
let source = resolved_runtime
.api_key_source
.unwrap_or(RuntimeApiKeySource::Env)
@@ -1492,10 +1494,12 @@ fn build_tui_command(
if resolved_runtime.provider == ProviderKind::Atlascloud {
cmd.env("ATLASCLOUD_API_KEY", api_key);
}
if resolved_runtime.provider == ProviderKind::WanjieArk || resolved_runtime.provider == ProviderKind::Volcengine {
cmd.env("VOLCENGINE_API_KEY", api_key);
if resolved_runtime.provider == ProviderKind::WanjieArk {
cmd.env("WANJIE_ARK_API_KEY", api_key);
}
if resolved_runtime.provider == ProviderKind::Volcengine {
cmd.env("VOLCENGINE_API_KEY", api_key);
}
cmd.env("DEEPSEEK_API_KEY_SOURCE", "cli");
}
if let Some(base_url) = cli.base_url.as_ref() {
+14 -14
View File
@@ -470,10 +470,10 @@ impl ConfigToml {
serialize_http_headers(&self.providers.atlascloud.http_headers)
}
"providers.wanjie_ark.api_key" => self.providers.wanjie_ark.api_key.clone(),
"providers.volcengine.api_key" => self.providers.volcengine.api_key.clone(),
"providers.wanjie_ark.base_url" => self.providers.wanjie_ark.base_url.clone(),
"providers.volcengine.base_url" => self.providers.volcengine.base_url.clone(),
"providers.wanjie_ark.model" => self.providers.wanjie_ark.model.clone(),
"providers.volcengine.api_key" => self.providers.volcengine.api_key.clone(),
"providers.volcengine.base_url" => self.providers.volcengine.base_url.clone(),
"providers.volcengine.model" => self.providers.volcengine.model.clone(),
"providers.wanjie_ark.http_headers" => {
serialize_http_headers(&self.providers.wanjie_ark.http_headers)
@@ -588,15 +588,6 @@ impl ConfigToml {
"providers.atlascloud.http_headers" => {
self.providers.atlascloud.http_headers = parse_http_headers(value)?;
}
"providers.volcengine.api_key" => {
self.providers.volcengine.api_key = Some(value.to_string());
}
"providers.volcengine.base_url" => {
self.providers.volcengine.base_url = Some(value.to_string());
}
"providers.volcengine.model" => {
self.providers.volcengine.model = Some(value.to_string());
}
"providers.wanjie_ark.api_key" => {
self.providers.wanjie_ark.api_key = Some(value.to_string());
}
@@ -606,6 +597,15 @@ impl ConfigToml {
"providers.wanjie_ark.model" => {
self.providers.wanjie_ark.model = Some(value.to_string());
}
"providers.volcengine.api_key" => {
self.providers.volcengine.api_key = Some(value.to_string());
}
"providers.volcengine.base_url" => {
self.providers.volcengine.base_url = Some(value.to_string());
}
"providers.volcengine.model" => {
self.providers.volcengine.model = Some(value.to_string());
}
"providers.wanjie_ark.http_headers" => {
self.providers.wanjie_ark.http_headers = parse_http_headers(value)?;
}
@@ -741,12 +741,12 @@ impl ConfigToml {
"providers.atlascloud.base_url" => self.providers.atlascloud.base_url = None,
"providers.atlascloud.model" => self.providers.atlascloud.model = None,
"providers.atlascloud.http_headers" => self.providers.atlascloud.http_headers.clear(),
"providers.volcengine.api_key" => self.providers.volcengine.api_key = None,
"providers.volcengine.base_url" => self.providers.volcengine.base_url = None,
"providers.volcengine.model" => self.providers.volcengine.model = None,
"providers.wanjie_ark.api_key" => self.providers.wanjie_ark.api_key = None,
"providers.wanjie_ark.base_url" => self.providers.wanjie_ark.base_url = None,
"providers.wanjie_ark.model" => self.providers.wanjie_ark.model = None,
"providers.volcengine.api_key" => self.providers.volcengine.api_key = None,
"providers.volcengine.base_url" => self.providers.volcengine.base_url = None,
"providers.volcengine.model" => self.providers.volcengine.model = None,
"providers.wanjie_ark.http_headers" => {
self.providers.wanjie_ark.http_headers.clear();
}
+4 -6
View File
@@ -883,7 +883,8 @@ pub(super) fn apply_reasoning_effort(
| ApiProvider::DeepseekCN
| ApiProvider::Openrouter
| ApiProvider::Novita
| ApiProvider::Sglang => {
| ApiProvider::Sglang
| ApiProvider::Volcengine => {
body["thinking"] = json!({ "type": "disabled" });
}
ApiProvider::Fireworks => {}
@@ -904,7 +905,6 @@ pub(super) fn apply_reasoning_effort(
ApiProvider::Openai
| ApiProvider::Atlascloud
| ApiProvider::WanjieArk
| ApiProvider::Volcengine
| ApiProvider::Ollama => {}
ApiProvider::NvidiaNim => {
body["chat_template_kwargs"] = json!({
@@ -914,7 +914,7 @@ pub(super) fn apply_reasoning_effort(
},
"low" | "minimal" | "medium" | "mid" | "high" | "" => match provider {
// DeepSeek compatibility: low/medium both map to high
ApiProvider::Deepseek | ApiProvider::DeepseekCN | ApiProvider::Sglang => {
ApiProvider::Deepseek | ApiProvider::DeepseekCN | ApiProvider::Sglang | ApiProvider::Volcengine => {
body["reasoning_effort"] = json!("high");
body["thinking"] = json!({ "type": "enabled" });
}
@@ -942,7 +942,6 @@ pub(super) fn apply_reasoning_effort(
ApiProvider::Openai
| ApiProvider::Atlascloud
| ApiProvider::WanjieArk
| ApiProvider::Volcengine
| ApiProvider::Ollama => {}
ApiProvider::NvidiaNim => {
body["chat_template_kwargs"] = json!({
@@ -952,7 +951,7 @@ pub(super) fn apply_reasoning_effort(
}
},
"xhigh" | "max" | "highest" => match provider {
ApiProvider::Deepseek | ApiProvider::DeepseekCN | ApiProvider::Sglang => {
ApiProvider::Deepseek | ApiProvider::DeepseekCN | ApiProvider::Sglang | ApiProvider::Volcengine => {
body["reasoning_effort"] = json!("max");
body["thinking"] = json!({ "type": "enabled" });
}
@@ -972,7 +971,6 @@ pub(super) fn apply_reasoning_effort(
ApiProvider::Openai
| ApiProvider::Atlascloud
| ApiProvider::WanjieArk
| ApiProvider::Volcengine
| ApiProvider::Ollama => {}
ApiProvider::NvidiaNim => {
body["chat_template_kwargs"] = json!({
+1 -1
View File
@@ -305,7 +305,7 @@ pub fn provider_capability(provider: ApiProvider, resolved_model: &str) -> Provi
// Cache telemetry: returned only by DeepSeek-native and NVIDIA NIM endpoints.
let cache_telemetry_supported = matches!(
provider,
ApiProvider::Deepseek | ApiProvider::DeepseekCN | ApiProvider::NvidiaNim
ApiProvider::Deepseek | ApiProvider::DeepseekCN | ApiProvider::NvidiaNim | ApiProvider::Volcengine
);
// Request payload mode: all current providers use chat completions.
+1 -1
View File
@@ -1503,7 +1503,7 @@ fn run_setup_status(config: &Config, workspace: &Path) -> Result<()> {
("OLLAMA_API_KEY", "codewhale auth set --provider ollama")
}
crate::config::ApiProvider::Volcengine => {
("VOLCENGINE_API_KEY", "deepseek auth set --provider volcengine")
("VOLCENGINE_API_KEY", "codewhale auth set --provider volcengine")
}
crate::config::ApiProvider::Deepseek | crate::config::ApiProvider::DeepseekCN => {
("DEEPSEEK_API_KEY", "codewhale auth set --provider deepseek")