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

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

版本：1\.20\.3
npm 元数据更新时间：2026-11-05T06:20:17.826Z
中文译文更新时间：2026-11-05T18:56:52.416Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：1.3 MB，30 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24
- 运行依赖：0 个
- 首次发布：2026-10-11T22:45:40.692Z
- 最新版本发布：2026-11-05T06:20:17.448Z
- 近 30 天下载量：51692（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：89（近 12 个月 89 个）

## 中文简介

SLICC的共享浏览器目录, JSON 计划与发现符合性

## 安装

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

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

## README

# 扫描器

SLICC工具共享的浏览器知识. SLICC在Chrome DevTools协议(CDP)上驱动一个真正的Chromium浏览器,几个程序用不同语言写成,需要就同样的事实达成一致:

-   哪些浏览器存在,安装在何处,以及如何为SLICC推出;
-   如何找到一个已经使用调试端口运行的浏览器,以及选择哪个;
-   源代码浏览器控制 **永远** 触摸,从7个自己的来源和金库开始;
-   如何证明一个CDP的警卫真的让客户远离他们.

这些程序不能共享代码,因此它们共享数据:1个目录,4个测试向量和他们的JSON schemas,作为Go模块,一出Rust箱子和npm包在同一版本发布.

| 谁 | 用它来 |
| --- | --- |
| [斯莱克-克利](https://github.com/ai-ecoverse/slicc-cli) (开始) | `slicc browsers`, (中文(简体) ), `slicc launch`及其CDP继电器的后卫 |
| [切片- cdp](https://github.com/ai-ecoverse/slicc-cdp) (又请按: `wasm32-wasip1`(中文(简体) ) | `playwright-cli list` 财务报告和审定财务报表 `open`和它的守护 |
| [塑料剂](https://github.com/ai-ecoverse/slicc-agent) | 拒绝其浏览器工具中受保护的出处 |
| [生化剂](https://github.com/ai-ecoverse/slicc-bios), (中文(简体) ), [扩展](https://github.com/ai-ecoverse/slicc-extension) | 他们的CDP卫士,对卫兵矢量进行测试 |

## 里面的东西

| 文件 | 这是什么 |
| --- | --- |
| [`catalog.json`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/catalog.json) | 每个已知的Chromium浏览器和 Electron app,每个OS安装路径,发现和排名规则,七个发射旗和预告,配置位置和被保护的起源 |
| [`corpus/`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/corpus), (中文(简体) ), `corpus.json` | 发现相符合的情况:每个都有一台假机器,并附有它必须制作的排序浏览器列表 |
| [`protected.json`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/protected.json), (中文(简体) ), [`protected.mjs`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/protected.mjs) | 保护源测试向量,以及 JavaScript 中的参考匹配器 |
| [`guard-vectors.json`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/guard-vectors.json) | 每个守卫都必须通过 |
| [`debugger-stage1.json`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/debugger-stage1.json) | 共享第一阶段调试器符合性数据 |
| [`guard-runner.mjs`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/guard-runner.mjs), (中文(简体) ), [`guard-driver.mjs`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/guard-driver.mjs), (中文(简体) ), [`fixture-server.mjs`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/fixture-server.mjs) | 守护向量、其助手和测试服务器的参考跑取器 |
| [`schema/`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/schema) | JSON Schema(2020-12年),用于上面的每个文件,以及 `--json` 产出 `slicc browsers` 财务报告和审定财务报表 `playwright-cli list` |

## 安装

### 走开

```sh
go get github.com/ai-ecoverse/slicc-browsers
```

```go
import sliccbrowsers "github.com/ai-ecoverse/slicc-browsers"

c := sliccbrowsers.Default()
chrome, ok := c.Browser("chrome")
rank := c.Priority("chrome")
```

文件是嵌入的,因此运行时没有从磁盘读取.

-   `Default()` 分析一次嵌入式目录,如果它不能,就会惊慌失措,CI排除了这一点; `Load()` 返回错误,然后 `Parse(b)` 读取另一个副本.
-   `Corpus()`, (中文(简体) ), `Protected()`, (中文(简体) ), `Guard()` 财务报告和审定财务报表 `DebuggerStage1()` 返回向量为已键入的结构.
-   `CatalogJSON()`, (中文(简体) ), `CorpusJSON()`, (中文(简体) ), `ProtectedJSON()`, (中文(简体) ), `GuardVectorsJSON()`, (中文(简体) ), `DebuggerStage1JSON()` 编辑 `…SchemaJSON()` 函数返回原始文件.

### 锈

```toml
[dependencies]
slicc-browsers = { version = "1", features = ["serde"] }

[dev-dependencies]
slicc-browsers = { version = "1", features = ["corpus"] }
```

| 特性 | 添加 |
| --- | --- |
| 无 | `CATALOG` 和计谋 `&str` 常数,没有依赖性 |
| `serde` | 类型 `Catalog`, (中文(简体) ), `catalog()`, (中文(简体) ), `Catalog::browser` 财务报告和审定财务报表 `Catalog::priority` |
| `corpus` | 向量( e)`CORPUS`, (中文(简体) ), `PROTECTED`, (中文(简体) ), `GUARD_VECTORS`, (中文(简体) ), `DEBUGGER_STAGE1`)和模块 `corpus`, (中文(简体) ), `protected`, (中文(简体) ), `guard` 财务报告和审定财务报表 `debugger_stage1`,用于测试 |

每个功能都用于 `wasm32-wasip1`保留 `corpus` 内 `[dev-dependencies]` 所以它不会释放 建造.

### 无

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

```js
import catalog from '@ai-ecoverse/slicc-browsers' with { type: 'json' };
import { protectedOrigins } from '@ai-ecoverse/slicc-browsers/protected.mjs';
```

| 导出 | 这是什么 |
| --- | --- |
| `.`, (中文(简体) ), `./catalog.json`, (中文(简体) ), `./corpus.json`, (中文(简体) ), `./protected.json`, (中文(简体) ), `./guard-vectors.json`, (中文(简体) ), `./debugger-stage1.json` | 数据 |
| `./schema/<name>.schema.json` | 计划 |
| `./protected.mjs` | 保护原生匹配者 |
| `./seven.mjs` | `isSevenLabel(seven, label)`: 是否为 `sliccy.ai` 主机标签可以是七个实例 |
| `./guard-runner`, (中文(简体) ), `./guard-driver.mjs` | 守护向量跑者及其助手 |
| `./fixture`, (中文(简体) ), `./fixture-client` | 测试服务器(仅节点)和远程服务器的客户端 |

除了别的事 `./fixture` 在浏览器和节点中运行. `protected.mjs` 财务报告和审定财务报表 `seven.mjs` 输入什么,所以扩展名或服务员可以自行运送文件.

## 目录

`catalog.json` 保存程序需要了解的所有浏览器:

-   **浏览器.** Chrome, Edge, Brave, Opera, Vivaldi, Arc, Atlas, Dia 及其释放前通道, Chrome for Testing and Chromium, **按优先顺序排列**。每个都有它的macOS捆绑,Windows安装了根和注册密钥,Linux 二进制, `.desktop` ids,平板电脑和 snap names, 及其默认的用户数据 dir.
-   **电子软件**:被捆绑的id所已知的应用程序,以及阻断远程调试的应用程序.
-   **排名**:有7个制表符的端点先来后去其他运行的端点,再安装Chrome,其他已安装的Chrome浏览器,Electron Apps,以及SLICC 6的配置图后去. 不包括比Chrimium 116更年长的浏览器.
-   **发现**数字 : `DevToolsActivePort` 文件、要探测的端口、进程扫描、以及端点如何命名、正常化和合并.
-   **七号**: 哪个 `sliccy.ai` 主机为7个实例,开关、被禁用特性和配置预示了7个需求的发射.
-   **简介和平台**: SLICC 保存其浏览器配置,每个OS的配置 Dirs和注册密钥.
-   **受保护的起源**: 见 [下级](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/#readme-protected-origins)。 。 。 .

目录是 `"schema": 1`。小释放只添加字段;修改或去除一个字段需要方案2和主要释放。 slicc-cli 不保留自己的浏览器表格:添加或更改浏览器,更改 `catalog.json`,释放,并打破依赖.

## 发现

一个程序列出它可以从四个来源附带的浏览器: `DevToolsActivePort` 已知用户数据 dirs 和 SLICC 配置文件中的文件, `--cdp` URL,一个端口9222至9229的探针,以及过程列表. 它对端点进行排序,添加它可以发射的已安装浏览器,并打印列表形状为: [`schema/browsers.schema.json`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/schema/browsers.schema.json)。 。 。 . [sLEC-CLI的读取器](https://github.com/ai-ecoverse/slicc-cli#slicc-browsers---json---cdp-url---no-bundle-scan) 描述该输出。 七"的分页只按出处报告,从没有路径,查询或标题.

### 进程源

进程扫描找到其它开始的浏览器 `--remote-debugging-port`它写着: `ps` 关于 Unix 和 `Get-CimInstance Win32_Process` 在 Windows 上,跳过诸如 `node`, (中文(简体) ), `npx` 或外壳,并取出端口和 `--user-data-dir` 从命令行,即使路径有空格。 有了0号端口,它就能读出端口 `DevToolsActivePort`。准确的解析规则在 `catalog.json`是因为 `discovery.process` {\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1}和尸体保护官们 {\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1} `process-*` 案例。 测试总是伪造过程列表.

### SLICC 6 简介

SLICC 6,上一代,发射Chrome在它自己的外形上(`browser-coding-agent-chrome` 6's profile root,或 `SLICC_USER_DATA_DIR`) (中文(简体) ). 发现者列出这样的终点,标记它 `six: true` 并排为后,但 **从不自己挑**只有明确的请求,例如: `slicc --profile six`,使用它。 每个操作系统都有根 `catalog.json`是因为 `profiles.six`。 。 。 .

## 炸弹

每个案件 `corpus/<case>/` 是假机器 家目录, `DevToolsActivePort` 文件, 伪造 `/json/version` 财务报告和审定财务报表 `/json/list` 答案,一个假进程列表, `--cdp` URL和已安装的浏览器. `expected.json` 持有它必须制作的排名列表. `case.json`是因为 `needs` 说一个程序必须支持什么来管理案件(`process`, (中文(简体) ), `probe`, (中文(简体) ), `six`, (中文(简体) ), `tabs`),一个程序跳过无法运行的案例.

对于每个案例,一个测试装置:

1.  将案件档案写入临时住所;
2.  指该家庭的发现和案件的环境;
3.  输入假进程列表,并引导每个 HTTP 请求和 TCP 拨打假程序;
4.  比较结果与 `expected.json`。 。 。 .

两所图书馆都为此提供了帮助:

```go
cases, _ := sliccbrowsers.Corpus()
for _, c := range cases {
    if !c.Runs(runtime.GOOS, sliccbrowsers.NeedFlag, sliccbrowsers.NeedProcess) {
        continue
    }
    l := sliccbrowsers.Layout{OS: runtime.GOOS, Home: t.TempDir(), Getenv: func(k string) string { return c.Input.Env[k] }}
    // write c.Files(l); fake c.PSOutput(l, os.Getpid()); use c.Transport() and c.DialContext;
    // compare with c.ExpectedJSON(l)
}
```

```rust
use slicc_browsers::corpus::{corpus, Layout, NEED_PROCESS, NEED_PROFILES};

let cat = slicc_browsers::catalog();
for case in corpus().cases {
    if !case.runs(os, &[NEED_PROFILES, NEED_PROCESS]) {
        continue;
    }
    let env = |k: &str| case.input.env.get(k).cloned();
    let layout = Layout { os, home, env: &env, catalog: &cat };
    // write case.files(&layout); fake case.ps_output(…); answer with case.http_get(…);
    // compare with case.expected(&layout)
}
```

斯莱克 -克利的 `test/integration/corpus_test.go` 是一个完整的绳子。 机体从不使用9222到9229等端口,其中开发商自己的克罗姆可能正在监听.

## 受保护的起源

浏览器控制决不能导航、打开、附加或读取以下的饼干或存储:

-   **七和金库**: 每一个 `sliccy.ai` 在任何端口和计划上的主机,以及 `vault.sliccy.ai` 名称;
-   **浏览器自己的特权页面**数字 : `chrome://` 而其他Chromium浏览器的等同, `devtools://`, (中文(简体) ), `chrome-extension://` (密码管理器和钱包所在的地方), `file://`还有克罗姆自己的UI目标 新的标签页是一个例外;
-   **一个程序的额外七个来源**比如slicc -cli的书 `--origin`。 。 。 .

URL被判断为浏览器如何剖析它们,所以 `blob:`, (中文(简体) ), `view-source:` 财务报告和审定财务报表 `about:` 化名,回鞭,编码的点和全宽字母不能偷偷地通过. 在浏览器装入时, 守护者无法将 URL 计数为受保护 。 打开的标签保存了 7 的出处 `about:blank`。拒绝的呼叫失败 `slicc: refused: target is on seven's origin`。 。 。 .

普通页面内的浏览器扩展框架,如密码管理器的自动填充列表,并不能使标签受到保护. 相框本身无法达到:无法被附加或读取,其URL从未出现在目标发现,页面读取,快照,可访问树或评价结果中. 标签的自有页面仍然可以被读取并被快照. 屏幕截图和输入只允许在隐藏每个扩展框时进行(没有布局框或 `visibility: hidden`),而没有人通过嵌入的文件或阴影根来保持焦点;一个被显示的截图被丢弃. 不透明与位置不计为隐藏. 接受在能见度或焦点检查和CDP回复之间的比赛. 在标签中显示任何扩展框时,拒绝全页抓取并开始屏幕播放。 如果一个屏幕显示器在扩展框出现时已经运行, 守护者会停止它, 或每隔一段时间就会下降 `Page.screencastFrame` 直至框架消失 `Page.startScreencast` 在干净的标签上也可以。 这些拒绝指定了扩展框架,而不是7个. 从程序自己的扩展框,以及任何其他被保护的帧,仍然使整个分页被保护. `protectedOrigins.extensionFrames` 列出计划、方法和拒绝,以及 `protected.mjs` 提议 `extensionFrame(url)`。 。 。 .

`catalog.json`是因为 `protectedOrigins` 持有规则,和 `protected.json` 矢量:URL、目标、饼干域和存储键,每个键都有预期的答案. `protected.mjs` 是参考执行:

```js
import catalog from '@ai-ecoverse/slicc-browsers' with { type: 'json' };
import { protectedOrigins } from '@ai-ecoverse/slicc-browsers/protected.mjs';

const guard = protectedOrigins(catalog.protectedOrigins, ['http://127.0.0.1:5710']);
guard.url('https://seven.sliccy.ai/');
guard.cookieDomain('.sliccy.ai');
guard.target({ url: 'about:blank', opener: 'protected' });
```

还提供 `storageKey(key)` 财务报告和审定财务报表 `unparseable(text)`GO 或 Rust 执行需要一个WhatWG URL解析器,而不是 `net/url`,而且必须通过每个矢量 `protected.json`。 。 。 .

## 守护向量

守护者在代理浏览器工具等CDP客户端和浏览器之间坐相,使客户端远离被保护的出处. `guard-vectors.json` 对这个承诺进行一百多起攻击,每个警卫必须全部通过。 它们包括导航、重定向链、弹出和帧、请求截取、饼干和存储访问、特权页面、错误页面、外国扩展世界、调试器和仪表技巧,以及会话覆盖会漏入受保护页面.

每个向量运行两次. 这个 **控制** 运行它与普通的起源, 它必须在那里工作。 这个 **守卫** 这条腿贯穿着保护目标,必须拒绝或没有任何效果。 A 类 **活 动** 证明被保护的目标真的在那里 一行只有在三个都通过的时候才能通过,所以一个后卫不能通过打破一切,一个测试也不能通过永远不能到达目标.

当一个向量比较普通和被保护的固定标记时,这些标记并不相互包含. 被保护标记检查仍然检查完整的探测回复,包括出错,以及矢量的客户端事件和消息,包括被编码的值.

警卫可以拒绝每个客户端的导航 `about:` 继承来源的 URL, 例如 `about:blank`。拒绝离开受保护页面的普通导航仍然失败.

客户端-出厂控制使用无人看守的观察者;持续的能力拒绝是有效证据,获得的仪器出厂后必须不留任何效果,缺失的答案仍然不完整.

移交审计保留早期快照作为证据。 完整的最后分类账取代了不完整的早期快照,但任何审计中报告的任何转发都仍然是一个失败。 不完整的最后审计仍缺乏证据.

### 运行他们

参赛者与任何能讲CDP的警卫合作:

```js
import set from '@ai-ecoverse/slicc-browsers/guard-vectors.json' with { type: 'json' };
import { run } from '@ai-ecoverse/slicc-browsers/guard-runner';
import { fixtureServer } from '@ai-ecoverse/slicc-browsers/fixture';

const fixture = await fixtureServer();
const execution = await run(set, {
  clientFactory: (row) => connectGuardAndObserver(row),
  targets: originsFor(fixture),
  capabilities: { autoAttach: true, browserSession: true, browserContexts: true, discovery: true },
  parallel: 4,
  fixture,
});
console.log(execution.summary({ guard: 'my-guard', sha: process.env.GITHUB_SHA }).line);
await fixture.close();
```

您提供 :

-   **被监视的客户** 每行:你的警卫的CPD连接,与 `send(method, params, sessionId)`, (中文(简体) ), `waitEvent(predicate, ms)` 还有一个 `events` 阵列;
-   **无人看守的观察员**:直接连接同一浏览器的CDP,运行控制并检查活性;
-   **来源**:固定服务器可达7个,金库和一个普通站点. 用 Chrome 标出受保护的主机名 `--host-resolver-rules`因此,没有任何试验 接触真正的7;
-   **能力**:你的运输能力。 需要你未声明的一行被跳过 `not-supported:<capability>`。 。 。 .

| 能力 | 表示运输可以 |
| --- | --- |
| `autoAttach` | 自动附着到弹出和iframe等儿童目标 |
| `browserSession` | 将命令发送到浏览器会话, 不仅发送到页面 |
| `browserContexts` | 创建孤立的浏览器背景 |
| `discovery` | 报告没有会话的目标创建和更改 |
| `chromeUrlsAttach` | 附 录 `chrome://` 页面(DevTools端口的CDP; `chrome.debugger` 无法) |
| `extensionWorld` | 在测试页面上主机为外国扩展的内容脚本 |
| `extensionFrame` | 运行带宽, 其框架为普通测试页 |
| `clientExit` | 在一行中间关闭守护客户端 |
| `siteIsolationOff`, (中文(简体) ), `inboundDelay`, (中文(简体) ), `forwardAudit` | 在不与网站隔离的情况下运行, 将浏览器的信息保存到守护者手中, 并审计守护者发送的信息 |

`forwardAudit` 允许观察员在客户端历史超时后仅使用终端恢复 `historyTrigger: { id: "history-trigger", complete: true, forwarded: false }` 证明来自 `audit({ historyTrigger: command, probes: [], final: false })`,保持探测器分类账的开通;缺失的证明,转发或迟到的答覆均不视为拒绝.

### 读取结果

每行报告 `control`, (中文(简体) ), `guarded` 财务报告和审定财务报表 `live` 作为 `pass`, (中文(简体) ), `fail`, (中文(简体) ), `skip`, (中文(简体) ), `incomplete` (测试无法收集自己的证据)或 `not-run` (仅以文字描述的医生). `summary()` 将行变为一行:

```text
GUARD-PASS my-guard@1a2b3c4 (vectors @ai-ecoverse/slicc-browsers@1.18.5)
```

跑道只有在每行都经过而且没有漏掉时才会通过。 跑者永远不会给出一个原因的跳跃,比如编造能力,被报告为伪造,跳出和不完整行被计算在行上,因此行不能过度描述测试过的内容.

要知道什么是矢量检查, 读在 `guard-vectors.json`: 每一个都列出其步骤,每个观察的 `means`页:1 `live` 情况及其预期结果. [`schema/guard-vectors.schema.json`](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/schema/guard-vectors.schema.json) 定义格式.

## 发展

你需要去1.26, 罗斯稳定与 `wasm32-wasip1` 目标,节点 24 或以后,以及用于浏览器测试的 Chrome 或 Chromium : 它们使用 `CHROME_PATH`,或用于测试的色调 `npx slicc-cdp install-browser` 安装,并运行它无头,除非 `CI` 设定( e)`SLICC_HEADLESS=1` 或者说 `0` (原始内容存档于2017-03-25). overse.

| 命令 | 它会做什么 |
| --- | --- |
| `npm run corpus` | 重建 `corpus.json` 从 `corpus/` |
| `npm run validate` | 检查每个文件 与它的计划 和规则 一个计划不能表达,运行 `protected.json` 结束 `protected.mjs` |
| `npm run lint` | Biome, 斑块花纹规则, `gofmt`, (中文(简体) ), `go vet` linux, macOS 和 Windows, golangci-lint, 用于 Linux, macOS 和 Windows, 用于 Golangci-lint , 用于 Linux , 用于 Golangci-lint , `cargo fmt`缩写和一个 `wasm32-wasip1` 检查每个特性 |
| `npm test` | 每个文件在 `test/integration/`:验证,节点,去和鲁斯特测试,以及参照跑者对真正的Chrimium,没有警卫,每个控制都必须通过,每个保护必须失败 |
| `npm run build` | gO模块,箱子(也用于 `wasm32-wasip1`),和 npm 软件包 |

新的发现行为得到一个尸体箱, 新的警卫行为得到一个警卫矢量.

## CI和释放

CI为 [塑料-共享网络管道](https://github.com/ai-ecoverse/slicc-shared-web#pipeline),从 `.github/workflows/ci.yml`。拉动请求被擦出,然后 `npm test` 然后是克劳德和Codex评论;合并队列运行了林特和再次测试。 测试只在Linux上进行.

每次合并到 `main` 这说明它通过语义发布 在同一工作流程中,作为一个版本,所有三个软件包。 这个 `vX.Y.Z` 标签是 Go 发布, npm 通过可信赖的出版获得来源的软件包 。 礛 `ci.yml` 发布板条箱到板条箱.io, 并发布可信, 并询问 Go 模块代理和 pkg.go.dev 的新标签 。 被推动的标签从不被移动或删除:一个糟糕的发布被下一张固定.

## 许可证

[阿帕奇 - 2.0](https://npmcn.com/package/%40ai-ecoverse/slicc-browsers/LICENSE)

## 常见问题

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

SLICC的共享浏览器目录, JSON 计划与发现符合性

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

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

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

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/ai-ecoverse\_\_slicc-browsers 是否存在。

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

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

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

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

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

@ai-ecoverse/slicc-browsers 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

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

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

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

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

