luma-mcp 1.2.5 → 1.2.7

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/.env.example CHANGED
@@ -1,45 +1,33 @@
1
- # Luma MCP 配置示例
2
-
3
- # ==========================================
4
- # 模型提供商选择
5
- # ==========================================
6
- # 可选值: zhipu, siliconflow, qwen
7
- # 默认: zhipu
1
+ # 模型提供商选择:zhipu | siliconflow | qwen | volcengine
8
2
  MODEL_PROVIDER=zhipu
9
3
 
10
- # ==========================================
11
- # 智谱 GLM-4.5V 配置(使用智谱时需要)
12
- # ==========================================
4
+ # ========== Zhipu AI (推荐 - GLM-4.6V) ==========
5
+ # 获取API Key: https://open.bigmodel.cn/
13
6
  ZHIPU_API_KEY=your-zhipu-api-key-here
14
-
15
- # ==========================================
16
- # 硅基流动 DeepSeek-OCR 配置(使用硅基流动时需要)
17
- # ==========================================
18
- # SILICONFLOW_API_KEY=your-siliconflow-api-key-here
19
-
20
- # ==========================================
21
- # 阿里云通义千问 Qwen3-VL 配置(使用阿里云时需要)
22
- # ==========================================
23
- # DASHSCOPE_API_KEY=your-dashscope-api-key-here
24
-
25
- # ==========================================
26
- # 通用配置(可选)
27
- # ==========================================
28
- # 模型名称(留空则使用默认值)
29
- # zhipu 默认: glm-4.5v
30
- # siliconflow 默认: deepseek-ai/DeepSeek-OCR
31
- # qwen 默认: qwen3-vl-flash
32
- # MODEL_NAME=
33
-
34
- # 最大生成 tokens(默认: 4096)
35
- # MAX_TOKENS=4096
36
-
37
- # 温度参数 0-1(默认: 0.7)
38
- # TEMPERATURE=0.7
39
-
40
- # Top-p 参数 0-1(默认: 0.7)
41
- # TOP_P=0.7
42
-
43
- # 是否启用思考模式(仅 GLM-4.5V 支持,默认: false)
44
- # 启用后可提高分析准确性,但会增加 20-30% tokens 消耗
45
- # ENABLE_THINKING=false
7
+ MODEL_NAME=glm-4.6v
8
+
9
+ # ========== SiliconFlow (免费 - DeepSeek-OCR) ==========
10
+ # 获取API Key: https://siliconflow.cn/
11
+ # SILICONFLOW_API_KEY=your-siliconflow-api-key
12
+ # MODEL_NAME=deepseek-ai/DeepSeek-OCR
13
+
14
+ # ========== 阿里云 Qwen (Qwen3-VL-Flash) ==========
15
+ # 获取API Key: https://dashscope.aliyun.com/
16
+ # DASHSCOPE_API_KEY=your-dashscope-api-key
17
+ # MODEL_NAME=qwen3-vl-flash
18
+
19
+ # ========== 火山方舟 Volcengine (Doubao-Seed-1.6) ==========
20
+ # 获取API Key: https://console.volcengine.com/ark
21
+ # VOLCENGINE_API_KEY=your-volcengine-api-key
22
+ # MODEL_NAME=doubao-seed-1-6-flash-250828
23
+ # 可选模型:
24
+ # - doubao-seed-1-6-flash-250828 (性价比高,256k上下文)
25
+ # - doubao-seed-1-6-vision-250815 (视觉优化,64k输出)
26
+ # - doubao-seed-1-6-lite-251015 (轻量级)
27
+ # 注意: 使用控制台中的实际模型ID
28
+
29
+ # ========== 通用参数 ==========
30
+ MAX_TOKENS=16384
31
+ TEMPERATURE=0.7
32
+ TOP_P=0.7
33
+ ENABLE_THINKING=true
package/CHANGELOG.md CHANGED
@@ -1,15 +1,79 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to this project will be documented in this file.
3
+ 本项目的所有重大变更都将记录在此文件中。
4
+
5
+ ## [1.2.7] - 2025-12-17
6
+
7
+ ### Added
8
+
9
+ - 🆕 **火山方舟 Provider**: 新增第四个视觉模型提供商 - 火山方舟 Volcengine
10
+ - 🎯 **Doubao-Seed-1.6 系列**: 支持 flash、vision、lite 多种版本
11
+ - 🔧 **统一配置架构**: 客户端构造函数改为接受 LumaConfig 对象,实现配置集中管理
12
+ - 🖼️ **完整图片格式支持**: 火山方舟支持 base64 数据、URL 链接和本地文件
13
+
14
+ ### Changed
15
+
16
+ - 🏗️ **架构重构**: 三个现有客户端(Zhipu、SiliconFlow、Qwen)重构为统一配置对象模式
17
+ - 🗃️ **客户端优化**: 移除硬编码默认值,所有配置统一从环境变量读取
18
+ - 📝 **API 格式统一**: 火山方舟客户端改为使用 Chat Completions API 格式,与其他 provider 保持一致
19
+ - 📚 **文档完善**: 更新中英文 README,添加火山方舟配置示例和模型对比
20
+
21
+ ### Technical Details
22
+
23
+ - `src/config.ts`: 新增 volcengine provider 支持,添加 VOLCENGINE_API_KEY 环境变量
24
+ - `src/volcengine-client.ts`: 新文件,完整实现 VolcengineClient 类,支持 Chat Completions API
25
+ - `src/zhipu-client.ts`: 重构构造函数,移除硬编码参数,支持 LumaConfig
26
+ - `src/siliconflow-client.ts`: 重构构造函数,支持统一配置对象
27
+ - `src/qwen-client.ts`: 重构构造函数,支持统一配置对象
28
+ - `src/index.ts`: 添加 VolcengineClient 导入和实例化逻辑
29
+ - `.env.example`: 添加火山方舟配置示例和说明
30
+ - `README.md` & `docs/README_EN.md`: 新增火山方舟特性说明和配置示例
31
+
32
+ ### Provider Summary
33
+
34
+ 现在支持 4 个视觉模型提供商:
35
+
36
+ 1. **智谱 GLM-4.6V** (默认): 中文理解优秀,16384 tokens
37
+ 2. **硅基流动 DeepSeek-OCR**: 免费使用,OCR 能力强
38
+ 3. **阿里云 Qwen3-VL-Flash**: 速度快成本低,支持思考模式
39
+ 4. **火山方舟 Doubao-Seed-1.6**: 性价比高,256k 上下文,支持多种版本
40
+
41
+ ## [1.2.6] - 2025-12-16
42
+
43
+ ### Changed
44
+
45
+ - 🚀 **模型升级**: 更新智谱模型从 GLM-4.5V 升级至 GLM-4.6V,性能和理解能力提升
46
+ - 📈 **Token 限制提升**: 默认 maxTokens 从 8192 提升至 16384,支持更详细的分析输出
47
+ - 💡 **思考模式默认开启**: ENABLE_THINKING 默认为 true,提供更准确的分析结果
48
+ - 🧹 **代码清理**: 移除 prompts.ts 提示词模板文件,简化架构
49
+ - 🔧 **TypeScript 优化**: 清理未使用的类型导入,修复 TS6133 警告
50
+ - 📝 **文档完善**: 更新中英文 README,强化三种使用方式说明(粘贴图片、本地路径、URL)
51
+
52
+ ### Technical Details
53
+
54
+ - `src/config.ts`: 更新默认模型为 glm-4.6v,默认 maxTokens 改为 16384,enableThinking 默认为 true
55
+ - `src/zhipu-client.ts`: 更新模型引用,清理未使用导入
56
+ - `src/siliconflow-client.ts`: 清理未使用的类型导入
57
+ - `src/index.ts`: 简化 prompt 处理逻辑,直接使用原始提示词
58
+ - 删除 `src/prompts.ts`: 移除 buildAnalysisPrompt 函数
59
+ - README 更新: 模型信息、Token 配置、项目结构、思考模式配置
60
+
61
+ ## [1.2.4] - 2025-12-16 (Reverted)
62
+
63
+ ### Note
64
+
65
+ 此版本因代码回滚问题被回退,所有优化内容已整合至 v1.2.6
4
66
 
