---
title: 四层目录模型
description: 每个 Polymerium 实例都有四个具有不同角色和生命周期的目录。理解它们是掌握这个启动器的关键。
---

## 四层目录

Polymerium 中的每个实例都有四个目录。每个目录都有不同的任务和不同的生命周期：

```
instances/my-modpack/
├── import/     ← 随模组包附带的文件（权威来源）
├── live/       ← 工作副本——接收游戏内修改
├── persist/    ← 你选择在重置和更新之间保留的文件
└── build/      ← 部署的游戏目录（构建产物）
```

### `import/` — 模组包来源

这是模组包作者的意图。当你导入模组包时，它的文件会放置在这里——配置、默认选项、自定义资源等。

- **谁写入它：** 模组包作者（通过导入或手动放置）
- **它何时改变：** 当你更新或重新导入模组包时
- **它的用途：** 模组包文件的权威、可分发版本

### `live/` — 工作副本

这是 `import/` 的可写副本。当你玩游戏时，游戏内的更改（修改的配置、生成的文件）会落地在这里，而不是 `import/` 中。

- **谁写入它：** 游戏运行时（以及你，当你调整配置时）
- **它何时改变：** 每次游戏会话
- **它的用途：** 运行时修改的沙盒，不会污染来源

### `persist/` — 用户管理的持久层

这个目录是**你的**。Polymerium 不会自动写入它——你决定什么内容放在这里。

想法很简单：有些文件太重要了，不能在重置或模组包更新时丢失。也许你的 `options.txt` 包含了你花了一个小时调整的灵敏度设置，或者你的 `saves/` 目录包含了一个你无法承受丢失的世界。你自己将这些文件移动到 `persist/` 中。

**它的工作原理：**

1. **对于单个文件** —— 将文件从 `build/` 移动到 `persist/`。例如，将 `build/options.txt` 移动到 `persist/options.txt`。在下一次部署时，Polymerium 会以最高优先级将 `persist/options.txt` 链接到 `build/`，所以你的版本总是胜出。

2. **对于目录** —— 将目录（例如 `saves/`）移动到 `persist/`，然后在其中创建一个空的 `.keep` 文件：`persist/saves/.keep`。这告诉 Polymerium 将整个目录投射到 `build/` 中。

- **谁写入它：** 你
- **它何时改变：** 当你决定添加或更新文件时
- **它的用途：** 你想要在重置、模组包更新和重建中幸存的文件

### `build/` — 部署的游戏

这是最终的游戏目录——Minecraft 看到的 `.minecraft`。它是在部署期间从其他层组装而成的。

- **谁写入它：** Polymerium 的部署引擎
- **它何时改变：** 每次部署
- **它的用途：** 可运行的游戏目录
- **你可以删除它吗？** 可以——但任何只存在于 `build/` 中且没有被 `persist/`、`live/` 或 `import/` 支持的内容都会丢失。你已经移动到 `persist/` 的文件总是安全的。其他所有内容都会从元数据和缓存重新构建。

## 它们如何关联

```
import/ ─────→ live/ ─────→ build/
                ↑              ↑
          游戏写入       最终游戏目录
                │
persist/ ───────┴────────────→ build/
  （最高优先级，用户管理）
```

在部署期间，文件按此顺序分层到 `build/` 中：

1. **缓存文件** —— 模组、库、资源（从缓存符号链接）
2. **`import/` 文件** —— 模组包源文件
3. **`live/` 文件** —— 工作副本（覆盖 import）
4. **`persist/` 文件** —— 你保留的文件（最高优先级，总是胜出）

如果同一个文件同时存在于 `live/` 和 `persist/` 中，`persist/` 版本会在 `build/` 中优先。

## 常见操作期间发生什么

| 操作 | `import/` | `live/` | `persist/` | `build/` |
|-----------|:---------:|:-------:|:----------:|:--------:|
| **部署** | 读取 | 读取 | 读取 | 重建 |
| **玩游戏** | 不变 | 修改 | 不变 | 修改 |
| **重置** | 不变 | 清除 | 不变 | 清除 |
| **模组包更新** | 替换 | 清除 | 不变 | 清除 |

### 关键要点

- **重置**会清除 `live/` 和 `build/`。你放置在 `persist/` 中的文件不受影响。
- **模组包更新**会替换 `import/` 并清除 `live/`。`persist/` 会被保留——这就是全部意义。
- **`build/`** 是可丢弃的，只要你关心的任何内容都有 `persist/` 支持。

## 为什么这很重要

这个四层模型解决了模组 Minecraft 中的一个真实矛盾：

- **模组包作者**想要分发一致的配置和资源。
- **玩家**想要在更新之间保留他们的设置和存档。
- **双方**都希望模组包更新能够在不丢失重要数据的情况下工作。

Polymerium 的答案：将这些关注点分离到具有不同生命周期的不同目录中。你控制什么被保留——将其移动到 `persist/`，Polymerium 保证它会幸存。

## 下一步

了解部署如何组装这些层 → [部署流水线](/docs/concepts/deploy-explained)