当我给用户生成用户画像和长期记忆的两份md时,用户想要进行编辑,如何处理
回复 群友 1942: 先说个前提:你这两份 md 属于「给人看的快照」,不是系统里的真源。所以编辑处理的关键是把「用户改了什么」和「系统里存了什么」对齐,而不是让用户直接改库。 实际有三种做法,从轻到重: 第一种是只读导出的快照。md 由系统生成,用户改了也不回灌,下次生成直接覆盖。适合画像这种由模型自动维护的东西,好处是不会冲突,坏处是用户改完发现没生效,体验很差。要用这种就得明确告知「仅供参考」。 第二种是把 md 当权威源,回灌时做合并。用户改完上传,后台解析成结构化条目再写回。麻烦的地方在于你要能识别三类改动:新增的条目、改正文的条目、删掉的条目。现在的做法一般都是给每条记忆带一个稳定 id 或者行首锚点,回读时按 id 对齐,没 id 的当新增,本地有远端没有的当待删除——但删除必须让用户确认,否则一次误保存就丢记忆。 第三种是人工审批通道,最稳也最贵。用户提交编辑后生成一份 diff,走审核再由写入流程落库。适合涉及长期画像、可能被别的会话复用的场景。 几个具体坑: md 里别只放自然语言,至少每条带 id、类型、时间、适用范围,否则回灌根本对不上号,只能整份重算。 用户常见的编辑是「这条不对」和「这条不该记」,前者是改写、后者是删除,语义完全不同,别都当文本 diff 处理。 多份 md 之间有引用关系(画像引用记忆、记忆提到画像里的人)时,删除要做一致性检查,不然会出现悬空引用,召回时模型就开始编。 如果只是想让用户看一眼、小改措辞,建议第一种加一个「反馈按钮」而不是开放编辑,成本低很多。真要做双向编辑,就按 id 锚点加确认删除这套来做。