5
67
  ## [1.2.3] - 2025-11-21
6
68
 
7
69
  ### Changed
70
+
8
71
  - 🧹 **代码清理**: 移除 Claude 特定调试注释和实验性代码
9
72
  - 📝 **工具描述优化**: 简化和专业化工具说明,提升 AI 模型调用成功率
10
73
  - 🔧 **路径处理通用化**: 重构 @ 前缀路径处理,移除平台特定命名
11
74
 
12
75
  ### Technical Details
76
+
13
77
  - 移除 Claude 资源读取相关的实验性代码
14
78
  - 重命名 `stripAtPrefix()` 为 `normalizeImageSourcePath()`
15
79
  - 清理所有客户端适配器中的调试日志和注释
@@ -18,19 +82,23 @@ All notable changes to this project will be documented in this file.
18
82
  ## [1.2.2] - 2025-11-20
19
83
 
20
84
  ### Added
85
+
21
86
  - ✨ **@ 路径支持**: 自动处理 Claude Code 的 @ 文件引用前缀,修复第一次调用失败的问题
22
87
  - 📝 **智能 Prompt**: 通用请求自动添加详细指引,保证全面分析
23
88
 
24
89
  ### Changed
90
+
25
91
  - 🔧 **Prompt 统一**: 简化为单一通用 prompt,智能处理不同场景
26
92
  - ✨ **表述优化**: 融合 Minimax 的经典表述,强调“不遗漏细节”和“完整提取”
27
93
  - 📚 **文档更新**: 更新项目结构,添加 qwen-client.ts 和测试文件
28
94
 
29
95
  ### Fixed
96
+
30
97
  - 🐛 **@ 路径问题**: 修复 Claude Code 中 `@folder/image.png` 导致的路径错误
31
98
  - 🐛 **编译错误**: 修复 image-processor.ts 中重复声明的变量
32
99
 
33
100
  ### Technical Details
101
+
34
102
  - 新增 `stripAtPrefix()` 函数处理 Claude Code 的文件引用语法
35
103
  - 简化 `buildAnalysisPrompt()` 从两套逻辑到单一逻辑
36
104
  - 添加智能请求检测,自动补充详细分析指引
@@ -38,6 +106,7 @@ All notable changes to this project will be documented in this file.
38
106
  ## [1.2.1] - 2025-11-18
39
107
 
40
108
  ### Changed
109
+
41
110
  - 📝 **文档优化**: 精简 README,移除冲余配置文件路径说明
42
111
  - 📝 **更新日志简化**: 将 README 中的详细更新日志替换为 CHANGELOG.md 链接
43
112
  - ✨ **Qwen 测试示例**: 添加 Qwen3-VL-Flash 本地测试命令
@@ -48,12 +117,14 @@ All notable changes to this project will be documented in this file.
48
117
  - 🐛 **错误信息**: 优化 API 调用失败排查提示,包含阿里云账户
49
118
 
50
119
  ### Fixed
120
+
51
121
  - 🐛 **描述修正**: 修正 package.json 中模型名称为 qwen3-vl-flash
52
122
  - 📝 **注释精简**: 简化 prompts.ts 注释头
53
123
 
54
124
  ## [1.2.0] - 2025-11-17
55
125
 
56
126
  ### Added
127
+
57
128
  - 🎉 **第三个视觉模型**: 新增阿里云通义千问 Qwen3-VL-Flash 支持
58
129
  - 💡 **思考模式**: Qwen3-VL-Flash 支持深度思考模式(enable_thinking),提升复杂场景分析准确性
59
130
  - ⚡ **高性价比**: Flash 版本速度更快、成本更低,适合大量使用
@@ -61,12 +132,14 @@ All notable changes to this project will be documented in this file.
61
132
  - 🌐 **多地域支持**: 默认使用北京地域,支持新加坡地域配置
62
133
 
63
134
  ### Changed
135
+
64
136
  - ⚙️ 新增 `MODEL_PROVIDER=qwen` 和 `DASHSCOPE_API_KEY` 环境变量配置
65
137
  - 📝 更新所有文档(中英文),添加 Qwen3-VL-Flash 配置示例
66
138
  - 💰 默认使用 qwen3-vl-flash 模型,兹顾性能与成本
67
139
  - 🏗️ 重构客户端构造函数,统一参数传递方式
68
140
 
69
141
  ### Technical Details
142
+
70
143
  - 新增文件:
71
144
  - `src/qwen-client.ts` - 阿里云通义千问 VL API 客户端实现
72
145
  - 修改文件:
@@ -79,27 +152,32 @@ All notable changes to this project will be documented in this file.
79
152
  ## [1.1.1] - 2025-11-13
80
153
 
81
154
  ### Added
155
+
82
156
  - 🖼️ **Data URI 支持**: 支持接收 base64 编码的图片数据 (data:image/png;base64,...)
83
157
  - 🚀 **为未来做准备**: 当 MCP 客户端支持时,可直接传递用户粘贴的图片
84
158
 
85
159
  ### Changed
160
+
86
161
  - 📝 更新工具描述,说明支持三种输入格式:本地路径、URL、Data URI
87
162
  - ✅ 新增 Data URI 格式验证(MIME 类型、大小限制)
88
163
 
89
164
  ## [1.1.0] - 2025-11-13
90
165
 
91
166
  ### Added
167
+
92
168
  - 🎉 **多模型支持**: 新增硅基流动 DeepSeek-OCR 支持
93
169
  - 🆓 **免费选项**: DeepSeek-OCR 通过硅基流动提供完全免费的 OCR 服务
94
170
  - 📐 **统一接口**: 创建 VisionClient 接口,支持灵活扩展更多视觉模型
95
171
  - ⚙️ **灵活配置**: 通过 `MODEL_PROVIDER` 环境变量轻松切换模型
96
172
 
97
173
  ### Changed
174
+
98
175
  - 🔧 环境变量命名优化,支持通用配置(`MODEL_NAME`、`MAX_TOKENS` 等)
99
176
  - 📝 更新文档,提供双模型配置说明和选择建议
100
177
  - 🏗️ 重构代码结构,提升可维护性
101
178
 
102
179
  ### Technical Details
180
+
103
181
  - 新增文件:
104
182
  - `src/vision-client.ts` - 视觉模型客户端统一接口
105
183
  - `src/siliconflow-client.ts` - 硅基流动 API 客户端实现
@@ -113,6 +191,7 @@ All notable changes to this project will be documented in this file.
113
191
  ## [1.0.3] - 2025-11-12
114
192
 
115
193
  ### Features
194
+
116
195
  - 基于智谱 GLM-4.5V 的视觉理解能力
