image-vision-mcp 1.0.1 → 1.0.3

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.
@@ -6,14 +6,32 @@ import fs from "fs";
6
6
  import path from "path";
7
7
  import os from "os";
8
8
  import { spawn } from "child_process";
9
- import { callMoonshot } from "../services/moonshot.js";
9
+ import crypto from "crypto";
10
+ import { callVision } from "../services/vision.js";
10
11
  // ────────────────────── 日志 ──────────────────────
11
- // 日志文件路径:优先用环境变量,否则放系统临时目录(跨平台、无需权限处理)
12
+ // 日志文件路径:优先用环境变量,否则放项目内 logs/ 目录。
13
+ // 用 import.meta.url 定位 dist/proxy/ → 反推项目根:独立代理进程是 detached
14
+ // spawn 的,cwd 不可靠(可能继承自任意 Claude Code 会话),只能用脚本自身位置定位。
15
+ const PROJECT_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
12
16
  const LOG_FILE = process.env.VISION_MCP_LOG_FILE ||
13
- path.join(os.tmpdir(), "vision-mcp-proxy.log");
17
+ path.join(PROJECT_ROOT, "logs", "vision-mcp-proxy.log");
14
18
  const LOG_MAX_SIZE = 10 * 1024 * 1024; // 10MB,超过后清空旧日志
