Skip to content

plugin-memory-inmemory — 内存记忆 ​

包名: @aalis/plugin-memory-inmemory
源码: packages/plugin-memory-inmemory/src/index.ts

概述 ​

无持久化的内存消息存储,作为 memory 服务的 fallback 实现。本插件不会自动启用,需要显式启用;与 SQLite、MongoDB 后端同时加载且未通过 servicePreferences 指定偏好时,服务解析选中对方。

插件声明 ​

ts
definePlugin({
  name: '@aalis/plugin-memory-inmemory',
  displayName: '内存记忆',
  subsystem: 'memory',
  provides: [memory],
  apply(caps) { caps.provide.use(memory, service, { priority: -100 }); },
  uses: {
    config,
    logger,
    provide,
  },
})

注册优先级 -100(低于 plugin-memory-sqlite 的 10 与 plugin-memory-mongodb 的 5)。

配置 ​

配置项由 packages/plugin-memory-inmemory/src/index.ts 的 configSchema 声明。

字段类型默认值说明
rangeQueryLimitnumber500范围查询返回上限:区间消息查询单次返回的最大条数。命中上限会静默截断(与 sqlite/mongodb 后端对齐)
crossSessionMaxLimitnumber1000跨会话查询返回上限:跨会话最近消息查询允许的最大条数;调用方请求超过此值会被收窄到此上限

工作方式 ​

  • 消息按会话 ID 存放在进程内存中,每个会话一个按写入序的列表,archiveSpan 只给归档的消息打标记,留下的原文与归档的照原顺序交错。getHistory、getFullHistory 与 archiveSpan 数位置都按写入序,不按时间戳重排:假定时间戳随写入递增,这时与 sqlite、mongodb 按时间排的结果相同
  • 结构化元数据按命名空间与 key 存放,写入和读出时均做深拷贝
  • clearAll() 清空全部会话的消息与归档,不清元数据;各命名空间由归属插件经 memory:clear 自行清理
  • 应用重启后数据丢失
  • 适用于开发/测试环境或无需持久化的场景

文档对应 dev@c4e046e41,core 0.21.0,构建于 2026-11-02
基于 MIT 许可发布