# @caldrix-ai/caldrix 中文文档

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

版本：0\.9\.0
npm 元数据更新时间：2026-11-07T14:41:38.777Z
中文译文更新时间：2026-11-08T23:51:02.599Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：4.7 MB，14 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-10-27T17:02:56.510Z
- 最新版本发布：2026-11-07T14:41:38.626Z
- 近 30 天下载量：2447（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 10 个）

## 中文简介

在浏览器、工人、WebAssembly或WebGPU中运行一个语言模型;在运行时请查看README.

## 安装

```sh
npm install @caldrix-ai/caldrix
```

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

## README

# 卡尔德利克斯.js

在浏览器、工人、WebGPU或WebAssembly运行语言模型。 一个包:引擎的 编译浏览器主机(WebAssembly),驱动它的工人,以及周围输入的API. 在晚上的时候 实值 [`@caldrix-ai/caldrix`](https://www.npmjs.com/package/@caldrix-ai/caldrix)。 。 。 .

本页仅说明 `inferno/WEB-VERIFICATION.md` 记录 caldrix 寄存器,这是私人的,所以你不能打开它, 软件包自己的测试运行在 线人和线人会做什么.

编辑主机在 `host/` 从 `caldrix-web` 立于上面的标记上. 发布工作流程覆盖其构建的承诺的标记; 源检出值 是一个占位符.

## 安装和快速启动

```sh
npm install @caldrix-ai/caldrix
```

```ts
import { Caldrix } from "@caldrix-ai/caldrix";

const engine = await Caldrix.load("smollm2-instruct", {
  onProgress: ({ file, loaded, total }) => console.log(file, loaded, total),
});

for await (const delta of engine.chat([{ role: "user", content: "Say hello." }], { maxTokens: 32 })) {
  if (!delta.done) document.body.append(delta.text);
}

console.log(engine.doctor());
engine.dispose();
```

API,作为包的申报内容:

```ts
class Caldrix {
  static load(model: string, opts?: LoadOptions): Promise<Engine>;
  static check(model: string, opts?: CheckOptions): Promise<CheckResult>;
  static fit(facts: QuantFacts, opts?: FitOptions): Promise<FitResult>;
}
class Engine {
  chat(messages: ChatMessage[], opts?: GenerateOptions): AsyncIterable<Delta>;
  complete(input: string | { ids: number[] }, opts?: GenerateOptions): AsyncIterable<Delta>;
  doctor(): DoctorReport;
  /** Release the worker and everything in it. Every later call throws `request`. */
  dispose(): void;
}
declare function probe(): Promise<Capabilities>;
```

`model` 是这种建造船舶的别名(`doctor().aliases`或一个拥抱面部回波码, `owner/name` 或者说 `owner/name@<revision>`通过Hub的模型API解决回波标识后,再将xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; `doctor().model` 财务报告和审定财务报表 `doctor().revision` 医生说 `(resolved from <id>)` 当被问及的(重名,或不同字母大小写)时,犬形识别符与被问及的有区别. 浏览器的构建不会发出任何信号:一个有门的回波被名字拒绝,一个私人回波读作找不到(Hub在回答缺失回波时回答它),以及caldrix CLI读作 `HF_TOKEN`,负载两者。 重新投放的ID装入一个密集的Llama-family检查站,一个比特散字节nf4检查站(在导入时与计划打字相符:它运行的大小很密集,而不是下载大小; `doctor().note` 两者都说),一个PEFT LoRA适配器 repo(它的基部,取名: `adapter_config.json`,通过Hub的型号API解决一次,适配器在导入时由起角折叠而成的收分数),或者在nf4基上被一个LORA适配器. `doctor().provenance` 卡尔德里克 CLI的 `model:` 线条,同时命名 repos 和 shas; 进度事件名,每个文件都来自 repo 。 被折叠的重量永远不会被缓存:重复的负载不会获取任何新东西并再次折叠. 一个有门的基座,一个适配器比一个适配器,一个只有腌菜的适配器和一个同时搭载一个模型和一个适配器的回波,在任何重量字节之前都会被名字所拒绝.

A 类 `Delta` 实值 `{ text, token?, done, finishReason?: "stop" | "length" | "abort", usage?, logprobs? }`生成 选项是 `temperature`, (中文(简体) ), `topK`, (中文(简体) ), `topP`, (中文(简体) ), `minP`, (中文(简体) ), `repetitionPenalty`, (中文(简体) ), `seed`, (中文(简体) ), `maxTokens` 财务报告和审定财务报表 `constraint` (参见"约束解码"), `logprobs`外加一个 `signal` (单位:千美元) `AbortSignal`) (中文(简体) ). 错误是 `CaldrixError` 带有 `kind` 联 合 国 `probe`, (中文(简体) ), `fit`, (中文(简体) ), `architecture`, (中文(简体) ), `fetch`, (中文(简体) ), `digest`, (中文(简体) ), `validate`, (中文(简体) ), `lowering`, (中文(简体) ), `backend` 或者说 `request`。 。 。 .

前缀再使用: 一代从上下文开始, 在同一引擎上留下的上一代 新的提示以相同的符号开始, 所以只有其余部分被预填(一个附加一个转弯的聊天, 当它从同样的事物开始的时候, 最后一个三角洲 `usage.cachedTokens` 是提示符数 被重用,0,当没有.

`logprobs: n` (整数,最多20;多为 `request` 错误)添加 `logprobs: { token, logprob }[]` 到每个符号的三角洲:最多 `n` 该步骤的候选人(受限制).

## 选项

```ts
interface LoadOptions {
  backend?: "auto" | "webgpu" | "wasm" | "webgl";
  offline?: boolean;
  onProgress?: (p: { file: string; loaded: number; total: number | null; repo: string; revision: string; provenance?: string }) => void;
  hubBaseUrl?: string;
  file?: string;
  dtype?: "f32" | "bf16";
  maxContext?: number;
  storage?: "auto" | "f32";
  signal?: AbortSignal;
  assets?: { worker?: string | URL; hostWasm?: string | URL; fallback?: boolean; cdn?: string | URL };
}
```

-   **`backend`**数字 : `"auto"` (默认) 探测浏览器, 当适配器出现时选择 WebGPU 财务报告和审定财务报表 `requestDevice` 在工人开始前,一个bf16计划将放在网页上. `"webgpu"` 财务报告和审定财务报表 `"wasm"` 强制一层. `"webgl"` 声明并拒绝:后端是 没有建造。 下 `"auto"`,然后拒绝装入 WebGPU(一个更大的明确上下文,一个限制,一个 无法打开的设备)由等离子层服务,以及 `doctor().why` 这么说的 一个被量化的别名 下级 `"auto"` 设置为任何别名:WebGPU先被探测,同种拒绝下降 回到原点.
-   **量化别名**数字 : `smollm2-instruct:q4_K_M` 财务报告和审定财务报表 `smollm2-instruct:q8_0` 是一个GGUF文件. 负载首先读取文件头并请求范围(和) `rope_freqs.weight`作为第二个小范围 范围,然后对照标题验证整个文件 化名在解析前是被钉住的sha256. 两层都有内核(见"什么运行了,在哪里"); 在WebGPU级别上,重量停留在它们的块中 `doctor().storage` 实值 `"blocks"`。 。 。 .
-   **`file`**: 从 repo ID 中加载的 GGUF 文件, 名称取自 repo 的上一级(`"model-Q4_K_M.gguf"`) (中文(简体) ). 背书 列名者无 `config.json` gGUF 文件的顶级是GGUF Repo,不装 `file` 是一个 `request` 命名候选文件的错误( e) :`mmproj*` 文件和已磨损 `-NNNNN-of-NNNNN.gguf` 文件从不 候选人。 该文件是在名单中解决的承诺时取出,并与清单大小对照核对 lFS sha256 (然后是Hub的) `X-Linked-Etag`; 配置、 标识器和聊天模板到来 从文件本身的元数据,以及 a `config.json` 在还原中被忽略。 分量会留在地上 密集 GGUF (英语:`F32`, (中文(简体) ), `F16`, (中文(简体) ), `BF16`)默认为f32计划. `file` 在别名或保险箱上 `request` 错误.
-   **`storage`**:WebGPU级的重量存储. `"auto"` 当 适配器有 `shader-f16`· ; `"f32"` 把它们放在任何适配器上. `storage: "f32"` 以数量表示的别名 满足:没有缩小,重量停留在地块内. `doctor().storage` 报告 (单位:千美元)`"blocks"` 以别名表示, `null` (原始内容存档于2017-10-21). on the oldm. `storage: "f32"` 与 `backend: "wasm"` 被拒绝.
-   **`hubBaseUrl`**: 模型文件的位置,以及用于重现标识的枢纽列表(`/api/models/…`从(默认)中获取 `https://huggingface.co`; 仅服务于文件的镜像会加载别名而不能重取代号. `offline` 只使用浏览器缓存并失败 `fetch` 对于一个它缺少的文件.
-   **`assets`**: 软件包自己的文件来自何处;见下文"Network".
-   **`doctor()`** 报告运行的级别, `device`, (中文(简体) ), `dtype`, (中文(简体) ), `storage`, (中文(简体) ), `adapter`, (中文(简体) ), `maxContext` 财务报告和审定财务报表 `contextClamp`,每个模型文件来自何处,以及是否检查了其摘要, `assets` (单位:千美元) 工人的来源和URL以及 `.wasm`数字 : `bundle`, (中文(简体) ), `cdn` 或者说 `page`, (中文(简体) ), `aliases` (每个别名) 这个积载,每个负载 `format`, (中文(简体) ), `safetensors` 或者说 `gguf`, (中文(简体) ), `provenance` (变质负载) `model:` 线条, `null` 对于一个模型读取其谎言, `note` (nf4 repo的4位音符, `null` (除此以外) `why`。 。 。 .

## 在装入前检查一个模型

```ts
type CheckOptions = Pick<LoadOptions, "backend" | "dtype" | "maxContext" | "storage" | "hubBaseUrl" | "file" | "signal" | "assets">;
type CheckResult = { ok: true; backend: "webgpu" | "wasm" } | { ok: false; kind: Kind; message: string };

const r = await Caldrix.check("smollm2-instruct");
if (r.ok) console.log(`a load would run on ${r.backend}`);
else if (r.kind !== "fetch") console.log(`a load would be refused: ${r.message}`);
```

`Caldrix.check` 说明该模型的哪一级负载将在此标签中结束, 或者为什么负载会结束 拒绝,不装入。 它需要相同的模型 和相同的等级决定选项 与 `load`, (中文(简体) ), 财务报告和审定财务报表 `assets`,所以它开始同一个工人和 `.wasm` 负载将根据同样的倒置规则; 它运行相同的选项检查, 相同的探测器和相同的层次选择。 然后,它的工人管理 仅装入到等级确定为止:对于回波 id 枢机列表(对于LORA适配器回波,其 `adapter_config.json` 以及基地的Hub名单) `config.json` 和保温器索引 (对于一个GGUF文件,一个化名或一个由 `file`,则文件头部范围改为 `rope_freqs.weight`其范围, 最多为 512 字节, 当它超过标题时, 作为第二个范围, 与 `load`,并在 WebGPU 上 打开设备,然后设备被销毁,工人结束。 它从不拿 指示器文件或重量,发送否 `onProgress` 事件,而且从来没有 `offline`。 。 。 .

下 `backend: "auto"` 答案是负载结束的级别 : `load` 返回到( 限制、 更大的明确上下文、 未打开的设备) 答案 `{ ok: true, backend: "wasm" }`,并且一个 bf16 请求的答案是 `load` 放在这 明确 `"webgpu"` 或者说 `"wasm"` 或拒绝.

`check` 从不拒绝。 每一次拒绝都是 `{ ok: false, kind, message }`,带有善意和讯息 `load` 将给出:它拒绝的选项(未知的后端, a) `hubBaseUrl` 这不是绝对的 http(s) URL,一个空模型, `storage: "f32"` 与 `backend: "wasm"`)为 `request`,一个模型过去这一点 选项卡的限制是 `fit`,而无法启动或解答协议的工人是 `backend`。 。 。 . `kind: "fetch"` 表示答案未知: 文件无法获取, 或检查已中止 结束 `signal` (单位:千美元)`checking <model> was aborted`)),所以负载仍然可能成功. CDN倒计时 对于软件包自己的文件,则作为负载(关闭 `assets.fallback: false`),每检查一次警告 操纵台 文件取回的支票被写入缓存中, 稍后的加载会重新使用它们 .

## 从GGUF记录的事实中分离出一个文件

```ts
type FitOptions = Pick<CheckOptions, "backend" | "maxContext" | "signal" | "assets">;
type FitResult = { ok: true; backend: "webgpu" | "wasm"; maxContext: number | null; contextClamp: NonNullable<DoctorReport["contextClamp"]> | null } | { ok: false; kind: Kind; message: string };

// `facts` is a `QuantFacts`: what the nightly records for one GGUF file of a repo.
const r = await Caldrix.fit(facts);
if (r.ok) console.log(`a load would run on ${r.backend} at context ${r.maxContext}`);
else if (r.kind !== "fetch") console.log(`a load would be refused: ${r.message}`);
```

`Caldrix.fit` 表示 GGUF 文件是否在此标签中加载, 在哪个级别和在哪个上下文中, 根据所记录的事实`QuantFacts`: 文件的名称、大小和摘要、其架构和 维度、 元素计数/ 百分位数类型、 基准模型(`base_model`, (中文(简体) ), `general.file_type`,和 收音机表,每个 lamor的命名,类型和阴暗,它获取什么:没有Hub列表,没有范围,也没有文件. 这需要 `check`级别和上下文选项 `assets`,运行相同的选项检查,探测和分级选择, 并且在其工人中,同样预先检查文件运行的负载,文件头被替换为 事实; 在 WebGPU 级别上, 它打开设备并再次摧毁它, 并在 `backend: "auto"` (单位:千美元) WebGPU 拒绝答案为 `check`没错. `{ ok: true }` 持一等之分, `maxContext` (单位:千美元) 上下文将计划负载)和 `contextClamp` (默认上下文时夹线) 被夹住,否则 `null`作为负载 `doctor()` 报告他们.

召人者 `web-quants.json` 仅通过这些密钥: 拒绝未知的密钥作为 `validate`,因此每个条目都有一个页面预测. `fit` 请回答 一级默认重量存储; `FitOptions` 没有 `storage`,所以可以装入稠密文件的页面 与 `storage: "f32"` 获得 `fit`默认存储的答案( 量化文件不受影响) .

变压器类型 `fit` 承认是这个建筑的运行: 任何其它类型的收音机都是 `{ ok: false, kind: "architecture" }`,在信件中的名称和类型。 事实不简单 对象,或超过一个相机序列化后的大小 `request`; 东道主拒绝的事实( an 未知或缺失的密钥, 一个通过 GGUF 阅读器盖的表格) 是 `validate`; 超过此标签的文件 限制是 `fit`,而无法启动或解答协议的工人是 `backend`。 。 。 . `fit` 绝不拒绝; `kind: "fetch"` (终止通过) `signal`, (中文(简体) ), `the fit was aborted`) 答案不详.

事实的承认从来不是负担的保证. `check` 财务报告和审定财务报表 `load` 判断文件在犯罪时的自有标题 上市标,而且事实无法显示文件只持有什么: `rope_freqs.weight`,一个缺失 `attention.layer_norm_rms_epsilon`,或者其字节或元素的变位器 计数与表不一致。 记录下来的是旧案的回传.

## 绑定解码

```ts
interface GenerationOptions {
  // temperature, topK, topP, minP, repetitionPenalty, seed, maxTokens as above
  constraint?: { json: Record<string, unknown> } | { oneOf: string[] };
  logprobs?: number;
}
```

`constraint` 限制模型可能写的东西, 在两层. `{ oneOf: ["yes", "no"] }` 输出精确 其中一个弦和停止. `{ json: <schema> }` 生成与方案匹配的 JSON 值.

-   **可实现的选择.** A 类 `oneOf` 选项只有在是 ASCII 时才能被保证实现.
-   **计划子集.** `type` 实值 `object` (与 `properties`, (中文(简体) ), `required`,以及 `additionalProperties: false`, (中文(简体) ), `array` (单位:千美元)`items`, (中文(简体) ), `string` (单位:千美元)`maxLength`, (中文(简体) ), `number`, (中文(简体) ), `integer`, (中文(简体) ), `boolean` 或者说 `null`· ; `enum` 从事任何类型的工作; `oneOf` 财务报告和审定财务报表 `anyOf` 意思是"任何分支都有可能匹配" 注释关键词 `description`, (中文(简体) ), `title`, (中文(简体) ), `default`, (中文(简体) ), `$schema`, (中文(简体) ), `$comment` 财务报告和审定财务报表 `examples` 被接受和忽略. `$ref` 而其他关键词都因名字而被拒绝,一个没有 `type`, (中文(简体) ), `enum`, (中文(简体) ), `oneOf` 或者说 `anyOf`和不是物体的计谋 `true` 或者说 `false`) (中文(简体) ). 何时 `additionalProperties` 实值 没有,允许任何其他密钥,其值可以是任何 JSON 值;没有 `items` 持有 任何JSON值. `integer` 拒绝 `.` 或名释相. 钥匙和 `enum` 成员有相应的 JSON文本,所以一个密钥的逃出拼写不是那个密钥.
-   **拒绝** (一个不支持的关键字, 一个空的) `oneOf`是一个 `CaldrixError` 类型 `request` 谁的消息开始 `constraint:` 。 。 。 .
-   **词汇** 口罩是每个装入的型号的第一代受限的,所以 要求支付它.
-   **停下来.** JSON值完成后停止. 没有任何东西迫使一个模型完成一个:a 生成结束于 `maxTokens` 与 `finishReason: "length"` 和一个不完整的值.
-   没有语法限制.
-   是什么运行: 包本身的测试,在一个很小的字符-vocabulary测试模型上,它的输出是 噪音,所以他们检查面具(`oneOf`,一个 `enum`,小对象计划,拒绝)而不是质量 任何模型的文本. `oneOf` 也运行在e2e `chromium-webgpu` 项目(CI中的SwiftShader).

## 运行,在哪里

只有这些模型运行被记录(`inferno/WEB-VERIFICATION.md`,条目5、8和9,条目10, 11, 12和14 等分化别名, 适配器和 nf4 repos 的条目 16和 17, Repo 中的 GGUF 文件的条目 22, 和 24 `Caldrix.fit`(无) 其他的则被索赔.

-   **型号 :** SmolLM2-135M- 指令, 1个快取, 8个贪婪的符号; 适配器和 nf4 重置以下 LoRA适配器在上面 和SmolLM2-360M -Instruct的nf4回放, 在他们的固定装置的快取上. 没有其他的模型或快速.
-   **浏览器 :** 由Playwright所驱动的铬,仅无头:无头壳153.0.8010.12 在Linux和上 操作员的 Apple M1 Max , 以及 Mac Playwright 的完整 Chromium (新无头模式, 用户代理) `HeadlessChrome/153.0.0.0`),用于WebGPU级. 没有其它浏览器 .
-   **等深层 :** 计划dtypes,f32和bf16在Linux上和Mac上都有相同的行. 标志 等同参考符号。 f32对数留在每行1e-2捆绑内,最差的为7.796401e-4. Bf16结果仅依赖于象征性的平等;记录了记录,而不是门.
-   **真实适配器上的 WebGPU 级 :** 麦克自己的,卖家 `apple`,结构 `metal-3` (本国) 字符串; `device` 财务报告和审定财务报表 `description` 空的,以 `shader-f16`在f32重量存储器的f32计划, 对同1e-2捆绑的负数,输入最差的6.6792103e-4;在f16重量存储时,诊断 每行限量,最差的5.027985e-4, 产品路径的符号等于 测试员在两种存储表.
-   **SwiftShader 上的 WebGPU 级 :** SwiftShader上的黎明,Google的CPU Vulkan执行,这是一个CPU和 不是一个GPU。 f32计划在f32的重量存储,令牌-精确,对同一约束的对数最差5.874168e-4.
-   **二期出口关了** (条目9),其中记录了运行的两个过程偏差: 浏览器阶段运行在沙盒外,建筑的首次尝试在其安装步骤上失败了.
-   被量化的别名:两层桌上的外浏览器(`inferno/WEB-VERIFICATION.md` 条目10和11);无头铬通过 `Caldrix.load` 在被绑定文件的两层上,WebGPU在 Dawn/SwiftShader上,一个CPU(第12个条目);操作员的Mac通过 `Caldrix.load` 在两层,WebGPU在Mac自己的适配器上,销售商 `apple`,结构 `metal-3`,令牌精确 (条目 14).
-   由 id (SmolLM2-135M-Instruct上的LORA 适配器,和SmolLM2-360M-Instruct的比特和字节nf4 repo,各被固定在 sha上):位于两层的台上下浏览器 (SmolLM2-360M-Instruct's bitsandbytes nf4 repo:`inferno/WEB-VERIFICATION.md` 入项 16: 既对又对 WebGPU 的对 LORA 的对令牌- 精确, f32 的计划在 f32 重存储; WebGPU nf4 的对已停止在熔岩管的存储-缓冲绑定限下; 在无头 Chromium 通过 `Caldrix.load` 由两层的repo id来表示,两对都对表示-精确,f32重量存储时的f32计划,WebGPU on Dawn/SwiftShader,一个CPU(条目17).
-   `Caldrix.check`: 在无头铬与回回路中枢(`inferno/WEB-VERIFICATION.md` 第20个条目:在回转码上,核对和负载商定在分层和下 `--enable-unsafe-webgpu`,在 Dawn/SwiftShader 上的 WebGPU 级别上,一个CPU,并且检查没有获取任何指示器文件,也没有权重;一个索引通过被检查为 `fit`,未知的 repo 编号为 `fetch`。 。 。 .
-   a GGUF 文件, 名称为 repo (`file`: 在无头铬通 `Caldrix.load` 与回路枢纽的微小固定装置相抗衡,在原地层和WebGPU的Dawn/SwiftShader,一个CPU,对测试用具本身的标志的标志性精确度,在选择文件的名称后,一个文摘不匹配被拒绝,因为 `digest`,并用页眉上下文粘贴并报告 `doctor`; 脱浏览器,一个被绳子缩放的量子化模型符号-精确的分层和分层行内核,超过熔岩管上栅格尺寸限制,一个CPU(`inferno/WEB-VERIFICATION.md` 页:1.
-   `Caldrix.fit`: 在无头 Chromium 对抗回路枢纽的微小固定装置中, 在被子层和WebGPU的Dawn/SwiftShader上, 一个 CPU: 该枢纽的 Q8 0 文件及其长文本副本的已承诺事实得到回答 `ok` 与分层,和 `maxContext` 财务报告和审定财务报表 `contextClamp` 报告的文件的负载 `doctor()`,没有向中枢提出要求;用一个拉诺的型号更改为这个建筑的事实缺乏答案 `architecture` 命名它; 关闭浏览器, 从事实来看, 匹配值等于每个微小固定点上从标题上的匹配值( f)`inferno/WEB-VERIFICATION.md` (第24条).
-   **未运行 :** 任何真实的 GGUF 在浏览器中由 id 重播; Llama 3. 2 或任何在浏览器中带有128k 词汇的模型; 一个真实适配器上的 2D-格网发送( WebGPU 列内核仅运行于熔岩管上的网格尺寸限制) ; 浏览器中的 WebGPU 堆积夹; 任何其他 WebGPU 适配器或 GPU; 一个标题浏览器; 沙盒内的浏览器级; 分级 (非 SIMD) 浏览器中的原名拼写; real-Hub 消化行为(运行使用回回回回站站); repo id 的真正 Hub 上市 (回路枢纽服务于被绑定的快照;除Playwright无头的Chrimium外的任何浏览器;任何其他型号; `Caldrix.check` 相对于实际适配器的缓冲限度(仅测试其单位),相对于真实的枢纽,或在任何其他 浏览器或任何其他设备; `Caldrix.fit` 关于事实,夜 记录的真正的回波, 或真正的适配器。 没有记录业绩数字 或声称.

## 默认上下文

在两个级别上,一个默认的上下文,其适合性不能停留在被移动32平方千米的4个GiB上限下的64个MiB下,被夹住在256个适合性的最大倍数上(适合性说明的未计量条件的比值;比值本身尚未测量;明确比值) `maxContext` 在WebGPU上,其中较小部分和网格绑定部分适用(`doctor()` (如上所述)。 高压夹在浏览器中运行,仅运行于被子阶上,在极大头部上下文的微小固定上;在运行只打印出网格夹的WebGPU平面上(`inferno/WEB-VERIFICATION.md` 页:1.

无 `maxContext`中,WebGPU的分级夹住上下文,使注意内核的网格留在内 `maxComputeWorkgroupsPerDimension`在标准65535的每维工作组中,SmolLM2为8192 默认上下文负载为 7282; `doctor()` 报告夹口 `contextClamp` 和数值 `maxContext`一个更大的 `maxContext` 适配器的极限不能被WebGPU所拒绝 `"auto"` 然后在原地上装货.

## 网络

没有遥测。 网络是列入清单的枢纽(`/api/models/<id>`)和您命名的模型的文件,以及 jsdelivr,用于 当捆绑复制失败时, 软件包是自己的资产 .

-   **当倒地起火的时候:** 工人在未准备好前倒下(脚本,一块块) 或主机胶水没有加载,或页面拒绝构造 `.wasm` 回去,进去 工人,如果它的回收失败。 每个资产首先在当地进行试验,然后独立地退回.
-   **它得到的东西:** `https://cdn.jsdelivr.net/npm/@caldrix-ai/caldrix@<installed version>/dist/worker.js` 财务报告和审定财务报表 `.../host/caldrix_web_bg.wasm`在您安装的版本,所以 `.wasm` 与胶水相匹配.
-   **它从来不沉默:** 它在控制台上被警告过一次 `doctor().assets` 报告 每个资产的源和URL.
-   **选择出 :** `assets: { fallback: false }`明确 `assets.worker` 或者说 `assets.hostWasm` 用作 给的,没有退缩 该资产. `assets.cdn` 将倒数指向自己的镜子.
-   **它相信的东西:** 倒背运行 jsdelivr 复制的版本, 并带有您的页面来源( 缩写) 工人可以凭其证书获取您的来源并读取其索引DB和缓存),没有完整性 检查可以导入工人模块,所以一个无法接受该模块的页面 `assets.fallback: false`。 。 。 .
-   **检查过的内容 :** jsdelivr 为已出版软件包的工人、胶水和WebAssembly文件服务 与 npm 柏油球的字节相同, CORS 允许任何来源 。 在第一次发行后, 浏览器倒置后在无头 Chromium 中运行过一次与 jsdelivr 本身对撞, 默认为 `cdn`(单位:千美元) 他的捆绑缺少工人 `.wasm`,每个聊天要完成 与 `doctor()` 命名 jsdelivr URL,并在控制台上发出一个警告。 那是一次性检查 桌面; 承诺的测试点 `assets.cdn` 在回路源中永远不能到达jsdelivr.
-   **内容-安全政策:** 使用后退需要的页面 `worker-src blob:` (a) 交叉来源 工人从同一个模组开始, `script-src` 财务报告和审定财务报表 `connect-src` 为CDN原产地, 财务报告和审定财务报表 `'wasm-unsafe-eval'` 任何网络大会.

## 炸弹

运行时间:Vite 8.3.5和Next.js 16.4.3(图博包装和网络包装) `output: "export"`,一个最小应用程序 每层都有一个小的Llama固定器 从一个回回回接器,在无头铬。 这个 软件包本身的捆绑测试( y)`tests/bundlers/`)将包装的柏油球安装在这些应用程序中并运行在其中 线人 这些应用程序不需要捆绑器配置。 没有其他索赔:其他版本、其他捆绑商 而捆绑器下的WebGPU级尚未运行。 仅生产建造(`vite build`, (中文(简体) ), `next build`(三); `vite dev` 财务报告和审定财务报表 `next dev` 未运行。 注释:

-   每个应用程序都装了未使用的工人副本,大约16千B,以及(下一个)未使用的东道主副本 胶水,约13.5kB. 工人的拷贝来自包裹 `new URL("./worker.js", import.meta.url)` 胶水复制品来自hem-bindgen自己的 `.wasm` 粘胶内部的 URL 字面, 包不能控制 .
-   按套件的设计,不运行:以另一种来源的资产(Vite) `base`下一个 `assetPrefix`(b) 与《京都议定书》 捆绑尝试是跨源的,shim 进口工人的原始副本 `../host/` 不是旁边 它,每个负载 回到jsdelivr。 设定 `assets.worker` 财务报告和审定财务报表 `assets.hostWasm` 相反,服务 `dist/` 财务报告和审定财务报表 `host/` 一起从那个来源.
-   导入软件包的下页是客户端组件 .

## 释放和出处

版本是独立的铸模; 发行版被标记 `caldrix-js-v0.x.y` 标记必须等于 版本在 `package.json`。没有 npm 出处: 源寄存器是私有的, npm 没有 生成私人仓库的出处。 出版由限量发行 手与 2FA:发布工作流程的令牌只能进行一个版本(npm的"舞台上只有"访问),以及 一个有舞台的版本只有在所有者在 npmjs.com 上批准后才会启动 认证。 柏油球没有来源图.

## 许可证

Npm 软件包 `@caldrix-ai/caldrix` (cardrix.js)属于Apache-2.0(英语:`LICENSE`, (中文(简体) ), `NOTICE`) (中文(简体) ). 编译器本身不是开源; 此软件包传送其编译 浏览器主机( r)`host/`依据此许可证。 编入东道主的第三方组成部分仍在 (a) 许可证 `THIRD_PARTY_NOTICES.md`。 。 。 .

## 常见问题

### @caldrix-ai/caldrix 是什么？

在浏览器、工人、WebAssembly或WebGPU中运行一个语言模型;在运行时请查看README\.

### 如何安装 @caldrix-ai/caldrix？

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

### @caldrix-ai/caldrix 支持 TypeScript 吗？

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

### @caldrix-ai/caldrix 支持 ESM 还是 CommonJS？

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

### @caldrix-ai/caldrix 可以商用吗？

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

### @caldrix-ai/caldrix 的下载量有多少？

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

### @caldrix-ai/caldrix 还在维护吗？

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

