oh-my-pi memory_edit 工具:按 id 更新、遗忘与失效 Mnemopi 长期记忆

发布时间:2026/9/10 13:02:43

oh-my-pi memory_edit 工具:按 id 更新、遗忘与失效 Mnemopi 长期记忆 oh-my-pi memory_edit 工具按 id 更新、遗忘与失效 Mnemopi 长期记忆【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pimemory_edit是 oh-my-pi 中 Mnemopi 记忆后端的写路径工具当 Agent 通过recall拿到一条记忆并发现其内容过期、错误或不再需要时可以用它按id精确地更新update、硬删除forget或软失效invalidate这条记忆。读完本文你将掌握该工具的注册条件、输入输出契约、三种操作的适用边界、与memory://id全量读取的配合流程以及它在源码中跨银行去重查找的实现机制从而避免把被截断的召回预览误当作完整内容而覆盖掉记忆尾部。工具定位与注册条件memory_edit的实现在 MemoryEditTool面向模型的提示词定义在 prompts/tools/memory-edit.md底层写操作由 MnemopiSessionState.editScopedMemory 完成。注册与可见性有几个关键约束仅在后端为 Mnemopi 时注册MemoryEditTool.createIf(session)读取session.settings.get(memory.backend)只有值恰好为mnemopi时才构造工具否则返回null。也就是说当memory.backend为off、local、hindsight以及sharpshooter时该工具根本不存在于工具列表里。这个后端选择器在 settings-schema.ts 中定义默认值为off可在 Settings → Memory 页或~/.omp/config.yml中修改。元数据approval read、strict true、loadMode discoverable——注意它虽然标记为 read 级别的审批但成功的调用确实会修改本地记忆库。工具列表中的呈现在无限制的会话里显式列出工具时注册流程会自动为 Mnemopi 补上memory_edit受限的工具列表则不会被扩宽。在普通的tools.xdev会话中可发现的内置工具可能以xd://memory_edit形式呈现而显式请求的工具保持顶层形式。执行模型执行是同步、单次的没有进度回调或取消参数。在工具注册表中它与其他记忆工具并列注册于 tools/index.tsretain、recall、reflect等同样只在对应后端下可用。输入参数工具的参数 schemamemory-edit.ts如下字段类型必填说明opupdate \| forget \| invalidate是要应用的编辑操作。idstring是recall返回的记忆 id。contentstring否update时用于替换的记忆文本。importancenumber否update时用于替换的重要性会被钳制到0..1。replacement_idstring否invalidate时记录的接替者记忆 id。两个在调用前就需要注意的校验点源码中在真正触达后端之前抛出update必须至少提供content或importance之一否则直接抛错memory_edit update requires content or importance.importance若在0..1之外不会被拒绝而是先钳制再传入后端Math.max(0, Math.min(1, params.importance))。另一个重要限制id必须直接给出该工具不支持按内容搜索。要找到 id应先使用recall工具召回结果的内容预览默认截断在 500 字符以内尾部…表示截断full_length给出原始长度。输出契约返回结果为标准的AgentToolResultcontent[0].type textdetails原样透传后端结果{ status, bank?, store? }成功变更渲染为Memory id updated|deleted|invalidated in bank bank (store).未找到或操作不适用渲染为Memory id was not found...这是正常结果status 为not_found不是抛错**fact 行只读事实**渲染为Memory id is a read-only fact...; it cannot be edited. Read it with memory://id.同样是正常结果status 为not_editable。details.status的取值为updated | deleted | invalidated | not_found | not_editable当解析到具体行时还会带上storeworking | episodic | fact和bank。因此程序化处理该工具结果时应当检查details.status而不是依赖文本措辞。执行流程与底层查找机制源码层面state.ts的执行链路为MemoryEditTool.createIf(...)仅在memory.backend mnemopi时暴露工具execute(...)通过session.getMnemopiSessionState()获取本会话的 Mnemopi 状态若后端未初始化则抛错Mnemopi backend is not initialised for this session.——这处理的是工具被暴露但会话状态缺失的边界情况对update做content/importance非空校验并对importance钳制到0..1调用state.editScopedMemory(op, id, { content, importance, replacementId })。editScopedMemory的核心逻辑是按顺序跨多个目标银行查找同一 id先构造去重后的目标序列——retain 目标、各 recall 目标、可选的 global 目标retain 与 global 可能指向同一库实例因此用 dedupeScopedTargets 按 bank 去重然后逐个库memory.get(id)查找返回值遵循三级优先级返回第一个成功且可编辑的结果updated/deleted/invalidated否则返回第一个解析到但不可操作的结果如 fact 行 →not_editable或 episodic 行碰上update/forget→ 带 bank/store 定位信息的not_found全部未命中则返回无定位信息的not_found。各操作在后端的实际落点也不同update调memory.update(id, content, importance)forget调memory.forget(id)invalidate调memory.beam.invalidate(id, replacementId)。行属于哪个 store 由库表中的memory_store字段判定episodic或fact保留原值其余一律视为working。三种操作的语义边界操作作用范围语义update仅 working 记忆整体替换文本和/或重要性是整体替换而非打补丁。forget仅 working 记忆永久硬删除该行。invalidateworking 与 episodic 记忆软失效/被接替可记录replacement_id指向新记忆。由此产生的边界行为对 episodic id 执行update或forget会返回not_found且附带 bank/store 位置信息——因为这两种操作只支持 working 记忆fact 行对所有操作一律返回not_editablefact 行是事实抽取的只读投影源码注释标注 issue #4725可以被解析和读取但memory_edit的任何操作都不会改动 facts 表。recall结果中标记[facts]的就是这类 id应改用read memory://id检视策略建议同样写在模型提示词中对于历史仍有价值但内容已过期的 working/episodic 记忆优先invalidate只有当一行 working 记忆确实需要硬删除时才用forget。副作用文件系统会修改本地 Mnemopi SQLite 数据库中解析到的那一行命中的可能是 retain、recall、shared或安全发现的 legacy 银行。网络无。编辑操作不调用任何 embedding 或抽取服务——即使 Mnemopi 后端配置了本地 embedding 子进程memory_edit也不经过它。会话状态只读取当前会话作用域内的 Mnemopi 状态不会重写已经注入上下文的memories内容——已注入的上下文在下一轮召回时才会反映变更。与memory://id读取的配合关键工作流这是文档中最强调的一点也是防止数据损坏的核心规范每次update之前必须先read memory://id读取完整行。把被截断的召回预览复制进content会把未见过的尾部内容删掉。其原理链是recall的预览会截断内容500 字符上限truncated: truefull_length标记原长而update是整体替换。若直接把预览文本当content传进去等价于用前 500 字符覆盖整条记忆尾部全部丢失源码注释中对应 issue #4443。memory://idURL 正是为此设计的读取通道它由 internal-urls/memory-protocol.ts 处理最终走 MnemopiSessionState.getScopedMemory——与editScopedMemory完全同序地跨 retain/recall/global 目标查找保证读到的行就是编辑将触及的行返回完整content、importance、source、timestamp、created_at等全字段。正确流程是recall搜索得到目标 id 与截断预览read memory://id获取完整行将新内容 原尾部中仍需保留的部分合并成完整文本以合并后的全文作为content调用memory_edit update。两个补充限制行必须存在于当前会话作用域的银行中若某行只被另一个活动会话持有则不可达read memory://id会抛Mnemopi memory id not found in the calling sessions scoped bank在memory.backendhindsight下memory://寻址不可用Hindsight 记忆在服务端该协议处理器会返回指向recall/reflect的纠正提示。错误行为速查场景行为工具已暴露但会话未初始化 Mnemopi 状态抛错Mnemopi backend is not initialised for this session.update未带content也未带importance抛错memory_edit update requires content or importance.在任何后端写入之前id 不存在正常结果details.status not_found无 bankupdate/forget命中 episodic 行正常结果not_found bank/store 定位命中 fact 行任意操作正常结果details.status not_editableimportance超出0..1不报错钳制后生效总结memory_edit是一个刻意保持窄而精确的维护工具它只接受recall给出的 id、只做单行变更、绝不搜索、绝不联网并且把找不到和不可编辑都表达为带诊断信息的正常返回而非异常方便 Agent 在同一轮内自纠。理解它的三个前提能覆盖绝大多数使用问题注册依赖memory.backend mnemopiupdate/forget只作用于 working 行任何update之前先read memory://id取全文再整体替换。配套源码入口为 packages/coding-agent/src/tools/memory-edit.ts 与 packages/coding-agent/src/mnemopi/state.ts提示词全文在 packages/coding-agent/src/prompts/tools/memory-edit.md。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 13:02:43

