@ai-ecoverse/slicc-scrub

中文文档
1.1.0发布于 2026/10/23MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 1万

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

中文使用文档
文档目录7 节
  1. API 密码
  2. 表格
  3. 匹配
  4. 流线
  5. 向量
  6. 开发
  7. 释放

斯库克

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

  • 零运行时间依赖, 没有DOM和Node API,没有 eval 没有生成代码 。 它以浏览器框架,工人,节点和内核的形式运行.
  • 决定: 相同的值和输入总是给予同样的输出.
  • 一套向量, vectors.json每个消费者都会反对它.
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?) → Scrubbersecrets 实值 { 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,在下方和上方
percentencodeURIComponent(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。 。 。 .

开发

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、左上角和翻新配置来自 分页共享网络。 。 。 .

释放

.github/workflows/ci.yml 唯一的工作流程: 塑料-共享网络管道,与该版本相同 @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 共发布 5 个版本,首次发布于 2026/10/13;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.0latest2026/10/2315 天前
1.0.12026/10/2315 天前
1.0.02026/10/1325 天前
0.0.02026/10/1325 天前
0.0.0-stage2026/10/1325 天前

关于 @ai-ecoverse/slicc-scrub 的常见问题

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