@caldrix-ai/aerix

中文文档
0.1.7发布于 2026/11/07Apache-2.0TypeScriptES Module零依赖近 30 天下载 2048

Aerix在caldrix.js引擎上的转回回路,在浏览器中.

中文使用文档
文档目录7 节
  1. 安装
  2. 示例
  3. API 密码
  4. 转弯合同
  5. 未构建
  6. 运行中
  7. 许可证

aerix.js (英语)

Aerix在浏览器中的转回回路:一个具有工具、钩子和命名限制的代理,运行在 caldrix.js发动机. 在晚上,这是 @caldrix-ai/aerix。 。 。 .

aerix.js 本身没有负载. 你把一个模型装入 Caldrix.js 并手拿它 Engine 改为: Agent。 。 。 . 循环要求引擎一次一个转动,运行转动调用的工具,并输入结果 返回到模型的答案达到最终或极限.

安装

npm install @caldrix-ai/caldrix @caldrix-ai/aerix

@caldrix-ai/caldrix 属于对等关系( e)^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 || ^0.8.0 || ^0.9.0读取模型的卡德利克斯 chat_template.jinja) (中文(简体) ).

示例

import { Caldrix } from "@caldrix-ai/caldrix";
import { Agent, tool } from "@caldrix-ai/aerix";

const engine = await Caldrix.load("smollm2-instruct");

const weather = tool({
  name: "weather",
  description: "Today's forecast for a city.",
  input: {
    city: { type: "string", description: "City name", required: true },
    unit: { type: "string", enum: ["c", "f"] },
  },
  run: async ({ city, unit }) => `Sunny in ${city}, 21°${unit ?? "c"}`,
});

const agent = new Agent({
  model: engine,
  instructions: "You are a travel helper. Use the tools to answer.",
  tools: [weather],
  limits: { turns: 8, retries: 2, maxTokens: 384, resultChars: 4000 },
  generation: { temperature: 0 },
  hooks: { beforeCall: (call) => (call.tool === "weather" ? undefined : { deny: "not allowed" }) },
});

const controller = new AbortController();
for await (const ev of agent.run("Should I pack an umbrella for Lisbon?", { signal: controller.signal })) {
  if (ev.type === "final") console.log(ev.text);
}
const { text } = await agent.ask("And for Porto?"); // the same conversation
console.log(text);
agent.reset();

API 密码

软件包导出 Agent, (中文(简体) ), tool 财务报告和审定财务报表 AerixError类型 AgentOptions, (中文(简体) ), Limits, (中文(简体) ), Hooks, (中文(简体) ), AgentEvent, (中文(简体) ), Call, (中文(简体) ), EndReason, (中文(简体) ), Model, (中文(简体) ), Tool, (中文(简体) ), ToolDef, (中文(简体) ), Field 财务报告和审定财务报表 FieldType。 。 。 .

Model 实值 { chat(messages, opts?): AsyncIterable<Delta> } 超过Caldrix.js的类型。 一个caldrix.js Engine 满足它.

tool(def) 定义工具 :

  • name 匹配 ^[a-z][a-z0-9_]{0,63}$ 在代理中是独一无二的(如果 代理已建).
  • description 是模型看到的文本.
  • input 是平地地图。 每个字段都有 type (单位:千美元)string, (中文(简体) ), number, (中文(简体) ), integer 或者说 boolean(中文(简体) ) 和可选 description, (中文(简体) ), required 财务报告和审定财务报表 enum。空地图表示没有输入.
  • run(input, { signal, callId }) 返回一个字符串,或经过的值 JSON.stringify。 。 。 . 输入在字段中检查 run; 检查失败或丢出成为结果 error: …,工具错误不会结束运行.

new Agent(options) 带 AgentOptions数字 :

  • model (必须), instructions (默认) "", (中文(简体) ), tools (默认无;那么唯一的答案是: (a a final) (中文(简体) ).
  • limits,每个名称绑定: turns (8个,每跑几代,包括复试), retries (2个), 在转弯或转弯后的额外尝试), maxTokens (512,每代)和 resultChars 4000, (中文(简体) ), 将一个工具结果切入此段并加注).
  • generation: caldrix.js's (英语) GenerationOptions 无 maxTokens 财务报告和审定财务报表 constraint,哪个aerix.js 设定.
  • constrain (默认) true:把转弯的计策当作 constraint 和每个世代的人。 设定 false (单位:千美元) Model 而不限制解码;然后只适用剖析和重写.
  • hooks,每个可选和等待: beforeCall(call) 可能返回 { deny: reason } (结果) 变成 refused: <reason>)或(或) { input } (取代电话输入); afterCall(call, result) 可能返回 { result }· ; onFinal(text) 可能返回 { continue: text },使代理人 以该文本作为用户信息在 turns。 。 。 .

