# @aparte/plugin-compaction 中文文档

规范地址：https://npmcn.com/package/%40aparte/plugin-compaction/

版本：0\.32\.1
npm 元数据更新时间：2026-11-02T11:25:09.001Z
中文译文更新时间：2026-11-06T09:00:04.085Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40aparte/plugin-compaction
原文对照：https://npmcn.com/package/%40aparte/plugin-compaction/?lang=original
项目主页：https://apartejs.dev/guides/long-conversations/
源码仓库：https://github.com/apartejs/aparte

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

- 包体积（解压后）：196 kB，17 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：0 个
- peer 依赖：@aparte/core \>=0\.32\.1 \<1\.0\.0
- 首次发布：2026-08-29T21:00:57.944Z
- 最新版本发布：2026-11-02T11:25:08.649Z
- 近 30 天下载量：5136（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：46（近 12 个月 46 个）

## 中文简介

分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分.

## 安装

```sh
npm install @aparte/plugin-compaction
```

也可以使用：`pnpm add @aparte/plugin-compaction`、`yarn add @aparte/plugin-compaction`、`bun add @aparte/plugin-compaction`

## README

# @ aparte/ plugin- compaction (帮助)

对话 **压缩** 页:1 [独立](https://github.com/apartejs/aparte): 当谈话 打开模型的窗口 总结模型的更古老的转弯 逐字记录——不删除任何内容。 核心紧凑物中没有任何东西——没有UI工具包 每个SDK特工都把它当作一个选入舱载运——所以这里就是它居住的地方.

```bash
npm install @aparte/plugin-compaction @aparte/core
```

```ts
import { setupCompaction } from '@aparte/plugin-compaction';

const compaction = setupCompaction();   // the global config, the current model's window
```

这就是整条线。 插件将自己注册为配置的压缩器,并决定 其自己的:在经过80%的窗口后离开对话(`threshold`),以及 在请求不合要求的发送之前(转弯等待,停止同时取消) 模式拒绝一个请求,如其窗口(它紧凑并再次发出转弯).

收缩目标 **下级** 阈值,而不是它: 模型之后读取的历史 大约在陆地上 `threshold − 0.2` ,减去固定成本(系统提示、工具、 因此,一个摘要买几个回合而不是被问到 下一场之后的又一次 选择是在模型自己的符号(字符)中完成的 heuristic的低分数从最后的回覆中校正,如上下文测量)并离开 准备的转弯空间, 所以一个长的面条是空间。 A 类 `selector` 属于你自己 与信息单独通话 并保持原样。 每个聊天契约单独:摘要 被写给一个人 并不会阻碍另一个。 恢复取消仍在编写的摘要 用于聊天(与 `listen: false`,它听到没有窗口事件,摘要被拒绝当它 并且停止取消它.

收缩 **写一个检查点, 它不删除任何内容**。摘要在第一个回合 保留 -- `contextSummary: { summary, count, createdAt }`,通过对话——和 该模型从那里开始的历史,摘要首先。 每个消息都留在屏幕上 在存储中; 气泡在转弯处上方绘制一个分隔符 (“ 12 个消息摘要用于 model","显示摘要","还原","还原"再次向模型发送原始消息.

```ts
await compaction.compact('main-chat');   // on demand; returns the outcome, never throws
compaction.abort();                      // the summary in flight; the conversation is untouched
compaction.running;                      // true meanwhile
compaction.dispose();                    // remove the listeners and the compactor
```

**总结** 通过配置的传输要求当前模型:流出,带有 `maxTokens` 把答案放在窗内 `_meta: { compaction: true }`,所以一个 后端可以通向更便宜的模型. 默认提示请求在 对话的语言; 第二次压缩更新摘要而不是概括 摘要; 第一个请求是逐字保存的。 长度限制的简要剪接,结束 在错误中,或不会少于它所取代的,被拒绝,对话将保持不变 对 与 **没有** 窗口(没有) `contextWindow` 无法说出适合什么,所以 默认跳过 `'no-window'`。 。 。 .

**选项** —— 说 `auto` (默认) `true`· ; `false` 实值 **仅手动**:只有一个人的请求契约—— 现在收紧,重试, `compact()`, (中文(简体) ), `aparte-compact` 无论是后转、前发还是后发 溢出尝试,所以一个模型的溢出错误和插件之前一样存在;所以 已经 `listen: false`, (中文(简体) ), `threshold` (默认) `0.8`, (中文(简体) ), `contextWindow` (当模型宣布无时的窗口), `selector` (你自己的) `(messages) => { keep, drop }`· ; `createCompactionSelector` 构建 预算意识一), `prompt`, (中文(简体) ), `keyResolver`, (中文(简体) ), `summarize` (替换模型调用:你的终点,a 更便宜的模型, `resolveTarget` (商店的笔录: `{ getMessages, updateMessage }`, (中文(简体) ), `scopeToTargetId` (在多聊天页面上每聊天一次设置), `keepWithoutWindow`, (中文(简体) ), `listen`编辑 配置是最后一个,像每一个 `setup*`数字 : `setupCompaction(options, config)`。 。 。 .

**活动**打开 `window`,每个指定聊天和检查点所坐的信息: `aparte-compact-start`, (中文(简体) ), `aparte-compact-done` (单位:千美元)`{ summary, kept, dropped, count }`, (中文(简体) ), `{ skipped: true, reason }` —— 说 `empty`, (中文(简体) ), `nothing-to-drop`, (中文(简体) ), `running`, (中文(简体) ), `streaming`, (中文(简体) ), `no-window` -或者说 `{ restored: true }`, (中文(简体) ), `aparte-compact-error` (单位:千美元)`{ error }`) (中文(简体) ).

**预算**,为想要数字的主机导出 : `computeHistoryBudget`, (中文(简体) ), `splitHistoryBudget`, (中文(简体) ), `estimateTokens`, (中文(简体) ), `estimateTokensJson`, (中文(简体) ), `DEFAULT_COMPACTION_CONFIG`; 和 : `transcriptForSummary` 编号 : `messageText` 编号 : `DEFAULT_COMPACTION_PROMPT` (单位:千美元) `summarize` 您的电话 自己想要同样的记录.

`@aparte/core` 是唯一一个 **同伴依赖**。没有元素,导入时没有DOM:同一条目 为浏览器和节点服务.

> 仅限无害环境管理。 离相单相.

## 常见问题

### @aparte/plugin-compaction 是什么？

分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分分\.

### 如何安装 @aparte/plugin-compaction？

在项目目录运行 npm install @aparte/plugin-compaction，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@aparte/core（\>=0\.32\.1 \<1\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aparte/plugin-compaction 支持 TypeScript 吗？

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

### @aparte/plugin-compaction 支持 ESM 还是 CommonJS？

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

### @aparte/plugin-compaction 需要什么版本的 Node\.js？

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

### @aparte/plugin-compaction 可以商用吗？

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

### @aparte/plugin-compaction 的下载量有多少？

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

### @aparte/plugin-compaction 还在维护吗？

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

