最新n1n v2.0.1 正式上线!企业级大模型接口聚合平台 (LLM API Gateway),为您接入 500+ AI Models,价格低至 1 折, 立即尝试

使用 MCP 为 Vercel AI SDK 智能体添加持久化内存

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

在使用 Vercel AI SDK 构建自主 AI 代理(Agent)时,开发者面临的最大挑战之一就是大语言模型(LLM)的无状态特性。在默认情况下,每次对话交互都是完全独立的,智能体无法直接跨会话记住用户偏好、历史选择或上下文知识。传统解决方案通常需要手动引入复杂的向量数据库、自定义 Embedding 流水线以及繁琐的提示词拼接工程。

随着 Anthropic 提出 Model Context Protocol (MCP) 这一开放标准,Vercel AI SDK 实现了对 MCP 客户端的原生支持。借助 npm 上即用型的 bluecolumn-mcp 服务,开发者无需安装额外 SDK 或搭建复杂基础设施,仅需 3个步骤即可为任何 Vercel AI SDK 智能体注入长期持久化内存。同时,结合 n1n.ai 提供的极速多模型 API 聚合服务,可以确保智能体在调用 Claude 3.5 Sonnet、OpenAI o3 或 DeepSeek-V3 时获得低延迟且高可靠的基座支持。


什么是 Model Context Protocol (MCP)?

Model Context Protocol (MCP) 是用于标准化大语言模型与外部数据源及工具交互的统一协议。在 MCP 架构下,模型不再需要针对每个数据库编写专属的代码适配器,而是通过标准的工具声明与调用规范来访问外部能力。

Vercel AI SDK 官方提供了 ai/mcp-stdio 和 ai/mcp-http 扩展包。通过集成 bluecolumn-mcp,智能体会自动获取以下三种标准记忆工具:

  1. remember:用于立即存储长期事实、用户偏好与实体属性。
  2. recall:在回答依赖历史上下文的问题前,执行语义向量搜索。
  3. note:记录非结构化的临时对话笔记以供日后索引。

3 步实现持久化内存智能体

下面展示如何在 Next.js App Router 的 API 路由(app/api/chat/route.ts)中完成持久化内存的集成。

第一步:配置环境变量

首先,确保项目安装了 ai 核心包。获取 BlueColumn 内存 API 密钥以及 n1n.ai 的多模型服务密钥,并将其写入 .env.local 文件:

BLUECOLUMN_API_KEY=bc_live_your_api_key_here
N1N_API_KEY=sk-n1n-your-api-key-here

通过 n1n.ai 统一接入 API,开发者可以免去管理多个模型供应商账号的繁琐流程,实现毫秒级响应。

第二步:编写 API 路由处理函数

在 app/api/chat/route.ts 中使用 Experimental_StdioMCPTransport 启动 MCP 客户端。借助 npx 指令,Node.js 运行时会自动拉取并运行 bluecolumn-mcp 镜像,无需手动管理依赖。

import { streamText, experimental_createMCPClient as createMCPClient } from 'ai';
import { Experimental_StdioMCPTransport as StdioMCPTransport } from 'ai/mcp-stdio';
import { createOpenAI } from '@ai-sdk/openai';

// 通过 n1n.ai 高性能网关初始化 OpenAI 兼容客户端
const n1nProvider = createOpenAI({
  baseURL: 'https://api.n1n.ai/v1',
  apiKey: process.env.N1N_API_KEY,
});

export async function POST(req: Request) {
  const { messages } = await req.json();

  // 创建基于 Stdio 传输的 MCP 客户端
  const mcpClient = await createMCPClient({
    transport: new StdioMCPTransport({
      command: 'npx',
      args: ['-y', 'bluecolumn-mcp@latest'],
      env: { 
        BLUECOLUMN_API_KEY: process.env.BLUECOLUMN_API_KEY! 
      },
    }),
  });

  try {
    // 动态获取记忆工具集(remember, recall, note)
    const tools = await mcpClient.tools();

    const result = streamText({
      model: n1nProvider('gpt-4o'),
      system: `你是一个具备长期记忆能力的智能助手。
        - 当发现重要的持久事实时,立即使用 remember 工具进行存储。
        - 在回答需要历史上下文的问题之前,务必先使用 recall 工具搜索过往记忆。
        - 确保记忆条目准确无冗余。`,
      messages,
      tools,
    });

    return result.toDataStreamResponse();
  } finally {
    // 确保请求完成后及时关闭进程客户端
    await mcpClient.close();
  }
}

第三步:系统提示词优化与引用溯源

为了保证模型能正确触发内存工具,必须在系统提示词(System Prompt)中明确说明逻辑约束。

当智能体调用 recall 时,系统将返回包含语义相关度得分及原始出处的数据结构。前端界面可以直接将这些引用来源展示给终端用户,从而实现记忆溯源与可验证性。

// recall 工具返回的 JSON 结构示例
\{
  "query": "用户偏好的编程语言