# @b4run/postgres-storage 中文文档

规范地址：https://npmcn.com/package/%40b4run/postgres-storage/

版本：0\.15\.8
npm 元数据更新时间：2026-10-30T22:23:07.791Z
中文译文更新时间：2026-11-07T17:05:23.482Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40b4run/postgres-storage
原文对照：https://npmcn.com/package/%40b4run/postgres-storage/?lang=original
项目主页：https://github.com/cacheplane/b4run/tree/main/packages/postgres-storage#readme
源码仓库：https://github.com/cacheplane/b4run

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

- 包体积（解压后）：352 kB，43 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：3 个
- peer 依赖：@langchain/core ^1\.2\.12，@langchain/langgraph-checkpoint ^1\.1\.5
- 首次发布：2026-09-09T04:45:26.518Z
- 最新版本发布：2026-10-30T22:23:07.422Z
- 近 30 天下载量：4047（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：23（近 12 个月 23 个）

## 中文简介

B4. 运行的检查站、线条和许可决定的邮政系统.

## 安装

```sh
npm install @b4run/postgres-storage
```

也可以使用：`pnpm add @b4run/postgres-storage`、`yarn add @b4run/postgres-storage`、`bun add @b4run/postgres-storage`

## README

![B4.run](https://raw.githubusercontent.com/cacheplane/b4run/main/docs/brand/b4-logo-horizontal-black-on-white.png)

# @b4run/ postgres- 存储

支持Postgres持续使用B4. 运行的检查站、代理协议线条以及跨应用程序的许可.

**当 :** 你正在用共享的Postgres 来取代 B4.run 本地的耐用商店.

## 安装

```bash
pnpm add @b4run/postgres-storage pg
```

## 示例

```ts
import { Pool } from "pg"
import { createPostgresThreadsStore } from "@b4run/postgres-storage"

const pool = new Pool({ connectionString: process.env.DATABASE_URL })
const threadsStore = createPostgresThreadsStore({ pool })

await threadsStore.ready()

// During application shutdown:
await threadsStore.close()
await pool.end()
```

每个商店都接受 `schema` (默认) `public`和 `tablePrefix` (默认) `b4`),所以数个 应用程序或部署环境可以共享一个数据库。 两者都必须是小写 SQL 匹配标识符 `^[a-z_][a-z0-9_]*$`;如果需要的话,移民通行证会创造出计划。 通过 检查器、线程存储和权限存储的值相同。 应用软件 `b4 build` 联 合 国 `hono` 或者说 `vercel` 目标通过 `B4_PG_SCHEMA` 财务报告和审定财务报表 `B4_PG_TABLE_PREFIX` 运行时间绑定代替.

## 运行时间和稳定性

-   `@b4run/postgres-storage` 是一个支持的边缘安全应用表面,需要注入结构池。 被测试的边缘路径是当地工人用一个Neon WebSocket游泳池;这不是对每个边缘主机的声称.
-   `@b4run/postgres-storage/node` 是一个支持的仅节点应用程序表面,可创建 `pg` 连接字符串中的池.

移民是每个商店的记忆。 除非 `ownsPool: true`;由节点条目创建的池是商店拥有的. 在应用程序关闭期间关闭商店和呼叫者拥有的集合.

## 请求范围运行录用

`createPostgresRunAdmission({ pool })` 协调一个线程的归属 复制品。 每个请求创建一个实例, 初始化其 `ready()` 方法,以及 通过它 `pool` 用于该请求所用的每个运行时间商店。 初始化和 授权查询可在获得之前进行。 打电话 `tryAcquire(threadId)` 在读取决定运行或接受回调的检查点之前 答对. A 类 `false` 结果意味着另一个请求拥有线程并可能被重审. 已获取实例拒绝不同的线索; 释放和所有权损失为 终端。 等着 `release()` 完成或使用 `close()` 同时关闭这个实例所拥有的一个池。 来电供应的游泳池留下来 打开,除非 `ownsPool` 已经设定。 节点条目也接受 `connectionString`。 。 。 .

违约租约为30秒,每10秒续约. `leaseDurationMs` 财务报告和审定财务报表 `heartbeatIntervalMs` 接受正整数毫秒;心跳必须是 短于租赁。 过期并更新使用数据库时钟. 观察 `signal` 在所有权丧失或解除后停止工作。 过期的拥有者不能 更新或承诺运行时间存储写入, 即使在另一个请求接管之后 . 这种协调并不能提供准确的外部工具效应.

