# @earendil-works/pi-session-backend-sqlite-node 中文文档

规范地址：https://npmcn.com/package/%40earendil-works/pi-session-backend-sqlite-node/

版本：0\.99\.2
npm 元数据更新时间：2026-09-30T19:26:41.577Z
中文译文更新时间：2026-11-13T03:37:11.647Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40earendil-works/pi-session-backend-sqlite-node
原文对照：https://npmcn.com/package/%40earendil-works/pi-session-backend-sqlite-node/?lang=original
项目主页：https://github.com/earendil-works/pi#readme
源码仓库：https://github.com/earendil-works/pi

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

- 包体积（解压后）：240 kB，64 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.19\.0
- 运行依赖：2 个
- 首次发布：2026-08-06T10:51:22.015Z
- 最新版本发布：2026-09-30T19:26:41.158Z
- 近 30 天下载量：25391（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 14 个）

## 中文简介

@ earendil- works/ pi- agent- 核心会话的节点 sqlite 会话后端

## 安装

```sh
npm install @earendil-works/pi-session-backend-sqlite-node
```

也可以使用：`pnpm add @earendil-works/pi-session-backend-sqlite-node`、`yarn add @earendil-works/pi-session-backend-sqlite-node`、`bun add @earendil-works/pi-session-backend-sqlite-node`

## README

# @earendil-works/pi-session-后端-sqlite-node

节点 `node:sqlite` 会话后端 `@earendil-works/pi-agent-core`。 。 。 .

```ts
import { BACKGROUND_CONTEXT } from "@earendil-works/pi-agent-core";
import {
  createNodeSqliteFactory,
  SqliteSessionRepo,
} from "@earendil-works/pi-session-backend-sqlite-node";

const repository = new SqliteSessionRepo({
  directory: "/var/lib/pi/sessions",
  databaseFactory: createNodeSqliteFactory(),
});

const session = await repository.create({}, BACKGROUND_CONTEXT);
const main = await session.createBranch("main", null, BACKGROUND_CONTEXT);
await main.appendMessage(
  { role: "user", content: "hello", timestamp: Date.now() },
  BACKGROUND_CONTEXT,
);
await session.close(BACKGROUND_CONTEXT);
await repository.close(BACKGROUND_CONTEXT);
```

默认布局每个会话创建一个文件 `directory`仅包含 ASCII 字母,数字, `_`,以及 `-` 保留 `{sessionId}.sqlite`;每个其它ID使用一个 `~`\- 其UTF-16编码单元的前置基底64url编码. 耐用ID不变,返回/列出的元数据包含犬形物理路径. 过 `databasePath` 将多个会话放置在一个支持的共享容器中;其母部分在需要时被创建.

数据库厂区分了有意创作,不创作读写开放,不创作只读开放. 会议 `open()` 并删除在配置的存储器外拒绝元数据,从不创建缺失的数据库。 列表为只读和最优. 伪造故意允许一个外源元数据路径:它读取的是准确的已存在的容器只读,从不以相同的ID来替代一个活跃的本地会话.

东道主的生命周期,而不是这个后端,保证每个会话有一个可写所有者. 在另一个进程中直接打开同一会话写入是不支持的 。 该寄存器拒绝一个ID的重叠本地创建/开/叉/删除所有权,但不会执行跨进程租赁,锁定,栅栏,心跳,或接管. 主机在删除前必须关闭工人.

同一寄存器库中打开的源的叉子会将它的快照放在源的承诺队列上. 其他任何来源,包括由现场会议工作人员持有的渠道,都使用独立的只读连接和推迟的WAL交易;后来的工人承诺可能完成,而快照仍然开放。 共享容器删除只删除选定的会话行 。 仓库关闭等待每次公开会话清理尝试,然后报告出错 。 软件包不导出搜索服务或FTS索引;搜索是单独的S3投影.

## 常见问题

### @earendil-works/pi-session-backend-sqlite-node 是什么？

@ earendil- works/ pi- agent- 核心会话的节点 sqlite 会话后端

### 如何安装 @earendil-works/pi-session-backend-sqlite-node？

在项目目录运行 npm install @earendil-works/pi-session-backend-sqlite-node，或使用 pnpm add / yarn add / bun add。

### @earendil-works/pi-session-backend-sqlite-node 支持 TypeScript 吗？

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

### @earendil-works/pi-session-backend-sqlite-node 支持 ESM 还是 CommonJS？

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

### @earendil-works/pi-session-backend-sqlite-node 需要什么版本的 Node\.js？

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

### @earendil-works/pi-session-backend-sqlite-node 可以商用吗？

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

### @earendil-works/pi-session-backend-sqlite-node 的下载量有多少？

根据 npm 官方下载统计，@earendil-works/pi-session-backend-sqlite-node 在 2026/10/13 – 2026/11/11 这 30 天内被下载 25,391 次，日均约 846 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @earendil-works/pi-session-backend-sqlite-node 还在维护吗？

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

