mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 02:11:28 +00:00
fix(cliproxy): add Kimi model catalog, sync, and pricing to dashboard
- Add kimi entry to UI model-catalogs.ts with K2.5, K2 Thinking, K2 models and preset mappings so dashboard shows available models - Add kimi to CHANNEL_TO_PROVIDER and SYNCABLE_PROVIDERS in catalog-cache.ts so models sync from upstream CLIProxyAPI - Add kimi/moonshot to provider-editor ownerMap for model filtering - Update Kimi model pricing to match official Kimi Platform rates: kimi-k2.5 ($0.60/$3.00), kimi-k2-thinking ($0.60/$2.50), kimi-k2-turbo-preview ($1.15/$8.00) - Add missing kimi-k2.5 pricing entry Closes #581
This commit is contained in:
@@ -23,6 +23,7 @@ const CHANNEL_TO_PROVIDER: Record<string, CLIProxyProvider> = {
|
||||
codex: 'codex',
|
||||
qwen: 'qwen',
|
||||
iflow: 'iflow',
|
||||
kimi: 'kimi',
|
||||
};
|
||||
|
||||
/** CCS provider → channel name mapping (reverse) */
|
||||
@@ -31,7 +32,7 @@ export const PROVIDER_TO_CHANNEL: Record<string, string> = Object.fromEntries(
|
||||
);
|
||||
|
||||
/** Providers to sync from CLIProxyAPI */
|
||||
export const SYNCABLE_PROVIDERS: CLIProxyProvider[] = ['agy', 'gemini', 'codex', 'claude'];
|
||||
export const SYNCABLE_PROVIDERS: CLIProxyProvider[] = ['agy', 'gemini', 'codex', 'claude', 'kimi'];
|
||||
|
||||
function getCacheFilePath(): string {
|
||||
return path.join(getCcsDir(), CACHE_FILE_NAME);
|
||||
|
||||
@@ -450,37 +450,44 @@ const PRICING_REGISTRY: Record<string, ModelPricing> = {
|
||||
},
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Kimi Models (Moonshot AI) - Source: better-ccusage
|
||||
// Kimi Models (Moonshot AI) - Source: Official Kimi Platform pricing
|
||||
// inputPerMillion = cache miss price, cacheReadPerMillion = cache hit price
|
||||
// ---------------------------------------------------------------------------
|
||||
'kimi-for-coding': {
|
||||
inputPerMillion: 0.15,
|
||||
outputPerMillion: 0.6,
|
||||
'kimi-k2.5': {
|
||||
inputPerMillion: 0.6,
|
||||
outputPerMillion: 3.0,
|
||||
cacheCreationPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.1,
|
||||
},
|
||||
'kimi-for-coding': {
|
||||
inputPerMillion: 0.6,
|
||||
outputPerMillion: 2.5,
|
||||
cacheCreationPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.15,
|
||||
},
|
||||
'kimi-k2-0905-preview': {
|
||||
inputPerMillion: 0.15,
|
||||
outputPerMillion: 0.6,
|
||||
inputPerMillion: 0.6,
|
||||
outputPerMillion: 2.5,
|
||||
cacheCreationPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.15,
|
||||
},
|
||||
'kimi-k2-turbo-preview': {
|
||||
inputPerMillion: 0.15,
|
||||
outputPerMillion: 1.15,
|
||||
inputPerMillion: 1.15,
|
||||
outputPerMillion: 8.0,
|
||||
cacheCreationPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.15,
|
||||
},
|
||||
'kimi-k2-thinking': {
|
||||
inputPerMillion: 0.15,
|
||||
outputPerMillion: 0.6,
|
||||
inputPerMillion: 0.6,
|
||||
outputPerMillion: 2.5,
|
||||
cacheCreationPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.15,
|
||||
},
|
||||
'kimi-k2-thinking-turbo': {
|
||||
inputPerMillion: 0.15,
|
||||
outputPerMillion: 1.15,
|
||||
inputPerMillion: 1.15,
|
||||
outputPerMillion: 8.0,
|
||||
cacheCreationPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.0,
|
||||
cacheReadPerMillion: 0.15,
|
||||
},
|
||||
'kimi-k2-instruct': {
|
||||
inputPerMillion: 1.0,
|
||||
|
||||
@@ -70,6 +70,7 @@ export function ProviderEditor({
|
||||
iflow: ['iflow'],
|
||||
kiro: ['kiro', 'aws'],
|
||||
ghcp: ['github', 'copilot'],
|
||||
kimi: ['kimi', 'moonshot'],
|
||||
};
|
||||
const owners = ownerMap[modelFilterProvider.toLowerCase()] || [
|
||||
modelFilterProvider.toLowerCase(),
|
||||
|
||||
@@ -275,6 +275,40 @@ export const MODEL_CATALOGS: Record<string, ProviderCatalog> = {
|
||||
},
|
||||
],
|
||||
},
|
||||
kimi: {
|
||||
provider: 'kimi',
|
||||
displayName: 'Kimi (Moonshot)',
|
||||
defaultModel: 'kimi-k2.5',
|
||||
models: [
|
||||
{
|
||||
id: 'kimi-k2.5',
|
||||
name: 'Kimi K2.5',
|
||||
description: 'Latest multimodal model (262K context)',
|
||||
presetMapping: {
|
||||
default: 'kimi-k2.5',
|
||||
opus: 'kimi-k2.5',
|
||||
sonnet: 'kimi-k2-thinking',
|
||||
haiku: 'kimi-k2',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'kimi-k2-thinking',
|
||||
name: 'Kimi K2 Thinking',
|
||||
description: 'Extended reasoning model',
|
||||
presetMapping: {
|
||||
default: 'kimi-k2-thinking',
|
||||
opus: 'kimi-k2.5',
|
||||
sonnet: 'kimi-k2-thinking',
|
||||
haiku: 'kimi-k2',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'kimi-k2',
|
||||
name: 'Kimi K2',
|
||||
description: 'Flagship coding model',
|
||||
},
|
||||
],
|
||||
},
|
||||
kiro: {
|
||||
provider: 'kiro',
|
||||
displayName: 'Kiro (AWS)',
|
||||
|
||||
Reference in New Issue
Block a user