agent.run(prompt, { signal }) 产量 AgentEvent继续经纪人的谈话:

  • { type: "text", text }:原始流出型号文本.
  • { type: "usage", promptTokens, completionTokens }:每代一个.
  • { type: "turn", turn, thought?, calls },然后每个呼叫 { type: "call", id, tool, input } 财务报告和审定财务报表 { type: "result", id, tool, text, error }。 。 。 .
  • { type: "retry", turn, reason }:再次要求剪接或坏转.
  • 只有一个结局: { type: "final", text, thought? },或 { type: "end", reason, message? } 地点 reason 实值 "turns", (中文(简体) ), "retries", (中文(简体) ), "abort" 或者说 "error" (引擎故障或投掷) 钩子,带有它的信息). 引擎故障就是这个事件,从不扔.

agent.ask(prompt, { signal }) 运行到结尾并解析 { text, events } 最终;任何 其他结尾拒绝 AerixError 类型 end,携带 reason 财务报告和审定财务报表 events。 。 。 . agent.reset() 忘记了谈话. agent.messages 这是迄今为止的对话.

一次跑一次:第二次同时跑 run 掷出 AerixError 类型 busy选项 类型 options。 。 。 .

转弯合同

每个转弯都是一个JSON物体 {"calls":[{"tool":"…","input":{…}}]} 或者说 {"final":"…"},带有 选项 thought。系统消息说明这一合同并列出工具;这是相同的 和Aerix一样的工具渲染.

每个转弯都是受限制的(除非 constrain: false:发动机在从 工具,所以一个回合 结束自己是一个有效的回合 与已知的工具 和右输入 形状,但有一个例外:空 calls 列表通过制约,解析拒绝 并重试。 转来转去 maxTokens 在JSON关闭之前,再次请求,缩短,作为一个 重试。 最多一个回合的8个电话被保留,a thought 被切入到 600 个字符中,然后呼叫 命令,一次一个.

每个转弯的提示是系统消息加上每一个更早的转弯和结果. 发动机保持什么 上一代处理过,所以一个转动只附加到对话中预填新部分; 完成三角洲 usage.cachedTokens 说有多少被重新使用.

未构建

  • 路由选择的分数( 浏览器引擎返回) logprobs这里没有读到它们.
  • 子代理和一个验证器,收缩和上下文工具,会话保存在索引数据库中.

运行中

  • 单位用脚本假的测试 Model:转弯解析,系统渲染和转弯 schema (golden),被钉入Aerix的倒转合同,输入检查,每个钩子,每个端口和每个限制.
  • 在Playwright的无头铬层进行一个端到端测试:a Agent 一个工具 在已建成的 caldrix.js 上,从回转服务器装入一个输出为噪声的微小测试模型. 它检查引擎是否接收了每代人的转动计划 每次重试都遵循 切转,运行结束 一个命名的结果.

没有其他说法:没有真正的模型,没有其他浏览器或水平,也没有质量或速度数字.

许可证

aerix.js (npm 软件包) @caldrix-ai/aerix) 位于Apache- 2. 0 下 (LICENSE, (中文(简体) ), NOTICE) (中文(简体) ).

版本与发布记录

@caldrix-ai/aerix 共发布 9 个版本,首次发布于 2026/10/30;过去 12 个月发布了 9 个版本。

版本发布日期距今
0.1.7latest2026/11/071 天前
0.1.62026/11/072 天前
0.1.52026/11/062 天前
0.1.42026/11/062 天前
0.1.32026/11/054 天前
0.1.22026/11/044 天前

关于 @caldrix-ai/aerix 的常见问题

@caldrix-ai/aerix 是什么?

Aerix在caldrix.js引擎上的转回回路,在浏览器中.

如何安装 @caldrix-ai/aerix?

在项目目录运行 npm install @caldrix-ai/aerix,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@caldrix-ai/caldrix(^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 || ^0.8.0 || ^0.9.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@caldrix-ai/aerix 支持 TypeScript 吗?

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

@caldrix-ai/aerix 支持 ESM 还是 CommonJS?

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

@caldrix-ai/aerix 可以商用吗?

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

@caldrix-ai/aerix 的下载量有多少?

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

@caldrix-ai/aerix 还在维护吗?

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