fix(memory): 知识库检索式注入 + 心智模型/观察注入修复 - #137
Merged
Merged
Conversation
- 修复 .ai memo mm del 删除失效:del 经别名归一化为 delete 后未命中删除分支返回帮助文本; 子命令 case 统一按 aliasToCmd 归一化目标值,del/delete 均可删除,并支持按问题名/关键词删除 - 知识库改为按当前对话检索式注入(最多 5 个分块),未命中只注入前 50 条索引兜底, 不再全量注入正文/索引;formatIndex 支持条数上限,knowledge_list/.ai kb list 上限 200 条 - 心智模型/观察注入 scope 匹配由 all_strict 放宽为任一命中,群聊不再因贡献者不在最近消息被整条剔除; memory_mm_create/.ai memo mm add 的 scope_tag 非法或与目标类型不符时回退默认标签 - 观察记忆只保留一条注入路径(启用长期记忆时由长期记忆段裁剪注入),观察段同口径裁剪, 巩固生成观察后刷新观察段缓存,消除最长 60 秒滞后 - 新增 memory_mm_list/memory_mm_view 工具,memory_mm_delete 支持按 question 删除 - 修正工具描述过时引用(search_memory→memory_recall、kb_list/kb_search→knowledge_list/knowledge_search) - .ai memo status 显示心智模型将注入条数 - 补充单测:mm del 别名、KB 索引/检索式注入、MM 段注入、观察裁剪 - 同步 changelog/README/docs
- 命中正文超过 KB_INJECT_MAX_CHARS(1500) 字符预算时不再注入正文, 改为预算优先用于条目索引(尽可能多列,上限 KB_INDEX_LIMIT=100 条), 详情由模型用 knowledge_read 按 ID 读取 - 索引兜底按字符预算动态截断,末尾提示剩余条数用 knowledge_search/knowledge_read - 新增单测:命中正文超预算降级为索引 - 同步 changelog/README/docs
- system prompt 知识库段只列条目(ID + 标题),不再注入正文; 在 KB_INJECT_MAX_CHARS(1500) 字符预算内尽可能多列(上限 KB_INDEX_LIMIT=100 条), 详情由模型用 knowledge_read 按 ID 读取 - 移除 KB_INJECT_TOP_K(不再做检索式正文注入) - 更新单测为纯索引注入断言;同步 changelog/README/docs
- system prompt「可用技能」段只列技能摘要(名称 + 描述), 按 SKILL_INJECT_MAX_CHARS(1500) 字符预算截断、预算内尽可能多列, 超出提示用 skill_list 查看完整技能名列表 - 新增 skill_list 工具:列出全部技能名称与描述(上限 SKILL_LIST_LIMIT=200), 供模型发现「可用技能」段未列出的技能,再按需 use_skill 获取正文 - use_skill 描述同步提及 skill_list - 新增单测 testSkillSummariesBudgeted;同步 changelog/README/docs/04
- buildLongTermPrompt 在群聊时除群记忆库外,并入最近发言者(uis,即最近 2~3 条消息发言人) 的个人记忆库:长期记忆(每用户最多 5 条,合并后按分数降序 + 总字符预算 4096 截断) 与个人心智模型(每用户最多 2 条,追加在群心智模型之后) - 个人记忆按用户标签召回,私有记忆仅创建者本人可见(canSeeMemoryUnit),不泄露其他成员隐私 - 群心智模型(≤5)与群观察(≤20)保留原注入逻辑 - 新增单测 testBuildLongTermPromptMergesUserMemoryInGroup - 同步 changelog / docs/03
- 新增 buildGroupedMemoryPrompt:按「群聊 / 每个最近发言者」分别渲染记忆段, 每组独立列出长期记忆 + 心智模型(+ 群观察),不再把多个归属的心智模型/记忆混在一起 - buildLongTermPrompt 改用分组渲染:私聊单组「个人记忆(名称)」; 群聊为「群聊记忆(群名)」+ 每个发言者「个人记忆(名称)」 - 个人记忆每用户最多 5 条、单用户 2048 字符预算;个人心智模型每用户最多 2 条 - 更新单测断言适配分组格式 + 归属顺序;同步 changelog / docs/03
- 合并重复的 ## 修复 节,面向用户重写本次记忆/知识库/技能改动条目 - 变更:知识库只展示条目索引、技能摘要预算注入、群聊/个人记忆分组注入 - 修复:.ai memo mm del 删除失效、心智模型/观察注入丢失、观察重复注入与滞后、工具描述修正 - 新功能:memory_mm_list/view、skill_list、status 注入条数
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
排查确认的 5 项问题 + 新增确认的 2 项根因,本次一并修复:
.ai memo mm del删除失效:del经ALIAS_MAP归一化为delete,但 mm 内部 switch 只写了case 'del',导致无论输入del还是delete都落入 default 返回帮助文本。按“子命令统一过 alias 归一化、case 只写归一化目标值”的规则改为case 'delete'。formatIndex无上限,条目很多时索引也全部展示。增加 limit(注入兜底 50 / list 200)+ 总数提示。scope_tag与当前会话标签不精确匹配即静默剔除。放宽为“任一命中”,并对memory_mm_create/.ai memo mm add的scope_tag做校验归一化(非法/类型不符回退默认),增加注入 debug 日志与.ai memo status可见性。memory_mm_list/memory_mm_view,memory_mm_delete支持按question删除。bumpSummaryRevision无调用点导致观察段缓存最长滞后 60 秒。改为单一路径(MEMORY 开启时由长期记忆段注入),观察段同口径裁剪,巩固后刷新缓存。search_memory→memory_recall;kb_list/kb_search→knowledge_list/knowledge_search。改动清单
src/cmd/sub_cmd/memory.ts:mm del 别名修复 + 按问题名/关键词删除;--tag校验;status 显示将注入条数src/memory/knowledge_base.ts/src/memory/knowledge.ts:检索式注入 +formatIndexlimitsrc/memory/manager.ts/src/memory/v2/prompt.ts/src/prompt/builder.ts:scope 放宽、观察单一路径、缓存失效修复、注入日志src/tool/tools/memory/tool_memory.ts/tool_knowledge.ts:新增 list/view 工具、delete 支持 question、描述修正scripts/unit-test-entry.ts:新增 5 个单测(mm del 别名、KB 索引/检索式注入、MM 段注入、观察裁剪)src/changelog.ts/README.md/docs/验证
npx tsc --noEmit通过npm run lint通过npm run build通过npm run test:unit:113 个单测全部通过(含新增 5 个)npm run smoke通过