fix(provider): polish kimi-code wiring and onboarding parity

This commit is contained in:
Chummy 2026-02-18 22:04:56 +08:00
parent 88dcd17a30
commit 0b66ed026c
3 changed files with 47 additions and 2 deletions

View file

@ -471,6 +471,7 @@ fn canonical_provider_name(provider_name: &str) -> &str {
"grok" => "xai",
"together" => "together-ai",
"google" | "google-gemini" => "gemini",
"kimi_coding" | "kimi_for_coding" => "kimi-code",
_ => provider_name,
}
}
@ -688,6 +689,16 @@ fn curated_models_for_provider(provider_name: &str) -> Vec<(String, String)> {
"Command R (stable fast baseline)".to_string(),
),
],
"kimi-code" => vec![
(
"kimi-for-coding".to_string(),
"Kimi for Coding (official coding-agent model)".to_string(),
),
(
"kimi-k2.5".to_string(),
"Kimi K2.5 (general coding endpoint model)".to_string(),
),
],
"moonshot" => vec![
(
"kimi-latest".to_string(),
@ -1641,7 +1652,9 @@ fn setup_provider(workspace_dir: &Path) -> Result<(String, String, String, Optio
key
}
} else {
let key_url = if is_moonshot_alias(provider_name) {
let key_url = if is_moonshot_alias(provider_name)
|| canonical_provider_name(provider_name) == "kimi-code"
{
"https://platform.moonshot.cn/console/api-keys"
} else if is_glm_cn_alias(provider_name) || is_zai_cn_alias(provider_name) {
"https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys"
@ -1807,6 +1820,13 @@ fn setup_provider(workspace_dir: &Path) -> Result<(String, String, String, Optio
("command-r-plus", "Command R+ (flagship)"),
("command-r", "Command R (fast)"),
],
"kimi-code" => vec![
(
"kimi-for-coding",
"Kimi for Coding (official coding-agent model)",
),
("kimi-k2.5", "Kimi K2.5 (general coding endpoint model)"),
],
"moonshot" => vec![
("moonshot-v1-128k", "Moonshot V1 128K"),
("moonshot-v1-32k", "Moonshot V1 32K"),
@ -2031,6 +2051,7 @@ fn provider_env_var(name: &str) -> &'static str {
"fireworks" | "fireworks-ai" => "FIREWORKS_API_KEY",
"perplexity" => "PERPLEXITY_API_KEY",
"cohere" => "COHERE_API_KEY",
"kimi-code" => "KIMI_CODE_API_KEY",
"moonshot" => "MOONSHOT_API_KEY",
"glm" => "GLM_API_KEY",
"minimax" => "MINIMAX_API_KEY",
@ -4629,6 +4650,8 @@ mod tests {
assert_eq!(canonical_provider_name("dashscope-us"), "qwen");
assert_eq!(canonical_provider_name("moonshot-intl"), "moonshot");
assert_eq!(canonical_provider_name("kimi-cn"), "moonshot");
assert_eq!(canonical_provider_name("kimi_coding"), "kimi-code");
assert_eq!(canonical_provider_name("kimi_for_coding"), "kimi-code");
assert_eq!(canonical_provider_name("glm-cn"), "glm");
assert_eq!(canonical_provider_name("bigmodel"), "glm");
assert_eq!(canonical_provider_name("minimax-cn"), "minimax");
@ -4657,6 +4680,17 @@ mod tests {
assert!(ids.contains(&"anthropic/claude-sonnet-4.5".to_string()));
}
#[test]
fn curated_models_for_kimi_code_include_official_agent_model() {
let ids: Vec<String> = curated_models_for_provider("kimi-code")
.into_iter()
.map(|(id, _)| id)
.collect();
assert!(ids.contains(&"kimi-for-coding".to_string()));
assert!(ids.contains(&"kimi-k2.5".to_string()));
}
#[test]
fn supports_live_model_fetch_for_supported_and_unsupported_providers() {
assert!(supports_live_model_fetch("openai"));
@ -4864,6 +4898,9 @@ mod tests {
assert_eq!(provider_env_var("dashscope-us"), "DASHSCOPE_API_KEY");
assert_eq!(provider_env_var("glm-cn"), "GLM_API_KEY");
assert_eq!(provider_env_var("minimax-cn"), "MINIMAX_API_KEY");
assert_eq!(provider_env_var("kimi-code"), "KIMI_CODE_API_KEY");
assert_eq!(provider_env_var("kimi_coding"), "KIMI_CODE_API_KEY");
assert_eq!(provider_env_var("kimi_for_coding"), "KIMI_CODE_API_KEY");
assert_eq!(provider_env_var("moonshot-intl"), "MOONSHOT_API_KEY");
assert_eq!(provider_env_var("zai-cn"), "ZAI_API_KEY");
assert_eq!(provider_env_var("nvidia"), "NVIDIA_API_KEY");

View file

@ -1426,6 +1426,7 @@ mod tests {
"moonshot-intl",
"kimi-code",
"moonshot-cn",
"kimi-code",
"synthetic",
"opencode",
"zai",