---
title: 环境变量
description: 了解 Geistdocs 中使用的环境变量
type: reference
summary: Geistdocs 所需的 AI 聊天、eve 智能体会话 Cookie 签名和生产 URL 配置环境变量。
prerequisites:
  - /docs/getting-started
related:
  - /docs/configuration
  - /docs/deployment
---

Geistdocs 的某些功能需要设置特定的环境变量。

## `AI_GATEWAY_API_KEY`

AI 网关的 API 密钥。用于驱动 AI 聊天功能。

<Callout>部署到 Vercel 时会自动设置此项。</Callout>

## `GEISTDOCS_CHAT_SECRET`

仅在服务器端使用的密钥，用于对把读者浏览器绑定到其 eve 智能体会话的 httpOnly Cookie 进行签名。配置 `ai.eveAgent` 时请设置此项，这样向 AI 提问才能在多轮对话中沿用同一个 eve 会话，并支持会话预热。聊天路由只会访问由能通过该密钥验证的 Cookie 所指向的会话，因此读者无法让聊天路由访问其他读者的 eve 会话，页面脚本也无法读取会话 ID。

密钥长度至少为 32 字节。可以使用以下命令生成：

```bash title="Terminal"
openssl rand -base64 32
```

将其添加到站点 Vercel 项目的 Production 和 Preview 环境变量中，并在本地开发时添加到 `.env.local`。每个文档站点使用单独的密钥。已有的 base64 编码 32 字节密钥（44 个字符）同样可以使用，因为 Geistdocs 会按原样使用该值，并使用自己带版本号的前缀进行签名。轮换密钥会使现有的会话 Cookie 失效，每位读者的下一条消息会创建新的 eve 会话并内联其对话内容。

未设置此变量时，eve 智能体模式会在每一轮对话中创建新的 eve 会话并内联之前的对话内容，拒绝预热请求，并在服务器日志中输出警告。长度不足 32 字节的值会在聊天路由加载时抛出错误。也可以通过 `createChatRoute` 的 `eveAgent.secret` 选项提供密钥。不要为其添加 `NEXT_PUBLIC_` 前缀，也不要将其写入 `geistdocs.tsx`。

## `NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL`

Geistdocs 站点的生产环境 URL。部署到 Vercel 时会自动设置此项。

应采用 `localhost:3000` 的格式（即不带协议前缀）。这是 Vercel 在将项目部署时设置该环境变量的方式。