ReMe¶
agentscope-extensions-reme 接入自托管的 ReMe 记忆服务,特点是基于 trajectory(对话轨迹) 抽取长期记忆,并按 workspace 隔离。
何时使用¶
想要一个轻量的本地记忆服务,启动门槛低。
关注整段对话轨迹的摘要,而不是单条消息级的存储。
用
userId表达逻辑工作区,每个用户一份独立记忆。
添加依赖¶
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-reme</artifactId>
<version>${agentscope.version}</version>
</dependency>
快速上手¶
import io.agentscope.core.memory.reme.ReMeLongTermMemory;
ReMeLongTermMemory memory = ReMeLongTermMemory.builder()
.userId("task_workspace") // 映射到 ReMe 的 workspace_id
.apiBaseUrl("http://localhost:8002") // 你的 ReMe Server 地址
.build();
ReActAgent agent = ReActAgent.builder()
.name("Assistant")
.model(model)
.longTermMemory(memory)
.longTermMemoryMode(LongTermMemoryMode.BOTH)
.build();
userId 在 ReMe 里实际作为 workspace_id,这是 ReMe 用来切分记忆的最小单位。
工作机制¶
写入(record):把过滤后的对话拼成一个
ReMeTrajectory,作为整体送给 ReMe 的add接口;服务端再用 LLM 把轨迹抽取成可检索的记忆片段。检索(retrieve):以当前消息为 query 调用 ReMe 的
search,优先返回服务端聚合的answer,没有时退化为多个 memory 片段拼接。
写入时遵循与 Bailian 相同的过滤策略:
只保留
USER与ASSISTANT消息。跳过含
ToolUseBlock的助手消息(工具调用请求不入记忆)。跳过含
<compressed_history>标记的压缩历史。
Builder 配置参数¶
方法 |
是否必填 |
默认 |
说明 |
|---|---|---|---|
|
✅ |
- |
工作区 ID(写入和检索都基于它) |
|
✅ |
- |
ReMe 服务地址,例如 |
|
❌ |
|
HTTP 请求超时 |
ReMe 暂未提供更细粒度的 metadata 过滤;如果需要按业务标签切分,建议在
userId里编码命名空间(例如tenant-a:project-1)。