feat(claude-kiro): 添加新模型支持并优化消息合并逻辑
- 在PROVIDER_MODELS中添加gemini-2.5-flash和claude-haiku-4-5模型 - 在FULL_MODEL_MAPPING中添加claude-haiku-4-5模型映射 - 实现相邻相同role消息的合并功能,优化历史消息处理
This commit is contained in:
parent
203f0a4e65
commit
ee1f89552b
2 changed files with 55 additions and 2 deletions
|
|
@ -27,6 +27,7 @@ const KIRO_MODELS = getProviderModels('claude-kiro-oauth');
|
|||
// 完整的模型映射表
|
||||
const FULL_MODEL_MAPPING = {
|
||||
"claude-opus-4-5":"claude-opus-4.5",
|
||||
"claude-haiku-4-5":"claude-haiku-4.5",
|
||||
"claude-sonnet-4-5": "CLAUDE_SONNET_4_5_20250929_V1_0",
|
||||
"claude-sonnet-4-5-20250929": "CLAUDE_SONNET_4_5_20250929_V1_0",
|
||||
"claude-sonnet-4-20250514": "CLAUDE_SONNET_4_20250514_V1_0",
|
||||
|
|
@ -609,6 +610,55 @@ async initializeAuth(forceRefresh = false) {
|
|||
}
|
||||
}
|
||||
|
||||
// 合并相邻相同 role 的消息
|
||||
const mergedHistory = [];
|
||||
for (let i = 0; i < history.length; i++) {
|
||||
const currentMessage = history[i];
|
||||
|
||||
if (mergedHistory.length === 0) {
|
||||
mergedHistory.push(currentMessage);
|
||||
} else {
|
||||
const lastMessage = mergedHistory[mergedHistory.length - 1];
|
||||
|
||||
// 判断当前消息和上一条消息是否为相同类型(都是 userInputMessage 或都是 assistantResponseMessage)
|
||||
const currentIsUser = currentMessage.hasOwnProperty('userInputMessage');
|
||||
const lastIsUser = lastMessage.hasOwnProperty('userInputMessage');
|
||||
|
||||
if (currentIsUser && lastIsUser) {
|
||||
// 合并两个 userInputMessage
|
||||
lastMessage.userInputMessage.content += '\n' + currentMessage.userInputMessage.content;
|
||||
|
||||
// 合并 toolResults(如果存在)
|
||||
if (currentMessage.userInputMessage.userInputMessageContext?.toolResults) {
|
||||
if (!lastMessage.userInputMessage.userInputMessageContext.toolResults) {
|
||||
lastMessage.userInputMessage.userInputMessageContext.toolResults = [];
|
||||
}
|
||||
lastMessage.userInputMessage.userInputMessageContext.toolResults.push(
|
||||
...currentMessage.userInputMessage.userInputMessageContext.toolResults
|
||||
);
|
||||
}
|
||||
|
||||
// 合并 images(如果存在)
|
||||
if (currentMessage.userInputMessage.images && currentMessage.userInputMessage.images.length > 0) {
|
||||
if (!lastMessage.userInputMessage.images) {
|
||||
lastMessage.userInputMessage.images = [];
|
||||
}
|
||||
lastMessage.userInputMessage.images.push(...currentMessage.userInputMessage.images);
|
||||
}
|
||||
} else if (!currentIsUser && !lastIsUser) {
|
||||
// 合并两个 assistantResponseMessage
|
||||
lastMessage.assistantResponseMessage.content += '\n' + currentMessage.assistantResponseMessage.content;
|
||||
|
||||
// 合并 toolUses(如果存在)
|
||||
if (currentMessage.assistantResponseMessage.toolUses && currentMessage.assistantResponseMessage.toolUses.length > 0) {
|
||||
lastMessage.assistantResponseMessage.toolUses.push(...currentMessage.assistantResponseMessage.toolUses);
|
||||
}
|
||||
} else {
|
||||
mergedHistory.push(currentMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build current message
|
||||
const currentMessage = processedMessages[processedMessages.length - 1];
|
||||
let currentContent = '';
|
||||
|
|
@ -654,7 +704,7 @@ async initializeAuth(forceRefresh = false) {
|
|||
chatTriggerType: KIRO_CONSTANTS.CHAT_TRIGGER_TYPE_MANUAL,
|
||||
conversationId: conversationId,
|
||||
currentMessage: {}, // Will be populated based on the last message's role
|
||||
history: history
|
||||
history: mergedHistory
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -680,6 +730,7 @@ async initializeAuth(forceRefresh = false) {
|
|||
request.profileArn = this.profileArn;
|
||||
}
|
||||
|
||||
// fs.writeFile('claude-kiro-request'+Date.now()+'.json', JSON.stringify(request));
|
||||
return request;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,11 +17,13 @@ export const PROVIDER_MODELS = {
|
|||
'gemini-3-pro-image-preview',
|
||||
'gemini-3-pro-preview',
|
||||
'gemini-claude-sonnet-4-5',
|
||||
'gemini-claude-sonnet-4-5-thinking'
|
||||
'gemini-claude-sonnet-4-5-thinking',
|
||||
'gemini-2.5-flash'
|
||||
],
|
||||
'claude-custom': [],
|
||||
'claude-kiro-oauth': [
|
||||
'claude-opus-4-5',
|
||||
'claude-haiku-4-5',
|
||||
'claude-sonnet-4-5',
|
||||
'claude-sonnet-4-5-20250929',
|
||||
'claude-sonnet-4-20250514',
|
||||
|
|
|
|||
Loading…
Reference in a new issue