From 0a6aef5e15ff6b8104c1e18ef31ac08918cddc5c Mon Sep 17 00:00:00 2001 From: zerob13 Date: Thu, 5 Feb 2026 22:17:22 +0800 Subject: [PATCH] fix(agent): mark question tool messages sent --- src/main/presenter/agentPresenter/index.ts | 3 +++ .../presenter/agentPresenter/streaming/llmEventHandler.ts | 4 ++++ .../presenter/sessionPresenter/managers/messageManager.ts | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/src/main/presenter/agentPresenter/index.ts b/src/main/presenter/agentPresenter/index.ts index ee403f94f..2833dc5ad 100644 --- a/src/main/presenter/agentPresenter/index.ts +++ b/src/main/presenter/agentPresenter/index.ts @@ -400,6 +400,9 @@ export class AgentPresenter implements IAgentPresenter { } await this.messageManager.editMessage(messageId, JSON.stringify(content)) + if (message.status === 'pending') { + await this.messageManager.updateMessageStatus(messageId, 'sent') + } presenter.sessionManager.clearPendingQuestion(message.conversationId) presenter.sessionManager.setStatus(message.conversationId, 'idle') } diff --git a/src/main/presenter/agentPresenter/streaming/llmEventHandler.ts b/src/main/presenter/agentPresenter/streaming/llmEventHandler.ts index 9709ca895..9eb76ded9 100644 --- a/src/main/presenter/agentPresenter/streaming/llmEventHandler.ts +++ b/src/main/presenter/agentPresenter/streaming/llmEventHandler.ts @@ -399,6 +399,10 @@ export class LLMEventHandler { {}, state.message.content ) + if (hasPendingQuestions) { + // Question tool ends the assistant message even when waiting for user input. + await this.messageManager.updateMessageStatus(eventId, 'sent') + } this.searchingMessages.delete(eventId) presenter.sessionManager.setStatus(state.conversationId, 'waiting_permission') if (!hasPendingPermissions) { diff --git a/src/main/presenter/sessionPresenter/managers/messageManager.ts b/src/main/presenter/sessionPresenter/managers/messageManager.ts index c1b5001c2..30c917aed 100644 --- a/src/main/presenter/sessionPresenter/managers/messageManager.ts +++ b/src/main/presenter/sessionPresenter/managers/messageManager.ts @@ -384,6 +384,14 @@ export class MessageManager implements IMessageManager { // 处理每个未完成的消息 for (const message of pendingMessages) { + const blocks = Array.isArray(message.content) ? message.content : [] + const hasQuestionRequest = blocks.some( + (block) => block.type === 'action' && block.action_type === 'question_request' + ) + if (hasQuestionRequest) { + await this.updateMessageStatus(message.id, 'sent') + continue + } await this.handleMessageError(message.id, 'common.error.sessionInterrupted') } }