19
+ // 确保日志目录存在(环境变量覆盖到自定义路径时同样需要)。同步创建一次即可,
20
+ // 失败也不影响代理功能——后续 appendFile 会静默失败,请求转发不受影响。
21
+ try {
22
+ fs.mkdirSync(path.dirname(LOG_FILE), { recursive: true });
23
+ }
24
+ catch {
25
+ // 目录已存在或无权限,忽略
26
+ }
27
+ function nowLocal() {
28
+ const d = new Date();
29
+ const pad = (n, l = 2) => String(n).padStart(l, "0");
30
+ return (`${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ` +
31
+ `${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}`);
32
+ }
15
33
  function log(msg) {
16
- const line = `[${new Date().toISOString()}] ${msg}\n`;
34
+ const line = `[${nowLocal()}] ${msg}\n`;
17
35
  console.error(line.trim());
18
36
  fs.stat(LOG_FILE, (statErr, stats) => {
19
37
  if (statErr || stats.size < LOG_MAX_SIZE) {
@@ -50,40 +68,222 @@ const UPSTREAM_AUTH_TOKEN = process.env.UPSTREAM_AUTH_TOKEN ||
50
68
  "";
51
69
  const IMAGE_DESC_PROMPT = process.env.IMAGE_DESC_PROMPT ||
52
70
  "请详细描述这张图片的内容。如果是图表/截图,请提取关键信息;如果包含文字,请提取文字内容;如果是 UI 界面,请描述界面元素和布局。描述要简洁准确。";
71
+ // 复用到上游模型的连接,减少慢流式响应场景下频繁建连的额外开销。
72
+ const upstreamHttpAgent = new http.Agent({ keepAlive: true, maxSockets: 50 });
73
+ const upstreamHttpsAgent = new https.Agent({ keepAlive: true, maxSockets: 50 });
53
74
  // ────────────────────── 图片识别 ──────────────────────
54
- async function describeImage(base64Data, mimeType) {
75
+ // ────────────────────── 图片识别缓存 ──────────────────────
76
+ // Claude Code 每次请求都带完整对话历史,历史里的图片会被反复识别(每张 30-60s)。
77
+ // 用 base64 的 sha256 做 key 缓存识别结果,同一张图只识别一次。
78
+ // LRU 淘汰:Map 按插入顺序,命中时删除重插移到末尾,超限时删最早的。
79
+ const IMAGE_CACHE_MAX = 100;
80
+ const imageCache = new Map();
81
+ // 同一张图片可能同时出现在多个并发请求或历史消息里。复用进行中的识别,
82
+ // 只有所有等待者都取消时才中止底层 视觉模型 请求,避免误伤其他请求。
83
+ const pendingImageDescriptions = new Map();
84
+ function hashImage(base64Data) {
85
+ return crypto.createHash("sha256").update(base64Data).digest("hex").slice(0, 32);
86
+ }
87
+ function getCachedDescription(base64Data) {
88
+ const key = hashImage(base64Data);
89
+ const desc = imageCache.get(key);
90
+ if (desc) {
91
+ imageCache.delete(key);
92
+ imageCache.set(key, desc); // 移到末尾,标记为最近使用
93
+ return desc;
94
+ }
95
+ return null;
96
+ }
97
+ function setCachedDescription(base64Data, description) {
98
+ const key = hashImage(base64Data);
99
+ imageCache.set(key, description);
100
+ if (imageCache.size > IMAGE_CACHE_MAX) {
101
+ const oldestKey = imageCache.keys().next().value;
102
+ if (oldestKey)
103
+ imageCache.delete(oldestKey);
104
+ }
105
+ }
106
+ // 失败短期缓存:识别失败(超时/空响应)的图 5 分钟内不重试,
107
+ // 避免对话历史里某张图每次请求都卡 60s 超时。过期后允许重试(视觉模型 恢复后能成功)。
108
+ const FAILURE_CACHE_TTL_MS = 5 * 60 * 1000;
109
+ const failureCache = new Map(); // hash -> 失败时间戳
110
+ function getFailureTimestamp(base64Data) {
111
+ const key = hashImage(base64Data);
112
+ const ts = failureCache.get(key);
113
+ if (ts === undefined)
114
+ return null;
115
+ failureCache.delete(key); // LRU 移到末尾
116
+ if (Date.now() - ts > FAILURE_CACHE_TTL_MS) {
117
+ return null; // 过期,不再缓存
118
+ }
119
+ failureCache.set(key, ts);
120
+ return ts;
121
+ }
122
+ function setFailureTimestamp(base64Data) {
123
+ const key = hashImage(base64Data);
124
+ failureCache.set(key, Date.now());
125
+ if (failureCache.size > IMAGE_CACHE_MAX) {
126
+ const oldestKey = failureCache.keys().next().value;
127
+ if (oldestKey)
128
+ failureCache.delete(oldestKey);
129
+ }
130
+ }
131
+ function isCanceledError(err) {
132
+ if (!(err instanceof Error))
133
+ return false;
134
+ return (err.name === "CanceledError" ||
135
+ err.message === "canceled" ||
136
+ err.message.includes("请求已取消"));
137
+ }
138
+ async function waitForPendingImage(task, signal) {
139
+ task.waiters++;
140
+ let removeAbortListener = () => { };
141
+ try {
142
+ if (!signal) {
143
+ return await task.promise;
144
+ }
145
+ if (signal.aborted) {
146
+ throw new Error("请求已取消");
147
+ }
148
+ return await new Promise((resolve, reject) => {
149
+ const onAbort = () => reject(new Error("请求已取消"));
150
+ removeAbortListener = () => signal.removeEventListener("abort", onAbort);
151
+ signal.addEventListener("abort", onAbort, { once: true });
152
+ task.promise.then(resolve, reject);
153
+ });
154
+ }
155
+ finally {
156
+ removeAbortListener();
157
+ task.waiters--;
158
+ if (task.waiters === 0 && !task.settled) {
159
+ task.controller.abort();
160
+ }
161
+ }
162
+ }
163
+ async function describeImage(base64Data, mimeType, signal) {
164
+ if (signal?.aborted) {
165
+ throw new Error("请求已取消");
166
+ }
167
+ // 成功缓存命中:历史消息里反复出现的同一张图不重复调 视觉模型
168
+ const cached = getCachedDescription(base64Data);
169
+ if (cached) {
170
+ log(`[image-proxy] 图片命中缓存,跳过识别`);
171
+ return cached;
172
+ }
173
+ // 失败缓存命中:近期识别失败过的图短期不重试,避免每次请求都卡超时
174
+ if (getFailureTimestamp(base64Data) !== null) {
175
+ log(`[image-proxy] 图片命中失败缓存,跳过重试`);
176
+ throw new Error("图片近期识别失败,跳过重试");
177
+ }
55
178
  const dataUrl = `data:${mimeType};base64,${base64Data}`;
56
- const apiKey = process.env.MOONSHOT_API_KEY || "";
179
+ const apiKey = process.env.VISION_API_KEY || "";
57
180
  if (!apiKey) {
58
- throw new Error("MOONSHOT_API_KEY 未设置");
59
- }
60
- const response = await callMoonshot({
61
- apiKey,
62
- messages: [
63
- {
64
- role: "user",
65
- content: [
66
- { type: "image_url", image_url: { url: dataUrl } },
67
- { type: "text", text: IMAGE_DESC_PROMPT },
181
+ throw new Error("VISION_API_KEY 未设置");
182
+ }
183
+ const key = hashImage(base64Data);
184
+ const pending = pendingImageDescriptions.get(key);
185
+ if (pending) {
186
+ log(`[image-proxy] 图片识别进行中,复用同一个请求`);
187
+ return waitForPendingImage(pending, signal);
188
+ }
189
+ const task = {
190
+ controller: new AbortController(),
191
+ waiters: 0,
192
+ settled: false,
193
+ };
194
+ task.promise = (async () => {
195
+ try {
196
+ const response = await callVision({
197
+ apiKey,
198
+ messages: [
199
+ {
200
+ role: "user",
201
+ content: [
202
+ { type: "image_url", image_url: { url: dataUrl } },
203
+ { type: "text", text: IMAGE_DESC_PROMPT },
204
+ ],
205
+ },
68
206
  ],
69
- },
70
- ],
71
- maxTokens: 2048,
72
- });
73
- const description = response.choices?.[0]?.message?.content || "";
74
- if (!description) {
75
- throw new Error("Moonshot API 返回空内容");
207
+ maxTokens: 2048,
208
+ signal: task.controller.signal,
209
+ });
210
+ const description = response.choices?.[0]?.message?.content || "";
211
+ if (!description) {
212
+ throw new Error("视觉模型 API 返回空内容");
213
+ }
214
+ setCachedDescription(base64Data, description);
215
+ return description;
216
+ }
217
+ catch (err) {
218
+ // 失败:记入失败缓存,短期不再重试(让对话继续,不阻塞 60s)
219
+ if (!isCanceledError(err)) {
220
+ setFailureTimestamp(base64Data);
221
+ }
222
+ throw err;
223
+ }
224
+ finally {
225
+ task.settled = true;
226
+ pendingImageDescriptions.delete(key);
227
+ }
228
+ })();
229
+ pendingImageDescriptions.set(key, task);
230
+ return waitForPendingImage(task, signal);
231
+ }
232
+ const IMAGE_MARKER_RE = /"type"\s*:\s*"(image|image_url|tool_result)"|"source"\s*:\s*\{\s*"type"\s*:\s*"base64"|data:image\/[a-z+.-]+;base64,/i;
233
+ function mayContainImagePayload(rawBody) {
234
+ // 大多数消息无图,先用轻量文本探测跳过 JSON.parse 和深度扫描。
235
+ return IMAGE_MARKER_RE.test(rawBody);
236
+ }
237
+ function contentHasImage(content) {
238
+ if (!Array.isArray(content))
239
+ return false;
240
+ for (const block of content) {
241
+ if (block?.type === "image" || block?.type === "image_url") {
242
+ return true;
243
+ }
244
+ if (block?.type === "tool_result" && contentHasImage(block.content)) {
245
+ return true;
246
+ }
247
+ }
248
+ return false;
249
+ }
250
+ function collectForwardedImageTexts(content, result) {
251
+ if (!Array.isArray(content))
252
+ return;
253
+ for (const block of content) {
254
+ if (block?.type === "text" &&
255
+ typeof block.text === "string" &&
256
+ (block.text.includes("[以下是用户粘贴的图片内容描述]") ||
257
+ block.text.includes("[以下是截图内容描述]") ||
258
+ block.text.includes("[图片识别失败:"))) {
259
+ result.push(block.text);
260
+ }
261
+ if (block?.type === "tool_result") {
262
+ collectForwardedImageTexts(block.content, result);
263
+ }
264
+ }
265
+ }
266
+ function logForwardedImageTexts(messages) {
267
+ if (!Array.isArray(messages))
268
+ return;
269
+ const forwardedTexts = [];
270
+ for (const message of messages) {
271
+ if (message && typeof message === "object" && "content" in message) {
272
+ collectForwardedImageTexts(message.content, forwardedTexts);
273
+ }
76
274
  }
77
- return description;
275
+ forwardedTexts.forEach((text, index) => {
276
+ log(`[image-proxy] 转发到上游 /v1/messages 的图片内容 #${index + 1} (${text.length} chars):\n${text}`);
277
+ });
78
278
  }
79
279
  // 处理单个 content block:图片类型识别后替换为文字,其余原样返回。
80
280
  // 同层数组的多个图片块由调用方 Promise.all 并行触发,这里只负责单块转换。
81
- async function describeBlock(block) {
281
+ async function describeBlock(block, signal) {
82
282
  // 格式1: Anthropic 标准 {"type":"image","source":{"type":"base64",...}}
83
283
  if (block?.type === "image" && block.source?.type === "base64") {
84
284
  const { media_type, data } = block.source;
85
285
  try {
86
- const description = await describeImage(data, media_type);
286
+ const description = await describeImage(data, media_type, signal);
87
287
  log(`[image-proxy] 图片已识别 (${media_type}, ${Math.round((data.length * 0.75) / 1024)} KB)`);
88
288
  return {
89
289
  type: "text",
@@ -106,7 +306,7 @@ async function describeBlock(block) {
106
306
  if (match) {
107
307
  const [, media_type, data] = match;
108
308
  try {
109
- const description = await describeImage(data, media_type);
309
+ const description = await describeImage(data, media_type, signal);
110
310
  log(`[image-proxy] image_url 图片已识别 (${media_type})`);
111
311
  return {
112
312
  type: "text",
@@ -126,7 +326,7 @@ async function describeBlock(block) {
126
326
  // 格式3: tool_result 里嵌套图片(MCP 工具返回的截图)
127
327
  if (block?.type === "tool_result" && Array.isArray(block.content)) {
128
328
  const toolContent = block.content;
129
- const processed = await processContent(toolContent);
329
+ const processed = await processContent(toolContent, signal);
130
330
  return { ...block, content: processed };
131
331
  }
132
332
  // 其他未识别的 image source type
@@ -135,7 +335,7 @@ async function describeBlock(block) {
135
335
  }
136
336
  return block;
137
337
  }
138
- async function processContent(content) {
338
+ async function processContent(content, signal) {
139
339
  if (typeof content === "string")
140
340
  return content;
141
341
  if (!Array.isArray(content))
@@ -144,37 +344,44 @@ async function processContent(content) {
144
344
  const blockTypes = content.map((b) => b?.type || "unknown");
145
345
  log(`[image-proxy] content blocks: ${JSON.stringify(blockTypes)}`);
146
346
  // 并行识别同一层级的所有图片块,map 保持原顺序
147
- return Promise.all(content.map((block) => describeBlock(block)));
347
+ return Promise.all(content.map((block) => describeBlock(block, signal)));
148
348
  }
149
- async function processMessages(messages) {
349
+ async function processMessages(messages, signal) {
150
350
  if (!Array.isArray(messages))
151
351
  return messages;
152
352
  for (const message of messages) {
353
+ if (signal?.aborted)
354
+ throw new Error("请求已取消");
153
355
  if (message && typeof message === "object" && message.content !== undefined) {
154
- message.content = await processContent(message.content);
356
+ message.content = await processContent(message.content, signal);
155
357
  }
156
358
  }
157
359
  return messages;
158
360
  }
159
- // ────────────────────── 转发请求 ──────────────────────
160
- function forwardRequest(req, res, body) {
361
+ function forwardRequest(req, res, body, meta, signal) {
161
362
  const baseUrl = new URL(UPSTREAM_BASE_URL);
162
363
  const basePath = baseUrl.pathname.replace(/\/+$/, "");
163
364
  const fullPath = basePath + (req.url || "");
164
365
  const isHttps = baseUrl.protocol === "https:";
165
366
  const lib = isHttps ? https : http;
367
+ const upstreamUrl = new URL(fullPath, baseUrl.origin).toString();
368
+ const pathOnly = (req.url || "").split("?")[0];
369
+ if (meta) {
370
+ const elapsed = Date.now() - meta.reqStart;
371
+ log(`[阶段] 转发开始 ${req.method} ${pathOnly} -> ${upstreamUrl} body=${meta.origSizeKB}KB ${meta.hasImage ? "有图" : "无图"} elapsed=${elapsed}ms`);
372
+ }
166
373
  const headers = { ...req.headers };
167
374
  delete headers["host"];
168
- delete headers["content-length"];
169
- // body 已被解压/修改,必须删除原压缩标记和逐跳头,否则上游会尝试解压明文导致失败
170
- delete headers["content-encoding"];
171
- delete headers["transfer-encoding"];
172
375
  headers["host"] = baseUrl.host;
173
376
  if (UPSTREAM_AUTH_TOKEN) {
174
377
  headers["authorization"] = `Bearer ${UPSTREAM_AUTH_TOKEN}`;
175
378
  headers["x-api-key"] = UPSTREAM_AUTH_TOKEN;
176
379
  }
177
- if (body) {
380
+ if (body !== null) {
381
+ delete headers["content-length"];
382
+ // body 已被解压/修改,必须删除原压缩标记和逐跳头,否则上游会尝试解压明文导致失败
383
+ delete headers["content-encoding"];
384
+ delete headers["transfer-encoding"];
178
385
  headers["content-length"] = String(Buffer.byteLength(body));
179
386
  }
180
387
  const options = {
@@ -183,25 +390,46 @@ function forwardRequest(req, res, body) {
183
390
  port: baseUrl.port || (isHttps ? 443 : 80),
184
391
  path: fullPath,
185
392
  headers,
393
+ agent: isHttps ? upstreamHttpsAgent : upstreamHttpAgent,
394
+ signal,
186
395
  };
187
396
  const proxyReq = lib.request(options, (proxyRes) => {
188
- res.writeHead(proxyRes.statusCode || 502, proxyRes.headers);
397
+ const status = proxyRes.statusCode || 502;
398
+ if (meta) {
399
+ const elapsed = Date.now() - meta.reqStart;
400
+ log(`[阶段] 上游响应 ${req.method} ${pathOnly} -> ${upstreamUrl} status=${status} body=${meta.origSizeKB}KB ${meta.hasImage ? "有图" : "无图"} 首包耗时=${elapsed}ms`);
401
+ }
402
+ if (res.destroyed) {
403
+ proxyRes.destroy();
404
+ return;
405
+ }
406
+ res.writeHead(status, proxyRes.headers);
189
407
  proxyRes.pipe(res);
190
408
  });
191
409
  proxyReq.on("error", (err) => {
192
- log(`[image-proxy] 转发失败: ${err.message}`);
410
+ if (signal?.aborted || isCanceledError(err) || err.name === "AbortError") {
411
+ return;
412
+ }
413
+ if (meta) {
414
+ const elapsed = Date.now() - meta.reqStart;
415
+ log(`[image-proxy] 转发失败 ${req.method} ${pathOnly} -> ${upstreamUrl} (耗时=${elapsed}ms): ${err.message}`);
416
+ }
417
+ else {
418
+ log(`[image-proxy] 转发失败 ${req.method} ${pathOnly} -> ${upstreamUrl}: ${err.message}`);
419
+ }
193
420
  if (!res.headersSent) {
194
421
  res.writeHead(502, { "Content-Type": "application/json" });
195
422
  res.end(JSON.stringify({ error: { type: "proxy_error", message: err.message } }));
196
423
  }
197
424
  });
198
- if (body) {
199
- proxyReq.write(body);
425
+ if (body !== null) {
426
+ proxyReq.end(body);
200
427
  }
201
428
  else {
202
429
  req.pipe(proxyReq);
430
+ req.on("aborted", () => proxyReq.destroy(new Error("客户端请求已取消")));
431
+ req.on("error", (err) => proxyReq.destroy(err));
203
432
  }
204
- proxyReq.end();
205
433
  }
206
434
  // ────────────────────── 单例锁 ──────────────────────
207
435
  // 锁文件路径:系统临时目录,跨平台无需权限处理
@@ -282,9 +510,30 @@ export function startImageProxy() {
282
510
  process.on("beforeExit", releaseOnExit);
283
511
  process.on("exit", releaseOnExit);
284
512
  const server = http.createServer(async (req, res) => {
513
+ const reqStart = Date.now();
514
+ // Claude Code 中断/重试时立即取消本轮代理工作,避免旧请求继续占用
515
+ // 视觉模型 调用或上游流式连接。
516
+ const requestController = new AbortController();
517
+ const abortRequest = () => {
518
+ if (!res.writableEnded) {
519
+ requestController.abort();
520
+ }
521
+ };
522
+ req.on("aborted", abortRequest);
523
+ res.on("close", abortRequest);
524
+ // /v1/messages 是 Anthropic Claude Messages API 端点,只有这类请求的 body
525
+ // 里才可能带图片,需要读全 body 拦截处理;其它请求(/v1/models、健康检查等)
526
+ // 直接透传,不解析 body 以省开销。用 includes 而非 === 是因为 url 可能带
527
+ // query string 或 UPSTREAM_BASE_URL 的 basePath 前缀。
285
528
  const isMessagesEndpoint = req.method === "POST" && (req.url || "").includes("/v1/messages");
529
+ const pathOnly = (req.url || "").split("?")[0];
530
+ log(`[阶段] 接收 ${req.method} ${pathOnly}`);
286
531
  if (!isMessagesEndpoint) {
287
- forwardRequest(req, res, null);
532
+ forwardRequest(req, res, null, {
533
+ reqStart,
534
+ hasImage: false,
535
+ origSizeKB: "?",
536
+ }, requestController.signal);
288
537
  return;
289
538
  }
290
539
  const chunks = [];
@@ -292,6 +541,7 @@ export function startImageProxy() {
292
541
  req.on("end", async () => {
293
542
  const buffer = Buffer.concat(chunks);
294
543
  const contentEncoding = (req.headers["content-encoding"] || "").toLowerCase();
544
+ log(`[阶段] body读取完成 ${req.method} ${pathOnly} size=${(buffer.length / 1024).toFixed(1)}KB encoding=${contentEncoding || "none"} elapsed=${Date.now() - reqStart}ms`);
295
545
  // 解压请求体(支持 gzip / deflate / br),否则 JSON.parse 会失败
296
546
  let rawBody;
297
547
  try {
@@ -307,6 +557,7 @@ export function startImageProxy() {
307
557
  else {
308
558
  rawBody = buffer.toString("utf8");
309
559
  }
560
+ log(`[阶段] body解码完成 ${req.method} ${pathOnly} rawSize=${(Buffer.byteLength(rawBody) / 1024).toFixed(1)}KB elapsed=${Date.now() - reqStart}ms`);
310
561
  }
311
562
  catch (err) {
312
563
  log(`[image-proxy] 请求体解压失败: ${err.message}`);
@@ -319,36 +570,50 @@ export function startImageProxy() {
319
570
  return;
320
571
  }
321
572
  try {
573
+ const origSizeKB = (Buffer.byteLength(rawBody) / 1024).toFixed(1);
574
+ if (!mayContainImagePayload(rawBody)) {
575
+ log(`[阶段] 无图快速转发 ${req.method} ${pathOnly} elapsed=${Date.now() - reqStart}ms`);
576
+ forwardRequest(req, res, rawBody, {
577
+ reqStart,
578
+ hasImage: false,
579
+ origSizeKB,
580
+ }, requestController.signal);
581
+ return;
582
+ }
322
583
  const requestData = JSON.parse(rawBody);
584
+ log(`[阶段] JSON解析完成 ${req.method} ${pathOnly} elapsed=${Date.now() - reqStart}ms`);
323
585
  let hasImage = false;
324
586
  if (Array.isArray(requestData.messages)) {
325
587
  for (const msg of requestData.messages) {
326
- if (Array.isArray(msg.content)) {
327
- for (const block of msg.content) {
328
- // 检测所有可能的图片格式
329
- if (block?.type === "image" ||
330
- block?.type === "image_url" ||
331
- (block?.type === "tool_result" && Array.isArray(block.content))) {
332
- hasImage = true;
333
- break;
334
- }
335
- }
336
- }
588
+ hasImage = contentHasImage(msg.content);
337
589
  if (hasImage)
338
590
  break;
339
591
  }
340
592
  }
341
593
  if (hasImage) {
342
594
  log(`[image-proxy] 检测到图片,开始识别...`);
343
- requestData.messages = await processMessages(requestData.messages);
595
+ requestData.messages = await processMessages(requestData.messages, requestController.signal);
596
+ log(`[阶段] 图片处理完成 ${req.method} ${pathOnly} elapsed=${Date.now() - reqStart}ms`);
597
+ logForwardedImageTexts(requestData.messages);
344
598
  const newBody = JSON.stringify(requestData);
345
- forwardRequest(req, res, newBody);
599
+ forwardRequest(req, res, newBody, {
600
+ reqStart,
601
+ hasImage: true,
602
+ origSizeKB,
603
+ }, requestController.signal);
346
604
  }
347
605
  else {
348
- forwardRequest(req, res, rawBody);
606
+ forwardRequest(req, res, rawBody, {
607
+ reqStart,
608
+ hasImage: false,
609
+ origSizeKB,
610
+ }, requestController.signal);
349
611
  }
350
612
  }
351
613
  catch (err) {
614
+ if (requestController.signal.aborted || isCanceledError(err)) {
615
+ return;
616
+ }
352
617
  log(`[image-proxy] 处理失败: ${err.message}`);
353
618
  if (!res.headersSent) {
354
619
  res.writeHead(500, { "Content-Type": "application/json" });
@@ -1 +1 @@
1
- {"version":3,"file":"imageProxy.js","sourceRoot":"","sources":["../../src/proxy/imageProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imageProxy.js","sourceRoot":"","sources":["../../src/proxy/imageProxy.ts"],"names":[],"mappings":"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"}
package/dist/schemas.d.ts CHANGED
@@ -13,14 +13,3 @@ export declare const DescribeImageInputSchema: z.ZodObject<{
13
13
  max_tokens?: number | undefined;
14
14
  }>;
15
15
  export type DescribeImageInput = z.infer<typeof DescribeImageInputSchema>;
16
- export declare const DescribeClipboardInputSchema: z.ZodObject<{
17
- prompt: z.ZodDefault<z.ZodString>;
18
- max_tokens: z.ZodDefault<z.ZodNumber>;
19
- }, "strict", z.ZodTypeAny, {
20
- prompt: string;
21
- max_tokens: number;
22
- }, {
23
- prompt?: string | undefined;
24
- max_tokens?: number | undefined;
25
- }>;
26
- export type DescribeClipboardInput = z.infer<typeof DescribeClipboardInputSchema>;
package/dist/schemas.js CHANGED
@@ -16,17 +16,4 @@ export const DescribeImageInputSchema = z.object({
16
16
  .default(2048)
17
17
  .describe("返回描述的最大 token 数,1-8192 之间,默认 2048"),
18
18
  }).strict();
19
- export const DescribeClipboardInputSchema = z.object({
20
- prompt: z.string()
21
- .min(1)
22
- .max(4000)
23
- .default(DEFAULT_PROMPT)
24
- .describe("询问图片的问题或识图指令,例如 '描述图片内容'、'图片中有哪些文字'、'这是什么图表'、'提取图片中的所有文字'"),
25
- max_tokens: z.number()
26
- .int()
27
- .min(1)
28
- .max(8192)
29
- .default(2048)
30
- .describe("返回描述的最大 token 数,1-8192 之间,默认 2048"),
31
- }).strict();
32
19
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACd,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC;SAC3B,QAAQ,CAAC,yFAAyF,CAAC;IACtG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,OAAO,CAAC,cAAc,CAAC;SACvB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,mCAAmC,CAAC;CACjD,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,OAAO,CAAC,cAAc,CAAC;SACvB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,mCAAmC,CAAC;CACjD,CAAC,CAAC,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACd,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC;SAC3B,QAAQ,CAAC,yFAAyF,CAAC;IACtG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,OAAO,CAAC,cAAc,CAAC;SACvB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,mCAAmC,CAAC;CACjD,CAAC,CAAC,MAAM,EAAE,CAAC"}