AgentMeshOS 存储架构规划
版本:v1.5.0
状态:当前生效
更新:2026-08-13
1. 当前结论
AgentMeshOS 的系统云盘已统一采用 Cloudreve。已退役的 KodBox -> Nomad CSI -> JuiceFS -> MariaDB Galera -> MinIO -> MM TCP 中转 不再是服务、依赖或恢复路径。
当前数据面为:
flowchart LR
Client["浏览器 / WebDAV 客户端"] --> MM["MM BaoTa HTTPS"]
MM --> Cloudreve["dd Cloudreve"]
Cloudreve --> Disk["dd 本地持久化"]
Runtime["主节点 Runtime"] -->|"root-only WebDAV Adapter"| MM
ProjectSync["主节点 Project Sync"] -->|"公网 HTTPS / 专用凭据"| MM
Worker["101 / 103 Worker"] -->|"仅公网 HTTPS 下载;无 WebDAV 凭据"| MM
Tailnet["Tailnet"] -. "只做控制,不传文件" .-> Runtime
这条路径不经过 main、101、103 或 Tailnet。
2. 职责边界
| 组件 | 当前职责 | 不承担的职责 |
|---|---|---|
| Cloudreve(dd) | 系统云盘应用、WebDAV、文件持久化 | Nomad 调度、跨节点文件转发 |
| MM BaoTa Nginx | Cloudreve 的唯一公网 HTTPS 入口 | 文件存储、Tailnet 数据中转 |
| dd 本地持久卷 | Cloudreve 当前文件落盘位置 | 分布式文件系统或高可用副本 |
| Tailnet / SSH / Nomad 节点间链路 | SSH、Nomad、健康检查、部署和私有管理控制面 | 任何业务文件传输,包括镜像、安装包、构建产物、测试夹具、附件、成果和归档 |
| main | 控制面与受限自动化发起点;以公网 HTTPS WebDAV 客户端写入受限目录 | 系统云盘回源、对象数据转发、节点文件中转和文件缓存 |
| 101 / 103 | 通用计算与 Nomad Worker;从 Cloudreve 公网 HTTPS 直接下载登记输入 | 云盘运行位、云盘数据库、WebDAV 凭据、文件系统挂载和节点间文件传输 |
3. Cloudreve 使用边界
- 当前 Cloudreve 使用官方
master单机模式与 dd 本地持久化存储,保持现网部署不变。 - Cloudreve 既有个人文件不属于 AgentMeshOS 自动化管理范围,禁止扫描、迁移、删除或重组。
- AgentMeshOS 自动化只使用受限的系统 WebDAV 空间;凭据只保存于主节点
/etc/agentmeshos/cloudreve-system-webdav.env,root:root、0600,不得进入 Git、文档、普通日志或聊天。 - 系统 WebDAV 根目录固定维护
AgentMeshOS-临时与AgentMeshOS-长期;根级“本地资料分析与验收工作台专用目录”仅作为该应用可选择的专用来源。临时目录可在任务结束后按引用清理;长期目录只允许创建和读写,自动化不得删除已有长期文件。 - Worker 的最大 1 MiB 结构化 JSON 回调证据进入 Runtime SQLite,不使用系统云盘或外部存储凭据。Cloudreve WebDAV StorageAdapter 已完成独立权限、上传、回读、SHA-256 和长期内容不自动删除验收;较大或长期 Runtime Artifact 由主节点 Runtime 写入
AgentMeshOS-长期/runtime-artifacts。旧 S3/MinIO 行为仍保持退役,不得恢复。 - 2026-08-11 已进行不写入、不删除的只读权限确认:WebDAV 根、
AgentMeshOS-临时、AgentMeshOS-长期返回207,Project与无关目录返回404。这证明现有系统账户被限制在专属空间;root-only仅描述主节点凭据文件为root:root 0600,不表示 Cloudreve 管理员权限,也不需要创建 root/admin 账户。 - 文件传输必须统一走
cloud.yohan.fun公网 HTTPS 数据面。该规则覆盖所有业务文件,而不仅是用户上传:镜像、安装包、构建产物、测试夹具、附件、成果、归档和恢复包均不得通过 SSH、Tailnet、Nomad 节点间路径、主节点代理或 Worker 间复制传送。Worker 只可从经登记的 Cloudreve 公网下载地址取用输入,写入任务临时目录并在任务结束后删除;它不保存 WebDAV 凭据。最大 1 MiB 的结构化 JSON 回调是唯一非文件化例外,直接进入 Runtime SQLite。
成果与证据存储
- 计划、任务、验收标准、成果元数据、证据引用、检查运行和决定记录进入 Runtime SQLite;PPTX、PDF、图片和 Office 等文件成果进入 DD 节点 Cloudreve 的长期目录,数据库只保存安全预览和引用,不作为大文件长期存储或下载代理。
- 原始长期成果继续通过现有系统 WebDAV 账户写入
AgentMeshOS-长期;已验收成果不按时间自动删除,返工版本通过superseded关系保留历史。 - Console 只取得经认证的元数据、受限预览与正式访问说明。完整文件下载继续走
cloud.yohan.fun用户数据面;WebDAV 用户名、密码和可复用签名不得进入浏览器。 - 用户文件管理统一使用既有 Cloudreve 系统云盘:其原生目录树、上传、下载、预览、移动、重命名、回收站和分享直接走
cloud.yohan.fun公网数据面。Console 不重建第二个 WebDAV 文件管理器,不代理任意文件字节;应用选择器只读取该应用被允许的目录元数据。 Project使用另一套独立凭据和边界,不作为 Runtime Artifact 目录,也不得与成果中心混用。
Project 独立项目库
- Cloudreve 既有
Project根目录保持原路径,不迁入AgentMeshOS-长期,也不由 Runtime StorageAdapter 管理。 - main 通过
/etc/agentmeshos/cloudreve-project-webdav.env和独立 rclone 配置访问;两者必须为root:root 0600,不得复用系统 Artifact 凭据。 - 101
/root/project与 CloudreveProject根进行全目录双向同步,覆盖所有项目、文件和目录;不再使用/mnt/cloudreve-project只读挂载或AgentMeshOS专用写入边界。 - Project 同步根固定为 101 的
/root/project与 CloudreveProject根,覆盖所有项目、文件、目录及其 Git 元数据;不以提交、推送或单一项目状态作为同步前置条件。任何覆盖、冲突和删除都必须先进入独立备份盘历史并受删除阈值保护。 - 101/103、Runtime、OmniRoute、模型、MCP 和浏览器均不得获得 Project 凭据。
4. Tailnet 原则
Tailnet 的优势是私有控制和远程运维,不是文件传输加速器。公开云盘访问必须保持浏览器、main WebDAV 客户端或 Worker 下载器到 MM 再到 dd 的公网 HTTPS 直达链路。任何新的云盘功能不得把任何业务文件内容经 Tailnet、SSH、Nomad 节点间路径、主节点或 Worker 转发。
5. 可用性与后续扩展
当前 Cloudreve/dd 是单节点服务,dd 或 Cloudreve 不可用时系统云盘不可用;不得宣称已具备高可用。后续需要扩展时,应先评估 Cloudreve 官方主从或存储策略,并以真实数据面上传、下载、校验、故障恢复为准。扩展方案不得重新引入 KodBox、CSI、JuiceFS、Galera 或 MinIO。
NAS 继续只作为独立遥测与文件共享资源,不是系统云盘的数据路径。
6. 私人硬盘预留
disk.yohan.fun 当前不提供服务,也不再指向已退役的 KodBox。后续计划在 dd 节点以 Docker 部署有道云作为私人硬盘;该服务部署、反代、鉴权、数据目录和备份策略必须在单独实施计划中完成设计和验收后才可启用。
私人硬盘不承载 AgentMeshOS 系统云盘、受限系统 WebDAV 或 Runtime Artifact 数据,也不得复用 KodBox、Nomad CSI、JuiceFS、MariaDB Galera、MinIO 或 Tailnet 文件转发路径。控制台仅向管理员展示其“后续部署”状态,在真实服务验收前不得提供可打开入口。
7. 已退役范围
2026-08-01 已下线并删除以下旧系统云盘组件及入口:
- KodBox、其 Nomad Job 和
disk.yohan.fun路由 - Nomad CSI、JuiceFS 与相关宿主机挂载
- MariaDB Galera 与 main 的 garbd 仲裁
- dd MinIO、MM
39062TCP 中转与相关 Runtime S3 凭据 - KodBox 外部 NFS 挂载与相关维护/恢复机制
历史迁移与故障页面只保留为事实记录,不可用作当前部署或恢复指引。