自家 homelab 里的三机同步引擎
一部手机加三台机器的随身工作站: 手机上起 Termux 与 proot Debian 当终端, 笔记在三台之间同步; 以 Claude Code 开发 bash 同步引擎, 冲突时保留两份, 配 216 条断言的回归测试.
homelab: 手机终端与三机同步1 段
锁屏 logcat 壁纸, 推配置, proot 排障, 冲突降级, 216 条断言一屏跑完
演示滚到这里时加载
这一段证明: 冲突时两份都留, 216 条断言全过
三台机器是笔记本 工作站与 NAS; 同步引擎 898 行 bash, 回归测试 822 行, 以 Claude Code 开发.
两边同时改了同一个文件, 远端的当正本, 本机的另存成一个带主机名和时间的冲突副本, 副本也会被同步出去.
本人带笔记本去没信号的地方, 发现它断网时一直在重试, 提出先判断有没有网; 引擎加断网预检时, 测试由 150 条断言扩到 216 条, 原有 150 条未改动.
由 systemd 定时器每 10 分钟拉起一次; 每个同步的仓有一个状态文件, 笔记编辑服务的首页徽章读的就是它.
手机一端是一台刷了 LineageOS 的手机: 锁屏壁纸每 0.5 秒渲染一次系统日志流, 解锁换成机队面板; Termux 开机起 sshd, 桌面小部件一键进 proot Debian 里的 tmux 常驻会话. 配置推回手机要经 /sdcard 中转, 并从设备现有目录抄 SELinux context. 代码由 Claude Code 写, 需求 真机验收与版式参数由本人定.
proot 的 link() 有 bug, dpkg 原子更新崩在 link 那步, 状态库 status 整个丢失; 先后猜过 seccomp 与 AppArmor, 实测后都撤回; 不能原地修, 改用 apt-get download 加 dpkg-deb -x 只解包装上 tmux.
配置层用 GNU Stow 管理, dotfiles 里 113 个脚本, 其中 tmux 相关的 41 个. 常驻服务之一是本地出图网页(Gradio), 以 systemd 用户服务运行, 支持文生图与参考图编辑, 每张图旁写一份元数据 JSON.
追问
追问 · 第 2 层为什么用 bash 不用 Python?
文档写的是引擎纯 bash+git+coreutils, 零第三方.
追问 · 第 2 层测试自己写错了怎么发现?
断言的期望值出自对旧脚本行为的对照与四轮双审的实跑复现.