# @dcl-regenesislabs/wearable-validator 中文文档

规范地址：https://npmcn.com/package/%40dcl-regenesislabs/wearable-validator/

版本：0\.7\.0
npm 元数据更新时间：2026-11-09T19:57:18.288Z
中文译文更新时间：2026-11-11T20:39:41.180Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40dcl-regenesislabs/wearable-validator
原文对照：https://npmcn.com/package/%40dcl-regenesislabs/wearable-validator/?lang=original
项目主页：https://github.com/decentraland/wearable-validator/tree/main/packages/wearable-validator#readme
源码仓库：https://github.com/decentraland/wearable-validator

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

- 包体积（解压后）：438 kB，159 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.19
- 运行依赖：11 个
- peer 依赖：@earendil-works/pi-ai 0\.84\.1
- 首次发布：2026-09-25T00:10:50.261Z
- 最新版本发布：2026-11-09T19:57:17.917Z
- 近 30 天下载量：3590（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：24（近 12 个月 24 个）

## 中文简介

Decractorand可穿戴并模出规则书作为代码——每个可单独运行的检查,在节点和浏览器中.

## 安装

```sh
npm install @dcl-regenesislabs/wearable-validator
```

也可以使用：`pnpm add @dcl-regenesislabs/wearable-validator`、`yarn add @dcl-regenesislabs/wearable-validator`、`bun add @dcl-regenesislabs/wearable-validator`

## README

# @dcl-regenerationlabs/可穿戴-验证器

德克萨斯州可以穿戴,可以引用规则书作为代码. 递给它一个构建者拉链,一个 `.glb` 或一个已公布的项目,它会同时返回每个问题:什么是错的,在哪里,测量值相对于极限,以及如何修复.

-   **36次密码检查** (文件,模型,emote,内容)在任何地方运行:浏览器或节点.
-   **4次视觉检查** 让克洛德来判断 它们只在节点服务器上运行(一个本土的Unity渲染服务器).
-   **1个代码审查** (单位:千美元)`smart-wearable-code`组合 `code`)让克洛德读出一个智能可穿戴的场景并捆绑成文本,从不运行它:它说出代码是做什么的,而恶意或垃圾邮件代码则会使项目失败. 它只需要一个 `/ai` 审者.

```sh
npm i @dcl-regenesislabs/wearable-validator
```

## 在浏览器中:密码检查

与任何捆绑器一起工作,需要节点多填充.

```ts
import { validate, fixes } from "@dcl-regenesislabs/wearable-validator";

const bytes = new Uint8Array(await file.arrayBuffer()); // a Builder .zip or a bare .glb
const result = await validate(bytes);

result.passed; // a full run: false on any error, true when everything was checked and passed, null when a check was skipped; a bare .glb or a subset: always null
for (const finding of result.findings) {
  console.log(finding.severity, finding.message, finding.where, finding.measured, finding.limit);
  console.log("How to fix:", fixes[finding.check], finding.docs);
}
```

一个出版的作品同样用同样的方式:

```ts
import { validate, fetchCatalystItem, parseItemReference } from "@dcl-regenesislabs/wearable-validator";

// a marketplace or shop item URL, or a urn:decentraland:… reference
const item = await fetchCatalystItem(parseItemReference("https://decentraland.org/marketplace/contracts/0x…/items/0")!);
const result = await validate({ files: item.files, metadata: item.metadata, content: item.content });
```

## 在节点服务器上:代码和视觉(AI)检查

视觉检查需要三件事 在包旁边:

1.  **同行**,准确的钉住: `npm i @earendil-works/pi-ai@0.84.1`
2.  **本地渲染服务器** (a Linux x86 64) (中文(简体) ). 通过Mesa和Xvfb来取用CPU的Unity播放器,由sha256检查的放出资产:
    
    ```sh
    curl -fsSL https://github.com/dcl-regenesislabs/wearable-validator/releases/download/render-server-1/render-server.tar.gz -o render-server.tar.gz
    echo "99f4927a1f044ec3995f59b5610dc97ffaf8d1c4bbb68031fca25f2a4eb4ae76  render-server.tar.gz" | sha256sum -c -
    mkdir render-server && tar -xzf render-server.tar.gz -C render-server
    ```
    
    这需要 `libgl1 libglx-mesa0 libgl1-mesa-dri xvfb`。存储器的根 `Dockerfile` 是一个工作图像, 在笔记本电脑上 `packages/job/render-server-docker.sh` 运行在多克.
3.  **克劳德设置的标志** (单位:千美元)`claude setup-token`, (中文(简体) ), `sk-ant-oat…`,约一年有效)。 API 密钥被拒绝 .

```ts
import { validate } from "@dcl-regenesislabs/wearable-validator";
import { createNativeRenderer } from "@dcl-regenesislabs/wearable-validator/native";
import { createPiReviewer, setupTokenCredentials } from "@dcl-regenesislabs/wearable-validator/ai";

// one long-running render server per process, reused across items
const renderer = await createNativeRenderer({ command: "./render-server/Builds/RenderServer/entrypoint.sh", build: "render-server-1" });
const reviewer = createPiReviewer({ credentials: setupTokenCredentials(process.env.ANTHROPIC_OAUTH_SETUP_TOKEN!) });

const result = await validate(zipBytes, {
  groups: ["files", "model", "emote", "content", "rendering"], // "rendering" adds the visual checks
  services: { renderer, reviewer }
});

await renderer.stop(); // on shutdown
```

