# @ai-ecoverse/slicc-scrub 中文文档

规范地址：https://npmcn.com/package/%40ai-ecoverse/slicc-scrub/

版本：1\.1\.0
npm 元数据更新时间：2026-10-23T11:01:26.390Z
中文译文更新时间：2026-11-05T23:01:20.098Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ai-ecoverse/slicc-scrub
原文对照：https://npmcn.com/package/%40ai-ecoverse/slicc-scrub/?lang=original
项目主页：https://github.com/ai-ecoverse/slicc-scrub#readme
源码仓库：https://github.com/ai-ecoverse/slicc-scrub

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

- 包体积（解压后）：74.1 kB，10 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：0 个
- 首次发布：2026-10-12T21:01:42.833Z
- 最新版本发布：2026-10-23T11:01:25.914Z
- 近 30 天下载量：10047（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

零依赖性秘密洗涤器(raw, s碎片, JSON, 百分率, HTML, base64, hex, 包裹) 由金库, 内核和 slic- 代理共享

## 安装

```sh
npm install @ai-ecoverse/slicc-scrub
```

也可以使用：`pnpm add @ai-ecoverse/slicc-scrub`、`yarn add @ai-ecoverse/slicc-scrub`、`bun add @ai-ecoverse/slicc-scrub`

## README

# 斯库克

每一个地方都有一个洗涤器 SLICC的秘密 可能滑入模型的背景: 保险库的 `forward` 响应和模型请求,内核的执行子,和slic-agent的工具输出. 它取代了密文的值,在下面的每个编码中,在文本前进之前. 设计是第3.15节 `secrets-tokens-design.md` (修订版4) 在slic-agent-plan中;这个README是所建的光谱.

-   **零运行时间依赖,** 没有DOM和Node API,没有 `eval` 没有生成代码 。 它以浏览器框架,工人,节点和内核的形式运行.
-   **决定:** 相同的值和输入总是给予同样的输出.
-   **一套向量,** `vectors.json`每个消费者都会反对它.

```js
import { compile } from '@ai-ecoverse/slicc-scrub';

const scrubber = compile([{ name: 'GH_TOKEN', value: 'ghp_…', placeholder: 'fnox_proxy_…' }], { version: 3 });
scrubber.text('token: ghp_…');
```

## API 密码

|  |  |
| --- | --- |
| `compile(secrets, options?) → Scrubber` | `secrets` 实值 `{ name, value, placeholder }[]`。一个值短于 8 字节的 UTF-8 扔出 a `RangeError`:除了普通的输出,它不能被告诉. `options` 为: `idleMs` (违约250)和 `version` (默认0),两者都只回放,和 `sameLength` (默认) `false`(见下文) |
| `scrubber.text(string) → { text, hits }` | 清除 UTF-8 文本。 片段匹配可以剪切多字节字符;其残留解码为 U+FFFD |
| `scrubber.bytes(Uint8Array) → { bytes, hits }` | 擦除字节 |
| `scrubber.stream() → Stream` | 清除下方的溪流 |
| `scrubber.version`, (中文(简体) ), `scrubber.idleMs`, (中文(简体) ), `scrubber.size` | 选项和不同模式的数量 |
| `FRAGMENT`, (中文(简体) ), `MIN_VALUE` | 第16和8条 |

`hits` 实值 `[{ name, form, count }]`:每个秘密以每种形式出现的次数(`raw`, (中文(简体) ), `fragment`, (中文(简体) ), `json`, (中文(简体) ), `percent`, (中文(简体) ), `html`, (中文(简体) ), `base64`, (中文(简体) ), `hex`, (中文(简体) ), `wrapped`) (中文(简体) ). 它从来不包含一个值.

## 表格

每个值 _页:1_ 以这些形式与 UTF-8 字节相匹配。 一种形式只有在与以前不同时才会被添加.

| 表单 | 什么是匹配的 |
| --- | --- |
| `raw` | _页:1_ 本身 |
| `fragment` | 任何运行 16 字节或更多 _页:1_。短于 16 字节的值没有 |
| `json` | 内部 `JSON.stringify(v)`; 与 `/` 作为 `\/`; 使用每个控制和非ASCII UTF-16单元作为 `\uXXXX`,在下方和上方 |
| `percent` | `encodeURIComponent(v)`; 小写十六进制相同 `%20` 作为 `+`并形成编码 `A–Z a–z 0–9 * - . _` 中,空格为 `+`(中文(简体) ) |
| `html` | `&` `<` `>` `"` 作为 `&amp;` `&lt;` `&gt;` `&quot;`,以及 `'` 作为 `&#39;` 或者说 `&#x27;` |
| `base64` | 标准字母和URL安全字母:整个编码、加法和不加法,以及 _页:1_ 在更长的编码流中,每个字节相抵消 0, 1 和 2, 字符运行只取决于 _页:1_'字节(当它至少有8个字符). 这包括基本 `user:pass` 与 _页:1_ 在两侧,JWT段和基数64'd JSON |
| `hex` | 下与上,相接相接 |
| `wrapped` | 页:1 `base64` 财务报告和审定财务报表 `hex` 以 CR 和 LF 形式在其中的任何地方显示(`base64 -w 76`总统阁下, `xxd -p`(中文(简体) ) |

## 匹配

-   **1 Aho – Corasick 自动马通** 在每一个图案上,在字节上。 碎片从它们的16字节窗口中找到,并沿着值被扩展出字节. 第二个自動相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相關相 `base64` 财务报告和审定财务报表 `hex` 模式运行在已删除的 CR 和 LF 输入的视图上,映射回原字节.
-   **最左边,那么最长:** 在每一点上,开始的比赛先取胜,然后在那些最长的比赛中取胜. 绑起来 `raw`,则 `fragment`, (中文(简体) ), `json`, (中文(简体) ), `percent`, (中文(简体) ), `html`, (中文(简体) ), `base64`, (中文(简体) ), `hex`,然后是先前的秘密。 匹配从不重叠,替换的文本从不扫描 .
-   **替换:** (单位:千美元) `raw` 匹配(覆盖整个值的碎片是一)成为密件 `placeholder`; 任何其它东西都变成 `[redacted:<name>]`。 。 。 .
-   **`sameLength: true`** 以匹配的字节数替换每种形式的匹配:每个字节变为 `*` (0x2A),但不包括CR和LF,它们留在原地. 填充符是固定的字节,没有取自值、占位符或名称,所以输出有输入的长度和行间断开,并且长度前置框架围绕匹配(一个 HTTP) `Content-Length`,一个块大小,一个WebSocket框架)仍然坚守. 匹配,表单, `hits` 而流出与没有流出相同;只有替换不同.
-   匹配是区分大小写;六分法在大小写中匹配.

