diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index d1bdf9f..c961483 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -101,6 +101,9 @@ export default defineConfig({
{ text: "多语言与本地化", link: "/hnpedia/Locales" },
{ text: "敌对黑客入侵事件", link: "/hnpedia/HostileHacker" },
{ text: "随机生成系统", link: "/hnpedia/Generation" },
+ { text: "存档系统", link: "/hnpedia/Saves" },
+ { text: "账户与用户系统", link: "/hnpedia/Accounts" },
+ { text: "防御与追踪深度解析", link: "/hnpedia/Defense" },
],
},
],
diff --git a/docs/hnpedia/Accounts.md b/docs/hnpedia/Accounts.md
new file mode 100644
index 0000000..99b5934
--- /dev/null
+++ b/docs/hnpedia/Accounts.md
@@ -0,0 +1,52 @@
+# 账户与用户系统
+
+Hacknet 中存在多层"账户"概念:**玩家本地账户**(存档系统)、**服务器用户**(`UserDetail`)、**游戏内数据账号**(`Account` / `OnlineAccount` / `NeopalsAccount`)。它们用途不同、互不相通。
+
+> ⚠️ 本页所有账户、口令与用户数据均为**游戏内虚构设定**,仅作资料记录,请勿关联到任何真实系统或人物。
+
+## 玩家账户(存档账户)
+
+见 [存档系统](./Saves.md):由 `SaveFileManager` 管理,含用户名/加密密码/存档文件,支持本地 + Steam 云双写。主菜单的新建/登录都走这套。
+
+## 服务器用户(UserDetail)
+
+每台服务器有一组登录用户,用于邮箱、IRC 等需要认证的服务:
+
+```xml
+
+```
+
+| 字段 | 含义 |
+|---|---|
+| `name` | 用户名 |
+| `pass` | 密码 |
+| `type` | 账户类型(0=已重置/管理员,1=普通,3=代理等) |
+| `known` | 是否已被人知晓(影响登录后提示) |
+
+- 服务器构造时自带 `admin` 用户(`Computer.cs:29`,type=1,密码为管理员密码)。
+- `addNewUser` 可运行时添加用户;邮件服务器给每个新用户分配 `UsernameGenerator.getName()`。
+- 玩家自己的账户是 `os.defaultUser`(`UserDetail(username, "password", 1)`)。
+
+## 数据账号(Account / OnlineAccount)
+
+DLC 中用于模拟现实账号的数据类:
+
+- **Account**:ID、现金、银行、公寓、车辆、天煞车辆、Rank、RP、击杀数——用于 GTA 风格数据展示(`Account.ToString()` 返回 ID)。
+- **OnlineAccount**:ID、用户名、封禁状态、备注,`ToString()` 返回 `用户名#ID`——用于论坛/社交数据。
+
+这两类数据由对应的 Daemon 填充展示,属于"游戏内数据库内容",与玩家存档无关。
+
+## Neopals 账户(NeopalsAccount)
+
+DLC 虚拟宠物站账户,随机生成(见 [随机生成系统](./Generation.md)):
+
+- 字段:账户名、NeoPoints、BankedPoints、InventoryID(GUID)、宠物列表。
+- 活跃用户(`isActiveUser`)点数更高(≤50k vs ≤5k),主要人物(Bit 等)的账户更豪华。
+- 在 Neopals 任务线中用于查案与彩蛋。
+
+## 与存档的关系
+
+- 玩家账户是存档的**门禁**:登录后 `os.SaveGameUserName` 指向存档文件名,`os.SaveUserAccountName` 是显示名。
+- 服务器 `UserDetail`、`Account`、`OnlineAccount`、`NeopalsAccount` 随网络节点一起被序列化进存档,读档后原样恢复。
+
+> 相关页面:[存档系统](./Saves.md) · [随机生成系统](./Generation.md) · [服务器服务(Daemon)](./Daemons.md)
\ No newline at end of file
diff --git a/docs/hnpedia/Defense.md b/docs/hnpedia/Defense.md
new file mode 100644
index 0000000..638ff0c
--- /dev/null
+++ b/docs/hnpedia/Defense.md
@@ -0,0 +1,84 @@
+# 防御与追踪深度解析
+
+本文深入 `Firewall`、`TraceTracker`、`Administrator` 与 Shell 的**内部实现**,是 [核心机制](./Mechanics.md) 的技术延伸。
+
+> ⚠️ 本页仅解析**游戏内的防御系统实现**(来自游戏源码)。所涉破解防火墙、压测代理、Shell 洪泛等均为游戏机制,请勿用于现实网络行为。
+
+## 防火墙内部(Firewall)
+
+防火墙在等级 5+ 服务器上生成,构造时:
+
+- `solutionLength = 6 + complexity`(complexity = 安全等级 − 5)。
+- 密码 = `getRandomChar()`(**70% 字母 + 30% 数字**,见 `Utils`)生成后转大写。
+- 支持自定义 `solution` 与 `additionalDelay`(XML 的 `solution`/`additionalDelay` 属性)。
+
+### analyze 输出原理
+
+每次 `analyze` 显示一行 20 字符宽的矩阵(`generateOutputLine`):
+
+- 前 `20 − 3×analysisPasses` 位被随机字符遮蔽,**第 0 次分析每 20 位隐藏 1 位**,此后每轮修复 3 位。
+- 正确的字符被**随机插入**矩阵中的任意位置,位置完全随机。
+- 每轮每字符延迟 = `0.08 + 0.06×轮次 + additionalDelay` 秒(递增)。
+- 输入 `solve` 时:长度错误提示"Too few/many characters";完整匹配(忽略大小写)即 `solved = true`。
+
+### 保存与重置
+
+- 存档会保存 `complexity`、`solution`、`additionalDelay`,读档后原样恢复。
+- `resetSolutionProgress()` 清空分析轮次;管理员重置密码时防火墙同步重置。
+
+## 追踪系统内部(TraceTracker)
+
+追踪时间在 `Computer` 构造时计算:
+
+```
+traceTime = max(10 − 安全等级, 3) × 15s
+```
+
+等级 4 → 90s;等级 10 → 45s;最低 45s。
+
+### 启动与停止
+
+- 触发:目标主机执行 `hostileActionTaken()` 且连接者就是目标 IP 时 `traceTracker.start()`。
+- 停止条件(`Update` 内):
+ - 断开连接或切换目标 → 若剩余时间 <0.5s,解锁 **`trace_close`** 成就。
+ - 计时器归零 → `os.timerExpired()`(游戏结束/危险序列)。
+- **TraceKill.exe**:持续运行会冻结追踪(`timeSinceFreezeRequest = 0`,追踪在 <0.2s 内不推进);RAM 600;不追踪时不冻结。
+
+### 警报与表现
+
+- 剩余百分比 `timer/startingTimer×100`,红色 `TRACE :` 文本显示在左下角。
+- 报警节奏随剩余量加快:>45% 每 10%、15~45% 每 5%、<15% 每 1% 响一声 `SFX/beep` 并闪屏。
+- **SignalScramble.exe**(DLC 的 `DLCTraceSlower`,RAM 50→600 预热)运行时把 `trackSpeedFactor` 压到接近 0(抑制追踪),退出/被杀恢复 1×。另有 `AllTraceTimeSlowed` 全局减速开关(默认关闭,仅调试)。
+
+## 管理员类型(Administrator)
+
+断线后管理员反应取决于类型(`Computer` 的 ``):
+
+| 类型 | 行为 |
+|---|---|
+| `BasicAdministrator` | 随机延迟 0~20s 后关闭全部端口、重置管理员 IP、重置防火墙;`ResetsPassword` 时重置密码 |
+| `FastBasicAdministrator` | 立刻关端口/重置防火墙/重开代理;延迟后才重置密码与 admin IP;`IsSuper` 则立即全重置 |
+| `FastProgressOnlyAdministrator` | 类似 FastBasic,但**不动密码**(只关端口、重置防火墙、重开代理);追踪踢出也会触发 |
+
+共同点:断线或追踪踢出后,已破端口会重新关闭,必须重新破解。`traceEjectionDetected` 默认空实现,`FastProgressOnly` 覆写为直接按断线处理。
+
+## Shell 与代理过载(ShellExe)
+
+Shell 有 `Overload` 与 `Trap` 两种模式:
+
+- **Overload**(压测代理):`state=1`,每秒扣减目标 `proxyOverloadTicks`;归零后 `proxyActive=false`,代理解除。压测期间目标持续触发 `hostileActionTaken()`(可能被追踪)。RAM 基础 40。
+- **Trap**(陷阱):`state=2`,RAM 升至 100,可对目标服务器执行 `forkBombClients` 连接洪泛。
+- 日志:开壳 `[IP]_Opened_#SHELL`、压测 `#SHELL_Overload_@_`、陷阱激活 `#SHELL_TrapActivate_:_ConnectionsFlooded`、关壳 `#SHELL_Closed`。
+- 若管理员权限丢失或目标禁用,Shell 立即报错退出(`SHELL ERROR: Administrator account lost`)。
+
+## 代理时间计算(openPortsForSecurityLevel)
+
+等级 ≥5 时按公式累加代理总时长:
+
+```
+for i in 4..安全等级: proxyTime += BASE_PROXY_TICKS / (i - 3)
+```
+
+等级越高代理越久;`proxyTime` 存入 `startingOverloadTicks` 并随存档保存。代理激活期间无法 `PortHack`,必须先 Overload 压完。
+
+> 相关页面:[核心机制](./Mechanics.md) · [服务器服务(Daemon)](./Daemons.md) · [程序与工具大全](./Programs.md)
\ No newline at end of file
diff --git a/docs/hnpedia/Saves.md b/docs/hnpedia/Saves.md
new file mode 100644
index 0000000..5ac3f95
--- /dev/null
+++ b/docs/hnpedia/Saves.md
@@ -0,0 +1,83 @@
+# 存档系统
+
+Hacknet 的存档系统由 **账户(Account)** 与 **存档文件(Save File)** 两层构成。每个游戏内用户是一个账户,账户下有一份 `.xml` 存档。存档通过 `SaveFileManager` 统一管理,可同时写入**本地**与 **Steam 云**两份。
+
+> ⚠️ 本页内容均为**游戏内的存档与账户机制**(含 `buffalo` 万能口令、存档编辑等游戏设定),仅作资料记录,请勿套用到现实系统。
+
+## 存档位置
+
+存档按平台存放于不同目录(`LocalDocumentsStorageMethod`):
+
+| 平台 | 路径 |
+|---|---|
+| Windows | `我的文档\My Games\Hacknet\Accounts\` |
+| Linux | `$XDG_DATA_HOME/Hacknet/Accounts/` 或 `~/.local/share/Hacknet/Accounts/` |
+| macOS | `~/Library/Application Support/Hacknet/Accounts/` |
+| 失败回退 | 游戏目录下 `Accounts/`(并提示 `AccumErrors`) |
+
+Extension 模式下,所有路径追加 `<扩展文件夹名>/`,实现**扩展存档隔离**(本地与云同规则)。
+
+## 账户清单(Accounts.txt)
+
+`Accounts.txt` 记录所有账户,分隔符为 `\r\n%------%`,首行为最后登录用户名:
+
+```
+<最后登录用户名>
+%------%
+<用户名>\r\n__<加密密码>\r\n__<最后写入时间>\r\n__<文件用户名>
+%------%
+...
+```
+
+- 密码经 `FileEncrypter.EncryptString` 加密,读取时解密校验。
+- 存档文件名 = `save_<净化用户名>.xml`(`_` 会替换为 `-`)。
+- 登录校验:用户名不区分大小写;**特殊口令 `buffalo` 可免密登录任意账户**(源码中写死)。
+
+## 存档文件结构
+
+存档是 UTF-8 XML,由 `OS.writeSaveGame` 生成,根元素 ``:
+
+```xml
+
+
+
+
+ ...
+ ...
+ ...
+ ...
+
+
+```
+
+各模块可独立序列化:网络节点(`netMap.getSaveString()`)、当前任务、分支任务、派系进度、音乐/家节点。
+
+## 保存触发
+
+- 游戏内 `save` 命令(真正的保存由内部长口令 `save!(SJN!*SNL8vAewew57WewJdwl89(*4;;;&!)@&(ak'^@J3KH@!*` 触发,玩家无法直接输入)。
+- `saveGame()` 会在 Extension 模式下检查 `AllowSave`:不允许的扩展不写盘。
+- `threadedSaveExecute` 走线程安全队列(`SaveInProgress`/`SaveInQueue` 防重入),保存时锁定 `CurrentlySaving`。
+
+## 云存档
+
+`SaveFileManager` 按顺序注册存储方法:
+
+1. `LocalDocumentsStorageMethod`(本地,永远启用)
+2. `SteamCloudStorageMethod`(Steam 运行且云可用时启用)
+
+写入时遍历全部存储方法写一份;读取/加载优先取第一个(本地)。启动时 `UpdateStorageMethodsFromSourcesToLatest` 会把旧版云存档/本地存档**迁移合并**到新账户系统(大于 100 字节的文件才会迁移)。
+
+> ⚠️ 安装 Pathfinder 会禁用 Steam 云存档。
+
+## 账户管理 API
+
+| 方法 | 功能 |
+|---|---|
+| `AddUser(username, pass)` | 新建账户(重名/空名拒绝,下划线转连字符) |
+| `GetFilePathForLogin(user, pass)` | 校验登录,返回存档文件名(`buffalo` 万能口令) |
+| `CanCreateAccountForName(name)` | 检查用户名是否可用 |
+| `DeleteUser(username)` | 删除账户并修正最后登录者 |
+
+主菜单登录流程:新建账户 → `AddUser` → `GetFilePathForLogin` → 设置 `os.SaveGameUserName` 与 `SaveUserAccountName` → 启动 OS。
+
+> 相关页面:[账户与用户系统](./Accounts.md) · [游戏模式与设置](./Modes.md) · [常见问题](../hnfaq.md)
\ No newline at end of file
diff --git a/docs/hnpedia/index.md b/docs/hnpedia/index.md
index 44a768e..d506b88 100644
--- a/docs/hnpedia/index.md
+++ b/docs/hnpedia/index.md
@@ -75,3 +75,12 @@ Labyrinths DLC 的"跳出游戏"机制:注入木马 DLL、系统锁死、真
### [🎲 随机生成系统](./Generation.md)
公司名、NPC 用户名、学位、车辆、病历、Neopals 账户的程序化生成机制。
+
+### [💾 存档系统](./Saves.md)
+账户清单与存档文件结构、本地/Steam 云双写、存档编辑与备份。
+
+### [👥 账户与用户系统](./Accounts.md)
+玩家账户、服务器 UserDetail、Account/OnlineAccount/Neopals 账号分层解析。
+
+### [🛡 防御与追踪深度解析](./Defense.md)
+防火墙 analyze 原理、追踪计时与报警、管理员类型、Shell 过载/陷阱机制。