luma-mcp 1.2.7 → 1.2.9
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/CHANGELOG.md +52 -0
- package/README.md +21 -20
- package/build/config.d.ts +1 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +1 -0
- package/build/config.js.map +1 -1
- package/build/index.js +46 -5
- package/build/index.js.map +1 -1
- package/build/qwen-client.d.ts +2 -2
- package/build/qwen-client.d.ts.map +1 -1
- package/build/qwen-client.js +34 -20
- package/build/qwen-client.js.map +1 -1
- package/build/volcengine-client.d.ts.map +1 -1
- package/build/volcengine-client.js +5 -1
- package/build/volcengine-client.js.map +1 -1
- package/build/zhipu-client.d.ts.map +1 -1
- package/build/zhipu-client.js +3 -4
- package/build/zhipu-client.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
本项目的所有重大变更都将记录在此文件中。
|
|
4
4
|
|
|
5
|
+
## [1.2.9] - 2025-12-31
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- ✨ **视觉基础提示词优化**: 重写默认视觉系统提示词,强调基于截图中可见事实进行结构/布局/组件分析,减少对实现细节和不可见交互的主观猜测
|
|
10
|
+
- 📝 **工具说明收紧边界**: 更新 `analyze_image` 工具描述,建议上层模型直接传入用户原始问题,避免重复封装复杂视觉 prompt
|
|
11
|
+
|
|
12
|
+
### Technical Details
|
|
13
|
+
|
|
14
|
+
- `src/index.ts`: 调整 `DEFAULT_BASE_VISION_PROMPT` 内容与结构,增加对“只说可见事实、推测需显式标注”的约束;完善工具描述文案
|
|
15
|
+
- `src/config.ts`: 明确 `ENABLE_THINKING` 配置逻辑,默认启用思考模式,仅当环境变量显式设置为 `false` 时关闭
|
|
16
|
+
|
|
17
|
+
## [1.2.8] - 2025-12-23
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- 🐛 **修复 enableThinking 参数传递**: 修复 index.ts 中未将 enableThinking 参数传递给视觉模型客户端的问题
|
|
22
|
+
- 🔧 **统一 thinking 逻辑**: 所有支持 thinking 的客户端(智谱、千问、火山方舟)现在使用统一的启用逻辑
|
|
23
|
+
- 📝 **完善日志记录**: 千问客户端新增 API 调用日志,与其他客户端保持一致
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- ♻️ **重构智谱客户端**: 优化 thinking 参数处理逻辑,使代码更清晰易懂
|
|
28
|
+
- ♻️ **重构千问客户端**: 统一 thinking 启用逻辑,默认启用思考模式
|
|
29
|
+
- ✨ **火山方舟 thinking 支持**: 火山方舟 Doubao 模型现在正确支持思考模式
|
|
30
|
+
|
|
31
|
+
### Technical Details
|
|
32
|
+
|
|
33
|
+
- `src/index.ts`: 在 analyzeWithRetry 中正确传递 config.enableThinking 参数
|
|
34
|
+
- `src/zhipu-client.ts`: 重构 thinking 逻辑,使用 `if (enableThinking !== false)` 统一判断
|
|
35
|
+
- `src/qwen-client.ts`:
|
|
36
|
+
- 统一 thinking 启用逻辑为 `if (enableThinking !== false)`
|
|
37
|
+
- 新增 logger 导入和 API 调用日志
|
|
38
|
+
- 添加成功/失败日志记录
|
|
39
|
+
- `src/volcengine-client.ts`:
|
|
40
|
+
- 新增 thinking 参数支持到 VolcengineRequest 接口
|
|
41
|
+
- 实现 thinking 模式启用逻辑
|
|
42
|
+
- 更新日志记录以反映实际 thinking 状态
|
|
43
|
+
|
|
44
|
+
### Thinking Mode Support
|
|
45
|
+
|
|
46
|
+
现在所有支持的模型都正确启用思考模式:
|
|
47
|
+
|
|
48
|
+
| 模型 | Thinking 支持 | 实现方式 | 默认状态 |
|
|
49
|
+
|-----------------------|---------------|---------------------------------|----------|
|
|
50
|
+
| 智谱 GLM-4.6V | ✅ | `thinking: { type: "enabled" }` | 启用 |
|
|
51
|
+
| 千问 Qwen3-VL | ✅ | `extra_body.enable_thinking` | 启用 |
|
|
52
|
+
| 火山方舟 Doubao | ✅ | `thinking: { type: "enabled" }` | 启用 |
|
|
53
|
+
| 硅基流动 DeepSeek-OCR | ❌ | 不支持 | N/A |
|
|
54
|
+
|
|
55
|
+
用户可通过 `ENABLE_THINKING=false` 环境变量禁用思考模式以提升速度和降低成本。
|
|
56
|
+
|
|
5
57
|
## [1.2.7] - 2025-12-17
|
|
6
58
|
|
|
7
59
|
### Added
|
package/README.md
CHANGED
|
@@ -125,7 +125,7 @@ npx luma-mcp
|
|
|
125
125
|
"mcpServers": {
|
|
126
126
|
"luma": {
|
|
127
127
|
"command": "node",
|
|
128
|
-
"args": ["D:\\codes\\
|
|
128
|
+
"args": ["D:\\codes\\luma-mcp\\build\\index.js"],
|
|
129
129
|
"env": {
|
|
130
130
|
"ZHIPU_API_KEY": "your-zhipu-api-key"
|
|
131
131
|
}
|
|
@@ -141,7 +141,7 @@ npx luma-mcp
|
|
|
141
141
|
"mcpServers": {
|
|
142
142
|
"luma": {
|
|
143
143
|
"command": "node",
|
|
144
|
-
"args": ["D:\\codes\\
|
|
144
|
+
"args": ["D:\\codes\\luma-mcp\\build\\index.js"],
|
|
145
145
|
"env": {
|
|
146
146
|
"MODEL_PROVIDER": "siliconflow",
|
|
147
147
|
"SILICONFLOW_API_KEY": "your-siliconflow-api-key"
|
|
@@ -368,35 +368,35 @@ analyze_image({
|
|
|
368
368
|
|
|
369
369
|
### 通用配置
|
|
370
370
|
|
|
371
|
-
| 变量名 | 必需 | 默认值 | 说明
|
|
372
|
-
|
|
371
|
+
| 变量名 | 必需 | 默认值 | 说明 |
|
|
372
|
+
|-------------------|------|---------|----------------------------------------------|
|
|
373
373
|
| `MODEL_PROVIDER` | 否 | `zhipu` | 模型提供商:`zhipu`、`siliconflow` 或 `qwen` |
|
|
374
374
|
| `MODEL_NAME` | 否 | 见下文 | 模型名称(自动根据提供商选择) |
|
|
375
|
-
| `MAX_TOKENS` | 否 | `16384` | 最大生成 tokens
|
|
376
|
-
| `TEMPERATURE` | 否 | `0.7` | 温度参数 (0-1)
|
|
377
|
-
| `TOP_P` | 否 | `0.7` | Top-p 参数 (0-1)
|
|
375
|
+
| `MAX_TOKENS` | 否 | `16384` | 最大生成 tokens |
|
|
376
|
+
| `TEMPERATURE` | 否 | `0.7` | 温度参数 (0-1) |
|
|
377
|
+
| `TOP_P` | 否 | `0.7` | Top-p 参数 (0-1) |
|
|
378
378
|
| `ENABLE_THINKING` | 否 | `true` | 是否启用思考模式(GLM-4.6V 和 Qwen3-VL-Flash) |
|
|
379
379
|
|
|
380
380
|
### 智谱 GLM-4.6V 专用
|
|
381
381
|
|
|
382
|
-
| 变量名 | 必需
|
|
383
|
-
|
|
382
|
+
| 变量名 | 必需 | 默认值 | 说明 |
|
|
383
|
+
|-----------------|----------------|--------|---------------------|
|
|
384
384
|
| `ZHIPU_API_KEY` | 是(使用智谱时) | - | 智谱 AI 的 API 密钥 |
|
|
385
385
|
|
|
386
386
|
默认模型:`glm-4.6v`
|
|
387
387
|
|
|
388
388
|
### 硅基流动 DeepSeek-OCR 专用
|
|
389
389
|
|
|
390
|
-
| 变量名 | 必需
|
|
391
|
-
|
|
390
|
+
| 变量名 | 必需 | 默认值 | 说明 |
|
|
391
|
+
|-----------------------|--------------------|--------|---------------------|
|
|
392
392
|
| `SILICONFLOW_API_KEY` | 是(使用硅基流动时) | - | 硅基流动的 API 密钥 |
|
|
393
393
|
|
|
394
394
|
默认模型:`deepseek-ai/DeepSeek-OCR`
|
|
395
395
|
|
|
396
396
|
### 阿里云通义千问 Qwen3-VL-Flash 专用
|
|
397
397
|
|
|
398
|
-
| 变量名 | 必需
|
|
399
|
-
|
|
398
|
+
| 变量名 | 必需 | 默认值 | 说明 |
|
|
399
|
+
|---------------------|----------------|--------|-----------------------|
|
|
400
400
|
| `DASHSCOPE_API_KEY` | 是(使用千问时) | - | 阿里云百炼的 API 密钥 |
|
|
401
401
|
|
|
402
402
|
默认模型:`qwen3-vl-flash`
|
|
@@ -445,6 +445,7 @@ luma-mcp/
|
|
|
445
445
|
│ ├── zhipu-client.ts # GLM-4.6V API 客户端
|
|
446
446
|
│ ├── siliconflow-client.ts # DeepSeek-OCR API 客户端
|
|
447
447
|
│ ├── qwen-client.ts # Qwen3-VL API 客户端
|
|
448
|
+
│ ├── volcengine-client.ts # Doubao-Seed-1.6 API 客户端
|
|
448
449
|
│ ├── image-processor.ts # 图片处理
|
|
449
450
|
│ └── utils/
|
|
450
451
|
│ ├── logger.ts # 日志工具
|
|
@@ -541,13 +542,13 @@ data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...
|
|
|
541
542
|
### 如何选择模型?
|
|
542
543
|
|
|
543
544
|
| 特性 | GLM-4.6V(智谱) | DeepSeek-OCR(硅基流动) | Qwen3-VL-Flash(阿里云) |
|
|
544
|
-
|
|
545
|
-
| **费用** | 收费
|
|
546
|
-
| **中文理解** | 优秀
|
|
547
|
-
| **OCR 能力** | 良好
|
|
548
|
-
| **思考模式** | 支持
|
|
549
|
-
| **速度/成本** | 中等
|
|
550
|
-
| **适用场景** | 通用图片分析
|
|
545
|
+
|---------------|----------------|------------------------|------------------------|
|
|
546
|
+
| **费用** | 收费 | **完全免费** | 收费 |
|
|
547
|
+
| **中文理解** | 优秀 | 良好 | **优秀** |
|
|
548
|
+
| **OCR 能力** | 良好 | **优秀** | 优秀 |
|
|
549
|
+
| **思考模式** | 支持 | 不支持 | 支持 |
|
|
550
|
+
| **速度/成本** | 中等 | 免费 | **快速/低成本** |
|
|
551
|
+
| **适用场景** | 通用图片分析 | OCR、文字识别 | 快速分析、3D 定位 |
|
|
551
552
|
|
|
552
553
|
**推荐**:
|
|
553
554
|
|
package/build/config.d.ts
CHANGED
package/build/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;AAE5E,MAAM,WAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC;AAE5E,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,CAgDvC"}
|
package/build/config.js
CHANGED
|
@@ -47,6 +47,7 @@ export function loadConfig() {
|
|
|
47
47
|
temperature: parseFloat(process.env.TEMPERATURE || '0.7'),
|
|
48
48
|
topP: parseFloat(process.env.TOP_P || '0.7'),
|
|
49
49
|
enableThinking: process.env.ENABLE_THINKING !== 'false',
|
|
50
|
+
baseVisionPrompt: process.env.BASE_VISION_PROMPT,
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
//# sourceMappingURL=config.js.map
|
package/build/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,aAAa;IACb,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,OAAO,CAAkB,CAAC;IAEzF,kBAAkB;IAClB,IAAI,MAA0B,CAAC;IAC/B,IAAI,YAAoB,CAAC;IAEzB,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACzC,YAAY,GAAG,0BAA0B,CAAC;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACvC,YAAY,GAAG,gBAAgB,CAAC;QAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QACrC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACxC,YAAY,GAAG,8BAA8B,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACnC,YAAY,GAAG,UAAU,CAAC;QAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY;QAC7C,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,EAAE,EAAE,CAAC;QAC1D,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC;QACzD,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC;QAC9C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;QACvD,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;KAC/C,CAAC;AACJ,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -16,6 +16,37 @@ import { QwenClient } from "./qwen-client.js";
|
|
|
16
16
|
import { VolcengineClient } from "./volcengine-client.js";
|
|
17
17
|
import { imageToBase64, validateImageSource } from "./image-processor.js";
|
|
18
18
|
import { withRetry, createSuccessResponse, createErrorResponse, } from "./utils/helpers.js";
|
|
19
|
+
/**
|
|
20
|
+
* Default base vision prompt used when BASE_VISION_PROMPT is not set.
|
|
21
|
+
* This acts like a lightweight system prompt for image understanding.
|
|
22
|
+
*
|
|
23
|
+
* 设计目标:
|
|
24
|
+
* - 优先输出基于截图“可见事实”的结构/布局信息
|
|
25
|
+
* - 尽量减少凭经验猜测实现方式、性能、无障碍等不可见细节
|
|
26
|
+
*/
|
|
27
|
+
const DEFAULT_BASE_VISION_PROMPT = [
|
|
28
|
+
"你是一个专门帮助开发者理解截图内容的视觉结构分析助手。",
|
|
29
|
+
"你的首要目标是:基于截图中可见的信息,准确还原页面/界面的结构、布局和主要元素,而不是主观做视觉审美评价或猜测底层实现。",
|
|
30
|
+
"当用户提到“页面结构”、“页面架构”、“布局”、“组件树”、“还原界面”、“前端/客户端界面”等需求时,请遵循以下原则:",
|
|
31
|
+
"1. 先进行【事实描述】,只陈述从截图中可以直接观察到的内容(区域划分、布局方式、组件/控件、大致层级关系等);不要推测不可见的信息,例如具体实现技术(JS/CSS/Canvas)、运行性能、无障碍属性(aria-*)、隐藏的交互状态(hover/focus/点击后的效果等)。",
|
|
32
|
+
"2. 描述布局时,尽量用有助于还原实现的方式组织信息,例如:顶部导航栏 / 左侧侧边栏 / 主内容区 / 底部栏、单栏/双栏/多栏、是否有固定头部等。",
|
|
33
|
+
"3. 如用户没有明确要求“设计点评/优化建议”,可以完全不写或只给最多 1~2 条简短、标明为“通用建议”的内容,且要明确说明这些建议无法仅凭截图确认当前是否已经做到。",
|
|
34
|
+
"4. 任何基于猜测的内容,都要使用“从截图中无法确认,但一般建议……”这样的表述,避免把猜测说成事实。",
|
|
35
|
+
].join("\n");
|
|
36
|
+
/**
|
|
37
|
+
* Build full prompt by combining base vision prompt and user prompt.
|
|
38
|
+
*/
|
|
39
|
+
function buildFullPrompt(userPrompt, basePrompt) {
|
|
40
|
+
if (!basePrompt) {
|
|
41
|
+
return userPrompt;
|
|
42
|
+
}
|
|
43
|
+
const trimmedBase = basePrompt.trim();
|
|
44
|
+
const trimmedUser = userPrompt.trim();
|
|
45
|
+
if (!trimmedBase) {
|
|
46
|
+
return trimmedUser;
|
|
47
|
+
}
|
|
48
|
+
return `${trimmedBase}\n\n用户任务描述:\n${trimmedUser}`;
|
|
49
|
+
}
|
|
19
50
|
/**
|
|
20
51
|
* 创建 MCP 服务器
|
|
21
52
|
*/
|
|
@@ -23,6 +54,7 @@ async function createServer() {
|
|
|
23
54
|
logger.info("Initializing Luma MCP Server");
|
|
24
55
|
// 加载配置
|
|
25
56
|
const config = loadConfig();
|
|
57
|
+
const baseVisionPrompt = config.baseVisionPrompt ?? DEFAULT_BASE_VISION_PROMPT;
|
|
26
58
|
// 根据配置选择模型客户端
|
|
27
59
|
let visionClient;
|
|
28
60
|
if (config.provider === "siliconflow") {
|
|
@@ -56,21 +88,30 @@ async function createServer() {
|
|
|
56
88
|
await validateImageSource(imageSource);
|
|
57
89
|
// 2. 处理图片(读取或返回URL)
|
|
58
90
|
const imageDataUrl = await imageToBase64(imageSource);
|
|
59
|
-
// 3.
|
|
60
|
-
const fullPrompt = prompt;
|
|
91
|
+
// 3. Build full prompt from base vision prompt and user prompt
|
|
92
|
+
const fullPrompt = buildFullPrompt(prompt, baseVisionPrompt);
|
|
61
93
|
// 4. 调用视觉模型分析图片
|
|
62
|
-
return await visionClient.analyzeImage(imageDataUrl, fullPrompt);
|
|
94
|
+
return await visionClient.analyzeImage(imageDataUrl, fullPrompt, config.enableThinking);
|
|
63
95
|
}, 2, // 最多重试2次
|
|
64
96
|
1000 // 初始延补1秒
|
|
65
97
|
);
|
|
66
98
|
// 注册工具 - 使用 McpServer.tool() API
|
|
67
|
-
server.tool("analyze_image",
|
|
99
|
+
server.tool("analyze_image", `图像分析工具:
|
|
100
|
+
- 何时调用:当用户提到“看图、看截图、看看这张图片/界面/页面/报错/架构/布局/组件结构/页面结构”等需求,或者在对话中出现图片附件并询问与图片内容相关的问题(包括 UI/前端界面结构、代码截图、日志/报错截图、文档截图、表单、表格等),都应优先调用本工具,而不是只用文本推理。
|
|
101
|
+
- 图片来源:1) 用户粘贴图片时直接调用,无需手动指定路径 2) 指定本地图片路径,如 ./screenshot.png 3) 指定图片 URL,如 https://example.com/image.png。
|
|
102
|
+
- 提示词(prompt)约定:
|
|
103
|
+
- **不要**在调用本工具前自己构造一大段复杂分析提示词;
|
|
104
|
+
- 直接把“用户关于图片的原始问题/指令”作为 prompt 传入即可,例如:
|
|
105
|
+
- “这张图是什么界面?整体结构是什么样的?”
|
|
106
|
+
- “帮我从前端实现角度拆解这个页面的布局和组件结构”;
|
|
107
|
+
- Luma 会在服务器内部自动拼接系统级视觉说明和分析模板,调用底层视觉模型完成完整理解;
|
|
108
|
+
- 你只需要确保 prompt 准确表达用户对这张图想了解的内容,无需重复描述图片细节或编写长篇提示词。`, {
|
|
68
109
|
image_source: z
|
|
69
110
|
.string()
|
|
70
111
|
.describe("要分析的图片来源:支持三种方式 1) 用户粘贴图片时由Claude Desktop自动提供路径 2) 本地文件路径,如./screenshot.png 3) HTTP(S)图片URL,如https://example.com/image.png(支持 PNG、JPG、JPEG、WebP、GIF,最大 10MB)"),
|
|
71
112
|
prompt: z
|
|
72
113
|
.string()
|
|
73
|
-
.describe(
|
|
114
|
+
.describe("用户关于图片的原始问题或简短指令,例如“这张图是什么界面?”、“帮我分析这个页面的结构和布局”。服务器会在内部补充系统级视觉提示词并构造完整分析指令。"),
|
|
74
115
|
}, async (params) => {
|
|
75
116
|
try {
|
|
76
117
|
// AI应该已经根据用户问题生成了合适的prompt
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,wCAAwC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpE,uBAAuB,EAAE,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/qwen-client.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* 使用 OpenAI 兼容接口
|
|
4
4
|
* API 文档: https://help.aliyun.com/zh/model-studio/vision
|
|
5
5
|
*/
|
|
6
|
-
import { VisionClient } from
|
|
7
|
-
import type { LumaConfig } from
|
|
6
|
+
import { VisionClient } from "./vision-client.js";
|
|
7
|
+
import type { LumaConfig } from "./config.js";
|
|
8
8
|
export declare class QwenClient implements VisionClient {
|
|
9
9
|
private client;
|
|
10
10
|
private apiKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-client.d.ts","sourceRoot":"","sources":["../src/qwen-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"qwen-client.d.ts","sourceRoot":"","sources":["../src/qwen-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,UAAU;IAiBxB,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC;IAqElB,YAAY,IAAI,MAAM;CAGvB"}
|
package/build/qwen-client.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* 使用 OpenAI 兼容接口
|
|
4
4
|
* API 文档: https://help.aliyun.com/zh/model-studio/vision
|
|
5
5
|
*/
|
|
6
|
-
import axios from
|
|
6
|
+
import axios from "axios";
|
|
7
|
+
import { logger } from "./utils/logger.js";
|
|
7
8
|
export class QwenClient {
|
|
8
9
|
client;
|
|
9
10
|
apiKey;
|
|
@@ -17,10 +18,10 @@ export class QwenClient {
|
|
|
17
18
|
this.temperature = config.temperature;
|
|
18
19
|
// 使用阿里云百炼的 OpenAI 兼容接口
|
|
19
20
|
this.client = axios.create({
|
|
20
|
-
baseURL:
|
|
21
|
+
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
21
22
|
headers: {
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
Authorization: `Bearer ${config.apiKey}`,
|
|
24
|
+
"Content-Type": "application/json",
|
|
24
25
|
},
|
|
25
26
|
timeout: 180000, // 180秒超时
|
|
26
27
|
});
|
|
@@ -32,39 +33,52 @@ export class QwenClient {
|
|
|
32
33
|
model: this.model,
|
|
33
34
|
messages: [
|
|
34
35
|
{
|
|
35
|
-
role:
|
|
36
|
+
role: "user",
|
|
36
37
|
content: [
|
|
37
38
|
{
|
|
38
|
-
type:
|
|
39
|
+
type: "image_url",
|
|
39
40
|
image_url: {
|
|
40
|
-
url: imageDataUrl
|
|
41
|
-
}
|
|
41
|
+
url: imageDataUrl,
|
|
42
|
+
},
|
|
42
43
|
},
|
|
43
44
|
{
|
|
44
|
-
type:
|
|
45
|
-
text: prompt
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
45
|
+
type: "text",
|
|
46
|
+
text: prompt,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
49
50
|
],
|
|
50
51
|
max_tokens: this.maxTokens,
|
|
51
52
|
temperature: this.temperature,
|
|
52
|
-
stream: false
|
|
53
|
+
stream: false,
|
|
53
54
|
};
|
|
54
|
-
//
|
|
55
|
-
if (enableThinking) {
|
|
55
|
+
// 根据参数决定是否启用思考模式
|
|
56
|
+
if (enableThinking !== false) {
|
|
56
57
|
requestBody.extra_body = {
|
|
57
58
|
enable_thinking: true,
|
|
58
|
-
thinking_budget: 81920 // 最大思考 Token 数
|
|
59
|
+
thinking_budget: 81920, // 最大思考 Token 数
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
+
logger.info("Calling Qwen3-VL API", {
|
|
63
|
+
model: this.model,
|
|
64
|
+
thinking: !!requestBody.extra_body,
|
|
65
|
+
});
|
|
66
|
+
const response = await this.client.post("/chat/completions", requestBody);
|
|
62
67
|
if (!response.data?.choices?.[0]?.message?.content) {
|
|
63
|
-
throw new Error(
|
|
68
|
+
throw new Error("Invalid response format from Qwen API");
|
|
64
69
|
}
|
|
65
|
-
|
|
70
|
+
const result = response.data.choices[0].message.content;
|
|
71
|
+
const usage = response.data.usage;
|
|
72
|
+
logger.info("Qwen3-VL API call successful", {
|
|
73
|
+
tokens: usage?.total_tokens || 0,
|
|
74
|
+
model: response.data.model,
|
|
75
|
+
});
|
|
76
|
+
return result;
|
|
66
77
|
}
|
|
67
78
|
catch (error) {
|
|
79
|
+
logger.error("Qwen3-VL API call failed", {
|
|
80
|
+
error: error instanceof Error ? error.message : String(error),
|
|
81
|
+
});
|
|
68
82
|
if (axios.isAxiosError(error)) {
|
|
69
83
|
const errorMessage = error.response?.data?.error?.message || error.message;
|
|
70
84
|
throw new Error(`Qwen API error: ${errorMessage}`);
|
package/build/qwen-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-client.js","sourceRoot":"","sources":["../src/qwen-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"qwen-client.js","sourceRoot":"","sources":["../src/qwen-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volcengine-client.d.ts","sourceRoot":"","sources":["../src/volcengine-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"volcengine-client.d.ts","sourceRoot":"","sources":["../src/volcengine-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8C9C;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAC2C;gBAElD,MAAM,EAAE,UAAU;IAO9B;;OAEG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC;IA6ElB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
|
|
@@ -47,9 +47,13 @@ export class VolcengineClient {
|
|
|
47
47
|
max_tokens: this.maxTokens,
|
|
48
48
|
stream: false,
|
|
49
49
|
};
|
|
50
|
+
// 根据参数决定是否启用思考模式
|
|
51
|
+
if (enableThinking !== false) {
|
|
52
|
+
requestBody.thinking = { type: "enabled" };
|
|
53
|
+
}
|
|
50
54
|
logger.info("Calling Volcengine Doubao API", {
|
|
51
55
|
model: this.model,
|
|
52
|
-
thinking: !!
|
|
56
|
+
thinking: !!requestBody.thinking,
|
|
53
57
|
});
|
|
54
58
|
try {
|
|
55
59
|
const response = await axios.post(this.apiEndpoint, requestBody, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"volcengine-client.js","sourceRoot":"","sources":["../src/volcengine-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"volcengine-client.js","sourceRoot":"","sources":["../src/volcengine-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zhipu-client.d.ts","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4C9C;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAA2D;gBAElE,MAAM,EAAE,UAAU;IAQ9B;;OAEG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"zhipu-client.d.ts","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4C9C;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAA2D;gBAElE,MAAM,EAAE,UAAU;IAQ9B;;OAEG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,MAAM,CAAC;IA6ElB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
|
package/build/zhipu-client.js
CHANGED
|
@@ -46,11 +46,10 @@ export class ZhipuClient {
|
|
|
46
46
|
temperature: this.temperature,
|
|
47
47
|
max_tokens: this.maxTokens,
|
|
48
48
|
top_p: this.topP,
|
|
49
|
-
thinking: { type: "enabled" }, // 默认启用思考模式,提高分析准确性
|
|
50
49
|
};
|
|
51
|
-
//
|
|
52
|
-
if (enableThinking
|
|
53
|
-
|
|
50
|
+
// 根据参数决定是否启用思考模式
|
|
51
|
+
if (enableThinking !== false) {
|
|
52
|
+
requestBody.thinking = { type: "enabled" };
|
|
54
53
|
}
|
|
55
54
|
logger.info("Calling GLM-4.6V API", {
|
|
56
55
|
model: this.model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zhipu-client.js","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA2C3C;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAS;IACf,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,IAAI,CAAS;IACb,WAAW,GAAG,uDAAuD,CAAC;IAE9E,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,YAAoB,EACpB,MAAc,EACd,cAAwB;QAExB,MAAM,WAAW,GAAiB;YAChC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE;gCACT,GAAG,EAAE,YAAY;6BAClB;yBACF;wBACD;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF;aACF;YACD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,KAAK,EAAE,IAAI,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"zhipu-client.js","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "luma-mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9",
|
|
4
4
|
"description": "Multi-model vision understanding MCP server. Supports GLM-4.6V (Zhipu), DeepSeek-OCR (SiliconFlow - Free), Qwen3-VL-Flash (Aliyun), and Doubao-Seed-1.6 (Volcengine)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|