## 流线

`stream()` 返回时 `{ push(Uint8Array) → Uint8Array, idle() → Uint8Array, end() → Uint8Array, hits }`。 。 。 .

-   **`push`** 返回不再是匹配的一部分的每个字节、被擦除并拖住其余部分:从迄今为止的输入仍然可以成为匹配的最早点起(一个图案的适当前缀、一个沿其值仍在增长的片段,或一个覆盖整个CR和LF的包裹图案)。 因此,在任何块块之间分出一个相匹配的字段完全一样 `end()` 给出与 `bytes()`。 。 。 .
-   **`end`** 洗干净,把一切拿回来.
-   **`idle`** 由呼叫者打电话 `idleMs` 没有输入, 所以交互提示不能拖住 。 它释放出所持有的字节,被洗涤, **只有在16人以下的情况下**,否则则不返回。 16字节或以上的被扣尾可能是更长时间相匹配的开始.
-   `hits` 目前为止,总的溪流.

## 向量

`vectors.json` (单位:千美元)`@ai-ecoverse/slicc-scrub/vectors.json`)为 `{ format: 1, fragment, minValue, idleMs, cases }`。每个案件 `{ name, secrets, input, output, hits }`,或与 `inputHex` 财务报告和审定财务报表 `outputHex` 用于不是UTF-8的字节. `scripts/vectors.mjs` 从每个输入的构建方式(节点的自有基数64、六进制和URL编码器)来写,从不从洗涤器来写.

消费者的测试,每个案例:

1.  `bytes(input)` (和 `text` (如果案件是文字) `output` 财务报告和审定财务报表 `hits`,按任何顺序;
2.  页:1 **每个分点**, (中文(简体) ), `push(first)`, (中文(简体) ), `push(rest)`, (中文(简体) ), `end()` 给 `output`· ;
3.  一次给出一个字节 `output`。 。 。 .

## 开发

```sh
npm install
npm run build    # dist/index.js and dist/types
npm run lint
npm test         # vectors.json is fresh, the vectors at every split point, the API, a fuzz test, and CI
npm run vectors  # rewrite vectors.json
```

单位测试在 gi上 `test/unit/` (单位:千美元)`npm run test:unit`),而承诺前的钩子要求它们覆盖每一个被修改的行 `src/`。Biome、TypeScript、左上角和翻新配置来自 [分页共享网络](https://github.com/ai-ecoverse/slicc-shared-web)。 。 。 .

## 释放

`.github/workflows/ci.yml` 唯一的工作流程: [塑料-共享网络管道](https://github.com/ai-ecoverse/slicc-shared-web#pipeline),与该版本相同 `@ai-ecoverse/slicc-shared-web` 德从相生. 一个拉动请求得到点缀, `npm test` (单位:千美元)`test/integration/*.test.mjs`一个硬的,因为 `ci / integration`和克洛德和克洛德和克洛德克斯评论(`ci / review`) (中文(简体) ). 推动 `main` 运行语义释放, 它标记了常规承诺的版本并发布 `@ai-ecoverse/slicc-scrub` 到 npm 有出处, 通过信任的出版来自 `ci.yml`. 没有其他方法可以释放. `test/integration/workflows.test.mjs` 留着吧.

## 常见问题

### @ai-ecoverse/slicc-scrub 是什么？

零依赖性秘密洗涤器\(raw, s碎片, JSON, 百分率, HTML, base64, hex, 包裹\) 由金库, 内核和 slic- 代理共享

### 如何安装 @ai-ecoverse/slicc-scrub？

在项目目录运行 npm install @ai-ecoverse/slicc-scrub，或使用 pnpm add / yarn add / bun add。

### @ai-ecoverse/slicc-scrub 支持 TypeScript 吗？

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

### @ai-ecoverse/slicc-scrub 支持 ESM 还是 CommonJS？

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

### @ai-ecoverse/slicc-scrub 需要什么版本的 Node\.js？

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

### @ai-ecoverse/slicc-scrub 可以商用吗？

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

### @ai-ecoverse/slicc-scrub 的下载量有多少？

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

### @ai-ecoverse/slicc-scrub 还在维护吗？

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

