fix: 完善智能自动模式对话流程
修复内容: 1. 前端:检查用户最后一条消息是否有图片(而不是整个对话最后一条) 2. 前端:useEffect 依赖项添加 selectedModelId 3. 后端:错误回退时也生成友好消息 4. 后端:保存消息时添加完整的数据库字段 5. 分析器:增加颜色调整关键词匹配(改成X色、换成X色) 现在大模型(Qwen3 VL)会生成自然对话回复 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
ddada59db1
commit
231d726b37
@ -486,6 +486,8 @@ export async function POST(request: Request) {
|
|||||||
let bestModel = null;
|
let bestModel = null;
|
||||||
if (hasImage) {
|
if (hasImage) {
|
||||||
bestModel = allModels.find(m => m.model.supportsImageGen && !m.model.isSubModel);
|
bestModel = allModels.find(m => m.model.supportsImageGen && !m.model.isSubModel);
|
||||||
|
// 🆕 回退时也生成一个友好消息
|
||||||
|
smartAutoFriendlyMessage = "好的,我来帮你处理这张图片~";
|
||||||
}
|
}
|
||||||
if (!bestModel) {
|
if (!bestModel) {
|
||||||
bestModel = allModels.find(m => m.model.isDefault && !m.model.isSubModel);
|
bestModel = allModels.find(m => m.model.isDefault && !m.model.isSubModel);
|
||||||
@ -1016,6 +1018,11 @@ export async function POST(request: Request) {
|
|||||||
parts: [{ type: "text", text: smartAutoFriendlyMessage }],
|
parts: [{ type: "text", text: smartAutoFriendlyMessage }],
|
||||||
attachments: [],
|
attachments: [],
|
||||||
createdAt: new Date(),
|
createdAt: new Date(),
|
||||||
|
videoStorageStatus: null,
|
||||||
|
temporaryVideoUrl: null,
|
||||||
|
permanentVideoUrl: null,
|
||||||
|
archivedAt: null,
|
||||||
|
videoMetadata: null,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
@ -1235,6 +1242,11 @@ export async function POST(request: Request) {
|
|||||||
parts: [{ type: "text", text: smartAutoFriendlyMessage }],
|
parts: [{ type: "text", text: smartAutoFriendlyMessage }],
|
||||||
attachments: [],
|
attachments: [],
|
||||||
createdAt: new Date(),
|
createdAt: new Date(),
|
||||||
|
videoStorageStatus: null,
|
||||||
|
temporaryVideoUrl: null,
|
||||||
|
permanentVideoUrl: null,
|
||||||
|
archivedAt: null,
|
||||||
|
videoMetadata: null,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|||||||
@ -236,7 +236,7 @@ function PureMessages({
|
|||||||
else {
|
else {
|
||||||
setShowThinkingWithDelay(false);
|
setShowThinkingWithDelay(false);
|
||||||
}
|
}
|
||||||
}, [status, messages, isGeminiModel, isQianwenVideoModel, isVolcanoVisionModel, isVideoModel, isAlibabaImageModel]);
|
}, [status, messages, isGeminiModel, isQianwenVideoModel, isVolcanoVisionModel, isVideoModel, isAlibabaImageModel, selectedModelId]);
|
||||||
|
|
||||||
// 🆕 监听新消息添加,当用户发送带图片的消息或添加加载消息时,强制滚动到底部
|
// 🆕 监听新消息添加,当用户发送带图片的消息或添加加载消息时,强制滚动到底部
|
||||||
const prevMessagesLengthRef = useRef(messages.length);
|
const prevMessagesLengthRef = useRef(messages.length);
|
||||||
@ -365,9 +365,9 @@ function PureMessages({
|
|||||||
|
|
||||||
// 🆕 检查智能自动模式是否有图片(需要显示生图占位图)
|
// 🆕 检查智能自动模式是否有图片(需要显示生图占位图)
|
||||||
const isAutoMode = selectedModelId === "auto";
|
const isAutoMode = selectedModelId === "auto";
|
||||||
const userMessageHasImage = messages.length > 0 &&
|
// 🆕 找用户的最后一条消息(而不是整个对话的最后一条)
|
||||||
messages[messages.length - 1]?.role === "user" &&
|
const lastUserMsg = [...messages].reverse().find(m => m.role === "user");
|
||||||
messages[messages.length - 1]?.parts?.some((p: any) => p.type === "file" || p.type === "image");
|
const userMessageHasImage = lastUserMsg?.parts?.some((p: any) => p.type === "file" || p.type === "image");
|
||||||
const showAutoModeImage = isAutoMode && userMessageHasImage;
|
const showAutoModeImage = isAutoMode && userMessageHasImage;
|
||||||
|
|
||||||
if (showVideo) return <QianwenVideoLoading />;
|
if (showVideo) return <QianwenVideoLoading />;
|
||||||
|
|||||||
@ -312,13 +312,16 @@ export function fallbackKeywordAnalysis(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// 调色
|
// 调色/改颜色
|
||||||
if (/调色|调整颜色|亮度|对比度|饱和度|色调|曝光|滤镜/.test(lowerText)) {
|
if (/调色|调整颜色|亮度|对比度|饱和度|色调|曝光|滤镜|改成.*色|换成.*色|变成.*色|颜色改成|颜色换成|颜色变成/.test(lowerText)) {
|
||||||
|
// 提取目标颜色
|
||||||
|
const colorMatch = text.match(/(?:改成|换成|变成)(.+?)(?:色|$)/);
|
||||||
|
const color = colorMatch ? colorMatch[1].trim() + "色" : "";
|
||||||
return {
|
return {
|
||||||
intent: "image_edit",
|
intent: "image_edit",
|
||||||
subIntent: "color_adjust",
|
subIntent: "color_adjust",
|
||||||
confidence: 0.9,
|
confidence: 0.9,
|
||||||
conversationalReply: "收到,我来帮你调整图片色彩~",
|
conversationalReply: color ? `好的,我来帮你把颜色改成${color}~` : "收到,我来帮你调整图片色彩~",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user