@anvia/server

中文文档
1.4.0发布于 2026/11/06MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 1976

Anvia的服务器端客户端协议和通用事件流响应.

中文使用文档
文档目录5 节
  1. 安装
  2. 快速启动
  3. 能力
  4. 学多点
  5. 持久执行路线

@anvia/ 服务器

服务安维亚完成和特工运行过HTTP。 这些框架中立的应对帮助者转向 将事件同步到流中 Response anvia客户端的对象,有JSONL,SSE,并重放支持.

安装

pnpm add @anvia/server @anvia/client @anvia/core @anvia/openai

快速启动使用 OpenAI; 在需要时选择另一个提供者适配器 .

快速启动

设定 OPENAI_API_KEY 在您的服务器上挂载此处理器, 在接受 Web 的框架内挂载 Request 财务报告和审定财务报表 Response 对象 :

import { completionToClientStream, parseClientStreamRequest } from "@anvia/client";
import { streamCompletion } from "@anvia/core";
import { OpenAIClient } from "@anvia/openai";
import { createClientStreamResponse } from "@anvia/server";

const apiKey = process.env.OPENAI_API_KEY;
if (!apiKey) throw new Error("Set OPENAI_API_KEY.");
const model = new OpenAIClient({ apiKey }).completionModel({
  modelId: "gpt-5",
  api: "responses",
});

export async function POST(request: Request): Promise<Response> {
  const body = parseClientStreamRequest(await request.json());
  if (body.type !== "messages") {
    return new Response("This endpoint accepts messages only.", { status: 400 });
  }
  const events = completionToClientStream({
    events: streamCompletion({ model, messages: body.messages, abortSignal: request.signal }),
  });
  return createClientStreamResponse({ events });
}

连接 createHttpClientTransport 从 @anvia/client,或与 @anvia/react 钩子. 添加 format: "sse" 的响应选项,而不是默认的 JSONL.

能力

  • 用协议头设定客户端响应并命令事件ID.
  • 由您提供的一个商店支持的可续生的溪流,以及一个供本地使用的内存商店. createMemoryResumableStreamStore({ closedStreamTtlMs, maxClosedStreams }) 默认为 将封闭的溪流保留了10分钟,可达1000道封闭的溪流.
  • 单独的通用事件响应,用于应用程序定义的协议.
  • 下层JSONL和SSE流帮助.

您的应用程序拥有路由、 认证、 请求错误处理和持久存储 .

需要恢复两个响应助手 after 作为非负安全整数; 省略值 默认为零。 无效值返回带有错误代码的 HTTP 400 JSON invalid_resumable_after。 。 。 . 下级 resumeStreamEvents() 掷出 InvalidResumableAfterError 在放弃之前.

学多点

持久执行路线

可选 @anvia/server/durable 进口 createDurableHandler 页:1 @anvia/durable 运行时间。 它提供呈文,会话范围运行列表,快照, SSE事件带有持续的ID,排队引导,批准响应,重试,取消和对账. POST /durable/runs/:id/steer 接受 { input: { prompt } } 或者说 { input: { messages } }, (中文(简体) ), 加上可选 requestId,并用 HTTP 202 返回持续收据。 这需要 授权行动 steer 和匹配的持久释放(在支持的对等区域内0.8或更新). 一个 authorize(request, resource) 所有读取和写作都需要回调 。 东道主 拥有运行时间启动( n)resume)和关闭(close) (中文(简体) ). 客户端断开分离观察器 . 需要提交任务 @anvia/durable 0.6或较新的,每项授权均有效 代理ID,包括目标默认和保存绑定. 旧运行时间返回 HTTP 503 任务 提交; 现有的运行路径仍然可用。 当代理访问被拒绝时,没有创建任何工作, 并更改了授权时的绑定值返回 HTTP 409 供呼叫者重试 . 客户端无法发送 trace选项 trace(request, resource) 回调设置观察者追踪 上下文,例如授权运行和任务提交的用户ID。 这需要 @anvia/durable 0.11或较新.

安装 @anvia/durable 当使用此子路径时 。 见 耐用 HTTP 指南。 。 。 .

常规 SseStreamOptions 也支持 eventId(event) 本地SSE 身份证和 onCancel() 以中断正在读取的生产者,然后返回其执行者.

下的持久图表路线 /durable/graphs 暴露呈报、分层发现、地貌 快照,任务SSE事件,和取消. 全图业务授权每一项任务; 由儿童经营的个别路线授权与图的自有会话相对应。 见 任务图表指南。 。 。 .

版本与发布记录

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

版本发布日期距今
1.4.0latest2026/11/061 天前
1.3.62026/11/043 天前
1.3.52026/10/2018 天前
1.3.42026/10/1325 天前
1.3.32026/10/1325 天前
1.3.22026/10/1127 天前

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

关于 @anvia/server 的常见问题

@anvia/server 是什么?

Anvia的服务器端客户端协议和通用事件流响应.

如何安装 @anvia/server?

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

@anvia/server 支持 TypeScript 吗?

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

@anvia/server 支持 ESM 还是 CommonJS?

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

@anvia/server 可以商用吗?

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

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

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

@anvia/server 还在维护吗?

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