@fish-under-sea/magpie-neartoken 0.2.4 → 0.3.0

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.
package/index.mjs CHANGED
@@ -97,18 +97,41 @@ function text(quota, cur) {
97
97
  }
98
98
 
99
99
  /** 倍率的写法:0.1 → 0.1,1 → 1。 */
100
- function ratioText(v) {
101
- return String(Math.round(v * 10000) / 10000)
102
- }
100
+ const ratioText = (v) => String(Math.round(v * 10000) / 10000)
103
101
 
104
- /** 生图模型的名字词。 */
105
- const DRAWS = ['image', 'imagen', 'imagine', 'dall-e', 'flux', 'seedream', 'cogview', 'stable-diffusion', 'sdxl', 'wanx', 'kolors', 'hidream', 'banana', 'midjourney', 'mj-', 'qwen-image']
106
- /** 视频模型的名字词。 */
107
- const FILMS = ['veo', 'sora', 'kling', 'seedance', 'hailuo', 'vidu', 'pixverse', 'runway', 'luma', 'wan2', 'wanx-video', 'minimax-video', 'movie', 'video', 't2v', 'i2v']
108
- /** 既不聊也不画不拍的名字。 */
109
- const SKIP = ['embedding', 'embed-', 'text-embedding', 'tts', 'transcribe', 'asr', 'rerank', 'moderation', 'whisper', 'speech']
102
+ /** ratioOf 是分组倍率,没给就是 0。 */
103
+ const ratioOf = (ratios, name) => (Number(ratios?.[name]) > 0 ? Number(ratios[name]) : 0)
110
104
 
111
- const hasWord = (id, words) => words.some((w) => id.toLowerCase().includes(w))
105
+ /** 站点自己的约定:带 -c 后缀的模型工具调用不可靠,一律不给。 */
106
+ /**
107
+ * kindOf 按站点给的字段判断一个模型属于哪一类。
108
+ *
109
+ * 站点在 /api/pricing 里已经标好了端点类型和分组名,不需要猜模型名字:
110
+ * image-generation → 生图,openai-video → 视频(omni / sd2.0 / sd2.5 /
111
+ * minimax-h3 都是这一类,名字里一个视频关键词都没有),分组里的 TTS /
112
+ * ASR / Suno → 语音,向量模型分组 → 向量,其余 → 对话。
113
+ */
114
+ function kindOf(row) {
115
+ const ends = Array.isArray(row?.supported_endpoint_types) ? row.supported_endpoint_types : []
116
+ const groups = Array.isArray(row?.enable_groups) ? row.enable_groups.join(' ') : ''
117
+ const text = (String(row?.model_name || '') + ' ' + groups + ' ' + String(row?.description || '')).toLowerCase()
118
+ if (ends.includes('image-generation')) return 'image'
119
+ if (ends.includes('openai-video') || /(^|[-_])video([-_]|$)|veo|seedance|sora|kling/i.test(text)) return 'video'
120
+ if (/tts|text-to-speech|asr|speech|whisper|suno|audio|语音|转文字/i.test(text)) return 'audio'
121
+ if (/embedding|embed|rerank|向量/i.test(text)) return 'embedding'
122
+ return 'chat'
123
+ }
124
+
125
+ /** kindOutput 是 magpie 的 capabilities.output:分区靠它认。 */
126
+ function kindOutput(kind) {
127
+ switch (kind) {
128
+ case 'image': return { image: true, text: true }
129
+ case 'video': return { video: true, text: true }
130
+ case 'audio': return { audio: true, text: true }
131
+ case 'embedding': return { embedding: true, text: true }
132
+ default: return { text: true }
133
+ }
134
+ }
112
135
 
113
136
  /**
114
137
  * 目录:把 /api/pricing 展开成 magpie 的模型表。
@@ -118,22 +141,18 @@ const hasWord = (id, words) => words.some((w) => id.toLowerCase().includes(w))
118
141
  * 按那一行走那一组——这就是"模型后面跟着它的分组"。
119
142
  */
120
143
  async function catalog(disabled = new Set()) {
121
- // 同时把「全部分组」抄一份给页面:页面在沙箱里发不出网络请求,但能加载自己
122
- // 目录下的脚本,所以这里写 page/groups.js,模型广场按它重绘。
123
144
  const groupsOut = new Map()
124
145
  const env = await call('/api/pricing')
125
146
  const rows = Array.isArray(env?.data) ? env.data : []
126
147
  const refs = env?.group_refs && typeof env.group_refs === 'object' ? env.group_refs : {}
127
148
  const ratios = env?.group_ratio && typeof env.group_ratio === 'object' ? env.group_ratio : {}
149
+ // 完整快照给模型广场:页面按它一比一重绘站点 /pricing
150
+ writePricing(env)
128
151
  const out = {}
129
152
  for (const row of rows) {
130
153
  const model = String(row?.model_name ?? '').trim()
131
- if (!model || hasWord(model, SKIP) || model.toLowerCase().endsWith('-c')) continue
132
- const ends = Array.isArray(row?.supported_endpoint_types) ? row.supported_endpoint_types : []
133
- const chat = ends.length === 0 || ends.some((e) => ['openai', 'openai-response', 'anthropic', 'gemini'].includes(e))
134
- const drawer = hasWord(model, DRAWS) || ends.includes('image-generation')
135
- const film = hasWord(model, FILMS)
136
- if (!chat && !drawer && !film) continue
154
+ if (!model) continue
155
+ const kind = kindOf(row)
137
156
  const all = Array.isArray(row?.enable_groups) && row.enable_groups.length ? row.enable_groups : ['']
138
157
  // 先按「全部分组」计数(关掉的也算),模型广场要显示它有多少个模型
139
158
  for (const raw of all) {
@@ -147,7 +166,7 @@ async function catalog(disabled = new Set()) {
147
166
  for (const raw of groups) {
148
167
  const group = String(raw ?? '').trim()
149
168
  const ref = group && refs[group] ? String(refs[group]) : ''
150
- const ratio = group && Number(ratios[group]) > 0 ? Number(ratios[group]) : 0
169
+ const ratio = ratioOf(ratios, group)
151
170
  const id = ref ? `${ref}::${model}` : model
152
171
  const label = group ? (ratio > 0 ? `${group} ${ratioText(ratio)}x` : group) + ' · ' + model : model
153
172
  out[id] = {
@@ -158,35 +177,91 @@ async function catalog(disabled = new Set()) {
158
177
  output: Number(row?.max_tokens) > 0 ? Number(row.max_tokens) : 0,
159
178
  },
160
179
  ...(ref ? { headers: { 'x-neartoken-group': ref } } : {}),
180
+ // 站点自己的分类,交给 magpie 的四个分区(图像/视频/语音/向量)
181
+ ...(kind === 'chat' ? {} : { kind }),
161
182
  capabilities: {
162
183
  toolcall: true,
163
- ...(drawer ? { output: { image: true, text: true } } : {}),
164
- ...(film ? { output: { video: true, text: true } } : {}),
184
+ output: kindOutput(kind),
165
185
  },
166
186
  }
167
187
  }
168
188
  }
169
189
  writeGroups([...groupsOut.values()].map((g) => ({
170
190
  ...g,
171
- ratio: Number(ratios[g.name]) > 0 ? Number(ratios[g.name]) : 0,
191
+ ratio: ratioOf(ratios, g.name),
172
192
  ref: refs[g.name] ? String(refs[g.name]) : '',
173
193
  })).sort((a, b) => a.name.localeCompare(b.name, 'zh')))
174
194
  return out
175
195
  }
176
196
 
177
197
  /**
178
- * writeGroups 把分组表写成 page/groups.js,给沙箱里的页面用。
198
+ * writeGroups 把分组表写成 page/groups.js;writePricing 把整份站点目录写成
199
+ * page/pricing.js,给沙箱里的页面用。
179
200
  *
180
201
  * 页面发不出网络请求(CSP connect-src 'none'),但能加载自己目录下的脚本,
181
- * 所以这里不推数据、只落一个文件:`<script src="groups.js?t=…">` 一引就有。
182
- * 写不进去(插件目录只读)就跳过,页面退回它自己的说明。
202
+ * 所以这里不推数据、只落文件:`<script src="pricing.js?t=…">` 一引就有。
203
+ * 写不进去(插件目录只读)就跳过,页面用包内那份静态快照。
183
204
  */
205
+ function writeGroups(groups) {
206
+ try {
207
+ const js = 'self.NEARTOKEN_GROUPS = ' + JSON.stringify(groups) + '\nself.NEARTOKEN_GROUPS_AT = ' + Date.now() + '\n'
208
+ writeFileSync(join(here, 'page', 'groups.js'), js, 'utf8')
209
+ } catch {
210
+ /* 只读安装:页面自己会说没拿到明细 */
211
+ }
212
+ }
213
+
184
214
  /**
185
- * stampLatest 把 npm 上的最新版本写进 page/latest.js。
186
- *
187
- * 页面自己查不了(沙箱禁联网),但插件能:这里顺手问一次 registry,页面
188
- * 「检查更新」时加载这个脚本就知道新不新。一分钟内不重复问。
215
+ * writePricing 把 /api/pricing 原样裁成模型广场需要的形状,写成 page/pricing.js。
216
+ * 与包内那份静态快照同形状,页面优先用这份(实时),静态那份只是首次兜底。
189
217
  */
218
+ function writePricing(env) {
219
+ try {
220
+ const keep = ['description', 'tags', 'icon', 'vendor_id', 'enable_groups', 'supported_endpoint_types',
221
+ 'model_ratio', 'model_price', 'completion_ratio', 'cache_ratio', 'create_cache_ratio',
222
+ 'quota_type', 'billing_mode', 'billing_expr', 'context_window', 'max_tokens',
223
+ 'input_modalities', 'reasoning_levels']
224
+ // 包内快照里带了一批站点 /pricing 页面的描述与运行状态(/api/pricing 没给)。
225
+ // 实时刷新时把它们并回来,别让刷新把首屏说明冲掉。
226
+ const extra = new Map()
227
+ try {
228
+ const old = readFileSync(join(here, 'page', 'pricing.js'), 'utf8')
229
+ const raw = old.slice(old.indexOf('=') + 1).trim().replace(/;\s*$/, '')
230
+ const prev = JSON.parse(raw)
231
+ for (const m of prev?.models || []) {
232
+ const x = {}
233
+ for (const k of ['description', 'status', 'latency', 'throughput']) if (m[k] !== undefined) x[k] = m[k]
234
+ if (Object.keys(x).length) extra.set(m.name, x)
235
+ }
236
+ } catch { /* 没有旧快照就只用 API 字段 */ }
237
+ const models = (Array.isArray(env?.data) ? env.data : []).map((m) => {
238
+ const name = String(m?.model_name ?? '')
239
+ const o = { name }
240
+ for (const k of keep) if (m[k] !== undefined && m[k] !== null && m[k] !== '') o[k] = m[k]
241
+ // API 里没有 description 时,用页面快照里的那段说明
242
+ if (!o.description && extra.get(name)?.description) o.description = extra.get(name).description
243
+ return Object.assign(o, extra.get(name) || {})
244
+ })
245
+ const snap = {
246
+ at: Date.now(),
247
+ source: 'https://neartoken.cc/api/pricing',
248
+ version: env?.pricing_version ?? '',
249
+ models,
250
+ groups: env?.group_ratio ?? {},
251
+ refs: env?.group_refs ?? {},
252
+ notes: env?.usable_group ?? {},
253
+ auto: env?.auto_groups ?? [],
254
+ vendors: env?.vendors ?? [],
255
+ endpoints: env?.supported_endpoint ?? {},
256
+ }
257
+ writeFileSync(join(here, 'page', 'pricing.js'),
258
+ '// 由插件运行时从 /api/pricing 写入\nself.NEARTOKEN_PRICING = ' + JSON.stringify(snap) + '\n', 'utf8')
259
+ } catch {
260
+ /* 只读安装:用包内静态快照 */
261
+ }
262
+ }
263
+
264
+ /** stampLatest 把 npm 上的最新版本写进 page/latest.js,一分钟内不重复问。 */
190
265
  let latestAskedAt = 0
191
266
  async function stampLatest() {
192
267
  if (Date.now() - latestAskedAt < 60_000) return
@@ -208,14 +283,6 @@ async function stampLatest() {
208
283
  /* 问不到就保持原样:页面会说「没查到」 */
209
284
  }
210
285
  }
211
- function writeGroups(groups) {
212
- try {
213
- const js = 'self.NEARTOKEN_GROUPS = ' + JSON.stringify(groups) + '\nself.NEARTOKEN_GROUPS_AT = ' + Date.now() + '\n'
214
- writeFileSync(join(here, 'page', 'groups.js'), js, 'utf8')
215
- } catch {
216
- /* 只读安装:页面自己会说没拿到明细 */
217
- }
218
- }
219
286
 
220
287
  export default async function neartoken(input, options) {
221
288
  // 页面写进来的开关:关掉的分组,它们的模型不再出现在 magpie 的列表里。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fish-under-sea/magpie-neartoken",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "NearToken for magpie: a provider whose sign-in is the site's own device authorization, models listed per billing group with their multiplier, balance and vouchers on magpie's usage card, plus a page for spending and top-ups.",
5
5
  "type": "module",
6
6
  "main": "index.mjs",
package/page/app.js CHANGED
@@ -219,9 +219,8 @@
219
219
  if (key !== 'home' && view.configured && !windows.has(span)) {
220
220
  call('neartoken:usage', { range: span }).then((w) => { windows.set(span, w); render() }).catch(showError)
221
221
  }
222
- if (key === 'market' && !groupSnapshot) {
223
- loadGroups().then((got) => { if (got) render() })
224
- }
222
+ // 模型广场的数据在 page/pricing.js(包内快照 + 插件运行时覆盖),
223
+ // 页面加载时就已就位,不需要再动态取。
225
224
  },
226
225
  }, label)))
