Skip to content

[Bug]: fix(handler): _delete/_search 布尔参数真值判断导致字符串 "false" 被误判为 true #403

Description

Checklist

  • 我已经搜索过相关问题,但没有得到预期的帮助。
  • 最新版本中该错误尚未修复。
  • 请注意,如果您提交的Bug描述缺少相应的环境信息和最小可复现的demo,我们将很难复现和解决该问题,从而降低收到反馈的可能性,甚至该问题将被关闭。

🐞 问题详细描述

问题描述

jiuwen_memory_entry/core/handler.py 中两个 handler 对布尔参数直接做真值判断,当调用方通过 JSON 传字符串 "false" 时(Python 中非空字符串均为 truthy)被误判为 true:

  1. _delete(第 740 行):mode = DeleteMode.PURGE if payload.get("hard") else DeleteMode.FORGET
  2. _search(第 643 行):trace = bool(payload.get("trace"))

复现步骤

调用 delete 接口,请求体传 {"item_id": "xxx", "hard": "false"}。

实际结果

  • _delete:走 PURGE(物理删除、不可恢复)
  • _search:with_trajectory=True,返回 trajectory 轨迹信息

期望结果

  • _delete:"hard": "false" 走 FORGET(遗忘、可恢复)
  • _search:"trace": "false" 不返回轨迹

建议

复用文件内已有的 _bool_value() 解析(_export_space 已在用同一函数),两处替换即可,1 文件 +2-2 行。

详细的环境信息描述

  • 组件版本:agent-memory v0.2.0(pyproject.toml),mem2.0 分支最新提交 55e199f
  • 运行环境:Windows 11 x64 / Python 3.13(项目要求 >=3.11,与 Python 版本无关,任意平台均复现)
  • 部署形态:通过 HTTP/CLI/MCP 任一入口调用数据面 delete、search 接口即可触发
  • 问题性质:纯应用层解析逻辑缺陷,不依赖特定操作系统、Python 小版本或存储后端配置

其他辅助信息

版本信息

感谢您的贡献 🎉!

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions