dsh-claude-style 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +56 -2
  2. package/LICENSE +9 -0
  3. package/README.en.md +4 -3
  4. package/README.md +4 -15
  5. package/docs/STYLE.md +22 -14
  6. package/docs/architecture.md +74 -0
  7. package/fonts/GoogleSansFlexPicker.woff2 +0 -0
  8. package/fonts/OFL-GoogleSansFlex.txt +93 -0
  9. package/lib/client.js +710 -1485
  10. package/lib/index.js +6 -23
  11. package/lib/model-descriptions.json +225 -209
  12. package/package.json +7 -2
  13. package/docs/REFACTOR.md +0 -294
  14. package/lib/icons/providers/ClaudeApi.png +0 -0
  15. package/lib/icons/providers/README.md +0 -13
  16. package/lib/icons/providers/TeamoRouter-icon-dark.png +0 -0
  17. package/lib/icons/providers/a6-icon.png +0 -0
  18. package/lib/icons/providers/aicodemirror.svg +0 -19
  19. package/lib/icons/providers/aicoding.svg +0 -20
  20. package/lib/icons/providers/aihubmix-color.svg +0 -1
  21. package/lib/icons/providers/algocode.svg +0 -51
  22. package/lib/icons/providers/alibaba.svg +0 -1
  23. package/lib/icons/providers/amuxapi-icon.svg +0 -13
  24. package/lib/icons/providers/anthropic.svg +0 -1
  25. package/lib/icons/providers/apikeyfun.png +0 -0
  26. package/lib/icons/providers/apinebula_icon.png +0 -0
  27. package/lib/icons/providers/atlascloud_icon.png +0 -0
  28. package/lib/icons/providers/aws.svg +0 -1
  29. package/lib/icons/providers/azure.svg +0 -1
  30. package/lib/icons/providers/baidu.svg +0 -1
  31. package/lib/icons/providers/bailian.svg +0 -1
  32. package/lib/icons/providers/bytedance.svg +0 -1
  33. package/lib/icons/providers/byteplus.png +0 -0
  34. package/lib/icons/providers/catcoder.svg +0 -1
  35. package/lib/icons/providers/ccsub.svg +0 -4
  36. package/lib/icons/providers/chatglm.svg +0 -1
  37. package/lib/icons/providers/cherryin.png +0 -0
  38. package/lib/icons/providers/claude.svg +0 -1
  39. package/lib/icons/providers/claudecn.png +0 -0
  40. package/lib/icons/providers/claw.svg +0 -22
  41. package/lib/icons/providers/cloudflare.svg +0 -1
  42. package/lib/icons/providers/code0.png +0 -0
  43. package/lib/icons/providers/cohere.svg +0 -1
  44. package/lib/icons/providers/copilot.svg +0 -1
  45. package/lib/icons/providers/crazyrouter.svg +0 -1
  46. package/lib/icons/providers/cubence.svg +0 -9
  47. package/lib/icons/providers/deepseek.svg +0 -1
  48. package/lib/icons/providers/doubao.svg +0 -1
  49. package/lib/icons/providers/eflowcode.png +0 -0
  50. package/lib/icons/providers/etok.png +0 -0
  51. package/lib/icons/providers/fenno-icon.webp +0 -0
  52. package/lib/icons/providers/gemini.svg +0 -1
  53. package/lib/icons/providers/gemma.svg +0 -1
  54. package/lib/icons/providers/github.svg +0 -1
  55. package/lib/icons/providers/githubcopilot.svg +0 -1
  56. package/lib/icons/providers/google.svg +0 -1
  57. package/lib/icons/providers/googlecloud.svg +0 -1
  58. package/lib/icons/providers/grok.svg +0 -1
  59. package/lib/icons/providers/hermes.png +0 -0
  60. package/lib/icons/providers/huawei.svg +0 -1
  61. package/lib/icons/providers/huggingface.svg +0 -1
  62. package/lib/icons/providers/hunyuan.svg +0 -1
  63. package/lib/icons/providers/huoshan.png +0 -0
  64. package/lib/icons/providers/kimi.svg +0 -1
  65. package/lib/icons/providers/lioncc.svg +0 -6
  66. package/lib/icons/providers/longcat-color.svg +0 -1
  67. package/lib/icons/providers/mcp.svg +0 -1
  68. package/lib/icons/providers/meta.svg +0 -1
  69. package/lib/icons/providers/micu.svg +0 -23
  70. package/lib/icons/providers/midjourney.svg +0 -1
  71. package/lib/icons/providers/minimax.svg +0 -1
  72. package/lib/icons/providers/mistral.svg +0 -1
  73. package/lib/icons/providers/modelscope-color.svg +0 -1
  74. package/lib/icons/providers/nekocode-icon.png +0 -0
  75. package/lib/icons/providers/newapi.svg +0 -1
  76. package/lib/icons/providers/notion.svg +0 -1
  77. package/lib/icons/providers/novita.svg +0 -11
  78. package/lib/icons/providers/nvidia.svg +0 -1
  79. package/lib/icons/providers/ollama.svg +0 -1
  80. package/lib/icons/providers/openai.svg +0 -1
  81. package/lib/icons/providers/opencode-logo-light.svg +0 -1
  82. package/lib/icons/providers/openrouter.svg +0 -1
  83. package/lib/icons/providers/packycode.svg +0 -1
  84. package/lib/icons/providers/palm.svg +0 -1
  85. package/lib/icons/providers/pateway.jpg +0 -0
  86. package/lib/icons/providers/perplexity.svg +0 -1
  87. package/lib/icons/providers/pipellm.png +0 -0
  88. package/lib/icons/providers/ppio.svg +0 -1
  89. package/lib/icons/providers/qianwenai.svg +0 -1
  90. package/lib/icons/providers/qiniu.png +0 -0
  91. package/lib/icons/providers/qwen.svg +0 -1
  92. package/lib/icons/providers/qwencloud.svg +0 -1
  93. package/lib/icons/providers/rc.svg +0 -1
  94. package/lib/icons/providers/relaxcode.png +0 -0
  95. package/lib/icons/providers/runapi.jpg +0 -0
  96. package/lib/icons/providers/shengsuanyun.svg +0 -4
  97. package/lib/icons/providers/siliconflow.svg +0 -1
  98. package/lib/icons/providers/sssaicode.svg +0 -73
  99. package/lib/icons/providers/stability.svg +0 -1
  100. package/lib/icons/providers/stepfun.svg +0 -10
  101. package/lib/icons/providers/subrouter.svg +0 -30
  102. package/lib/icons/providers/sudocode-us.png +0 -0
  103. package/lib/icons/providers/sudocode.png +0 -0
  104. package/lib/icons/providers/tencent.svg +0 -1
  105. package/lib/icons/providers/ucloud.svg +0 -1
  106. package/lib/icons/providers/unity2.png +0 -0
  107. package/lib/icons/providers/vercel.svg +0 -1
  108. package/lib/icons/providers/wenxin.svg +0 -1
  109. package/lib/icons/providers/xai.svg +0 -1
  110. package/lib/icons/providers/xiaomimimo.svg +0 -1
  111. package/lib/icons/providers/xycai-icon.png +0 -0
  112. package/lib/icons/providers/yi.svg +0 -1
  113. package/lib/icons/providers/zeroone.svg +0 -1
  114. package/lib/icons/providers/zetaapi-icon.png +0 -0
  115. package/lib/icons/providers/zhipu.svg +0 -1