一旦获得, `pool.query()` 在短边栏中执行一个语句 交易. `pool.connect()` 进一步支持明确 `BEGIN` (或 `START TRANSACTION`, (中文(简体) ), `COMMIT` (或 `END`),以及 `ROLLBACK`,带有可选跟踪 分号。 嵌入式交易、保存点、交易控制修改器,以及 在有栅栏的查询中拒绝多个语句。 SQL 文字和评论 可能包含分号。 栅栏 SQL 接受诸如 `$1`· ; 通过这些参数传递数据。 位置参数以外的美元标志 sQL 文本中的标记和后鞭被拒绝,包括美元引用 字符串和美元标识符。 界值可能包含这些字符. 这个故意限制的 SQL 子集为运行时商店服务; 它不是一个 任意 SQL 执行接口。 围绕个人完成这些交易 存储操作; 不要通过模型生成来保存它们。 一个同步客户端 `release()` 在提供基础连接之前完成回滚 用于再利用。 释放或失去的入院治疗从未恢复无栅栏进入.

对于自定义的节点取入嵌入,请使用其有栅栏的商店返回录入 从 `requestStores`迁移 **全部** 由于活动 栅栏故意拒绝多报表迁移批次。 时间到了 在实际执行清理后,在授权后提出索偿要求并最后确定所有权. 生成 Vercel/ Hono 输出自动提供此接线 .

```ts
import {
  createPostgresClientToolCallStore,
  createPostgresPermissionsStore,
  createPostgresPool,
  createPostgresRunAdmission,
  createPostgresThreadsStore,
  postgresCheckpointer,
} from "@b4run/postgres-storage/node"

const requestStores = async () => {
  const pool = createPostgresPool({ connectionString: process.env.DATABASE_URL })
  try {
    const runAdmission = createPostgresRunAdmission({ pool })
    const naming = { pool: runAdmission.pool }
    const stores = {
      checkpointer: postgresCheckpointer(naming),
      clientToolStore: createPostgresClientToolCallStore(naming),
      permissionsStore: createPostgresPermissionsStore(naming),
      threadsStore: createPostgresThreadsStore(naming),
    }
    await Promise.all([runAdmission.ready(), ...Object.values(stores).map((store) => store.ready())])
    return {
      ...stores,
      runAdmission,
      dispose: async () => {
        try { await runAdmission.close() } finally { await pool.end() }
      },
    }
  } catch (error) {
    await pool.end()
    throw error
  }
}
```

这个栅栏可以围住注入的检查站,线程,权限,以及客户端工具商店. 单独配置的内存和靴子自有的审批赠与商店不包接. 现有管理下的工作空间限制 `requestStores` 现予保留. 进程本地运行的登记册仍然是不共享嵌入的默认值 允许; 仅共享 Postgres 数据并不能提供执行排除.

## 相关

-   [Postgres 存储 API 引用](https://b4.run/docs/api/postgres-storage) 确切的选择、商店和生命周期.
-   [持久性和租赁性](https://b4.run/docs/persistence) ——应用配置和部署指导.
-   [`@b4run/sqlite-storage`](https://www.npmjs.com/package/@b4run/sqlite-storage) ——当地SQLite坚持.
-   [`@b4run/permissions`](https://www.npmjs.com/package/@b4run/permissions) ——许可存储合同.

## 成熟和支持

B4.run为1.0前置,其公用地表可以改变. 所有可公布的 B4. 运行包作为一个固定组一起发布; 审查 [`@b4run/postgres-storage` 更改日志](https://github.com/cacheplane/b4run/blob/main/packages/postgres-storage/CHANGELOG.md) 财务报告和审定财务报表 [升级指南](https://b4.run/docs/upgrading) 升级前。 用于支持, 使用 [GitHub 讨论](https://github.com/cacheplane/b4run/discussions); 报告缺陷 [GitHub 问题](https://github.com/cacheplane/b4run/issues)。 。 。 .

## 许可证

麻省理工学院. 见 [仓库许可证](https://github.com/cacheplane/b4run/blob/main/LICENSE)。 。 。 .

## 常见问题

### @b4run/postgres-storage 是什么？

B4\. 运行的检查站、线条和许可决定的邮政系统\.

### 如何安装 @b4run/postgres-storage？

在项目目录运行 npm install @b4run/postgres-storage，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@langchain/core（^1\.2\.12）、@langchain/langgraph-checkpoint（^1\.1\.5）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @b4run/postgres-storage 支持 TypeScript 吗？

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

### @b4run/postgres-storage 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @b4run/postgres-storage 需要什么版本的 Node\.js？

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

### @b4run/postgres-storage 可以商用吗？

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

### @b4run/postgres-storage 的下载量有多少？

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

### @b4run/postgres-storage 还在维护吗？

最新版本 0\.15\.8 发布于 2026/10/31（7 天前）；至今共发布 23 个版本，其中过去 12 个月发布了 23 个；首次发布于 2026/09/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