117
196
  - 支持本地文件和远程 URL
118
197
  - 内置重试机制
@@ -122,18 +201,19 @@ All notable changes to this project will be documented in this file.
122
201
 
123
202
  **模型对比**:
124
203
 
125
- || 特性 | GLM-4.5V | DeepSeek-OCR | Qwen3-VL-Flash |
204
+ || 特性 | GLM-4.5V | DeepSeek-OCR | Qwen3-VL-Flash |
126
205
  ||----------|----------|--------------|----------------|
127
- || 提供商 | 智谱清言 | 硅基流动 | 阿里云百炼 |
128
- || 费用 | 收费 | **免费** | 收费 |
129
- || 中文理解 | 优秀 | 良好 | **优秀** |
130
- || OCR 能力 | 良好 | **优秀** | 优秀 |
131
- || 思考模式 | ✅ | ❌ | ✅ |
132
- || 速度/成本 | 中等 | 免费 | **快/低** |
133
- || 综合能力 | 良好 | OCR专精 | **优秀** |
134
- || 3D定位 | ❌ | ❌ | ✅ |
206
+ || 提供商 | 智谱清言 | 硅基流动 | 阿里云百炼 |
207
+ || 费用 | 收费 | **免费** | 收费 |
208
+ || 中文理解 | 优秀 | 良好 | **优秀** |
209
+ || OCR 能力 | 良好 | **优秀** | 优秀 |
210
+ || 思考模式 | ✅ | ❌ | ✅ |
211
+ || 速度/成本 | 中等 | 免费 | **快/低** |
212
+ || 综合能力 | 良好 | OCR 专精 | **优秀** |
213
+ || 3D 定位 | ❌ | ❌ | ✅ |
135
214
 
136
215
  **推荐使用场景**:
216
+
137
217
  - 需要 OCR/文字识别 → **DeepSeek-OCR** (免费)
138
218
  - 需要深度图片理解 → **Qwen3-VL-Flash** 或 **GLM-4.5V**
139
219
  - 需要思考模式 → **Qwen3-VL-Flash** 或 **GLM-4.5V**
package/README.md CHANGED
@@ -6,10 +6,11 @@
6
6
 
7
7
  ## 特性
8
8
 
9
- - **多模型支持**: 支持三个视觉模型
10
- - GLM-4.5V(智谱清言)- 付费,中文理解优秀
11
- - DeepSeek-OCR(硅基流动)- **免费使用**,OCR能力强
9
+ - **多模型支持**: 支持四个视觉模型
10
+ - GLM-4.6V(智谱清言)- 付费,中文理解优秀
11
+ - DeepSeek-OCR(硅基流动)- **免费使用**,OCR 能力强
12
12
  - Qwen3-VL-Flash(阿里云通义千问)- 付费,速度快成本低,支持思考模式
13
+ - Doubao-Seed-1.6(火山方舟)- 付费,性价比高,支持多种版本
13
14
  - **简单设计**: 单一 `analyze_image` 工具处理所有图片分析任务
14
15
  - **智能理解**: 自动识别代码、UI、错误等不同场景
15
16
  - **全面支持**: 代码截图、界面设计、错误诊断、OCR 文字识别
