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

发布时间:2026/10/30 14:08:33

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/10/31 2:07:54

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

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

2026/10/29 9:09:22

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

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

2026/10/27 10:22:50

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

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

2026/10/31 2:23:18

Forest Pack 7 帮助文档拆解:从散布逻辑到渲染农场部署

简介:这份PDF是3ds Max森林树木植物散布插件Forest Pack 7的官方帮助文档,面向建筑可视化、游戏开发与影视特效领域的三维设计师,尤其适合需要在大场景中批量布置树木、植被、人群、岩石与地面覆盖物的中高级用户。文档系统覆盖安装与论坛访问…

2026/10/31 2:23:18

纯方位无源定位建模全解析:从余弦定理到无人机编队调整方案

简介:这份资源是2022年全国大学生数学建模竞赛本科组B题的完整研究论文,聚焦无人机纯方位无源定位问题,适合备战数模竞赛的本科生、指导教师及对编队控制建模感兴趣的读者参考。论文围绕圆形与锥形两种编队展开,涵盖被动接收信号无…

2026/10/31 2:23:18

Forest Pack 7 帮助文档精读:从安装配置到散布调优的完整指南

简介:这份PDF是3ds Max森林树木植物散布插件Forest Pack 7的官方帮助文档,面向建筑可视化、游戏开发与影视特效领域的三维设计师,尤其适合需要在大场景中批量布置树木、植被、人群、岩石与地面覆盖物的中高级用户。文档系统梳理了从入门到进阶…

2026/10/31 2:23:18

Kettle 9.3 安装配置全攻略:从JDK选择到定时作业验证

简介:这份资源面向数据工程师、ETL 初学者及需要搭建数据集成流程的技术人员,提供开源 ETL 工具 Kettle(Pentaho Data Integration)9.3 版本的获取入口,帮助读者解决官方渠道下载不便的问题。资源包共 1 个 docx 文档&…

2026/10/31 2:23:18

Spark路径URI规范详解:file://与hdfs://正确写法避坑指南

简介:本资源是《大数据技术原理与应用》课程配套的‘Spark初级编程实践’实验报告,面向高校大数据初学者及Hadoop/Spark入门学习者,聚焦分布式计算框架的核心操作训练。内容覆盖Spark环境搭建(Ubuntu虚拟机Hadoop 3.1.3SparkJDK 1…

2026/10/31 2:18:17

Shell脚本 vs Python脚本:数据报表生成的效率

在数据统计报表与BI(商业智能)的场景中,选择合适的工具至关重要。随着业务数据量的增长,开发者常面临如何高效处理、分析并生成报表的问题。Shell脚本以其简洁和快速的执行能力被广泛用于Linux环境下的自动化任务,而Py…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

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

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

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