feat(oauth): v0.7.7 — 双区域 OAuth 支持(适配 kimi-code 0.38.0 global 账号)+ 修复模型占位别名跟随 + models.dev 快照刷新
Release / Version consistency (push) Canceled after 0s
Release / Build (macos-latest) (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Build (windows-latest) (push) Canceled after 0s
Release / Attach macOS install script (push) Canceled after 0s

This commit is contained in:
KimiSwitch Dev committed 2026-08-22 14:00:20 +08:00
1 parent 6b761251bc
commit 8221e05db1
16 files changed
+20602 -2868

No files matched your search

+49 -9
View File
@@ -67,18 +67,30 @@ fn parse_f64(value: &serde_json::Value) -> Option<f64> {
}
// ── Kimi For Coding ─────────────────────────────────────────
// GET https://api.kimi.com/coding/v1/usages
// GET {base_url}/usages
// 默认 https://api.kimi.com/coding/v1/usages
// global: https://api.kimi.ai/coding/v1/usages
// Response: { limits: [{ detail: { limit, remaining, resetTime } }],
// usage: { limit, remaining, resetTime } }
pub async fn query_kimi_coding(api_key: &str, timeout: Duration) -> Result<UsageResult, String> {
match get_json(
"https://api.kimi.com/coding/v1/usages",
api_key,
AuthStyle::Bearer,
timeout,
)
.await?
/// 由 base_url 拼接 usages 查询 URL;base_url 为空/空白时回退大陆默认。
/// 纯函数,便于单测。
fn kimi_coding_usages_url(base_url: &str) -> String {
let base = if base_url.trim().is_empty() {
"https://api.kimi.com/coding/v1"
} else {
base_url.trim_end_matches('/')
};
format!("{base}/usages")
}
pub async fn query_kimi_coding(
base_url: &str,
api_key: &str,
timeout: Duration,
) -> Result<UsageResult, String> {
let url = kimi_coding_usages_url(base_url);
match get_json(&url, api_key, AuthStyle::Bearer, timeout).await?
{
Fetched::Body(body) => {
let tiers = parse_kimi_coding(&body);
@@ -396,6 +408,34 @@ mod tests {
use super::*;
use serde_json::json;
#[test]
fn kimi_coding_usages_url_uses_base_and_falls_back() {
// global base → .ai usages URL
assert_eq!(
kimi_coding_usages_url("https://api.kimi.ai/coding/v1"),
"https://api.kimi.ai/coding/v1/usages"
);
// 尾斜杠去掉
assert_eq!(
kimi_coding_usages_url("https://api.kimi.ai/coding/v1/"),
"https://api.kimi.ai/coding/v1/usages"
);
// 空串/空白回退大陆默认
assert_eq!(
kimi_coding_usages_url(""),
"https://api.kimi.com/coding/v1/usages"
);
assert_eq!(
kimi_coding_usages_url(" "),
"https://api.kimi.com/coding/v1/usages"
);
// 大陆 base 原样拼接
assert_eq!(
kimi_coding_usages_url("https://api.kimi.com/coding/v1"),
"https://api.kimi.com/coding/v1/usages"
);
}
#[test]
fn kimi_coding_flattens_limits_and_usage() {
let body = json!({