新增: F-05多模态Phase2c闭环(IPC接parts+api透传+doSend传参)
This commit is contained in:
@@ -2,26 +2,32 @@
|
||||
|
||||
import { invoke } from '@tauri-apps/api/core'
|
||||
import { listen, type UnlistenFn } from '@tauri-apps/api/event'
|
||||
import type { AiChatEvent, AiConversationDetail, AiConversationSummary, AiProviderConfig, ModelConfig, SkillInfo } from './types'
|
||||
import type { AiChatEvent, AiConversationDetail, AiConversationSummary, AiProviderConfig, ContentPart, ModelConfig, SkillInfo } from './types'
|
||||
|
||||
export const aiApi = {
|
||||
/** 发送消息(非阻塞,通过 ai-chat-event 流式返回);skill 传技能名则注入其 SKILL.md */
|
||||
sendMessage(message: string, language?: string, skill?: string, modelOverride?: string | null): Promise<string> {
|
||||
/**
|
||||
* 发送消息(非阻塞,通过 ai-chat-event 流式返回);skill 传技能名则注入其 SKILL.md。
|
||||
* F-260614-05 Phase 2c: parts 透传给后端 ai_chat_send → user_parts → provider vision 端点。
|
||||
* parts 为空/undefined → 后端走 user() 纯文本(向后兼容)。
|
||||
*/
|
||||
sendMessage(message: string, language?: string, skill?: string, modelOverride?: string | null, parts?: ContentPart[]): Promise<string> {
|
||||
return invoke('ai_chat_send', {
|
||||
message,
|
||||
language: language || 'zh-CN',
|
||||
skill: skill || null,
|
||||
modelOverride: modelOverride || null,
|
||||
parts: parts && parts.length > 0 ? parts : null,
|
||||
})
|
||||
},
|
||||
|
||||
/** 强制发送(B-260616-02: 复位 generating 残留后走 send 同款流程) */
|
||||
forceSend(message: string, language?: string, skill?: string, modelOverride?: string | null): Promise<string> {
|
||||
/** 强制发送(B-260616-02: 复位 generating 残留后走 send 同款流程);parts 透传同 sendMessage。 */
|
||||
forceSend(message: string, language?: string, skill?: string, modelOverride?: string | null, parts?: ContentPart[]): Promise<string> {
|
||||
return invoke('ai_chat_force_send', {
|
||||
message,
|
||||
language: language || 'zh-CN',
|
||||
skill: skill || null,
|
||||
modelOverride: modelOverride || null,
|
||||
parts: parts && parts.length > 0 ? parts : null,
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
@@ -110,9 +110,10 @@ async function doSend(text: string, skill?: string, force = false, parts?: Conte
|
||||
// F-01 阶段6: 透传 modelOverride(主对话专用,后端兜底校验池内才用)
|
||||
const override = modelOverride.value
|
||||
if (force) {
|
||||
await aiApi.forceSend(text.trim(), lang, skill, override)
|
||||
// F-05 Phase 2c: 透传 parts(图片)给后端 ai_chat_force_send,多模态全链生效
|
||||
await aiApi.forceSend(text.trim(), lang, skill, override, parts)
|
||||
} else {
|
||||
await aiApi.sendMessage(text.trim(), lang, skill, override)
|
||||
await aiApi.sendMessage(text.trim(), lang, skill, override, parts)
|
||||
}
|
||||
} catch (e) {
|
||||
// IPC 失败(spawn 前/provider 配置错等):回滚 streaming 防光标卡死 + 移除 user 消息与空气泡占位;
|
||||
|
||||
Reference in New Issue
Block a user