@dcl-regenerationlabs/可穿戴-验证器
德克萨斯州可以穿戴,可以引用规则书作为代码. 递给它一个构建者拉链,一个 .glb 或一个已公布的项目,它会同时返回每个问题:什么是错的,在哪里,测量值相对于极限,以及如何修复.
- 36次密码检查 (文件,模型,emote,内容)在任何地方运行:浏览器或节点.
- 4次视觉检查 让克洛德来判断 它们只在节点服务器上运行(一个本土的Unity渲染服务器).
- 1个代码审查 (单位:千美元)
smart-wearable-code组合code)让克洛德读出一个智能可穿戴的场景并捆绑成文本,从不运行它:它说出代码是做什么的,而恶意或垃圾邮件代码则会使项目失败. 它只需要一个/ai审者.
npm i @dcl-regenesislabs/wearable-validator
在浏览器中:密码检查
与任何捆绑器一起工作,需要节点多填充.
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);
}
一个出版的作品同样用同样的方式:
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)检查
视觉检查需要三件事 在包旁边:
- 同行,准确的钉住:
npm i @earendil-works/[email protected] - 本地渲染服务器 (a Linux x86 64) (中文(简体) ). 通过Mesa和Xvfb来取用CPU的Unity播放器,由sha256检查的放出资产:
这需要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-serverlibgl1 libglx-mesa0 libgl1-mesa-dri xvfb。存储器的根Dockerfile是一个工作图像, 在笔记本电脑上packages/job/render-server-docker.sh运行在多克. - 克劳德设置的标志 (单位:千美元)
claude setup-token, (中文(简体) ),sk-ant-oat…,约一年有效)。 API 密钥被拒绝 .
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页:1skipReason说为什么). 一个赤裸的.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是规则版本.
国 际
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) (中文(简体) ). 再来点 仓库数字 : 视觉评论如何运作 财务报告和审定财务报表 添加检查。 。 。 .