BOB CHEN

NEW POST  ·  2026-07-13

GIT
+ CLIP

LOG FILE / SAVE 004

先给项目上 Git,再给串流补个剪贴板

今天的东西,其实从昨晚那次 git init 开始。

前几天一直让不同的 AI 接力改 Blog 和 status。没有 Git 的时候,后来的人不知道上一位改了什么,只能把几十 KB 的 app.jsstyle.css 和 README 重新通读一遍。读完烧掉一堆 token,最后还不一定能确认哪几行是新改的。

这就很像接班的人找不到交接本,只能把整个办公室翻一遍。

先让 Git 记住上一手

所以先把 Blogstatus 分别建成了本地 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 的画面送到副屏,剪贴板也终于跟了过来。桌面还是远程的,用起来总算不用处处提醒我它很远。

今天没造什么新轮子,只是把几本该有的交接本补齐了。能少重做一次,就算机器没白开。