feat: 升级至 v0.3.15 — MiMo 多模态 + 工作空间数据库继承 + 引导窗口上下文配置 + TS 错误修复
- feat(mimo): 适配器支持图片输入,将 images 转为 OpenAI 兼容 content parts 数组 - feat(workspace): 切换工作空间时支持继承数据库 agent.db(SQLite backup API 原子导出,自动 checkpoint WAL) - feat(onboarding): 引导弹窗 LLM 配置加上下文长度字段(DeepSeek/Agnes=1000000、MiMo=131072、Ollama=null) - fix(types): 修复 16 个 TypeScript 编译错误(setConfigLoaded 接口声明、10 个 IPC 返回类型加 error 字段、MUI TextField readOnly slot 迁移) - chore(workspace): 移除死代码 traces 目录(trace 数据实际存储于数据库 sessions.metadata 字段,traces 目录从未被任何代码读写) - docs(mimo): API 文档补充多模态输入章节和 curl/Python 代码示例 - chore: 版本号 0.3.14 → 0.3.15
This commit is contained in:
@@ -152,6 +152,7 @@ export class MimoAdapter extends BaseAdapter {
|
||||
* 构建 MiMo 原生请求体
|
||||
*
|
||||
* MiMo 特有参数:
|
||||
* - 多模态图片:user 消息的 images[] → OpenAI content 数组 [{type:"text"}, {type:"image_url"}]
|
||||
* - thinking: { type: "enabled" / "disabled" } — 与 DeepSeek 一致
|
||||
* - max_completion_tokens — 非 max_tokens(MiMo 使用新字段名)
|
||||
* - stream_options: { include_usage: true } — 流式返回 usage
|
||||
@@ -163,6 +164,32 @@ export class MimoAdapter extends BaseAdapter {
|
||||
const messages = buildOpenAICompatibleMessages(request);
|
||||
const tools = buildOpenAICompatibleTools(request.tools);
|
||||
|
||||
// === MiMo 多模态:将 images 转为 OpenAI content 数组 ===
|
||||
// buildOpenAICompatibleMessages 不处理图片(各 Provider 自行处理)
|
||||
// MiMo 是 OpenAI 兼容 API,多模态格式与 Agnes AI 一致
|
||||
const nonSystemMsgs = request.messages.filter((m) => m.role !== 'system');
|
||||
let imageCount = 0;
|
||||
for (let i = 0; i < messages.length; i++) {
|
||||
// messages[0] 是 system,非 system 消息从 messages[1] 开始
|
||||
if (i === 0) continue;
|
||||
const origMsg = nonSystemMsgs[i - 1];
|
||||
if (!origMsg?.images?.length) continue;
|
||||
|
||||
imageCount += origMsg.images.length;
|
||||
|
||||
const contentParts: Array<Record<string, unknown>> = [];
|
||||
if (origMsg.content) {
|
||||
contentParts.push({ type: 'text', text: origMsg.content });
|
||||
}
|
||||
for (const img of origMsg.images) {
|
||||
contentParts.push({
|
||||
type: 'image_url',
|
||||
image_url: { url: img.url },
|
||||
});
|
||||
}
|
||||
messages[i].content = contentParts;
|
||||
}
|
||||
|
||||
const body: Record<string, unknown> = {
|
||||
model: this.config.defaultModel,
|
||||
messages,
|
||||
|
||||
Reference in New Issue
Block a user