
AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆【免费下载链接】OperitThe most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent项目地址https://gitcode.com/gh_mirrors/op/Operit点击查看免费下载聊天记录管理是 OperitAndroid AI Agent 与 AI 聊天应用中用户对历史会话进行批量维护的核心页面。本文将围绕「分窗口重建聊天记忆」项目中聊天记录管理入口与进度的 UI 设计讲解如何把「批量管理」与「记忆构建」两类不同风险的操作拆分为独立入口、统一操作弹窗与独立配置确认弹窗并说明运行中记忆任务进度与取消按钮的实现方式涉及 ChatHistorySettingsScreen.kt、ChatMemoryRebuildManager.kt 与 ChatMemoryWindowPlanner.kt 等源码。读完本文你将掌握 Operit 聊天记录管理页面双入口拆分的设计思路、选中会话后统一弹窗的交互模型以及记忆构建任务从启动、进度展示到取消的完整状态机实现。一、设计背景旧实现的问题与意图修正1.1 旧实现的局限在重构之前聊天记录管理的会话多选区域只支持三类操作删除批量删除选中的会话角色卡归属批量调整将选中会话批量归属到指定角色卡群组归属批量调整将选中会话批量移动到指定群组。也就是说多选区域的工具栏将「删除 / 归类」这类高风险或高频维护操作与后续新增的记忆操作全部平铺在一起。随着「分窗口重建聊天记忆」功能的加入若继续沿用单条工具栏平铺所有操作会出现两类问题风险等级混杂删除是不可逆的破坏性操作记忆构建则是向记忆空间写入长期记忆的增值操作二者操作成本与风险差异极大混排容易造成误触交互语义不清记忆构建需要用户指定窗口大小等配置参数与批量归类的交互流程完全不同无法复用同一弹窗承载。1.2 意图修正双入口 分级弹窗重构后的交互设计将操作按语义拆分为两个入口选中聊天后进入统一操作弹窗不再在列表平铺所有按钮批量归类和删除进入管理弹窗承载删除、角色卡归属、群组归属调整等批量维护操作记忆构建进入独立配置确认弹窗单独承载窗口大小选择与构建确认避免与其他操作混淆在列表下只展示运行中的记忆任务进度和取消按钮进度信息常驻可见取消语义明确且低频配置操作不再干扰聊天记录的选择。1.3 预期结果用户可以从聊天记录管理中直接对历史会话补建记忆即对历史很长、此前未能可靠保存长期记忆的会话重建记忆库记忆任务状态可见、取消语义明确低频操作窗口大小配置、构建确认不干扰日常的聊天记录多选与批量维护。二、页面落地聊天记录管理设置入口的 UI 结构该设计落在 ChatHistorySettingsScreen.kt 中对应设置页中的「聊天记录管理」页面。从源码结构看页面由以下几块组成2.1 会话多选区与操作入口拆分页面维护了selectedChatIdsSetString作为多选状态并在选中集合非空时展示操作入口批量归类 / 删除等管理操作通过管理弹窗bulk manage dialog承载记忆构建则通过独立的记忆构建配置确认弹窗showMemoryRebuildConfirmDialog承载。源码中的关键状态与守卫逻辑包括var showMemoryRebuildConfirmDialog by remember { mutableStateOf(false) } var selectedMemoryWindowSize by remember { mutableIntStateOf(ChatMemoryWindowPlanner.DEFAULT_WINDOW_MESSAGE_COUNT) } val isMemoryRebuildRunning memoryRebuildProgress.status ChatMemoryRebuildManager.Status.PREPARING || memoryRebuildProgress.status ChatMemoryRebuildManager.Status.RUNNING可以看到页面对记忆构建的运行状态做了集中判定只要协调器处于PREPARING或RUNNING多选、删除等批量操作入口都会被禁用enabled ... !isMemoryRebuildRunning从交互层面杜绝记忆任务运行期间对会话集合的二次变更。2.2 列表下的记忆任务进度条与取消按钮当memoryRebuildProgress.status不是IDLE时页面会在聊天列表下方渲染任务状态区域见 ChatHistorySettingsScreen.kt 附近PREPARING显示准备中文案chat_memory_rebuild_preparingRUNNING显示带fraction的进度条并展示当前会话标题、已处理窗口数 / 总窗口数、已处理消息数 / 总消息数与失败窗口数文案chat_memory_rebuild_progressCOMPLETED展示完成的会话数与窗口数、失败数chat_memory_rebuild_completedCANCELLED / FAILED分别展示取消与失败状态及错误信息。进度条占比直接复用协调器计算的Progress.fractionval fraction: Float get() if (totalSourceMessages 0) 0f else processedSourceMessages.toFloat() / totalSourceMessages.toFloat()取消按钮对应ChatMemoryRebuildManager.cancel()即取消底层协程任务语义明确、只影响未开始的窗口。三、后端支撑重建协调器与窗口规划器的状态机入口与进度 UI 的背后是 ChatMemoryRebuildManager.kt 这一单例协调器。它负责顺序处理被选中的会话并向 UI 报告状态。3.1 状态机协调器通过MutableStateFlowProgress暴露进度状态机包含六个状态状态含义IDLE空闲未运行任务PREPARING正在加载选中会话、规划窗口、解析记忆空间绑定RUNNING正在顺序处理各窗口COMPLETED全部会话处理完成CANCELLED用户取消已完成窗口的记忆保留FAILED整体失败含无可用会话、无用户消息等前置校验失败Progress数据类承载了页面展示所需的全部字段totalChats / completedChats / currentChatTitle / totalWindows / completedWindows / totalSourceMessages / processedSourceMessages / failedWindows / errorMessage这正是「展示会话、窗口和消息进度」这一验收项的 UI 数据来源。3.2 单窗口失败不中断整体协调器在窗口级try/catch中处理每个窗口try { // 组装 user/assistant 对话历史并调用 MemoryLibrary.saveMemoryWindowNow(...) } catch (error: Exception) { if (error is CancellationException) throw error failedWindows AppLogger.e(TAG, 窗口记忆重建失败: chatId..., error) } completedWindows processedSourceMessages window.sourceMessageCount关键设计是单个窗口失败只累计failedWindows继续处理其余窗口而CancellationException会被重新抛出交由外层捕获并转为CANCELLED状态从而保证「取消后不启动新窗口、已完成窗口记忆保留」。3.3 记忆空间绑定规则resolveMemoryProfileId复用了现有记忆空间绑定规则会话属于角色卡群组characterGroupId非空时使用当前激活记忆空间否则若会话绑定的角色卡配置了FIXED_PROFILE固定绑定且指定了memoryProfileId则写入该固定空间其余情况回落到当前激活记忆空间。这保证了补建的记忆落在与聊天运行期一致的记忆空间中。3.4 窗口规划器分窗口重建的边界控制ChatMemoryWindowPlanner.kt 是纯 JVM 单测友好的窗口切分逻辑常量DEFAULT_WINDOW_MESSAGE_COUNT 32、MIN_WINDOW_MESSAGE_COUNT 8、MAX_WINDOW_MESSAGE_COUNT 48plan(messages, windowMessageCount)将调用方传入的窗口大小coerceIn(8, 48)限制到合法区间以用户消息为窗口起点一个窗口包含该用户消息及其后的助手回复summary消息与空白消息被跳过不参与长期记忆提取群聊中助手回复数可能超过窗口大小时只重复携带触发该轮的 user 消息作为上下文保证每个请求大小有界且每条回复都被保留。因此密集总结的长会话例如 2,000 回合且每回合都有总结的会话仍按原始用户 / 助手消息切分窗口而不会按总结数量发起模型请求——这正是「单次请求规模稳定、长聊天可完整遍历」的落地机制。四、测试与设备验证项目为此提供了完整的 JVM 单元测试 ChatMemoryWindowPlannerTest.kt覆盖普通 user/assistant 回合配对plan keeps each normal user turn with its assistant response窗口边界处的连续助手回复plan keeps consecutive assistant replies with their user turn at a boundary摘要排除plan excludes summary messages from every memory window、plan ignores blank and nonblank summary messages密集总结场景下不按摘要发起请求plan does not create a request for every summary、plan keeps a multi-thousand-message chat bounded despite per-turn summaries空白消息与孤立助手片段忽略、导入聊天的assistant发送者保留、窗口大小越界约束、超大群聊回复拆分等边界场景。设备验证记录见 03_test_build_and_device_validation.md确认:app:testDebugUnitTest --tests com.ai.assistance.operit.api.chat.library.ChatMemoryWindowPlannerTest :app:assembleDebug通过Debug APK 生成成功安装到隔离包com.ai.assistance.operit.debug后可进入「设置 - 聊天记录管理」空聊天列表也会显示「分窗口构建记忆库」区域默认窗口为 32 条消息下拉项为 16 / 24 / 32 / 48 条且「为已选 0 条聊天构建记忆」按钮禁用额外新增MemoryAnalysisProtocolTest覆盖记忆图谱协议具名对象、无main的独立操作、旧位置数组与缺失必填字段协议错误计入窗口失败。五、与其他设计文档的关系本文所述入口与进度设计属于「分窗口重建聊天记忆」专题index.md的第二部分与另外两篇文档互为补充01_window_planning_and_rebuild_coordinator.md窗口规划器与重建协调器本身的算法与状态设计本文的进度字段、窗口大小选项正是消费其产物03_test_build_and_device_validation.md单元测试、构建与真机验证记录本文引用的验收数据来源于此。六、小结可复用的交互设计要点从 Operit 聊天记录管理的这次重构中可以提炼出几条通用的交互设计经验按操作风险分级拆分入口破坏性操作删除、批量维护归类与增值写入记忆构建不要平铺在同一工具栏避免误触与语义混淆配置操作独立确认弹窗需要用户提供参数窗口大小的操作单独成窗与即点即执行的管理操作分离运行状态在列表常驻展示进度条 可取消按钮直接放在列表下方用户无需进入弹窗即可感知任务状态运行期间锁死相关操作记忆任务运行中禁用多选与删除避免并发变更导致的不一致低频配置不干扰高频选择窗口大小下拉、构建按钮只在需要时出现日常批量选择路径保持干净。该设计以 ChatHistorySettingsScreen.kt 为 UI 载体、以 ChatMemoryRebuildManager.kt 为状态后端、以 ChatMemoryWindowPlanner.kt 为窗口切分核心配合 ChatMemoryWindowPlannerTest.kt 与 MemoryAnalysisProtocolTest 的测试保障最终交付了「可从历史会话直接补建记忆、状态可见且取消语义明确」的完整能力。赞分享AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆【免费下载链接】OperitThe most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent项目地址https://gitcode.com/gh_mirrors/op/Operit点击查看免费下载相关推荐Operit 分窗口重建聊天记忆JVM 单元测试、Debug APK 构建与设备验证实战Operit 分窗口重建聊天记忆JVM 单元测试、Debug APK 构建与设备验证实战 导读 本文围绕 OperitAndroid AI Agent /AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆GUI 自动化Operit 分窗口重建聊天记忆面向超长会话的长期记忆补建方案Operit 分窗口重建聊天记忆面向超长会话的长期记忆补建方案 导读 本指南围绕 Operit 的分窗口重建聊天记忆Windowed Memory ReAI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆GUI 自动化MINIX入门教程10个核心概念带你快速掌握微内核设计精髓MINIX入门教程10个核心概念带你快速掌握微内核设计精髓 欢迎来到MINIX微内核操作系统入门指南MINIX是一个经典的微内核操作系统由Andrew S上一篇分布式视觉语言推理系统Qwen3-VL-8B-Thinking-FP8的高性能量化架构解析下一篇极致优化Tiptap编辑器包体积缩减60%的实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考