缺陷 / 严重 / LLM 适配器
electron/harness/adapters/ollama.adapter.ts
当用户上传图片或 LLM 调用涉及图片消息时,MetonaMessage.images 中可能存储的是 http(s) URL。 当前 Ollama Adapter 的多模态处理直接将 URL 当作 base64 字符串塞入 images: [url] 字段传给 Ollama。 Ollama 无法识别该格式,会抛出 base64 解码错误或返回空响应。
images: [url]
参考 Agnes AI Adapter 实现:
async function resolveImageToBase64(image: string): Promise<string> { if (image.startsWith('http')) { const res = await fetch(image); const buf = Buffer.from(await res.arrayBuffer()); return `data:${res.headers.get('content-type') ?? 'image/png'};base64,${buf.toString('base64')}`; } return image; }
文件: electron/harness/adapters/ollama.adapter.ts
问题: Ollama Adapter 的 toNativeRequest 将 http(s) URL 图片直接当作 base64 字符串传给 Ollama API,导致 base64 解码错误,多模态功能不可用。
toNativeRequest
修复方案:
async
resolveImageToBase64(url)
data:
.map()
for
验证: tsc --noEmit 类型检查通过。
tsc --noEmit
No dependencies set.
The note is not visible to the blocked user.
问题类型
缺陷 / 严重 / LLM 适配器
文件位置
electron/harness/adapters/ollama.adapter.ts问题描述
当用户上传图片或 LLM 调用涉及图片消息时,MetonaMessage.images 中可能存储的是 http(s) URL。
当前 Ollama Adapter 的多模态处理直接将 URL 当作 base64 字符串塞入
images: [url]字段传给 Ollama。Ollama 无法识别该格式,会抛出 base64 解码错误或返回空响应。
影响
建议修复
参考 Agnes AI Adapter 实现:
修复说明
文件:
electron/harness/adapters/ollama.adapter.ts问题: Ollama Adapter 的
toNativeRequest将 http(s) URL 图片直接当作 base64 字符串传给 Ollama API,导致 base64 解码错误,多模态功能不可用。修复方案:
toNativeRequest改为async,支持异步图片下载resolveImageToBase64(url)方法:检测 http(s) URL → fetch 下载 → 转纯 base64(不含data:前缀).map()改为for循环(map 回调无法 await)验证:
tsc --noEmit类型检查通过。