diff --git a/src/renderer/src/hooks/useMessageOperations.ts b/src/renderer/src/hooks/useMessageOperations.ts index 30414231..fe863d5b 100644 --- a/src/renderer/src/hooks/useMessageOperations.ts +++ b/src/renderer/src/hooks/useMessageOperations.ts @@ -1,4 +1,5 @@ import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' +import { estimateMessageUsage } from '@renderer/services/TokenService' import store, { useAppDispatch, useAppSelector } from '@renderer/store' import { clearStreamMessage, @@ -55,6 +56,16 @@ export function useMessageOperations(topic: Topic) { */ const editMessage = useCallback( async (messageId: string, updates: Partial) => { + // 如果更新包含内容变更,重新计算 token + if ('content' in updates) { + const message = messages.find((m) => m.id === messageId) + if (message) { + const updatedMessage = { ...message, ...updates } + const usage = await estimateMessageUsage(updatedMessage) + updates.usage = usage + } + } + await dispatch( updateMessage({ topicId: topic.id, @@ -63,7 +74,7 @@ export function useMessageOperations(topic: Topic) { }) ) }, - [dispatch, topic.id] + [dispatch, topic.id, messages] ) /**