agentscope-ai / agentscope-ai/agentscope-java

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

オープン
#3,054 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
area/harness enhancement
主要言語
Java
スター
5.6k
フォーク
1.3k
平均マージ
4日 12時間
マージ済み PR(30日)
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 を短くまとめたダイジェスト。