先给项目上 Git,再给串流补个剪贴板
今天的东西,其实从昨晚那次 git init 开始。
前几天一直让不同的 AI 接力改 Blog 和 status。没有 Git 的时候,后来的人不知道上一位改了什么,只能把几十 KB 的 app.js、style.css 和 README 重新通读一遍。读完烧掉一堆 token,最后还不一定能确认哪几行是新改的。
这就很像接班的人找不到交接本,只能把整个办公室翻一遍。
先让 Git 记住上一手
所以先把 Blog 和 status 分别建成了本地 Git 仓库。没有在 ~/AI 顶层套一个大仓库,因为两个项目互不相干,旁边还放着 .secrets,分开管理边界更干净。
第一次提交之前先写 .gitignore。这一步不能省:本地仓库以后也可能加远端,今天误提交进去的密钥,到时候会连着整段历史一起推上去。
- Blog 忽略部署快照和系统杂物,HTML、CSS、JS、文章原稿和部署脚本正常跟踪。
- status 直接忽略整个
data/,里面既有 SwitchBot、远程 GPU 的凭据,也有每两秒变化的历史数据和内网配置。 - voice 没有另建仓库。里面的 VibeStick 本来就自带 Git 和远端,
llama.cpp又是可重新下载的大体积第三方文件,再套一层只会把事情弄乱。
两个仓库目前都是纯本地的 main,没有推到任何远端。以后每次改完、验证通过就自动提交,不再留一堆“这到底是谁动的”现场。
Git 不是拿来压缩正文的。它省的是下一位接手时重新摸清状态的成本。git diff 看改动,git log 看原因,几百个字能解决的事情,不用再读几万个字。
Git 当天就开始干活
仓库建好之后,status 马上又改了两轮。
第一轮是 Claude 额度。原来的 status 只读取 ~/.claude/.credentials.json,自己不会续期。只有我打开 Claude Code 或 VS Code 插件时,客户端才顺手刷新 token。于是我不用 Claude,额度面板反而会过期冻住;我一用,它又活了。
最后加了一个独立的 Node 续期脚本和 systemd 用户定时器,每 30 分钟检查一次,快过期才刷新。status 继续只读额度,不需要拿到写登录态的权限。
中间还踩了个很像笑话的坑:Python 和 curl 请求 OAuth 端点都收到 429,一开始以为真被限流,安静等了一夜也没用。第二天翻本机官方客户端代码确认端点,再换 Node 的网络栈,第一发就成功。那个 429 更像 WAF 看 TLS 指纹不顺眼,并不是真的“请求太多”。
第二轮是 Codex 自己改规则。上游把 5 小时额度窗取消了,只剩周额度,原来并排的两张额度卡突然一边三行、一边一行。数据没坏,界面只是被厂商改空了。于是 Codex 卡补上 Credits 余额、限额重置券和“5 小时限额已取消”的说明。哪天上游把双窗口加回来,说明也会自动消失。
这两轮都已经各自落成 commit。厂商爱改来改去,至少我这边知道自己为什么跟着改。
副屏上的 Linux 少了一块剪贴板
下午开始收拾另一个天天都能碰到的小麻烦。
这台 Linux 平时主要靠 Sunshine + Moonlight 串到副屏上用。画面、声音、键盘和鼠标都有了,唯独剪贴板没有。主屏上复制一段命令,到了副屏里的 Linux 还得重新打;Linux 里看到一个链接,想贴回另一台机器也不行。
短句还能忍,长命令和中文就只剩下折磨。串流看起来像本地桌面,复制粘贴时又突然提醒我:不是,你还隔着一台机器。
SyncClipboard:Linux 自己当服务端
最后装了 SyncClipboard 3.1.8。没有另外搭一套服务,直接让 Linux 客户端打开内置服务器,自己连自己的 5033 端口,另一端也连到这台 Linux。
配置上做了几件事:
- 服务端设置独立账号和随机密码,凭据只留在本机配置里。
- 先用 HTTP 跑通,再给局域网签一套自己的根证书和服务器证书,改成 HTTPS。
- 证书覆盖局域网地址、localhost 和主机名;另一端导入根证书后正常校验,没有打开“忽略证书错误”。
- 文本、图片和文件同步都打开,单个文件上限 20 MB。
- KDE 登录后自动启动,窗口默认隐藏,平时不用再管它。
这套东西只在家里局域网解决一件事,不准备再给它套公网、域名和反向代理。能少养一个公开服务,就少一个以后忘了更新的东西。
Wayland 还是要交学费
第一次跑起来时,两边确实能同步,但中文偶尔会变成一排问号。
日志里能看见 SyncClipboard 同时在尝试 Avalonia、X11 和命令行剪贴板后端。可我现在是 KDE Plasma Wayland,会话里没有 xclip,真正该走的是 wl-clipboard。几条路径混在一起最可疑:英文看不出问题,中文先暴露了。
装好 wl-clipboard 后,又在 SyncClipboard 的配置里禁用 Avalonia 和 xclip 来源,强制它走 Wayland 原生的 wl-copy / wl-paste。重启后日志明确显示 wl-clipboard initialized。
最后来回测了几轮:Windows 复制中文到 Linux,Linux 再复制中文、网址和一整段网页文字回去,都能原样到达。图片和文件也能走同一套同步。那个最基础的 Ctrl+C / Ctrl+V,终于不用再看机器脸色。
今天的交接本
回头看,Git 和 SyncClipboard 好像不是一类东西,其实干的是同一件事:减少重复劳动。
Git 负责告诉下一位接盘的人,上一位到底改了什么;SyncClipboard 负责告诉另一台机器,我刚才到底复制了什么。一个给项目补上下文,一个给串流补上下文。
现在 Sunshine + Moonlight 不只把 Linux 的画面送到副屏,剪贴板也终于跟了过来。桌面还是远程的,用起来总算不用处处提醒我它很远。
今天没造什么新轮子,只是把几本该有的交接本补齐了。能少重做一次,就算机器没白开。