<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Wenkang's BLOG</title><link>https://jiwenkang.com/</link><description>Recent content on Wenkang's BLOG</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 16 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jiwenkang.com/index.xml" rel="self" type="application/rss+xml"/><item><title>菜单栏里的 Grok 额度总是过期：一个六小时 token 引发的陈旧读数，以及给上游提的修复</title><link>https://jiwenkang.com/posts/2026/agent-hud-grok-stale-token/</link><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/posts/2026/agent-hud-grok-stale-token/</guid><description>&lt;blockquote&gt;
&lt;p&gt;我在 Mac 上用一个菜单栏/刘海小工具（Agent HUD，我 fork 了一份）盯着各个 AI 的额度。Grok 那一栏总是显示一句黄色的 &amp;ldquo;Sign in to Grok CLI, then refresh quota&amp;rdquo; 加一个几天前的旧百分比，哪怕我账号明明一直登着。&lt;/p&gt;
&lt;p&gt;这篇记这件事怎么一层层查到根因（不是它说的&amp;quot;没登录&amp;quot;），为什么升级上游没能彻底修好，以及我最后写的那个修复——顺手给上游开了 PR。&lt;/p&gt;
&lt;p&gt;所有 token、第三方账号邮箱均未出现；仓库名、PR 号是公开的 GitHub 信息。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>微信在 Mac 上一截图就是空白：不是系统被写了 flag，是 setSharingType:</title><link>https://jiwenkang.com/posts/2026/wechat-screenshot-blank/</link><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/posts/2026/wechat-screenshot-blank/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Mac 上的微信，一截图主窗口就是一片空白。第一反应是&amp;quot;是不是有人往 &lt;code&gt;/Applications&lt;/code&gt; 里写了什么东西&amp;quot;。查下来根因在微信自己身上：它给自己的窗口调了 &lt;code&gt;setSharingType:&lt;/code&gt;，让系统截图和录屏只能拍到空白。&lt;/p&gt;
&lt;p&gt;这篇记怎么排除&amp;quot;系统/App 被篡改&amp;quot;，怎么在二进制里定位到那个开关，为什么这个版本里找不到关它的地方，以及不改客户端能怎么正常截图。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>周记 2026-10-09 → 2026-10-16</title><link>https://jiwenkang.com/logs/2026-10-16/</link><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/logs/2026-10-16/</guid><description>&lt;p&gt;这周大半时间在折腾盯 AI 额度的工具和几个自用小工具。&lt;/p&gt;
&lt;h2 id="agent-hud-的-grok-额度总是过期"&gt;Agent HUD 的 Grok 额度总是过期&lt;/h2&gt;
&lt;p&gt;菜单栏工具里 Grok 一栏长期显示&amp;quot;去登录 Grok CLI&amp;quot;加一个几天前的旧百分比，哪怕账号一直登着。查下来根因是 Grok CLI 的 access token 只活 6 小时、且只有 CLI 启动时才续期，工具直接读 &lt;code&gt;~/.grok/auth.json&lt;/code&gt; 里的 token 去查接口，过期就拿 401、只能显示旧读数。我给 fork 写了个修复：过期时先跑一次 &lt;code&gt;grok models&lt;/code&gt; 让 CLI 自己续期再重读，自己绝不碰 refresh_token，并给上游开了 PR。详见&lt;a href="https://jiwenkang.com/posts/2026/agent-hud-grok-stale-token/"&gt;这篇&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>远程给朋友修 VPN：有了 AI 之后，一次运维排障是怎么进行的</title><link>https://jiwenkang.com/posts/2026/ai-assisted-vpn-troubleshooting/</link><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/posts/2026/ai-assisted-vpn-troubleshooting/</guid><description>&lt;blockquote&gt;
&lt;p&gt;朋友坐在我家客厅，MacBook 上的 OpenVPN Connect 死活连不上我 NAS 的 VPN。我没碰她的电脑，只把一条 &lt;code&gt;ssh&lt;/code&gt; 命令丢给了 AI agent（Claude Code）。&lt;/p&gt;
&lt;p&gt;一个小时后：VPN 通了；她的设备在 NAS 上有了专属的出口策略；桌面上多了三个带图标的小程序，双击就能用。&lt;/p&gt;
&lt;p&gt;这篇文章记两件事：&lt;strong&gt;故障本身是怎么一层层剥开的&lt;/strong&gt;，以及&lt;strong&gt;有了 AI 之后，这类工作和以前到底哪里不一样了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;文中所有公网 IP、密码、商业服务商品牌、个人域名与真实用户名均已抹去或改写，只保留可复用的结构。内网地址与真实环境一致（&lt;code&gt;192.168.1.0/24&lt;/code&gt;，网段约定同&lt;a href="https://jiwenkang.com/posts/2026/home-network-topology/"&gt;前两篇&lt;/a&gt;），VPN 段记作 &lt;code&gt;172.x.y.0/24&lt;/code&gt;，对外端口记作 &lt;code&gt;&amp;lt;VPN端口&amp;gt;&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>家庭网络分层拓扑（二）：一条策略路由如何让 VPN 网关人间蒸发</title><link>https://jiwenkang.com/posts/2026/vpn-gateway-vanished/</link><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/posts/2026/vpn-gateway-vanished/</guid><description>&lt;blockquote&gt;
&lt;p&gt;上一篇&lt;a href="https://jiwenkang.com/posts/2026/home-network-topology/"&gt;《家庭网络分层拓扑：从远端笔记本到双出口的完整链路》&lt;/a&gt;讲了这套拓扑&lt;strong&gt;该怎么搭&lt;/strong&gt;。这一篇讲它&lt;strong&gt;怎么坏的&lt;/strong&gt;——一个只错了一行、却让人绕了整整一晚的故障。&lt;/p&gt;
&lt;p&gt;最讽刺的地方在于：&lt;strong&gt;上一篇里已经写对了那一行，落地时却没抄进去。&lt;/strong&gt; 而上一篇紧接着的另一句解释，恰好让那一行看起来可以省。&lt;/p&gt;
&lt;p&gt;文中所有公网 IP、商业服务商品牌、个人域名与主机名均已抹去，只保留可复用的结构。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="一tldr"&gt;一、TL;DR&lt;/h2&gt;
&lt;p&gt;VPN 客户端可以正常上网、可以访问家里任何一台内网机器，唯独&lt;strong&gt;访问不了 VPN 网关 &lt;code&gt;172.x.y.1&lt;/code&gt; 本身&lt;/strong&gt;——ping 不通，全端口静默。&lt;/p&gt;</description></item><item><title>OpenWrt 双出口分流：在不动主链路的前提下增加第二个境外出口</title><link>https://jiwenkang.com/posts/2026/openwrt-dual-egress/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/posts/2026/openwrt-dual-egress/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文记录一次在&lt;strong&gt;已承担生产出口&lt;/strong&gt;的 OpenWrt 路由器上，安全地接入第二个境外 WireGuard 出口，并按域名分流的完整思路与方法。&lt;/p&gt;
&lt;p&gt;核心诉求：主出口是全家的生命线，&lt;strong&gt;绝对不能被第二出口覆盖或拖垮&lt;/strong&gt;；第二出口只用来把 YouTube、Spotify 这类大流量按域名单独引走。&lt;/p&gt;
&lt;p&gt;文中所有服务器 IP、商业 VPN 服务商品牌、个人域名均已抹去，只保留可复用的方法。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>家庭网络分层拓扑：从远端笔记本到双出口的完整链路</title><link>https://jiwenkang.com/posts/2026/home-network-topology/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/posts/2026/home-network-topology/</guid><description>&lt;blockquote&gt;
&lt;p&gt;上一篇&lt;a href="https://jiwenkang.com/posts/2026/openwrt-dual-egress/"&gt;《OpenWrt 双出口分流》&lt;/a&gt;讲的是&lt;strong&gt;旁路网关内部&lt;/strong&gt;怎么做第二出口。这一篇把镜头拉远，讲整张网络的&lt;strong&gt;分层拓扑&lt;/strong&gt;：一台远端的公司笔记本，是怎么穿过 NAS 的 VPN、被两段策略路由接力、最终从境外出口上网的；以及家里每一类设备各自走哪条路、为什么。&lt;/p&gt;
&lt;p&gt;文中所有公网 IP、商业服务商品牌、个人域名与主机名均已抹去，只保留可复用的结构。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>服务</title><link>https://jiwenkang.com/services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/services/</guid><description>&lt;h2 id="services--digital-products"&gt;Services &amp;amp; Digital Products&lt;/h2&gt;
&lt;p&gt;这个博客主要记录我的技术学习、工作经验和个人项目。随着内容越来越多，我把其中一部分可以被复用、交付或进一步咨询的内容，整理到了独立页面：&lt;/p&gt;
&lt;h4 id="-ji-wenkang-技术服务与数字资源"&gt;🛒 &lt;a href="https://buy.jiwenkang.com/"&gt;Ji Wenkang 技术服务与数字资源&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;它不是一个传统意义上的“商品店”，更像是这个博客的延伸：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;博客&lt;/strong&gt;：记录学习路径、技术文章、项目索引和个人经历；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buy 页面&lt;/strong&gt;：整理可以预约、购买、交付或进一步展开的服务与资源；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt Library / Vibe Coding&lt;/strong&gt;：沉淀可复用的 Prompt 包、项目手册和自动化工具；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Red Hat / KVM / Virtio-Win / OpenShift&lt;/strong&gt;：沉淀技术咨询、排障笔记和实验环境方案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合访问 Buy 页面的场景：&lt;/p&gt;</description></item><item><title>关于</title><link>https://jiwenkang.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/about/</guid><description>&lt;h2 id="about-me"&gt;About me&lt;/h2&gt;
&lt;script src="https://platform.linkedin.com/badges/js/profile.js" async defer type="text/javascript"&gt;&lt;/script&gt;
&lt;div class="badge-base LI-profile-badge" data-locale="en_US" data-size="medium" data-theme="light" data-type="VERTICAL" data-vanity="wenkang-ji-b2120324a" data-version="v1"&gt;&lt;a class="badge-base__link LI-simple-link" href="https://cn.linkedin.com/in/wenkang-ji-b2120324a?trk=profile-badge"&gt;Wenkang Ji&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;【从 2016 年 05 月 10 日 到 2022 年 05 月 14 日】拥有 &lt;a href="https://www.cnblogs.com/itxdm"&gt;博客园&lt;/a&gt; 6 年撰稿经验，50w 阅读量技术博主。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;九九后，在沪，前 &lt;a href="https://linux.cn"&gt;linux.cn&lt;/a&gt; 开发组成员，前腾科网络技术、交大慧谷红帽课程讲师。详见 Bilibili：&lt;a href="https://www.bilibili.com/video/BV1iR4y1c7o4"&gt;文康的读书经历&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;【从 2018 年到 2023 年，红帽政策原则无法继续】一线城市培训机构 5 年讲师&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已培训超千名工程师，遍布各大高校、电信、金融、电商等相关行业。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;【从 2019 年 5 月 29 日 到 2023 年 2 月 18 日】三年半兔兔铲屎官 🐰&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tips：兔子是非常聪明的宠物，饲养需要多喂水，大量供草，尽早绝育。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;【2026 年 06 月 15 日至今】Red Hat Customer Success Executive（CSE），上海，APAC SA &amp;amp; Adoption 团队。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;帮助客户制定并推进客户成功计划，跟踪产品采用情况与业务目标；协调销售、技术、支持和交付团队，推动阻塞问题解决、主动管理风险，并收集客户反馈。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;【从 2022 年 02 月 至 2026 年 06 月】Red Hat 虚拟化团队，研发与质量工程（R&amp;amp;D/QE）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://jiwenkang.com/redhat/%E8%B4%A8%E9%87%8F%E5%B7%A5%E7%A8%8B%E5%B8%88%E7%9A%84%E6%97%85%E7%A8%8B%EF%BC%9A%E4%BB%8E%E5%AD%A6%E4%B9%A0%E8%80%85%E5%88%B0%E9%A2%86%E5%AF%BC%E8%80%85.mp4"&gt;质量工程师的旅程：从学习者到领导者&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在虚拟化团队期间参与的开源项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Our Goal: &lt;a href="https://jiwenkang.com/redhat/Virtio-win%20%E6%80%A7%E8%83%BD%E6%9E%B6%E6%9E%84%E8%A7%A3%E6%9E%90.png"&gt;Virtio-Win 性能架构解析&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Virtio-Win 开源项目：&lt;a href="https://github.com/virtio-win/kvm-guest-drivers-windows"&gt;kvm-guest-drivers-windows&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html"&gt;Download latest or stable binary drivers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Virtio-Win 安装包：&lt;a href="https://github.com/virtio-win/virtio-win-guest-tools-installer"&gt;virtio-win-guest-tools-installer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试框架：&lt;a href="https://github.com/avocado-framework/avocado-vt/"&gt;avocado-framework&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试用例：&lt;a href="https://github.com/autotest/tp-qemu/"&gt;tp-qemu&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>知识库</title><link>https://jiwenkang.com/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jiwenkang.com/links/</guid><description>&lt;h2 id="tech-knowledges"&gt;Tech Knowledges&lt;/h2&gt;
&lt;h4 id="general-linux"&gt;General Linux&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/filesystem_base_version.html"&gt;文件系统基础版&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jiwenkang.com/redhat/typora/202208281647545.png"&gt;Linux 的启动流程图&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jiwenkang.com/redhat/typora/202208221147727.png"&gt;Linux 下 grub 引导修复&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linux.cn/article-7718-1.html"&gt;如何将 Linux 系统转移至 LVM 卷&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/linuxdate_recover.html"&gt;Linux 意外操作后如何进行数据抢救&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="linux-commond-line"&gt;Linux Commond Line&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/5936907.html"&gt;Linux 下 find 命令&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linux.cn/article-7475-1.html"&gt;Linux 下 OpenSSH 高级运用两则&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="cshell-programing"&gt;C/Shell Programing&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/c_pointer2.html"&gt;一文让你明白C语言中的指针 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/c_pointer_of_pointer.html"&gt;C 语言中指针的指针究竟是个啥&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/C_language_struct_structure.html"&gt;C 语言 struct 结构体&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/c_visiting_from_function.html"&gt;C 语言之函数访问 &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.cnblogs.com/itxdm/p/something_of_shellscirpt.html"&gt;Linux 下 Shell 脚本几种基本命令替换区别&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://jiwenkang.com/BashShell/index.html"&gt;Linux 下 Shell 脚本的基础/高级编程&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>