@@ -26,6 +27,7 @@
26
27
  - **方案 A**: 智谱 AI API Key ([获取地址](https://open.bigmodel.cn/)) - 中文理解优秀
27
28
  - **方案 B**: 硅基流动 API Key ([获取地址](https://cloud.siliconflow.cn/)) - **免费使用**,OCR 能力强
28
29
  - **方案 C**: 阿里云百炼 API Key ([获取地址](https://bailian.console.aliyun.com/)) - 速度快成本低,支持思考模式
30
+ - **方案 D**: 火山方舟 API Key ([获取地址](https://console.volcengine.com/ark)) - 性价比高,支持多种版本
29
31
 
30
32
  ### 安装
31
33
 
@@ -48,7 +50,7 @@ npx luma-mcp
48
50
 
49
51
  #### Claude Desktop
50
52
 
51
- **方案 A: 使用智谱 GLM-4.5V**:
53
+ **方案 A: 使用智谱 GLM-4.6V**:
52
54
 
53
55
  ```json
54
56
  {
@@ -98,6 +100,24 @@ npx luma-mcp
98
100
  }
99
101
  ```
100
102
 
103
+ **方案 D: 使用火山方舟 Doubao-Seed-1.6**:
104
+
105
+ ```json
106
+ {
107
+ "mcpServers": {
108
+ "luma": {
109
+ "command": "npx",
110
+ "args": ["-y", "luma-mcp"],
111
+ "env": {
112
+ "MODEL_PROVIDER": "volcengine",
113
+ "VOLCENGINE_API_KEY": "your-volcengine-api-key",
114
+ "MODEL_NAME": "doubao-seed-1-6-flash-250828"
115
+ }
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
101
121
  **本地开发(智谱)**:
102
122
 
103
123
  ```json
@@ -137,7 +157,7 @@ npx luma-mcp
137
157
 
138
158
  在项目根目录或 `.vscode/` 目录下创建 `mcp.json`
139
159
 
140
- **方案 A: 使用智谱 GLM-4.5V**:
160
+ **方案 A: 使用智谱 GLM-4.6V**:
141
161
 
142
162
  ```json
143
163
  {
@@ -189,17 +209,20 @@ npx luma-mcp
189
209
 
190
210
  #### Claude Code (命令行)
191
211
 
192
- **使用智谱 GLM-4.5V**:
212
+ **使用智谱 GLM-4.6V**:
213
+
193
214
  ```bash
194
215
  claude mcp add -s user luma-mcp --env ZHIPU_API_KEY=your-api-key -- npx -y luma-mcp
195
216
  ```
196
217
 
197
218
  **使用硅基流动 DeepSeek-OCR(免费)**:
219
+
198
220
  ```bash
199
221
  claude mcp add -s user luma-mcp --env MODEL_PROVIDER=siliconflow --env SILICONFLOW_API_KEY=your-api-key -- npx -y luma-mcp
200
222
  ```
201
223
 
202
224
  **使用阿里云通义千问 Qwen3-VL-Flash**:
225
+
203
226
  ```bash
204
227
  claude mcp add -s user luma-mcp --env MODEL_PROVIDER=qwen --env DASHSCOPE_API_KEY=your-api-key -- npx -y luma-mcp
205
228
  ```
@@ -213,11 +236,13 @@ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=qwen --env DASHSCOPE_API_KE
213
236
  ### 重要提示
214
237
 
215
238
  **MCP 工具调用机制**:
239
+
216
240
  - MCP 工具需要 AI 模型**主动调用**才会执行
217
241
  - 如果使用的 AI 模型本身支持视觉(如 Claude 4.5 Sonnet),它会优先使用自己的视觉能力
218
242
  - Luma MCP 主要服务于**不支持视觉的模型**(如 GPT-4、Claude Opus 等文本模型)
219
243
 
220
244
  **如何确保工具被调用**:
245
+
221
246
  1. 使用完整工具名:`使用 mcp__luma-mcp__analyze_image 工具分析这张图片`
222
247
  2. 使用简化名称:`用 analyze_image 工具查看 ./screenshot.png`
223
248
  3. 提供图片路径:`请用图片分析工具查看 ./screenshot.png 中的代码错误`
@@ -230,12 +255,14 @@ claude mcp add -s user luma-mcp --env MODEL_PROVIDER=qwen --env DASHSCOPE_API_KE
230
255
  配置完成后,在 Claude 对话中可以这样使用:
231
256
 
232
257
  **推荐用法(明确指示)**:
258
+
233
259
  ```
234
260
  用户: 使用 Luma 分析 ./code-error.png,这段代码为什么报错?
235
261
  Claude: [调用 Luma 分析图片,返回详细分析]
236
262
  ```
237
263
 
238
264
  **或提供图片路径**:
265
+
239
266
  ```
240
267
  用户: 请分析 https://example.com/screenshot.jpg 中的界面问题
241
268
  Claude: [自动调用 analyze_image 工具]
@@ -245,7 +272,8 @@ Claude: [自动调用 analyze_image 工具]
245
272
 
246
273
  不需要 MCP 客户端即可测试:
247
274
 
248
- **测试智谱 GLM-4.5V**:
275
+ **测试智谱 GLM-4.6V**:
276
+
249
277
  ```bash
250
278
  # 设置 API Key
251
279
  export ZHIPU_API_KEY="your-api-key" # macOS/Linux
@@ -256,6 +284,7 @@ npm run test:local ./test.png
256
284
  ```
257
285
 
258
286
  **测试硅基流动 DeepSeek-OCR**:
287
+
259
288
  ```bash
260
289
  # 设置 API Key 和提供商
261
290
  export MODEL_PROVIDER=siliconflow
@@ -269,6 +298,7 @@ npm run test:local ./test.png
269
298
  ```
270
299
 
271
300
  **测试阿里云通义千问 Qwen3-VL-Flash**:
301
+
272
302
  ```bash
273
303
  # 设置 API Key 和提供商
274
304
  export MODEL_PROVIDER=qwen
@@ -282,6 +312,7 @@ npm run test:local ./test.png
282
312
  ```
283
313
 
284
314
  **其他测试命令**:
315
+
285
316
  ```bash
286
317
  # 测试并提问
287
318
  npm run test:local ./code-error.png "这段代码有什么问题?"
@@ -311,66 +342,67 @@ npm run test:local https://example.com/image.jpg
311
342
  // 通用分析
312
343
  analyze_image({
313
344
  image_source: "./screenshot.png",
314
- prompt: "请详细分析这张图片的内容"
315
- })
345
+ prompt: "请详细分析这张图片的内容",
346
+ });
316
347
 
317
348
  // 代码分析
318
349
  analyze_image({
319
350
  image_source: "./code-error.png",
320
- prompt: "这段代码为什么报错?请提供修复建议"
321
- })
351
+ prompt: "这段代码为什么报错?请提供修复建议",
352
+ });
322
353
 
323
354
  // UI 分析
324
355
  analyze_image({
325
356
  image_source: "https://example.com/ui.png",
326
- prompt: "分析这个界面的布局和可用性问题"
327
- })
357
+ prompt: "分析这个界面的布局和可用性问题",
358
+ });
328
359
 
329
360
  // Data URI (当客户端支持时)
330
361
  analyze_image({
331
362
  image_source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...",
332
- prompt: "识别图片中的所有文字"
333
- })
363
+ prompt: "识别图片中的所有文字",
364
+ });
334
365
  ```
335
366
 
336
367
  ## 环境变量
337
368
 
338
369
  ### 通用配置
339
370
 
340
- | 变量名 | 必需 | 默认值 | 说明 |
341
- |-------------------|------|---------|----------------------------------------------|
342
- | `MODEL_PROVIDER` | 否 | `zhipu` | 模型提供商:`zhipu`、`siliconflow` 或 `qwen` |
343
- | `MODEL_NAME` | 否 | 见下文 | 模型名称(自动根据提供商选择) |
344
- | `MAX_TOKENS` | 否 | `4096` | 最大生成 tokens |
345
- | `TEMPERATURE` | 否 | `0.7` | 温度参数 (0-1) |
346
- | `TOP_P` | 否 | `0.7` | Top-p 参数 (0-1) |
347
- | `ENABLE_THINKING` | 否 | `false` | 是否启用思考模式(GLM-4.5V 和 Qwen3-VL-Flash) |
371
+ | 变量名 | 必需 | 默认值 | 说明 |
372
+ | ----------------- | ---- | ------- | ---------------------------------------------- |
373
+ | `MODEL_PROVIDER` | 否 | `zhipu` | 模型提供商:`zhipu`、`siliconflow` 或 `qwen` |
374
+ | `MODEL_NAME` | 否 | 见下文 | 模型名称(自动根据提供商选择) |
375
+ | `MAX_TOKENS` | 否 | `16384` | 最大生成 tokens |
376
+ | `TEMPERATURE` | 否 | `0.7` | 温度参数 (0-1) |
377
+ | `TOP_P` | 否 | `0.7` | Top-p 参数 (0-1) |
378
+ | `ENABLE_THINKING` | 否 | `true` | 是否启用思考模式(GLM-4.6V 和 Qwen3-VL-Flash) |
348
379
 
349
- ### 智谱 GLM-4.5V 专用
380
+ ### 智谱 GLM-4.6V 专用
350
381
 
351
- | 变量名 | 必需 | 默认值 | 说明 |
352
- |-----------------|----------------|--------|---------------------|
382
+ | 变量名 | 必需 | 默认值 | 说明 |
383
+ | --------------- | ---------------- | ------ | ------------------- |
353
384
  | `ZHIPU_API_KEY` | 是(使用智谱时) | - | 智谱 AI 的 API 密钥 |
354
385
 
355
- 默认模型:`glm-4.5v`
386
+ 默认模型:`glm-4.6v`
356
387
 
357
388
  ### 硅基流动 DeepSeek-OCR 专用
358
389
 
359
- | 变量名 | 必需 | 默认值 | 说明 |
360
- |-----------------------|--------------------|--------|---------------------|
390
+ | 变量名 | 必需 | 默认值 | 说明 |
391
+ | --------------------- | -------------------- | ------ | ------------------- |
361
392
  | `SILICONFLOW_API_KEY` | 是(使用硅基流动时) | - | 硅基流动的 API 密钥 |
362
393
 
363
394
  默认模型:`deepseek-ai/DeepSeek-OCR`
364
395
 
365
396
  ### 阿里云通义千问 Qwen3-VL-Flash 专用
366
397
 
367
- | 变量名 | 必需 | 默认值 | 说明 |
368
- |-------------------|------------------|--------|------------------------|
369
- | `DASHSCOPE_API_KEY` | 是(使用千问时) | - | 阿里云百炼的 API 密钥 |
398
+ | 变量名 | 必需 | 默认值 | 说明 |
399
+ | ------------------- | ---------------- | ------ | --------------------- |
400
+ | `DASHSCOPE_API_KEY` | 是(使用千问时) | - | 阿里云百炼的 API 密钥 |
370
401
 
371
402
  默认模型:`qwen3-vl-flash`
372
403
 
373
404
  **思考模式说明**:
405
+
374
406
  - 默认开启,提高图片分析的准确性和详细程度
375
407
  - 如需关闭(提高速度、降低成本),请在配置文件中设置:
376
408
  ```json
@@ -381,7 +413,7 @@ analyze_image({
381
413
  "args": ["-y", "luma-mcp"],
382
414
  "env": {
383
415
  "ZHIPU_API_KEY": "your-api-key",
384
- "ZHIPU_ENABLE_THINKING": "false"
416
+ "ENABLE_THINKING": "false"
385
417
  }
386
418
  }
387
419
  }
@@ -410,11 +442,10 @@ luma-mcp/
410
442
  │ ├── index.ts # MCP 服务器入口
411
443
  │ ├── config.ts # 配置管理(支持多模型)
412
444
  │ ├── vision-client.ts # 视觉模型客户端接口
413
- │ ├── zhipu-client.ts # GLM-4.5V API 客户端
445
+ │ ├── zhipu-client.ts # GLM-4.6V API 客户端
414
446
  │ ├── siliconflow-client.ts # DeepSeek-OCR API 客户端
415
447
  │ ├── qwen-client.ts # Qwen3-VL API 客户端
416
448
  │ ├── image-processor.ts # 图片处理
417
- │ ├── prompts.ts # 提示词模板
418
449
  │ └── utils/
419
450
  │ ├── logger.ts # 日志工具
420
451
  │ └── helpers.ts # 工具函数
@@ -435,19 +466,22 @@ luma-mcp/
435
466
 
436
467
  ### 如何获取 API Key?
437
468
 
438
- **智谱 GLM-4.5V**:
469
+ **智谱 GLM-4.6V**:
470
+
439
471
  1. 访问 [智谱开放平台](https://open.bigmodel.cn/)
440
472
  2. 注册/登录账号
441
473
  3. 进入控制台创建 API Key
442
474
  4. 复制 API Key 到配置文件
443
475
 
444
476
  **硅基流动 DeepSeek-OCR(免费)**:
477
+
445
478
  1. 访问 [硅基流动平台](https://cloud.siliconflow.cn/)
446
479
  2. 注册/登录账号
447
480
  3. 进入 API 管理创建 API Key
448
481
  4. 复制 API Key 到配置文件
449
482
 
450
483
  **阿里云通义千问 Qwen3-VL-Flash**:
484
+
451
485
  1. 访问 [阿里云百炼平台](https://bailian.console.aliyun.com/)
452
486
  2. 注册/登录账号
453
487
  3. 进入 API-KEY 管理创建 API Key
@@ -460,11 +494,13 @@ luma-mcp/
460
494
  ### 什么是 Data URI?
461
495
 
462
496
  Data URI 是一种将图片数据嵌入字符串的方式,格式为:
497
+
463
498
  ```
464
499
  data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...
465
500
  ```
466
501
 
467
502
  **使用场景**:
503
+
468
504
  - 当 MCP 客户端(如 Claude Desktop)支持时,可以直接传递用户粘贴的图片
469
505
  - 无需保存为临时文件,更加高效
470
506
  - 当前支持状态:**服务器已支持**,等待客户端实现
@@ -490,32 +526,34 @@ data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...
490
526
 
491
527
  **硅基流动 DeepSeek-OCR**: **完全免费**,无需付费!
492
528
 
493
- **智谱 GLM-4.5V**: 定价请参考[智谱官方定价](https://open.bigmodel.cn/pricing)。
529
+ **智谱 GLM-4.6V**: 定价请参考[智谱官方定价](https://open.bigmodel.cn/pricing)。
494
530
 
495
531
  **阿里云通义千问 Qwen3-VL-Flash**: 定价请参考[阿里云百炼定价](https://help.aliyun.com/zh/model-studio/getting-started/models)。
496
532
 
497
- 典型场景估算:
533
+ 典型场景估算(已启用思考模式):
534
+
498
535
  - 简单图片理解: 500-1000 tokens
499
536
  - 代码截图分析: 1500-2500 tokens
500
537
  - 详细 UI 分析: 2000-3000 tokens
501
538
 
502
- 启用思考模式(GLM-4.5V/Qwen3-VL-Flash)会增加约 20-30% tokens
539
+ 关闭思考模式可节省约 20-30% tokens。如需关闭,请设置 `ENABLE_THINKING=false`。
503
540
 
504
541
  ### 如何选择模型?
505
542
 
506
- | 特性 | GLM-4.5V(智谱) | DeepSeek-OCR(硅基流动) | Qwen3-VL-Flash(阿里云) |
507
- |--------------|----------------|------------------------|------------------------|
508
- | **费用** | 收费 | **完全免费** | 收费 |
509
- | **中文理解** | 优秀 | 良好 | **优秀** |
510
- | **OCR 能力** | 良好 | **优秀** | 优秀 |
511
- | **思考模式** | 支持 | 不支持 | 支持 |
512
- | **速度/成本** | 中等 | 免费 | **快速/低成本** |
513
- | **适用场景** | 通用图片分析 | OCR、文字识别 | 快速分析、3D定位 |
543
+ | 特性 | GLM-4.6V(智谱) | DeepSeek-OCR(硅基流动) | Qwen3-VL-Flash(阿里云) |
544
+ | ------------- | ---------------- | ------------------------ | ------------------------ |
545
+ | **费用** | 收费 | **完全免费** | 收费 |
546
+ | **中文理解** | 优秀 | 良好 | **优秀** |
547
+ | **OCR 能力** | 良好 | **优秀** | 优秀 |
548
+ | **思考模式** | 支持 | 不支持 | 支持 |
549
+ | **速度/成本** | 中等 | 免费 | **快速/低成本** |
550
+ | **适用场景** | 通用图片分析 | OCR、文字识别 | 快速分析、3D 定位 |
514
551
 
515
552
  **推荐**:
553
+
516
554
  - 需要 OCR 或文字识别:选择 **DeepSeek-OCR**(免费)
517
555
  - 需要快速低成本分析:选择 **Qwen3-VL-Flash**
518
- - 需要深度图片理解:选择 **GLM-4.5V**
556
+ - 需要深度图片理解:选择 **GLM-4.6V**
519
557
 
520
558
  ## 贡献
521
559
 
@@ -528,7 +566,7 @@ MIT License
528
566
  ## 相关链接
529
567
 
530
568
  - [智谱 AI 开放平台](https://open.bigmodel.cn/)
531
- - [GLM-4.5V 文档](https://docs.bigmodel.cn/cn/guide/models/vlm/glm-4.5v)
569
+ - [GLM-4.6V 文档](https://docs.bigmodel.cn/cn/guide/models/vlm/glm-4.6v)
532
570
  - [硅基流动平台](https://cloud.siliconflow.cn/)
533
571
  - [DeepSeek-OCR 文档](https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions)
534
572
  - [阿里云百炼平台](https://bailian.console.aliyun.com/)
package/build/config.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * 配置管理模块
3
3
  * 从环境变量读取配置
4
4
  */
5
- export type ModelProvider = 'zhipu' | 'siliconflow' | 'qwen';
5
+ export type ModelProvider = 'zhipu' | 'siliconflow' | 'qwen' | 'volcengine';
6
6
  export interface LumaConfig {
7
7
  provider: ModelProvider;
8
8
  apiKey: string;
@@ -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,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,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;CACzB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,CAwCvC"}
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;IACzB,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;CACzB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,CA+CvC"}
package/build/config.js CHANGED
@@ -25,9 +25,16 @@ export function loadConfig() {
25
25
  throw new Error('DASHSCOPE_API_KEY environment variable is required when using Qwen provider');
26
26
  }
27
27
  }
28
+ else if (provider === 'volcengine') {
29
+ apiKey = process.env.VOLCENGINE_API_KEY;
30
+ defaultModel = 'doubao-seed-1-6-flash-250828';
31
+ if (!apiKey) {
32
+ throw new Error('VOLCENGINE_API_KEY environment variable is required when using Volcengine provider');
33
+ }
34
+ }
28
35
  else {
29
36
  apiKey = process.env.ZHIPU_API_KEY;
30
- defaultModel = 'glm-4.5v';
37
+ defaultModel = 'glm-4.6v';
31
38
  if (!apiKey) {
32
39
  throw new Error('ZHIPU_API_KEY environment variable is required when using Zhipu provider');
33
40
  }
@@ -36,10 +43,10 @@ export function loadConfig() {
36
43
  provider,
37
44
  apiKey,
38
45
  model: process.env.MODEL_NAME || defaultModel,
39
- maxTokens: parseInt(process.env.MAX_TOKENS || '4096', 10),
46
+ maxTokens: parseInt(process.env.MAX_TOKENS || '16384', 10),
40
47
  temperature: parseFloat(process.env.TEMPERATURE || '0.7'),
41
48
  topP: parseFloat(process.env.TOP_P || '0.7'),
42
- enableThinking: process.env.ENABLE_THINKING === 'true',
49
+ enableThinking: process.env.ENABLE_THINKING !== 'false',
43
50
  };
44
51
  }
45
52
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;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,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,MAAM,EAAE,EAAE,CAAC;QACzD,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;QAC5C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;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;QAC5C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,OAAO;KACxD,CAAC;AACJ,CAAC"}
package/build/index.js CHANGED
@@ -13,6 +13,7 @@ import { loadConfig } from "./config.js";
13
13
  import { ZhipuClient } from "./zhipu-client.js";
14
14
  import { SiliconFlowClient } from "./siliconflow-client.js";
15
15
  import { QwenClient } from "./qwen-client.js";
16
+ import { VolcengineClient } from "./volcengine-client.js";
16
17
  import { imageToBase64, validateImageSource } from "./image-processor.js";
17
18
  import { withRetry, createSuccessResponse, createErrorResponse, } from "./utils/helpers.js";
18
19
  /**
@@ -25,13 +26,16 @@ async function createServer() {
25
26
  // 根据配置选择模型客户端
26
27
  let visionClient;
27
28
  if (config.provider === "siliconflow") {
28
- visionClient = new SiliconFlowClient(config.apiKey, config.model, config.maxTokens, config.temperature);
29
+ visionClient = new SiliconFlowClient(config);
29
30
  }
30
31
  else if (config.provider === "qwen") {
31
- visionClient = new QwenClient(config.apiKey, config.model, config.maxTokens, config.temperature);
32
+ visionClient = new QwenClient(config);
33
+ }
34
+ else if (config.provider === "volcengine") {
35
+ visionClient = new VolcengineClient(config);
32
36
  }
33
37
  else {
34
- visionClient = new ZhipuClient(config.apiKey, config.model, config.maxTokens, config.temperature, config.topP);
38
+ visionClient = new ZhipuClient(config);
35
39
  }
36
40
  logger.info("Vision client initialized", {
37
41
  provider: config.provider,
@@ -60,18 +64,17 @@ async function createServer() {
60
64
  1000 // 初始延补1秒
61
65
  );
62
66
  // 注册工具 - 使用 McpServer.tool() API
63
- server.tool("analyze_image", "图像分析工具:对截图、设计稿、照片等图片进行详细理解和中文描述(支持本地文件和 HTTP(S) 图片 URL,最大 10MB)", {
67
+ server.tool("analyze_image", "图像分析工具:支持三种使用方式:1) 用户粘贴图片时直接调用,无需手动指定路径 2) 指定本地图片路径,如./screenshot.png 3) 指定图片URL,如https://example.com/image.png。AI应根据用户问题生成专业的分析提示词(如用户问'网站布局有什么问题',应生成'请详细分析这个网站界面的布局问题,包括视觉层次、对齐方式、间距、响应式设计等方面的问题'),然后传递提示词和图片进行调用。", {
64
68
  image_source: z
65
69
  .string()
66
- .describe("要分析的图片来源:本地文件路径或 HTTP(S) 图片 URL(支持 PNG、JPG、JPEG、WebP、GIF,最大 10MB)"),
70
+ .describe("要分析的图片来源:支持三种方式 1) 用户粘贴图片时由Claude Desktop自动提供路径 2) 本地文件路径,如./screenshot.png 3) HTTP(S)图片URL,如https://example.com/image.png(支持 PNG、JPG、JPEG、WebP、GIF,最大 10MB)"),
67
71
  prompt: z
68
72
  .string()
69
- .optional()
70
- .describe("可选的任务说明,例如“帮我详细描述这张 UI 设计图的布局和组件”。如果不填,将自动生成整图的详细中文描述。"),
73
+ .describe('分析提示词:AI根据用户问题生成的专业分析提示词。应该包含具体的分析要求和期望的输出格式。'),
71
74
  }, async (params) => {
72
75
  try {
73
- // 如果没有提供 prompt,使用默认值
74
- const prompt = params.prompt || "请详细分析这张图片的内容";
76
+ // AI应该已经根据用户问题生成了合适的prompt
77
+ const prompt = params.prompt;
75
78
  logger.info("Analyzing image", {
76
79
  source: params.image_source,
77
80
  prompt,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,14 @@
4
4
  * API 文档: https://help.aliyun.com/zh/model-studio/vision
5
5
  */
6
6
  import { VisionClient } from './vision-client.js';
7
+ import type { LumaConfig } from './config.js';
7
8
  export declare class QwenClient implements VisionClient {
8
9
  private client;
9
10
  private apiKey;
10
11
  private model;
11
12
  private maxTokens;
12
13
  private temperature;
13
- constructor(apiKey: string, model?: string, maxTokens?: number, temperature?: number);
14
+ constructor(config: LumaConfig);
14
15
  analyzeImage(imageDataUrl: string, prompt: string, enableThinking?: boolean): Promise<string>;
15
16
  getModelName(): string;
16
17
  }
@@ -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;AAElD,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,MAAM,EAAE,KAAK,GAAE,MAAyB,EAAE,SAAS,GAAE,MAAa,EAAE,WAAW,GAAE,MAAY;IAiB3G,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDnG,YAAY,IAAI,MAAM;CAGvB"}
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;AAE9C,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,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDnG,YAAY,IAAI,MAAM;CAGvB"}
@@ -10,16 +10,16 @@ export class QwenClient {
10
10
  model;
11
11
  maxTokens;
12
12
  temperature;
13
- constructor(apiKey, model = 'qwen3-vl-flash', maxTokens = 4096, temperature = 0.7) {
14
- this.apiKey = apiKey;
15
- this.model = model;
16
- this.maxTokens = maxTokens;
17
- this.temperature = temperature;
13
+ constructor(config) {
14
+ this.apiKey = config.apiKey;
15
+ this.model = config.model;
16
+ this.maxTokens = config.maxTokens;
17
+ this.temperature = config.temperature;
18
18
  // 使用阿里云百炼的 OpenAI 兼容接口
19
19
  this.client = axios.create({
20
20
  baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',
21
21
  headers: {
22
- 'Authorization': `Bearer ${apiKey}`,
22
+ 'Authorization': `Bearer ${config.apiKey}`,
23
23
  'Content-Type': 'application/json',
24
24
  },
25
25
  timeout: 180000, // 180秒超时
@@ -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;AAG7C,MAAM,OAAO,UAAU;IACb,MAAM,CAAgB;IACtB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,WAAW,CAAS;IAE5B,YAAY,MAAc,EAAE,QAAgB,gBAAgB,EAAE,YAAoB,IAAI,EAAE,cAAsB,GAAG;QAC/G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,uBAAuB;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,mDAAmD;YAC5D,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB,EAAE,MAAc,EAAE,cAAwB;QAC/E,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,WAAW,GAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,WAAW;gCACjB,SAAS,EAAE;oCACT,GAAG,EAAE,YAAY;iCAClB;6BACF;4BACD;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,MAAM;6BACb;yBACF;qBACF;iBACF;gBACD,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,KAAK;aACd,CAAC;YAEF,4BAA4B;YAC5B,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,UAAU,GAAG;oBACvB,eAAe,EAAE,IAAI;oBACrB,eAAe,EAAE,KAAK,CAAE,eAAe;iBACxC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YAE1E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"qwen-client.js","sourceRoot":"","sources":["../src/qwen-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAwB,MAAM,OAAO,CAAC;AAI7C,MAAM,OAAO,UAAU;IACb,MAAM,CAAgB;IACtB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,WAAW,CAAS;IAE5B,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;QAEtC,uBAAuB;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,mDAAmD;YAC5D,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;gBAC1C,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB,EAAE,MAAc,EAAE,cAAwB;QAC/E,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,WAAW,GAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,WAAW;gCACjB,SAAS,EAAE;oCACT,GAAG,EAAE,YAAY;iCAClB;6BACF;4BACD;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,MAAM;6BACb;yBACF;qBACF;iBACF;gBACD,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,MAAM,EAAE,KAAK;aACd,CAAC;YAEF,4BAA4B;YAC5B,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,CAAC,UAAU,GAAG;oBACvB,eAAe,EAAE,IAAI;oBACrB,eAAe,EAAE,KAAK,CAAE,eAAe;iBACxC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YAE1E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAElD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC;IAChC,CAAC;CACF"}
@@ -3,6 +3,7 @@
3
3
  * 基于 OpenAI 兼容 API
4
4
  */
5
5
  import type { VisionClient } from './vision-client.js';
6
+ import type { LumaConfig } from './config.js';
6
7
  /**
7
8
  * 硅基流动 API 客户端
8
9
  */
@@ -12,7 +13,7 @@ export declare class SiliconFlowClient implements VisionClient {
12
13
  private maxTokens;
13
14
  private temperature;
14
15
  private apiEndpoint;
15
- constructor(apiKey: string, model?: string, maxTokens?: number, temperature?: number);
16
+ constructor(config: LumaConfig);
16
17
  /**
17
18
  * 分析图片
18
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"siliconflow-client.d.ts","sourceRoot":"","sources":["../src/siliconflow-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA2CvD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAoD;gBAE3D,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmC,EAAE,SAAS,GAAE,MAAa,EAAE,WAAW,GAAE,MAAY;IAO3H;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAqEnG;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"siliconflow-client.d.ts","sourceRoot":"","sources":["../src/siliconflow-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2C9C;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAoD;gBAE3D,MAAM,EAAE,UAAU;IAO9B;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAqEnG;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
@@ -13,11 +13,11 @@ export class SiliconFlowClient {
13
13
  maxTokens;
14
14
  temperature;
15
15
  apiEndpoint = 'https://api.siliconflow.cn/v1/chat/completions';
16
- constructor(apiKey, model = 'deepseek-ai/DeepSeek-OCR', maxTokens = 4096, temperature = 0.7) {
17
- this.apiKey = apiKey;
18
- this.model = model;
19
- this.maxTokens = maxTokens;
20
- this.temperature = temperature;
16
+ constructor(config) {
17
+ this.apiKey = config.apiKey;
18
+ this.model = config.model;
19
+ this.maxTokens = config.maxTokens;
20
+ this.temperature = config.temperature;
21
21
  }
22
22
  /**
23
23
  * 分析图片
@@ -1 +1 @@
1
- {"version":3,"file":"siliconflow-client.js","sourceRoot":"","sources":["../src/siliconflow-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siliconflow-client.js","sourceRoot":"","sources":["../src/siliconflow-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 火山方舟 Volcengine Doubao 视觉模型客户端
3
+ * 支持 Doubao-Seed-1.6 系列模型(flash、vision、lite)
4
+ * 使用 Chat Completions API 格式
5
+ */
6
+ import type { VisionClient } from "./vision-client.js";
7
+ import type { LumaConfig } from "./config.js";
8
+ /**
9
+ * 火山方舟客户端
10
+ */
11
+ export declare class VolcengineClient implements VisionClient {
12
+ private apiKey;
13
+ private model;
14
+ private maxTokens;
15
+ private temperature;
16
+ private apiEndpoint;
17
+ constructor(config: LumaConfig);
18
+ /**
19
+ * 分析图片
20
+ */
21
+ analyzeImage(imageDataUrl: string, prompt: string, enableThinking?: boolean): Promise<string>;
22
+ /**
23
+ * 获取模型名称
24
+ */
25
+ getModelName(): string;
26
+ }
27
+ //# sourceMappingURL=volcengine-client.d.ts.map
@@ -0,0 +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;AA2C9C;;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;IAwElB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * 火山方舟 Volcengine Doubao 视觉模型客户端
3
+ * 支持 Doubao-Seed-1.6 系列模型(flash、vision、lite)
4
+ * 使用 Chat Completions API 格式
5
+ */
6
+ import axios from "axios";
7
+ import { logger } from "./utils/logger.js";
8
+ /**
9
+ * 火山方舟客户端
10
+ */
11
+ export class VolcengineClient {
12
+ apiKey;
13
+ model;
14
+ maxTokens;
15
+ temperature;
16
+ apiEndpoint = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";
17
+ constructor(config) {
18
+ this.apiKey = config.apiKey;
19
+ this.model = config.model;
20
+ this.maxTokens = config.maxTokens;
21
+ this.temperature = config.temperature;
22
+ }
23
+ /**
24
+ * 分析图片
25
+ */
26
+ async analyzeImage(imageDataUrl, prompt, enableThinking) {
27
+ const requestBody = {
28
+ model: this.model,
29
+ messages: [
30
+ {
31
+ role: "user",
32
+ content: [
33
+ {
34
+ type: "image_url",
35
+ image_url: {
36
+ url: imageDataUrl,
37
+ },
38
+ },
39
+ {
40
+ type: "text",
41
+ text: prompt,
42
+ },
43
+ ],
44
+ },
45
+ ],
46
+ temperature: this.temperature,
47
+ max_tokens: this.maxTokens,
48
+ stream: false,
49
+ };
50
+ logger.info("Calling Volcengine Doubao API", {
51
+ model: this.model,
52
+ thinking: !!enableThinking,
53
+ });
54
+ try {
55
+ const response = await axios.post(this.apiEndpoint, requestBody, {
56
+ headers: {
57
+ Authorization: `Bearer ${this.apiKey}`,
58
+ "Content-Type": "application/json",
59
+ },
60
+ timeout: 120000, // 120秒超时
61
+ });
62
+ if (!response.data.choices || response.data.choices.length === 0) {
63
+ throw new Error("No response from Volcengine Doubao");
64
+ }
65
+ const result = response.data.choices[0].message.content;
66
+ const usage = response.data.usage;
67
+ logger.info("Volcengine Doubao API call successful", {
68
+ tokens: usage?.total_tokens || 0,
69
+ model: response.data.model,
70
+ });
71
+ return result;
72
+ }
73
+ catch (error) {
74
+ logger.error("Volcengine Doubao API call failed", {
75
+ error: error instanceof Error ? error.message : String(error),
76
+ });
77
+ if (axios.isAxiosError(error)) {
78
+ const message = error.response?.data?.error?.message || error.message;
79
+ const status = error.response?.status;
80
+ throw new Error(`Volcengine Doubao API error (${status || "unknown"}): ${message}`);
81
+ }
82
+ throw error;
83
+ }
84
+ }
85
+ /**
86
+ * 获取模型名称
87
+ */
88
+ getModelName() {
89
+ return `Doubao (${this.model})`;
90
+ }
91
+ }
92
+ //# sourceMappingURL=volcengine-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"volcengine-client.js","sourceRoot":"","sources":["../src/volcengine-client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
- * 智谱 GLM-4.5V API 客户端
2
+ * 智谱 GLM-4.6V API 客户端
3
3
  */
4
- import type { VisionClient } from './vision-client.js';
4
+ import type { VisionClient } from "./vision-client.js";
5
+ import type { LumaConfig } from "./config.js";
5
6
  /**
6
7
  * 智谱 API 客户端
7
8
  */
@@ -12,7 +13,7 @@ export declare class ZhipuClient implements VisionClient {
12
13
  private temperature;
13
14
  private topP;
14
15
  private apiEndpoint;
15
- constructor(apiKey: string, model?: string, maxTokens?: number, temperature?: number, topP?: number);
16
+ constructor(config: LumaConfig);
16
17
  /**
17
18
  * 分析图片
18
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"zhipu-client.d.ts","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4CvD;;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,MAAM,EAAE,KAAK,GAAE,MAAmB,EAAE,SAAS,GAAE,MAAa,EAAE,WAAW,GAAE,MAAY,EAAE,IAAI,GAAE,MAAY;IAQ/H;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA4EnG;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
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;IA8ElB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGvB"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * 智谱 GLM-4.5V API 客户端
2
+ * 智谱 GLM-4.6V API 客户端
3
3
  */
4
- import axios from 'axios';
5
- import { logger } from './utils/logger.js';
4
+ import axios from "axios";
5
+ import { logger } from "./utils/logger.js";
6
6
  /**
7
7
  * 智谱 API 客户端
8
8
  */
@@ -12,13 +12,13 @@ export class ZhipuClient {
12
12
  maxTokens;
13
13
  temperature;
14
14
  topP;
15
- apiEndpoint = 'https://open.bigmodel.cn/api/paas/v4/chat/completions';
16
- constructor(apiKey, model = 'glm-4.5v', maxTokens = 4096, temperature = 0.7, topP = 0.7) {
17
- this.apiKey = apiKey;
18
- this.model = model;
19
- this.maxTokens = maxTokens;
20
- this.temperature = temperature;
21
- this.topP = topP;
15
+ apiEndpoint = "https://open.bigmodel.cn/api/paas/v4/chat/completions";
16
+ constructor(config) {
17
+ this.apiKey = config.apiKey;
18
+ this.model = config.model;
19
+ this.maxTokens = config.maxTokens;
20
+ this.temperature = config.temperature;
21
+ this.topP = config.topP;
22
22
  }
23
23
  /**
24
24
  * 分析图片
@@ -28,16 +28,16 @@ export class ZhipuClient {
28
28
  model: this.model,
29
29
  messages: [
30
30
  {
31
- role: 'user',
31
+ role: "user",
32
32
  content: [
33
33
  {
34
- type: 'image_url',
34
+ type: "image_url",
35
35
  image_url: {
36
36
  url: imageDataUrl,
37
37
  },
38
38
  },
39
39
  {
40
- type: 'text',
40
+ type: "text",
41
41
  text: prompt,
42
42
  },
43
43
  ],
@@ -46,43 +46,43 @@ export class ZhipuClient {
46
46
  temperature: this.temperature,
47
47
  max_tokens: this.maxTokens,
48
48
  top_p: this.topP,
49
- thinking: { type: 'enabled' }, // 默认启用思考模式,提高分析准确性
49
+ thinking: { type: "enabled" }, // 默认启用思考模式,提高分析准确性
50
50
  };
51
51
  // 允许显式禁用 thinking(如需要更快速度)
52
52
  if (enableThinking === false) {
53
53
  delete requestBody.thinking;
54
54
  }
55
- logger.info('Calling GLM-4.5V API', {
55
+ logger.info("Calling GLM-4.6V API", {
56
56
  model: this.model,
57
- thinking: !!requestBody.thinking
57
+ thinking: !!requestBody.thinking,
58
58
  });
59
59
  try {
60
60
  const response = await axios.post(this.apiEndpoint, requestBody, {
61
61
  headers: {
62
- 'Authorization': `Bearer ${this.apiKey}`,
63
- 'Content-Type': 'application/json',
62
+ Authorization: `Bearer ${this.apiKey}`,
63
+ "Content-Type": "application/json",
64
64
  },
65
65
  timeout: 60000, // 60秒超时
66
66
  });
67
67
  if (!response.data.choices || response.data.choices.length === 0) {
68
- throw new Error('No response from GLM-4.5V');
68
+ throw new Error("No response from GLM-4.6V");
69
69
  }
70
70
  const result = response.data.choices[0].message.content;
71
71
  const usage = response.data.usage;
72
- logger.info('GLM-4.5V API call successful', {
72
+ logger.info("GLM-4.6V API call successful", {
73
73
  tokens: usage?.total_tokens || 0,
74
- model: response.data.model
74
+ model: response.data.model,
75
75
  });
76
76
  return result;
77
77
  }
78
78
  catch (error) {
79
- logger.error('GLM-4.5V API call failed', {
80
- error: error instanceof Error ? error.message : String(error)
79
+ logger.error("GLM-4.6V API call failed", {
80
+ error: error instanceof Error ? error.message : String(error),
81
81
  });
82
82
  if (axios.isAxiosError(error)) {
83
83
  const message = error.response?.data?.error?.message || error.message;
84
84
  const status = error.response?.status;
85
- throw new Error(`GLM-4.5V API error (${status || 'unknown'}): ${message}`);
85
+ throw new Error(`GLM-4.6V API error (${status || "unknown"}): ${message}`);
86
86
  }
87
87
  throw error;
88
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"zhipu-client.js","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zhipu-client.js","sourceRoot":"","sources":["../src/zhipu-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "luma-mcp",
3
- "version": "1.2.5",
4
- "description": "Multi-model vision understanding MCP server. Supports GLM-4.5V (Zhipu), DeepSeek-OCR (SiliconFlow - Free), and Qwen3-VL-Flash (Aliyun)",
3
+ "version": "1.2.7",
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": {
7
7
  "luma-mcp": "build/index.js"
@@ -17,13 +17,16 @@
17
17
  "mcp",
18
18
  "vision",
19
19
  "ai",
20
- "glm-4.5v",
20
+ "glm-4.6v",
21
21
  "zhipu",
22
22
  "deepseek-ocr",
23
23
  "siliconflow",
24
24
  "qwen3-vl",
25
25
  "aliyun",
26
26
  "dashscope",
27
+ "doubao",
28
+ "volcengine",
29
+ "ark",
27
30
  "ocr",
28
31
  "free",
29
32
  "image-understanding",