jinzd-ai-cli 0.4.328 → 0.4.330

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 (48) hide show
  1. package/README.md +4 -4
  2. package/README.zh-CN.md +4 -4
  3. package/dist/{batch-GE6XWXPK.js → batch-GXITPLER.js} +2 -2
  4. package/dist/{chunk-IEKVRC2E.js → chunk-265M6ZLH.js} +4 -4
  5. package/dist/{chunk-BRZZ3QAI.js → chunk-2BAFLDDL.js} +44 -7
  6. package/dist/{chunk-JXGE4T4U.js → chunk-2SYDIWRU.js} +1 -1
  7. package/dist/{chunk-LOS7T2JS.js → chunk-3YVZJHTF.js} +1 -1
  8. package/dist/{chunk-NOQKCHIQ.js → chunk-AJITHMRE.js} +1 -1
  9. package/dist/{chunk-T4K4RZKR.js → chunk-CCFCPAKN.js} +1 -1
  10. package/dist/{chunk-IOLDD5ZA.js → chunk-DU44SD6A.js} +1 -1
  11. package/dist/{chunk-E3RJEQZA.js → chunk-DX2U6QK4.js} +1 -1
  12. package/dist/{chunk-NKTCITLH.js → chunk-GEC3MEVQ.js} +48 -40
  13. package/dist/{chunk-VKQIHFI5.js → chunk-GWEBO4RF.js} +1 -1
  14. package/dist/{chunk-B4EBCSKM.js → chunk-HMQA2R3O.js} +1 -1
  15. package/dist/{chunk-WDEO7J3T.js → chunk-LLXHA2LA.js} +8 -8
  16. package/dist/{chunk-U6VATMAI.js → chunk-LUJ4JVMI.js} +4 -4
  17. package/dist/{chunk-UQI5TOL2.js → chunk-M5B6G6AY.js} +4 -4
  18. package/dist/{chunk-OVEZ6HB5.js → chunk-QU74ONFF.js} +9 -3
  19. package/dist/{ci-U5Q3BMQP.js → ci-6K3JNHB4.js} +5 -5
  20. package/dist/{ci-format-4RR2G3RR.js → ci-format-2L3RFJVH.js} +2 -2
  21. package/dist/{constants-5YWODQHN.js → constants-DLJECTGQ.js} +1 -1
  22. package/dist/{constants-J3346CYX.js → constants-J5SJ232X.js} +1 -1
  23. package/dist/{doctor-cli-PCSMI6ZV.js → doctor-cli-BHS7G2XY.js} +5 -5
  24. package/dist/electron-server.js +124 -59
  25. package/dist/{hub-R3WSYGNT.js → hub-PPG4N6QQ.js} +1 -1
  26. package/dist/index.js +32 -21
  27. package/dist/{persistent-memory-64EXCOV4.js → persistent-memory-3XTSZ3QR.js} +2 -2
  28. package/dist/{persistent-memory-JZWKXFUF.js → persistent-memory-O4T2OTVV.js} +2 -2
  29. package/dist/{pr-2EZKHIQ5.js → pr-M6ZY4CEK.js} +5 -5
  30. package/dist/{run-tests-CC24OLYI.js → run-tests-H3DIUCDB.js} +2 -2
  31. package/dist/{run-tests-RUYOX42E.js → run-tests-WQE3XTUL.js} +2 -2
  32. package/dist/{server-DQFHA3Z2.js → server-5NQSYQ2T.js} +31 -16
  33. package/dist/{server-GU7XSXSR.js → server-J2B26DZK.js} +5 -5
  34. package/dist/{task-orchestrator-62LRX42O.js → task-orchestrator-CI7EDT25.js} +5 -5
  35. package/dist/{usage-RDLAA5HC.js → usage-AJYZ5A7P.js} +3 -3
  36. package/dist/web/client/app.js +9 -0
  37. package/dist/web/client/app.js.br +0 -0
  38. package/dist/web/client/app.js.gz +0 -0
  39. package/dist/web/client/index.html +1 -0
  40. package/dist/web/client/index.html.br +0 -0
  41. package/dist/web/client/index.html.gz +0 -0
  42. package/dist/web/client/state.js +3 -0
  43. package/dist/web/client/state.js.br +0 -0
  44. package/dist/web/client/state.js.gz +0 -0
  45. package/dist/web/client/style.css +3 -0
  46. package/dist/web/client/style.css.br +0 -0
  47. package/dist/web/client/style.css.gz +0 -0
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -134,10 +134,10 @@ aicli user delete x # Delete user
134
134
  | **DeepSeek** | deepseek-flash (default, multimodal), deepseek-v4-pro | [platform.deepseek.com](https://platform.deepseek.com) |
135
135
  | **OpenAI** | GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini | [platform.openai.com](https://platform.openai.com) |
136
136
  | **OpenRouter** | 300+ models (Claude, GPT, Gemini, Llama, Qwen, Mistral...) | [openrouter.ai](https://openrouter.ai) |
137
- | **Zhipu** | GLM-4, GLM-5 | [open.bigmodel.cn](https://open.bigmodel.cn) |
138
- | **Kimi** | Kimi K2.6, K2.5, K2 Thinking | [platform.moonshot.cn](https://platform.moonshot.cn) |
139
- | **Qwen** | qwen-plus, qwen-max, qwen-turbo, qwen-coder-plus | [bailian.console.aliyun.com](https://bailian.console.aliyun.com) |
140
- | **MiniMax** | MiniMax-M3 (default), M2.7, M2.5, M2.1, M2 | [platform.minimaxi.com](https://platform.minimaxi.com) |
137
+ | **Zhipu** | glm-5.3-flash (default), glm-5.3-flashx, glm-5.3, glm-4.7-flash (free) | [open.bigmodel.cn](https://open.bigmodel.cn) |
138
+ | **Kimi** | kimi-k2.7-code (default), kimi-k2.7-code-highspeed, kimi-k3 | [platform.moonshot.cn](https://platform.moonshot.cn) |
139
+ | **Qwen** | qwen3.8-flash (default), qwen3.7-plus, qwen3.8-max, qwen-flash | [bailian.console.aliyun.com](https://bailian.console.aliyun.com) |
140
+ | **MiniMax** | MiniMax-M3 (default) | [platform.minimaxi.com](https://platform.minimaxi.com) |
141
141
  | **Ollama** | Any locally installed model (Llama, Qwen, Gemma, Mistral...) | No API key — [ollama.com](https://ollama.com) |
142
142
 
143
143
  Any OpenAI-compatible API can also be used via `customBaseUrls` in config.
package/README.zh-CN.md CHANGED
@@ -122,10 +122,10 @@ aicli user delete x # 删除用户
122
122
  | **DeepSeek** | deepseek-flash(默认,多模态), deepseek-v4-pro | [platform.deepseek.com](https://platform.deepseek.com) |
123
123
  | **OpenAI** | GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini | [platform.openai.com](https://platform.openai.com) |
124
124
  | **OpenRouter** | 300+ 模型(Claude/GPT/Gemini/Llama/Qwen/Mistral...) | [openrouter.ai](https://openrouter.ai) |
125
- | **Zhipu(智谱)** | GLM-4, GLM-5 | [open.bigmodel.cn](https://open.bigmodel.cn) |
126
- | **Kimi** | Kimi K2.6, K2.5, K2 Thinking | [platform.moonshot.cn](https://platform.moonshot.cn) |
127
- | **Qwen** | qwen-plus, qwen-max, qwen-turbo, qwen-coder-plus | [bailian.console.aliyun.com](https://bailian.console.aliyun.com) |
128
- | **MiniMax** | MiniMax-M3(默认)、M2.7、M2.5、M2.1、M2 | [platform.minimaxi.com](https://platform.minimaxi.com) |
125
+ | **Zhipu(智谱)** | glm-5.3-flash(默认)、glm-5.3-flashx、glm-5.3、glm-4.7-flash(免费) | [open.bigmodel.cn](https://open.bigmodel.cn) |
126
+ | **Kimi** | kimi-k2.7-code(默认)、kimi-k2.7-code-highspeed、kimi-k3 | [platform.moonshot.cn](https://platform.moonshot.cn) |
127
+ | **Qwen** | qwen3.8-flash(默认)、qwen3.7-plus、qwen3.8-max、qwen-flash | [bailian.console.aliyun.com](https://bailian.console.aliyun.com) |
128
+ | **MiniMax** | MiniMax-M3(默认) | [platform.minimaxi.com](https://platform.minimaxi.com) |
129
129
  | **Ollama** | 任意本地模型(Llama、Qwen、Gemma、Mistral...) | 无需 API Key — [ollama.com](https://ollama.com) |
130
130
 
131
131
  也可通过 `customBaseUrls` 配置接入任意 OpenAI 兼容 API。
@@ -4,12 +4,12 @@ import {
4
4
  } from "./chunk-RS7SKYTS.js";
5
5
  import {
6
6
  ConfigManager
7
- } from "./chunk-OVEZ6HB5.js";
7
+ } from "./chunk-QU74ONFF.js";
8
8
  import "./chunk-TU3L3PW7.js";
9
9
  import {
10
10
  atomicWriteFileSync
11
11
  } from "./chunk-BMLQPSHP.js";
12
- import "./chunk-NOQKCHIQ.js";
12
+ import "./chunk-AJITHMRE.js";
13
13
 
14
14
  // src/cli/batch.ts
15
15
  import Anthropic from "@anthropic-ai/sdk";
@@ -8,13 +8,13 @@ import {
8
8
  listHooks,
9
9
  listInstalledPlugins,
10
10
  resetStats
11
- } from "./chunk-B4EBCSKM.js";
11
+ } from "./chunk-HMQA2R3O.js";
12
12
  import {
13
13
  ProviderRegistry
14
- } from "./chunk-NKTCITLH.js";
14
+ } from "./chunk-GEC3MEVQ.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-OVEZ6HB5.js";
17
+ } from "./chunk-QU74ONFF.js";
18
18
  import {
19
19
  getGitRoot
20
20
  } from "./chunk-HOSJZMQS.js";
@@ -26,7 +26,7 @@ import {
26
26
  MCP_PROJECT_CONFIG_NAME,
27
27
  MEMORY_FILE_NAME,
28
28
  VERSION
29
- } from "./chunk-NOQKCHIQ.js";
29
+ } from "./chunk-AJITHMRE.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -16,7 +16,6 @@ function deepSeekCnyPricing(cacheRead, input, output) {
16
16
  output: output / CNY_PER_USD
17
17
  };
18
18
  }
19
- var DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT = /* @__PURE__ */ new Date("2026-09-14T04:00:00.000Z");
20
19
  var DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT = /* @__PURE__ */ new Date("2026-09-11T00:00:00.000Z");
21
20
  function isDeepSeekPeakHour(at) {
22
21
  const weekday = at.getUTCDay();
@@ -32,7 +31,6 @@ function getDeepSeekV4Pricing(model, at) {
32
31
  const isPro = model.startsWith("deepseek-v4-pro");
33
32
  const isFlash = model.startsWith("deepseek-v4-flash");
34
33
  if (!isPro && !isFlash) return null;
35
- if (isPro && at >= DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT) return deepSeekFlash41Pricing(at);
36
34
  if (isFlash && at >= DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT) return deepSeekFlash41Pricing(at);
37
35
  if (at < DEEPSEEK_TIME_PRICING_EFFECTIVE_AT) {
38
36
  return isPro ? deepSeekCnyPricing(0.025, 3, 6) : deepSeekCnyPricing(0.02, 1, 2);
@@ -111,6 +109,12 @@ var PRICING_TABLE = {
111
109
  // Kimi K3(2026-07 旗舰,1M 上下文)官方定价 platform.kimi.ai/pricing/chat-k3:
112
110
  // 输入 cache-miss $3.00 / cache-hit $0.30,输出 $15.00(/MTok)。
113
111
  "kimi-k3": { input: 3, output: 15, cacheRead: 0.3 },
112
+ // K2.6 / K2.7 Code:官方 platform.kimi.ai/docs/pricing/chat(2026-10-18 核对,USD/MTok)。
113
+ // 国内站人民币价 ¥6.5/¥27(缓存 ¥1.1 / ¥1.3)按 ¥6.9 折算与之相差 <3%,沿用 K3 那行的美元口径。
114
+ // 此前 K2.6 没有单列,前缀落到 'kimi-k2'($0.6/$2.5),输出低报约 37%。
115
+ "kimi-k2.6": { input: 0.95, output: 4, cacheRead: 0.16 },
116
+ "kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19 },
117
+ "kimi-k2.7-code-highspeed": { input: 1.9, output: 8, cacheRead: 0.38 },
114
118
  // ── Zhipu GLM ─────────────────────────────────────────────────
115
119
  "glm-4-plus": { input: 0.7, output: 0.7 },
116
120
  "glm-4": { input: 0.14, output: 0.14 },
@@ -132,6 +136,11 @@ var PRICING_TABLE = {
132
136
  // 没公布截止日期,静态表表达不了这个时间维度;高估比低估安全——预算告警早触发
133
137
  // 好过晚触发。折扣期内 `/cost` 会比实际偏高约一倍,这是刻意的取舍。
134
138
  "glm-5.3-flash": { input: 0.116, output: 0.406, cacheRead: 0.033 },
139
+ // GLM-5.3-FlashX:官方定价页(docs.bigmodel.cn/cn/guide/start/pricing,2026-10-18 浏览器读取)
140
+ // 输入 2 元、输出 7 元、缓存命中 0.57 元。必须单列——否则前缀匹配会落到上面的 glm-5.3-flash,低报 2.5 倍。
141
+ "glm-5.3-flashx": { input: 2 / CNY_PER_USD, output: 7 / CNY_PER_USD, cacheRead: 0.57 / CNY_PER_USD },
142
+ // GLM-4.7-Flash:官方免费(输入/输出/缓存全免)。必须单列——否则前缀落到 'glm-4'($0.14)。
143
+ "glm-4.7-flash": { input: 0, output: 0, cacheRead: 0 },
135
144
  // GLM-5.2:与 GLM-5.3 同价(同一定价页:8 / 28 / 缓存命中 2 元),口径修正同上。
136
145
  "glm-5.2": { input: 8 / CNY_PER_USD, output: 28 / CNY_PER_USD, cacheRead: 2 / CNY_PER_USD },
137
146
  // GLM-5V-Turbo(2026-04 视觉编程旗舰)官方直连 API 定价 $1.20 / $4.00。
@@ -141,8 +150,26 @@ var PRICING_TABLE = {
141
150
  "glm-z1-air": { input: 0.2, output: 0.6 },
142
151
  "glm-z1-flash": { input: 0, output: 0 },
143
152
  // ── MiniMax (海螺) ────────────────────────────────────────────
144
- // GAP (v0.4.184): MiniMax-M3 / M2.x are unpriced — no verified rate anchor yet.
145
- // Unpriced → `aicli usage` shows "—" (unknown), not a false $0.00. Add when confirmed.
153
+ // 官方定价页 platform.minimax.cn/docs/guides/pricing(2026-10-18 核对,元/百万 tokens),按 ¥6.9 折算。
154
+ // 本 provider 打的是国内站 api.minimaxi.com,按人民币计费。
155
+ // M3 记的是「永久五折」后的价(官方原文标注永久,不同于智谱的限时折扣),≤512K 输入档;
156
+ // >512K 那档见 computeCost 的 LONG_PROMPT_TIERS。M3 未公布缓存写入价,缺省按输入价(偏高估)。
157
+ "minimax-m3": { input: 2.1 / CNY_PER_USD, output: 8.4 / CNY_PER_USD, cacheRead: 0.42 / CNY_PER_USD },
158
+ "minimax-m2.7": { input: 2.1 / CNY_PER_USD, output: 8.4 / CNY_PER_USD, cacheRead: 0.42 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
159
+ "minimax-m2.7-highspeed": { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.42 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
160
+ // M2.5 / M2.1 / M2(历史模型)同价;highspeed 变体输入输出翻倍、缓存同价。
161
+ "minimax-m2": { input: 2.1 / CNY_PER_USD, output: 8.4 / CNY_PER_USD, cacheRead: 0.21 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
162
+ "minimax-m2.5-highspeed": { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.21 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
163
+ "minimax-m2.1-highspeed": { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.21 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
164
+ // ── Qwen(阿里云百炼,北京地域)───────────────────────────────────
165
+ // 官方 help.aliyun.com/zh/model-studio/model-pricing(2026-10-18 核对,元/百万 tokens,原价),按 ¥6.9 折算。
166
+ // 思考与非思考输出同价。qwen3.7-plus 当前限时 8 折,记原价(高估方向,同智谱 glm-5.3-flash 的取舍)。
167
+ // 官方未给出各模型的缓存单价,不填 cacheRead,命中按输入全价算(高估方向)。
168
+ // 长提示分档(qwen3.7-plus >256K、qwen-flash >128K / >256K)见 LONG_PROMPT_TIERS;此处为最低档。
169
+ "qwen3.8-max": { input: 12 / CNY_PER_USD, output: 36 / CNY_PER_USD },
170
+ "qwen3.7-plus": { input: 2 / CNY_PER_USD, output: 8 / CNY_PER_USD },
171
+ "qwen3.8-flash": { input: 0.8 / CNY_PER_USD, output: 2.7 / CNY_PER_USD },
172
+ "qwen-flash": { input: 0.15 / CNY_PER_USD, output: 1.5 / CNY_PER_USD },
146
173
  // ── OpenRouter (pass-through — actual cost depends on underlying model) ──
147
174
  // 绝大多数 id 仍**刻意留空**:真实价由底层模型 + OpenRouter 加价决定,静态表覆盖不了
148
175
  // 396 个模型,未收录的照旧显示 "—"(未知)而不是假的 $0.00。
@@ -197,11 +224,21 @@ function getPricing(provider, model, at = /* @__PURE__ */ new Date()) {
197
224
  return null;
198
225
  }
199
226
  var CLAUDE_HAIKU_55_LONG = { input: 0.5, output: 2.5, cacheWrite: 0.625, cacheRead: 0.05 };
200
- var CLAUDE_HAIKU_55_TIER_TOKENS = 1e5;
227
+ var LONG_PROMPT_TIERS = [
228
+ { prefix: "claude-haiku-5-5", overTokens: 1e5, pricing: CLAUDE_HAIKU_55_LONG },
229
+ {
230
+ prefix: "minimax-m3",
231
+ overTokens: 512e3,
232
+ pricing: { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.84 / CNY_PER_USD }
233
+ },
234
+ { prefix: "qwen3.7-plus", overTokens: 256e3, pricing: { input: 6 / CNY_PER_USD, output: 24 / CNY_PER_USD } },
235
+ { prefix: "qwen-flash", overTokens: 256e3, pricing: { input: 1.2 / CNY_PER_USD, output: 12 / CNY_PER_USD } },
236
+ { prefix: "qwen-flash", overTokens: 128e3, pricing: { input: 0.6 / CNY_PER_USD, output: 6 / CNY_PER_USD } }
237
+ ];
201
238
  function longPromptTier(model, usage) {
202
- if (!model.toLowerCase().startsWith("claude-haiku-5-5")) return null;
239
+ const key = model.toLowerCase();
203
240
  const prompt = usage.inputTokens + (usage.cacheCreationTokens ?? 0) + (usage.cacheReadTokens ?? 0);
204
- return prompt > CLAUDE_HAIKU_55_TIER_TOKENS ? CLAUDE_HAIKU_55_LONG : null;
241
+ return LONG_PROMPT_TIERS.find((t) => key.startsWith(t.prefix) && prompt > t.overTokens)?.pricing ?? null;
205
242
  }
206
243
  function computeCost(provider, model, usage, at = /* @__PURE__ */ new Date()) {
207
244
  const p = longPromptTier(model, usage) ?? getPricing(provider, model, at);
@@ -12,7 +12,7 @@ import {
12
12
  MEMORY_FILE_NAME,
13
13
  MEMORY_MAX_CHARS,
14
14
  MEMORY_STORE_FILE_NAME
15
- } from "./chunk-LOS7T2JS.js";
15
+ } from "./chunk-3YVZJHTF.js";
16
16
 
17
17
  // src/memory/persistent-memory.ts
18
18
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.328";
2
+ var VERSION = "0.4.330";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  var CONFIG_FILE_NAME = "config.json";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.328";
4
+ var VERSION = "0.4.330";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-NOQKCHIQ.js";
4
+ } from "./chunk-AJITHMRE.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-QMFMST2T.js";
5
5
  import {
6
6
  TEST_TIMEOUT
7
- } from "./chunk-LOS7T2JS.js";
7
+ } from "./chunk-3YVZJHTF.js";
8
8
 
9
9
  // src/tools/builtin/run-tests.ts
10
10
  import { spawn as spawn2 } from "child_process";
@@ -13,7 +13,7 @@ import {
13
13
  MEMORY_FILE_NAME,
14
14
  MEMORY_MAX_CHARS,
15
15
  MEMORY_STORE_FILE_NAME
16
- } from "./chunk-NOQKCHIQ.js";
16
+ } from "./chunk-AJITHMRE.js";
17
17
 
18
18
  // src/memory/persistent-memory.ts
19
19
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-BMLQPSHP.js";
16
16
  import {
17
17
  DEFAULT_MAX_TOKENS
18
- } from "./chunk-NOQKCHIQ.js";
18
+ } from "./chunk-AJITHMRE.js";
19
19
 
20
20
  // src/providers/claude.ts
21
21
  import Anthropic from "@anthropic-ai/sdk";
@@ -1743,7 +1743,9 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
1743
1743
  },
1744
1744
  {
1745
1745
  id: "deepseek-v4-pro",
1746
- displayName: "DeepSeek V4 Pro (text-only; routes to V4.1 Flash from 2026-09-14)",
1746
+ // 2026-09-11 官方撤回了「9-14 起路由到 Flash」,Pro 照常服务、按 Pro 价计费(见 pricing.ts)。
1747
+ // 价格约为 Flash 的 4 倍且不收图片,但 Flash 替代不了它的能力档,故保留。
1748
+ displayName: "DeepSeek V4 Pro (0813, text-only)",
1747
1749
  contextWindow: 1048576,
1748
1750
  supportsStreaming: true,
1749
1751
  supportsThinking: true
@@ -1802,20 +1804,24 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
1802
1804
  var ZHIPU_CONFIG = {
1803
1805
  id: "zhipu",
1804
1806
  displayName: "Zhipu (GLM)",
1805
- defaultModel: "glm-4.6",
1807
+ defaultModel: "glm-5.3-flash",
1806
1808
  apiKeyEnvVar: "AICLI_API_KEY_ZHIPU",
1807
1809
  baseUrl: "https://open.bigmodel.cn/api/paas/v4",
1808
1810
  defaultTimeout: 3e5,
1809
1811
  models: [
1810
1812
  { id: "glm-5.3", displayName: "GLM-5.3 (2026-08 Flagship, 1M, Coding/Security, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
1813
+ // GLM-5.3-FlashX(2026-10):Flash 与 5.3 之间的一档,¥2/¥7、缓存命中 ¥0.57(官方定价页)。
1814
+ // 2026-10-18 实测:同样始终思考(`disabled` → 400/1210),`low` 档 200,base64 图片可识别。
1815
+ { id: "glm-5.3-flashx", displayName: "GLM-5.3 FlashX (\u539F\u751F\u591A\u6A21\u6001, 1M, \u4EF7\u683C\u7EA6\u4E3A 5.3 \u7684 1/4, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
1811
1816
  { id: "glm-5.3-flash", displayName: "GLM-5.3 Flash (\u539F\u751F\u591A\u6A21\u6001, 1M, \u8F93\u5165\u7EA6\u4E3A 5.3 \u7684 1/10, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
1812
- { id: "glm-5.2", displayName: "GLM-5.2 (2026-06 Flagship, 1M, Coding)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
1813
- { id: "glm-5v-turbo", displayName: "GLM-5V-Turbo (Multimodal Vision + Coding)", contextWindow: 202752, supportsStreaming: true },
1814
- // 2026-10-07 清理:移除 glm-5.1-reasoning / glm-5.1-air(官方模型总览与发布记录里**从未出现过**,
1815
- // 当初取自第三方标注,同 v0.4.198 的 `glm-5.2[1m]`)与 glm-5 / glm-5.1(已被 glm-5.2 / 5.3 取代,
1816
- // 要便宜有 glm-5.3-flash;glm-5 这里标的 128K 与官方 200K 也不符)。后两者端点仍可用,`/model` 照收,
1817
- // pricing.ts 保留其费率供历史成本回算。
1818
- { id: "glm-4.6", displayName: "GLM-4.6 (200K, \u4E2D\u6587\u5199\u4F5C\u63A8\u8350)", contextWindow: 204800, supportsStreaming: true }
1817
+ // 免费(输入/输出/缓存全免,官方定价页「更多文本模型」)。2026-10-18 实测 200,但慢(一句 ok 约 15s)。
1818
+ { id: "glm-4.7-flash", displayName: "GLM-4.7 Flash (\u514D\u8D39, 200K)", contextWindow: 2e5, supportsStreaming: true }
1819
+ // 2026-10-18 按「老模型没有价格优势就下架」清理(端点仍可用,`/model` 照收,pricing.ts 保留费率供历史回算):
1820
+ // - glm-5.2:与 glm-5.3 同价(¥8/¥28/缓存 ¥2),已被取代
1821
+ // - glm-5v-turbo:¥5/¥22 起,比同样原生多模态的 glm-5.3-flash(¥0.8/¥2.8)贵 6–8 倍
1822
+ // - glm-4.6:已不在官方定价页上,且旧价高于 glm-5.3-flash
1823
+ // 更早的 2026-10-07 清理:glm-5.1-reasoning / glm-5.1-air 官方从未存在(取自第三方标注,同 v0.4.198
1824
+ // 的 `glm-5.2[1m]`),glm-5 / glm-5.1 已被取代。
1819
1825
  ]
1820
1826
  };
1821
1827
  var REASONING_EFFORT_MODELS = /^glm-5/i;
@@ -1881,7 +1887,10 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
1881
1887
  */
1882
1888
  static TEMP_1_MODELS = /* @__PURE__ */ new Set([
1883
1889
  "kimi-k3",
1890
+ "kimi-k2.7-code",
1891
+ "kimi-k2.7-code-highspeed",
1884
1892
  "kimi-k2.6",
1893
+ // 已 404 的旧 code 仍留在这里:config 自愈迁移之外的显式 `/model kimi-k2.5` 不该先撞 temperature 400
1885
1894
  "kimi-k2.5",
1886
1895
  "kimi-k2-thinking",
1887
1896
  "kimi-k2-thinking-turbo"
@@ -1902,7 +1911,7 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
1902
1911
  info = {
1903
1912
  id: "kimi",
1904
1913
  displayName: "Kimi (Moonshot AI)",
1905
- defaultModel: "kimi-k2.6",
1914
+ defaultModel: "kimi-k2.7-code",
1906
1915
  apiKeyEnvVar: "AICLI_API_KEY_KIMI",
1907
1916
  requiresApiKey: true,
1908
1917
  baseUrl: this.defaultBaseUrl,
@@ -1912,39 +1921,33 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
1912
1921
  // - contextWindow 1M(1048576);code 就是 `kimi-k3`(UI 名 "K3 · Max" ≠ API code)
1913
1922
  // - temperature 固定 1.0(已并入 TEMP_1_MODELS)
1914
1923
  // - vision 走 base64 / ms://file-id(不收公网 URL)——本版未接图片输入路径,仅文本/工具
1915
- // 默认仍保持 kimi-k2.6(K3 输出 $15/MTok 偏贵,按需 /model kimi-k3)。
1924
+ // 默认用 kimi-k2.7-code(K3 输出 $15/MTok,约为它的 4 倍,按需 /model kimi-k3)。
1916
1925
  {
1917
1926
  id: "kimi-k3",
1918
1927
  displayName: "Kimi K3",
1919
1928
  contextWindow: 1048576,
1920
1929
  supportsStreaming: true
1921
1930
  },
1922
- // Kimi K2.6 / K2.5 系列(最新一代,推荐)
1931
+ // Kimi K2.7 Code(官方 platform.kimi.com/docs/guide/kimi-k2-7-code-quickstart,2026-10-18 核对):
1932
+ // - 256K 上下文;虽名为 Coding 模型,官方写明也支持对话与 Agent 任务
1933
+ // - 思考默认开启且**关不掉**(关闭报错)——本 provider 不发 thinking 字段,正好不踩
1934
+ // - temperature 固定 1.0(已并入 TEMP_1_MODELS);tool_choice 只收 auto / none
1935
+ // - 价格与 K2.6 相同($0.95/$4.00),各项基准提升 10–30%,故取代 K2.6 成为默认
1923
1936
  {
1924
- id: "kimi-k2.6",
1925
- displayName: "Kimi K2.6",
1937
+ id: "kimi-k2.7-code",
1938
+ displayName: "Kimi K2.7 Code",
1926
1939
  contextWindow: 262144,
1927
1940
  supportsStreaming: true
1928
1941
  },
1942
+ // 同一模型的高速版:输出约 5–6 倍速,价格翻倍。
1929
1943
  {
1930
- id: "kimi-k2.5",
1931
- displayName: "Kimi K2.5",
1932
- contextWindow: 262144,
1933
- supportsStreaming: true
1934
- },
1935
- // Kimi K2 Thinking 系列(支持多步推理 + 工具调用)
1936
- {
1937
- id: "kimi-k2-thinking",
1938
- displayName: "Kimi K2 Thinking",
1939
- contextWindow: 262144,
1940
- supportsStreaming: true
1941
- },
1942
- {
1943
- id: "kimi-k2-thinking-turbo",
1944
- displayName: "Kimi K2 Thinking Turbo",
1944
+ id: "kimi-k2.7-code-highspeed",
1945
+ displayName: "Kimi K2.7 Code Highspeed (2x price, ~5x speed)",
1945
1946
  contextWindow: 262144,
1946
1947
  supportsStreaming: true
1947
1948
  }
1949
+ // 2026-10-18 下架:kimi-k2.6 与 K2.7 Code 同价、已被取代(端点仍可用,`/model` 照收);
1950
+ // kimi-k2.5 / kimi-k2-thinking / kimi-k2-thinking-turbo 端点已 404,由 config 自愈迁移到 kimi-k2.7-code。
1948
1951
  ]
1949
1952
  };
1950
1953
  /**
@@ -2056,11 +2059,10 @@ var MINIMAX_CONFIG = {
2056
2059
  apiKeyEnvVar: "AICLI_API_KEY_MINIMAX",
2057
2060
  baseUrl: "https://api.minimaxi.com/v1",
2058
2061
  models: [
2059
- { id: "MiniMax-M3", displayName: "MiniMax M3\uFF08\u65D7\u8230\uFF0C1M \u4E0A\u4E0B\u6587\uFF09", contextWindow: 1e6, supportsStreaming: true },
2060
- { id: "MiniMax-M2.7", displayName: "MiniMax M2.7", contextWindow: 1e6, supportsStreaming: true },
2061
- { id: "MiniMax-M2.7-highspeed", displayName: "MiniMax M2.7 Highspeed", contextWindow: 1e6, supportsStreaming: true },
2062
- { id: "MiniMax-M2.5", displayName: "MiniMax M2.5", contextWindow: 1e6, supportsStreaming: true },
2063
- { id: "MiniMax-M2.5-highspeed", displayName: "MiniMax M2.5 Highspeed", contextWindow: 1e6, supportsStreaming: true }
2062
+ { id: "MiniMax-M3", displayName: "MiniMax M3\uFF08\u65D7\u8230\uFF0C1M \u4E0A\u4E0B\u6587\uFF09", contextWindow: 1e6, supportsStreaming: true }
2063
+ // 2026-10-18 按「老模型没有价格优势就下架」清理(官方定价页 platform.minimax.cn/docs/guides/pricing):
2064
+ // M3「永久五折」后 ¥2.1/¥8.4,与 M2.7 同价、比 M2.x highspeed 便宜一半;M2.5 / M2.1 / M2 官方已归入
2065
+ // 「历史模型」。端点仍可用,`/model` 照收,pricing.ts 保留费率供历史回算。
2064
2066
  ]
2065
2067
  };
2066
2068
  var MiniMaxProvider = createStaticProviderClass(MINIMAX_CONFIG);
@@ -2069,14 +2071,20 @@ var MiniMaxProvider = createStaticProviderClass(MINIMAX_CONFIG);
2069
2071
  var QWEN_CONFIG = {
2070
2072
  id: "qwen",
2071
2073
  displayName: "Qwen (Alibaba Cloud)",
2072
- defaultModel: "qwen-plus",
2074
+ defaultModel: "qwen3.8-flash",
2073
2075
  apiKeyEnvVar: "AICLI_API_KEY_QWEN",
2074
2076
  baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
2077
+ // 2026-10-18 按百炼官方文档更新(help.aliyun.com/zh/model-studio/models、/model-pricing、/deep-thinking)。
2078
+ // **未经真实端点实测**(本机无 Qwen key)。三款 qwen3.x 默认开启思考、支持非流式调用、纯文本输入;
2079
+ // 思考与非思考输出同价。上下文按官方价格阶梯的上限 1M 记。
2075
2080
  models: [
2076
- { id: "qwen-plus", displayName: "Qwen Plus", contextWindow: 131072, supportsStreaming: true },
2077
- { id: "qwen-max", displayName: "Qwen Max", contextWindow: 131072, supportsStreaming: true },
2078
- { id: "qwen-turbo", displayName: "Qwen Turbo", contextWindow: 131072, supportsStreaming: true },
2079
- { id: "qwen-coder-plus", displayName: "Qwen Coder Plus", contextWindow: 131072, supportsStreaming: true }
2081
+ { id: "qwen3.8-max", displayName: "Qwen3.8 Max\uFF08\u65D7\u8230\uFF0C1M\uFF0C\xA512/\xA536\uFF09", contextWindow: 1e6, supportsStreaming: true },
2082
+ { id: "qwen3.7-plus", displayName: "Qwen3.7 Plus\uFF081M\uFF0C\u2264256K \xA52/\xA58\uFF09", contextWindow: 1e6, supportsStreaming: true },
2083
+ { id: "qwen3.8-flash", displayName: "Qwen3.8 Flash\uFF081M\uFF0C\xA50.8/\xA52.7\uFF09", contextWindow: 1e6, supportsStreaming: true },
2084
+ // 老模型里唯一有价格优势的:≤128K ¥0.15/¥1.5,最便宜。默认不开思考。
2085
+ { id: "qwen-flash", displayName: "Qwen Flash\uFF08\u6700\u4FBF\u5B9C\uFF0C\u2264128K \xA50.15/\xA51.5\uFF09", contextWindow: 1e6, supportsStreaming: true }
2086
+ // 下架(端点若仍可用,`/model` 照收):qwen-max ¥2.4/¥9.6 比 qwen3.7-plus 还贵;qwen-plus 价格不如
2087
+ // qwen-flash、能力不如 qwen3.8-flash;qwen-turbo / qwen-coder-plus 已不在官方价格页上。
2080
2088
  ]
2081
2089
  };
2082
2090
  var QwenProvider = createStaticProviderClass(QWEN_CONFIG);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-NOQKCHIQ.js";
4
+ } from "./chunk-AJITHMRE.js";
5
5
  import {
6
6
  getExecutionConfigDir,
7
7
  getExecutionSignal
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  CONFIG_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-NOQKCHIQ.js";
11
+ } from "./chunk-AJITHMRE.js";
12
12
 
13
13
  // src/diagnostics/tool-stats.ts
14
14
  import { mkdirSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  computeCost,
4
4
  formatCost
5
- } from "./chunk-BRZZ3QAI.js";
5
+ } from "./chunk-2BAFLDDL.js";
6
6
  import {
7
7
  clearRecentlyDeniedAutoActions,
8
8
  estimateTokens,
@@ -16,7 +16,7 @@ import {
16
16
  setPreferredAgentName,
17
17
  truncateForPersist,
18
18
  undoStack
19
- } from "./chunk-UQI5TOL2.js";
19
+ } from "./chunk-M5B6G6AY.js";
20
20
  import {
21
21
  buildReviewPrompt,
22
22
  buildSecurityReviewPrompt
@@ -51,7 +51,7 @@ import {
51
51
  touchMemoryReferences,
52
52
  updateMemoryApproval,
53
53
  updateMemoryEntry
54
- } from "./chunk-E3RJEQZA.js";
54
+ } from "./chunk-DX2U6QK4.js";
55
55
  import {
56
56
  theme
57
57
  } from "./chunk-5C76XDDF.js";
@@ -65,7 +65,7 @@ import {
65
65
  import {
66
66
  buildDoctorReport,
67
67
  formatDoctorReport
68
- } from "./chunk-IEKVRC2E.js";
68
+ } from "./chunk-265M6ZLH.js";
69
69
  import {
70
70
  describePlugin,
71
71
  getActivePluginAssets,
@@ -80,7 +80,7 @@ import {
80
80
  trustHook,
81
81
  trustPlugin,
82
82
  untrustHook
83
- } from "./chunk-B4EBCSKM.js";
83
+ } from "./chunk-HMQA2R3O.js";
84
84
  import {
85
85
  isCleanDocumentBody,
86
86
  stripOuterCodeFence
@@ -109,7 +109,7 @@ import {
109
109
  MCP_TOOL_PREFIX,
110
110
  REPO_URL,
111
111
  VERSION
112
- } from "./chunk-NOQKCHIQ.js";
112
+ } from "./chunk-AJITHMRE.js";
113
113
 
114
114
  // src/skills/manager.ts
115
115
  import { existsSync, readdirSync, mkdirSync, statSync } from "fs";
@@ -2445,7 +2445,7 @@ No tools match "${filter}".
2445
2445
  const { join: join6 } = await import("path");
2446
2446
  const { existsSync: existsSync6 } = await import("fs");
2447
2447
  const { getGitRoot } = await import("./git-context-EXOEHQSF.js");
2448
- const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-5YWODQHN.js");
2448
+ const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-DLJECTGQ.js");
2449
2449
  const { approveProject, hashMcpFile } = await import("./project-trust-KGG2BWKC.js");
2450
2450
  const cwd = process.cwd();
2451
2451
  const projectRoot = getGitRoot(cwd) ?? cwd;
@@ -3553,7 +3553,7 @@ function createReviewCommands() {
3553
3553
  usage: "/test [command|filter]",
3554
3554
  async execute(args, ctx) {
3555
3555
  try {
3556
- const { executeTests } = await import("./run-tests-CC24OLYI.js");
3556
+ const { executeTests } = await import("./run-tests-H3DIUCDB.js");
3557
3557
  const argStr = args.join(" ").trim();
3558
3558
  let testArgs = {};
3559
3559
  if (argStr) {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-T4K4RZKR.js";
5
+ } from "./chunk-CCFCPAKN.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -13,13 +13,13 @@ import {
13
13
  } from "./chunk-6YZEZFX5.js";
14
14
  import {
15
15
  ProviderRegistry
16
- } from "./chunk-NKTCITLH.js";
16
+ } from "./chunk-GEC3MEVQ.js";
17
17
  import {
18
18
  ConfigManager
19
- } from "./chunk-OVEZ6HB5.js";
19
+ } from "./chunk-QU74ONFF.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-NOQKCHIQ.js";
22
+ } from "./chunk-AJITHMRE.js";
23
23
 
24
24
  // src/cli/ci.ts
25
25
  import { execFileSync } from "child_process";
@@ -11,7 +11,7 @@ import {
11
11
  searchPersistentMemories,
12
12
  touchMemoryReferences,
13
13
  updateMemoryEntry
14
- } from "./chunk-E3RJEQZA.js";
14
+ } from "./chunk-DX2U6QK4.js";
15
15
  import {
16
16
  indexProject
17
17
  } from "./chunk-RWRZVQCB.js";
@@ -30,7 +30,7 @@ import {
30
30
  runHook,
31
31
  runLifecycleHooks,
32
32
  runTool
33
- } from "./chunk-B4EBCSKM.js";
33
+ } from "./chunk-HMQA2R3O.js";
34
34
  import {
35
35
  buildTruncatedArgumentsError,
36
36
  getDangerLevel,
@@ -64,7 +64,7 @@ import {
64
64
  recoverGbkMojibake,
65
65
  runTestsTool,
66
66
  shellInvocation
67
- } from "./chunk-VKQIHFI5.js";
67
+ } from "./chunk-GWEBO4RF.js";
68
68
  import {
69
69
  CONFIG_DIR_NAME,
70
70
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
@@ -73,7 +73,7 @@ import {
73
73
  SUBAGENT_ALLOWED_TOOLS,
74
74
  SUBAGENT_DEFAULT_MAX_ROUNDS,
75
75
  SUBAGENT_MAX_ROUNDS_LIMIT
76
- } from "./chunk-NOQKCHIQ.js";
76
+ } from "./chunk-AJITHMRE.js";
77
77
  import {
78
78
  getCurrentSessionKey,
79
79
  getExecutionConfigDir,
@@ -11,7 +11,7 @@ import {
11
11
  CONFIG_FILE_NAME,
12
12
  HISTORY_DIR_NAME,
13
13
  PLUGINS_DIR_NAME
14
- } from "./chunk-NOQKCHIQ.js";
14
+ } from "./chunk-AJITHMRE.js";
15
15
 
16
16
  // src/config/config-manager.ts
17
17
  import { readFileSync, existsSync, mkdirSync } from "fs";
@@ -388,8 +388,14 @@ ${err}`
388
388
  "deepseek-v4-flash-vision-exp"
389
389
  ]);
390
390
  const DEEPSEEK_TARGET = "deepseek-flash";
391
- const LEGACY_KIMI = /* @__PURE__ */ new Set(["kimi-k2-0711-preview", "kimi-k2-turbo-preview"]);
392
- const KIMI_TARGET = "kimi-k2.6";
391
+ const LEGACY_KIMI = /* @__PURE__ */ new Set([
392
+ "kimi-k2-0711-preview",
393
+ "kimi-k2-turbo-preview",
394
+ "kimi-k2.5",
395
+ "kimi-k2-thinking",
396
+ "kimi-k2-thinking-turbo"
397
+ ]);
398
+ const KIMI_TARGET = "kimi-k2.7-code";
393
399
  const LEGACY_CLAUDE = {
394
400
  "claude-sonnet-4-5-20250929": "claude-sonnet-5-5",
395
401
  "claude-sonnet-4-5": "claude-sonnet-5-5",
@@ -3,16 +3,16 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-U6VATMAI.js";
7
- import "./chunk-T4K4RZKR.js";
6
+ } from "./chunk-LUJ4JVMI.js";
7
+ import "./chunk-CCFCPAKN.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-6YZEZFX5.js";
10
- import "./chunk-NKTCITLH.js";
11
- import "./chunk-OVEZ6HB5.js";
10
+ import "./chunk-GEC3MEVQ.js";
11
+ import "./chunk-QU74ONFF.js";
12
12
  import "./chunk-E2W2MI6H.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-BMLQPSHP.js";
15
- import "./chunk-NOQKCHIQ.js";
15
+ import "./chunk-AJITHMRE.js";
16
16
  export {
17
17
  CI_COMMENT_MARKER,
18
18
  countSeverity,
@@ -6,8 +6,8 @@ import {
6
6
  formatCiResult,
7
7
  formatCiSarif,
8
8
  normalizeCiThresholds
9
- } from "./chunk-T4K4RZKR.js";
10
- import "./chunk-NOQKCHIQ.js";
9
+ } from "./chunk-CCFCPAKN.js";
10
+ import "./chunk-AJITHMRE.js";
11
11
  export {
12
12
  DEFAULT_CI_THRESHOLDS,
13
13
  detectCiGateSignals,
@@ -39,7 +39,7 @@ import {
39
39
  TEST_TIMEOUT,
40
40
  VERSION,
41
41
  buildUserIdentityPrompt
42
- } from "./chunk-NOQKCHIQ.js";
42
+ } from "./chunk-AJITHMRE.js";
43
43
  export {
44
44
  AGENTIC_BEHAVIOR_GUIDELINE,
45
45
  APP_NAME,
@@ -38,7 +38,7 @@ import {
38
38
  TEST_TIMEOUT,
39
39
  VERSION,
40
40
  buildUserIdentityPrompt
41
- } from "./chunk-LOS7T2JS.js";
41
+ } from "./chunk-3YVZJHTF.js";
42
42
  export {
43
43
  AGENTIC_BEHAVIOR_GUIDELINE,
44
44
  APP_NAME,