@assistant-ui/vite

中文文档
0.0.21发布于 2026/10/09MITTypeScriptES Module构建来源已验证近 30 天下载 7.4万

Vite plugin for assistant-ui: the "use generative" directive compiler that colocates a tool's schema, server-only execute, and client-only render in one file. Works with Vite apps and TanStack Start.

原始使用文档
文档目录3 节
  1. Usage
  2. How it works
  3. Authoring

@assistant-ui/vite

Vite plugin for assistant-ui's "use generative" directive — a single file that colocates a tool's schema, its server-only execute, and its client-only render. Works with plain Vite apps and TanStack Start.

Usage

// vite.config.ts
import { defineConfig } from "vite";
import { aui } from "@assistant-ui/vite";
import { tanstackStart } from "@tanstack/react-start/plugin/vite";
import viteReact from "@vitejs/plugin-react";

export default defineConfig({
  plugins: [aui(), tanstackStart(), viteReact()],
});

aui() sets enforce: "pre", so it runs before @vitejs/plugin-react lowers JSX — placement in the plugins array doesn't matter.

How it works

Vite builds your app once per environment. The plugin's transform branches on this.environment.config.consumer:

  • client environment → client build: keeps render and any "use client" frontend execute, drops backend execute.
  • server environments (TanStack Start's ssr, where the chat route and server functions live) → server build: keeps the backend execute, drops render.

No facade or redirect is needed (unlike the Next.js/Turbopack loader) — the Environment API gives the plugin a reliable per-build signal directly.

Unlike the Next.js integration, the server build does not inject import "server-only": that guard relies on the react-server export condition, which a TanStack Start ssr build doesn't set. The split is already structural — the client build never contains the execute body.

Authoring

Import the markers from @assistant-ui/react:

"use generative";
import { defineToolkit, humanTool } from "@assistant-ui/react";
import { z } from "zod";

export default defineToolkit({
  get_weather: {
    parameters: z.object({ city: z.string() }),
    execute: async ({ city }) => fetchWeather(city), // server-only
    render: ({ result }) => <Weather {...result} />, // client-only
  },
});

Register the compiled toolkit with Tools({ toolkit }) on the client and your server tool runner on the server — both import the same file.

版本与发布记录

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

版本发布日期距今
0.0.21latest2026/10/0929 天前
0.0.202026/10/061 个月前
0.0.192026/09/241 个月前
0.0.182026/09/181 个月前
0.0.172026/09/111 个月前
0.0.162026/09/032 个月前

关于 @assistant-ui/vite 的常见问题

@assistant-ui/vite 是什么?

Vite plugin for assistant-ui: the "use generative" directive compiler that colocates a tool's schema, server-only execute, and client-only render in one file. Works with Vite apps and TanStack Start.

如何安装 @assistant-ui/vite?

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

@assistant-ui/vite 支持 TypeScript 吗?

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

@assistant-ui/vite 支持 ESM 还是 CommonJS?

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

@assistant-ui/vite 可以商用吗?

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

@assistant-ui/vite 的下载量有多少?

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

@assistant-ui/vite 还在维护吗?

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