# Calculet NPU 远端恢复原状计划 制定时间:2026-08-01 状态:已于 2026-08-02 00:54 执行完成并通过独立验收。本文件保留为清理前计划和基线;实际结果见 `Calculet-NPU-远端与本机清理完成记录-20260802.md`。 ## 恢复目标 1. 删除本次在样机生成的全部归档、分片、清单和分析源码。 2. 删除本次环境盘点写入的 Shell 历史,同时保留对方原有历史和后续新增历史。 3. 确认没有遗留下载、模型服务、测试程序、端口监听或 NPU 设备占用。 4. 不修改对方原有容器、镜像、驱动、系统服务和用户配置。 5. 回收约 90 GiB 磁盘空间,并给出清理前后审计记录。 ## 当前恢复基线 - 远端归档目录:`/home/user2/calculet-analysis-export` - 精确占用:`96,590,271,861` 字节,共 4,883 个文件 - 根文件系统:总计 `982,240,026,624` 字节,已用 `246,533,816,320` 字节,可用 `685,735,694,336` 字节 - Shell 历史:`/home/user2/.bash_history` - Shell 历史当前状态:69 行、权限 `600`、所有者 `user2:user2` - 本次新增历史范围:第 53-69 行 - 第 53-69 行 SHA-256:`a5cc09c89ea56d8c79a1be6da9f402d13d9d74ecace8f25918f19601cac4eb36` - 对方原有历史范围:第 1-52 行 - 历史文件 mtime:`2026-08-01 16:26:26 +0800` - 当前没有 NPU 设备占用、8031 监听或模型服务进程 - 原有命名容器 `calculet-llama-v0.4.8_Qwen` 仍为 `created` 状态 ## 清理前置条件 以下条件必须全部满足: 1. 项目负责人明确确认可以开始删除远端暂存资料并处理 shell 历史;全部资料已取回不等于自动授权删除。 2. 已批准范围内的所有归档都存在本地完成标志,并通过分片、整包和必要的逐文件 SHA-256 校验。 3. 当前已批准的优先第 1-4 步完成标志存在:`remote-export/PRIORITY-1-4-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt`。 4. 当前四个优先归档已按 `LOCAL-PRIORITY-1-4-ARCHIVES.sha256` 复核通过。 5. `llama.cpp` 已通过 `git fsck --full`,HEAD 为 `fd9bd632f346085920d523dd307a3e4c11cc0a05`。 6. 容器 `/home` 完成标志 `remote-export/STEP-5-CONTAINER-HOME-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 存在,整包校验通过。 7. OCI 完成标志 `remote-export/STEP-6-CONTAINER-OCI-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 存在,整包、25 个 blob 和所有描述符引用通过。 8. 完整模型完成标志 `remote-export/STEP-8-COMPLETE-MODEL-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 存在,68 个文件已按 `MODEL-FILES.sha256` 自动和独立复核两次。 9. 本地输出目录已有至少一份额外备份,或者项目负责人明确接受单副本风险。 10. 已通知后续测试同事清理时间窗,避免清理时仍有人使用相同账号。 任一条件不满足时,不删除远端归档。 ## 执行阶段 ### 阶段 1:停止传输并固定状态 - 暂停并结束本地 detached screen 下载任务。 - 确认远端不存在指向 `calculet-analysis-export` 的 rsync sender。 - 保存清理前 `df`、进程、端口、Podman、驱动参数和 NPU 设备占用快照。 - 再次记录待删除路径的大小、所有者、权限和文件数。 ### 阶段 2:安全处理 Shell 历史 不能直接截断 `.bash_history`,因为后续同事可能已经追加新命令。应执行以下保护逻辑: 1. 重新计算当前第 53-69 行 SHA-256。 2. 只有指纹仍为 `a5cc09c89ea56d8c79a1be6da9f402d13d9d74ecace8f25918f19601cac4eb36` 时才自动处理。 3. 原样保留第 1-52 行。 4. 删除第 53-69 行。 5. 原样保留第 70 行及之后由其他同事新增的历史。 6. 通过同目录临时文件和原子重命名更新,恢复 `600` 和 `user2:user2`。 7. 如果行号或指纹不匹配,立即中止并人工比对,不做猜测性修改。 ### 阶段 3:删除本次远端持久文件 精确清理范围: - `/home/user2/calculet-analysis-export` - `/home/user2/llama.cpp-src-fd9bd632.tar.gz` - `/home/user2/calrt-focused-src-fd9bd632.tar.gz` - `/home/user2/calbin_inspect.cpp` 不得使用 `/home/user2`、`/home` 或包含通配符的宽范围删除命令。删除前必须逐项 `stat` 并确认所有者为 `user2`。 ### 阶段 4:远端恢复验证 - 上述四个目标均不存在。 - 归档相关 rsync、tar、zstd、split 和 sha256sum 进程为 0。 - `llama-server`、`calrt_smoke`、`calbin_inspect` 进程为 0。 - 8031 端口未监听。 - `/dev/calculet0` 无进程占用。 - 原有命名容器仍为 `created`,镜像 ID 未变化。 - 驱动参数保持:`poll_mode=0`、`dma_timeout_ms=30000`、`strict_validation=Y`、`calculet_log_level=6`、`max_boards=16`。 - 用户 crontab 仍为空,系统包数据库未因清理发生变化。 - 对比清理前后磁盘空间,预期回收约 90 GiB。 ### 阶段 5:测试方本地凭据与网络清理 远端验收完成后,再处理测试方 Mac: - 正常停止 OpenVPN,确认 `utun` 路由消失。 - 删除临时 VPN 配置、认证文件和日志。 - 删除包含 SSH 明文密码的本地 Expect 包装器。 - 删除样机 SSH `known_hosts` 记录前先确认后续不再需要连接。 - 仅在确认 OpenVPN 是本次专用安装且没有其他项目依赖时,才卸载本地 OpenVPN。 - 保留已验证的本地分析包、报告和校验记录。 ## 清理完成记录模板 执行时应补充: - 执行人和时间 - 本地归档验证标志及 SHA-256 结果 - Shell 历史处理前后行数和指纹 - 删除的四个精确路径 - 清理前后磁盘使用量 - 远端进程、端口、NPU、容器、镜像和驱动参数复核结果 - VPN 和本地凭据清理结果 - 对方环境负责人确认结果 ## 当前下载快照 快照时间:2026-08-02 00:35。第 1-8 步已全部完成,8 个本地归档合计 `21,078,519,107` 字节。 | 优先步骤 | 本地结果 | | --- | ---: | | 关键上下文 | 8,942,525 B,整包及 115 个文件通过 | | 基线分析归档 | 436,398,080 B,53/53 分片及整包通过 | | 无权重模型运行时 | 11,253,912 B,整包及 66 个文件通过,权重计数为 0 | | 完整 `llama.cpp` | 264,921,801 B,32/32 分片、整包、HEAD 和 `git fsck --full` 通过 | | 容器完整 `/home` | 740,994,223 B,89/89 分片、整包、gzip/tar 结构和解包通过 | | 完整 OCI 镜像 | 1,646,166,016 B,197/197 分片、整包、25 个 blob 和描述符引用通过 | | 完整 `/home/user2` | 1,684,911,580 B,201/201 分片、整包、结构和查看副本通过 | | 完整模型归档 | 16,284,930,970 B,1,942/1,942 分片、整包及 68 个模型文件两轮通过 | 最终总标志 `remote-export/ALL-REQUESTED-DATA-ASSEMBLY-AND-VERIFICATION-COMPLETE.txt` 已生成,8 个归档统一清单 `LOCAL-ALL-DOWNLOADED-ARCHIVES.sha256` 全部匹配。当前远端没有 rsync sender 或运行容器,VPN、远端暂存目录和本地凭据继续保留,尚未进入清理阶段。