工作 Work,生活 Life,记录 Record —— 兔兔 🐰 冲冲冲
The brain has cache expiration too. I am leaving this here for my future forgetful self — and for you, human reader, as well as my AI agents.
文中出现的地址一律是家庭内网(192.168.1.0/24、*.local),外网不可达。
工作 Work,生活 Life,记录 Record —— 兔兔 🐰 冲冲冲
The brain has cache expiration too. I am leaving this here for my future forgetful self — and for you, human reader, as well as my AI agents.
文中出现的地址一律是家庭内网(192.168.1.0/24、*.local),外网不可达。
我有个自己写的小工具(cfssh),用 Cloudflare Tunnel + Access 让别人电脑上的 SSH 能被我远程连进去。某天我这边的 ssh 突然只剩一句 websocket: bad handshake,连不上了。 这篇记两件事:这句报错背后的几种可能,怎么用几条 curl 把问题一刀切到"是对端隧道掉了、还是对端 sshd 没起";以及这次的真正原因(QUIC 连接超时断开后没自己恢复),和我据此给工具加的自动重连。 文中的域名、令牌、公网地址一律用占位符,只保留可复用的结构。 ...
桌上有一块 ESP32-P4 的小板,用来显示各个 AI 的额度。它平时直连 Mac 上的采集程序(bridge);直连不通时,退回去走一个 relay(经过 Cloudflare Tunnel)。 这周我把 relay 从 192.168.1.244 搬到了 Mac 上,搬完板子右上角就一直是 × no link。我一开始以为是搬迁搞坏的。 这篇记它怎么被证伪,以及最后落到的根因:板子从 DHCP 拿到的网关是 192.168.1.1,经它访问 Cloudflare 有相当比例的连接超时;而我的 Mac 走的是旁路网关 192.168.1.254,一直正常。 文中域名、token、Wi-Fi 信息均已抹去;内网地址是真实的。 ...
这周的主线是两件事:wenkangnas.local (192.168.1.4) 上一台虚拟机的 CPU 被吃满,一路查到 OpenClaw 网关的内存问题;以及把桌上 ESP32 小板依赖的中继服务从虚拟机搬到了 Mac 上,顺手把板子一直显示的 no link 查清楚。 NAS CPU 压力大:其实是 OpenClaw 网关在漏内存 NAS(4 核)load 到了 5.5–6.3,全是 CPU 压力,IO 压力很低。top 里是两个 qemu 进程,对上 VMM 里的两台虚拟机;大头是 192.168.1.244(2 vCPU / 4 GB,已经跑了 35 天)。登进去看,是 OpenClaw gateway 的 node 进程堆内存涨到了 --max-old-space-size=2048 的上限,Node 一直在 GC,VM 同时在大量 swap(swap 一度用到 3.9 GB),这些 swap IO 落到 NAS 上,NAS 的内核态 CPU 也跟着高。journal 里能看到它之前以 ABRT 崩过两次(10/11 和 10/14),大约三天一次,很符合堆耗尽。 ...
我在 Mac 上用一个菜单栏/刘海小工具(Agent HUD,我 fork 了一份)盯着各个 AI 的额度。Grok 那一栏总是显示一句黄色的 “Sign in to Grok CLI, then refresh quota” 加一个几天前的旧百分比,哪怕我账号明明一直登着。 这篇记这件事怎么一层层查到根因(不是它说的"没登录"),为什么升级上游没能彻底修好,以及我最后写的那个修复——顺手给上游开了 PR。 所有 token、第三方账号邮箱均未出现;仓库名、PR 号是公开的 GitHub 信息。 ...
Mac 上的微信,一截图主窗口就是一片空白。第一反应是"是不是有人往 /Applications 里写了什么东西"。查下来根因在微信自己身上:它给自己的窗口调了 setSharingType:,让系统截图和录屏只能拍到空白。 这篇记怎么排除"系统/App 被篡改",怎么在二进制里定位到那个开关,为什么这个版本里找不到关它的地方,以及不改客户端能怎么正常截图。 ...
这周大半时间在折腾盯 AI 额度的工具和几个自用小工具。 Agent HUD 的 Grok 额度总是过期 菜单栏工具里 Grok 一栏长期显示"去登录 Grok CLI"加一个几天前的旧百分比,哪怕账号一直登着。查下来根因是 Grok CLI 的 access token 只活 6 小时、且只有 CLI 启动时才续期,工具直接读 ~/.grok/auth.json 里的 token 去查接口,过期就拿 401、只能显示旧读数。我给 fork 写了个修复:过期时先跑一次 grok models 让 CLI 自己续期再重读,自己绝不碰 refresh_token,并给上游开了 PR。详见这篇。 ...
朋友坐在我家客厅,MacBook 上的 OpenVPN Connect 死活连不上我 NAS 的 VPN。我没碰她的电脑,只把一条 ssh 命令丢给了 AI agent(Claude Code)。 一个小时后:VPN 通了;她的设备在 NAS 上有了专属的出口策略;桌面上多了三个带图标的小程序,双击就能用。 这篇文章记两件事:故障本身是怎么一层层剥开的,以及有了 AI 之后,这类工作和以前到底哪里不一样了。 文中所有公网 IP、密码、商业服务商品牌、个人域名与真实用户名均已抹去或改写,只保留可复用的结构。内网地址与真实环境一致(192.168.1.0/24,网段约定同前两篇),VPN 段记作 172.x.y.0/24,对外端口记作 <VPN端口>。 ...
上一篇《家庭网络分层拓扑:从远端笔记本到双出口的完整链路》讲了这套拓扑该怎么搭。这一篇讲它怎么坏的——一个只错了一行、却让人绕了整整一晚的故障。 最讽刺的地方在于:上一篇里已经写对了那一行,落地时却没抄进去。 而上一篇紧接着的另一句解释,恰好让那一行看起来可以省。 文中所有公网 IP、商业服务商品牌、个人域名与主机名均已抹去,只保留可复用的结构。 一、TL;DR VPN 客户端可以正常上网、可以访问家里任何一台内网机器,唯独访问不了 VPN 网关 172.x.y.1 本身——ping 不通,全端口静默。 ...
本文记录一次在已承担生产出口的 OpenWrt 路由器上,安全地接入第二个境外 WireGuard 出口,并按域名分流的完整思路与方法。 核心诉求:主出口是全家的生命线,绝对不能被第二出口覆盖或拖垮;第二出口只用来把 YouTube、Spotify 这类大流量按域名单独引走。 文中所有服务器 IP、商业 VPN 服务商品牌、个人域名均已抹去,只保留可复用的方法。 ...
上一篇《OpenWrt 双出口分流》讲的是旁路网关内部怎么做第二出口。这一篇把镜头拉远,讲整张网络的分层拓扑:一台远端的公司笔记本,是怎么穿过 NAS 的 VPN、被两段策略路由接力、最终从境外出口上网的;以及家里每一类设备各自走哪条路、为什么。 文中所有公网 IP、商业服务商品牌、个人域名与主机名均已抹去,只保留可复用的结构。 ...