<?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>TodayILearn on 乐的博客</title><link>https://liujiale.me/tags/todayilearn/</link><description>Recent content in TodayILearn on 乐的博客</description><generator>Hugo -- 0.163.1</generator><language>zh-CN</language><copyright>2015-2026 CC BY-NC-ND 4.0</copyright><lastBuildDate>Fri, 19 Jun 2026 14:04:11 +0800</lastBuildDate><atom:link href="https://liujiale.me/tags/todayilearn/index.xml" rel="self" type="application/rss+xml"/><item><title>解决 peon-ping 没声音的问题</title><link>https://liujiale.me/til/peon-ping-no-sound-ssh-audio/</link><pubDate>Tue, 07 Apr 2026 16:31:00 +0800</pubDate><guid>https://liujiale.me/til/peon-ping-no-sound-ssh-audio/</guid><description>&lt;h2 id="现象"&gt;现象&lt;/h2&gt;
&lt;p&gt;Claude Code 装了 peon-ping，按照设置本该在 agent 跑完任务、弹权限请求，这些本该有提示音的时候，一点动静都没有。配置看着没问题， &lt;code&gt;enabled: true&lt;/code&gt; ，音量 0.5，peasant 音效包也在。&lt;/p&gt;
&lt;h2 id="排查"&gt;排查&lt;/h2&gt;
&lt;p&gt;先开 debug 日志：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;peon debug on
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 触发一次事件后查看&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;peon logs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;日志里事件确实触发了， &lt;code&gt;category&lt;/code&gt; 也分配对了（ &lt;code&gt;task.complete&lt;/code&gt; 、 &lt;code&gt;input.required&lt;/code&gt; ），声音文件也选好了。但播放那行写着：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[play] backend=ssh file=PeasantYes1.wav volume=0.5 async=true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;backend=ssh&lt;/code&gt; 。这就是问题所在。&lt;/p&gt;
&lt;h2 id="原因"&gt;原因&lt;/h2&gt;
&lt;p&gt;peon-ping 的 &lt;a href="https://github.com/PeonPing/peon-ping/blob/main/peon.sh#L7-L30"&gt;&lt;code&gt;detect_platform()&lt;/code&gt;&lt;/a&gt; 函数在启动时检查 &lt;code&gt;SSH_CONNECTION&lt;/code&gt; 或 &lt;code&gt;SSH_CLIENT&lt;/code&gt; 环境变量，只要有一个有值就把平台标记为 &lt;code&gt;ssh&lt;/code&gt; 。后续 &lt;a href="https://github.com/PeonPing/peon-ping/blob/main/peon.sh#L272-L354"&gt;&lt;code&gt;play_sound()&lt;/code&gt;&lt;/a&gt; 走 SSH 分支，把音频请求发往 relay（默认 &lt;code&gt;localhost:19998&lt;/code&gt; ），而不是直接调本机的 &lt;code&gt;afplay&lt;/code&gt; 。&lt;/p&gt;</description></item><item><title>1080Ti 驱动在内核升级后罢工</title><link>https://liujiale.me/til/1080ti-driver-fix/</link><pubDate>Tue, 17 Mar 2026 21:41:00 +0800</pubDate><guid>https://liujiale.me/til/1080ti-driver-fix/</guid><description>&lt;p&gt;更新：&lt;/p&gt;
&lt;p&gt;下次碰到 Arch Linux 上掉显卡驱动的问题直接执行这下面这条。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yay -S nvidia-580xx-dkms nvidia-580xx-utils nvidia-580xx-settings &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo modprobe nvidia nvidia_uvm nvidia_drm nvidia_modeset &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;=== nvidia-smi ===&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; nvidia-smi&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;重新生成 CDI&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nvidia-ctk cdi generate --output&lt;span class="o"&gt;=&lt;/span&gt;/etc/cdi/nvidia.yaml &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;=== 新 spec 中 modeset 计数(应为 0) ===&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;grep -c nvidia-modeset /etc/cdi/nvidia.yaml &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; 0&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;=== 重启 docker(immich/n8n 会自动恢复) ===&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo systemctl restart docker &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sleep &lt;span class="m"&gt;6&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;=== 容器内 GPU ===&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker run --rm --device nvidia.com/gpu&lt;span class="o"&gt;=&lt;/span&gt;all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;早上更新系统，晚上 nvidia-smi 就挂了&lt;/p&gt;
&lt;p&gt;homelab 执行完 pacman -Syu 后，系统日志里出现这行：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;failed to generate CDI spec: failed to create device CDI specs: failed to construct device spec generators: failed to initialize NVML: Driver Not Loaded&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;跑 &lt;code&gt;nvidia-smi&lt;/code&gt; 直接报错。一开始以为是简单的模块没加载， &lt;code&gt;modprobe nvidia&lt;/code&gt; 怎么都不行。&lt;/p&gt;
&lt;p&gt;查了一圈发现是内核升级惹的祸 —— 从 6.19.6 到了 6.19.8，而我的 nvidia-580xx-dkms 还停留在 580.119 版本。&lt;/p&gt;</description></item><item><title>在 macOS 上编译 带 MPS 支持的 Emacs</title><link>https://liujiale.me/til/emacs-with-mps-support-on-macos/</link><pubDate>Tue, 17 Mar 2026 08:24:00 +0800</pubDate><guid>https://liujiale.me/til/emacs-with-mps-support-on-macos/</guid><description>&lt;p&gt;有两种方式来在 macOS 编译 Emacs：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/d12frosted/homebrew-emacs-plus"&gt;d12frosted/homebrew-emacs-plus&lt;/a&gt; - Homebrew formula，适合日常使用&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jimeh/build-emacs-for-macos"&gt;jimeh/build-emacs-for-macos&lt;/a&gt; - 从源码构建，更灵活&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;IGC (Incremental Garbage Collector)&lt;/strong&gt;&lt;/strong&gt; 是 Emacs 的增量垃圾回收器，基于 &lt;a href="https://www.ravenbrook.com/project/mps/"&gt;Ravenbrook MPS&lt;/a&gt; 实现。相比传统的 stop-the-world GC，IGC 可以显著减少垃圾回收时的停顿时间，提升编辑器响应性。&lt;/p&gt;
&lt;p&gt;目前 IGC 处于实验阶段，在 &lt;code&gt;feature/igc3&lt;/code&gt; 分支开发。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;构建环境：&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;版本&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;15.7.3 (Build 24G419)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Xcode&lt;/td&gt;
&lt;td&gt;26.3 (Build 17C529)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ruby&lt;/td&gt;
&lt;td&gt;3.3.4 (arm64-darwin23)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;1.26.1 darwin/arm64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;build-emacs-for-macos&lt;/td&gt;
&lt;td&gt;支持 &lt;code&gt;--igc&lt;/code&gt; 选项&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;构建命令：&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 克隆仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/jimeh/build-emacs-for-macos.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; build-emacs-for-macos
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 构建 IGC 分支（需要先安装依赖）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./build-emacs-for-macos --igc feature/igc3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;快速方案&lt;/strong&gt;&lt;/strong&gt; ：如果遇到上述 macOS API 可用性问题，可以直接使用已修复的分支：&lt;/p&gt;</description></item><item><title>RTK：让 Claude Code 少吃点 Token</title><link>https://liujiale.me/til/rtk-token-killer/</link><pubDate>Mon, 16 Mar 2026 23:48:00 +0800</pubDate><guid>https://liujiale.me/til/rtk-token-killer/</guid><description>&lt;h2 id="用-claude-code-写代码的时候-我总觉得它在-浪费粮食"&gt;用 Claude Code 写代码的时候，我总觉得它在&amp;quot;浪费粮食&amp;quot;&lt;/h2&gt;
&lt;p&gt;一个 &lt;code&gt;git status&lt;/code&gt; 就要 2000 tokens，=cargo test= 更是能飙到 25000。这些命令的默认输出确实详细，但大部分时候我只需要知道&amp;quot;改了哪些文件&amp;quot;或&amp;quot;测试有没有通过&amp;quot;，不需要看那些花里胡哨的边框和进度条。&lt;/p&gt;
&lt;p&gt;之前想过在 CLAUDE.md 里写一堆规则，让 Claude 主动用 &lt;code&gt;--porcelain=、&lt;/code&gt;&amp;ndash;oneline= 这些精简标志。但说实话，这有点考验 LLM 的&amp;quot;记性&amp;quot;，有时候它记得，有时候忘，挺不靠谱。&lt;/p&gt;</description></item><item><title>PaperMod 主题一键升级流程</title><link>https://liujiale.me/til/papermod-theme-one-click-upgrade/</link><pubDate>Mon, 16 Mar 2026 22:51:00 +0800</pubDate><guid>https://liujiale.me/til/papermod-theme-one-click-upgrade/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;Hugo 博客使用 PaperMod 主题作为 Git submodule 管理。当主题有更新时，需要手动升级。&lt;/p&gt;
&lt;h2 id="一键升级脚本"&gt;一键升级脚本&lt;/h2&gt;
&lt;p&gt;创建脚本 &lt;code&gt;scripts/upgrade-papermod.sh&lt;/code&gt; ：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 颜色输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;GREEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\033[0;32m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;YELLOW&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\033[1;33m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;RED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\033[0;31m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;NC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\033[0m&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GREEN&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;[INFO]&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;NC&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_warn&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;YELLOW&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;[WARN]&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;NC&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_error&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;RED&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;[ERROR]&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;NC&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查是否在项目根目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -f &lt;span class="s2"&gt;&amp;#34;config.yml&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -d &lt;span class="s2"&gt;&amp;#34;content&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; log_error &lt;span class="s2"&gt;&amp;#34;请在项目根目录执行此脚本&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;开始升级 PaperMod 主题...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 显示版本信息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;当前版本:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C themes/PaperMod log -1 --oneline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;待更新版本:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C themes/PaperMod log origin/master -1 --oneline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;待更新提交:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C themes/PaperMod log HEAD..origin/master --oneline
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 更新 submodule&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C themes/PaperMod fetch origin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C themes/PaperMod checkout master
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git -C themes/PaperMod merge origin/master
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 验证更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;新版本: &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;git -C themes/PaperMod rev-parse --short HEAD&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 测试构建&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;测试构建...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; hugo --gc --minify --cleanDestinationDir --quiet&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; log_info &lt;span class="s2"&gt;&amp;#34;构建成功!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; log_error &lt;span class="s2"&gt;&amp;#34;构建失败！&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;log_info &lt;span class="s2"&gt;&amp;#34;升级完成!&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="执行升级"&gt;执行升级&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 赋予执行权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x scripts/upgrade-papermod.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 执行升级&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./scripts/upgrade-papermod.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="提交更改"&gt;提交更改&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add themes/PaperMod
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;chore: upgrade PaperMod theme&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="启用-llms-dot-txt-可选"&gt;启用 llms.txt（可选）&lt;/h2&gt;
&lt;p&gt;在 &lt;code&gt;config.yml&lt;/code&gt; 中添加：&lt;/p&gt;</description></item><item><title>WebStorm 在 macOS 15.7.3 显示器切换时崩溃的解决方案</title><link>https://liujiale.me/til/2026-02-01-webstorm-crash-fix/</link><pubDate>Sun, 01 Feb 2026 22:24:00 +0800</pubDate><guid>https://liujiale.me/til/2026-02-01-webstorm-crash-fix/</guid><description>&lt;h2 id="问题描述"&gt;问题描述&lt;/h2&gt;
&lt;p&gt;WebStorm 在运行约 1.5 小时后崩溃，错误日志显示：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SIGABRT (0x6) at pc=0x000000019fd3a388, pid=82249, tid=259
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Problematic frame: C [libsystem_kernel.dylib+0x9388] __pthread_kill+0x8
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NSApplicationReactToScreenInvalidation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这是 JBR-9927 已知 bug，在 macOS 15.7.3 显示器重配置时触发。&lt;/p&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;禁用 Metal 渲染，在 &lt;code&gt;Help | Edit Custom VM Options&lt;/code&gt; 添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-properties" data-lang="properties"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;-Dsun.java2d.metal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="参考链接"&gt;参考链接&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtrack.jetbrains.com/issues/JBR-9927"&gt;https://youtrack.jetbrains.com/issues/JBR-9927&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://intellij-support.jetbrains.com/hc/en-us/community/posts/24632437221906"&gt;https://intellij-support.jetbrains.com/hc/en-us/community/posts/24632437221906&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>选择适合自己饲养的蚂蚁品种</title><link>https://liujiale.me/til/choose-suitable-ant-species-for-raising/</link><pubDate>Tue, 23 Dec 2025 09:48:00 +0800</pubDate><guid>https://liujiale.me/til/choose-suitable-ant-species-for-raising/</guid><description>&lt;h2 id="快速选择"&gt;快速选择&lt;/h2&gt;
&lt;p&gt;根据自己的条件和喜好来选择饲养的蚂蚁品种&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;graph TD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Start([开始测试]) --&amp;gt; Q1[问题一：体型偏好？]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q1 --&amp;gt;|A. 体型越大越好| Q2[问题二：饲料接受度？]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q1 --&amp;gt;|B. 团结但体型适中| Q3[问题三：颜色偏好？]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q1 --&amp;gt;|C. 团队协作最重要| Q4[问题四：工蚁形态？]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q2 --&amp;gt;|A. 不养活体饲料| A1[工匠收获蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q2 --&amp;gt;|B. 可养面包虫| A4[红足修猛蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q2 --&amp;gt;|C. 接受活体饲料| Q5[饲料类型细分？]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q3 --&amp;gt;|A. 灰黑色| A3[日本弓背蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q3 --&amp;gt;|B. 黄/橙色| A2[尼科巴弓背蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q4 --&amp;gt;|A. 工蚁单型| A6[铺道蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q4 --&amp;gt;|B. 工蚁多型| Q6[食性偏好？]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q5 --&amp;gt;|A. 仅面包虫| A4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q5 --&amp;gt;|B. 蟋蟀/蟑螂| A7[猎镰猛蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q6 --&amp;gt;|A. 草籽/水果| A1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Q6 --&amp;gt;|B. 杂食性| A5[大头蚁]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; A4 -.-&amp;gt;|北方警告| Note1[螫针危险！需专业防护]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; A7 -.-&amp;gt;|北方警告| Note2[需恒温环境]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; classDef question fill:#f0f5ff,stroke:#597ef7,stroke-width:2px
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; classDef answer fill:#e6f7ff,stroke:#1890ff,stroke-width:2px
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; classDef note fill:#fffbe6,stroke:#faad14,dashed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; class Q1,Q2,Q3,Q4,Q5,Q6 question
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; class A1,A2,A3,A4,A5,A6,A7 answer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; class Note1,Note2 note
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; linkStyle 14,15 stroke:#faad14,stroke-width:2px,stroke-dasharray:5 5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;figure class="content-figure "&gt;
&lt;img src="https://liujiale.me/til/choose-suitable-ant-species-for-raising/ant-choose.svg" alt="" loading="lazy"&gt;
&lt;/figure&gt;
&lt;p&gt;总的来说新手选收获蚁是最简单的，我选择的是工匠收获蚁。&lt;/p&gt;</description></item><item><title>让 CLAUDE CODE 使用 GLM4.6 等其他模型</title><link>https://liujiale.me/til/let-claude-code-use-other-models-glm46-and-more/</link><pubDate>Mon, 22 Dec 2025 11:23:00 +0800</pubDate><guid>https://liujiale.me/til/let-claude-code-use-other-models-glm46-and-more/</guid><description>&lt;h2 id="安装-claude-code"&gt;安装 CLAUDE CODE&lt;/h2&gt;
&lt;p&gt;macOS 上使用 Homebrew 安装&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install --cask claude-code&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;在 Linux 上使用安装脚本安装&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://claude.ai/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;详细安装文档&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.claude.com/docs/en/overview"&gt;https://code.claude.com/docs/en/overview&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="手动切换模型"&gt;手动切换模型&lt;/h2&gt;
&lt;h3 id="编辑-claude-配置文件"&gt;编辑 CLAUDE 配置文件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;编辑或新增 Claude Code 配置文件 `~/.claude/settings.json`&lt;/li&gt;
&lt;li&gt;新增或修改里面的 ENV 字段&lt;/li&gt;
&lt;li&gt;注意替换里面的 `your_zhipu_api_key` 为您上一步获取到的 API Key&lt;/li&gt;
&lt;/ul&gt;
&lt;!--listend--&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;ANTHROPIC_AUTH_TOKEN&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;your_zhipu_api_key&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;ANTHROPIC_BASE_URL&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;https://open.bigmodel.cn/api/anthropic&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;API_TIMEOUT_MS&amp;#34;&lt;/span&gt;: &lt;span class="s2"&gt;&amp;#34;3000000&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&amp;#34;&lt;/span&gt;: &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="解决无法连接到-anthropic-service-的问题"&gt;解决无法连接到 Anthropic Service 的问题&lt;/h3&gt;
&lt;p&gt;~/.claude.json&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;hasCompletedOnboarding&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="自动切换模型"&gt;自动切换模型&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;使用 Claude Code Router&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/musistudio/claude-code-router"&gt;https://github.com/musistudio/claude-code-router&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @musistudio/claude-code-router&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;配置 alias 快速启动，我使用 fnm 来管理 Node.js 版本&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;claude&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ENABLE_IDE_INTEGRATION=t &amp;amp;&amp;amp; CLAUDE_CODE_SSE_PORT=123456 &amp;amp;&amp;amp; fnm use v22 &amp;amp;&amp;amp; eval &amp;#34;$(ccr activate)&amp;#34; &amp;amp;&amp;amp; fnm exec --using=v22 claude --dangerously-skip-permissions&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;启动 Claude Code Router 的管理界面&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ccr ui&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;CC Mate&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/djyde/ccmate"&gt;https://github.com/djyde/ccmate&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install --cask djyde/brew/ccmate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="模型及模型提供商选择"&gt;模型及模型提供商选择&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OpenRouter：&lt;a href="https://openrouter.ai/"&gt;https://openrouter.ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>米家空调伴侣 2 无法连接 Wi-Fi</title><link>https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/</link><pubDate>Wed, 24 Sep 2025 23:05:00 +0800</pubDate><guid>https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/</guid><description>&lt;h2 id="tl-dr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;是加密方式的问题，米家空调伴侣 2 只支持 WPA (这一点存疑，因为我的更早版本的空调伴侣连现在的 Wi-Fi 用 好好的)，而我之前设置的是 WPA2-PSK 和 WPA3-PSK。&lt;/p&gt;
&lt;p&gt;需要降级到支持 WPA-PSK 加密，尽管这引入了额外的安全风险。&lt;/p&gt;
&lt;figure class="content-figure "&gt;
&lt;a href="https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/20250924-224526_screenshot_hu_6cd0c1f168950236.webp" data-fancybox="gallery" data-caption=""&gt;
&lt;picture&gt;
&lt;source type="image/webp" srcset="https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/20250924-224526_screenshot_hu_8d74656b155d4a46.webp 400w, https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/20250924-224526_screenshot_hu_1fd532e68419de3f.webp 720w, https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/20250924-224526_screenshot_hu_6cd0c1f168950236.webp 1200w" sizes="(max-width: 720px) 100vw, 720px" /&gt;
&lt;img loading="lazy"
src="https://liujiale.me/til/mihome-air-conditioner-remote-2-cannot-connect-to-wi-fi/20250924-224526_screenshot.png"
alt=""
width="720"
height="358"
/&gt;
&lt;/picture&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;有网友发现仅仅修改现有接入点的加密方式还不够，需要新建一个新的 AP 才行。&lt;/p&gt;
&lt;p&gt;我没有碰到这个问题，直接修改就可以了。&lt;/p&gt;
&lt;h2 id="引申"&gt;引申&lt;/h2&gt;
&lt;p&gt;如何做到 Wi-Fi 安全？&lt;/p&gt;
&lt;p&gt;列举 Wi-Fi 加密方式&lt;/p&gt;
&lt;p&gt;隐藏 SSID 能够提升安全性吗&lt;/p&gt;
&lt;p&gt;客户端隔离&lt;/p&gt;
&lt;p&gt;Wi-Fi 漫游的功能和设置&lt;/p&gt;
&lt;p&gt;物联网 Wi-Fi&lt;/p&gt;
&lt;p&gt;网桥&lt;/p&gt;
&lt;p&gt;如何设置透明代理&lt;/p&gt;</description></item><item><title>虚拟拨号的实现流程</title><link>https://liujiale.me/til/virtual-dialing-implementation-process/</link><pubDate>Mon, 25 Aug 2025 14:13:00 +0800</pubDate><guid>https://liujiale.me/til/virtual-dialing-implementation-process/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;虚拟拨号一般是指通过一个第三方的号码实现 用户 A 和 A 用户 B 之间的通讯，使双方不必知道对方的号码就可以建立通讯。起到了保护双方用户隐私和企业机密数据保障的作用。&lt;/p&gt;
&lt;p&gt;常见使用场景是网约车打车和外卖，此时保护的是乘客和用户的隐私。&lt;/p&gt;
&lt;p&gt;另一个场景是房地产销售等企业客户数据的保护，一些机密的号码不能直接交给销售，以防止客户流失。&lt;/p&gt;
&lt;p&gt;还有一个比较小众的场景是类似小号的产品，用户使用小号来拨打其他号码、接收短信，但是这种用法并非本文需要讨论的场景。&lt;/p&gt;</description></item><item><title>让 AI 模仿 linus 谈生物节律</title><link>https://liujiale.me/til/let-ai-mimic-linus-talk-about-biological-rhythms/</link><pubDate>Thu, 21 Aug 2025 11:48:00 +0800</pubDate><guid>https://liujiale.me/til/let-ai-mimic-linus-talk-about-biological-rhythms/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;最近比较忙，基本全天没有摸鱼时间，有时候还会牺牲睡眠时间来干活。尽管内心知道这样做是不可持续的，却仍然会下意识的去做。&lt;/p&gt;
&lt;p&gt;也许需要想办法来警醒自己。&lt;/p&gt;
&lt;h2 id="claude-的回复"&gt;Claude 的回复&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;时间置换？这 TM 就是基本的生物节律常识！&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;听着，你们这些人总是把简单的事情搞得像什么哲学一样。什么&amp;quot;像风一样流动&amp;quot;——这就是任何一个不是完全白痴的人都应该知道的基本作息管理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;困了就睡？&lt;/strong&gt;&lt;/strong&gt; 当然困了就睡！你以为你是机器吗？人类大脑在疲劳状态下的代码质量就像屎一样。我宁愿你睡 8 小时然后写出干净的代码，也不要你熬夜写出一堆需要我后来修复的垃圾。&lt;/p&gt;</description></item><item><title>为什么很多人会攒自己的 Emacs 配置？</title><link>https://liujiale.me/til/why-many-people-will-save-their-emacs-configuration/</link><pubDate>Mon, 18 Aug 2025 14:37:00 +0800</pubDate><guid>https://liujiale.me/til/why-many-people-will-save-their-emacs-configuration/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;我大概从 2020 年开始使用 Doom Emacs，但是在今天之前从来没有想过要攒一套自己的 Emacs 配置。原因有很多，主要考虑到没有足够的时间，而且自己攒的未必能比一些发行版做得更好。&lt;/p&gt;
&lt;p&gt;但是最近我开始重新考虑这件事情，因此记录下来自己的一些想法。&lt;/p&gt;
&lt;h2 id="为什么"&gt;为什么&lt;/h2&gt;
&lt;p&gt;我发现自己对 Emacs 本身缺乏理解。我的快捷键是 evil + general + 原生 Emacs 混合起来的，我配置包的方式是 Doom Emacs 在 straght.el 的基础上封装的，并且很多包经过了发行版内部调整，用了很多私有变量和方法。&lt;/p&gt;
&lt;p&gt;如果不去看源码，我是不知道他们是如何配置出来的，面对茫茫多的快捷键组合，我也不知道哪些是我需要的，哪些是“我不知道的”。&lt;/p&gt;</description></item><item><title>站点大扫除：提升博客首页的信息质量</title><link>https://liujiale.me/til/improve-the-information-quality-of-the-blog-homepage/</link><pubDate>Thu, 14 Aug 2025 15:03:00 +0800</pubDate><guid>https://liujiale.me/til/improve-the-information-quality-of-the-blog-homepage/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;首页一般是读者进来之后看到最多的一个页面，我希望它能够承载一些长文、精选文章。希望首页的更新频率能够低一点，但是质量高一点。&lt;/p&gt;
&lt;p&gt;那么 TIL（Today I Learned ）栏目就不大适合放在首页了。因为其范围比较杂乱，内容有的长短不一，质量层次不齐。&lt;/p&gt;
&lt;p&gt;那么本文章就讨论如何让 TIL Section 的文章不出现在整个站点的 RSS &lt;code&gt;/inde.xml&lt;/code&gt; ，但不影响 TIL section 本身的 RSS 生成。&lt;/p&gt;
&lt;h2 id="现有研究"&gt;现有研究&lt;/h2&gt;
&lt;h3 id="papermod-主题讨论"&gt;PaperMod 主题讨论&lt;/h3&gt;
&lt;p&gt;我先搜索了一番 PaperMod 主题中有没有现成可用的配置。发现有相关讨论&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/search?q=repo:adityatelange/hugo-PaperMod&amp;#43;exclude&amp;#43;&amp;amp;type=discussions"&gt;https://github.com/search?q=repo:adityatelange/hugo-PaperMod+exclude+&amp;type=discussions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其中一篇：&lt;a href="https://github.com/adityatelange/hugo-PaperMod/discussions/1188"&gt;Best way to exclude a group of posts from home page · adityatelange/hugo-PaperMod · Discussion #1188&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>