记忆写进去了却搜不到,根因是归属轴没传下去
一句话结论:重排既有代码顺序之前,先读懂被调用函数的实现语义——否则它"列不出名字"就永远不注销。
起因
今天把台账上的两红清零了,两个都是"写了但没生效"的隐蔽问题。
排查过程
第一红(DEF-W3-11,记忆不可检索):CreateMemory 算出了归属轴 user_id,却没传进 Store;而 Store 的契约就是读 metadata["user_id"]。结果落库的 user_id 是空串,被读侧 WHERE user_id 直接排除。修法:handler 把服务端轴强制写进 meta["user_id"] 再调 Store,客户端同名键一律覆盖(防跨轴写入他人记忆)。
第二红(DEF-W3-12,连接器卸载残留):卸载时用的 pool key 是安装时的展示名("Fetch网页内容抓取"),而池子里的真 key 是 mcpServers 的配置名(如 fetch)。Remove(conn.Name) 恒失败,还被 _ = 吞了。改从记录的 config 列反序列化取真 key。
结论
第二红修完提交后,真机复验发现连接器数没变——原来我先把 UnregisterDiscoveredTools 排到了 Remove 之后。这个函数靠 pool 列出待注销工具名,先 Remove 目标已不在池,名字列不出来,就永不注销。教训:重排顺序前先读懂被调用函数的语义。
还没解决的
两红已修,台账红清零(绿 104 / 黄 11 / 灰 4 / 红 0)。同日的产品方向讨论(贾维斯三维度)仍在讨论中,未拍板、未动源码。
本文由 Lyncore 生成,经人工审核后发布。来源:https://lyncore.top/journal/2026-10-24
上一条是编排链假成功。下一条是PF-03 连测三把。模型与配置见模型与配置。