@agent-assistant/memory
@agent-assistant/memory 是其所运载的继电器内存适配器上的v1辅助成份层(InMemoryAdapter, (中文(简体) ), SupermemoryAdapter, (中文(简体) ), createMemoryAdapter; 最初来自 @agent-relay/memory) (中文(简体) ).
它直接使用这些适配器进行持久性和CRUD,然后只添加经批准的v1行为:
- 助理内存范围 :
session, (中文(简体) ),user, (中文(简体) ),workspace, (中文(简体) ),org, (中文(简体) ),object - 按范围、标记和必要性分列的结构检索
- 可选用户范围扩展为明确的会话范围
- 推广到更广泛的范围
- 通过呼叫器提供的回调进行收缩
- 通过助理管理的元数据过滤 TTL
它不执行新的内存引擎,语义搜索,政策控制,只云行为,或交叉代理合并.
安装
npm install @agent-assistant/memory
出口
import {
createRelayBackedMemoryStore,
createMemoryStore,
InMemoryMemoryStoreAdapter,
RelayMemoryStoreAdapter,
retrieveTurnMemoryContext,
promoteLatestSessionMemory,
} from '@agent-assistant/memory';
套件出口公众 MemoryEntry, (中文(简体) ), MemoryScope, (中文(简体) ), MemoryStore,输入/清空类型,以及错误类别 MemoryEntryNotFoundError, (中文(简体) ), InvalidScopePromotionError,以及 CompactionError。 。 。 .
快速启动
import { createMemoryStore, InMemoryMemoryStoreAdapter } from '@agent-assistant/memory';
const memory = createMemoryStore({
adapter: new InMemoryMemoryStoreAdapter(),
});
const sessionEntry = await memory.write({
scope: { kind: 'session', sessionId: 'sess-123' },
content: 'User prefers concise responses.',
tags: ['preference', 'style'],
metadata: {
agentId: 'assistant-1',
source: 'capability:intake',
},
});
const results = await memory.retrieve({
scope: { kind: 'session', sessionId: 'sess-123' },
tags: ['preference'],
});
const promoted = await memory.promote({
sourceEntryId: sessionEntry.id,
targetScope: { kind: 'user', userId: 'user-456' },
deleteOriginal: true,
});
const compacted = await memory.compact({
sourceEntryIds: [promoted.id],
targetScope: { kind: 'user', userId: 'user-456' },
compactionCallback: (entries) => entries.map((entry) => entry.content).join('\n'),
tags: ['summary'],
});
中继重用
V1 重用中继内存适配器(从 @agent-relay/memory 7.1.1 项下 src/relay-memory/:
InMemoryAdapter权限InMemoryMemoryStoreAdapter- 任何兼容的中继器
MemoryAdapter能够用RelayMemoryStoreAdapter - 中继
add(), (中文(简体) ),get(), (中文(简体) ),update(), (中文(简体) ),delete(),以及list()仍然是基本的储存业务
V1 故意不使用继电器 MemoryService 或者说 search()数字 :
MemoryService不显示助手软件包需要的完整更新/get/逐一删除- 语义搜索被推迟; v1 检索是结构化的, 并带有惯性偏差
范围绘图
助理范围被编码到中继字段和元数据上:
| 助理范围 | 中继绘图 |
|---|---|
session | sessionId + 键 metadata._scopeKind = 'session' |
user | metadata.userId + 键 metadata._scopeKind = 'user' |
workspace | projectId + 键 metadata._scopeKind = 'workspace' |
org | metadata.orgId + 键 metadata._scopeKind = 'org' |
object | metadata.objectId + 键 metadata.objectType + 键 metadata._scopeKind = 'object' |
软件包也存储 metadata._updatedAt 因为中继条目曝光 createdAt 但没有本地人 updatedAt。 。 。 .
检索规则
retrieve() 过滤器来自:
- 精确范围匹配
- 所有请求的标签
since时间戳- 过期
includeNarrower: true 在v1中故意缩小:
- (单位:千美元)
user范围查询,存储中还包括session仅当context.sessionId提供 - 没有隐含的会话发现
- v1 未执行工作空间/ org 扇出
检索使用继电器 list() 和助手侧过滤。 因为接力 list() 是一个最近的项目原始的,v1的检索具有递归性,而不是保证对所有存储条目的详尽扫描.
促进和紧凑
晋升仅向上:
session -> user | workspace | org | objectuser -> workspace | orgworkspace -> orgobject -> user | workspace | org
缩合为 v1 :
- 所有源条目必须存在
- 所有来源必须共享一个范围
targetScope必须匹配源范围- 呼叫者提供收缩回调
- 软件包从不调用模型
过期和举证
expiresAt 被存储在中继元数据中并由 get() 财务报告和审定财务报表 retrieve()。过期记录保留在基本适配器中,直至明确删除.
该软件包通过写作,更新,推广和收缩来保存助理出处元数据. 计划领域是:
agentIdsourceconfidencecreatedInSessionIdpromotedFromIdcompactedFromIds
生产用途
import {
createMemoryAdapter,
createMemoryStore,
RelayMemoryStoreAdapter,
} from '@agent-assistant/memory';
const relayAdapter = await createMemoryAdapter({
type: 'supermemory',
apiKey: process.env.SUPERMEMORY_API_KEY,
});
const memory = createMemoryStore({
adapter: new RelayMemoryStoreAdapter(relayAdapter),
});
包裹的中继适配器必须执行 list() 财务报告和审定财务报表 update()。构造器拒绝不提供两种方法的适配器.
转换内存帮助器
建立自己快速格式的消费者可以使用原始转弯帮助器,而不是重新实施范围检索和推广:
import {
createRelayBackedMemoryStore,
retrieveTurnMemoryContext,
promoteLatestSessionMemory,
} from '@agent-assistant/memory';
const { store, close } = await createRelayBackedMemoryStore({
config: {
type: 'supermemory',
apiKey: process.env.SUPERMEMORY_API_KEY,
defaultAgentId: 'sage',
defaultProjectId: 'workspace-123',
},
});
const context = await retrieveTurnMemoryContext({
store,
sessionId: 'thread-1',
userId: 'user-1',
workspaceId: 'workspace-123',
tags: ['conversation'],
limit: 5,
});
await promoteLatestSessionMemory({
store,
sessionId: 'thread-1',
userId: 'user-1',
tags: ['promotable'],
});
await close();
retrieveTurnMemoryContext() 返回会话中的条目,用户,然后默认的工作空间顺序,由条目 id去除. promoteLatestSessionMemory() 向用户或呼叫者提供的目标范围促进最新的匹配会话条目.
隔离
packages/memory 可自行管理 :
npm installnpm run buildnpm test
该包没有云要求. InMemoryMemoryStoreAdapter 是默认本地/测试后端.
未在 V1 中
- 语义或嵌入搜索
- 自动内存写入时速
- 会话存档工作流程
- 政策性出入控制
- 助理层加密
- 交叉代理合并、矛盾处理或共享团队出版物
记忆 包接 模拟