PSO优化CEEMDAN参数实现自适应信号去噪

简介:本资源是一套面向电子信息、计算机及数学专业本科生的信号处理实战代码包,聚焦于融合智能优化与自适应分解的PSO-CEEMDAN去噪方法,适用于课程设计、期末大作业及毕业设计等工程实践场景。压缩包共33个文件(15个核心MATLAB函数…

2026/9/10 13:02:43

ACS运动控制器原生指令范例:settle3y7_acs三轴同步定位解析

简介:本资源是一套面向自动化控制工程师与嵌入式开发初学者的ACS控制器实战范例程序,聚焦settle3y7型号控制器的指令应用与系统集成。资源提供完整可运行的C#项目工程,涵盖初始化配置、PID控制逻辑、寄存器读写、故障检测及闭环执行等核心功能…

2026/9/10 12:57:43

ZYNQ7035万兆网测速:瓶颈在DMA与缓存对齐,附调优技巧

简介:面向FPGA开发者的ZYNQ7035光纤接口万兆网测速完整工程,基于Vivado工具链实现,主控芯片为XC7Z035FFG900-2,支持向XC7Z035系列其他型号移植,可用于高速光纤通信链路调试与性能验证。压缩包共797个文件,约…

2026/9/10 15:13:30

yuzu Switch模拟器完整上手指南:从安装到调优一步到位

yuzu Switch模拟器完整上手指南:从安装到调优一步到位 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu 是一款用 C 编写的开源任天堂 Switch 模拟器,能把你的 Switch 游戏跑在 Windows、…

2026/9/10 15:13:30

LatticeMesh军事通信系统:去中心化网络与量子加密技术解析

1. 美军LatticeMesh系统概述LatticeMesh系统是近年来军事通信领域最具突破性的技术架构之一。这套分布式网络系统采用了类似生物神经网络的拓扑结构,通过大量可动态组网的智能节点构建起具备自我修复能力的战场数据链路。与传统军事通信系统相比,其最显著…

2026/9/10 15:13:30

风储VSG并网Simulink仿真模型搭建与参数整定全解析

这几年做新能源并网仿真,VSG(虚拟同步发电机)基本是绕不开的一个方向。风电、光伏这类电源和传统同步机组最大的区别,就是电力电子接口几乎没有旋转惯量和阻尼,电网频率波动一来,它们既不会“顶一下”&…

2026/9/10 15:13:30

店铺运营数据分析是什么?2026商家必懂的核心指标体系

摘要:店铺运营数据分析是什么?2026年,它早已不是打开后台看数字,而是把访客、转化、复购、毛利这些指标串成一条因果链,找到生意的增长点和漏水点。本文用一套核心指标体系,帮你把这个概念落到地上。 店铺…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码