agentscope-ai / agentscope-ai/agentscope-java

[Feature] 建议为 memory_search / session_search 增加可选的多关键词匹配模式

未關閉
#3,054 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area/harness enhancement
主要語言
Java
星號
5.6k
分支
1.3k
平均合併
4 天 12 小時
30 天內合併 PR
77

描述

模型调用 `memory_search` 和 `session_search` 时,有时会将多个关键词组合成一个 query。当前实现将整个 query 作为字面短语匹配,相关记录即使存在,也可能返回无匹配结果。

### 示例

记忆文件或历史消息包含:

```text
部署决定:使用蓝鲸方案,服务端口为 9580。
```

查询结果:

```text
query = "蓝鲸" → 命中
query = "部署 蓝鲸" → 无匹配
```

当前实现中:

- `memory_search` 使用 `Pattern.quote(query)` 进行字面匹配。
- `session_search` 使用完整 query 进行大小写不敏感的子串匹配。
- `memory_search` 的参数描述使用了 “Keywords”,容易让模型传入多个空格分隔的关键词。

对应源码:[MemorySearchTool](https://github.com/agentscope-ai/agentscope-java/blob/c549a5e0/agentscope-harness/src/main/java/io/agentscope/harness/agent/tool/MemorySearchTool.java)、[SessionSearchTool](https://github.com/agentscope-ai/agentscope-java/blob/c549a5e0/agentscope-harness/src/main/java/io/agentscope/harness/agent/tool/SessionSearchTool.java)。

### 建议

保留现有短语匹配行为,增加可选参数 `matchMode`:

| 模式 | 含义 |
|---|---|
| `phrase` | 完整短语匹配,作为默认值 |
| `all` | 同一条记录包含所有关键词,不要求相邻或顺序一致 |
| `any` | 同一条记录包含任意关键词 |

第一版可以只按空白字符拆分关键词,不引入额外分词依赖。例如,模型可以传入 `"部署 蓝鲸"`,暂不处理连续中文句子的自动分词。

匹配范围保持现状:Memory 按行匹配,Session 按单条 entry 匹配,不跨记录组合关键词。同时在工具描述中说明不同模式的使用方式。

### 兼容性

- 不传新参数时保持当前行为。
- 保留现有 Java 调用方式。
- 关键词按字面值处理,不解释为正则表达式。
- 不涉及日期解析、语义检索或历史截断。

这个方向是否合适?如果有更适合的参数设计,也可以讨论调整。会附上一个实现 PR,便于结合代码评审。

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。