跳转至

AgentMeshOS 存储架构规划

版本:v1.6.0

状态:当前生效

更新:2026-10-04

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["103 计算 Worker(101 仅受控例外)"] -->|"仅公网 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、健康检查、部署、私有管理控制面和小于 1 MiB 的受控脚本/配置/凭据交换 业务文件传输,包括镜像、安装包、构建产物、测试夹具、附件、成果和归档;小文件交换必须校验 SHA-256、权限并清理
main 控制面与受限自动化发起点;以公网 HTTPS WebDAV 客户端写入受限目录 系统云盘回源、对象数据转发、节点文件中转和文件缓存
101 项目控制与发布协调;唯一受限 Project 单向控制器;不承担生产云盘和普通 Worker Runtime、Bridge、云盘后端、双向同步、WebDAV 挂载
103 通用计算与 Nomad Worker;从 Cloudreve 公网 HTTPS 直接下载登记输入 云盘运行位、云盘数据库、WebDAV 凭据、文件系统挂载和节点间文件传输

3. Cloudreve 使用边界

  • 当前 Cloudreve 使用官方 master 单机模式与 dd 本地持久化存储,保持现网部署不变。
  • Cloudreve 既有个人文件不属于 AgentMeshOS 自动化管理范围,禁止扫描、迁移、删除或重组。
  • AgentMeshOS 自动化只使用受限的 File-Hub WebDAV 空间;RR Runtime 从本机 /root/.codex/credentials/file-hub.env 读取凭据,文件必须为 root:root 0600。101 的本机系统自动化同样只读取自己的同路径凭据,两节点不得复制或互相注入凭据。旧 /etc/agentmeshos/cloudreve-system-webdav.env 仅作为迁移回退材料保留,待用户删除旧 DAV 账号后再退役。独立 Project 数据库与备份凭据不属于本迁移范围。
  • 系统 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。这证明现有 AgentMeshOS 系统自动化账户被限制在专属空间;root-only 仅描述主节点凭据文件为 root:root 0600,不表示 Cloudreve 管理员权限,也不需要创建 root/admin 账户。
  • 业务文件必须统一走 cloud.yohan.fun 公网 HTTPS 数据面。该规则覆盖所有业务文件,而不仅是用户上传:镜像、安装包、构建产物、测试夹具、附件、成果、归档和恢复包均不得通过 SSH、Tailnet、Nomad 节点间路径、主节点代理或 Worker 间复制传送。另允许小于 1 MiB 的受控脚本、配置、凭据和紧急交换文件临时经节点控制链路传输,但必须校验来源、目标、SHA-256、权限并清理临时文件。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 目录,也不得与成果中心混用;101 当前不运行 Project 双向实时同步,历史专用凭据和脚本不得重新启用。

Project 独立项目库(与 101 暂不同步,RR 已退役)

  • Cloudreve 既有 Project 根目录保持原路径,不迁入 AgentMeshOS-长期,也不由 Runtime StorageAdapter 管理。
  • RR 不再通过 WebDAV、rclone 或挂载访问 Project;不得恢复旧同步配置、服务或 timer。
  • AgentMeshOS 项目代码权威为 101 /root/project/AgentMeshOS 和 GitHub,RR 只消费发布载荷。
  • 101 只允许一个受限单向控制器将 /root/project 写入账号根为 project: 的 Cloudreve Project。控制器以本地清单识别变更,不运行远端递归全量列举,使用单实例锁、根目录健康探针、每轮文件数/并发/请求速率/带宽上限和失败跳过;删除默认仅生成审计候选,必须显式启用后才可逐项执行。Cloudreve 通道按镜像语义随源删除远端已移除对象,本地运行报告按固定保留期自动清理,不得无限追加。不得创建 WebDAV 挂载、bisync 或远端到本地写入。
  • Project 专用凭据不作为当前运行能力;103、Runtime、OmniRoute、模型、MCP、浏览器和 RR 均不得获得或重新启用该凭据。

全局自动备份边界

  • 所有明确需要回滚的内容统一进入 101 /srv/codex-hub-backup:Project 变更前对象与状态、/root/project/AgentMeshOS Git bundle、AgentMeshOS root-only 配置、相关 systemd 定义、同步控制器版本和必要的数据库/运行状态快照。
  • 101 节点角色恢复备份由 agentmeshos-101-role-backup.timer 每日执行;历史 Project 同步备份只用于恢复和审计,不再由实时同步事件追加。备份目录使用 0700,文件使用最小权限,并保存 SHA256SUMS。
  • 101 必须运行 agentmeshos-backup-health-check.timer,至少每 5 分钟检查 Project 云盘同步、DD 异机副本、Project 本机快照、101 角色恢复备份和 Codex Hub 本机备份;任何失败、超时、过期或备份盘异常都必须写入 A-MESHOS Console 告警中心,恢复后由同一组件上下文发送 HEALTHY 事件关闭活动告警。Project 本机快照按 daily=3、weekly=2、monthly=3 和 major=7 天 自动保留;DD 异机副本保留 2 份历史,隔离区按 14 天清理,并在写入前检查远端可用空间。Codex Hub 本机恢复快照最多保留 10 份,写入前先清理到可容纳新快照的数量并预测本次写入空间;快照必须排除 temp、.venv、node_modules、构建产物和缓存目录,避免把临时归档包无限重复写入独立备份盘。
  • /backup 当前在系统盘,不得作为独立备份目标;独立盘未挂载、UUID/设备不符或空间不足时,备份任务失败并报警,不得静默改写其他路径。

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 39062 TCP 中转与相关 Runtime S3 凭据
  • KodBox 外部 NFS 挂载与相关维护/恢复机制

历史迁移与故障页面只保留为事实记录,不可用作当前部署或恢复指引。