---
sidebar_label: 离线版（企业内网）
title: AI Short 离线部署 | 企业内网无需外部服务器
description: AI Short 离线版专为无法访问外网的企业和团队设计。无需后端服务器，无需注册账户，数据存储在浏览器本地，开箱即用。
---

# 离线部署版

> **目标读者**：负责部署的 IT 管理员或技术负责人。普通用户访问管理员部署好的内网地址即可，不需要看本文。

**适用场景**：企业内网、政务网络、保密环境、校园网等**无法或不便访问外网**的环境。

无后端、无需注册——所有数据存在浏览器本地。部署后内网团队打开浏览器即可使用。

## 团队使用方式

离线版是纯静态网站。部署到内网服务器后，成员用浏览器访问内网地址即可使用：

1. **管理员**将离线版部署到内网服务器（如 `http://192.168.1.100:3000`）
2. **团队成员**用浏览器打开该地址，即可浏览、搜索、复制提示词
3. 每个人的**收藏和自建提示词保存在自己的浏览器**中，互不影响
4. 无需注册账户，无需安装任何软件，打开即用

```
内网服务器（部署离线版）
   ├── 提示词库数据（所有人共享，来自静态 JSON）
   │
   ├── 用户 A 的浏览器 → localStorage（A 的收藏和自建提示词）
   ├── 用户 B 的浏览器 → localStorage（B 的收藏和自建提示词）
   └── 用户 C 的浏览器 → localStorage（C 的收藏和自建提示词）
```

:::tip 提示
提示词库（精选提示词）是构建时打包的静态数据，所有用户看到的内容一致。每个用户的收藏、自建提示词、排序和标签保存在各自浏览器的 localStorage，彼此独立。
:::

## 与在线版的区别

| 功能 | 在线版 | 离线版 |
| ---- | ------ | ------ |
| 提示词浏览/搜索/筛选 | ✅ | ✅ |
| 提示词复制 | ✅ | ✅ |
| 收藏管理 | 服务器存储 | 浏览器本地存储 |
| 自定义提示词 | 服务器存储 | 浏览器本地存储 |
| 我的收藏（拖拽排序、标签） | ✅ | ✅ |
| 多语言支持（18种） | ✅ | ✅ |
| 数据导入/导出 | ✅ | ✅（格式互通） |
| 提示词详情页 | ✅ | ✅（静态数据，无评论） |
| 用户注册/登录 | ✅ | ❌（无需账户） |
| 社区提示词列表/投票 | ✅ | ❌ |
| 评论反馈 | ✅ | ❌ |

## 数据存储

每位用户的数据保存在**自己浏览器**的 localStorage，与服务器无关：

| 数据 | 存储键 | 说明 |
| ---- | ------ | ---- |
| 收藏列表 | `local_favorites` | 收藏的提示词 ID 数组 |
| 自建提示词 | `local_user_prompts` | 用户创建的提示词数据 |
| 排列顺序 | `local_myspace_order` | 我的收藏中的卡片排序 |
| 自定义标签 | `local_custom_tags` | 标签定义和分配关系 |

:::caution 注意
- 浏览器本地存储约 5MB 容量上限，日常使用够用。
- 清除浏览器数据会丢失个人数据——建议定期通过「设置 > 导出数据」备份。
- 更换电脑或浏览器后需重新导入数据。
:::

## 部署

离线版基于 `offline` 分支。管理员完成一次部署后，团队成员无需任何操作即可使用。

### Docker 部署（推荐）

最简单的部署方式，一行命令即可在内网服务器上运行：

```bash
# 使用预构建的离线版镜像
docker run -d -p 3000:3000 --name aishort-offline ghcr.io/rockbenben/chatgpt-shortcut:offline

# 或使用 Docker Hub
docker run -d -p 3000:3000 --name aishort-offline rockben/chatgpt-shortcut:offline
```

部署后团队成员访问 `http://<服务器IP>:3000` 即可使用。

使用 `docker-compose`：

```yml
services:
  aishort-offline:
    container_name: aishort-offline
    image: ghcr.io/rockbenben/chatgpt-shortcut:offline
    ports:
      - "3000:3000"
    restart: unless-stopped
```

### 源码构建

如需自定义提示词内容或修改配置：

```bash
# 克隆离线版分支
git clone -b offline https://github.com/rockbenben/ChatGPT-Shortcut.git
cd ChatGPT-Shortcut

# 安装依赖
yarn

# 本地开发
yarn start

# 构建单语言版本（中文）
yarn build --locale zh-Hans

# 构建全部语言
yarn build
```

构建产物在 `build/` 目录，可部署到任意静态文件服务器（Nginx、Apache、Caddy 等）。

### Nginx 配置示例

```nginx
server {
    listen 3000;
    server_name _;
    root /path/to/build;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}
```

### 平台部署

Vercel、Cloudflare Pages 等平台部署时选择 `offline` 分支即可，其他步骤与在线版一致，详见[项目部署](../deploy)。

## 数据导入导出

### 导出

进入「设置 > 导出数据」，将个人收藏和自建提示词导出为 JSON 文件。

### 导入

支持导入以下格式的 JSON 文件：

- **离线版导出的文件**：完整恢复收藏、提示词、排序和标签
- **在线版导出的文件**：自动兼容处理
  - 用户提示词 → 合并到本地（按标题去重）
  - 精选收藏（card）→ 合并到本地收藏
  - 社区收藏（community）→ 自动转为本地自建提示词
  - MySpace 排序 → 恢复到本地
  - 自定义标签 → 追加合并（不覆盖已有）

### 从在线版迁移

1. 在在线版（aishort.top）的「我的账户」页面导出数据
2. 在离线版的「设置」页面导入该 JSON 文件
3. 社区收藏会自动转为本地提示词，精选收藏正常同步

## 常见问题

### 部署后团队怎么用？

管理员部署到内网服务器后，把访问地址（如 `http://192.168.1.100:3000`）告诉团队成员即可。每个人用浏览器打开，无需安装、无需注册。

### 每个人的数据会互相影响吗？

不会。每个人的收藏和自建提示词保存在各自浏览器的 localStorage，完全独立。服务器上只有共享的提示词库（只读）。

### 数据会丢失吗？

以下操作会导致个人数据丢失：

- 清除浏览器数据/缓存
- 使用隐私/无痕模式浏览
- 更换电脑或浏览器

建议重要数据定期通过「设置 > 导出数据」备份为 JSON 文件。

### 能否在团队间共享自建提示词？

可以。一人导出 JSON 文件后，其他成员在「设置 > 导入数据」中导入即可，自动去重。

### 如何更新提示词库？

提示词库是构建时打包的静态数据。更新方式：

1. 管理员拉取最新的 `offline` 分支代码
2. 重新构建并部署（或拉取最新 Docker 镜像）
3. 团队成员刷新浏览器即可看到新内容（个人数据不受影响）

### 离线版的数据格式和在线版兼容吗？

兼容。导出的 JSON 格式相同，可在两个版本间互相导入。提示词 ID 不同（在线版用服务器 ID，离线版用时间戳 ID），但导入按标题去重，不会冲突。
