# 导入历史记录

> 把 SillyTavern、Character.AI、ChatGPT、Claude 和 RisuAI 的对话搬进来，在 Reverie 里接着聊。

Source: https://reverie.im/zh/docs/getting-started/importing-your-history
Language: zh

Reverie 能读取其他平台导出的聊天记录，把它回放成这里的一场对话，这样你在别处积累的历史可以继续，而不用从头开始。

> 这一页讲的是**对话**。把角色搬过来——Tavern 卡片、CharacterHub 下载——是另一个工具，有自己的页面：
> [导入角色](https://reverie.im/zh/docs/characters/import-characters)。

## 开始之前 \[#before-you-start]

你需要已登录，并且需要一个和这段历史所属角色的**空聊天**：只要对话里已经有消息，导入就会被拒绝，所以它永远不会覆盖任何东西。如果这个角色在 Reverie 上还不存在，先导入角色，再和它开一个聊天并保持为空。

## 导入一场对话 \[#import-a-conversation]

### 打开一个空聊天 \[#open-an-empty-chat]

和角色开一场新对话，什么都别发。角色在新聊天里给你看的开场白不是一条存下来的消息，所以在你回复它之前，这场对话依然算空的。

### 打开「导入聊天」 \[#open-import-chat]

打开侧边栏，进**设置**标签页，展开**聊天管理**，选**导入聊天**。这一行只在聊天为空时出现。

### 把文件丢进去 \[#drop-the-file-in]

把你的导出文件拖到拖放区，或者点开浏览。Reverie 会自己识别格式——没有什么要选的。

### 看一下预览，然后导入 \[#check-the-preview-then-import]

预览会告诉你它识别出的格式、消息条数、其中你和角色各占多少，以及它找到的日期范围。任何它不得不跳过的东西会出现在**注意**下面。用**导入**确认，按钮上会写明条数，然后聊天会带着你的历史重新加载。

## Reverie 能读什么 \[#what-reverie-reads]

| 来源               | 要带来的文件                     |
| ---------------- | -------------------------- |
| **SillyTavern**  | 该聊天的 `.jsonl` 文件           |
| **Character.AI** | 数据导出里的那场对话（`.json`）        |
| **RisuAI**       | 导出的聊天（`.json`）             |
| **ChatGPT**      | 数据导出里的那场对话（`.json`）        |
| **Claude**       | 数据导出里的那场对话（`.json`）        |
| 通用 JSON          | 任何带角色标记的 OpenAI 风格消息列表     |
| 文本或 Markdown     | 一份 `Name: message` 格式的对话记录 |

Chub 和 JanitorAI 导出成 SillyTavern JSONL 的文件，走 SillyTavern 这条路可以用。

| 限制       | 数值                             |
| -------- | ------------------------------ |
| 文件类型     | `.jsonl`、`.json`、`.txt`、`.md`  |
| 文件大小     | 10 MB                          |
| 每个文件的消息数 | 10,000——更长的历史请拆成几个文件，分别导入不同的聊天 |
| 目标       | 一次一个空聊天，一次一个文件                 |

## 什么会带过来，什么不会 \[#what-carries-over-and-what-doesnt]

会带过来：每条消息的文字、是谁说的、它们原本的顺序，以及导出文件里有的原始时间戳。没有可用时间戳的消息会保持相对顺序。如果导出文件给对话起了名字，新建的聊天就用那个名字。在群聊里，能对上房间中某个角色的说话人名字会归到那个角色；认不出来的都归到主角色。

不会带过来：图片和附件、系统消息和工具消息，以及备选的重新生成结果——只有在原平台被选中的那条回复会过来。聊天导出文件也完全不包含角色本身的信息，所以定义、世界书、人设和记忆都不在里面。

消息进来之后，Reverie 会给它们做一份摘要，这样记忆和上下文从你的下一轮就能用。这份摘要不收费，但如果你的积分余额不够覆盖它需要的 token，它会被跳过——导入本身仍然成功。

## 被拒绝的时候 \[#when-it-refuses]

| 提示          | 该怎么做                                      |
| ----------- | ----------------------------------------- |
| 不支持的文件类型    | 把导出文件保存成 `.jsonl`、`.json`、`.txt` 或 `.md`  |
| 文件太大        | 拆开；上限是 10 MB                              |
| 文件是空的       | 检查你导出的是那场对话，不是一个空壳                        |
| 我们读不了这个文件   | 这不是 Reverie 认识的聊天导出格式——试试通用 JSON 或对话记录那条路 |
| 这个文件消息太多    | 拆到 10,000 条以下                             |
| 这个聊天已经有消息了  | 开一场新对话，导入到那里                              |
| 这个聊天属于另一个账户 | 你登录的是别人的账号                                |

## 把对话导出去 \[#taking-your-conversations-out]

同一个**聊天管理**区域里，对话有消息之后会出现**导出聊天**。四种格式：**JSONL**（兼容 SillyTavern，而且如果你以后想再导回来就用这个）、**Markdown**、**纯文本**和 **HTML**。Reverie 自己的 JSONL 导出就是一个合法的导入文件，所以你可以把一场对话在角色之间搬，或者备份后再恢复。

## 相关 \[#related]

* [导入角色](https://reverie.im/zh/docs/characters/import-characters)——卡片，不是对话
* [管理对话](https://reverie.im/zh/docs/chatting/managing-conversations)——重命名、归档和删除聊天
* [记忆](https://reverie.im/zh/docs/chatting/memory)——摘要喂给了什么
* [群聊](https://reverie.im/zh/docs/chatting/group-chats)——导入的说话人怎么对上角色名单
* [Reverie 上的导入导出](https://reverie.im/zh/blog/your-data-your-choice)——为什么会有这个功能