227
226
  }
@@ -421,68 +420,253 @@
421
420
  await loadGroups(true)
422
421
  render()
423
422
  }
424
- /** 分组落在哪一类:低价 / 满血 / 图片 / 视频 / 语音 / 向量 / 其他。 */
425
- function bucketOf(name) {
426
- const n = String(name || '')
427
- if (/生图|图片|image|画/i.test(n)) return '图片'
428
- if (/视频|video/i.test(n)) return '视频'
429
- if (/语音|tts|asr|转写|whisper|speech/i.test(n)) return '语音'
430
- if (/向量|embedding/i.test(n)) return '向量'
431
- if (/低价/.test(n)) return '低价'
432
- if (/满血|官key|pro/i.test(n)) return '满血'
433
- return '其他'
423
+ // ---------- 模型广场:一比一复刻 neartoken.cc/pricing ----------
424
+
425
+ let marketQuery = ''
426
+ let marketGroup = ''
427
+ let marketKind = 'all'
428
+ let marketUnit = 'M'
429
+ let marketMode = 'standard'
430
+ let marketSort = 'default'
431
+ let marketLayout = 'grid'
432
+ const marketVendors = new Set()
433
+ const MARKET_KINDS = [['all', '全部'], ['chat', '对话'], ['image', '生图'], ['video', '视频'], ['audio', '语音'], ['embedding', '向量']]
434
+
435
+ /** pricing 是包内静态快照(插件运行时会把实时目录覆盖进同一个文件)。 */
436
+ function pricing() {
437
+ const p = self.NEARTOKEN_PRICING
438
+ return p && Array.isArray(p.models) && p.models.length ? p : null
434
439
  }
435
- const BUCKET_ORDER = ['低价', '满血', '图片', '视频', '语音', '向量', '其他']
436
440
 
437
- /** 模型广场:按站点返回的分组重绘,分组即为开关。 */
438
- function marketCard() {
439
- const list = Array.isArray(view.groupList) && view.groupList.length ? view.groupList : groupSnapshot
440
- const head = el('div', { class: 'row' },
441
- el('h2', { class: 'grow', text: '分组', style: 'margin:0' }),
442
- el('a', { class: 'link', href: 'https://neartoken.cc/pricing', target: '_blank', rel: 'noreferrer' }, '站点广场 ↗'))
443
- if (!list || !list.length) {
444
- return card(null, head,
445
- el('p', { class: 'note' },
446
- '还没拿到分组表。点「重新读取」——插件会去站点拉一次 /api/pricing,',
447
- '写成 page/groups.js,页面加载它就有数据(不需要宿主改动)。'),
448
- el('div', { class: 'row', style: 'margin-top:10px' },
449
- el('button', { class: 'ghost', onclick: () => retryGroups() }, '重新读取'),
450
- el('a', { class: 'link', href: 'https://neartoken.cc/pricing', target: '_blank', rel: 'noreferrer', style: 'align-self:center' }, '站点广场 ↗')) )
441
+ /** marketKindOf 与 index.mjs 的分类同源:按站点端点判,不猜名字。 */
442
+ function marketKindOf(m) {
443
+ const ends = m?.supported_endpoint_types || []
444
+ const text = [m?.name, (m?.enable_groups || []).join(' '), m?.description].join(' ').toLowerCase()
445
+ if (ends.includes('image-generation')) return 'image'
446
+ if (ends.includes('openai-video') || /(^|[-_])video([-_]|$)|veo|seedance|sora|kling/i.test(text)) return 'video'
447
+ if (/tts|text-to-speech|asr|speech|whisper|suno|audio|语音|转文字/i.test(text)) return 'audio'
448
+ if (/embedding|embed|rerank|向量/i.test(text)) return 'embedding'
449
+ return 'chat'
450
+ }
451
+
452
+ function vendorOf(id) {
453
+ const v = (pricing()?.vendors || []).find((x) => String(x.id) === String(id))
454
+ return v ? v.name : '其他'
455
+ }
456
+
457
+ /** groupBadge 把 [低价][满血] Claude 原生 拆成站点那种彩色小标签。 */
458
+ function groupBadge(name) {
459
+ const parts = String(name || '').match(/\[[^\]]+\]/g) || []
460
+ const rest = String(name || '').replace(/\[[^\]]+\]/g, '').trim()
461
+ const words = parts.map((p) => p.slice(1, -1))
462
+ const colorOf = (w) => {
463
+ if (/低价|反重力|神秘|自有|国模/i.test(w)) return 'green'
464
+ if (/满血|原生|特惠/i.test(w)) return 'red'
465
+ if (/促销|生图|Kiro|灵车/i.test(w)) return 'pink'
466
+ if (/备用|官Key|官key|CC|Argon|GPT Pro|视频|向量/i.test(w)) return 'blue'
467
+ return 'plain'
451
468
  }
452
- const buckets = new Map()
453
- for (const g of list) {
454
- const key = bucketOf(g?.name)
455
- if (!buckets.has(key)) buckets.set(key, [])
456
- buckets.get(key).push(g)
469
+ return el('span', { class: 'gb' },
470
+ words.map((w) => el('span', { class: 'gb-tag ' + colorOf(w), text: w })),
471
+ rest ? el('span', { class: 'gb-rest', text: rest }) : null)
472
+ }
473
+
474
+ /**
475
+ * priceOf 反推站点卡片上的价格:
476
+ * 计费表达式里 p/c/cr 的系数 × 该模型最低分组倍率(站点按最低档展示)。
477
+ * 没有表达式(按量计费)时系数 = model_ratio × 2、× completion_ratio、× cache_ratio。
478
+ * 逐个与站点 SSR 卡片核对过:gpt-6-astra ¥2/¥10/¥0.2、claude-sonnet-5-5
479
+ * ¥3/¥15/¥0.15、glm-5.3 ¥2/¥7/¥0.5、gpt-6.1-terra ¥0.26/¥1.3/¥0.013。
480
+ */
481
+ function priceOf(m) {
482
+ const expr = String(m?.billing_expr || '')
483
+ const coef = (v) => { const x = expr.match(new RegExp('\\b' + v + '\\s*\\*\\s*([\\d.]+)')); return x ? Number(x[1]) : null }
484
+ const ratios = (m?.enable_groups || []).map((g) => Number(pricing()?.groups?.[g])).filter((v) => v > 0)
485
+ const min = ratios.length ? Math.min(...ratios) : 1
486
+ // 生图/音乐这类按次计费:表达式里是 fixed(单价) × 张数,不是 token 系数
487
+ const fixed = expr.match(/fixed\(\s*([\d.]+)\s*\)/)
488
+ if (fixed) return { perCall: Number(fixed[1]) * min, perLabel: '张', tiered: true }
489
+ if (Number(m?.quota_type) === 1 && Number(m?.model_price) > 0) {
490
+ return { perCall: Number(m.model_price), perLabel: '次', tiered: false }
457
491
  }
458
- const parts = [head]
459
- for (const key of BUCKET_ORDER) {
460
- const groups = buckets.get(key)
461
- if (!groups || !groups.length) continue
462
- const chips = groups.map((g) => groupChip(g))
463
- parts.push(el('div', { class: 'bucket' },
464
- el('div', { class: 'bucket-name' }, key, el('span', { class: 'n', text: String(groups.length) })),
465
- el('div', { class: 'groups' }, chips)))
492
+ const p0 = coef('p') ?? (Number(m?.model_ratio) || 0) * 2
493
+ const c0 = coef('c') ?? p0 * (Number(m?.completion_ratio) || 0)
494
+ const r0 = coef('cr') ?? p0 * (Number(m?.cache_ratio) || 0)
495
+ return { input: p0 * min, output: c0 * min, cache: r0 * min, tiered: !!expr }
496
+ }
497
+
498
+ /** money 是价格写法:¥2、¥0.02;/1K 时把每 1M 的价除以 1000。 */
499
+ function money(v, unit) {
500
+ const x = unit === 'K' ? v / 1000 : v
501
+ if (!x) return '¥0'
502
+ const s = String(Math.round(x * 1e8) / 1e8)
503
+ return '¥' + s
504
+ }
505
+
506
+ /** modelCard 是站点那张卡:厂商、描述、计费、三档价格、分组、端点、状态、详情。 */
507
+ function modelCard(m) {
508
+ const p = priceOf(m)
509
+ const ends = (m?.supported_endpoint_types || []).join(', ')
510
+ const groups = m?.enable_groups || []
511
+ const shownGroups = groups.slice(0, 2)
512
+ const more = groups.length - shownGroups.length
513
+ const kind = marketKindOf(m)
514
+ const priceRow = p.perCall !== undefined
515
+ ? el('div', { class: 'mc-prices one' },
516
+ el('div', null, el('span', { text: '按次计费' }), el('b', { text: money(p.perCall, 'M') + ' / ' + p.perLabel })))
517
+ : el('div', { class: 'mc-prices' },
518
+ el('div', null, el('span', { text: '输入' }), el('b', { text: money(p.input, marketUnit) + ' / 1' + marketUnit })),
519
+ el('div', null, el('span', { text: '输出' }), el('b', { text: money(p.output, marketUnit) + ' / 1' + marketUnit })),
520
+ el('div', null, el('span', { text: '缓存读取' }), el('b', { text: money(p.cache, marketUnit) + ' / 1' + marketUnit })))
521
+ const hasStatus = m.status !== undefined && m.status !== null
522
+ const bars = el('span', { class: 'mc-bar' }, Array.from({ length: 10 }, (_, i) =>
523
+ el('i', { class: hasStatus ? (i < Math.round((Number(m.status) || 0) / 10) ? 'ok' : 'bad') : '' })))
524
+ return el('article', { class: 'mc' + (kind !== 'chat' ? ' mc-' + kind : '') },
525
+ el('div', { class: 'mc-head' },
526
+ el('span', { class: 'mc-vicon', text: vendorOf(m.vendor_id).slice(0, 1) }),
527
+ el('div', { class: 'grow' },
528
+ el('div', { class: 'mc-name', text: m.name }),
529
+ el('div', { class: 'mc-vendor', text: vendorOf(m.vendor_id) })),
530
+ el('button', { class: 'mc-copy', title: '复制模型 ID', onclick: () => copy(m.name) }, '⧉')),
531
+ el('p', { class: 'mc-desc', text: m.description || '暂无描述。' }),
532
+ el('div', { class: 'mc-billing ' + (p.tiered ? 'dyn' : 'flat'), text: p.tiered ? '动态计费' : '按量计费' }),
533
+ priceRow,
534
+ el('div', { class: 'mc-line' },
535
+ el('span', { class: 'k', text: '分组' }),
536
+ shownGroups.map((g) => groupBadge(g)),
537
+ more > 0 ? el('span', { class: 'mc-more', text: '+' + more }) : null),
538
+ el('div', { class: 'mc-line' },
539
+ el('span', { class: 'k', text: '端点' }),
540
+ el('span', { class: 'v', text: ends || '—' })),
541
+ el('div', { class: 'mc-stats' },
542
+ el('span', null, el('span', { class: 'k', text: '状态' }),
543
+ el('span', { class: 'v', text: hasStatus ? Number(m.status).toFixed(2) + '%' : '—' })),
544
+ bars,
545
+ el('span', null, el('span', { class: 'k', text: '延迟' }),
546
+ el('span', { class: 'v', text: m.latency || '—s' })),
547
+ el('span', null, el('span', { class: 'k', text: '吞吐' }),
548
+ el('span', { class: 'v', text: m.throughput || '—t/s' }))),
549
+ el('div', { class: 'mc-foot' },
550
+ el('a', { class: 'link', href: 'https://neartoken.cc/pricing', target: '_blank', rel: 'noreferrer' }, '详情 ›')))
551
+ }
552
+
553
+ /** 站点 /pricing 首屏的推荐顺序(抓自它的服务端渲染),默认排序时置顶。 */
554
+ const SITE_FIRST = ['gpt-6-astra', 'gpt-6.1-sol', 'gpt-6-sol', 'gpt-6.1-terra', 'gpt-6-luna',
555
+ 'claude-fable-5-1', 'claude-fable-5', 'claude-opus-5-5', 'claude-opus-5',
556
+ 'claude-sonnet-5-5', 'claude-sonnet-5', 'glm-5.3']
557
+
558
+ /** filteredModels 把搜索、分组、类型、厂商筛选叠起来。 */
559
+ function filteredModels() {
560
+ const p = pricing()
561
+ if (!p) return []
562
+ let list = p.models.slice()
563
+ if (marketSort !== 'latest') {
564
+ // 默认按站点首屏顺序置顶,其余保持目录原序
565
+ list.sort((a, b) => {
566
+ const ia = SITE_FIRST.indexOf(a.name), ib = SITE_FIRST.indexOf(b.name)
567
+ if (ia !== -1 || ib !== -1) return (ia === -1 ? 999 : ia) - (ib === -1 ? 999 : ib)
568
+ return 0
569
+ })
466
570
  }
467
- const off = disabledGroups.size
468
- parts.push(el('p', { class: 'note', text: off
469
- ? '已关掉 ' + off + ' 个分组:它们的模型不再出现在 magpie 的模型列表里。'
470
- : '全部开着。点一下关掉一组,它的模型就不再出现在 magpie 的模型列表里。' }))
471
- return card(null, ...parts)
571
+ if (marketGroup) list = list.filter((m) => (m.enable_groups || []).includes(marketGroup))
572
+ if (marketKind !== 'all') list = list.filter((m) => marketKindOf(m) === marketKind)
573
+ if (marketVendors.size) list = list.filter((m) => marketVendors.has(String(m.vendor_id)))
574
+ const q = marketQuery.trim().toLowerCase()
575
+ if (q) list = list.filter((m) => [m.name, vendorOf(m.vendor_id), m.description, m.tags,
576
+ (m.enable_groups || []).join(' '), (m.supported_endpoint_types || []).join(' ')].join(' ').toLowerCase().includes(q))
577
+ if (marketSort === 'latest') list = list.slice().reverse()
578
+ return list
472
579
  }
473
580
 
474
- /** groupChip 是一枚分组开关:站点原文组名 + 倍率 + 模型数。 */
475
- function groupChip(g) {
476
- const name = String(g?.name ?? '')
477
- const on = !disabledGroups.has(name)
478
- const ratio = Number(g?.ratio) || 0
479
- const label = ratio > 0 ? name + ' ' + ratioText(ratio) + 'x' : name
480
- return el('button', {
481
- class: 'group-chip',
482
- 'aria-pressed': String(on),
483
- title: g?.models ? g.models + ' 个模型' : '',
484
- onclick: () => toggleGroup(name),
485
- }, label, el('span', { class: 'n', text: String(g?.models || 0) }))
581
+ /** refreshMarketList 只重画右侧列表,不整页 render(保住搜索框焦点)。 */
582
+ function refreshMarketList() {
583
+ const box = $('market-list')
584
+ const count = $('market-count')
585
+ if (!box) return
586
+ const list = filteredModels()
587
+ if (count) count.textContent = list.length + ' 个模型'
588
+ box.className = 'model-grid' + (marketLayout === 'list' ? ' as-list' : '')
589
+ box.replaceChildren(...(list.length ? list.map(modelCard) : [el('p', { class: 'note', text: '没有符合条件的模型。' })]))
590
+ }
591
+
592
+ /** marketCard 是广场整页:顶部工具条 + 左筛选 + 右卡片网格。 */
593
+ function marketCard() {
594
+ const p = pricing()
595
+ const groups = Object.keys(p?.groups || {}).sort((a, b) => (p.groups[a] - p.groups[b]) || a.localeCompare(b, 'zh'))
596
+ const vendors = (p?.vendors || []).slice().sort((a, b) => String(a.name).localeCompare(String(b.name), 'zh'))
597
+ const search = el('input', {
598
+ class: 'market-search', type: 'search', placeholder: '搜索模型名称、供应商、端点或标签...',
599
+ value: marketQuery,
600
+ oninput: (e) => { marketQuery = e.target.value; refreshMarketList() },
601
+ })
602
+ const seg = (items, cur, onPick) => el('div', { class: 'market-seg' },
603
+ items.map(([k, label]) => el('button', {
604
+ 'aria-pressed': String(cur === k), onclick: () => { onPick(k); render() },
605
+ }, label)))
606
+ const tools = el('div', { class: 'market-tools' },
607
+ seg([['standard', '标准'], ['topup', '充值']], marketMode, (k) => { marketMode = k }),
608
+ seg([['M', '/1M'], ['K', '/1K']], marketUnit, (k) => { marketUnit = k }),
609
+ el('button', { class: 'market-tool' + (marketSort === 'latest' ? ' on' : ''), onclick: () => { marketSort = marketSort === 'latest' ? 'default' : 'latest'; refreshMarketList() } }, '↑ 最新版本'),
610
+ el('div', { class: 'market-seg' },
611
+ el('button', { 'aria-pressed': String(marketLayout === 'grid'), title: '网格', onclick: () => { marketLayout = 'grid'; refreshMarketList() } }, '▦'),
612
+ el('button', { 'aria-pressed': String(marketLayout === 'list'), title: '列表', onclick: () => { marketLayout = 'list'; refreshMarketList() } }, '☰')))
613
+ const groupChips = el('div', { class: 'market-chips' },
614
+ el('button', {
615
+ class: 'market-chip' + (!marketGroup ? ' on' : ''), onclick: () => { marketGroup = ''; render() },
616
+ }, '所有分组'),
617
+ groups.map((g) => {
618
+ const ratio = Number(p.groups[g]) || 0
619
+ const on = !disabledGroups.has(g)
620
+ return el('div', { class: 'market-chip-wrap' + (marketGroup === g ? ' on' : '') },
621
+ el('button', {
622
+ class: 'market-chip',
623
+ title: '按这个分组筛选',
624
+ onclick: () => { marketGroup = marketGroup === g ? '' : g; render() },
625
+ }, groupBadge(g), ratio > 0 ? el('span', { class: 'ratio', text: 'x' + ratioText(ratio) }) : null),
626
+ el('button', {
627
+ class: 'chip-toggle' + (on ? ' on' : ''),
628
+ 'aria-pressed': String(on),
629
+ title: on ? '禁用这个分组(模型不再进 magpie)' : '启用这个分组',
630
+ onclick: () => toggleGroup(g),
631
+ }, on ? '●' : '○'))
632
+ }))
633
+ const kinds = el('div', { class: 'market-chips' },
634
+ MARKET_KINDS.map(([k, label]) => el('button', {
635
+ class: 'market-chip' + (marketKind === k ? ' on' : ''),
636
+ onclick: () => { marketKind = k; render() },
637
+ }, label)))
638
+ const vendorChips = el('div', { class: 'market-chips' },
639
+ vendors.map((v) => el('button', {
640
+ class: 'market-chip' + (marketVendors.has(String(v.id)) ? ' on' : ''),
641
+ onclick: () => {
642
+ const id = String(v.id)
643
+ if (marketVendors.has(id)) marketVendors.delete(id)
644
+ else marketVendors.add(id)
645
+ render()
646
+ },
647
+ }, v.name)))
648
+ const aside = el('aside', { class: 'market-aside' },
649
+ el('div', { class: 'ma-head' },
650
+ el('h3', { text: '筛选' }),
651
+ el('button', { class: 'link', onclick: () => { marketQuery = ''; marketGroup = ''; marketKind = 'all'; marketVendors.clear(); render() } }, '↺ 重置')),
652
+ el('p', { class: 'note', text: '按供应商、分组、类型和标签细化搜索模型。' }),
653
+ el('h4', { text: '分组' }), groupChips,
654
+ el('h4', { text: '类型' }), kinds,
655
+ el('h4', { text: '供应商' }), vendorChips)
656
+ const off = disabledGroups.size
657
+ const body = el('div', { class: 'market-body' },
658
+ aside,
659
+ el('div', { class: 'market-main' },
660
+ el('div', { class: 'market-count', id: 'market-count', text: (p?.models?.length || 0) + ' 个模型' }),
661
+ el('div', { class: 'model-grid', id: 'market-list' }),
662
+ off ? el('p', { class: 'note', text: '已禁用 ' + off + ' 个分组,点分组右侧的小圆点可启用。' })
663
+ : el('p', { class: 'note', text: '点分组名按它筛选;点右侧小圆点禁用/启用分组,被禁用的模型不再进 magpie。' })))
664
+ const wrap = el('section', { class: 'market' },
665
+ el('div', { class: 'market-top' }, search, tools),
666
+ body)
667
+ // 首帧填一次列表
668
+ queueMicrotask(refreshMarketList)
669
+ return wrap
486
670
  }
487
671
 
488
672
  /** 使用日志:这个窗口里每个模型花了多少、用了多少 token。 */
package/page/groups.js CHANGED
@@ -1,2 +1,2 @@
1
- // 由插件在拉取目录时覆盖写入;这里只是占位,免得页面加载时报 404。
2
- self.NEARTOKEN_GROUPS = self.NEARTOKEN_GROUPS || null
1
+ self.NEARTOKEN_GROUPS = [{"name":"[低价] 灵车 K3.1 Pro 专用","ratio":0.3,"models":1,"ref":"#49"},{"name":"[低价] 神秘折扣模型","ratio":0.12,"models":7,"ref":"#24"},{"name":"[低价] 视频分组","ratio":1.5,"models":3,"ref":"#31"},{"name":"[低价] 语音合成 TTS","ratio":0.3,"models":5,"ref":"#35"},{"name":"[低价] 语音转文字 ASR","ratio":1,"models":1,"ref":"#27"},{"name":"[低价] DeepSeek","ratio":0.4,"models":3,"ref":"#16"},{"name":"[低价] GPT 福利","ratio":0.2,"models":6,"ref":"#56"},{"name":"[低价] Grok","ratio":0.1,"models":13,"ref":"#37"},{"name":"[低价] Seedance","ratio":1,"models":2,"ref":"#19"},{"name":"[低价][备用] GPT Pro","ratio":0.3,"models":8,"ref":"#13"},{"name":"[低价][促销] GPT Image","ratio":0.5,"models":2,"ref":"#39"},{"name":"[低价][反重力] Gemini","ratio":0.5,"models":18,"ref":"#5"},{"name":"[低价][满血] 国模","ratio":0.6,"models":9,"ref":"#6"},{"name":"[低价][满血] Claude 特惠","ratio":1.1,"models":6,"ref":"#22"},{"name":"[低价][满血] Claude 原生","ratio":1.5,"models":6,"ref":"#61"},{"name":"[低价][满血] DeepSeek 1017","ratio":0.5,"models":2,"ref":"#38"},{"name":"[低价][满血] GPT Pro 2","ratio":0.26,"models":8,"ref":"#14"},{"name":"[低价][满血][自有] GLM 官方","ratio":0.25,"models":2,"ref":"#17"},{"name":"[低价][生图] 生图特惠","ratio":0.2,"models":14,"ref":"#9"},{"name":"[低价][Kiro] 高智企业 Claude","ratio":1,"models":6,"ref":"#42"},{"name":"[官key] GPT","ratio":0.9,"models":5,"ref":"#28"},{"name":"[满血] Argon 专用","ratio":1,"models":1,"ref":"#47"},{"name":"[满血] CC 不降智精选","ratio":1.8,"models":10,"ref":"#7"},{"name":"[满血] GPT 不降智精选","ratio":0.35,"models":8,"ref":"#2"},{"name":"[满血] GPT Pro 500 高速","ratio":0.5,"models":2,"ref":"#57"},{"name":"[满血] Kimi K3.1 Pro 专用","ratio":0.6,"models":1,"ref":"#48"},{"name":"[满血] Suno","ratio":1,"models":5,"ref":"#67"},{"name":"[满血][官Key] DeepSeek","ratio":0.8,"models":2,"ref":"#15"},{"name":"[满血][官Key] Gemini","ratio":2,"models":6,"ref":"#8"},{"name":"[生图] Gemini","ratio":1,"models":7,"ref":"#29"},{"name":"[生图] GPT Image","ratio":1,"models":2,"ref":"#4"},{"name":"[AIS] Gemini 向量模型","ratio":1,"models":3,"ref":"#34"}]
2
+ self.NEARTOKEN_GROUPS_AT = 1793773919667
package/page/icon.svg CHANGED
@@ -1,28 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" width="256" height="256">
2
- <defs>
3
- <radialGradient id="body" cx="38%" cy="30%" r="80%">
4
- <stop offset="0" stop-color="#FFEFB8"/>
5
- <stop offset="55%" stop-color="#FFD166"/>
6
- <stop offset="100%" stop-color="#FFA63A"/>
7
- </radialGradient>
8
- <linearGradient id="leaf" x1="0" y1="0" x2="1" y2="1">
9
- <stop offset="0" stop-color="#A9EBC6"/>
10
- <stop offset="100%" stop-color="#39A377"/>
11
- </linearGradient>
12
- </defs>
13
- <!-- 叶与梗 -->
14
- <path d="M128 66c-4-19 6-31 26-35 3 19-7 31-26 35z" fill="url(#leaf)" stroke="#2B7F5C" stroke-width="7" stroke-linejoin="round"/>
15
- <path d="M125 74c2-9 2-16 1-23" stroke="#2B7F5C" stroke-width="8" stroke-linecap="round" fill="none"/>
16
- <!-- 果身 -->
17
- <circle cx="128" cy="152" r="82" fill="url(#body)" stroke="#FFF8E9" stroke-width="10"/>
18
- <!-- 脸 -->
19
- <ellipse cx="104" cy="150" rx="7.5" ry="9" fill="#4A3B2A"/>
20
- <ellipse cx="152" cy="150" rx="7.5" ry="9" fill="#4A3B2A"/>
21
- <circle cx="101.5" cy="147" r="2.4" fill="#FFFDF4"/>
22
- <circle cx="149.5" cy="147" r="2.4" fill="#FFFDF4"/>
23
- <path d="M118 170c6 7 14 7 20 0" stroke="#4A3B2A" stroke-width="7" stroke-linecap="round" fill="none"/>
24
- <ellipse cx="80" cy="168" rx="13" ry="8" fill="#FF8E7A" opacity="0.55"/>
25
- <ellipse cx="176" cy="168" rx="13" ry="8" fill="#FF8E7A" opacity="0.55"/>
26
- <!-- 高光 -->
27
- <ellipse cx="97" cy="118" rx="24" ry="15" fill="#FFFDF3" opacity="0.5" transform="rotate(-28 97 118)"/>
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" color="#a2acbb" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round">
2
+ <!-- 空心五角星:外五点、内五点交替,只描边不填充 -->
3
+ <path d="M12 3 L14.12 9.09 L20.56 9.22 L15.42 13.11 L17.29 19.28 L12 15.6 L6.71 19.28 L8.58 13.11 L3.44 9.22 L9.88 9.09 Z"/>
28
4
  </svg>
package/page/index.html CHANGED
@@ -5,6 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>NearToken</title>
7
7
  <link rel="stylesheet" href="style.css">
8
+ <link rel="stylesheet" href="market.css">
8
9
  </head>
9
10
  <body>
10
11
  <div class="wrap">
@@ -28,6 +29,7 @@
28
29
  </div>
29
30
  <script src="_magpie/bridge.js"></script>
30
31
  <script src="version.js"></script>
32
+ <script src="pricing.js"></script>
31
33
  <script src="app.js"></script>
32
34
  </body>
33
35
  </html>
package/page/latest.js CHANGED
@@ -1,2 +1,2 @@
1
- // 由插件在拉取目录时覆盖写入;这里只是占位。
2
- self.NEARTOKEN_LATEST = self.NEARTOKEN_LATEST || ''
1
+ self.NEARTOKEN_LATEST = "0.2.5"
2
+ self.NEARTOKEN_LATEST_AT = 1793773917619
@@ -0,0 +1,137 @@
1
+
2
+ /* ---------- 模型广场(一比一复刻 neartoken.cc/pricing) ---------- */
3
+
4
+ .market { display: block; }
5
+
6
+ .market-top {
7
+ display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
8
+ padding: 10px 12px; margin: 14px 0 10px;
9
+ border: 1px solid var(--nt-line); border-radius: 12px; background: rgba(255,255,255,.02);
10
+ }
11
+
12
+ .market-search {
13
+ flex: 1 1 220px; min-width: 160px; height: 30px; padding: 0 10px;
14
+ border: 1px solid var(--nt-line); border-radius: 9px;
15
+ background: rgba(0,0,0,.22); color: var(--nt-ink); font-size: 12px;
16
+ }
17
+ .market-search::placeholder { color: var(--nt-faint); }
18
+ .market-search:focus { outline: 1px solid var(--nt-accent); }
19
+
20
+ .market-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
21
+
22
+ .market-seg { display: inline-flex; border: 1px solid var(--nt-line); border-radius: 9px; overflow: hidden; }
23
+ .market-seg button {
24
+ height: 28px; padding: 0 9px; border: 0; background: transparent;
25
+ color: var(--nt-muted); font-size: 11.5px;
26
+ }
27
+ .market-seg button + button { border-left: 1px solid var(--nt-line); }
28
+ .market-seg button[aria-pressed="true"] { color: var(--nt-ink); background: var(--nt-accent-soft); }
29
+
30
+ .market-tool {
31
+ height: 28px; padding: 0 10px; border: 1px solid var(--nt-line); border-radius: 9px;
32
+ background: transparent; color: var(--nt-muted); font-size: 11.5px;
33
+ }
34
+ .market-tool.on { color: var(--nt-ink); border-color: var(--nt-accent); }
35
+
36
+ .market-body { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 14px; align-items: start; }
37
+
38
+ .market-aside {
39
+ position: sticky; top: 10px; max-height: calc(100vh - 130px); overflow-y: auto;
40
+ padding: 12px; border: 1px solid var(--nt-line); border-radius: 12px;
41
+ background: rgba(255,255,255,.02);
42
+ }
43
+ .market-aside h3 { margin: 0; font-size: 13px; }
44
+ .market-aside h4 { margin: 14px 0 7px; font-size: 11px; color: var(--nt-muted); font-weight: 600; }
45
+ .market-aside .note { font-size: 10.5px; line-height: 1.5; margin: 6px 0 0; }
46
+ .ma-head { display: flex; align-items: baseline; justify-content: space-between; }
47
+ .ma-head .link { border: 0; background: transparent; padding: 0; }
48
+
49
+ .market-chips { display: flex; flex-wrap: wrap; gap: 5px; }
50
+
51
+ .market-chip-wrap { position: relative; display: inline-flex; align-items: center; }
52
+ .market-chip {
53
+ display: inline-flex; align-items: center; gap: 5px;
54
+ min-height: 25px; padding: 0 8px; border: 1px solid var(--nt-line); border-radius: 999px;
55
+ background: transparent; color: var(--nt-muted); font-size: 10.5px; white-space: nowrap;
56
+ }
57
+ .market-chip.on, .market-chip-wrap.on > .market-chip {
58
+ color: var(--nt-ink); border-color: var(--nt-accent); background: var(--nt-accent-soft);
59
+ }
60
+ .market-chip .ratio { font-family: var(--nt-code); color: var(--nt-faint); font-size: 10px; }
61
+ .market-chip .gb { display: inline-flex; align-items: center; gap: 3px; }
62
+ .gb-tag { padding: 1px 4px; border-radius: 4px; font-size: 9.5px; color: #fff; }
63
+ .gb-tag.green { background: #2f8f68; }
64
+ .gb-tag.red { background: #b0475c; }
65
+ .gb-tag.pink { background: #8b4f9e; }
66
+ .gb-tag.blue { background: #3f6fa8; }
67
+ .gb-tag.plain { background: #5a6270; }
68
+ .gb-rest { color: var(--nt-ink); }
69
+
70
+ .chip-toggle {
71
+ width: 16px; height: 24px; padding: 0; border: 0; background: transparent;
72
+ color: var(--nt-faint); font-size: 10px; line-height: 1;
73
+ }
74
+ .chip-toggle.on { color: #4cc38a; }
75
+
76
+ .market-main { min-width: 0; }
77
+ .market-count { font-size: 13px; font-weight: 600; margin: 2px 0 10px; }
78
+ .market-main > .note { margin-top: 10px; }
79
+
80
+ .model-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(238px, 1fr)); gap: 10px; }
81
+ .model-grid.as-list { grid-template-columns: 1fr; }
82
+
83
+ .mc {
84
+ display: flex; flex-direction: column; min-width: 0;
85
+ padding: 12px; border: 1px solid var(--nt-line); border-radius: 12px;
86
+ background: rgba(255,255,255,.02);
87
+ }
88
+ .mc-image { border-color: rgba(139,79,158,.5); }
89
+ .mc-video { border-color: rgba(214,140,60,.5); }
90
+ .mc-audio { border-color: rgba(63,111,168,.5); }
91
+ .mc-embedding { border-color: rgba(47,143,104,.5); }
92
+
93
+ .mc-head { display: flex; align-items: center; gap: 8px; }
94
+ .mc-vicon {
95
+ flex: none; width: 26px; height: 26px; border-radius: 8px;
96
+ display: inline-flex; align-items: center; justify-content: center;
97
+ background: var(--nt-accent-soft); color: var(--nt-accent); font-size: 12px; font-weight: 700;
98
+ }
99
+ .mc-name { font-size: 12.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
100
+ .mc-vendor { font-size: 10px; color: var(--nt-muted); }
101
+ .mc-copy { border: 0; background: transparent; color: var(--nt-faint); font-size: 13px; padding: 2px 4px; }
102
+ .mc-copy:hover { color: var(--nt-accent); }
103
+
104
+ .mc-desc {
105
+ margin: 9px 0 8px; font-size: 10.5px; line-height: 1.55; color: var(--nt-muted);
106
+ min-height: 32px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
107
+ }
108
+ .mc-billing { font-size: 10.5px; font-weight: 600; margin-bottom: 7px; }
109
+ .mc-billing.dyn { color: #e0a44a; }
110
+ .mc-billing.flat { color: #5aa9e6; }
111
+
112
+ .mc-prices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-bottom: 9px; }
113
+ .mc-prices.one { grid-template-columns: 1fr; }
114
+ .mc-prices > div { display: flex; flex-direction: column; gap: 2px; }
115
+ .mc-prices span { font-size: 10px; color: var(--nt-muted); }
116
+ .mc-prices b { font-family: var(--nt-code); font-size: 11.5px; font-weight: 600; color: var(--nt-ink); }
117
+
118
+ .mc-line { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 5px 0; font-size: 10px; }
119
+ .mc-line .k, .mc-stats .k { color: var(--nt-muted); margin-right: 4px; }
120
+ .mc-line .v, .mc-stats .v { color: var(--nt-ink); font-family: var(--nt-code); font-size: 10px; }
121
+ .mc-more { color: var(--nt-faint); font-family: var(--nt-code); }
122
+
123
+ .mc-stats {
124
+ display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
125
+ margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--nt-line); font-size: 10px;
126
+ }
127
+ .mc-stats > span { display: inline-flex; align-items: baseline; gap: 3px; }
128
+ .mc-bar { display: inline-flex; gap: 1px; height: 8px; align-items: center; }
129
+ .mc-bar i { width: 2px; height: 8px; background: var(--nt-line); border-radius: 1px; }
130
+ .mc-bar i.ok { background: #3fbf85; }
131
+ .mc-bar i.bad { background: #d08a3c; }
132
+ .mc-foot { margin-top: 8px; text-align: right; }
133
+
134
+ @media (max-width: 620px) {
135
+ .market-body { grid-template-columns: 1fr; }
136
+ .market-aside { position: static; max-height: none; }
137
+ }
@@ -0,0 +1,2 @@
1
+ // 由 .work/build-snapshot.mjs 从站点 /api/pricing 与 /pricing 生成;插件运行时覆盖
2
+ self.NEARTOKEN_PRICING = {"at":1793776040751,"source":"https://neartoken.cc/api/pricing + /pricing","version":"a42d372ccf0b5dd13ecf71203521f9d2","models":[{"name":"omni","description":"统一视频生成模型,可根据模式、时长和分辨率自动选择合适的处理路径。","tags":"video,unified","vendor_id":3,"enable_groups":["[低价] 视频分组"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.066666666667,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"seconds\") * 0.066666666667)"},{"name":"gemini-3.6-flash-c","description":"【按次计费】","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.096,"completion_ratio":0,"quota_type":1,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"gpt-6-luna","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[满血] GPT 不降智精选","[低价] GPT 福利","[官key] GPT"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":2,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 0.1 + cr * 0.01 + cc * 0.125 + c * 0.5) : tier(\"272k_plus\", p * 0.2 + cr * 0.02 + cc * 0.25 + c * 0.75)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GPT-6 Luna 是 GPT-6 家族中最轻量的一员:快速、经济,适合规模化。","status":98.82,"latency":"26.77s","throughput":"54.9t/s"},{"name":"sd2.0","description":"sd2.0 标准档视频生成。seedance 分组按秒计费:480p ¥0.8/秒、720p ¥1/秒;其余分辨率暂未开放。通过 resolution 选择分辨率,费用=对应每秒单价×duration 秒;默认 480p、5 秒,n=1。不支持的档位返回参数错误,不自动降级。支持文本生成,参考素材用 images/videos/audios 数组传入;可通过 /v1/images/upload 上传素材(单文件≤20 MiB)。POST /v1/videos 或 /v1/video/generations,GET 同路径/{task_id} 查询。","tags":"video,per-second","vendor_id":11,"enable_groups":["[低价] Seedance"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.55,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"u(\"resolution\") == \"480P\" && u(\"size\") == \"720x1280\" ? tier(\"480P·720x1280\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"480P\" && u(\"size\") == \"1280x720\" ? tier(\"480P·1280x720\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"480P\" && u(\"size\") == \"1792x1024\" ? tier(\"480P·1792x1024\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"480P\" && u(\"size\") == \"1024x1792\" ? tier(\"480P·1024x1792\", u(\"seconds\") * 0.8) : u(\"resolution\") == \"720P\" && u(\"size\") == \"720x1280\" ? tier(\"720P·720x1280\", u(\"seconds\") * 1) : u(\"resolution\") == \"720P\" && u(\"size\") == \"1280x720\" ? tier(\"720P·1280x720\", u(\"seconds\") * 1) : u(\"resolution\") == \"720P\" && u(\"size\") == \"1792x1024\" ? tier(\"720P·1792x1024\", u(\"seconds\") * 1) : u(\"resolution\") == \"720P\" && u(\"size\") == \"1024x1792\" ? tier(\"720P·1024x1792\", u(\"seconds\") * 1) : u(\"resolution\") == \"768P\" && u(\"size\") == \"720x1280\" ? tier(\"768P·720x1280\", u(\"seconds\") * 999) : u(\"resolution\") == \"768P\" && u(\"size\") == \"1280x720\" ? tier(\"768P·1280x720\", u(\"seconds\") * 999) : u(\"resolution\") == \"768P\" && u(\"size\") == \"1792x1024\" ? tier(\"768P·1792x1024\", u(\"seconds\") * 999) : u(\"resolution\") == \"768P\" && u(\"size\") == \"1024x1792\" ? tier(\"768P·1024x1792\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"720x1280\" ? tier(\"1080P·720x1280\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"1280x720\" ? tier(\"1080P·1280x720\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"1792x1024\" ? tier(\"1080P·1792x1024\", u(\"seconds\") * 999) : u(\"resolution\") == \"1080P\" && u(\"size\") == \"1024x1792\" ? tier(\"1080P·1024x1792\", u(\"seconds\") * 999) : u(\"resolution\") == \"2K\" && u(\"size\") == \"720x1280\" ? tier(\"2K·720x1280\", u(\"seconds\") * 999) : u(\"resolution\") == \"2K\" && u(\"size\") == \"1280x720\" ? tier(\"2K·1280x720\", u(\"seconds\") * 999) : u(\"resolution\") == \"2K\" && u(\"size\") == \"1792x1024\" ? tier(\"2K·1792x1024\", u(\"seconds\") * 999) : tier(\"2K·1024x1792\", u(\"seconds\") * 999)"},{"name":"kimi-k3.1-pro","description":"Kimi K3.1 Pro 是 Moonshot 对标 Opus 5.5 的强大模型","icon":"Kimi","vendor_id":7,"enable_groups":["[低价] 灵车 K3.1 Pro 专用","[满血] Kimi K3.1 Pro 专用"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", p * 13 + c * 68 + cr * 1.3 + cc * 13 + cc1h * 26)","context_window":1000000,"max_tokens":65535,"input_modalities":["text","image"],"reasoning_levels":["low","high","max"]},{"name":"gemini-3.1-flash-lite","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.25 + cr * 0.025 + ai * 0.5 + c * 1.5)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"suno_stems_by_url","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":1.5435,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.8-flash-low","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"claude-fable-5-1","vendor_id":2,"enable_groups":["[低价][满血] Claude 特惠","[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":5,"model_price":0,"completion_ratio":5,"cache_ratio":0.025,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 10 + cr * 0.25 + cc * 12.5 + cc1h * 20 + c * 50)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"],"description":"Anthropic 旗舰 Claude 模型,1M Token 上下文,面向最艰难的长时间编码与知识工作。"},{"name":"gemini-3.8-flash","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.75 + cr * 0.075 + ai * 0.75 + c * 3.75)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"codex-auto-review","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[满血] GPT 不降智精选"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1.25,"model_price":0,"completion_ratio":6,"cache_ratio":0.2,"create_cache_ratio":0.2,"quota_type":0,"context_window":1050000,"input_modalities":["text"]},{"name":"gemini-3-flash","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.25,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.7-flash-c","description":"【按次计费】","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.096,"completion_ratio":0,"quota_type":1,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"flux-2-pro","description":"FLUX 2 Pro 图像生成模型,按生成图片张数计费。","icon":"Flux","vendor_id":15,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"sd2.5","description":"sd2.5 标准档视频生成。seedance 分组按秒计费:720p ¥1.2/秒;其他分辨率档位暂未开放。通过 resolution 选择分辨率,费用=对应每秒单价×duration 秒;默认 720p、5 秒,n=1。不支持的档位返回参数错误,不自动降级。支持文本生成,参考素材用 images/videos/audios 数组传入;可通过 /v1/images/upload 上传素材(单文件≤20 MiB)。POST /v1/videos 或 /v1/video/generations,GET 同路径/{task_id} 查询。","tags":"video,per-second","vendor_id":11,"enable_groups":["[低价] Seedance"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.65,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"seconds\") * 1.2)"},{"name":"claude-sonnet-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.2 + cc * 2.5 + cc1h * 4 + c * 10)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"],"description":"Claude 的均衡档位,适合边界清晰的日常工作:开发功能、修 bug、产出精修内容。"},{"name":"grok-4.5量","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"create_cache_ratio":1,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"minimax-h3","description":"H3 视频生成,视频分组。resolution=720p:¥0.07/秒,费用为单价×duration;resolution=2K:¥2.50/条,4~15 秒同价。未传 resolution 默认 2K,未传 duration 默认 4 秒;专属价格以账户实际价格为准。支持 16:9、9:16,n=1;images 最多9张,audios最多3段且需同时传图片,不支持参考视频。使用 JSON 提交 POST /v1/videos 或 /v1/video/generations,GET 同路径/{task_id} 查询。非法分辨率返回参数错误,不自动降级。","tags":"video,text-to-video,image-to-video,resolution-billing","icon":"Minimax","vendor_id":9,"enable_groups":["[低价] 视频分组"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":1.6666666666666667,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"u(\"resolution\") == \"768P\" ? tier(\"768P\", u(\"seconds\") * 0.046666666667) : tier(\"2K\", 1.666666666667)"},{"name":"suno_sound","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":0.308,"completion_ratio":0,"quota_type":1},{"name":"nano-banana-2","description":"Nano Banana 2 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[低价][生图] 生图特惠","[生图] Gemini"],"supported_endpoint_types":["image-generation","openai","openai-response","gemini"],"model_ratio":0,"model_price":0.1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"gpt-6-sol","vendor_id":1,"enable_groups":["[低价] GPT 福利","[满血] GPT 不降智精选","[官key] GPT","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":2,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 2 + cr * 0.2 + cc * 2.5 + c * 10) : tier(\"272k_plus\", p * 4 + cr * 0.4 + cc * 5 + c * 15)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GPT-6 Sol 把 Astra 的能力带到更快、更便宜的模型上,适合规模化使用。"},{"name":"claude-opus-5-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 4 + cr * 0.2 + cc * 5 + cc1h * 8 + c * 20)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"旗舰级表现的 Claude,价格更低,面向智能体工程与长时间编码会话。","status":97.63,"latency":"26.47s","throughput":"72.9t/s"},{"name":"grok-4.6-low","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"gpt-image-2.5-sunburst","description":"GPT Image 2.5 Sunburst 图像生成模型,按生成图片张数计费。","icon":"OpenAI","vendor_id":1,"enable_groups":["[生图] GPT Image","[低价][促销] GPT Image"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":0.15,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.15)) * image_count"},{"name":"claude-opus-4-7","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"]},{"name":"z-image-turbo","description":"Z-Image Turbo 高速图像生成模型,按生成图片张数计费。","icon":"Qwen.Color","vendor_id":8,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"image_count\") * 0.2)"},{"name":"gemini-3.1-flash-tts-preview","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.5,"model_price":0,"completion_ratio":20,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1 + c * 20)"},{"name":"gemini-3.5-flash","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1.5 + cr * 0.15 + ai * 1.5 + c * 9)","context_window":200000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-fast","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"create_cache_ratio":1,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"gemini-3-pro-image","description":"Gemini 3 Pro Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.07,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + c * 120)"},{"name":"gemini-3.1-flash-image","description":"Gemini 3.1 Flash Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.07,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.5 + c * 60)"},{"name":"gemini-3.1-flash-lite-image","description":"Gemini 3.1 Flash Lite Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.07,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.25 + c * 30)"},{"name":"gpt-5.6-terra","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[低价] GPT 福利","[满血] GPT 不降智精选"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":8,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 2 + cr * 0.2 + cc * 2.5 + c * 12) : tier(\"272k_plus\", p * 4 + cr * 0.4 + cc * 5 + c * 18)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-embedding-2","vendor_id":3,"enable_groups":["[AIS] Gemini 向量模型"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.1,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.2 + ai * 6.5 + c * 0)"},{"name":"gemini-3.5-flash-lite","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.3 + cr * 0.03 + c * 2.5)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.7","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.5 + c * 6) : tier(\"200k_plus\", p * 4 + cr * 1 + c * 12)","context_window":500000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gpt-6.1-terra","vendor_id":1,"enable_groups":["[满血] GPT 不降智精选","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"context_window":922000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"暂无描述。","status":76.12,"latency":"14.22s","throughput":"98.3t/s"},{"name":"glm-5.3","vendor_id":6,"enable_groups":["[低价][满血][自有] GLM 官方","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":4,"model_price":0,"completion_ratio":3.5,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 8 + cr * 2 + cc * 0 + c * 28)","context_window":1000000,"max_tokens":131072,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GLM-5.3,Z.ai 的智能体编码旗舰,1M 上下文并支持结构化工具调用。","status":100,"latency":"2.97s","throughput":"52.6t/s"},{"name":"suno_lyrics","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":0.175,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.1-pro","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":1,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.8-flash-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.08,"completion_ratio":0,"quota_type":1},{"name":"gpt-5.6-sol","vendor_id":1,"enable_groups":["[低价] GPT 福利","[满血] GPT 不降智精选","[官key] GPT","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":8,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 4 + cr * 0.4 + cc * 5 + c * 20) : tier(\"272k_plus\", p * 8 + cr * 0.8 + cc * 10 + c * 30)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":272000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"hy3","vendor_id":10,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.5,"model_price":0,"completion_ratio":4,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0 + cr * 0 + cc * 0 + c * 0)","context_window":256000,"max_tokens":128000,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"nano-banana-2.1","description":"Nano Banana 2.1 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["image-generation","gemini","openai"],"model_ratio":0,"model_price":0.12,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.12)) * image_count"},{"name":"minimax-m3","vendor_id":9,"enable_groups":["[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1.09,"model_price":0,"completion_ratio":4,"cache_ratio":0.2,"create_cache_ratio":1,"quota_type":0,"context_window":512000,"max_tokens":128000,"input_modalities":["text","image"]},{"name":"claude-sonnet-4-6","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 3 + cr * 0.3 + cc * 3.75 + cc1h * 6 + c * 15)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["max"]},{"name":"gemini-2.5-pro","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.625,"model_price":0,"completion_ratio":8,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 1.25 + cr * 0.125 + c * 10) : tier(\"200k_plus\", p * 2.5 + cr * 0.25 + c * 15)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"]},{"name":"gemini-3.8-flash-high","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"claude-sonnet-4.6","vendor_id":2,"enable_groups":["[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"context_window":1000000,"input_modalities":["text","image"],"reasoning_levels":["minimal","max"]},{"name":"gemini-2.5-flash-preview-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.25,"model_price":0,"completion_ratio":20,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.5 + c * 10)"},{"name":"seedream-5.0-lite","description":"Seedream 5.0 Lite 图像生成模型,按生成图片张数计费。","icon":"ByteDance","vendor_id":14,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(1)) * image_count"},{"name":"qwen-image","description":"Qwen Image 图像生成模型,按生成图片张数计费。","icon":"Qwen.Color","vendor_id":8,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"image_count\") * 0.25)"},{"name":"nano-banana-pro","description":"Nano Banana Pro 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[低价][生图] 生图特惠","[生图] Gemini"],"supported_endpoint_types":["image-generation","openai","openai-response","gemini"],"model_ratio":0,"model_price":0.05,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.05)) * image_count"},{"name":"z-image","description":"Z-Image 图像生成模型,按生成图片张数计费。","icon":"Qwen.Color","vendor_id":8,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.3)) * image_count"},{"name":"glm-5.2","vendor_id":6,"enable_groups":["[低价] 神秘折扣模型","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":4,"model_price":0,"completion_ratio":3.5,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1.4 + cr * 0.26 + cc * 0 + c * 4.4)","context_window":1000000,"max_tokens":131072,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.5-transcribe","vendor_id":3,"enable_groups":["[低价] 语音转文字 ASR"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0,"model_price":0.005,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.8-flash-lite-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.08,"completion_ratio":0,"quota_type":1},{"name":"claude-haiku-4.5","vendor_id":2,"enable_groups":["[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":0.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"context_window":200000,"input_modalities":["text","image"],"reasoning_levels":["low","medium","high","max"]},{"name":"gemini-3.1-flash-lite-preview","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.25 + cr * 0.025 + ai * 0.5 + c * 1.5)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-low","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"grok-4.6","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.5 + c * 6) : tier(\"200k_plus\", p * 4 + cr * 1 + c * 12)","context_window":500000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"claude-opus-4-8","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"]},{"name":"suno_music","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":1.5435,"completion_ratio":0,"quota_type":1},{"name":"gemini-3.8-flash-c","description":"【按次计费】","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0,"model_price":0.096,"completion_ratio":0,"quota_type":1,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"ideogram-v3","description":"Ideogram V3 图像生成模型,按生成图片张数计费。","icon":"Ideogram","vendor_id":17,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"gpt-image-2.5-flare","description":"GPT Image 2.5 Flare 图像生成模型,按生成图片张数计费。","icon":"OpenAI","vendor_id":1,"enable_groups":["[低价][生图] 生图特惠","[低价][促销] GPT Image","[生图] GPT Image"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":0.12,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.2)) * image_count"},{"name":"gemini-4-argon","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[满血] Argon 专用"],"supported_endpoint_types":["gemini","openai"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.1 + ai * 2 + c * 10)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["low","medium","high"]},{"name":"gemini-2.5-pro-preview-tts","vendor_id":3,"enable_groups":["[低价] 语音合成 TTS"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.5,"model_price":0,"completion_ratio":20,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 1 + c * 20)"},{"name":"mimo-v2.6-flash","vendor_id":12,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.5,"model_price":0,"completion_ratio":2,"cache_ratio":0.02,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.14 + cr * 0.0028 + c * 0.28)","context_window":1048576,"max_tokens":131072,"input_modalities":["text","image"]},{"name":"qwen3.8-27b","vendor_id":8,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1.5,"model_price":0,"completion_ratio":4,"cache_ratio":0.2,"quota_type":0,"context_window":1000000,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"claude-opus-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选","[低价][Kiro] 高智企业 Claude","[低价][满血] Claude 特惠"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","xhigh","max"],"description":"Claude Opus 5 旗舰,effort 参数可在思考深度与延迟、成本之间取舍。","status":0,"latency":"1.23s"},{"name":"claude-sonnet-5-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.1 + cc * 2.5 + cc1h * 4 + c * 10)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"Claude 的均衡档位,适合边界清晰的日常工作:开发功能、修 bug、产出精修内容。"},{"name":"seedream-4","description":"Seedream 4 图像生成模型,按生成图片张数计费。","icon":"ByteDance","vendor_id":14,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(1)) * image_count"},{"name":"claude-fable-5","vendor_id":2,"enable_groups":["[低价][满血] Claude 原生","[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 10 + cr * 1 + cc * 12.5 + cc1h * 20 + c * 50)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["xhigh","max"],"description":"Anthropic 旗舰 Claude 模型,1M Token 上下文,面向最艰难的长时间编码与知识工作。"},{"name":"gemini-3.6-flash","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.75 + cr * 0.075 + ai * 0.75 + c * 3.75)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.7-flash","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.75 + cr * 0.075 + ai * 0.75 + c * 3.75)","context_window":1000000,"max_tokens":64000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.6-medium","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"glm-5.3-flash","vendor_id":6,"enable_groups":["[低价][满血][自有] GLM 官方","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.4,"model_price":0,"completion_ratio":3.5,"cache_ratio":0.2875,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.8 + cr * 0.23 + cc * 0 + c * 2.8)","context_window":1000000,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"claude-opus-4-6","vendor_id":2,"enable_groups":["[满血] CC 不降智精选"],"supported_endpoint_types":["anthropic","openai"],"model_ratio":2.5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 5 + cr * 0.5 + cc * 6.25 + cc1h * 10 + c * 25)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["max"]},{"name":"gemini-embedding-001","vendor_id":3,"enable_groups":["[AIS] Gemini 向量模型"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.075,"model_price":0,"completion_ratio":4,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.15 + c * 0)"},{"name":"grok-4.6-xhigh","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"gemini-2.5-flash-image","description":"Gemini 2.5 Flash Image 图像生成模型,按 token 计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[生图] Gemini"],"supported_endpoint_types":["gemini","openai","image-generation"],"model_ratio":0,"model_price":0.04,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.3 + cr * 0.075 + c * 30)"},{"name":"deepseek-v4-pro","vendor_id":4,"enable_groups":["[满血][官Key] DeepSeek","[低价] DeepSeek","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"weekday(\"UTC\") >= 1 && weekday(\"UTC\") <= 5 && ((hour(\"UTC\") >= 1 && hour(\"UTC\") < 4) || (hour(\"UTC\") >= 6 && hour(\"UTC\") < 10)) ? tier(\"peak\", p * 1.32 + cr * 0.044 + c * 3.96) : tier(\"off_peak\", p * 0.66 + cr * 0.022 + c * 1.98)","context_window":1000000,"max_tokens":384000,"input_modalities":["text"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.8-flash-medium","vendor_id":3,"enable_groups":["[低价][反重力] Gemini"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.75,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"context_window":1000000,"max_tokens":64000,"input_modalities":["text"]},{"name":"gemini-embedding-2-preview","vendor_id":3,"enable_groups":["[AIS] Gemini 向量模型"],"supported_endpoint_types":["gemini","openai"],"model_ratio":0.1,"model_price":0,"completion_ratio":4,"quota_type":0},{"name":"gpt-6-astra","vendor_id":1,"enable_groups":["[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[低价] GPT 福利","[满血] GPT 不降智精选","[满血] GPT Pro 500 高速","[官key] GPT"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":5,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 10 + cr * 1 + cc * 12.5 + c * 50) : tier(\"272k_plus\", p * 20 + cr * 2 + cc * 25 + c * 75)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"OpenAI 前沿 GPT-6 模型,擅长计算机操作、编码、科学、网络安全与长上下文检索。","status":99.05,"latency":"26.64s","throughput":"52.3t/s"},{"name":"jev-1.13","vendor_id":13,"enable_groups":["[低价] 神秘折扣模型"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.21,"model_price":0,"completion_ratio":1,"cache_ratio":1,"quota_type":0,"context_window":64000,"input_modalities":["text"]},{"name":"grok-4.5","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"create_cache_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.3 + c * 6) : tier(\"200k_plus\", p * 4 + cr * 0.6 + c * 12)","context_window":500000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-medium","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"veo-3.1","description":"高质量视频生成模型,支持文生视频、图生视频和参考素材输入。","tags":"video,unified","vendor_id":3,"enable_groups":["[低价] 视频分组"],"supported_endpoint_types":["openai-video"],"model_ratio":0,"model_price":0.066666666667,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"base\", u(\"seconds\") * 0.066666666667)"},{"name":"qwen3.8-max","vendor_id":8,"enable_groups":["[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 2 + cr * 0.25 + cc * 2.5 + c * 6)","context_window":1000000,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"nano-banana-2-lite","description":"Nano Banana 2 Lite 图像生成模型,按生成图片张数计费。","icon":"Gemini.Color","vendor_id":3,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"kimi-k3","vendor_id":7,"enable_groups":["[低价] 神秘折扣模型","[低价][满血] 国模"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":10,"model_price":0,"completion_ratio":5,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 3 + cr * 0.3 + cc * 3 + c * 15)","context_window":1048576,"max_tokens":131072,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-4.5-high","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"grok-4.6-high","vendor_id":5,"enable_groups":["[低价] Grok"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":3,"cache_ratio":0.25,"quota_type":0,"context_window":500000,"max_tokens":128000,"input_modalities":["text"]},{"name":"seedream-4-5","description":"Seedream 4.5 图像生成模型,按生成图片张数计费。","icon":"ByteDance","vendor_id":14,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":1,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(1)) * image_count"},{"name":"gpt-6.1-sol","vendor_id":1,"enable_groups":["[官key] GPT","[低价][备用] GPT Pro","[低价][满血] GPT Pro 2","[低价] GPT 福利","[满血] GPT 不降智精选","[满血] GPT Pro 500 高速"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":5,"cache_ratio":0.05,"create_cache_ratio":1.25,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"(len <= 272000 ? tier(\"0_272k\", p * 2 + cr * 0.1 + cc * 2.5 + c * 10) : tier(\"272k_plus\", p * 4 + cr * 0.2 + cc * 5 + c * 15)) * (param(\"service_tier\") == \"fast\" ? 2 : 1) * (param(\"service_tier\") == \"ultrafast\" ? 8 : 1)","context_window":1000000,"max_tokens":128000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"],"description":"GPT-6.1 Sol 在 Sol 基础上升级智能体编码与计算机操作,接近 Astra 水平。","status":97.42,"latency":"22.62s","throughput":"51.3t/s"},{"name":"deepseek-flash","description":"当前为 DeepSeek v4.1 Flash 模型,具体检查点看分组,官 Key 为 1017 检查点","icon":"DeepSeek.Color","vendor_id":4,"enable_groups":["[低价] 神秘折扣模型","[满血][官Key] DeepSeek","[低价] DeepSeek","[低价][满血] 国模","[低价][满血] DeepSeek 1017"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"weekday(\"UTC\") >= 1 && weekday(\"UTC\") <= 5 && ((hour(\"UTC\") >= 1 && hour(\"UTC\") < 4) || (hour(\"UTC\") >= 6 && hour(\"UTC\") < 10)) ? tier(\"peak\", p * 2 + cr * 0.04 + c * 8) : tier(\"off_peak\", p * 1 + cr * 0.02 + c * 4)","context_window":1000000,"max_tokens":384000,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","max"]},{"name":"suno_timing","enable_groups":["[满血] Suno"],"supported_endpoint_types":["openai"],"model_ratio":0,"model_price":0.7718,"completion_ratio":0,"quota_type":1},{"name":"kimseek-r1","enable_groups":["[低价][满血] 国模","[低价][满血] DeepSeek 1017","[低价] DeepSeek"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0},{"name":"gemini-3-flash-preview","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":0.25,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"standard\", p * 0.5 + cr * 0.05 + ai * 1 + c * 3)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"gemini-3.1-pro-preview","vendor_id":3,"enable_groups":["[满血][官Key] Gemini","[低价][反重力] Gemini"],"supported_endpoint_types":["openai","openai-response"],"model_ratio":1,"model_price":0,"completion_ratio":6,"cache_ratio":0.1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"len <= 200000 ? tier(\"0_200k\", p * 2 + cr * 0.2 + c * 12) : tier(\"200k_plus\", p * 4 + cr * 0.4 + c * 18)","context_window":1048576,"max_tokens":65536,"input_modalities":["text","image"],"reasoning_levels":["minimal","low","medium","high","xhigh","max"]},{"name":"grok-imagine-image-2.0","description":"Grok Imagine Image 2.0 图像生成模型,按生成图片张数计费。","icon":"XAI","vendor_id":5,"enable_groups":["[低价][生图] 生图特惠"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":37.5,"model_price":0,"completion_ratio":1,"quota_type":0,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.1)) * image_count"},{"name":"grok-imagine-image","description":"Grok Imagine Image 图像生成模型,按生成图片张数计费。","icon":"XAI","vendor_id":5,"enable_groups":["[低价][生图] 生图特惠","[低价] Grok"],"supported_endpoint_types":["image-generation","openai","openai-response"],"model_ratio":0,"model_price":0.4,"completion_ratio":0,"quota_type":1,"billing_mode":"tiered_expr","billing_expr":"tier(\"image\", fixed(0.4)) * image_count"}],"groups":{"[AIS] Gemini 向量模型":1,"[低价] DeepSeek":0.4,"[低价] GPT 福利":0.2,"[低价] Grok":0.1,"[低价] Seedance":1,"[低价] 灵车 K3.1 Pro 专用":0.3,"[低价] 神秘折扣模型":0.12,"[低价] 视频分组":1.5,"[低价] 语音合成 TTS":0.3,"[低价] 语音转文字 ASR":1,"[低价][Kiro] 高智企业 Claude":1,"[低价][促销] GPT Image":0.5,"[低价][反重力] Gemini":0.5,"[低价][备用] GPT Pro":0.3,"[低价][满血] Claude 原生":1.5,"[低价][满血] Claude 特惠":1.1,"[低价][满血] DeepSeek 1017":0.5,"[低价][满血] GPT Pro 2":0.26,"[低价][满血] Gemini Ultra":0.5,"[低价][满血] 国模":0.6,"[低价][满血][自有] GLM 官方":0.25,"[低价][生图] 生图特惠":0.2,"[官key] GPT":0.9,"[满血] Argon 专用":1,"[满血] CC 不降智精选":1.8,"[满血] GPT Pro 500 高速":0.5,"[满血] GPT 不降智精选":0.35,"[满血] Kimi K3.1 Pro 专用":0.6,"[满血] Suno":1,"[满血][官Key] DeepSeek":0.8,"[满血][官Key] Gemini":2,"[生图] GPT Image":1,"[生图] Gemini":1},"refs":{"[AIS] Gemini 向量模型":"#34","[低价] DeepSeek":"#16","[低价] GPT 福利":"#56","[低价] Grok":"#37","[低价] Seedance":"#19","[低价] 灵车 K3.1 Pro 专用":"#49","[低价] 神秘折扣模型":"#24","[低价] 视频分组":"#31","[低价] 语音合成 TTS":"#35","[低价] 语音转文字 ASR":"#27","[低价][Kiro] 高智企业 Claude":"#42","[低价][促销] GPT Image":"#39","[低价][反重力] Gemini":"#5","[低价][备用] GPT Pro":"#13","[低价][满血] Claude 原生":"#61","[低价][满血] Claude 特惠":"#22","[低价][满血] DeepSeek 1017":"#38","[低价][满血] GPT Pro 2":"#14","[低价][满血] Gemini Ultra":"#12","[低价][满血] 国模":"#6","[低价][满血][自有] GLM 官方":"#17","[低价][生图] 生图特惠":"#9","[官key] GPT":"#28","[满血] Argon 专用":"#47","[满血] CC 不降智精选":"#7","[满血] GPT Pro 500 高速":"#57","[满血] GPT 不降智精选":"#2","[满血] Kimi K3.1 Pro 专用":"#48","[满血] Suno":"#67","[满血][官Key] DeepSeek":"#15","[满血][官Key] Gemini":"#8","[生图] GPT Image":"#4","[生图] Gemini":"#29"},"notes":{"[AIS] Gemini 向量模型":"Gemini 文本向量与嵌入模型(AIStudio 渠道)","[低价] DeepSeek":"DeepSeek 正式版,超低折扣,此分组为 v4 Flash 0731","[低价] GPT 福利":"GPT 低价福利分组,不保障满智力","[低价] Grok":"Grok 系列模型,低价通道","[低价] Seedance":"Seedance 视频生成(低价)","[低价] 灵车 K3.1 Pro 专用":"Kimi K3.1 Pro 灵车渠道","[低价] 神秘折扣模型":"神秘折扣模型合集,低价通道,deepseek flash 为 v4.1 旧版","[低价] 视频分组":"Veo / Minimax / Omni 视频生成,低价通道","[低价] 语音合成 TTS":"语音合成(TTS),低价通道","[低价] 语音转文字 ASR":"语音转文字(ASR),低价通道","[低价][Kiro] 高智企业 Claude":"90% Claude Max","[低价][促销] GPT Image":"降智 GPT Pro 号再上岗","[低价][反重力] Gemini":"Gemini 全系模型(反重力渠道)","[低价][备用] GPT Pro":"GPT Pro 账号反代,低价通道","[低价][满血] Claude 原生":"0 注入,神秘渠道","[低价][满血] Claude 特惠":"特惠,尽量保证满血","[低价][满血] DeepSeek 1017":"最新最热满血 DeepSeek v4.1 Flash 1017 专用特价分组","[低价][满血] GPT Pro 2":"GPT Pro 反代,低价 2 号通道","[低价][满血] Gemini Ultra":"反重力 Ultra 套餐反代,支持 Argon","[低价][满血] 国模":"国产大模型满血版,超低折扣","[低价][满血][自有] GLM 官方":"GLM Coding Plan 转发","[低价][生图] 生图特惠":"","[官key] GPT":"OpenAI 官方 Key 通道,支持 UltraFast","[满血] Argon 专用":"不知道从哪来的,质量比 Ultra 好点","[满血] CC 不降智精选":"Claude 满血满智精选,不降智","[满血] GPT Pro 500 高速":"","[满血] GPT 不降智精选":"GPT 满血不降智精选","[满血] Kimi K3.1 Pro 专用":"Kimi K3.1 Pro 专用渠道","[满血] Suno":"Suno 音乐生成(歌词/整曲/音效/分轨/时间轴),按次计费","[满血][官Key] DeepSeek":"","[满血][官Key] Gemini":"Gemini 官方 API Key 通道","[生图] GPT Image":"GPT Image 图像生成","[生图] Gemini":"Gemini 图像生成"},"auto":["[低价][满血] Gemini Ultra","[满血] CC 不降智精选","[满血] GPT 不降智精选","[低价][生图] 生图特惠","[低价] DeepSeek","[低价][备用] GPT Pro","[低价] Grok","[低价] Seedance","[低价] 视频分组","[低价] 语音合成 TTS","[低价] 语音转文字 ASR","[低价][满血] 国模","[低价] 神秘折扣模型","[AIS] Gemini 向量模型","[满血][官Key] Gemini","[官key] GPT","[生图] GPT Image","[生图] Gemini"],"vendors":[{"id":2,"name":"Anthropic","icon":"Claude.Color"},{"id":7,"name":"Moonshot","icon":"Moonshot"},{"id":10,"name":"腾讯","icon":"Hunyuan.Color"},{"id":1,"name":"OpenAI","icon":"OpenAI"},{"id":5,"name":"xAI","icon":"XAI"},{"id":9,"name":"MiniMax","icon":"Minimax.Color"},{"id":12,"name":"小米","icon":"XiaomiMiMo"},{"id":16,"name":"Midjourney","description":"Midjourney 图像生成服务","icon":"Midjourney"},{"id":6,"name":"智谱","icon":"Zhipu.Color"},{"id":13,"name":"TypeSafe"},{"id":14,"name":"字节跳动","description":"字节跳动 Seedream 图像生成系列","icon":"ByteDance"},{"id":15,"name":"Black Forest Labs","description":"Black Forest Labs FLUX 图像生成系列","icon":"Flux"},{"id":17,"name":"Ideogram","description":"Ideogram 图像生成服务","icon":"Ideogram"},{"id":3,"name":"Google","icon":"Gemini.Color"},{"id":4,"name":"DeepSeek","icon":"DeepSeek.Color"},{"id":8,"name":"阿里巴巴","icon":"Qwen.Color"},{"id":11,"name":"即梦","icon":"Jimeng.Color"}],"endpoints":{"anthropic":{"path":"/v1/messages","method":"POST"},"gemini":{"path":"/v1beta/models/{model}:generateContent","method":"POST"},"image-generation":{"path":"/v1/images/generations","method":"POST"},"openai":{"path":"/v1/chat/completions","method":"POST"},"openai-response":{"path":"/v1/responses","method":"POST"}}}
package/page/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // 由 scripts/stamp.mjs 生成,别手改:版本号在 package.json。
2
- self.NEARTOKEN_VERSION = "0.2.4"
2
+ self.NEARTOKEN_VERSION = "0.3.0"