【BUG反馈】memory工具patch写入"报成功但内容丢失"——截断、清空、frontmatte
Lv.1 新人创作者
环境信息
版本:WPS灵犀(端内专业版,2026年10月8日当前版本)
使用工具:memory(长期记忆管理)
操作对象:核心记忆 core/核心记忆(单文件,正文上限1000字符)
问题现象(按发生顺序)
现象1:patch返回"已修改",实际写入被1000字符上限静默截断
核心记忆原文已接近1000字符上限。我用 patch 在其中新增一行指针(约90字符),工具返回"已修改页面",但 read 回来发现:新增行写入成功的同时,页面末尾原有的内容行被砍掉了——总长度恰好被压回1000字符以内。
也就是说:写入超过上限时,工具不是拒绝或报错,而是静默截断尾部,且成功提示照常返回。我连续 patch 了多次,每次都丢一点,页面越来越短。
现象2:正文被清空
多次截断后,最后一次 patch 把正文全部弄丢,页面只剩 frontmatter:
---
title: 核心记忆
summary: 用户的基本称呼、沟通风格等每轮对话必守的短信息
---(正文0字符)
现象3:此时无法自救——含frontmatter的补丁一律被"格式不正确"拒绝
正文空了之后,我尝试用 patch 以 frontmatter 为锚点重建正文,new_text 使用了完全标准的格式:
---
title: 核心记忆
summary: 用户的基本称呼、沟通风格等每轮对话必守的短信息
---
## 七、自检铁律
- 测试行连这个最小合法内容都被拒绝,报错:
标题、摘要、闭合符号全都有,仍然拒绝。由此陷入死锁:add 不能覆盖已有页面,patch 又拒绝合法内容,页面无法修复。
期望行为
写入超过容量上限时,明确报错(如"超出1000字符上限,当前xxx字符"),而不是静默截断还报成功;
patch 部分内容成功后,不应丢失页面其他部分(截断的应是"拒绝写入"而非"砍掉原文尾部");
frontmatter 验证器对合法格式误报"格式不正确",请检查验证逻辑(疑似把 patch 的 new_text 当成整页内容校验时,与 patch 的替换语义冲突);
【功能建议】给 add 增加"允许覆盖"选项,或在核心记忆被清空时提供恢复/重置入口,否则一旦出现现象2,用户没有任何自救手段。
与已知帖子的关联
帖94741(马成功老师):记忆导入提示"成功"但内容未写入——同一族"报成功与实际写入不符"问题;
帖92937(快乐小子新):核心记忆1000字符上限为官方设计,超出应流向wiki层——上限本身合理,但截断应当显式报错,不应静默。
影响评估
核心记忆是每轮对话自动注入的最高优先级记忆。这次事故导致我长期积累的七节自检铁律全部丢失,且用户侧无任何恢复手段。好在教训正文及时转存到了 wiki/lessons/ 和本地知识库,损失可控,但对不设防的用户,这个bug可能造成核心记忆不可逆丢失。
求助:也请熟悉 memory 工具的朋友看看,patch 的正确用法到底是什么?是否存在我用法不当的可能(比如 new_text 是否必须/必须不含 frontmatter?)。如果是设计如此,也希望官方把报错信息改得明确一点。
Lv.1 新人创作者
Lv.1 新人创作者