agentscope-ai / agentscope-ai/agentscope-java

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

Đang mở
#3,054 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
area/harness enhancement
Ngôn ngữ chính
Java
Star
5.6k
Fork
1.3k
Merge trung bình
4 ngày 12 giờ
Pull request đã merge (30 ngày)
77

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.