agentscope-ai / agentscope-ai/agentscope-java
[Feature] 建议为 memory_search / session_search 增加可选的多关键词匹配模式
- Langage dominant
- Java
- Étoiles
- 5.6k
- Forks
- 1.3k
- Merge moyen
- 4 j 12 h
- PR mergées (30 j)
- 77
Description
模型调用 `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,便于结合代码评审。
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.