@@ -201,96 +201,80 @@
201
201
  },
202
202
  "exact": {
203
203
  "deepseek-flash": {
204
- "zh": "最新旗舰 Flash:百万上下文,长程 Agent 的 KV 缓存成本降到约 1/4。",
205
- "en": "Latest flagship Flash: 1M context with the KV-cache cost of long-horizon agents cut to about a quarter."
206
- },
207
- "deepseek-v4-flash": {
208
- "zh": "快速、高效、经济;适合目标明确、常规或并行任务。",
209
- "en": "Fast, efficient, and economical; suited to focused, routine, or parallel tasks."
210
- },
211
- "deepseek-v4-pro": {
212
- "zh": "自主编码、知识与复杂推理更强;适合质量优先的复杂任务,成本更高。",
213
- "en": "Stronger agentic coding, knowledge, and difficult reasoning; suited to complex or quality-critical tasks at higher cost."
214
- },
215
- "deepseek-v4-flash-vision-exp": {
216
- "zh": "实验性多模态:视觉理解大幅补强,多模态 Agent 能力接近 Opus-4.8。",
217
- "en": "Experimental multimodal Flash: much stronger visual understanding, multimodal agent ability approaching Opus-4.8."
218
- },
219
- "deepseek-v3.2": {
220
- "zh": "上一代通用模型,长上下文与成本仍然能打。",
221
- "en": "Previous-generation generalist; still competitive on long context and cost."
204
+ "zh": "非对称模型结构,小成本大智能。",
205
+ "en": "Asymmetric architecture: more intelligence, less cost."
222
206
  },
223
207
  "claude-opus-4.8": {
224
- "zh": "旗舰:编程、Agent 与专业工作最强,长程任务一致性最好。",
225
- "en": "Flagship: strongest coding, agentic and professional work, with the consistency for long-running tasks."
208
+ "zh": "1M 上下文、$5/$25 每百万 token;官网已标为 Legacy。",
209
+ "en": "1M context at $5/$25 per MTok; now marked Legacy upstream."
226
210
  },
227
211
  "claude-sonnet-5": {
228
- "zh": "主力档:成本与能力平衡,部分场景追平 Opus。",
229
- "en": "The workhorse: balanced cost and capability, matching Opus in some cases."
212
+ "zh": "性能接近 Opus 4.8,$2/$10 每百万 token。",
213
+ "en": "Performance close to Opus 4.8 at $2/$10 per MTok."
230
214
  },
231
215
  "gpt-5.4": {
232
- "zh": "前沿通用模型,首个原生电脑操作能力,整合 Codex 编码能力。",
233
- "en": "Frontier generalist with native computer use and Codex-grade coding."
216
+ "zh": "面向编程与专业工作,105 万 token 上下文、原生电脑操作。",
217
+ "en": "For coding and professional work, with a 1.05M-token context and native computer use."
234
218
  },
235
219
  "gemini-3.8-flash": {
236
- "zh": "最强 Flash:跑分直逼旗舰,强化编程、Agent 与多步推理,价格仍低。",
237
- "en": "The strongest Flash: benchmark scores near flagship, with reinforced coding, agent workflows and multi-step reasoning."
220
+ "zh": "面向复杂智能体任务,限时 $0.75/$3.75 每百万 token。",
221
+ "en": "For complex agentic tasks at scale, at a limited-time $0.75/$3.75 per million tokens."
238
222
  },
239
223
  "glm-5.3": {
240
- "zh": "前沿编码能力,擅长长程自主任务。",
241
- "en": "Frontier coding with strong long-horizon autonomy."
224
+ "zh": "面向编码与长程自主任务,1M 上下文、128K 输出;仅靠后训练成为最强开源编程模型。",
225
+ "en": "For coding and long-horizon autonomy: 1M context, 128K output, and post-training alone makes it the most capable open-weights coding model."
242
226
  },
243
227
  "glm-5.3-flash": {
244
- "zh": "GLM-5 系列首个原生多模态;18B 激活,性能追平 Opus-4.8,成本极低。",
245
- "en": "The GLM-5 series' first natively multimodal model; 18B active, matching Opus-4.8 at very low cost."
228
+ "zh": "原生多模态,320B/18B MoE、1M 上下文、MIT 开源,$0.045/任务。",
229
+ "en": "Natively multimodal, with 320B/18B MoE, 1M context and MIT licensing at $0.045 per task."
246
230
  },
247
231
  "glm-5.3-flashx": {
248
- "zh": "GLM-5.3-Flash 的高吞吐版本。",
249
- "en": "High-throughput variant of GLM-5.3-Flash."
232
+ "zh": "高吞吐版本,推理速度 200 tokens/s。",
233
+ "en": "A high-throughput variant running at 200 tokens/s."
250
234
  },
251
235
  "kimi-k3": {
252
- "zh": "开放 3T 级模型:原生视觉、百万上下文,编程与知识工作强。",
253
- "en": "Open 3T-class model: native vision, 1M context, strong at coding and knowledge work."
236
+ "zh": "面向编程与知识工作的 2.8T 开源模型。",
237
+ "en": "An open 2.8T model for coding and knowledge work."
254
238
  },
255
239
  "kimi-for-coding": {
256
- "zh": "编程专用:稳定、便宜,适合日常改代码。",
257
- "en": "Coding-tuned: steady and cheap for everyday code work."
240
+ "zh": "面向长程编程的开源智能体式模型,1T/32B、256K 上下文。",
241
+ "en": "An open-source agentic coding model for long-horizon work, 1T/32B with 256K context."
258
242
  },
259
243
  "kimi-for-coding-highspeed": {
260
- "zh": "与 K2.7 Code 同一模型,输出约 5–6 倍速,单价约 2 倍。",
261
- "en": "Same model as K2.7 Code at roughly 5–6x output speed and 2x the price."
244
+ "zh": "高速版,输出约 5–6 倍速(常规约 180 token/s),单价 2 倍。",
245
+ "en": "A high-speed variant at roughly 5–6x output speed (about 180 tokens/s) for 2x the price."
262
246
  },
263
247
  "qwen3.8-max": {
264
- "zh": "通义旗舰:多模态与综合能力最强。",
265
- "en": "Qwen's flagship: strongest multimodality and overall capability."
248
+ "zh": "面向编程与办公,2.4 万亿参数 MoE,1M 上下文、思考模式与内置工具。",
249
+ "en": "A 2.4T-parameter MoE for coding and office work, with 1M context, thinking mode and built-in tools."
266
250
  },
267
251
  "step-5-preview": {
268
- "zh": "阶跃下一代旗舰预览,百万上下文。",
269
- "en": "StepFun's next-generation flagship preview with a million-token context."
252
+ "zh": "面向编程与专业知识工作,原生图文视频输入,1M 上下文。",
253
+ "en": "For programming and professional knowledge work, with native text, image and video input and a 1M-token context."
270
254
  },
271
255
  "step-3.7-flash": {
272
- "zh": "原生多模态,超高速:约 400 token/s,目前最快的一档。",
273
- "en": "Natively multimodal and extremely fast: around 400 tokens/s."
256
+ "zh": "面向智能体与代码任务,198B/11B 稀疏 MoE,图片视频理解,256K 上下文,最高 400 tokens/s。",
257
+ "en": "For agentic and coding tasks: 198B/11B sparse MoE with image and video understanding, 256K context, up to 400 tokens/s."
274
258
  },
275
259
  "minimax-m3": {
276
- "zh": "编程与 Agent 前沿,百万上下文,原生多模态。",
277
- "en": "Coding and agentic frontier with 1M context and native multimodality."
260
+ "zh": "首个集前沿编程、1M 上下文与原生多模态于一身的开放权重模型。",
261
+ "en": "The first open-weight model combining frontier coding, 1M context and native multimodality."
278
262
  },
279
263
  "grok-4.5": {
280
- "zh": "xAI 最强模型,主打编程。",
281
- "en": "xAI's strongest model, aimed at programming."
264
+ "zh": "面向编码、智能体与知识工作,80 TPS,$2/$6 每百万 token;官网已有更新的 4.6。",
265
+ "en": "Built for coding, agentic and knowledge work at 80 TPS for $2/$6 per MTok; a newer Grok 4.6 is out."
282
266
  },
283
267
  "doubao-seed-2.1": {
284
- "zh": "字节旗舰系列,分层定位,中文与多模态均衡。",
285
- "en": "ByteDance's flagship line, tiered, balanced across Chinese and multimodality."
268
+ "zh": "分 Pro 与 Turbo 两档,新一代生产力智能体,通用智能体与代码见长。",
269
+ "en": "Pro and Turbo tiers of a next-generation productivity agent, strong in general agents and coding."
286
270
  },
287
271
  "ernie-5.0": {
288
- "zh": "超稀疏 MoE,预训练成本极低,中文知识强。",
289
- "en": "Ultra-sparse MoE with very low training cost and strong Chinese knowledge."
272
+ "zh": "2.4 万亿参数原生全模态,超稀疏 MoE 每 token 仅激活约 3%,上下文扩至 128K。",
273
+ "en": "2.4T-parameter native omni-modal, ultra-sparse MoE activating under 3% of parameters per token, 128K context."
290
274
  },
291
275
  "mistral-large-3": {
292
- "zh": "宽松许可的开源权重模型,综合能力强。",
293
- "en": "Permissively licensed open-weight model with strong overall capability."
276
+ "zh": "Apache 2.0 开源权重多模态模型,细粒度 MoE,675B 总参 / 41B 激活,256k 上下文。",
277
+ "en": "Apache-2.0 open-weight multimodal MoE with 675B total / 41B active parameters and 256k context."
294
278
  }
295
279
  },
