Skip to content

[BUG] Mem0 逻辑过滤条件应保留嵌套对象,避免二次 JSON 编码 #56

Open

Description

@Aias00

基线与证据

Core 76d44429fdaa6a69320e21a1cb77119d0889d792 / Extensions 495414b76a37aca4d7c1022d973a8e5b9a7e92e6,本轮已 pull --ff-only,均无新提交。

已复现问题

convertExpression 返回 JSON 字符串,convertLogicalOperator 却把该字符串直接放入 AND/OR 列表或 NOT 值,随后再次序列化,嵌套条件变成字符串。

实际调用:

converter.convertExpression(and(eq("user_id", "u1"), eq("category", "private")));

当前输出:

{"AND":["{\"user_id\":\"u1\"}","{\"category\":\"private\"}"]}

这里 AND 子项是 JSON string,而不是比较对象。预期保持结构如 {"AND":[{"user_id":"u1"},{"category":"private"}]}。本次对输出重新解析确认其节点类型,未调用 Mem0 服务,不声称已证明服务会忽略过滤或越权返回。

交付与验收

  • 递归构建 Map/List 或 JSON tree,边界只序列化一次;不能通过替换转义字符模拟结构化转换。
  • 覆盖 AND、OR、NOT、多层混合、比较/IN/NIN 和带引号反斜杠的值,断言 JSON 节点类型而非仅 contains 文本。
  • 明确不支持/结构不合法的表达式,不能静默变成空过滤器。
  • 验证最终发给 Mem0 的请求体及目标服务支持版本,确认筛选结果;转换器单测通过不等于真实服务兼容已通过。
  • 不将标识过滤当可信授权替代,保持已有 user/agent/run 范围语义。

范围与变更约束

本次调用当前实际编译类完成定向复现,未修改仓库源码;不是全量外部环境认证。局部修复不等待 Agent/Workflow/Loop 全局重构,优先复用现有契约。公共 API、默认行为或数据格式若需变化,说明兼容替代、消费者影响、目标版本与迁移/回滚。关联:#30、#34。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions