@anvia/core

中文文档
1.18.0发布于 2026/11/06MITTypeScriptES Module构建来源已验证近 30 天下载 4618

核心运行时间原始人 了解背景的安维亚特工.

中文使用文档
文档目录6 节
  1. 安装
  2. 快速启动
  3. 问用户一个问题
  4. 你能建造的东西
  5. 学多点
  6. 流动消费

@ anvia/ 核心

构建提供者-独立 AI 代理和工作流程,并配有被键入的工具,流出,结构化输出, 和应用程序的内存。 核心运行模型/工具循环,而您的应用程序选择提供者, 证书、存储和交货.

安装

pnpm add @anvia/core @anvia/openai zod

这个例子使用OpenAI. 其他提供者适配器则与同为Core API.

快速启动

设定 OPENAI_API_KEY 在服务器环境中,然后创建带有输入工具的代理 :

import { Agent, createTool } from "@anvia/core";
import { OpenAIClient } from "@anvia/openai";
import { z } from "zod";

const apiKey = process.env.OPENAI_API_KEY;
if (!apiKey) throw new Error("Set OPENAI_API_KEY.");
const client = new OpenAIClient({ apiKey });
const lookupOrder = createTool({
  name: "lookup_order",
  description: "Look up an order by ID.",
  inputSchema: z.object({ orderId: z.string() }),
  execute: async ({ orderId }) => ({ orderId, status: "processing" }),
});

const agent = new Agent({
  id: "support",
  model: client.completionModel({ modelId: "gpt-5", api: "responses" }),
  instructions: "Help customers with order questions.",
  tools: [lookupOrder],
  maxTurns: 4,
});

const result = await agent.generate({ prompt: "What is happening with order A123?" });
if (result.type === "response") console.log(result.output);

将样本工具机构替换为应用程序的数据访问。 代理结果区分a 反应,一个护栏块,以及需要应用程序输入的相互作用.

问用户一个问题

添加 createQuestionTool() 给经纪人的 tools 允许它索取缺失的信息:

import {
  createQuestionTool,
  DEFAULT_QUESTION_TOOL_NAME,
  DEFAULT_QUESTION_TOOL_DESCRIPTION,
} from "@anvia/core/tool";

const askUser = createQuestionTool(); // name: "ask_user", with built-in model instructions
const clarify = createQuestionTool({ name: "clarify" }); // either option can be overridden

默认也导出自 @anvia/core。描述指导模型只要求 当它无法进行时, 批出问题, 并使用合理的默认 常规选择. 提供自定义名称和说明。 省略一个选项时适用默认; 保留清晰的字符串,包括空白,以便与现有的呼叫者兼容. 新工具调用接受1–4个问题,并配有独特的,无空白的ID和无空白的文本. 任择选择 必须包含2–4个有非空白标签和唯一非空白值的条目。 数值被修剪 在验证之前。 设定 allowCustom: true 在选择之外允许答案,或者省略选择 为免费文本。 一个没有选择的问题不能设置 allowCustom: false。 。 。 . 蛇案的ID,问号, 和相互排斥的选择是示范指导, 而不是额外的计划限制.

运行返回 a type: "interaction" 成果 tool-question 请求和续作. 收集每个问题的非空白答复,然后继续 { type: "tool-question", answers: [{ questionId, value }] }。该模型收到 { answers: [...] } 作为工具的结果。 直接调用提问工具不会触发UI; 您的应用程序使交互和提供答案.

存储的交互请求和续作保留其现有的解析规则; 新数组 限制仅适用于新工具输入。 见 互动指南 恢复协议.

你能建造的东西

  • 具有打字工具、批准、问题、护栏和流出答复的代理人.
  • 代理团队 单独交谈 授权 协调取消.
  • 直接完成和有计划验证的提取,没有代理环.
  • 类型决定 用于分类、标记、打分和路由.
  • 具有内置或定制度量衡的连续或平行管道和评价.
  • 使用内存适配器和明确的收缩政策进行状态性对话,包括活性工具循环.
  • RAG 带有文件块、嵌入和向量存储合同.
  • 图像生成,语音,转录,MCP工具,以及本地代理技能.

使用 @anvia/client, (中文(简体) ), @anvia/server,以及 @anvia/react 为应用程序 UI 提供代理输出. 为您选择的基础设施使用提供者、内存、矢量存储和可观察性适配器.

InMemoryVectorStore.inspect() 在 安全整数范围; 省略光标从零开始。 丢出无效光标 VectorInspectCursorError页:1 RangeError编辑 @anvia/core/vector-store 子路径也导出 parseVectorInspectCursor() 财务报告和审定财务报表 VectorInspectCursorError.isCursorError() 用于审定和 处理错误 。 见 检查指南。 。 。 .

流出补全保存仅由最终提供者提供的空或加密推理 反应,包括Azure反应流。 最终加密的细节也可以丰富匹配 在之后的回合中重放的串流推理。 文本、推理和工具调用仍有冲突 失败提供者输出验证 .

对于可收回的执行,请在实验中登记一个支持的代理 @anvia/durable 运行时间。 内部执行协议 4 增加了同步方向检查点边界 持续排队的用户输入并持续重放 。 将核心升级,使之持久. 持久工具可选稳定 ToolCallContext.operationId 外在的专有能力。 直接执行不能提供. 持久的登记可选择与 stream: true; 核心执行 程序版4的检查站与工具结果一起验证了流程完成情况.

学多点

流动消费

一个 AgentStream 有一个消费者。 阅读 stream.result 或者说 stream.text 附表 如果事件迭代尚未开始, 则自动排入下一个微任务 。 当你 需要事件和最后结果,先排列然后读 result 循环后 :

const stream = agent.stream({ prompt: "Hello" });
for await (const event of stream) {
  if (event.type === "text_delta") process.stdout.write(event.delta);
}
const outcome = await stream.result;

HTTP 适配器的消费从稍后开始,无需读取即可通过溪流 其最后承诺; 记录最终结果事件并同时转发事件.

版本与发布记录

@anvia/core 共发布 113 个版本,首次发布于 2026/05/03;过去 12 个月发布了 113 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.18.0latest2026/11/061 天前
1.17.32026/10/2910 天前
1.17.22026/10/2711 天前
1.17.12026/10/2018 天前
1.17.02026/10/1919 天前
1.16.02026/10/1622 天前

其他发布通道:preview → 0.11.1-preview.20260628T094557.2ab9488,rc → 1.0.0-rc.11。

关于 @anvia/core 的常见问题

@anvia/core 是什么?

核心运行时间原始人 了解背景的安维亚特工.

如何安装 @anvia/core?

在项目目录运行 npm install @anvia/core,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4.6.7)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@anvia/core 支持 TypeScript 吗?

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

@anvia/core 支持 ESM 还是 CommonJS?

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

@anvia/core 可以商用吗?

@anvia/core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@anvia/core 的下载量有多少?

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

@anvia/core 还在维护吗?

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