@equationalapplications/prisma-outbox

中文文档
8.4.0发布于 2026/11/13MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 3949

使用交易出柜模式将核心-llm-wiki SQLite出柜事件同步到您 Prisma 支持的数据库中——至少一次发送并有订单保证.

中文使用文档
文档目录8 节
  1. 安装
  2. 快开始
  3. API 密码
  4. PrismaOutboxWorker
  5. PrismaOutboxConfig
  6. 如何运作
  7. 限制
  8. 莫诺雷波生态系统

@equental applications/prisma-outbox (英语)

同步 @equationalapplications/core-llm-wiki SQL 将发件箱事件输入您 Prisma 支持的数据库, 使用交易发件箱模式—— 至少一次发送并有订单保证 .

npm version TypeScript License: MIT

医生 • 妇女 GitHub 图像 • 妇女 范围Lab • 妇女 维基解密 • 妇女 更改日志 • 妇女 问题

投出 SQLite 发包表 @equationalapplications/core-llm-wiki 并同步您 Prisma 支持的系统在 Prisma 交易中的事件, 包含可配置的批量大小、 民意测验间隔、 错误处理和货币保护 .

用于GraphRAG检索表面(traverseGraph, (中文(简体) ), useWikiTraversal, (中文(简体) ), formatGraphContext,参见 GraphRAG 指南。 。 。 .

安装

npm install @equationalapplications/prisma-outbox
# peer deps
npm install @equationalapplications/core-llm-wiki @prisma/client

快开始

import { PrismaOutboxWorker } from '@equationalapplications/prisma-outbox';
import { WikiMemory } from '@equationalapplications/core-llm-wiki';
import { PrismaClient } from '@prisma/client';

const wiki = new WikiMemory(db, {
  llmProvider,
  config: { enableOutbox: true },
});
await wiki.setup();

const prisma = new PrismaClient();

const worker = new PrismaOutboxWorker({
  wikiMemory: wiki,
  prisma,
  mapEvent: async (event, tx) => {
    // mapEvent must be idempotent: at-least-once delivery means the same event
    // can be retried if acknowledgement fails after the Prisma transaction commits.
    if (event.operation === 'INSERT' && event.table_name.includes('entries')) {
      await tx.wikiEntry.upsert({
        where: { id: event.record_id },
        create: { id: event.record_id, ...(event.payload as Record<string, unknown>) },
        update: {},
      });
    }
  },
  pollIntervalMs: 5000,
  batchSize: 100,
  onError: (err, event) => {
    console.error('Outbox event failed', event.id, err);
    return false; // halt to preserve ordering; return true to skip poison-pill
  },
});

worker.start();

// On shutdown:
worker.stop();

API 密码

PrismaOutboxWorker

方法说明
start()从设定的间隔开始投票. 同上,注:.
stop()清除投票间隔和任何待补的超时.
syncBatch()手动触发一个民意测验周期(用于测试).

PrismaOutboxConfig

外地类型默认说明
wikiMemoryWikiMemory所需经费这个 WikiMemory 以调查为例.
prismaPrismaLike<TTx>所需经费任何 Prisma 客户端 $transaction 方法(您的生成) PrismaClient 满足这一点).
mapEvent(event, tx: TTx) => Promise<void>所需经费将一个发件箱事件映射到交易中的 Prisma 操作 . tx 从您 PrismaClient。 。 。 .
batchSizenumber100每个周期获取最大事件 .
pollIntervalMsnumber5000民意测验周期之间的相差数秒.
onError(err, event) => boolean | undefined—— 说返回时 true 跳过失败的事件; false编号 :undefined 停下来.
onWorkerError(err: Error) => void—— 说调用工人级别错误( SQLite 读取/ ack 失败) 未交付给 onError。 。 。 .

如何运作

  1. 每个 WikiMemory 变异( 当 enableOutbox: true在解剖学上向 SQLite 写一个事件 outbox 表格中与域写入相同的交易.
  2. PrismaOutboxWorker 民意调查 getUnprocessedOutboxEvents() 和电话 mapEvent 在每次事件的 Prisma 交易中.
  3. 成功处理的事件ID传递给 markOutboxEventsProcessed(),从 SQLite 中删除它们.
  4. 如果一个完整的批量被无出错地消耗,即时后续周期会运行(后排优化)以排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排的排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排出排的排出排出排出排出排出排出排出排出排出排出.

限制

  • 单入一心. 工人不使用行锁或租赁。 运行两个 PrismaOutboxWorker 与 SQLite 文件相对应的实例将导致重复的 Prisma 写作 。 每个SQLite数据库运行一个工人. mapEvent 仍必须有能力在交货后至少立即予以容忍(在Prisma成功实施后,承认可能失败).

莫诺雷波生态系统

软件包目的
@ 方程式应用程序/ core-llm-wiki持续的零星记忆
@ 方程式应用程序/ expo- llm- wiki世博会/反应原生器的持久性瞬间记忆
@ 方程式应用/ react-llm-wikiWeb 的持续的零星记忆
@equental applications/prisma-outbox (英语)同步 SQLite 发件箱事件到 Prisma
@ 方程式应用程序/ 核心工具双子座工具计划和能力注射器
@ 方程式应用程序/ core-okf零依赖开放知识格式 (OKF) v0.1 + v0.2 原始人——剖析并生成可互通的知识捆.
@equationalapplications/schema-org-llm-wiki (英语)Cured schema.org 温剂肿瘤特征表
@equental应用程序/schema-software-org软件组织执行本体学表——17个节点类型,40个边缘,热剂超集,只数据
@ 公式应用程序/ mcp- serverMCP 服务器向编码代理显示 SynapseTree 内存工具

由方程式应用有限责任公司制造. https://equationalapplications.com/ (中文(简体) )

版本与发布记录

@equationalapplications/prisma-outbox 共发布 91 个版本,首次发布于 2026/05/17;过去 12 个月发布了 91 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.4.0latest2026/11/131 天前
8.3.02026/11/131 天前
8.2.02026/11/122 天前
8.1.02026/11/122 天前
8.0.52026/11/112 天前
8.0.42026/11/112 天前

关于 @equationalapplications/prisma-outbox 的常见问题

@equationalapplications/prisma-outbox 是什么?

使用交易出柜模式将核心-llm-wiki SQLite出柜事件同步到您 Prisma 支持的数据库中——至少一次发送并有订单保证.

如何安装 @equationalapplications/prisma-outbox?

在项目目录运行 npm install @equationalapplications/prisma-outbox,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@prisma/client(^5.0.0 || ^6.0.0 || ^7.0.0)、@equationalapplications/core-llm-wiki(8.4.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@equationalapplications/prisma-outbox 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@equationalapplications/prisma-outbox 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@equationalapplications/prisma-outbox 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@equationalapplications/prisma-outbox 可以商用吗?

@equationalapplications/prisma-outbox 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@equationalapplications/prisma-outbox 的下载量有多少?

根据 npm 官方下载统计,@equationalapplications/prisma-outbox 在 2026/10/14 – 2026/11/12 这 30 天内被下载 3,949 次,日均约 132 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@equationalapplications/prisma-outbox 还在维护吗?

最新版本 8.4.0 发布于 2026/11/13(1 天前);至今共发布 91 个版本,其中过去 12 个月发布了 91 个;首次发布于 2026/05/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。