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 记忆空间配置文件文档中记录的第一代「记忆空间配置界面」展开它曾把用户文档编辑、自动更新控制与整文锁定全部收敛进记忆空间选择器随后因职责边界问题被独立的「用户配置界面User Preferences」取代。读完本文你将掌握 Operit 记忆空间与user.md配置文件的存储模型、编辑/锁定策略、update_user_profile等运行时工具的作用以及新旧两代界面的设计取舍与升级兼容性保证。一、文档定位一份被取代SUPERSEDED的设计记录在 docs/TODO/memory_space_profile_documents/index.md 中记忆空间配置文件功能被拆分为六个工作项其中第 3 项「Memory-space configuration UI」的最终状态为[SUPERSEDED]对应文档即 3_MemorySpaceConfigurationUi.md。该文档记录了第一代实现的完整设计意图是理解 Operit「记忆空间 → 配置文件 → 用户设置」演进链条的关键入口第一代实现删除了全局用户偏好设置user preferences的路由与设置入口把「文档编辑」「自动更新控制」「整文锁定」三项能力全部放进了当前选中记忆空间memory space的配置界面被 4_StandaloneUserConfigurationUi.md 描述的独立用户配置界面取代。文档同时强调了一个贯穿始终的不变量存储所有权与稳定标识符stable identifier不变只有面向用户的管入口位置发生了变化。这正是后续所有兼容性讨论的基石。二、第一代设计把配置面整体嵌入记忆空间选择器按照文档描述第一代实现的核心决策是将文档编辑、自动更新控制与整文锁定放入选中的记忆空间配置面被选中的记忆空间保留 ObjectBox 与角色卡character-card绑定所使用的那份稳定标识符该界面只编辑这个空间的user.md。从源码结构看这一决策在数据模型层留下了明确的痕迹。MemorySpace.kt 中的元数据类除了id与name还内置了两个与配置界面直接对应的开关字段Serializable data class MemorySpace( val id: String, val name: String, val profileAutoUpdateEnabled: Boolean true, val profileAutoUpdateLocked: Boolean false )profileAutoUpdateEnabled默认true是否允许自动更新写入该空间配置文件profileAutoUpdateLocked默认false是否对整份文档上锁锁定后自动更新被禁止。类的 KDoc 还明确解释了id的稳定性义务「标识符在用户配置文件迁移过程中刻意保持稳定因为它同时也是 ObjectBox 数据库名并可能被角色卡引用」。这印证了文档中「稳定标识符」约束的由来——id一改数据库与角色卡绑定全部失效。三、存储模型memory-space-profiles/id/user.md配置文件的实际落盘实现在 1_StorageAndMigration.md 与仓库源码中完全一致每个文档存放在应用私有文件目录下的memory-space-profiles/memory-space-id/user.md写入是原子的内容上限为 12,000 字符使用与已发布的全局文档标记相互独立的 schema 标记schema_version来驱动一次性迁移。对应的核心实现是 MemorySpaceProfileDocumentRepository.kt其常量区直接体现了文档约束const val MAX_CONTENT_CHARS 12_000 const val USER_FILE_NAME user.md private const val STORAGE_DIRECTORY memory-space-profiles private const val PUBLISHED_GLOBAL_USER_FILE_NAME user.md private const val PUBLISHED_LEGACY_ARCHIVE_FILE_NAME legacy-user-profiles.md private const val SCHEMA_VERSION_KEY schema_version private const val CURRENT_SCHEMA_VERSION 2仓库对外暴露的读写 API 包括方法行为load(memorySpaceId)读取指定空间文档不存在时先原子写入空串再返回save(memorySpaceId, markdown)校验长度不超过 12,000 字符后原子写入saveAutomatic(memorySpaceId, markdown)仅在自动更新开启且未锁定时写入否则返回falsereset(memorySpaceId)将文档重置为空串delete(memorySpaceId)删除文档文件及对应空间目录「原子写入」由 Android 的AtomicFile实现startWrite()→finishWrite()成功提交异常时failWrite()回滚避免中途断电/崩溃产生半截文件见 MemorySpaceProfileDocumentRepository.kt。四、自动更新与整文锁定在仓储边界把关配置文件界面中的「自动更新控制」与「整文锁定」并非纯展示开关而是真正作用于运行时写入路径的硬约束。文档 2_RuntimeAndAutoUpdate.md 明确以活动记忆空间标识符加载一份配置文件用于提示词注入与工具更新既有的记忆自动保存候选管线按记忆空间运行其配置抽取只写匹配空间的文档并在仓储边界检查整文自动更新锁update_user_profile仍是提示词可见的文档工具update_user_preferences则作为面向已发布包与持久化调用的隐藏适配器两者都解析活动记忆空间文档。锁检查的实现位置在saveAutomatic()MemorySpaceProfileDocumentRepository.ktsuspend fun saveAutomatic(memorySpaceId: String, markdown: String): Boolean { initialize() val space UserPreferencesManager.getInstance(context).getMemorySpaceFlow(memorySpaceId).first() if (!space.profileAutoUpdateEnabled || space.profileAutoUpdateLocked) return false save(memorySpaceId, markdown) return true }也就是说「自动更新开关」与「整文锁」在写入入口处做双重拦截只要自动更新被关闭或文档被锁定AI 会话中触发的自动配置抽取就不会落盘。这与界面上的两个 Switch 一一对应。工具注册侧的实证位于 ToolRegistration.ktupdate_user_profile与update_user_preferences同时存在后者的描述沿用user.md文案并作为兼容适配器保留注释说明新会话的系统工具提示词只暴露update_user_profile。此外 SystemToolPromptsInternal.kt 与 MemoryQueryToolExecutor.kt 也引用了user.md文档上下文构成「注入 → 工具更新 → 自动保存」的完整运行时链路。五、为什么被取代个人配置不该伪装成记忆库操作第一代界面被标记为 SUPERSEDED 的根本原因在 4_StandaloneUserConfigurationUi.md 中交代得很清楚第一版实现把配置文档编辑、自动更新与锁定放在记忆库的空间选择器里而该选择器同时允许创建、重命名、删除同一批空间——这让个人配置文件的管理看起来像是记忆库操作。两代界面的职责对比维度第一代SUPERSEDED第二代DONE入口位置记忆库的空间选择器内设置页Settings中的「用户偏好设置User Preferences」编辑能力编辑选中空间user.md以 Markdown 编辑器呈现选中配置含自动更新与整文锁定控件空间管理选择器内可创建/重命名/删除空间选择器与配套动作归 User Preferences 所有记忆库职责承担配置管理只保留浏览对应记忆数据库所需的活动空间选择器不再创建/重命名/删除/编辑用户配置第二代界面的源码级实现在 UserPreferencesSettingsScreen.kt 中其 UI 骨架与文档描述逐条对应配置选择器DropdownMenu列出全部MemorySpace活动配置以 Check 图标标记可切换选中配置创建/重命名/删除通过、MoreVert菜单与AlertDialog完成删除入口对default空间隐藏Markdown 编辑器BasicTextField 等宽字体 Markdown 语法高亮输出变换提供「编辑 / 预览」两个FilterChipTab预览走MarkdownTextComposable保存与字数限制底部实时显示当前字数 / 12000超过MAX_CONTENT_CHARS时保存按钮禁用且计数变红策略面板Policy SheetModalBottomSheet内两个Switch分别绑定profileAutoUpdateEnabled与profileAutoUpdateLocked经persistPolicy()→UserPreferencesManager.updateMemorySpace()持久化未保存变更保护切换配置、返回上一级、跳转记忆库三条路径都先弹AlertDialog确认丢弃避免误丢草稿记忆库联动「打开记忆」按钮会先把该空间设为活动空间再跳转记忆库呼应「记忆库只保留活动空间选择器」的边界划分。从代码结构看界面初始化还会先执行repository.initialize()再ensureDefaultMemorySpace(...)确保已发布数据完成迁移后才创建新的默认配置条目UserPreferencesSettingsScreen.kt。六、兼容性保证稳定标识符与升级路径文档明确指出尽管管理界面位置变了配置仍沿用既有记忆空间 ID因此升级用户4、5 或当前工作区实现对应的memory-space-profiles/id/user.md、ObjectBox 数据库与固定角色卡绑定均保持不变。底层迁移细节见 1_StorageAndMigration.md 与 MemorySpaceProfileDocumentRepository.kt5 安装按已发布的记忆空间顺序匹配归档条目把根user.md归还给「移除后使归档名序列仍成立」的唯一空间——不依赖当前活动空间因为活动空间可能在 5 写入根文档后已被用户切换4 安装读取profile_list、active_profile_id、profile_id记录创建对应记忆空间、把结构化配置文件转写为 Markdown并保留 ObjectBox 标识符迁移按profile.id而非显示名匹配避免重名配置互相覆盖迁移只读源文件已发布的根user.md与legacy-user-profiles.md留在磁盘上仅被一次性重建迁移读取永不修改、不再注入提示词schema 标记独立memory_space_profile_documents偏好项中的schema_version与已发布全局文档标记分离当前版本为2CURRENT_SCHEMA_VERSION 2。七、小结第一代「记忆空间配置界面」用最短路径解决了「每个记忆空间拥有一份user.md」的核心问题确立了稳定标识符复用、12,000 字符上限、原子写入、仓储边界锁检查这一整套至今沿用的存储与运行时契约它的「界面位置」设计则因混淆了个人配置与记忆库操作而被独立用户配置界面取代。对于想深入 Operit 记忆/配置文件体系的读者推荐按此顺序阅读index.md全局意图→ 1_StorageAndMigration.md存储与迁移→ 2_RuntimeAndAutoUpdate.md运行时与自动更新→ 4_StandaloneUserConfigurationUi.md现行界面并结合 MemorySpaceProfileDocumentRepository.kt 与 UserPreferencesSettingsScreen.kt 对照阅读。赞分享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点击查看免费下载相关推荐Monaco Editor中的字体大小记忆记住用户偏好设置Monaco Editor中的字体大小记忆记住用户偏好设置 为什么需要字体大小记忆功能 在Web开发中代码编辑器Editor是开发者日常工作不可或缺的工前端UI组件代码编辑器Operit 记忆空间 Profile 文档体系全解析从全局 user.md 到一空间一文档的存储、迁移、运行时注入与独立配置 UIOperit 记忆空间 Profile 文档体系全解析从全局 user.md 到一空间一文档的存储、迁移、运行时注入与独立配置 UI 导读本文以 memAI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆GUI 自动化BiliTools哔哩哔哩工具箱跨平台B站资源下载终极指南BiliTools哔哩哔哩工具箱跨平台B站资源下载终极指南 BiliTools是一款功能强大的跨平台哔哩哔哩工具箱专为B站用户设计支持视频、音乐、番剧、课桌面应用音视频创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考 SEO 优化官网定制响应式建站教育培训建站