feat(usage): plan:kimi_coding 兼容 kimi-code 0.43.1 quota 用量模型

服务端 api.kimi.com/coding/v1/usages 已由绝对 used/limit 行切换为
quota 模型(usages.limit_5h/limit_7d/limit_month_total/limit_month_code,
条目为 used_ratio 0-1 比率 + reset_time),见上游 #3787。

- parse_kimi_coding 优先解析新结构,旧 limits/usage 结构保留为回退
- used_ratio >1 时按已是百分数处理(防御)
- 新 tier id month_code + 前端 planLabel/i18n 中英文案
- 新增 3 个测试:四窗口解析 / 比率防御 / 空窗口回退旧结构
This commit is contained in:
KimiSwitch Dev committed 2026-09-16 14:14:29 +08:00
1 parent 1b80d66239
commit 35581103ed
6 files changed
+428 -185

No files matched your search

+99 -5
View File
@@ -16,11 +16,13 @@ use super::usage_types::{UsageData, UsageResult};
use std::time::Duration; use std::time::Duration;
// 套餐类 tier id 的唯一来源:所有套餐供应商(Kimi/智谱/MiniMax/OpenCode Go 及 // 套餐类 tier id 的唯一来源:所有套餐供应商(Kimi/智谱/MiniMax/OpenCode Go 及
// 未来新增)都只用这三个 id。前端 src/lib/usage-display.ts 的 planLabel() 依赖 // 未来新增)都只用这四个 id。前端 src/lib/usage-display.ts 的 planLabel() 依赖
// 此约定做本地化映射——新增 tier id 时必须同步加映射。 // 此约定做本地化映射——新增 tier id 时必须同步加映射。
const TIER_FIVE_HOUR: &str = "five_hour"; const TIER_FIVE_HOUR: &str = "five_hour";
const TIER_WEEKLY_LIMIT: &str = "weekly_limit"; const TIER_WEEKLY_LIMIT: &str = "weekly_limit";
const TIER_MONTHLY_LIMIT: &str = "monthly_limit"; const TIER_MONTHLY_LIMIT: &str = "monthly_limit";
/// Kimi quota 模型的月度代码窗口(kimi-code #3787 后 `limit_month_code`)。
const TIER_MONTH_CODE: &str = "month_code";
/// 套餐条目的统一构造:按百分比表示用量。 /// 套餐条目的统一构造:按百分比表示用量。
fn percent_tier(name: &str, used_percent: f64, resets_at: Option<String>) -> UsageData { fn percent_tier(name: &str, used_percent: f64, resets_at: Option<String>) -> UsageData {
@@ -70,8 +72,12 @@ fn parse_f64(value: &serde_json::Value) -> Option<f64> {
// GET {base_url}/usages // GET {base_url}/usages
// 默认 https://api.kimi.com/coding/v1/usages // 默认 https://api.kimi.com/coding/v1/usages
// global: https://api.kimi.ai/coding/v1/usages // global: https://api.kimi.ai/coding/v1/usages
// Response: { limits: [{ detail: { limit, remaining, resetTime } }], // Response(kimi-code #3787 / 0.43.1 起服务端切换为 quota 模型):
// usage: { limit, remaining, resetTime } } // { usages: { limit_5h, limit_7d, limit_month_total, limit_month_code:
// { used_ratio: 0-1, reset_time?: ISO 8601 } },
// boosterWallet, goods_version }
// 旧结构(兼容保留): { limits: [{ detail: { limit, remaining, resetTime } }],
// usage: { limit, remaining, resetTime } }
/// 由 base_url 拼接 usages 查询 URL;base_url 为空/空白时回退大陆默认。 /// 由 base_url 拼接 usages 查询 URL;base_url 为空/空白时回退大陆默认。
/// 纯函数,便于单测。 /// 纯函数,便于单测。
@@ -95,8 +101,9 @@ pub async fn query_kimi_coding(
Fetched::Body(body) => { Fetched::Body(body) => {
let tiers = parse_kimi_coding(&body); let tiers = parse_kimi_coding(&body);
if tiers.is_empty() { if tiers.is_empty() {
// 响应里没有可解析的套餐档位(limits/usage 缺失或字段变了)。 // 响应里没有可解析的套餐档位(quota/usages 与旧 limits/usage
// 把原始响应(仅用量数字,无密钥)透出,方便对照接口结构修复。 // 均缺失或字段变了)。把原始响应(仅用量数字,无密钥)透出,
// 方便对照接口结构修复。
let preview = serde_json::to_string(&body) let preview = serde_json::to_string(&body)
.unwrap_or_else(|_| "<unserializable body>".into()); .unwrap_or_else(|_| "<unserializable body>".into());
let trimmed: String = preview.chars().take(400).collect(); let trimmed: String = preview.chars().take(400).collect();
@@ -111,6 +118,11 @@ pub async fn query_kimi_coding(
} }
fn parse_kimi_coding(body: &serde_json::Value) -> Vec<UsageData> { fn parse_kimi_coding(body: &serde_json::Value) -> Vec<UsageData> {
// 新 quota 模型(kimi-code #3787 / 0.43.1 起服务端下发):优先解析。
if let Some(tiers) = parse_kimi_quota(body) {
return tiers;
}
let mut tiers = Vec::new(); let mut tiers = Vec::new();
// 5 小时窗口限额(优先显示) // 5 小时窗口限额(优先显示)
@@ -130,6 +142,30 @@ fn parse_kimi_coding(body: &serde_json::Value) -> Vec<UsageData> {
tiers tiers
} }
/// 解析 quota 模型的 `usages` 窗口映射(`limit_5h` / `limit_7d` /
/// `limit_month_total` / `limit_month_code`)。全部窗口缺失或无可解析
/// 条目时返回 None,让调用方回退旧结构。
fn parse_kimi_quota(body: &serde_json::Value) -> Option<Vec<UsageData>> {
let usages = body.get("usages")?;
let mut tiers = Vec::new();
for (key, tier) in [
("limit_5h", TIER_FIVE_HOUR),
("limit_7d", TIER_WEEKLY_LIMIT),
("limit_month_total", TIER_MONTHLY_LIMIT),
("limit_month_code", TIER_MONTH_CODE),
] {
let Some(entry) = usages.get(key) else { continue };
let Some(ratio) = entry.get("used_ratio").and_then(parse_f64) else {
continue;
};
// used_ratio 规范为 0-1 比率;>1 时视为已是百分数,原样使用。
let used_percent = if ratio <= 1.0 { ratio * 100.0 } else { ratio };
let resets_at = entry.get("reset_time").and_then(extract_reset_time);
tiers.push(percent_tier(tier, used_percent, resets_at));
}
if tiers.is_empty() { None } else { Some(tiers) }
}
fn kimi_limit_tier(name: &str, detail: &serde_json::Value) -> UsageData { fn kimi_limit_tier(name: &str, detail: &serde_json::Value) -> UsageData {
let limit = detail.get("limit").and_then(parse_f64).unwrap_or(1.0); let limit = detail.get("limit").and_then(parse_f64).unwrap_or(1.0);
let remaining = detail.get("remaining").and_then(parse_f64).unwrap_or(0.0); let remaining = detail.get("remaining").and_then(parse_f64).unwrap_or(0.0);
@@ -459,6 +495,64 @@ mod tests {
); );
} }
#[test]
fn kimi_coding_quota_model_four_windows() {
// kimi-code #3787 / 0.43.1 起服务端下发的 quota 模型:used_ratio 为
// 0-1 比率,reset_time 为 ISO 8601 字符串。
let body = json!({
"goods_version": 3,
"usages": {
"limit_5h": { "used_ratio": 0.6, "reset_time": "2026-09-15T17:00:00Z" },
"limit_7d": { "used_ratio": 0.25 },
"limit_month_total": { "used_ratio": 0.1, "reset_time": "2026-10-01T00:00:00Z" },
"limit_month_code": { "used_ratio": 0.88 }
},
"boosterWallet": { "balance": 0 }
});
let tiers = parse_kimi_coding(&body);
assert_eq!(tiers.len(), 4);
assert_eq!(tiers[0].plan_name.as_deref(), Some("five_hour"));
assert_eq!(tiers[0].used, Some(60.0));
assert_eq!(tiers[0].remaining, Some(40.0));
assert_eq!(tiers[0].total, Some(100.0));
assert_eq!(
tiers[0].resets_at.as_deref(),
Some("2026-09-15T17:00:00Z")
);
assert_eq!(tiers[1].plan_name.as_deref(), Some("weekly_limit"));
assert_eq!(tiers[1].used, Some(25.0));
assert!(tiers[1].resets_at.is_none());
assert_eq!(tiers[2].plan_name.as_deref(), Some("monthly_limit"));
assert_eq!(tiers[2].used, Some(10.0));
assert_eq!(tiers[3].plan_name.as_deref(), Some("month_code"));
assert_eq!(tiers[3].used, Some(88.0));
assert_eq!(tiers[3].remaining, Some(12.0));
}
#[test]
fn kimi_coding_quota_ratio_above_one_is_percent() {
// 防御:>1 的 used_ratio 视为已是百分数,不再乘 100。
let body = json!({
"usages": { "limit_5h": { "used_ratio": 42.0 } }
});
let tiers = parse_kimi_coding(&body);
assert_eq!(tiers.len(), 1);
assert_eq!(tiers[0].used, Some(42.0));
}
#[test]
fn kimi_coding_quota_missing_windows_falls_back_to_legacy() {
// usages 存在但没有任何可解析条目 → 回退旧结构解析。
let body = json!({
"usages": { "limit_5h": {} },
"usage": { "limit": 1000, "remaining": 900, "resetTime": "2026-08-01T00:00:00Z" }
});
let tiers = parse_kimi_coding(&body);
assert_eq!(tiers.len(), 1);
assert_eq!(tiers[0].plan_name.as_deref(), Some("weekly_limit"));
assert_eq!(tiers[0].used, Some(10.0));
}
#[test] #[test]
fn kimi_coding_reset_time_seconds_vs_millis() { fn kimi_coding_reset_time_seconds_vs_millis() {
// 秒级时间戳自动 ×1000 // 秒级时间戳自动 ×1000
+1
View File
@@ -449,6 +449,7 @@ export const enTranslations: Record<TranslationKey, string> = {
usageTierDaily: "Daily", usageTierDaily: "Daily",
usageTierWeekly: "Weekly", usageTierWeekly: "Weekly",
usageTierMonthly: "Monthly", usageTierMonthly: "Monthly",
usageTierMonthCode: "Monthly (code)",
usageErrNoKey: "No API key configured", usageErrNoKey: "No API key configured",
usageErrDisabled: "Usage query is disabled in the config panel", usageErrDisabled: "Usage query is disabled in the config panel",
usageErrLoginExpired: "Kimi Code login expired and auto-refresh failed; run `kimi login` again", usageErrLoginExpired: "Kimi Code login expired and auto-refresh failed; run `kimi login` again",
+1
View File
@@ -443,6 +443,7 @@ export const zhTranslations = {
usageTierDaily: "每日", usageTierDaily: "每日",
usageTierWeekly: "7天", usageTierWeekly: "7天",
usageTierMonthly: "30天", usageTierMonthly: "30天",
usageTierMonthCode: "30天(代码)",
usageErrNoKey: "未配置 API Key", usageErrNoKey: "未配置 API Key",
usageErrDisabled: "用量查询已在配置面板中停用", usageErrDisabled: "用量查询已在配置面板中停用",
usageErrLoginExpired: "Kimi Code 登录已过期且自动续期失败,请重新运行 `kimi login`", usageErrLoginExpired: "Kimi Code 登录已过期且自动续期失败,请重新运行 `kimi login`",
+173 -96
View File
@@ -1,5 +1,5 @@
{ {
"last_updated": "2026-09-13", "last_updated": "2026-09-14",
"providers": { "providers": {
"subconscious": { "subconscious": {
"id": "subconscious", "id": "subconscious",
@@ -16470,6 +16470,20 @@
"output_limit": 32768, "output_limit": 32768,
"image": true "image": true
}, },
{
"id": "alibaba/deepseek-v4.1-flash",
"name": "DeepSeek V4.1 Flash (Alibaba Cloud)",
"cost": {
"input": 0.3,
"output": 1.2,
"cache_read": 0.03
},
"context": 1000000,
"output_limit": 393216,
"reasoning": true,
"tool_call": true,
"image": true
},
{ {
"id": "alibaba/qwen-coder-plus", "id": "alibaba/qwen-coder-plus",
"name": "Qwen Coder Plus (Alibaba Cloud)", "name": "Qwen Coder Plus (Alibaba Cloud)",
@@ -16730,7 +16744,7 @@
"id": "scx-ai-gp/glm-5.2", "id": "scx-ai-gp/glm-5.2",
"name": "GLM-5.2 (SCX.ai)", "name": "GLM-5.2 (SCX.ai)",
"cost": { "cost": {
"input": 0.8, "input": 0.88,
"output": 2.55, "output": 2.55,
"cache_read": 0.16 "cache_read": 0.16
}, },
@@ -18921,6 +18935,17 @@
"reasoning": true, "reasoning": true,
"tool_call": true "tool_call": true
}, },
{
"id": "consensusprotocol/deepseek-v4.1-flash",
"name": "DeepSeek V4.1 Flash (Consensus Protocol)",
"cost": {
"input": 0.2,
"output": 0.6,
"cache_read": 0.005
},
"context": 1048576,
"output_limit": 384000
},
{ {
"id": "consensusprotocol/glm-5.3-flash", "id": "consensusprotocol/glm-5.3-flash",
"name": "GLM-5.3 Flash (Consensus Protocol)", "name": "GLM-5.3 Flash (Consensus Protocol)",
@@ -38111,9 +38136,9 @@
"id": "gemma-4-26b-a4b-it", "id": "gemma-4-26b-a4b-it",
"name": "Gemma 4 26B A4B IT", "name": "Gemma 4 26B A4B IT",
"cost": { "cost": {
"input": 0.102, "input": 0.1,
"output": 0.356, "output": 0.374,
"cache_read": 0.051 "cache_read": 0.05
}, },
"context": 256000, "context": 256000,
"output_limit": 25600, "output_limit": 25600,
@@ -38129,7 +38154,7 @@
"output": 4.311648, "output": 4.311648,
"cache_read": 0.047907 "cache_read": 0.047907
}, },
"context": 1048576, "context": 1000000,
"output_limit": 262144, "output_limit": 262144,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
@@ -38195,9 +38220,9 @@
"id": "minimax-m2.7", "id": "minimax-m2.7",
"name": "MiniMax-M2.7", "name": "MiniMax-M2.7",
"cost": { "cost": {
"input": 0.396, "input": 0.462,
"output": 1.464, "output": 1.728,
"cache_read": 0.198 "cache_read": 0.231
}, },
"context": 262100, "context": 262100,
"output_limit": 6553, "output_limit": 6553,
@@ -38265,7 +38290,7 @@
"cost": { "cost": {
"input": 0.2, "input": 0.2,
"output": 0.4, "output": 0.4,
"cache_read": 0.04 "cache_write": 0.04
}, },
"context": 1000000, "context": 1000000,
"output_limit": 384000, "output_limit": 384000,
@@ -38281,7 +38306,7 @@
"output": 4.3552, "output": 4.3552,
"cache_read": 0.206872 "cache_read": 0.206872
}, },
"context": 262000, "context": 256000,
"output_limit": 16000, "output_limit": 16000,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
@@ -38305,12 +38330,12 @@
"id": "deepseek-v4.1-flash", "id": "deepseek-v4.1-flash",
"name": "DeepSeek V4.1 Flash", "name": "DeepSeek V4.1 Flash",
"cost": { "cost": {
"input": 0.3, "input": 0.32664,
"output": 1.2, "output": 1.30656,
"cache_read": 0.03 "cache_read": 0.032664
}, },
"context": 1048576, "context": 1000000,
"output_limit": 26214, "output_limit": 13107,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -38425,9 +38450,9 @@
"id": "glm-5", "id": "glm-5",
"name": "GLM-5", "name": "GLM-5",
"cost": { "cost": {
"input": 0.86, "input": 0.94,
"output": 2.752, "output": 3.008,
"cache_read": 0.43 "cache_read": 0.47
}, },
"context": 202752, "context": 202752,
"output_limit": 20275, "output_limit": 20275,
@@ -38452,9 +38477,9 @@
"id": "kimi-k2.5", "id": "kimi-k2.5",
"name": "Kimi K2.5", "name": "Kimi K2.5",
"cost": { "cost": {
"input": 0.5584, "input": 0.5344,
"output": 2.935, "output": 2.815,
"cache_read": 0.2792 "cache_read": 0.2672
}, },
"context": 262144, "context": 262144,
"output_limit": 26214, "output_limit": 26214,
@@ -38467,7 +38492,7 @@
"name": "GLM-5.1", "name": "GLM-5.1",
"cost": { "cost": {
"input": 1.318, "input": 1.318,
"output": 4.308, "output": 4.268,
"cache_read": 0.659 "cache_read": 0.659
}, },
"context": 202750, "context": 202750,
@@ -38496,7 +38521,7 @@
"cost": { "cost": {
"input": 2.4, "input": 2.4,
"output": 4.8, "output": 4.8,
"cache_read": 0.2 "cache_write": 0.2
}, },
"context": 1000000, "context": 1000000,
"output_limit": 384000, "output_limit": 384000,
@@ -38508,9 +38533,9 @@
"id": "gpt-oss-120b", "id": "gpt-oss-120b",
"name": "GPT OSS 120B", "name": "GPT OSS 120B",
"cost": { "cost": {
"input": 0.168, "input": 0.178,
"output": 0.66, "output": 0.68,
"cache_read": 0.084 "cache_read": 0.089
}, },
"context": 128072, "context": 128072,
"output_limit": 13107, "output_limit": 13107,
@@ -65693,6 +65718,21 @@
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
}, },
{
"id": "Qwen/Qwen3.8-Flash",
"name": "Qwen3.8 Flash",
"cost": {
"input": 0.113,
"output": 0.382,
"cache_read": 0.0141
},
"context": 1000000,
"output_limit": 131072,
"tool_call": true,
"structured_output": true,
"image": true,
"video": true
},
{ {
"id": "Qwen/Qwen3-VL-235B-A22B-Instruct", "id": "Qwen/Qwen3-VL-235B-A22B-Instruct",
"name": "Qwen3 VL 235B A22B Instruct", "name": "Qwen3 VL 235B A22B Instruct",
@@ -66211,8 +66251,8 @@
"input": 0.2275, "input": 0.2275,
"output": 0.91 "output": 0.91
}, },
"context": 131072, "context": 40960,
"output_limit": 8192, "output_limit": 16384,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -66976,12 +67016,12 @@
"id": "~deepseek/deepseek-v4-flash-latest", "id": "~deepseek/deepseek-v4-flash-latest",
"name": "DeepSeek: DeepSeek V4 Flash Latest", "name": "DeepSeek: DeepSeek V4 Flash Latest",
"cost": { "cost": {
"input": 0.0352, "input": 0.04,
"output": 0.1056, "output": 0.1,
"cache_read": 0.00112 "cache_read": 0.01
}, },
"context": 1048576, "context": 1048576,
"output_limit": 131072, "output_limit": 393216,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -67591,7 +67631,7 @@
"output": 0.45 "output": 0.45
}, },
"context": 262144, "context": 262144,
"output_limit": 16384, "output_limit": 235929,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -67641,8 +67681,8 @@
"output": 2.2, "output": 2.2,
"cache_read": 0.1 "cache_read": 0.1
}, },
"context": 256000, "context": 202800,
"output_limit": 32768, "output_limit": 182520,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -68842,7 +68882,8 @@
"name": "MoonshotAI: Kimi Latest", "name": "MoonshotAI: Kimi Latest",
"cost": { "cost": {
"input": 2.1, "input": 2.1,
"output": 10.95 "output": 10.95,
"cache_read": 0.23
}, },
"context": 1048576, "context": 1048576,
"output_limit": 943718, "output_limit": 943718,
@@ -70605,12 +70646,12 @@
"id": "~z-ai/glm-latest", "id": "~z-ai/glm-latest",
"name": "Z.ai: GLM Latest", "name": "Z.ai: GLM Latest",
"cost": { "cost": {
"input": 0.936, "input": 0.92,
"output": 3.168, "output": 3.1372,
"cache_read": 0.1872 "cache_read": 0.184
}, },
"context": 262144, "context": 1048576,
"output_limit": 235929, "output_limit": 943718,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -70718,7 +70759,8 @@
"name": "Inference.net: Schematron V2 Small", "name": "Inference.net: Schematron V2 Small",
"cost": { "cost": {
"input": 0.05, "input": 0.05,
"output": 0.23 "output": 0.23,
"cache_read": 0.05
}, },
"context": 128000, "context": 128000,
"output_limit": 4096, "output_limit": 4096,
@@ -70729,7 +70771,8 @@
"name": "Inference.net: Schematron V2 Turbo", "name": "Inference.net: Schematron V2 Turbo",
"cost": { "cost": {
"input": 0.03, "input": 0.03,
"output": 0.15 "output": 0.15,
"cache_read": 0.03
}, },
"context": 128000, "context": 128000,
"output_limit": 8192, "output_limit": 8192,
@@ -70997,8 +71040,8 @@
"output": 4.4, "output": 4.4,
"cache_read": 0.26 "cache_read": 0.26
}, },
"context": 202752, "context": 1048576,
"output_limit": 182476, "output_limit": 131072,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -71095,8 +71138,8 @@
"output": 4.4, "output": 4.4,
"cache_read": 0.26 "cache_read": 0.26
}, },
"context": 1048576, "context": 1048575,
"output_limit": 131072, "output_limit": 943717,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -81488,11 +81531,11 @@
"id": "qwen/qwen3-14b", "id": "qwen/qwen3-14b",
"name": "Qwen3 14B", "name": "Qwen3 14B",
"cost": { "cost": {
"input": 0.2275, "input": 0.12,
"output": 0.91 "output": 0.24
}, },
"context": 131072, "context": 131072,
"output_limit": 8192, "output_limit": 16384,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -82261,12 +82304,12 @@
"id": "~deepseek/deepseek-v4-flash-latest", "id": "~deepseek/deepseek-v4-flash-latest",
"name": "DeepSeek V4 Flash Latest", "name": "DeepSeek V4 Flash Latest",
"cost": { "cost": {
"input": 0.0352, "input": 0.04,
"output": 0.1056, "output": 0.1,
"cache_read": 0.00112 "cache_read": 0.01
}, },
"context": 1310720, "context": 1310720,
"output_limit": 131072, "output_limit": 393216,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -82859,11 +82902,11 @@
"id": "nvidia/nemotron-3-super-120b-a12b", "id": "nvidia/nemotron-3-super-120b-a12b",
"name": "Nemotron 3 Super 120B A12B", "name": "Nemotron 3 Super 120B A12B",
"cost": { "cost": {
"input": 0.085, "input": 0.08,
"output": 0.4 "output": 0.45
}, },
"context": 262144, "context": 262144,
"output_limit": 16384, "output_limit": 235929,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -82909,12 +82952,12 @@
"id": "nvidia/nemotron-3-ultra-550b-a55b", "id": "nvidia/nemotron-3-ultra-550b-a55b",
"name": "Nemotron 3 Ultra 550B A55B", "name": "Nemotron 3 Ultra 550B A55B",
"cost": { "cost": {
"input": 0.625, "input": 0.6,
"output": 3.125, "output": 2.4,
"cache_read": 0.1875 "cache_read": 0.12
}, },
"context": 262144, "context": 262144,
"output_limit": 32768, "output_limit": 182520,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -84157,7 +84200,8 @@
"name": "Kimi Latest", "name": "Kimi Latest",
"cost": { "cost": {
"input": 2.1, "input": 2.1,
"output": 10.95 "output": 10.95,
"cache_read": 0.23
}, },
"context": 1048576, "context": 1048576,
"output_limit": 943718, "output_limit": 943718,
@@ -84224,9 +84268,9 @@
"id": "deepseek/deepseek-v4-pro-0813", "id": "deepseek/deepseek-v4-pro-0813",
"name": "DeepSeek V4 Pro 0813", "name": "DeepSeek V4 Pro 0813",
"cost": { "cost": {
"input": 0.57948, "input": 0.9834,
"output": 1.73844, "output": 2.9502,
"cache_read": 0.019316 "cache_read": 0.03278
}, },
"context": 1048576, "context": 1048576,
"output_limit": 384000, "output_limit": 384000,
@@ -84238,9 +84282,9 @@
"id": "deepseek/deepseek-v4-flash-0731", "id": "deepseek/deepseek-v4-flash-0731",
"name": "DeepSeek V4 Flash 0731", "name": "DeepSeek V4 Flash 0731",
"cost": { "cost": {
"input": 0.04, "input": 0.06,
"output": 0.08, "output": 0.12,
"cache_read": 0.008 "cache_read": 0.012
}, },
"context": 1310720, "context": 1310720,
"output_limit": 943718, "output_limit": 943718,
@@ -84252,9 +84296,9 @@
"id": "deepseek/deepseek-v4-flash", "id": "deepseek/deepseek-v4-flash",
"name": "DeepSeek V4 Flash", "name": "DeepSeek V4 Flash",
"cost": { "cost": {
"input": 0.04788, "input": 0.08554,
"output": 0.09576, "output": 0.17108,
"cache_read": 0.009576 "cache_read": 0.017108
}, },
"context": 1048576, "context": 1048576,
"output_limit": 384000, "output_limit": 384000,
@@ -85829,12 +85873,12 @@
"id": "~z-ai/glm-latest", "id": "~z-ai/glm-latest",
"name": "GLM Latest", "name": "GLM Latest",
"cost": { "cost": {
"input": 0.936, "input": 0.92,
"output": 3.168, "output": 3.1372,
"cache_read": 0.1872 "cache_read": 0.184
}, },
"context": 1310720, "context": 1310720,
"output_limit": 235929, "output_limit": 943718,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -85942,7 +85986,8 @@
"name": "Schematron V2 Small", "name": "Schematron V2 Small",
"cost": { "cost": {
"input": 0.05, "input": 0.05,
"output": 0.23 "output": 0.23,
"cache_read": 0.05
}, },
"context": 128000, "context": 128000,
"output_limit": 4096, "output_limit": 4096,
@@ -85953,7 +85998,8 @@
"name": "Schematron V2 Turbo", "name": "Schematron V2 Turbo",
"cost": { "cost": {
"input": 0.03, "input": 0.03,
"output": 0.15 "output": 0.15,
"cache_read": 0.03
}, },
"context": 128000, "context": 128000,
"output_limit": 8192, "output_limit": 8192,
@@ -86062,9 +86108,9 @@
"id": "tencent/hy3", "id": "tencent/hy3",
"name": "Hy3", "name": "Hy3",
"cost": { "cost": {
"input": 0.0825, "input": 0.132,
"output": 0.33, "output": 0.528,
"cache_read": 0.020625 "cache_read": 0.033
}, },
"context": 262144, "context": 262144,
"input_limit": 192000, "input_limit": 192000,
@@ -86217,12 +86263,12 @@
"id": "z-ai/glm-5.2", "id": "z-ai/glm-5.2",
"name": "GLM-5.2", "name": "GLM-5.2",
"cost": { "cost": {
"input": 0.6, "input": 0.6832,
"output": 2, "output": 2.1472,
"cache_read": 0.15 "cache_read": 0.12688
}, },
"context": 1048576, "context": 1048576,
"output_limit": 182476, "output_limit": 131072,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -86231,9 +86277,9 @@
"id": "z-ai/glm-5.3-flash", "id": "z-ai/glm-5.3-flash",
"name": "GLM-5.3-Flash", "name": "GLM-5.3-Flash",
"cost": { "cost": {
"input": 0.075, "input": 0.15,
"output": 0.25, "output": 0.5,
"cache_read": 0.015 "cache_read": 0.03
}, },
"context": 1310720, "context": 1310720,
"output_limit": 131072, "output_limit": 131072,
@@ -86315,12 +86361,12 @@
"id": "z-ai/glm-5.3", "id": "z-ai/glm-5.3",
"name": "GLM-5.3", "name": "GLM-5.3",
"cost": { "cost": {
"input": 1.092, "input": 1.4,
"output": 3.432, "output": 4.4,
"cache_read": 0.2028 "cache_read": 0.26
}, },
"context": 1310720, "context": 1310720,
"output_limit": 131072, "output_limit": 943717,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true "structured_output": true
@@ -102924,8 +102970,9 @@
"id": "qwen/deepseek-v4-pro-0813", "id": "qwen/deepseek-v4-pro-0813",
"name": "DeepSeek V4 Pro 0813 (Alibaba)", "name": "DeepSeek V4 Pro 0813 (Alibaba)",
"cost": { "cost": {
"input": 0.5808, "input": 0.66,
"output": 1.7424 "output": 1.98,
"cache_read": 0.066
}, },
"context": 1000000, "context": 1000000,
"output_limit": 384000, "output_limit": 384000,
@@ -102937,8 +102984,9 @@
"id": "qwen/deepseek-v4-flash-0731", "id": "qwen/deepseek-v4-flash-0731",
"name": "DeepSeek V4 Flash 0731 (Alibaba)", "name": "DeepSeek V4 Flash 0731 (Alibaba)",
"cost": { "cost": {
"input": 0.176, "input": 0.22,
"output": 0.528 "output": 0.66,
"cache_read": 0.022
}, },
"context": 1000000, "context": 1000000,
"output_limit": 384000, "output_limit": 384000,
@@ -103080,6 +103128,21 @@
"output_limit": 8192, "output_limit": 8192,
"reasoning": true "reasoning": true
}, },
{
"id": "qwen/deepseek-v4.1-flash",
"name": "DeepSeek V4.1 Flash (Alibaba)",
"cost": {
"input": 0.15,
"output": 0.6,
"cache_read": 0.015
},
"context": 1000000,
"output_limit": 384000,
"reasoning": true,
"tool_call": true,
"structured_output": true,
"image": true
},
{ {
"id": "qwen/qwen3-coder-next", "id": "qwen/qwen3-coder-next",
"name": "Qwen3 Coder Next", "name": "Qwen3 Coder Next",
@@ -104143,6 +104206,20 @@
"reasoning": true, "reasoning": true,
"tool_call": true "tool_call": true
}, },
{
"id": "tensorx/deepseek/deepseek-v4.1-flash",
"name": "DeepSeek V4.1 Flash (TensorX)",
"cost": {
"input": 0.5,
"output": 1.5,
"cache_read": 0.125
},
"context": 1048576,
"output_limit": 384000,
"reasoning": true,
"tool_call": true,
"image": true
},
{ {
"id": "tensorx/moonshotai/kimi-k2.5", "id": "tensorx/moonshotai/kimi-k2.5",
"name": "Kimi K2.5 (TensorX)", "name": "Kimi K2.5 (TensorX)",
+148 -81
View File
@@ -1,5 +1,5 @@
{ {
"last_updated": "2026-09-13", "last_updated": "2026-09-14",
"subconscious/subconscious/glm-5.2": { "subconscious/subconscious/glm-5.2": {
"name": "GLM-5.2", "name": "GLM-5.2",
"context": 1000000, "context": 1000000,
@@ -13257,6 +13257,18 @@
"cache_write": 0.25 "cache_write": 0.25
} }
}, },
"llmgateway-providers/alibaba/deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash (Alibaba Cloud)",
"context": 1000000,
"reasoning": true,
"tool_call": true,
"image": true,
"cost": {
"input": 0.3,
"output": 1.2,
"cache_read": 0.03
}
},
"llmgateway-providers/alibaba/qwen-coder-plus": { "llmgateway-providers/alibaba/qwen-coder-plus": {
"name": "Qwen Coder Plus (Alibaba Cloud)", "name": "Qwen Coder Plus (Alibaba Cloud)",
"context": 131072, "context": 131072,
@@ -13482,7 +13494,7 @@
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"cost": { "cost": {
"input": 0.8, "input": 0.88,
"output": 2.55, "output": 2.55,
"cache_read": 0.16 "cache_read": 0.16
} }
@@ -15353,6 +15365,15 @@
"cache_read": 0.01 "cache_read": 0.01
} }
}, },
"llmgateway-providers/consensusprotocol/deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash (Consensus Protocol)",
"context": 1048576,
"cost": {
"input": 0.2,
"output": 0.6,
"cache_read": 0.005
}
},
"llmgateway-providers/consensusprotocol/glm-5.3-flash": { "llmgateway-providers/consensusprotocol/glm-5.3-flash": {
"name": "GLM-5.3 Flash (Consensus Protocol)", "name": "GLM-5.3 Flash (Consensus Protocol)",
"context": 1048576, "context": 1048576,
@@ -31345,14 +31366,14 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.102, "input": 0.1,
"output": 0.356, "output": 0.374,
"cache_read": 0.051 "cache_read": 0.05
} }
}, },
"hyper/deepseek-v4-pro-0813": { "hyper/deepseek-v4-pro-0813": {
"name": "DeepSeek V4 Pro 0813", "name": "DeepSeek V4 Pro 0813",
"context": 1048576, "context": 1000000,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -31416,9 +31437,9 @@
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"cost": { "cost": {
"input": 0.396, "input": 0.462,
"output": 1.464, "output": 1.728,
"cache_read": 0.198 "cache_read": 0.231
} }
}, },
"hyper/kimi-k2.6": { "hyper/kimi-k2.6": {
@@ -31477,12 +31498,12 @@
"cost": { "cost": {
"input": 0.2, "input": 0.2,
"output": 0.4, "output": 0.4,
"cache_read": 0.04 "cache_write": 0.04
} }
}, },
"hyper/kimi-k2.7-code": { "hyper/kimi-k2.7-code": {
"name": "Kimi K2.7 Code", "name": "Kimi K2.7 Code",
"context": 262000, "context": 256000,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -31506,15 +31527,15 @@
}, },
"hyper/deepseek-v4.1-flash": { "hyper/deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash", "name": "DeepSeek V4.1 Flash",
"context": 1048576, "context": 1000000,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"image": true, "image": true,
"cost": { "cost": {
"input": 0.3, "input": 0.32664,
"output": 1.2, "output": 1.30656,
"cache_read": 0.03 "cache_read": 0.032664
} }
}, },
"hyper/qwen3.7-flash": { "hyper/qwen3.7-flash": {
@@ -31613,9 +31634,9 @@
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"cost": { "cost": {
"input": 0.86, "input": 0.94,
"output": 2.752, "output": 3.008,
"cache_read": 0.43 "cache_read": 0.47
} }
}, },
"hyper/qwen3.8-max": { "hyper/qwen3.8-max": {
@@ -31637,9 +31658,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.5584, "input": 0.5344,
"output": 2.935, "output": 2.815,
"cache_read": 0.2792 "cache_read": 0.2672
} }
}, },
"hyper/glm-5.1": { "hyper/glm-5.1": {
@@ -31650,7 +31671,7 @@
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 1.318, "input": 1.318,
"output": 4.308, "output": 4.268,
"cache_read": 0.659 "cache_read": 0.659
} }
}, },
@@ -31675,7 +31696,7 @@
"cost": { "cost": {
"input": 2.4, "input": 2.4,
"output": 4.8, "output": 4.8,
"cache_read": 0.2 "cache_write": 0.2
} }
}, },
"hyper/gpt-oss-120b": { "hyper/gpt-oss-120b": {
@@ -31685,9 +31706,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.168, "input": 0.178,
"output": 0.66, "output": 0.68,
"cache_read": 0.084 "cache_read": 0.089
} }
}, },
"hyper/glm-5.3": { "hyper/glm-5.3": {
@@ -54422,6 +54443,19 @@
"output": 0.55 "output": 0.55
} }
}, },
"deepinfra/Qwen/Qwen3.8-Flash": {
"name": "Qwen3.8 Flash",
"context": 1000000,
"tool_call": true,
"structured_output": true,
"image": true,
"video": true,
"cost": {
"input": 0.113,
"output": 0.382,
"cache_read": 0.0141
}
},
"deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct": { "deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct": {
"name": "Qwen3 VL 235B A22B Instruct", "name": "Qwen3 VL 235B A22B Instruct",
"context": 262144, "context": 262144,
@@ -54852,7 +54886,7 @@
}, },
"kilo/qwen/qwen3-14b": { "kilo/qwen/qwen3-14b": {
"name": "Qwen: Qwen3 14B", "name": "Qwen: Qwen3 14B",
"context": 131072, "context": 40960,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -55512,9 +55546,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.0352, "input": 0.04,
"output": 0.1056, "output": 0.1,
"cache_read": 0.00112 "cache_read": 0.01
} }
}, },
"kilo/dots-studio/dots-3-note-preview:free": { "kilo/dots-studio/dots-3-note-preview:free": {
@@ -56067,7 +56101,7 @@
}, },
"kilo/nvidia/nemotron-3-ultra-550b-a55b": { "kilo/nvidia/nemotron-3-ultra-550b-a55b": {
"name": "Nemotron 3 Ultra 550B A55B", "name": "Nemotron 3 Ultra 550B A55B",
"context": 256000, "context": 202800,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -57115,7 +57149,8 @@
"video": true, "video": true,
"cost": { "cost": {
"input": 2.1, "input": 2.1,
"output": 10.95 "output": 10.95,
"cache_read": 0.23
} }
}, },
"kilo/ibm-granite/granite-4.2-8b": { "kilo/ibm-granite/granite-4.2-8b": {
@@ -58592,14 +58627,14 @@
}, },
"kilo/~z-ai/glm-latest": { "kilo/~z-ai/glm-latest": {
"name": "Z.ai: GLM Latest", "name": "Z.ai: GLM Latest",
"context": 262144, "context": 1048576,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.936, "input": 0.92,
"output": 3.168, "output": 3.1372,
"cache_read": 0.1872 "cache_read": 0.184
} }
}, },
"kilo/moonshotai/kimi-k2-0905": { "kilo/moonshotai/kimi-k2-0905": {
@@ -58692,7 +58727,8 @@
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.05, "input": 0.05,
"output": 0.23 "output": 0.23,
"cache_read": 0.05
} }
}, },
"kilo/inference-net/schematron-v2-turbo": { "kilo/inference-net/schematron-v2-turbo": {
@@ -58701,7 +58737,8 @@
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.03, "input": 0.03,
"output": 0.15 "output": 0.15,
"cache_read": 0.03
} }
}, },
"kilo/cohere/north-mini-code:free": { "kilo/cohere/north-mini-code:free": {
@@ -58919,7 +58956,7 @@
}, },
"kilo/z-ai/glm-5.2": { "kilo/z-ai/glm-5.2": {
"name": "GLM-5.2", "name": "GLM-5.2",
"context": 202752, "context": 1048576,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -59003,7 +59040,7 @@
}, },
"kilo/z-ai/glm-5.3": { "kilo/z-ai/glm-5.3": {
"name": "GLM-5.3", "name": "GLM-5.3",
"context": 1048576, "context": 1048575,
"reasoning": true, "reasoning": true,
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
@@ -67739,8 +67776,8 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.2275, "input": 0.12,
"output": 0.91 "output": 0.24
} }
}, },
"openrouter/qwen/qwen3.6-plus": { "openrouter/qwen/qwen3.6-plus": {
@@ -68399,9 +68436,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.0352, "input": 0.04,
"output": 0.1056, "output": 0.1,
"cache_read": 0.00112 "cache_read": 0.01
} }
}, },
"openrouter/dots-studio/dots-3-note-preview:free": { "openrouter/dots-studio/dots-3-note-preview:free": {
@@ -68906,8 +68943,8 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.085, "input": 0.08,
"output": 0.4 "output": 0.45
} }
}, },
"openrouter/nvidia/nemotron-3-ultra-550b-a55b:free": { "openrouter/nvidia/nemotron-3-ultra-550b-a55b:free": {
@@ -68948,9 +68985,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.625, "input": 0.6,
"output": 3.125, "output": 2.4,
"cache_read": 0.1875 "cache_read": 0.12
} }
}, },
"openrouter/nvidia/nemotron-3-nano-30b-a3b": { "openrouter/nvidia/nemotron-3-nano-30b-a3b": {
@@ -70028,7 +70065,8 @@
"video": true, "video": true,
"cost": { "cost": {
"input": 2.1, "input": 2.1,
"output": 10.95 "output": 10.95,
"cache_read": 0.23
} }
}, },
"openrouter/ibm-granite/granite-4.2-8b": { "openrouter/ibm-granite/granite-4.2-8b": {
@@ -70083,9 +70121,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.57948, "input": 0.9834,
"output": 1.73844, "output": 2.9502,
"cache_read": 0.019316 "cache_read": 0.03278
} }
}, },
"openrouter/deepseek/deepseek-v4-flash-0731": { "openrouter/deepseek/deepseek-v4-flash-0731": {
@@ -70095,9 +70133,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.04, "input": 0.06,
"output": 0.08, "output": 0.12,
"cache_read": 0.008 "cache_read": 0.012
} }
}, },
"openrouter/deepseek/deepseek-v4-flash": { "openrouter/deepseek/deepseek-v4-flash": {
@@ -70107,9 +70145,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.04788, "input": 0.08554,
"output": 0.09576, "output": 0.17108,
"cache_read": 0.009576 "cache_read": 0.017108
} }
}, },
"openrouter/deepseek/deepseek-v4.1-flash": { "openrouter/deepseek/deepseek-v4.1-flash": {
@@ -71428,9 +71466,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.936, "input": 0.92,
"output": 3.168, "output": 3.1372,
"cache_read": 0.1872 "cache_read": 0.184
} }
}, },
"openrouter/moonshotai/kimi-k2-0905": { "openrouter/moonshotai/kimi-k2-0905": {
@@ -71523,7 +71561,8 @@
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.05, "input": 0.05,
"output": 0.23 "output": 0.23,
"cache_read": 0.05
} }
}, },
"openrouter/inference-net/schematron-v2-turbo": { "openrouter/inference-net/schematron-v2-turbo": {
@@ -71532,7 +71571,8 @@
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.03, "input": 0.03,
"output": 0.15 "output": 0.15,
"cache_read": 0.03
} }
}, },
"openrouter/cohere/north-mini-code:free": { "openrouter/cohere/north-mini-code:free": {
@@ -71625,9 +71665,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.0825, "input": 0.132,
"output": 0.33, "output": 0.528,
"cache_read": 0.020625 "cache_read": 0.033
} }
}, },
"openrouter/tencent/hy4-preview": { "openrouter/tencent/hy4-preview": {
@@ -71755,9 +71795,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.6, "input": 0.6832,
"output": 2, "output": 2.1472,
"cache_read": 0.15 "cache_read": 0.12688
} }
}, },
"openrouter/z-ai/glm-5.3-flash": { "openrouter/z-ai/glm-5.3-flash": {
@@ -71769,9 +71809,9 @@
"image": true, "image": true,
"video": true, "video": true,
"cost": { "cost": {
"input": 0.075, "input": 0.15,
"output": 0.25, "output": 0.5,
"cache_read": 0.015 "cache_read": 0.03
} }
}, },
"openrouter/z-ai/glm-4.5": { "openrouter/z-ai/glm-4.5": {
@@ -71839,9 +71879,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 1.092, "input": 1.4,
"output": 3.432, "output": 4.4,
"cache_read": 0.2028 "cache_read": 0.26
} }
}, },
"openrouter/z-ai/glm-5v-turbo": { "openrouter/z-ai/glm-5v-turbo": {
@@ -85559,8 +85599,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.5808, "input": 0.66,
"output": 1.7424 "output": 1.98,
"cache_read": 0.066
} }
}, },
"edenai/qwen/deepseek-v4-flash-0731": { "edenai/qwen/deepseek-v4-flash-0731": {
@@ -85570,8 +85611,9 @@
"tool_call": true, "tool_call": true,
"structured_output": true, "structured_output": true,
"cost": { "cost": {
"input": 0.176, "input": 0.22,
"output": 0.528 "output": 0.66,
"cache_read": 0.022
} }
}, },
"edenai/qwen/qwen3-coder-plus": { "edenai/qwen/qwen3-coder-plus": {
@@ -85688,6 +85730,19 @@
"output": 2.4 "output": 2.4
} }
}, },
"edenai/qwen/deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash (Alibaba)",
"context": 1000000,
"reasoning": true,
"tool_call": true,
"structured_output": true,
"image": true,
"cost": {
"input": 0.15,
"output": 0.6,
"cache_read": 0.015
}
},
"edenai/qwen/qwen3-coder-next": { "edenai/qwen/qwen3-coder-next": {
"name": "Qwen3 Coder Next", "name": "Qwen3 Coder Next",
"context": 262144, "context": 262144,
@@ -86603,6 +86658,18 @@
"cache_read": 0.0625 "cache_read": 0.0625
} }
}, },
"edenai/tensorx/deepseek/deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash (TensorX)",
"context": 1048576,
"reasoning": true,
"tool_call": true,
"image": true,
"cost": {
"input": 0.5,
"output": 1.5,
"cache_read": 0.125
}
},
"edenai/tensorx/moonshotai/kimi-k2.5": { "edenai/tensorx/moonshotai/kimi-k2.5": {
"name": "Kimi K2.5 (TensorX)", "name": "Kimi K2.5 (TensorX)",
"context": 262144, "context": 262144,
+6 -3
View File
@@ -11,9 +11,10 @@ type TranslateFn = (
* *
* Coverage note: ALL plan-type (套餐) queries flow through * Coverage note: ALL plan-type (套餐) queries flow through
* src-tauri/src/services/coding_plan.rs::percent_tier, whose names come only * src-tauri/src/services/coding_plan.rs::percent_tier, whose names come only
* from TIER_FIVE_HOUR / TIER_WEEKLY_LIMIT / TIER_MONTHLY_LIMIT — so this * from TIER_FIVE_HOUR / TIER_WEEKLY_LIMIT / TIER_MONTHLY_LIMIT /
* mapping covers every current and future plan provider automatically. If a * TIER_MONTH_CODE — so this mapping covers every current and future plan
* new tier id is ever added there, add a case here too. * provider automatically. If a new tier id is ever added there, add a case
* here too.
*/ */
export function planLabel(name: string, t: TranslateFn): string { export function planLabel(name: string, t: TranslateFn): string {
switch (name) { switch (name) {
@@ -25,6 +26,8 @@ export function planLabel(name: string, t: TranslateFn): string {
return t("usageTierWeekly"); return t("usageTierWeekly");
case "monthly_limit": case "monthly_limit":
return t("usageTierMonthly"); return t("usageTierMonthly");
case "month_code":
return t("usageTierMonthCode");
default: default:
return name; return name;
} }