-
Notifications
You must be signed in to change notification settings - Fork 2.8k
fix: handle mentions when resending message #7819
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
确保当原始消息模型被提及时才使用该模型,否则使用助手默认模型
This reverts commit 37a1443.
将消息重发逻辑拆分为处理已有消息和新增提及模型消息两部分 简化条件判断,移除冗余代码
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR fixes message resending logic when user messages contain model mentions. Previously, mentions were only processed when no associated assistant messages existed, causing inconsistent behavior during consecutive resends. The new logic properly handles mentions by comparing them with existing assistant message models and creates new messages only for models mentioned but not already present.
- Separates the handling of existing assistant message resets from new mention-based message creation
- Adds logic to compare mentioned models with existing assistant message models
- Creates new assistant messages only for models that are mentioned but not already present
Comments suppressed due to low confidence (1)
src/renderer/src/store/thunk/messageThunk.ts:1180
- [nitpick] The variable name 'originModelSet' should be renamed to 'existingModelSet' or 'currentModelSet' for better clarity about what it represents.
const originModelSet = new Set(assistantMessagesToReset.map((m) => m.model).filter((m) => m !== undefined))
当重传单条无提及消息时,使用助手模型进行重传,其他情况保持原有逻辑
@MyPrototypeWhat 要是没问题review approve一下哈 |
还没来及测,我下午看下 |
|
||
resetDataList.push(resetMsg) | ||
allBlockIdsToDelete.push(...blockIdsToDelete) | ||
messagesToUpdateInRedux.push({ topicId, messageId: resetMsg.id, updates: resetMsg }) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个else应该可以跟上面合并
- 有mentions优先按照mentions来
- 没有则
...(assistantMessagesToReset.length === 1 ? { model: assistant.model } : {})
动态判断是助手model还是自身model
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
合并了,mentions在后面处理。
This reverts commit 2e36917.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* fix(messageThunk): 修复重置消息时模型未正确继承的问题 * fix(消息重发): 修复重发消息时模型选择逻辑 确保当原始消息模型被提及时才使用该模型,否则使用助手默认模型 * style(PasteService): 统一文件换行符为LF格式 * Revert "style(PasteService): 统一文件换行符为LF格式" This reverts commit 37a1443. * refactor(messageThunk): 优化消息重发逻辑,分离新旧消息处理 将消息重发逻辑拆分为处理已有消息和新增提及模型消息两部分 简化条件判断,移除冗余代码 * style(messageThunk): 移除多余的空行 * fix(消息重传): 单条无提及消息重传时使用助手模型 当重传单条无提及消息时,使用助手模型进行重传,其他情况保持原有逻辑 * Revert "fix(消息重传): 单条无提及消息重传时使用助手模型" This reverts commit 2e36917. * fix(消息重发): 修改重发消息时模型设置逻辑
* chore: update electron to version 37.1.0 and add node-abi dependency * chore: specify Node.js engine version requirement in package.json * hotfix: error on deleting assistant (#8190) fix: error on deleting assistant * Fix/mcp bug (#8189) * feat(models): enhance function calling model detection and update migration logic - Added support for 'gemini-1' in FUNCTION_CALLING_EXCLUDED_MODELS. - Updated isFunctionCallingModel to handle optional model input. - Modified migration logic to change tool use mode for assistants using function calling models. * feat(models): add new models to vision and function calling lists - Added 'kimi-thinking-preview' to visionAllowedModels. - Added 'kimi-k2' to FUNCTION_CALLING_MODELS. - Updated migration logic to ensure compatibility with new model settings. * refactor(TextChunkMiddleware): streamline text accumulation logic and improve response handling - Simplified the logic for accumulating text content and updating the internal state. - Ensured that the final text is consistently used in response callbacks. - Removed redundant code for handling text completion in the ToolUseExtractionMiddleware. - Added mock state for MCP tools in tests to enhance coverage for tool use extraction. * refactor(BaseApiClient): remove unused content extraction utility - Replaced the usage of getContentWithTools with getMainTextContent in the getMessageContent method. - Cleaned up imports by removing the unused getContentWithTools function. * refactor: custom mini app loading logic (#8181) * refactor: custom mini app loading logic Replaces try-catch with an explicit file existence check before reading 'custom-minapps.json'. Ensures the file is created with an empty array if it does not exist, improving clarity and error handling. * refactor: custom mini app loading logic Simplifies the loading of custom mini apps by removing the explicit file existence check and handling the read failure case directly. If reading the file fails, an empty array is written and returned. * fix: improve error handling in file reading for custom mini apps * Revert "feat: optimize minapp cache with LRU (#8160)" (#8205) This reverts commit f0043b4. * feat: add support for 302AI provider in MCP settings (#7755) * feat: add support for 302AI provider in MCP settings - Introduced new provider for 302AI, including token management and server synchronization functionality. - Updated SyncServersPopup to integrate 302AI provider. - Added new file for 302AI provider utilities, including token storage and server fetching logic. * fix: re-merge main * chore: update check-i18n scripts and remove duplicate keys (#8203) * chore(version): 1.5.0 * fix: handle mentions when resending message (#7819) * fix(messageThunk): 修复重置消息时模型未正确继承的问题 * fix(消息重发): 修复重发消息时模型选择逻辑 确保当原始消息模型被提及时才使用该模型,否则使用助手默认模型 * style(PasteService): 统一文件换行符为LF格式 * Revert "style(PasteService): 统一文件换行符为LF格式" This reverts commit 37a1443. * refactor(messageThunk): 优化消息重发逻辑,分离新旧消息处理 将消息重发逻辑拆分为处理已有消息和新增提及模型消息两部分 简化条件判断,移除冗余代码 * style(messageThunk): 移除多余的空行 * fix(消息重传): 单条无提及消息重传时使用助手模型 当重传单条无提及消息时,使用助手模型进行重传,其他情况保持原有逻辑 * Revert "fix(消息重传): 单条无提及消息重传时使用助手模型" This reverts commit 2e36917. * fix(消息重发): 修改重发消息时模型设置逻辑 * feat: enhance proxy management and configuration (#8164) * feat: enhance proxy management and configuration - Added support for new proxy modes and improved proxy configuration handling. - Replaced AxiosProxy with direct axios usage for HTTP requests. - Introduced fetch-socks and undici for better proxy handling. - Updated IPC and ConfigManager to accommodate new proxy settings. - Removed deprecated AxiosProxy service to streamline codebase. * format code * feat: improve proxy configuration and monitoring - Introduced a new mechanism to monitor system proxy changes and update configurations accordingly. - Enhanced the configureProxy method to prevent concurrent executions and added error logging with electron-log. - Refactored proxy handling logic to streamline the setting of global and session proxies. - Removed deprecated methods related to proxy management for cleaner code. * update yarn.lock * fix: update proxy configuration logic to handle direct mode - Modified the app's ready event to check for 'direct' mode before configuring the proxy. - Ensured that the proxy configuration is only applied when necessary, improving efficiency. * feat: enhance proxy configuration to support authentication - Added userId and password fields to the proxy configuration for SOCKS connections. - Improved handling of proxy credentials to allow for authenticated proxy usage. * refactor: remove deprecated proxy methods and streamline configuration logic - Eliminated the setProxy and getProxy methods from ConfigManager to simplify the proxy configuration process. - Updated ProxyManager to initialize with a default proxy configuration and removed unnecessary checks for 'direct' mode during initialization. - Enhanced logging for proxy configuration changes to improve traceability. * format code * feat: enhance WebDav and ProxyManager for self-signed certificate support - Added handling for self-signed certificates in ProxyManager to allow secure connections with custom agents. - Updated WebDav configuration to include an https.Agent with rejectUnauthorized set to false, facilitating connections to servers with self-signed certificates. * delete global setting for rejectUnauthorized * chore: update dependencies in package.json and yarn.lock - Upgraded electron from 37.1.0 to 37.2.3. - Updated electron-vite from 3.1.0 to 4.0.0. - Various dependency updates in yarn.lock to align with the new versions, including Babel packages and esbuild to 0.25.6. --------- Co-authored-by: one <[email protected]> Co-authored-by: SuYao <[email protected]> Co-authored-by: 自由的世界人 <[email protected]> Co-authored-by: fullex <[email protected]> Co-authored-by: ⌞L⌝ <[email protected]> Co-authored-by: kangfenmao <[email protected]> Co-authored-by: Phantom <[email protected]>
What this PR does
修改了重传消息时对用户消息中的mentions的处理逻辑。原本只有在不含关联助手消息时才会处理mentions,因此会出现当不含关联助手消息时连续两次重传会使用不同模型的诡异情况。
现在,重传消息会根据mentions和已有的关联助手消息中使用的模型来判断是否应该创建新消息。已存在的助手消息总是会根据其原有模型进行重传,而存在于mentions却不存在于关联助手消息的模型会创建新消息。
Fixes #7816
Why we need it and why it was done in this way
The following tradeoffs were made:
The following alternatives were considered:
Links to places where the discussion took place:
Breaking changes
If this PR introduces breaking changes, please describe the changes and the impact on users.
Special notes for your reviewer
Checklist
This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.
Release note