-   **费用:** 一切都在CPU上,没有GPU。 每件物品最多都会发出两个模型呼叫.
-   **重运行 :** 传过去 `result.captures` 恢复为 `captures` 而只有缺失的视角再次出现.
-   **安全失败 :** 视觉发现是警告 缺少证据、被拒绝或答复不当或没有 `reviewer` 永远不会通过;行变为 `skipped` 或者说 `errored` 与缘由. 每个视觉行携带 `review` (模型,即时版本,符号用法).

## 选项

| 选项 | 它会做什么 |
| --- | --- |
| `checks` | 只按名称运行这些检查( N)`"triangle-count"`; 规则 id 如 `"M-01"` 工作也一样。 判决变成 `null`。 。 。 . |
| `groups` | `files`, (中文(简体) ), `model`, (中文(简体) ), `emote`, (中文(简体) ), `content` (默认的集合), `rendering` 财务报告和审定财务报表 `code`。 。 。 . |
| `category`, (中文(简体) ), `itemType` | 赤裸裸的提示 `.glb`,没有元数据. |
| `onProgress` | 每次检查开始和结束时都会打电话,以进行现场UI. |
| `signal` | 一个 `AbortSignal` 取消运行. |
| `captures`, (中文(简体) ), `services` | 上面的视觉检查. |

## 结果

-   `passed`数字 : `false` 当任何检查发现错误时, 即使其他行是 `skipped` 或者说 `errored`· ; `true` 当每次检查都运行但没有发现出错时; `null` 没有失败,但没有检查所有东西(这行是 `skipped` 或者说 `errored`页:1 `skipReason` 说为什么). 一个赤裸的 `.glb` 或检查的子集总是 `null`,错误与否.
-   `summary`数字 : `{ errors, warnings, checked, skipped }`。 。 。 .
-   `checks[]`: 每检查一行, 使用 `status` (单位:千美元)`passed`, (中文(简体) ), `failed`, (中文(简体) ), `warning`, (中文(简体) ), `skipped` 或者说 `errored`, (中文(简体) ), `measured` 财务报告和审定财务报表 `skipReason`。一个 `errored` 与 `retryable: true` 可能通过再次运行该检查来回答(它的模型调用失败或超时,或者无法读取答案);没有它,再次运行会以同样的方式结束(一个没有定论的答案,没有模型,请求超过预算).
-   `findings[]`数字 : `check`, (中文(简体) ), `severity`, (中文(简体) ), `message` (为创作者撰写), `where`, (中文(简体) ), `measured`, (中文(简体) ), `limit`, (中文(简体) ), `rule`, (中文(简体) ), `docs`。 。 。 .

查询 :

-   `checks` 财务报告和审定财务报表 `registry` 描述每个检查 : `explanation`, (中文(简体) ), `fix`, (中文(简体) ), `details`, (中文(简体) ), `docs`。 。 。 .
-   `fixes[name]` 保持每张支票的固定步骤.
-   `manifest` 拥有每个限制, 及其 `version` 是规则版本.

## 国 际

```sh
npx @dcl-regenesislabs/wearable-validator validate item.zip [--checks triangle-count] [--groups model] [--json]
```

## 敌对投入

每条输入路径在解码前都会被绑定:zip的输入计数和膨胀大小,PNG和JPEG等像素,以及GLB的存取器和图像解锁到什么处. 超过约束的文件会发现错误, 永远不会崩溃 。 要读取显示或预览的拉链,请使用 `unpackZip(bytes)`: 它应用相同的界限并返回 `{ files, emptyFiles }`。 。 。 .

## 版本数

每次图书馆更改合并为 `main` 发布关于 `next` 标记 (`npm i @dcl-regenesislabs/wearable-validator@next`) (中文(简体) ). GitHub 发布时加了 semver 版本标签 `latest`; 用规则版本标记它 (`manifest.version`) (中文(简体) ). 再来点 [仓库](https://github.com/decentraland/wearable-validator)数字 : [视觉评论如何运作](https://github.com/decentraland/wearable-validator/blob/main/docs/visual-validation.md) 财务报告和审定财务报表 [添加检查](https://github.com/decentraland/wearable-validator/blob/main/docs/adding-a-check.md)。 。 。 .

## 许可证

[阿帕奇 - 2.0](https://npmcn.com/package/%40dcl-regenesislabs/wearable-validator/LICENSE)

## 常见问题

### @dcl-regenesislabs/wearable-validator 是什么？

Decractorand可穿戴并模出规则书作为代码——每个可单独运行的检查,在节点和浏览器中\.

### 如何安装 @dcl-regenesislabs/wearable-validator？

在项目目录运行 npm install @dcl-regenesislabs/wearable-validator，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 wearable-validator，可以用 npx wearable-validator 直接运行。

### @dcl-regenesislabs/wearable-validator 支持 TypeScript 吗？

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

### @dcl-regenesislabs/wearable-validator 支持 ESM 还是 CommonJS？

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

### @dcl-regenesislabs/wearable-validator 需要什么版本的 Node\.js？

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

### @dcl-regenesislabs/wearable-validator 可以商用吗？

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

### @dcl-regenesislabs/wearable-validator 的下载量有多少？

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

### @dcl-regenesislabs/wearable-validator 还在维护吗？

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