296
280
  "aliases": {
@@ -304,49 +288,8 @@
304
288
  "minimax-m3-1m": "minimax-m3"
305
289
  },
306
290
  "brands": {
307
- "note": "Which brand mark a row shows. Every id names a vendored icon in src/assets/icons/lobe/ or src/assets/icons/providers/; scripts/build.mjs fails the build on an id that is not there. This is presentation data, kept out of the bundle like the rest of this document, and it is separate from the copy rules above: a vendor's mark and a vendor's description line change for different reasons. `providers` is keyed by the harness provider route id, which is exactly the group id the picker receives (`deepseek-official`, `zai`, `google-vertex`, …) — it is the mark on a level-2 group header. `models` is an ordered, anchored rule list resolved against the model id, exactly like `families` and with the same discipline: first match wins, so a broad rule must sit below the narrow ones and every rule must name its vendor (`step` cannot match `step-3.7-flash` by accident only if no earlier rule already claimed it). A model no rule matches falls back to its provider's mark; a provider no rule matches shows no mark, and the row keeps its alignment.",
308
- "providers": {
309
- "deepseek-official": "deepseek",
310
- "deepseek": "deepseek",
311
- "anthropic": "anthropic",
312
- "openai": "openai",
313
- "openai-codex": "codex",
314
- "google": "google",
315
- "google-vertex": "vertexai",
316
- "amazon-bedrock": "bedrock",
317
- "azure-openai-responses": "azure",
318
- "baseten": "baseten",
319
- "cerebras": "cerebras",
320
- "cloudflare-ai-gateway": "cloudflare",
321
- "cloudflare-workers-ai": "cloudflare",
322
- "fireworks": "fireworks",
323
- "github-copilot": "githubcopilot",
324
- "groq": "groq",
325
- "huggingface": "huggingface",
326
- "kimi-coding": "kimi",
327
- "minimax": "minimax",
328
- "minimax-cn": "minimax",
329
- "mistral": "mistral",
330
- "moonshotai": "moonshot",
331
- "moonshotai-cn": "moonshot",
332
- "nvidia": "nvidia",
333
- "opencode": "opencode",
334
- "opencode-go": "opencode",
335
- "openrouter": "openrouter",
336
- "qwen-token-plan": "qwen",
337
- "qwen-token-plan-cn": "qwen",
338
- "qwen-token-plan-individual": "qwen",
339
- "together": "together",
340
- "vercel-ai-gateway": "vercel",
341
- "xai": "xai",
342
- "xiaomi": "xiaomimimo",
343
- "xiaomi-token-plan-ams": "xiaomimimo",
344
- "xiaomi-token-plan-cn": "xiaomimimo",
345
- "xiaomi-token-plan-sgp": "xiaomimimo",
346
- "zai": "zai",
347
- "zai-coding-cn": "zai",
348
- "ant-ling": "antgroup"
349
- },
291
+ "note": "Which brand mark a row shows. Every id names a vendored lockup in src/assets/icons/combine/; scripts/build.mjs fails the build on an id that is not there. This is presentation data, kept out of the bundle like the rest of this document, and it is separate from the copy rules above: a vendor's mark and a vendor's description line change for different reasons. `providers` is deliberately empty: a model no rule claims draws **no** lockup rather than its provider's, because the reseller's own lockup on a model it did not make reads as a wrong answer rather than a missing one. `models` is an ordered, anchored rule list resolved against the model id, exactly like `families` and with the same discipline: first match wins, so a broad rule must sit below the narrow ones and every rule must name its vendor (`step` cannot match `step-3.7-flash` by accident only if no earlier rule already claimed it). A brand with no lockup renders the label without a mark.",
292
+ "providers": {},
350
293
  "models": [
351
294
  {
352
295
  "match": "deepseek",
@@ -354,17 +297,23 @@
354
297
  },
355
298
  {
356
299
  "match": "claude",
357
- "brand": "anthropic"
358
- },
359
- {
360
- "match": "codex",
361
- "brand": "codex",
362
- "note": "Before the OpenAI rule: a Codex row shows the Codex mark, not the parent mark."
300
+ "brand": "claude",
301
+ "note": "Claude rows draw Claude's own lockup, not the parent Anthropic one: the label names the model line, and a wordmark has to match the word it stands in for — the same reason Grok rows draw Grok's rather than xAI's. Anthropic stays the fallback for the `anthropic` route."
363
302
  },
364
303
  {
365
304
  "match": "gpt|(^|[/-])o[1-9](-|$)",
366
305
  "brand": "openai"
367
306
  },
307
+ {
308
+ "match": "nano-?banana",
309
+ "brand": "nanobanana",
310
+ "note": "Nano Banana is a Gemini image model with its own identity in the catalog, so it draws its own lockup rather than the Gemini one."
311
+ },
312
+ {
313
+ "match": "gemma",
314
+ "brand": "gemma",
315
+ "note": "Gemma is Google's open model line, so it draws its own lockup rather than the parent Google one — the same reason Claude and Grok do."
316
+ },
368
317
  {
369
318
  "match": "gemini",
370
319
  "brand": "gemini",
@@ -404,7 +353,8 @@
404
353
  },
405
354
  {
406
355
  "match": "grok",
407
- "brand": "xai"
356
+ "brand": "grok",
357
+ "note": "Grok is the model line, xAI the company: a Grok row shows Grok's own mark, while the provider group header above it still shows xAI's, because providers resolve from `providers` and never from here."
408
358
  },
409
359
  {
410
360
  "match": "doubao|seed|volc",
@@ -415,7 +365,7 @@
415
365
  "brand": "baidu"
416
366
  },
417
367
  {
418
- "match": "hunyuan|(^|-)hy\\d",
368
+ "match": "hunyuan|(^|-)hy(\\d|-?mt)",
419
369
  "brand": "tencent"
420
370
  },
421
371
  {
@@ -434,64 +384,114 @@
434
384
  "match": "nova",
435
385
  "brand": "nova"
436
386
  },
387
+ {
388
+ "match": "mimo",
389
+ "brand": "xiaomimimo"
390
+ },
391
+ {
392
+ "match": "longcat",
393
+ "brand": "longcat"
394
+ },
437
395
  {
438
396
  "match": "sonar|perplexity",
439
397
  "brand": "perplexity"
440
398
  }
441
- ]
399
+ ],
400
+ "lockups": {
401
+ "note": "Per-brand overrides for the vendored lockup, applied by scripts/fetch-lobe-combines.py. `word` is the word the lockup stands in for inside a model name (it must match how the catalog spells it, which is not always Lobe's TITLE), `mark` and `text` name the Lobe icons the two halves are taken from (so a model line can wear its own mark with its parent's wordmark), and `keep` crops a wordmark to a fraction of its ink width (GLM-V's \"-V\" is not part of the name).",
402
+ "meta": {
403
+ "word": "Meta",
404
+ "lockup": true
405
+ },
406
+ "openai": {
407
+ "word": "GPT",
408
+ "local": "openai.svg",
409
+ "textFrom": 0.529
410
+ },
411
+ "tencent": {
412
+ "word": "Hunyuan",
413
+ "mark": "hunyuan",
414
+ "text": "tencent"
415
+ },
416
+ "stepfun": {
417
+ "word": "Step",
418
+ "mark": "stepfun",
419
+ "text": "stepfun"
420
+ },
421
+ "xiaomimimo": {
422
+ "word": "MiMo",
423
+ "mark": "xiaomimimo",
424
+ "text": "xiaomimimo"
425
+ },
426
+ "nanobanana": {
427
+ "word": "Nano Banana"
428
+ },
429
+ "zai": {
430
+ "word": "GLM",
431
+ "mark": "zai",
432
+ "text": "glmv",
433
+ "keep": 0.62
434
+ }
435
+ }
442
436
  },
