agentscope-ai / agentscope-ai/agentscope-java

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

Abierto
#3,054 2 comentarios 0 reacciones 0 asignados Ver en GitHub
area/harness enhancement
Lenguaje dominante
Java
Estrellas
5.6k
Forks
1.3k
Merge medio
4 d 12 h
PR fusionados (30 d)
77

Descripción

模型调用 `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,便于结合代码评审。

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.