☰
HolyClaude数据持久化详解:让Claude记忆、代码与凭证在容器重建后完美存活
2026/10/3 16:58:23 网站建设 项目流程

HolyClaude数据持久化详解:让Claude记忆、代码与凭证在容器重建后完美存活

【免费下载链接】HolyClaudeAI coding workstation: Claude Code + web UI + 8 AI CLIs + headless browser + 50+ tools项目地址: https://gitcode.com/gh_mirrors/ho/HolyClaude

HolyClaude 数据持久化是这套 AI 编程工作站最容易被忽视、却最关键的能力。它的核心思路很朴素:把 Claude 的记忆(CLAUDE.md)、你的登录凭证、Git/GitHub 配置,以及/workspace里的代码,全部通过Docker 挂载放到容器之外。这样无论你怎么docker compose down、升级镜像、重建容器,这些状态都会完美存活,下次启动直接无缝衔接,不用再重新登录、不用再解释项目背景。

为什么容器重建会"丢"东西

Docker 容器天生是"易碎品"。容器内部的文件系统随容器创建而生、随容器销毁而灭。也就是说:

  • 你登录 Claude 的OAuth 凭证写在容器里 → 容器一删就没了
  • Claude 记住你项目背景的CLAUDE.md记忆文件→ 重建后回到出厂状态
  • 你的代码如果不挂出来 → 升级镜像瞬间蒸发

HolyClaude 数据持久化要解决的,就是让"容器可以随时换皮,但数据长留原地"。它没有让你手写复杂的 volume 脚本,而是用两条绑定挂载(bind mount)打地基,再靠一套启动时自动恢复 + 运行时定期存档的机制兜底。

两大挂载:数据持久化的地基

打开 docker-compose.yaml,最核心的就是这两行volumes:

volumes: - ./data/claude:/home/claude/.claude # 记忆、凭证、配置都在这里 - ./workspace:/workspace # 你的代码和项目都在这里
  • ./data/claude↔/home/claude/.claude:Claude 的记忆文件CLAUDE.md、settings.json、Codex/Gemini 配置、以及各类 CLI 凭证统统落在容器内.claude目录,而它被挂载到了宿主机的./data/claude。
  • ./workspace↔/workspace:你写的每一个文件、克隆的每一个仓库,都直接写在宿主机上,随时可访问、可备份。

这两条挂载,加上后文提到的会话存档,共同构成了容器重建后数据保留的全部地基。完整挂载清单与容器内外路径对照,可参考 README.md 的「Data & Persistence」表格。

Claude 记忆与登录会话:60 秒自动存档

很多人以为挂上.claude就万事大吉,其实 Claude Code 的登录会话存在另一个位置——~/.claude.json,它并不在挂载目录里。如果不管它,重建容器时 Claude 会把它重置成"未完成 onboarding"的空状态,你的登录就白登了。

HolyClaude 用一个精巧的"会话桥"解决了这个问题:

  • 启动时:scripts/entrypoint.sh 会调用 scripts/persist-claude-json.mjs,把存档的会话还原回~/.claude.json。
  • 运行时:s6-overlay 常驻一个守护循环(见 s6-overlay/s6-rc.d/persist-claude-json/run),默认每 60 秒把当前有效的~/.claude.json同步一份到~/.claude/.claude.json.persist(这个文件在挂载目录里,所以能存活)。

这套逻辑还有防误伤保护:空文件、非法 JSON、超大文件、或"只剩 onboarding 状态"的内容,都不会去覆盖一份有效的登录会话。换句话说,即使某次状态异常,你的凭证也绝不会被冲掉。

数据容器内位置宿主机位置重建后存活
Claude 记忆CLAUDE.md与设置/home/claude/.claude./data/claude✅
登录会话(OAuth / API Key)/home/claude/.claude.json./data/claude/.claude.json.persist✅
Git 全局 / XDG 配置/home/claude/.gitconfig./data/claude/.gitconfig✅
GitHub CLI 凭证/home/claude/.config/gh./data/claude/.config/gh✅
你的代码与项目/workspace./workspace✅
CloudCLI 账号/home/claude/.cloudcli默认容器内(可选挂载)⚠️ 可选

容器重启后,谁在自动恢复

重建不是手动操作,HolyClaude 靠启动脚本自动完成。整个流程(详见 docs/architecture.md):

  1. 入口脚本接管→ scripts/entrypoint.sh 做 UID/GID 重映射,并先还原Claude 会话。
  2. CLI 配置持久化→ 把 Git 全局配置、GitHub CLI 配置软链进挂载的.claude,缺省的提交身份会自动补种,但绝不覆盖你的手动修改。
  3. 首次启动引导(仅第一次)→ scripts/bootstrap.sh 复制默认 config/settings.json 和对应版本的记忆模板(config/claude-memory-full.md / config/claude-memory-slim.md),然后打上"哨兵文件".holyclaude-bootstrapped。
  4. 哨兵机制:只要这个文件存在,引导就不会再跑,你的自定义配置从此安全。想重置到出厂状态?只删这个哨兵文件即可,不要删整个./data/claude。

升级容器不丢数据的正确姿势

日常升级只需两步,数据全程不动:

docker compose pull docker compose up -d

因为所有关键状态都在挂载目录,镜像更新只是"换个引擎",记忆、凭证、代码原封不动。

⚠️保护./data/claude/:它保存着 Claude 会话,可能还包含.config/gh/hosts.yml里的 GitHub 凭证。别把它提交进版本库、别随便分享、别放进未加密的备份。只想重置某项状态时,删对应的具体文件,而不是整个目录。

CloudCLI 账号:可选的持久化

网页端的CloudCLI 账号(~/.cloudcli)默认存在容器内,重建会清空。不过重建账号只要 10 秒,多数人保持默认即可。如果你希望它也存活,在 compose 里加一个命名卷:

services: holyclaude: volumes: - ./data/claude:/home/claude/.claude - ./workspace:/workspace - cloudcli-data:/home/claude/.cloudcli # 加这行 volumes: cloudcli-data: # 再加这个块

💡重要:CloudCLI 的 SQLite 数据库需要本地文件锁,千万别放在 NAS / SMB / NFS 网络盘上,否则会报database is locked。用本地盘的命名卷或本地绑定挂载。

小结

HolyClaude 数据持久化的精髓就一句话:把会变的东西留在容器里,把要留的东西挂到容器外。两条挂载撑起记忆与代码,会话桥(60 秒自动存档 + 启动自动还原)守住你的登录凭证,哨兵机制保护你的自定义配置。掌握这套机制后,你就能放心地随时升级、重建、迁移这台 AI 工作站——数据永远在场,工作永远续上。

更多细节可查阅 docs/architecture.md 与 README.md。

【免费下载链接】HolyClaudeAI coding workstation: Claude Code + web UI + 8 AI CLIs + headless browser + 50+ tools项目地址: https://gitcode.com/gh_mirrors/ho/HolyClaude

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询