Communitygithub.com

Agentuity 框架集成

在 Next.js、Nuxt、SvelteKit、Astro、Hono、React Router、Vite + React 和 TanStack Start 等框架应用中添加 Agentuity 代码时,指导正确的路由、页面、服务器函数、配置或服务客户端文件放置位置。

Agentuity 框架集成 是什么?

Agentuity Framework Placement 技能是一个全面的指南,帮助开发者在各种主流 Web 框架中正确集成 Agentuity SDK。它清晰定义了在 Next.js、Nuxt、SvelteKit、Astro、Hono、React Router、Vite + React 和 TanStack Start 等框架中,路由、页面、服务器函数和配置文件应放置的具体位置,从而避免因文件结构错误导致的集成问题。该技能特别强调“仅限服务器端”规则,明确禁止在浏览器端代码中暴露 SDK 密钥或使用服务客户端,并提供了通过服务器路由间接调用的最佳实践。此外,它还推广了“薄路由、共享函数”的架构模式,鼓励将 AI 或业务逻辑提取为独立函数,以提升代码的可测试性和跨框架可移植性。对于 Hono 框架,还提供了通过中间件访问客户端的可选方案。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/agentuity/sdk/tree/HEAD/skills/agentuity-frameworks

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Agentuity 框架集成 是做什么的?

Agentuity 与你使用的框架的正常文件布局兼容。将路由、页面、服务器函数和配置放在框架期望的位置。仅在服务器端代码中添加 Agentuity 客户端。

create 支持的框架

agentuity create 可以为以下框架搭建脚手架:

框架API 路由位置应用 UI 位置开发脚本所有者
Next.jssrc/app/api/<name>/route.tssrc/app/page.tsxNext.js
Nuxtserver/api/<name>.get.ts 或 .post.tsapp/app.vueNuxt
SvelteKitsrc/routes/<path>/+server.tssrc/routes/+page.svelteVite/SvelteKit
Astrosrc/pages/api/<name>.tssrc/pages/index.astroAstro
Honosrc/index.ts 路由处理器src/landing.tsx(当使用脚手架时)Hono 服务器脚本

使用框架的路由处理器验证请求,然后调用共享函数执行实际工作。

现有应用集成

对于已有的应用,安装 CLI 并导入项目,无需更改应用结构:

npm install -D @agentuity/cli
agentuity project import --name existing-app --confirm

实用的路由位置:

框架服务器路由形态
React Routerapp/routes/api.agentuity.ts,并在 app/routes.ts 中注册
TanStack Startsrc/routes/api.agentuity.tsx,包含服务器处理器
Vite + React一个服务器边界文件,例如 server.ts;浏览器代码调用该服务器
Express 或其他路由器现有的路由模块;在服务器端导入 Agentuity 客户端

仅限服务器端规则

不要将 Agentuity SDK 密钥暴露给浏览器打包产物。服务客户端应位于路由、服务器操作、工作线程、脚本或其他仅限服务器端的模块中。

import { KeyValueClient } from '@agentuity/keyvalue';

const kv = new KeyValueClient();

export async function GET(): Promise<Response> {
  const result = await kv.get<{ checkedAt: string }>('health', 'latest');
  return Response.json({ ok: true, exists: result.exists });
}

浏览器组件应调用你的服务器路由:

const response = await fetch('/api/agentuity-health');
const status = await response.json();

薄路由,共享函数

对于 AI 功能、后台工作和服务调用,推荐这种拆分方式:

// lib/triage.ts
export async function triageMessage(message: string): Promise<{ priority: string }> {
  return { priority: message.includes('urgent') ? 'high' : 'normal' };
}
// 框架路由文件
import { triageMessage } from '@/lib/triage';

export async function POST(request: Request): Promise<Response> {
  const body = (await request.json()) as { message?: string };
  if (!body.message) {
    return Response.json({ error: 'message is required' }, { status: 400 });
  }

  const result = await triageMessage(body.message);
  return Response.json(result);
}

这可以使特定于路由的代码保持精简,并让核心函数能够在不同框架、测试、队列、调度任务和脚本之间复用。

Hono 中间件选项

在 Hono 应用中,当可移植性重要时,默认使用直接客户端。当你希望通过 Hono 上下文访问客户端以提升可读性时,可以使用 @agentuity/hono:

import { Hono } from 'hono';
import { agentuity } from '@agentuity/hono';
import type { Services } from '@agentuity/hono';

const app = new Hono<{ Variables: Pick<Services, 'kv'> }>();

app.use('*', agentuity());

app.get('/api/preferences/:userId', async (c) => {
  const result = await c.var.kv.get('preferences', c.req.param('userId'));
  return c.json({ exists: result.exists });
});

AI 网关、数据库、对象存储、Webhook 和 Coder 均使用直接客户端。

常见错误

错误更好的做法
在浏览器组件中使用服务客户端调用拥有该客户端的服务器路由
添加违反框架约定的新文件夹使用框架的路由/页面位置
在每条路由中重复 AI 或服务逻辑将共享工作放入普通函数并导入它
假设每个框架都使用相同的 API 路由路径在编辑前检查路由表
将 SDK 密钥放在公共环境变量前缀中将 AGENTUITY_SDK_KEY 保持在服务器端

实用文档

相关技能