443
437
  "families": [
444
438
  {
445
- "match": "^deepseek.*(v4[-.]?1|4[-.]?1).*flash$|^deepseek-flash$",
439
+ "match": "deepseek.*flash",
446
440
  "key": "deepseek-flash",
447
- "note": "Anchored on `deepseek` on purpose: an unanchored /flash$/ would hand this copy to glm-5.3-flash, step-3.7-flash and every other vendor's flash tier."
448
- },
449
- {
450
- "match": "deepseek.*vision",
451
- "key": "deepseek-v4-flash-vision-exp"
441
+ "note": "Every DeepSeek Flash reads the same line: the copy describes the line, not a version, so a retired Flash and a future one say the same thing. Anchored on `deepseek` on purpose: an unanchored /flash$/ would hand this copy to glm-5.3-flash, step-3.7-flash and every other vendor's flash tier."
452
442
  },
453
443
  {
454
444
  "match": "deepseek.*pro",
455
- "key": "deepseek-v4-pro"
445
+ "note": "The Pro line's own official heading on the V4 preview page. No exact entry pins it: a Pro is a Pro whatever its version.",
446
+ "text": {
447
+ "zh": "性能比肩顶级闭源模型。",
448
+ "en": "Performance rivaling the world's top closed-source models."
449
+ }
456
450
  },
457
451
  {
458
- "match": "deepseek.*flash",
459
- "key": "deepseek-v4-flash"
452
+ "match": "deepseek",
453
+ "note": "Everything else in the line — V3.2, R1, and whatever comes next — shares the V4.1 release title.",
454
+ "text": {
455
+ "zh": "更强、更快、更普惠。",
456
+ "en": "Smarter, faster, more efficient."
457
+ }
460
458
  },
461
459
  {
462
- "match": "deepseek.*(r1|reasoner|think)",
460
+ "match": "claude.*fable",
461
+ "note": "Fable is a model line of its own (Mythos / Fable / Opus / Sonnet / Haiku), so it must not fall through to the generic Claude rule. Its copy is the line tagline from anthropic.com/claude/fable, and it carries no tier prefix of ours.",
463
462
  "text": {
464
- "zh": "DeepSeek 推理专用:先思考再作答,适合数学、算法与难题。",
465
- "en": "DeepSeek reasoning-first: thinks before answering; best for math, algorithms and hard problems."
463
+ "zh": "新一代智能,专为解决最艰深的知识工作和编程难题。",
464
+ "en": "Next generation of intelligence for the hardest knowledge work and coding problems."
466
465
  }
467
466
  },
468
467
  {
469
- "match": "deepseek",
468
+ "match": "claude.*mythos",
469
+ "note": "Mythos is Fable's unrestricted sibling — Anthropic's own words: Fable is the same underlying model with cybersecurity and biology safeguards added. Access to Mythos is limited to vetted organizations, so its copy leads with the audience rather than the capability.",
470
470
  "text": {
471
- "zh": "DeepSeek 通用模型:中文与代码均衡,长上下文性价比高。",
472
- "en": "DeepSeek generalist: balanced Chinese and code, strong long-context value."
471
+ "zh": "面向网络安全与生物学研究,仅经审核的组织可访问。",
472
+ "en": "Built for cybersecurity and biology research, with access limited to vetted organizations."
473
473
  }
474
474
  },
475
475
  {
476
476
  "match": "claude.*opus",
477
- "note": "Family copy stays version-agnostic, so it carries no superlatives: 'strongest' is only true of the current generation and would mislabel an older Opus. Superlatives belong in version-pinned exact entries.",
477
+ "note": "Family copy stays version-agnostic, so it carries no superlatives: 'strongest' is only true of the current generation and would mislabel an older Opus. Superlatives belong in version-pinned exact entries. It also carries no tier prefix of ours — '旗舰档:' is our positioning, not the model's own line.",
478
478
  "text": {
479
- "zh": "Claude 旗舰档:编程、Agent 与专业工作,长程一致性见长。",
480
- "en": "Claude flagship tier: coding, agentic and professional work, strong on long-run consistency."
479
+ "zh": "面向严肃编码与 AI 智能体的混合推理模型。",
480
+ "en": "A hybrid reasoning model built for serious coding and AI agents."
481
481
  }
482
482
  },
483
483
  {
484
484
  "match": "claude.*sonnet",
485
485
  "text": {
486
- "zh": "Claude 主力档:成本与能力平衡,日常首选。",
487
- "en": "Claude workhorse: balanced cost and capability, the everyday default."
486
+ "zh": "面向实时智能体与高吞吐的混合推理。",
487
+ "en": "Hybrid reasoning for real-time agents and high-volume work."
488
488
  }
489
489
  },
490
490
  {
491
491
  "match": "claude.*haiku",
492
492
  "text": {
493
- "zh": "Claude 轻量档:低延迟、低成本,适合简单与高频任务。",
494
- "en": "Claude lightweight: low latency and cost for simple, high-frequency tasks."
493
+ "zh": "面向速度敏感的高吞吐场景,响应快、成本低。",
494
+ "en": "For speed-sensitive, high-volume workloads at low cost."
495
495
  }
496
496
  },
497
497
  {
@@ -504,57 +504,73 @@
504
504
  {
505
505
  "match": "codex",
506
506
  "text": {
507
- "zh": "OpenAI 编码专用:长程代码任务与重构。",
508
- "en": "OpenAI coding specialist for long-horizon code work and refactors."
507
+ "zh": "为 Codex 代理式编码优化,可并行处理多项软件工程任务。",
508
+ "en": "Optimized for agentic coding in Codex, handling several software tasks in parallel."
509
509
  }
510
510
  },
511
511
  {
512
512
  "match": "gpt-?5",
513
513
  "text": {
514
- "zh": "OpenAI 通用模型,推理与编码均衡。",
515
- "en": "OpenAI generalist with balanced reasoning and coding."
514
+ "zh": "内置思考、可配置推理强度,面向编码与智能体任务。",
515
+ "en": "Thinking built in with configurable reasoning effort, for coding and agentic tasks."
516
516
  }
517
517
  },
518
518
  {
519
519
  "match": "(^|[/-])o[1-9](-|$)",
520
520
  "text": {
521
- "zh": "OpenAI 推理专用:先思考再作答,适合数学、算法与难题。",
522
- "en": "OpenAI reasoning-first: thinks before answering; best for math, algorithms and hard problems."
521
+ "zh": "作答前深入思考,从 o1 到 o3 与 o4-mini。",
522
+ "en": "Trained to think more deeply before responding, from o1 through o3 and o4-mini."
523
523
  }
524
524
  },
525
525
  {
526
526
  "match": "gpt-oss|oss-\\d",
527
527
  "text": {
528
- "zh": "OpenAI 开源权重系列:可自托管,成本低。",
529
- "en": "OpenAI's open-weight line: self-hostable at low cost."
528
+ "zh": "开源权重推理模型,Apache 2.0,120B 与 20B 两档,可定制、可自托管。",
529
+ "en": "Open-weight reasoning models, Apache 2.0, in 120B and 20B sizes, customizable and self-hostable."
530
530
  }
531
531
  },
532
532
  {
533
533
  "match": "gpt",
534
534
  "text": {
535
- "zh": "OpenAI 通用模型。",
536
- "en": "OpenAI general model."
535
+ "zh": "最新模型均支持文本与图像输入、多语言。",
536
+ "en": "The latest models take text and image input, multilingual."
537
537
  }
538
538
  },
539
539
  {
540
540
  "match": "gemini.*(pro|ultra)",
541
541
  "text": {
542
- "zh": "Gemini 旗舰档:世界知识与多模态见长,适合复杂长程任务。",
543
- "en": "Gemini flagship tier: world knowledge and multimodality for complex, long-horizon work."
542
+ "zh": "面向复杂任务、深度推理与多模态理解。",
543
+ "en": "For complex tasks, deep reasoning and multimodal understanding."
544
544
  }
545
545
  },
546
546
  {
547
547
  "match": "gemini.*flash",
548
548
  "text": {
549
- "zh": "Gemini Flash:速度与成本优先。",
550
- "en": "Gemini Flash: speed and cost first."
549
+ "zh": "速度与成本优先,面向规模化智能体任务与高频低延迟场景。",
550
+ "en": "Speed and cost first, for high-volume low-latency work and agentic tasks at scale."
551
551
  }
552
552
  },
553
553
  {
554
554
  "match": "gemini",
555
555
  "text": {
556
- "zh": "Google Gemini 模型。",
557
- "en": "Google Gemini model."
556
+ "zh": "原生理解文本、图像、视频与音频。",
557
+ "en": "Native text, image, video and audio understanding."
558
+ }
559
+ },
560
+ {
561
+ "match": "gemma",
562
+ "note": "Gemma is Google's open line, not a Gemini tier, so it must not inherit the Gemini rule's copy. Its place below the generic Gemini rule is only for readability: the two patterns cannot overlap.",
563
+ "text": {
564
+ "zh": "源自 Gemini 研究,从云端服务器到手机都能运行。",
565
+ "en": "Built from the same research as Gemini, running from cloud servers to phones."
566
+ }
567
+ },
568
+ {
569
+ "match": "nano-?banana",
570
+ "note": "Nano Banana is Gemini's image model with its own catalog identity, so it gets image copy instead of the Gemini text-model line.",
571
+ "text": {
572
+ "zh": "Gemini 图像生成与编辑模型,支持自然语言对话式创建与修改。",
573
+ "en": "Gemini's image generation and editing model, with conversational creation and refinement."
558
574
  }
559
575
  },
560
576
  {
@@ -564,15 +580,15 @@
564
580
  {
565
581
  "match": "glm.*flash",
566
582
  "text": {
567
- "zh": "GLM Flash:原生多模态,激活参数少、成本低。",
568
- "en": "GLM Flash: natively multimodal with few active parameters at low cost."
583
+ "zh": "更快更省的多模态推理,兼顾长上下文与日常编程。",
584
+ "en": "Fast, low-cost multimodal inference with long context and everyday coding."
569
585
  }
570
586
  },
571
587
  {
572
588
  "match": "glm",
573
589
  "text": {
574
- "zh": "智谱 GLM:结构化输出与编码能力突出,适合 Agent 工作流。",
575
- "en": "Zhipu GLM: strong structured output and coding, well suited to agent workflows."
590
+ "zh": "覆盖对话、编程与智能体,支持思考模式与函数调用。",
591
+ "en": "Covers chat, coding and agents, with thinking mode and function calling."
576
592
  }
577
593
  },
578
594
  {
@@ -586,8 +602,8 @@
586
602
  {
587
603
  "match": "kimi",
588
604
  "text": {
589
- "zh": "Moonshot Kimi:长文本见长,中文写作与知识工作强。",
590
- "en": "Moonshot Kimi: strong on long documents, Chinese writing and knowledge work."
605
+ "zh": "原生支持文本、图片与视频输入,含思考模式与工具调用。",
606
+ "en": "Native text, image and video input, with thinking mode and tool calling."
591
607
  }
592
608
  },
593
609
  {
@@ -597,45 +613,45 @@
597
613
  {
598
614
  "match": "qwen.*(coder|code)",
599
615
  "text": {
600
- "zh": "Qwen 代码专用:补全、生成与仓库级修改。",
601
- "en": "Qwen coding specialist for completion, generation and repo-level edits."
616
+ "zh": "开源权重 MoE,面向补全、生成与仓库级修改。",
617
+ "en": "Open-weight MoE for completion, generation and repo-level edits."
602
618
  }
603
619
  },
604
620
  {
605
621
  "match": "qwen.*(flash|turbo)",
606
622
  "text": {
607
- "zh": "Qwen 轻量档:响应快、成本低。",
608
- "en": "Qwen lightweight tier: fast responses at low cost."
623
+ "zh": "响应快、成本低,工具调用与长上下文支持完整。",
624
+ "en": "Fast and cheap, with full tool calling and long-context support."
609
625
  }
610
626
  },
611
627
  {
612
628
  "match": "qwen.*plus",
613
629
  "text": {
614
- "zh": "Qwen 中端档:能力与成本折中。",
615
- "en": "Qwen mid tier: a middle ground between capability and cost."
630
+ "zh": "能力与成本均衡,完整工具调用支持。",
631
+ "en": "Balanced cost and capability with full tool calling."
616
632
  }
617
633
  },
618
634
  {
619
635
  "match": "qwen.*a\\d+b",
620
636
  "note": "MoE ids spell out total and active parameters (`2.4t-a95b`, `235b-a22b`); the active count must win over the size rule below, which would otherwise read the trailing `95b` as a small dense model.",
621
637
  "text": {
622
- "zh": "大尺寸 MoE:总参大、激活参数少,单位成本低于同规模稠密模型。",
623
- "en": "Large MoE: many total parameters but few active, so it costs less than a dense model of the same size."
638
+ "zh": "总参大、激活参数少,单位成本低于同规模稠密模型。",
639
+ "en": "Many total parameters but few active, so it costs less than a dense model of the same size."
624
640
  }
625
641
  },
626
642
  {
627
643
  "match": "qwen.*[-_]\\d+b($|[^a-z])",
628
644
  "note": "Anchored to a separator so the digits start a segment: an unanchored \\d+b matches the `95b` inside `a95b` and calls a 2.4T MoE a small dense model.",
629
645
  "text": {
630
- "zh": "小尺寸稠密模型:可本地或低成本部署。",
631
- "en": "Small dense model: cheap to serve, or run locally."
646
+ "zh": "可本地或低成本部署。",
647
+ "en": "Cheap to serve, or run locally."
632
648
  }
633
649
  },
634
650
  {
635
651
  "match": "qwen",
636
652
  "text": {
637
- "zh": "阿里通义千问:中文与多模态均衡。",
638
- "en": "Alibaba Qwen: balanced Chinese and multimodality."
653
+ "zh": "开源权重与云端 API 并行,覆盖文本、图像、音频与视频。",
654
+ "en": "Open weights and cloud APIs across text, image, audio and video."
639
655
  }
640
656
  },
641
657
  {
@@ -649,8 +665,8 @@
649
665
  {
650
666
  "match": "step",
651
667
  "text": {
652
- "zh": "阶跃星辰 Step 模型。",
653
- "en": "StepFun Step model."
668
+ "zh": "覆盖文本推理、多模态与语音,经官方开放平台提供。",
669
+ "en": "Reasoning, multimodal understanding and voice, served through the official open platform."
654
670
  }
655
671
  },
656
672
  {
@@ -660,129 +676,129 @@
660
676
  {
661
677
  "match": "minimax|(^|-)m2[-.]?\\d",
662
678
  "text": {
663
- "zh": "MiniMax:性价比高,编程与长上下文兼顾。",
664
- "en": "MiniMax: good value, covering coding and long context."
679
+ "zh": "主打 Agent 推理、工具调用、编程与多模态输入,面向长上下文任务。",
680
+ "en": "Agentic reasoning, tool use, coding and multimodal input for long-context work."
665
681
  }
666
682
  },
667
683
  {
668
684
  "match": "muse-spark",
669
- "note": "Meta's agentic/coding line, separate from the Llama open-weight line — it must not inherit the Llama rule's copy.",
685
+ "note": "Meta Superintelligence Labs' Muse line, separate from the Llama open-weight line — it must not inherit the Llama rule's copy.",
670
686
  "text": {
671
- "zh": "Meta 的 Agent 与编码线:面向 agentic 工作流与竞技编程,首答准确率更高。",
672
- "en": "Meta's agentic and coding line: built for agent workflows and competitive programming, with higher first-attempt accuracy."
687
+ "zh": "小而快、原生多模态推理,驱动 Meta AI。",
688
+ "en": "Small and fast by design, natively multimodal, powering Meta AI."
673
689
  }
674
690
  },
675
691
  {
676
692
  "match": "celeris",
677
693
  "note": "Diffusion LLM, so the copy leads with latency rather than the usual capability framing.",
678
694
  "text": {
679
- "zh": "扩散式 LLM:实时级响应(实测中位约 1600 token/s),智能接近 GPT-5。",
680
- "en": "Diffusion LLM: real-time responses (about 1,600 tokens/s median) at near-GPT-5 intelligence."
695
+ "zh": "Celeris-1 生成速度 1664 token/s,约为 Mercury 2 的五倍,MMLU-Pro 75.9%。",
696
+ "en": "Celeris-1 generates 1,664 tokens/s, over 5x Mercury 2, at 75.9% MMLU-Pro."
681
697
  }
682
698
  },
683
699
  {
684
700
  "match": "mercury-?\\d|inception",
685
701
  "text": {
686
- "zh": "Inception Labs 扩散式 LLM:首个带推理的扩散模型,输出超 1000 token/s。",
687
- "en": "Inception Labs diffusion LLM: the first diffusion model with reasoning, over 1,000 tokens/s."
702
+ "zh": "面向代码生成,H100 上超 1000 token/s,快达同类的 10 倍。",
703
+ "en": "Built for code, over 1,000 tokens/s on H100, up to 10x faster than speed-optimized LLMs."
688
704
  }
689
705
  },
690
706
  {
691
707
  "match": "apodex",
692
708
  "text": {
693
- "zh": "面向复杂专业工作的 Agent 模型:金融与科研场景见长。",
694
- "en": "Agentic model for complex professional work, strong in finance and scientific research."
709
+ "zh": "面向复杂专业工作、金融与科研,1.1 mini 为 35B、可本地部署。",
710
+ "en": "For complex professional work, finance and science; the 35B 1.1 mini runs locally."
695
711
  }
696
712
  },
697
713
  {
698
714
  "match": "motif",
699
715
  "text": {
700
- "zh": "韩国 Motif Technologies 全自研开源权重 MoE:314B 总参 / 13.2B 激活。",
701
- "en": "Korea's Motif Technologies in-house open-weight MoE: 314B total / 13.2B active."
716
+ "zh": "MIT 许可,314B 总参 / 13.2B 激活,256k 上下文。",
717
+ "en": "MIT-licensed, 314B total / 13.2B active, 256k context."
702
718
  }
703
719
  },
704
720
  {
705
721
  "match": "grok",
706
722
  "text": {
707
- "zh": "xAI Grok:风格直接,编程与实时知识强。",
708
- "en": "xAI Grok: direct style, strong at coding and current knowledge."
723
+ "zh": "覆盖编码、智能体与知识工作,API 支持多模态输入。",
724
+ "en": "Coding, agentic tasks and knowledge work, with multimodal API input."
709
725
  }
710
726
  },
711
727
  {
712
728
  "match": "doubao|seed-?\\d|volc",
713
729
  "text": {
714
- "zh": "字节豆包:中文与多模态均衡,分层定位。",
715
- "en": "ByteDance Doubao: balanced Chinese and multimodality, tiered by use."
730
+ "zh": "经 50+ 内部业务场景验证,每日千亿级 token 用量打磨,多模态可用。",
731
+ "en": "Validated across 50+ internal scenarios and billions of daily tokens, with multimodal support."
716
732
  }
717
733
  },
718
734
  {
719
735
  "match": "ernie",
720
736
  "text": {
721
- "zh": "百度文心:中文知识与检索增强强。",
722
- "en": "Baidu ERNIE: strong Chinese knowledge and retrieval augmentation."
737
+ "zh": "产业级知识增强,支持中文理解与多模态生成。",
738
+ "en": "Industry-grade knowledge enhancement, with Chinese understanding and multimodal generation."
723
739
  }
724
740
  },
725
741
  {
726
742
  "match": "hunyuan|(^|-)hy\\d",
727
743
  "text": {
728
- "zh": "腾讯混元:中文与 Agent 场景均衡。",
729
- "en": "Tencent Hunyuan: balanced for Chinese and agent scenarios."
744
+ "zh": "中文与 Agent 场景均衡。",
745
+ "en": "Balanced for Chinese and agent scenarios."
730
746
  }
731
747
  },
732
748
  {
733
749
  "match": "codestral",
734
750
  "text": {
735
- "zh": "Mistral 代码专用:补全与生成。",
736
- "en": "Mistral coding specialist for completion and generation."
751
+ "zh": "面向补全、FIM 与生成,128k 上下文。",
752
+ "en": "Built for completion, FIM and generation, with 128k context."
737
753
  }
738
754
  },
739
755
  {
740
756
  "match": "mistral|magistral",
741
757
  "text": {
742
- "zh": "Mistral:宽松许可,欧洲开源权重代表。",
743
- "en": "Mistral: permissively licensed European open-weight line."
758
+ "zh": "从云端到边缘的前沿模型,开源权重与商用并行,可 API 调用或自托管。",
759
+ "en": "Frontier models from cloud to edge, open-weight and commercial, via API or self-hosting."
744
760
  }
745
761
  },
746
762
  {
747
763
  "match": "llama",
748
764
  "text": {
749
- "zh": "Meta Llama 开源权重模型。",
750
- "en": "Meta Llama open-weight model."
765
+ "zh": "可自由微调、蒸馏并部署到任何环境。",
766
+ "en": "Fine-tune, distill and deploy it anywhere."
751
767
  }
752
768
  },
753
769
  {
754
770
  "match": "north",
755
771
  "text": {
756
- "zh": "Cohere North:编码与 Agent 场景。",
757
- "en": "Cohere North: coding and agent scenarios."
772
+ "zh": "整合大模型、搜索与自动化成一个企业级安全工作空间。",
773
+ "en": "LLMs, search and automation combined into one secure enterprise workspace."
758
774
  }
759
775
  },
760
776
  {
761
777
  "match": "command-?[ar]|cohere",
762
778
  "text": {
763
- "zh": "Cohere Command:企业检索与工具调用见长。",
764
- "en": "Cohere Command: strong at enterprise retrieval and tool use."
779
+ "zh": "面向工具调用、RAG 与多语言,Command A 为 111B/256k。",
780
+ "en": "For tool use, RAG and multilingual work; Command A is 111B with 256k context."
765
781
  }
766
782
  },
767
783
  {
768
784
  "match": "phi-?\\d",
769
785
  "text": {
770
- "zh": "微软 Phi 小模型:体积小、可本地部署。",
771
- "en": "Microsoft Phi small model: compact and locally deployable."
786
+ "zh": "面向边缘与本地部署,Phi-4 以 14B 专注推理、数学与代码。",
787
+ "en": "For edge and local use; Phi-4 (14B) targets reasoning, math and code."
772
788
  }
773
789
  },
774
790
  {
775
791
  "match": "nova",
776
792
  "text": {
777
- "zh": "Amazon Nova 模型。",
778
- "en": "Amazon Nova model."
793
+ "zh": "Micro/Lite/Pro/Premier 四档,支持文本、图像与视频输入。",
794
+ "en": "Micro, Lite, Pro and Premier tiers taking text, image and video."
779
795
  }
780
796
  },
781
797
  {
782
798
  "match": "sonar|perplexity",
783
799
  "text": {
784
- "zh": "Perplexity Sonar:联网检索增强。",
785
- "en": "Perplexity Sonar: search-augmented."
800
+ "zh": "结合实时网络信息与引用的搜索 API,从轻量 Sonar 到多步深研 Sonar Pro。",
801
+ "en": "Search APIs answering with fresh web data and citations, from light Sonar to deep-research Sonar Pro."
786
802
  }
787
803
  }
788
804
  ],
@@ -790,31 +806,31 @@
790
806
  {
791
807
  "match": "flash|mini|lite|nano|turbo|air|small|swift|highspeed|fast|instant",
792
808
  "text": {
793
- "zh": "轻量档:响应快、成本低,适合简单或高频任务。",
794
- "en": "Lightweight tier: fast and cheap, for simple or high-frequency tasks."
809
+ "zh": "响应快、成本低,适合简单或高频任务。",
810
+ "en": "Fast and cheap, for simple or high-frequency tasks."
795
811
  }
796
812
  },
797
813
  {
798
814
  "match": "pro|max|ultra|opus|thinking|reasoner|plus|large|advanced|heavy|frontier",
799
815
  "text": {
800
- "zh": "高能力档:适合复杂或质量优先的任务,成本更高。",
801
- "en": "High-capability tier: for complex, quality-first work at higher cost."
816
+ "zh": "适合复杂或质量优先的任务,成本更高。",
817
+ "en": "For complex, quality-first work at higher cost."
802
818
  }
803
819
  },
804
820
  {
805
821
  "match": "a\\d+b",
806
822
  "note": "MoE active-parameter suffix (`a95b`, `a23b`); tried before the dense rule so the active count is not mistaken for a total.",
807
823
  "text": {
808
- "zh": "MoE 架构:总参大、激活参数少,单位成本低于同规模稠密模型。",
809
- "en": "MoE: many total parameters but few active, so it costs less than a dense model of the same size."
824
+ "zh": "总参大、激活参数少,单位成本低于同规模稠密模型。",
825
+ "en": "Many total parameters but few active, so it costs less than a dense model of the same size."
810
826
  }
811
827
  },
812
828
  {
813
829
  "match": "(^|[-_])\\d+b($|[^a-z])",
814
830
  "note": "Anchored so the digits start a segment: unanchored, `a95b` and `a23b` read as small dense models.",
815
831
  "text": {
816
- "zh": "小尺寸稠密模型:可本地或低成本部署。",
817
- "en": "Small dense model: cheap to serve, or run locally."
832
+ "zh": "可本地或低成本部署。",
833
+ "en": "Cheap to serve, or run locally."
818
834
  }
819
835
  }
820
836
  ]