# @equationalapplications/prisma-outbox 中文文档

规范地址：https://npmcn.com/package/%40equationalapplications/prisma-outbox/

版本：8\.4\.0
npm 元数据更新时间：2026-11-12T22:18:18.149Z
中文译文更新时间：2026-11-13T21:04:08.616Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40equationalapplications/prisma-outbox
原文对照：https://npmcn.com/package/%40equationalapplications/prisma-outbox/?lang=original
项目主页：https://equationalapplications.github.io/expo-llm-wiki/guides/prisma-outbox/
源码仓库：https://github.com/equationalapplications/expo-llm-wiki

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：31.6 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- peer 依赖：@prisma/client ^5\.0\.0 \|\| ^6\.0\.0 \|\| ^7\.0\.0，@equationalapplications/core-llm-wiki 8\.4\.0
- 首次发布：2026-05-17T15:10:09.841Z
- 最新版本发布：2026-11-12T22:18:17.654Z
- 近 30 天下载量：3949（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：91（近 12 个月 91 个）

## 中文简介

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

## 安装

```sh
npm install @equationalapplications/prisma-outbox
```

也可以使用：`pnpm add @equationalapplications/prisma-outbox`、`yarn add @equationalapplications/prisma-outbox`、`bun add @equationalapplications/prisma-outbox`

## README

# @equental applications/prisma-outbox (英语)

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

[![npm version](https://img.shields.io/npm/v/%40equationalapplications%2Fprisma-outbox?label=prisma-outbox)](https://www.npmjs.com/package/@equationalapplications/prisma-outbox) [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/prisma-outbox/LICENSE)

**[医生](https://equationalapplications.github.io/expo-llm-wiki/)** • 妇女 **[GitHub 图像](https://github.com/equationalapplications/expo-llm-wiki)** • 妇女 **[范围Lab](https://equationalapplications.github.io/expo-llm-wiki/scopelab/)** • 妇女 **[维基解密](https://equationalapplications.github.io/expo-llm-wiki/wiki-demo/)** • 妇女 **[更改日志](https://github.com/equationalapplications/expo-llm-wiki/blob/main/CHANGELOG.md)** • 妇女 **[问题](https://github.com/equationalapplications/expo-llm-wiki/issues)**

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

用于GraphRAG检索表面(`traverseGraph`, (中文(简体) ), `useWikiTraversal`, (中文(简体) ), `formatGraphContext`,参见 [GraphRAG 指南](https://equationalapplications.github.io/expo-llm-wiki/guides/graphrag/)。 。 。 .

## 安装

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

## 快开始

```typescript
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`

| 外地 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `wikiMemory` | `WikiMemory` | 所需经费 | 这个 `WikiMemory` 以调查为例. |
| `prisma` | `PrismaLike<TTx>` | 所需经费 | 任何 Prisma 客户端 `$transaction` 方法(您的生成) `PrismaClient` 满足这一点). |
| `mapEvent` | `(event, tx: TTx) => Promise<void>` | 所需经费 | 将一个发件箱事件映射到交易中的 Prisma 操作 . `tx` 从您 `PrismaClient`。 。 。 . |
| `batchSize` | `number` | `100` | 每个周期获取最大事件 . |
| `pollIntervalMs` | `number` | `5000` | 民意测验周期之间的相差数秒. |
| `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](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/core/README.md) | 持续的零星记忆 |
| [@ 方程式应用程序/ expo- llm- wiki](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/expo/README.md) | 世博会/反应原生器的持久性瞬间记忆 |
| [@ 方程式应用/ react-llm-wiki](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/react/README.md) | Web 的持续的零星记忆 |
| [**@equental applications/prisma-outbox (英语)**](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/prisma-outbox/README.md) | 同步 SQLite 发件箱事件到 Prisma |
| [@ 方程式应用程序/ 核心工具](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/core-llm-tools/README.md) | 双子座工具计划和能力注射器 |
| [@ 方程式应用程序/ core-okf](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/okf/README.md) | 零依赖开放知识格式 (OKF) v0.1 + v0.2 原始人——剖析并生成可互通的知识捆. |
| [@equationalapplications/schema-org-llm-wiki (英语)](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/schema-org/README.md) | Cured schema.org 温剂肿瘤特征表 |
| [@equental应用程序/schema-software-org](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/schema-software-org/README.md) | 软件组织执行本体学表——17个节点类型,40个边缘,热剂超集,只数据 |
| [@ 公式应用程序/ mcp- server](https://github.com/equationalapplications/expo-llm-wiki/blob/main/packages/mcp-server/README.md) | MCP 服务器向编码代理显示 SynapseTree 内存工具 |

* * *

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

## 常见问题

### @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 和提交记录判断。

