<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Fomalhaut647</title><description>神秘观察者</description><link>https://fomalhaut647.com/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.8.1</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年7月7日 16:15:59</lastBuildDate><item><title>北大研究发现缺勤与成绩的相关性不显著</title><link>https://fomalhaut647.com/posts/attendance-and-academic-performance/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/attendance-and-academic-performance/</guid><description>一时摆烂一时爽，一直摆烂一直爽</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1599&quot; src=&quot;/_astro/attendance-and-academic-performance_0.DShXgrct_ZDyKgQ.webp&quot; srcset=&quot;/_astro/attendance-and-academic-performance_0.DShXgrct_11a262.webp 640w, /_astro/attendance-and-academic-performance_0.DShXgrct_Z176fl7.webp 750w, /_astro/attendance-and-academic-performance_0.DShXgrct_1y3hEy.webp 828w, /_astro/attendance-and-academic-performance_0.DShXgrct_Z1AUdLT.webp 1080w, /_astro/attendance-and-academic-performance_0.DShXgrct_ZDyKgQ.webp 1200w&quot; /&gt;&lt;/p&gt;
&lt;div&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1079&quot; height=&quot;1295&quot; src=&quot;/_astro/attendance-and-academic-performance_1.Dyon3E6G_Tdlju.webp&quot; srcset=&quot;/_astro/attendance-and-academic-performance_1.Dyon3E6G_ZWYPPJ.webp 640w, /_astro/attendance-and-academic-performance_1.Dyon3E6G_d45y3.webp 750w, /_astro/attendance-and-academic-performance_1.Dyon3E6G_PNUaq.webp 828w, /_astro/attendance-and-academic-performance_1.Dyon3E6G_Tdlju.webp 1079w&quot; /&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1179&quot; height=&quot;1543&quot; src=&quot;/_astro/attendance-and-academic-performance_2.BQ_gD_S3_Z1Lwhu5.webp&quot; srcset=&quot;/_astro/attendance-and-academic-performance_2.BQ_gD_S3_4hROU.webp 640w, /_astro/attendance-and-academic-performance_2.BQ_gD_S3_4ewnt.webp 750w, /_astro/attendance-and-academic-performance_2.BQ_gD_S3_19ERuB.webp 828w, /_astro/attendance-and-academic-performance_2.BQ_gD_S3_Z2pk778.webp 1080w, /_astro/attendance-and-academic-performance_2.BQ_gD_S3_Z1Lwhu5.webp 1179w&quot; /&gt;&lt;/div&gt;
&lt;blockquote&gt;&lt;p&gt;毕竟最强的那一批早就自学过了，而且部分课程的课件年龄比学生还大，上课不如用 AI 自学（笑）&lt;/p&gt;&lt;p&gt;即使要听课，观看课程回放也通常比线下听课的效果更好，遇到简单的就倍速快进，遇到难的就暂停思考问 AI&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;仍记得某高数老师声称要考勤，第一节课就被学生批评 “老师应当提升授课质量来留住学生，而不是用考勤来强留学生”，于是无奈取消考勤&lt;/p&gt;
&lt;p&gt;课堂上摸鱼的人相对较少，因为不想听的直接不来了&lt;/p&gt;
&lt;p&gt;代课更是闻所未闻&lt;/p&gt;</content:encoded></item><item><title>旧约 &amp; 新约</title><link>https://fomalhaut647.com/posts/contingency-contract/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/contingency-contract/</guid><description>无奸商无风笛无奶奶，凹不上去了</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/contingency-contract_1.Ciy5KDel_1igx5G.webp&quot; srcset=&quot;/_astro/contingency-contract_1.Ciy5KDel_ZHzGMB.webp 640w, /_astro/contingency-contract_1.Ciy5KDel_ZhvrTD.webp 750w, /_astro/contingency-contract_1.Ciy5KDel_Z18X1Sd.webp 828w, /_astro/contingency-contract_1.Ciy5KDel_ul3Ax.webp 1080w, /_astro/contingency-contract_1.Ciy5KDel_Z1JGwOq.webp 1280w, /_astro/contingency-contract_1.Ciy5KDel_nqmPm.webp 1668w, /_astro/contingency-contract_1.Ciy5KDel_Z28i21a.webp 2048w, /_astro/contingency-contract_1.Ciy5KDel_ZJFPYl.webp 2560w, /_astro/contingency-contract_1.Ciy5KDel_1igx5G.webp 3912w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>北京我真没空陪你闹了</title><link>https://fomalhaut647.com/posts/weather/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/weather/</guid><description>连续两周超高温+下雨+冰雹吗</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1216&quot; height=&quot;2640&quot; src=&quot;/_astro/weather_0.C5XsrXrv_Z25NMng.webp&quot; srcset=&quot;/_astro/weather_0.C5XsrXrv_wpK1W.webp 640w, /_astro/weather_0.C5XsrXrv_ZNPzyx.webp 750w, /_astro/weather_0.C5XsrXrv_gF5QK.webp 828w, /_astro/weather_0.C5XsrXrv_Z1GCPj5.webp 1080w, /_astro/weather_0.C5XsrXrv_Z25NMng.webp 1216w&quot; /&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1920&quot; src=&quot;/_astro/weather_1.D9WUNRlG_Z8xHj2.webp&quot; srcset=&quot;/_astro/weather_1.D9WUNRlG_Z1PsAhi.webp 640w, /_astro/weather_1.D9WUNRlG_Z232kbO.webp 750w, /_astro/weather_1.D9WUNRlG_2rnNXk.webp 828w, /_astro/weather_1.D9WUNRlG_Z8xHj2.webp 1080w&quot; /&gt;&lt;/div&gt;
&lt;blockquote&gt;&lt;p&gt;我将严肃驻守宿舍并打开空调急冷模式&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>有且仅有女生</title><link>https://fomalhaut647.com/posts/turing/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/turing/</guid><description>背后必有高人指点！</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2837&quot; src=&quot;/_astro/turing_0.ishIWngz_2oP6Vk.webp&quot; srcset=&quot;/_astro/turing_0.ishIWngz_Z1409zs.webp 640w, /_astro/turing_0.ishIWngz_HxhAx.webp 750w, /_astro/turing_0.ishIWngz_P72si.webp 828w, /_astro/turing_0.ishIWngz_2oP6Vk.webp 1080w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot; src=&quot;/_astro/turing_1.dLxv9rta_Z23Nf9U.webp&quot; srcset=&quot;/_astro/turing_1.dLxv9rta_ZvMgWD.webp 640w, /_astro/turing_1.dLxv9rta_Z1f08GO.webp 750w, /_astro/turing_1.dLxv9rta_wxCrC.webp 828w, /_astro/turing_1.dLxv9rta_Z1ajOhx.webp 1080w, /_astro/turing_1.dLxv9rta_Z23Nf9U.webp 1254w&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;图 0 &amp;amp; 冯诺 1 曼&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>Fable 5 速通六级</title><link>https://fomalhaut647.com/posts/cet-6/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/cet-6/</guid><description>“用户会使用神话级模型做什么大事呢”, “什么叫用户在一天速通六级”</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;Fable 5 控制字数的能力堪称恐怖，我告诉它作文不超过 150 words，它直出 4 篇作文，全部精准控制在 145 ~ 150 words&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;btw 把网上找的模板喂给 Fable 5，生成定制化模板，然后对着往年题 RL，这是速通六级最优解吗？上学期喜提 544，这次能提高 6 分吗，会赢吗？&lt;/p&gt;</content:encoded></item><item><title>被 A\ 封号</title><link>https://fomalhaut647.com/posts/claude-account-banned/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/claude-account-banned/</guid><description>AI Coding 不得不品的一环</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3492&quot; height=&quot;2036&quot; src=&quot;/_astro/claude-account-banned_1.DoPX4hZU_1uaFVN.webp&quot; srcset=&quot;/_astro/claude-account-banned_1.DoPX4hZU_Z1DVAGx.webp 640w, /_astro/claude-account-banned_1.DoPX4hZU_ZJtFJV.webp 750w, /_astro/claude-account-banned_1.DoPX4hZU_Ztbef7.webp 828w, /_astro/claude-account-banned_1.DoPX4hZU_kI7Ag.webp 1080w, /_astro/claude-account-banned_1.DoPX4hZU_wHedd.webp 1280w, /_astro/claude-account-banned_1.DoPX4hZU_Z26qOwT.webp 1668w, /_astro/claude-account-banned_1.DoPX4hZU_Z2bPs8i.webp 2048w, /_astro/claude-account-banned_1.DoPX4hZU_Z26y3KO.webp 2560w, /_astro/claude-account-banned_1.DoPX4hZU_1uaFVN.webp 3492w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2056&quot; src=&quot;/_astro/claude-account-banned_2.DpDVrNej_fHSGK.webp&quot; srcset=&quot;/_astro/claude-account-banned_2.DpDVrNej_1DKbDI.webp 640w, /_astro/claude-account-banned_2.DpDVrNej_2wBVEM.webp 750w, /_astro/claude-account-banned_2.DpDVrNej_2cbWw9.webp 828w, /_astro/claude-account-banned_2.DpDVrNej_Z1zwyBV.webp 1080w, /_astro/claude-account-banned_2.DpDVrNej_kQi92.webp 1280w, /_astro/claude-account-banned_2.DpDVrNej_Z2c0p9v.webp 1668w, /_astro/claude-account-banned_2.DpDVrNej_ZxJ3Lq.webp 2048w, /_astro/claude-account-banned_2.DpDVrNej_ZDGeaN.webp 2560w, /_astro/claude-account-banned_2.DpDVrNej_fHSGK.webp 3912w&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2056&quot; src=&quot;/_astro/claude-account-banned_3.iPJpOUPc_ZTgQKJ.webp&quot; srcset=&quot;/_astro/claude-account-banned_3.iPJpOUPc_1rs5UR.webp 640w, /_astro/claude-account-banned_3.iPJpOUPc_2kjPVV.webp 750w, /_astro/claude-account-banned_3.iPJpOUPc_1YSQNi.webp 828w, /_astro/claude-account-banned_3.iPJpOUPc_2kENIv.webp 1080w, /_astro/claude-account-banned_3.iPJpOUPc_ZO8sjs.webp 1280w, /_astro/claude-account-banned_3.iPJpOUPc_1IbXbV.webp 1668w, /_astro/claude-account-banned_3.iPJpOUPc_Z1HIOeU.webp 2048w, /_astro/claude-account-banned_3.iPJpOUPc_Z1NFYDi.webp 2560w, /_astro/claude-account-banned_3.iPJpOUPc_ZTgQKJ.webp 3912w&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;你说我的新号还能活下来吗&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>高松同志任北京大学校长</title><link>https://fomalhaut647.com/posts/takamatsu/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/takamatsu/</guid><description>竟敢无视灯！</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2400&quot; src=&quot;/_astro/takamatsu_1.3-g0WQ4n_JGEPr.webp&quot; srcset=&quot;/_astro/takamatsu_1.3-g0WQ4n_Z1TWoF0.webp 640w, /_astro/takamatsu_1.3-g0WQ4n_ZFbg6E.webp 750w, /_astro/takamatsu_1.3-g0WQ4n_9Sooy.webp 828w, /_astro/takamatsu_1.3-g0WQ4n_JGEPr.webp 1080w&quot; /&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2345&quot; src=&quot;/_astro/takamatsu_2.1i3-Yp4F_JmSv8.webp&quot; srcset=&quot;/_astro/takamatsu_2.1i3-Yp4F_2oIb6R.webp 640w, /_astro/takamatsu_2.1i3-Yp4F_fMkx2.webp 750w, /_astro/takamatsu_2.1i3-Yp4F_1wDQDB.webp 828w, /_astro/takamatsu_2.1i3-Yp4F_JmSv8.webp 1080w&quot; /&gt;&lt;/div&gt;
&lt;blockquote&gt;&lt;p&gt;高松灯，企鹅，mygo 等都成了树洞违禁词，笑死我了&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>Skill Simplifier</title><link>https://fomalhaut647.com/posts/skill-simplifier/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/skill-simplifier/</guid><description>给 Skill 和 CLAUDE.md 去重的审计 skill</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;写 &lt;a href=&quot;/posts/agent-team/&quot;&gt;agent-team&lt;/a&gt; 的时候我反复强调过一条纪律：&lt;strong&gt;每段提示词只存在于唯一一个地方&lt;/strong&gt;。重复就是漂移源——上游措辞变了而下游抄了一份旧版本时，下一次 coordination 就出 bug。但这条纪律没法靠”写的时候多注意点”维持，Claude 自己写 skill 和 CLAUDE.md 时倾向于把它觉得重要的事一股脑全写上，分不清这些事是不是已经被系统提示词、Tool Description、其他 skill 或更上层的 CLAUDE.md 提供了。于是我把这条纪律做成了 &lt;a href=&quot;https://github.com/Fomalhaut647/plugins/tree/main/plugins/skill-simplifier&quot; target=&quot;_blank&quot;&gt;skill-simplifier&lt;/a&gt;：审一个目标文档，列出每一处与上游重复的内容，自动删那些”无论如何都该删”的，剩下”两侧都由用户拥有”的让用户决定&lt;/p&gt;
&lt;a href=&quot;https://github.com/Fomalhaut647/plugins&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Fomalhaut647&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;plugins&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;
&lt;section&gt;&lt;h1&gt;它解决什么问题&lt;a href=&quot;#它解决什么问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Claude 写 SKILL.md 和 CLAUDE.md 有一种 kitchen-sink 倾向：只要觉得”这个规则很重要”就写进去，不管这条规则是不是已经由更上游的知识源提供。最常见的几类冤枉重复：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;SKILL.md 里写”用 Edit 工具不要用 sed”——这是系统提示词里已经有的&lt;/li&gt;
&lt;li&gt;SKILL.md 里详细解释 &lt;code&gt;TeamCreate&lt;/code&gt; 的参数——这是 tool description 已经返回的&lt;/li&gt;
&lt;li&gt;CLAUDE.md（项目级）写”使用中文回答”——这是用户全局 CLAUDE.md 已经有的&lt;/li&gt;
&lt;li&gt;skill 的 &lt;code&gt;references/foo.md&lt;/code&gt; 里抄一段 &lt;code&gt;superpowers:test-driven-development&lt;/code&gt; 的 RED/GREEN/REFACTOR 流程——这是另一个 skill 激活后直接提供的&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;每条单独看都不冒犯，但堆起来就两件坏事：&lt;strong&gt;占 context、稀释目标文档真正独特的价值&lt;/strong&gt;；&lt;strong&gt;上游变了之后副本悄悄过时&lt;/strong&gt;。第二件更要命，因为它是隐式的：你以为 skill 还在按最新规则跑，实际上它依据的是某条 tool description 半年前的措辞&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;核心判定标准&lt;a href=&quot;#核心判定标准&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;判定一段内容是不是冗余的方法很朴素：&lt;strong&gt;删掉它，Claude 的行为会不会变？&lt;/strong&gt; 如果不会，那它就是冗余的，因为同样的约束已经在上游某处提供&lt;/p&gt;&lt;p&gt;两个要点：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语义而非字面&lt;/strong&gt;：措辞不同也可能是重复。“使用 Read 而非 cat 读文件”和”避免用 shell 拼接读取文件内容，应当调用专用工具” 是同一条规则的两种说法&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字面相同也可能不是重复&lt;/strong&gt;：如果目标补上了上游缺失的”为什么 / 例子 / 取舍”，那它在做独立的工作。例如系统提示词只说”破坏性操作前先确认”，而某个 CLAUDE.md 补一句”过去 force push 删过 main 历史，所以这条规则在我们这特别严”——保留有上下文的那一侧&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;四类上游知识源&lt;a href=&quot;#四类上游知识源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;每一处重复都会归到下面四类之一。skill-simplifier 在 Stage 1 按顺序排查，分类要做准，因为 Stage 4 的处理规则按类不同&lt;/p&gt;&lt;section&gt;&lt;h2&gt;1. 系统提示词（隐式上游）&lt;a href=&quot;#1-系统提示词隐式上游&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是最容易漏的一类，因为 Claude 没法 &lt;code&gt;Read&lt;/code&gt; 系统提示词，它就在 context 里。需要逐项扫的重灾区：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用专用 tool 而非 &lt;code&gt;cat&lt;/code&gt; / &lt;code&gt;echo&lt;/code&gt; / &lt;code&gt;sed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;独立的 tool 调用并行执行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;file_path:line_number&lt;/code&gt; 引用约定&lt;/li&gt;
&lt;li&gt;git commit / PR 工作流&lt;/li&gt;
&lt;li&gt;sandbox 与安全规则&lt;/li&gt;
&lt;li&gt;破坏性操作先确认&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;只要目标把这些规则之一重新陈述了一遍，就是在重复系统提示词&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. Tool Description&lt;a href=&quot;#2-tool-description&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;每个 tool 自带一段 description。这里有个反直觉点：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;内置 tool&lt;/strong&gt;（Read、Edit、Bash、Skill 等）的 description 在 context 里，直接看&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deferred tool&lt;/strong&gt;（&lt;code&gt;TeamCreate&lt;/code&gt; / &lt;code&gt;SendMessage&lt;/code&gt; / &lt;code&gt;WebFetch&lt;/code&gt; / &lt;code&gt;Monitor&lt;/code&gt; 等）的 schema &lt;strong&gt;不在 context 里&lt;/strong&gt;——只在 &lt;code&gt;&amp;lt;system-reminder&amp;gt;&lt;/code&gt; 块里以名字出现。要查它们的 description 必须先用 &lt;code&gt;ToolSearch&lt;/code&gt; 配合 &lt;code&gt;select:Name1,Name2,...&lt;/code&gt; 把 schema 拉进来&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;agent-team 这个 skill 反复出现 “the descriptions returned are the authoritative reference” 这句话的原因正是为此：与其在 SKILL.md 里抄一份 &lt;code&gt;TeamCreate&lt;/code&gt; 参数表（必然过时），不如强制 agent 每次激活时去拉 live schema&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 其他 Skill&lt;a href=&quot;#3-其他-skill&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Available Skills 列表在 &lt;code&gt;&amp;lt;system-reminder&amp;gt;&lt;/code&gt; 里。扫一遍，挑出名字或一句话描述和目标领域重叠的 skill。&lt;strong&gt;读其他 skill 的内容必须用 &lt;code&gt;Skill(name)&lt;/code&gt; 调用它&lt;/strong&gt;，而不是用 &lt;code&gt;Read&lt;/code&gt; 去读 SKILL.md 文件——plugin cache 的路径不稳定（带版本号、可能因 plugin 更新而变），靠 &lt;code&gt;Read&lt;/code&gt; 拼路径是脆弱的&lt;/p&gt;&lt;p&gt;如果目标重述了一条”另一个 skill 一旦激活就会提供”的指令，就是在重复 Skill&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 其他 CLAUDE.md&lt;a href=&quot;#4-其他-claudemd&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;CLAUDE.md 是 cascade 的，上游链按目标类型不同：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLAUDE.md 目标&lt;/strong&gt;：从 &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; 一路读到目标父目录的每一个 CLAUDE.md&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skill 目标&lt;/strong&gt;：&lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; 加上 skill 预期将运行其中的项目根 CLAUDE.md&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果目标重述了一条更上游 CLAUDE.md 已经提供的规则，就是在重复 CLAUDE.md&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;报告先于改动：Stage 4 闸门&lt;a href=&quot;#报告先于改动stage-4-闸门&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;skill-simplifier 最重要的设计是&lt;strong&gt;强制在改动前先输出完整报告，等用户对部分条目做决定再执行 Edit&lt;/strong&gt;。这条约束在 skill 里直接列为红线：“不要在用户给出 Zone B 和 Zone C 决定之前进入 Stage 5”&lt;/p&gt;&lt;p&gt;理由：删除是低成本的操作，但&lt;strong&gt;误删（false-positive）是隐性回退&lt;/strong&gt;——一段被错删的情境化指引不会立刻报错，下一次 Claude 在边界 case 上失去判断依据时才暴露。让用户先看完所有命中条目再做决定，比一次性 batch 删完更安全&lt;/p&gt;&lt;p&gt;报告分两到三区：&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Zone A — 自动删&lt;a href=&quot;#zone-a--自动删&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上游是&lt;strong&gt;系统提示词&lt;/strong&gt;或 &lt;strong&gt;Tool Description&lt;/strong&gt;。这两个上游用户没法编辑，唯一可动的杠杆就是目标侧。所以 Zone A 默认全删，列出来只是方便用户做合理性核查、对具体某条提出反对&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Zone B — 用户决定&lt;a href=&quot;#zone-b--用户决定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上游是&lt;strong&gt;其他 Skill&lt;/strong&gt; 或&lt;strong&gt;其他 CLAUDE.md&lt;/strong&gt;。两侧都由用户拥有，所以三选一：删目标侧、删上游侧、或两侧都留并加显式的交叉引用&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;为什么不能合并条目&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;明显成组的条目可以合并成一个决定。但&lt;strong&gt;不要把上游来源不同的条目合并成同一条&lt;/strong&gt;——用户可能想对不同上游做不同选择（比如：愿意删项目 CLAUDE.md 的副本，但全局 CLAUDE.md 的那条保留）&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Zone C — 内部分层（仅 Skill 目标）&lt;a href=&quot;#zone-c--内部分层仅-skill-目标&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;skill 的 &lt;code&gt;SKILL.md&lt;/code&gt; 总是在激活时加载；&lt;code&gt;references/*.md&lt;/code&gt; 按需加载。内容在两层都出现就破坏了 progressive disclosure。用 Zone B 同款格式让用户选，因为”哪一层拥有这段内容”是设计决策——是把它放进常驻 context 还是按需加载&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;几条不能碰的红线&lt;a href=&quot;#几条不能碰的红线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;触发内容神圣不可动&lt;a href=&quot;#触发内容神圣不可动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Skill 的 &lt;code&gt;description:&lt;/code&gt; frontmatter 是它被 trigger 的入口，CLAUDE.md 里的”看到 X 时做 Y”短语是它被应用的入口。即便它们和某条上游措辞重叠，也要保留——删掉就破坏了激活路径，整个文档变成沉默资源&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;不要把临时 query 结果固化进去&lt;a href=&quot;#不要把临时-query-结果固化进去&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过 &lt;code&gt;ToolSearch&lt;/code&gt; / &lt;code&gt;WebSearch&lt;/code&gt; / &lt;code&gt;Read&lt;/code&gt; 一次性获取的 schema、版本号、API 字段名等等，&lt;strong&gt;绝不能&lt;/strong&gt;抄进 SKILL.md 或 CLAUDE.md 当”方便的 inline 参考”。上游会变，inline 副本必然过时。让目标在每次调用时重新获取——这正是 deferred tool schema 不进 skill 的同一条原则&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;保守删除&lt;a href=&quot;#保守删除&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;拿不准时保留目标内容，加一句 “see X” 的指针即可。多一句话的代价很小；丢掉用户依赖的情境化指引的代价大。漏删在下一次审查时能补救；误删则悄悄回退 Claude 的行为&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;具体胜过泛化&lt;a href=&quot;#具体胜过泛化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果一份 skill / CLAUDE.md 重述了系统提示词的泛化规则、但补上了具体例子、取舍或为什么，它是在做真实工作。这种张力出现时保留情境化的那一版，只裁掉冗余的泛化前言&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;一个工作流上的小细节&lt;a href=&quot;#一个工作流上的小细节&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;skill 在 Stage 2 会激活辅助 skill，但&lt;strong&gt;按目标类型分叉&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;目标是 Skill → 激活 &lt;code&gt;superpowers:writing-skills&lt;/code&gt; + &lt;code&gt;skill-creator&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;目标是 CLAUDE.md → 激活 &lt;code&gt;claude-md-management:claude-md-improver&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这两组辅助 skill 提供”好的 skill / 好的 CLAUDE.md 长什么样”的参考，但它们本身不是 skill-simplifier 的替代品——它们关心结构和清晰度，skill-simplifier 单点关心去重。所以辅助 skill 是激活，不是委派&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;安装&lt;a href=&quot;#安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/plugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;marketplace&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Fomalhaut647/plugins&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/plugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;skill-simplifier@fomalhaut647-plugins&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;@&lt;/code&gt; 前的 &lt;code&gt;skill-simplifier&lt;/code&gt; 是 plugin name，&lt;code&gt;@&lt;/code&gt; 后的 &lt;code&gt;fomalhaut647-plugins&lt;/code&gt; 是 marketplace name&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;怎么用&lt;a href=&quot;#怎么用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;最直接的触发短语：“simplify this skill”、“review this CLAUDE.md”、“审查 / 精简 / 去重 / 瘦身 skill”、“是不是有重复”。其实更常见的场景是用户自己写完 skill 后感觉冗长 / 抱怨”这段我好像在别处写过”——这时候哪怕用户没明说 “simplify”，也应该优先调用本 skill。这正是它存在的意义&lt;/p&gt;&lt;p&gt;跑一次完整流程的样子：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;问用户目标是哪个 skill 目录或 CLAUDE.md 文件&lt;/li&gt;
&lt;li&gt;枚举四类上游知识源、读完整目标&lt;/li&gt;
&lt;li&gt;输出两到三区报告（&lt;strong&gt;这里停下来&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;用户对 Zone B / Zone C 给出决定&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Edit&lt;/code&gt; 按决定逐条删除或加交叉引用&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;每次调用只处理一个目标。如果用户有多个 skill 要审，每个文件各跑一次工作流——上游枚举可能因目标而异，混在一起处理会漏判&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;skill-simplifier 自己是个反讽：它的 SKILL.md 写得相当瘦，没有重复的”好 skill 长什么样”教学（那是 &lt;code&gt;superpowers:writing-skills&lt;/code&gt; 的事）、没有抄 &lt;code&gt;Skill&lt;/code&gt; tool description（那是 tool 自带的）、没有解释什么是 cascade（那是 CLAUDE.md 自己的概念）。它只做一件事——审目标里有没有上游已经提供的内容——所以它自己也必须严格遵守这条纪律&lt;/p&gt;&lt;p&gt;仓库：&lt;a href=&quot;https://github.com/Fomalhaut647/plugins/tree/main/plugins/skill-simplifier&quot; target=&quot;_blank&quot;&gt;https://github.com/Fomalhaut647/plugins/tree/main/plugins/skill-simplifier&lt;/a&gt;，欢迎试用、提 issue&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Agent Team &amp; TDD superpowers</title><link>https://fomalhaut647.com/posts/agent-team/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/agent-team/</guid><description>包含我对 Agent Team &amp; TDD 软件开发工作流的全部理解</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近写了个 Claude Code 插件 &lt;a href=&quot;https://github.com/Fomalhaut647/plugins/tree/main/plugins/agent-team&quot; target=&quot;_blank&quot;&gt;agent-team&lt;/a&gt;，把我这段时间踩过的多 agent 协作坑总结成两个 skill，配合 &lt;code&gt;superpowers&lt;/code&gt; 的 TDD 工作流可以跑长程开发任务。本文介绍它的设计动机和用法&lt;/p&gt;
&lt;a href=&quot;https://github.com/Fomalhaut647/plugins&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Fomalhaut647&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;plugins&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;
&lt;section&gt;&lt;h1&gt;平台支持&lt;a href=&quot;#平台支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;目前&lt;strong&gt;只有 Claude Code 原生支持 Agent Team&lt;/strong&gt;（&lt;code&gt;TeamCreate&lt;/code&gt; / &lt;code&gt;SendMessage&lt;/code&gt; 这一套 primitive），所以 &lt;code&gt;agent-team&lt;/code&gt; 这个 skill 本身只能在 Claude Code 里用。Codex、Cursor、Cline 等编程工具的用户暂时跑不了多 agent 长程协作&lt;/p&gt;&lt;p&gt;但本仓库 &lt;code&gt;references/&lt;/code&gt; 目录下的 TDD + 两阶段 review 工作流文档对所有编程 agent 都有借鉴价值——这套流程在 Claude Code 之外仍然成立，只是协调层得换成”开多个会话窗口手动复制粘贴”。其他工具的用户可以读 &lt;code&gt;superpowers-implementer.md&lt;/code&gt; 和 &lt;code&gt;code-review.md&lt;/code&gt;，把里面”用 &lt;code&gt;SendMessage&lt;/code&gt; 通知 reviewer”之类的句子改成自家工具的等价物，剩下的 TDD 节奏和 spec compliance + code quality 两阶段 review 思路是通用的&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;为什么需要 Agent Team&lt;a href=&quot;#为什么需要-agent-team&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;最大的优点不是”能并行”，而是 &lt;strong&gt;分配上下文，让长程任务保持稳定&lt;/strong&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;单 Agent 的瓶颈：上下文挤爆，指令跟随能力下降&lt;a href=&quot;#单-agent-的瓶颈上下文挤爆指令跟随能力下降&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;让一个 agent 直接 inline 写代码会发生什么？它的 context 会被具体的工作细节填满——读了一堆代码、跑了一堆测试、看了一堆 error、回滚了几次。当 context 长到几十 k token，agent 对最初指令的跟随能力会&lt;strong&gt;显著下降&lt;/strong&gt;：忘记用户立下的规矩，不再严格走 TDD（跳过 RED 阶段直接写实现）、忘了 commit 粒度约定、忘了某些路径不能动&lt;/p&gt;&lt;p&gt;这是写大工程时最常见的失败模式：开头很守规矩，到 70% 进度时已经在自由发挥&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;superpowers 的第一层抽象：subagent-driven-development&lt;a href=&quot;#superpowers-的第一层抽象subagent-driven-development&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;superpowers:subagent-driven-development&lt;/code&gt; 的解法是：让 controller agent 别自己写代码，&lt;strong&gt;派 subagent 写&lt;/strong&gt;。controller 给 subagent 一份 brief，subagent 在干净 context 里实现 + commit + 返回结果，controller 读结果决定下一步。具体的代码细节（哪行报错、哪个测试 fail）只留在 subagent 的 context 里，controller 始终保持小组长视角&lt;/p&gt;&lt;p&gt;这样 controller 的 context 增长慢得多，指令跟随能力维持得更久。同样，code review 也派 subagent 做——还得用两阶段：spec compliance reviewer 看是否符合 plan，code quality reviewer 看代码本身健康度，互相抓不同的 bug&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;subagent-driven-development 的天花板&lt;a href=&quot;#subagent-driven-development-的天花板&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;但这套模式还是有上限：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;一个 controller 只能管一个模块的构建&lt;/strong&gt;——前端 + 后端两个模块的工作量，单 controller 的 context 仍然会挤爆&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;review 不能由 implementer 同一个 agent 做&lt;/strong&gt;（防作弊）。理论上 review 整个开发分支的 reviewer 应该是独立 agent&lt;/li&gt;
&lt;li&gt;于是用户被迫&lt;strong&gt;自己开多个 Claude Code 会话&lt;/strong&gt;手动协调：
&lt;ul&gt;
&lt;li&gt;一个窗口跑 implementer，一个窗口跑 reviewer&lt;/li&gt;
&lt;li&gt;把 reviewer 的反馈复制粘贴给 implementer&lt;/li&gt;
&lt;li&gt;或者让 reviewer 在 PR 上评论，然后切回 implementer 窗口让它去拉评论&lt;/li&gt;
&lt;li&gt;手动管理实现前端的 branch 和实现后端的 branch&lt;/li&gt;
&lt;li&gt;用户一直在多个窗口间切换、复制信息&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;这时&lt;strong&gt;用户自己变成了协调者&lt;/strong&gt;——这正是上下文挤爆问题的人类版本：用户的注意力被低级的”把 A 窗口的字粘到 B 窗口”消耗，没精力做高层决策&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;agent team 的第二层抽象&lt;a href=&quot;#agent-team-的第二层抽象&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;agent-team&lt;/code&gt; 在 controller + subagents 之上再加一层抽象：&lt;strong&gt;team lead 协调多个 teammate，每个 teammate 都是 controller 级&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;team lead 制定整个 plan，把任务分给不同的 teammate（一个写前端、一个写后端、一个审前端 PR、一个审后端 PR）&lt;/li&gt;
&lt;li&gt;每个 teammate 在自己的 worktree 里跑完整的 subagent-driven-development 循环&lt;/li&gt;
&lt;li&gt;teammate 之间通过 &lt;code&gt;SendMessage&lt;/code&gt; 直接对话，不再需要人类用户转发&lt;/li&gt;
&lt;li&gt;team lead 监督 teammate 是否在正确时机激活该激活的 skill、是否严格走 TDD&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;人类用户&lt;strong&gt;从协调者位置上摘下&lt;/strong&gt;，只需要：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;向 team lead 提需求、讨论细节&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仔细阅读设计文档&lt;/strong&gt;，粗略阅读实现文档&lt;/li&gt;
&lt;li&gt;完成程序难以完成的测试（比如在 web app 里点点点）并反馈给 team lead&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;人类不再需要逐行看代码，也不再需要在多窗口间复制粘贴&lt;/p&gt;&lt;p&gt;由于 team lead 不深入开发和审查细节，&lt;strong&gt;它的 context 用量很小&lt;/strong&gt;，整个长程任务里指令跟随能力一直保持高水平——这就是”分配上下文”的核心价值&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;设计哲学&lt;a href=&quot;#设计哲学&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;投顾比喻&lt;a href=&quot;#投顾比喻&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果说：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code 的底层工具&lt;/strong&gt;（Read / Write / Bash / Agent / TeamCreate …）是 &lt;strong&gt;股票&lt;/strong&gt;——直接、原始、灵活，但你得自己懂市场&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;superpowers 这种独立 skill&lt;/strong&gt;（TDD / debugging / writing-plans）是 &lt;strong&gt;基金&lt;/strong&gt;——把一类通用能力打包成 best practice，你买入就能用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;agent-team&lt;/code&gt; 这种建立在其他 skill 之上、协调其他 skill 的 skill&lt;/strong&gt; 是 &lt;strong&gt;投顾&lt;/strong&gt;——它不直接产生 alpha，而是告诉你”什么场景该买哪只基金、什么场景该直接买股票”&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;投顾的价值不在于推荐的某只基金多牛，而在于&lt;strong&gt;资产配置和择时&lt;/strong&gt;：lead 决定何时调 &lt;code&gt;superpowers:brainstorming&lt;/code&gt;、何时让 teammate 调 &lt;code&gt;subagent-driven-development&lt;/code&gt;、何时让 reviewer 调 &lt;code&gt;code-review:code-review&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;不重复提示词&lt;a href=&quot;#不重复提示词&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;投顾的另一面是&lt;strong&gt;克制&lt;/strong&gt;：它不应该把基金的招股说明书再抄一遍。这是 &lt;code&gt;agent-team&lt;/code&gt; 的核心约束：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;能通过 &lt;code&gt;ToolSearch&lt;/code&gt; 查到的 Tool Description（&lt;code&gt;TeamCreate&lt;/code&gt; / &lt;code&gt;SendMessage&lt;/code&gt; 的具体参数和用法），&lt;strong&gt;不出现在 SKILL.md 或 references 里&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;superpowers&lt;/code&gt; 系列 skill 已经写了的内容（TDD 怎么走、subagent-driven-development 模式），&lt;strong&gt;不出现在 references 里&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;references 里写过的内容（superpowers workflow 的步骤映射），&lt;strong&gt;不出现在 SKILL.md 里&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;每段提示词只存在于唯一一个地方。重复 = 漂移源：当 &lt;code&gt;TeamCreate&lt;/code&gt; 的描述更新了而你的 SKILL.md 抄了一份旧版本，下一次 coordination 就出 bug。所以 SKILL.md 反复用 “the descriptions returned are the authoritative reference”，强制 agent 去查 live schema 而不是读 skill 里的转述&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;两个 subskill 的拆分&lt;a href=&quot;#两个-subskill-的拆分&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;为什么不合成一个 skill？因为 lead 和 teammate 的 “first action” 和 ongoing protocol 几乎不重叠：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;lead&lt;/strong&gt; 关心：&lt;code&gt;TeamCreate&lt;/code&gt; 调用、spawn prompt 模板、什么时候 shutdown、git cleanup 顺序&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;teammate&lt;/strong&gt; 关心：inbox sync 协议、dispatch 上限、什么时候该 &lt;code&gt;SendMessage&lt;/code&gt;、怎么报告 DONE&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;混在一起每个角色要读 500+ 行的”和我无关”的内容。拆开后 lead 不需要知道 inbox sync 细节（那是 teammate 自己的事），teammate 不需要知道 &lt;code&gt;TeamCreate&lt;/code&gt; 怎么调（lead 派完才轮到 teammate 活）&lt;/p&gt;&lt;section&gt;&lt;h2&gt;superpowers workflow 作为 reference doc 而非第三个 skill&lt;a href=&quot;#superpowers-workflow-作为-reference-doc-而非第三个-skill&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;obra/superpowers&lt;/code&gt; 提供了一套 TDD 驱动的开发工作流：brainstorming → writing-plans → TDD implementer → reviewer → PR fix loop → merge。这套流程&lt;strong&gt;和 multi-agent team 正交&lt;/strong&gt;——你可以用 team 跑非开发任务（research、文档梳理），也可以用 superpowers 但不开 team&lt;/p&gt;&lt;p&gt;所以接入方式不是写成第三个 skill，而是放在每个 skill 的 &lt;code&gt;references/&lt;/code&gt; 目录下：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;lead/references/superpowers-workflow.md&lt;/code&gt;：lead 怎么把 superpowers 步骤映射到 team lifecycle&lt;/li&gt;
&lt;li&gt;&lt;code&gt;teammate/references/superpowers-implementer.md&lt;/code&gt;：implementer teammate 怎么走 TDD + 两阶段 review&lt;/li&gt;
&lt;li&gt;&lt;code&gt;teammate/references/code-review.md&lt;/code&gt;：reviewer teammate 怎么用 &lt;code&gt;code-review:code-review&lt;/code&gt; 跟 implementer 反复迭代&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;reference doc 不占常驻 context，需要时 lead 在 Step 3 决定要不要 &lt;code&gt;Read&lt;/code&gt;，spawn prompt 告诉新 teammate 去 &lt;code&gt;Read&lt;/code&gt; 对应那份。plain team coordination 和 full superpowers workflow 复用同一套底层 primitive&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;最重要的一段：inbox sync 协议&lt;a href=&quot;#最重要的一段inbox-sync-协议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;code&gt;TeamCreate&lt;/code&gt; 描述里有句话：“Messages from teammates are automatically delivered to you. You do NOT need to manually check your inbox.” 这句话&lt;strong&gt;只在 turn 边界成立&lt;/strong&gt;。单个 turn 内，你的 worldview 是冻结的，即便 peer 几毫秒前刚写了消息进你的 inbox&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;rendezvous failure&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;A 和 B 约好在 X 见面。A 朝 X 走。B 中途反悔，发消息说改到 Y。A 不查 inbox 继续走到 X，到了之后才发”我到 X 了”，&lt;strong&gt;然后才&lt;/strong&gt;读 inbox，发现要去 Y。A 改道去 Y。同时 B 收到”我到 X 了”反悔回 X，发”那回 X”。循环下去两人永远差一步&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;修复方法：&lt;strong&gt;每个 step 完成后、每次主动 &lt;code&gt;SendMessage&lt;/code&gt; 前，都 Read 一次 inbox&lt;/strong&gt;。如果非空就停掉这一 turn，让 framework 在下一 turn 注入并清空 inbox。&lt;strong&gt;Read 是用来 check 的，不是用来 act 的&lt;/strong&gt;——如果 inline 处理 inbox 而不停 turn，那条消息下一 turn 会被 framework 再次注入，处理两遍&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;hub-and-spoke 是 framework 硬限制&lt;a href=&quot;#hub-and-spoke-是-framework-硬限制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Claude Code 的 agent team 是&lt;strong&gt;扁平&lt;/strong&gt;的：teammate 不能 &lt;code&gt;Agent(team_name=..., name=...)&lt;/code&gt; spawn 别的 teammate，也不能调 &lt;code&gt;TeamCreate&lt;/code&gt; / &lt;code&gt;TeamDelete&lt;/code&gt;。所有 team membership 都由 lead 管&lt;/p&gt;&lt;p&gt;实际后果：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;teammate 觉得工作量大，应该 &lt;code&gt;SendMessage&lt;/code&gt; lead 求人，而不是自己尝试 spawn&lt;/li&gt;
&lt;li&gt;整个 team 的 dispatch 深度上限是 &lt;code&gt;lead → teammate → subagent&lt;/code&gt;，再深被 framework 拒&lt;/li&gt;
&lt;li&gt;工作流设计时&lt;strong&gt;不要假设 teammate 能调 teammate&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;安装&lt;a href=&quot;#安装&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;两步装好：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/plugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;marketplace&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Fomalhaut647/plugins&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/plugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;agent-team@fomalhaut647-plugins&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;@&lt;/code&gt; 前的 &lt;code&gt;agent-team&lt;/code&gt; 是 plugin name，&lt;code&gt;@&lt;/code&gt; 后的 &lt;code&gt;fomalhaut647-plugins&lt;/code&gt; 是 marketplace name&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;怎么用&lt;a href=&quot;#怎么用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;模式一：纯协作（无 superpowers）&lt;a href=&quot;#模式一纯协作无-superpowers&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;让 Claude Code 调用 &lt;code&gt;Skill(&apos;agent-team:lead&apos;)&lt;/code&gt;，它会引导你跑完整 lifecycle。spawn prompt 里只需让新 teammate 第一动作调 &lt;code&gt;Skill(&apos;agent-team:teammate&apos;)&lt;/code&gt;，剩下协议由那个 skill 接管。适合 research、文档梳理之类不涉及 spec/plan/PR 的任务&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;模式二：完整 superpowers workflow&lt;a href=&quot;#模式二完整-superpowers-workflow&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;从 &lt;code&gt;Skill(&apos;agent-team:lead&apos;)&lt;/code&gt; 进，让 lead 在 Step 3 &lt;code&gt;Read&lt;/code&gt; &lt;code&gt;superpowers-workflow.md&lt;/code&gt;。spawn prompt 里告诉每个 teammate 也 &lt;code&gt;Read&lt;/code&gt; 对应那份 reference doc&lt;/p&gt;&lt;section&gt;&lt;h3&gt;lead 视角&lt;a href=&quot;#lead-视角&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;docs/ layout 约定&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;长周期、跨多 session 推进的项目下推荐用一套标准 &lt;code&gt;docs/&lt;/code&gt; 目录：&lt;code&gt;vision.md&lt;/code&gt;（永恒愿景）/ &lt;code&gt;overview.md&lt;/code&gt;（当前版本地图）/ &lt;code&gt;specs/&amp;lt;module&amp;gt;.md&lt;/code&gt;（按功能模块切分）/ &lt;code&gt;plans/PlanN-&amp;lt;teammate&amp;gt;.md&lt;/code&gt;（每 session × 每 teammate 一份独立 plan）/ &lt;code&gt;progress/PlanN-&amp;lt;teammate&amp;gt;.md&lt;/code&gt;（与 plan 1:1 对应的交付报告）/ &lt;code&gt;archive/&lt;/code&gt;（冻结历史）。下面 lead 步骤里出现的路径都来自这套约定，不采用时把它当作”随 brief 说的位置”即可&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;在 main 分支&lt;/strong&gt;调 &lt;code&gt;superpowers:brainstorming&lt;/code&gt; 跟用户对齐方案，结果覆盖 &lt;code&gt;docs/specs/&amp;lt;module&amp;gt;.md&lt;/code&gt;（brainstorm 产物必须存活在 main 历史里，每个 worktree 后续都对照它）&lt;/li&gt;
&lt;li&gt;仍在 main 分支调 &lt;code&gt;superpowers:writing-plans&lt;/code&gt;，&lt;strong&gt;每个 teammate 一份独立的 &lt;code&gt;docs/plans/PlanN-&amp;lt;teammate&amp;gt;.md&lt;/code&gt;&lt;/strong&gt;——&lt;strong&gt;不写共享 &lt;code&gt;PlanN.md&lt;/code&gt; overview&lt;/strong&gt;（cross-cutting context：session scope、为何这样切分、teammate 间依赖，全部写进 lead 的 spawn prompt 而不入 doc）。plan 里&lt;strong&gt;显式标注&lt;/strong&gt;哪些任务能并行（决定要派几个 implementer teammate）&lt;/li&gt;
&lt;li&gt;调 &lt;code&gt;superpowers:using-git-worktrees&lt;/code&gt;，按 plan 的并行切分&lt;strong&gt;串行&lt;/strong&gt;创建 worktree（&lt;code&gt;EnterWorktree&lt;/code&gt; → &lt;code&gt;ExitWorktree(action=&quot;keep&quot;)&lt;/code&gt; 循环，因为单会话只能 active 一个 worktree）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TeamCreate&lt;/code&gt; + &lt;code&gt;TaskCreate&lt;/code&gt;，&lt;strong&gt;一条消息里并行&lt;/strong&gt; spawn 所有 implementer teammate（多条消息会串行）&lt;/li&gt;
&lt;li&gt;监控 &lt;code&gt;SendMessage&lt;/code&gt;，等 implementer 发来 PR URL&lt;/li&gt;
&lt;li&gt;每收到一个 PR URL，spawn 一个 &lt;code&gt;reviewer-pr-&amp;lt;N&amp;gt;&lt;/code&gt; teammate（无 worktree，&lt;code&gt;code-review:code-review&lt;/code&gt; 操作 PR diff 经 &lt;code&gt;gh&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;监控 implementer ↔ reviewer 之间的 fix loop，不干预除非卡住&lt;/li&gt;
&lt;li&gt;全部 &lt;code&gt;**APPROVED**&lt;/code&gt; 后，&lt;strong&gt;先&lt;/strong&gt;向用户报告状态、要 shutdown approval，&lt;strong&gt;再&lt;/strong&gt;单独要 merge approval（不要捆绑）&lt;/li&gt;
&lt;li&gt;并行 &lt;code&gt;shutdown_request&lt;/code&gt; → 等所有 &lt;code&gt;shutdown_response&lt;/code&gt; 回来&lt;/li&gt;
&lt;li&gt;对每个 implementer：&lt;code&gt;EnterWorktree(name=...)&lt;/code&gt; + &lt;code&gt;ExitWorktree(action=&quot;remove&quot;)&lt;/code&gt; 清 worktree，然后 &lt;code&gt;gh pr merge&lt;/code&gt; 合 PR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证每个 &lt;code&gt;docs/progress/PlanN-&amp;lt;teammate&amp;gt;.md&lt;/code&gt; 已落在 main&lt;/strong&gt;（implementer 在自己 PR 里写的，merge 完应该都在）。少了就 placeholder 一段或问用户怎么处理——这些文件是项目对 “实际发生了什么” 的永久记录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TeamDelete()&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;implementer teammate 视角&lt;a href=&quot;#implementer-teammate-视角&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;被 spawn 后第一动作：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Skill(&apos;agent-team:teammate&apos;)&lt;/code&gt;——加载 team primitive 协议（inbox sync / dispatch 上限）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Read references/superpowers-implementer.md&lt;/code&gt;——加载 implementer 角色工作流&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;立刻 &lt;code&gt;TaskCreate&lt;/code&gt; 把整个 session 要做的事建成 task list&lt;/strong&gt;——在 &lt;code&gt;EnterWorktree&lt;/code&gt; / Read docs / 派任何 subagent &lt;strong&gt;之前&lt;/strong&gt;。每个 Task A/B/C… 都拆成”implementer subagent dispatch”+“spec reviewer dispatch”+“code-quality reviewer dispatch”三条，最后再补 wrap-up + PR + fix loop 各一条。&lt;strong&gt;理由&lt;/strong&gt;：implementer 经验上最常见的失败模式是”做完一件忘了下一件”——漏激活 skill / 漏读 prompt 模板 / 漏派 reviewer subagent / PR 开完忘记 fix loop。Task list up-front 让每个 skill 激活、reference 读取、subagent dispatch 都被显式承认 + 完成后被 mark off，比仰赖记忆稳健得多&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;然后 startup：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先调两个 superpowers skill&lt;/strong&gt;：&lt;code&gt;subagent-driven-development&lt;/code&gt; / &lt;code&gt;dispatching-parallel-agents&lt;/code&gt;——在第一个任务开始&lt;strong&gt;之前&lt;/strong&gt;就把”orchestrate don’t code”的纪律设上，防止工作压力一来就退回直接写代码。&lt;code&gt;using-superpowers&lt;/code&gt; 由 hook 自动注入，&lt;strong&gt;不需要&lt;/strong&gt;显式 invoke&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EnterWorktree(path=&quot;...&quot;)&lt;/code&gt; 进 lead 预创建的 worktree&lt;/li&gt;
&lt;li&gt;读 overview / vision（若存在）/ 自己 module 的 spec / &lt;strong&gt;自己那份&lt;/strong&gt; &lt;code&gt;docs/plans/PlanN-&amp;lt;your-name&amp;gt;.md&lt;/code&gt;——你只读自己的 plan，其他 teammate 的 plan 路径不进你的 context&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;每个任务的工作循环：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;派 implementer subagent&lt;/strong&gt;：dispatch prompt 必须&lt;strong&gt;显式列出&lt;/strong&gt;该激活的 skill 和触发条件（&lt;code&gt;superpowers:test-driven-development&lt;/code&gt; 在起手、&lt;code&gt;systematic-debugging&lt;/code&gt; 在遇 bug、&lt;code&gt;verification-before-completion&lt;/code&gt; 在报 DONE 前），并要求 subagent 在 DONE 报告里列出激活了哪些 skill。&lt;strong&gt;不能写”use TDD”这种含糊指令&lt;/strong&gt;，subagent 会伪服从（跳过 RED 阶段、编造验证报告）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;派 spec-compliance reviewer subagent&lt;/strong&gt; 用 &lt;code&gt;superpowers:requesting-code-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;派 code-quality reviewer subagent&lt;/strong&gt;——两阶段 review 抓不同抽象层&lt;/li&gt;
&lt;li&gt;收 reviewer 反馈走 &lt;code&gt;superpowers:receiving-code-review&lt;/code&gt; 五步流程（read → understand → verify → evaluate → respond），不凭直觉判断 false positive&lt;/li&gt;
&lt;li&gt;修复 → 重派 reviewer，直到两个 reviewer 都通过&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TaskUpdate(status=&quot;completed&quot;)&lt;/code&gt; → 读 inbox check → 继续下一任务&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;所有任务做完：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;superpowers:finishing-a-development-branch&lt;/code&gt; 选 Option 2 (Push and Create PR)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建自己的 &lt;code&gt;docs/progress/PlanN-&amp;lt;your-name&amp;gt;.md&lt;/code&gt;&lt;/strong&gt;——和 plan 文件 1:1 对应，写你 module 实际发生了什么：实现了什么、哪里偏离 spec/plan、跳过了什么及为何、未解决 concern、follow-up 建议。每 teammate 独立文件，所以并行 PR 永远不会在这条路径冲突&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commit-commands:commit-push-pr&lt;/code&gt; 处理 commit + push + 开 PR（progress 文件作为同一 PR 的一部分一起 commit）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SendMessage&lt;/code&gt; lead 报 PR URL（&lt;strong&gt;先做 before-SendMessage 的 inbox check&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要 &lt;code&gt;ExitWorktree(action=&quot;remove&quot;)&lt;/code&gt;&lt;/strong&gt;——lead 在 Step 10 自己清，你保留 worktree on disk 等着（实际上 teammate 不是 worktree 的创建者，本来就清不掉）&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;收到 reviewer “go pull review” 消息后：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;gh api repos/{owner}/{repo}/pulls/{N}/comments&lt;/code&gt; 拉完整 review thread&lt;/li&gt;
&lt;li&gt;&lt;code&gt;superpowers:receiving-code-review&lt;/code&gt; 评估每条&lt;/li&gt;
&lt;li&gt;派 subagent 修复（先 &lt;code&gt;systematic-debugging&lt;/code&gt; 调查，再 implementer 改，再两阶段 review 自审）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git push&lt;/code&gt; → &lt;code&gt;SendMessage&lt;/code&gt; reviewer 求重审&lt;/li&gt;
&lt;li&gt;reviewer 回 &lt;code&gt;**Changes requested**&lt;/code&gt; → 循环；&lt;code&gt;**APPROVED**&lt;/code&gt; → &lt;code&gt;SendMessage&lt;/code&gt; lead 报最终状态后 idle&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;reviewer teammate 视角&lt;a href=&quot;#reviewer-teammate-视角&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;被 spawn 后：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Skill(&apos;agent-team:teammate&apos;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Read references/code-review.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不 &lt;code&gt;EnterWorktree&lt;/code&gt;&lt;/strong&gt;——你不需要（&lt;code&gt;code-review:code-review&lt;/code&gt; 通过 &lt;code&gt;gh&lt;/code&gt; 操作 PR diff，不需要本地 checkout）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Skill(&apos;code-review:code-review&apos;)&lt;/code&gt;——只调一次&lt;/strong&gt;。这是个知识型 skill，激活后内部 pipeline（5 并行 reviewer subagent + Haiku confidence-score 过滤）操作步骤已驻在 context 里，后续每轮 review 直接按它的方法跑，不重复 invoke&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;每轮 review 循环：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;跑 review pipeline（startup 已激活的 &lt;code&gt;code-review:code-review&lt;/code&gt;）。&lt;strong&gt;派 subagent 时要在 prompt 里点名 PR head sha&lt;/strong&gt;——subagent 默认 &lt;code&gt;Read&lt;/code&gt; 拿的是 main checkout 的文件，不指就会审错版本（用 &lt;code&gt;gh pr view &amp;lt;PR#&amp;gt; --json headRefOid -q .headRefOid&lt;/code&gt; 拿 sha，配合 &lt;code&gt;gh pr diff&lt;/code&gt; / &lt;code&gt;git show pr-&amp;lt;PR#&amp;gt;:&amp;lt;path&amp;gt;&lt;/code&gt; 等命令对齐 PR head）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gh pr comment &amp;lt;PR#&amp;gt;&lt;/code&gt; 把结论贴回 PR，&lt;strong&gt;首行&lt;/strong&gt;必须是 &lt;code&gt;**APPROVED**&lt;/code&gt; 或 &lt;code&gt;**Changes requested**&lt;/code&gt;（implementer 解析首行判断 verdict）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SendMessage&lt;/code&gt; implementer 通知”已发 review”（before-SendMessage inbox check 先做）&lt;/li&gt;
&lt;li&gt;idle 等 implementer 推 fix 来求重审，loop 回 1&lt;/li&gt;
&lt;li&gt;&lt;code&gt;**APPROVED**&lt;/code&gt; 后 &lt;code&gt;SendMessage&lt;/code&gt; lead 报最终状态，idle 等 shutdown&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;为什么用 &lt;code&gt;gh pr comment&lt;/code&gt; 而不是 &lt;code&gt;gh pr review --approve&lt;/code&gt;？&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;GitHub 禁止 PR author 给自己 PR &lt;code&gt;--approve&lt;/code&gt;。在单人开发 setup 里 reviewer 和 implementer 共用同一个 host &lt;code&gt;gh&lt;/code&gt; 身份，会被算成”PR author”——所以 &lt;code&gt;gh pr comment&lt;/code&gt; 加首行约定是 workaround&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;实战须知&lt;a href=&quot;#实战须知&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;它仍然是实验性 feature，需要人工盯着&lt;a href=&quot;#它仍然是实验性-feature需要人工盯着&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;抽象层级越往上堆，“转述”导致的指令漂移风险越大：lead 把纪律转述给 teammate，teammate 又转述给 subagent，每一层都有可能丢约束。哪怕 plugin 已经反复用 “the descriptions returned are the authoritative reference” 把转述压到最低，多 agent 协调本质上依然不稳定&lt;/p&gt;&lt;p&gt;实操时&lt;strong&gt;人类要盯着 teammate 是否在按约定走&lt;/strong&gt;——尤其 session 刚开始那几步。经验是：teammate 前几步走对了（按 task list 推进、显式调该激活的 skill、有派 reviewer subagent），后续大概率会持续遵循；前几步偷懒了，剩下整个 session 一路漂移到面目全非的概率不低。&lt;strong&gt;不要 spawn 完就走开&lt;/strong&gt;，盯到 teammate 跑过第一个 implementer + reviewer 周期、确认纪律真的设上了再放手&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;不要在文档和提示词里加时间限制&lt;a href=&quot;#不要在文档和提示词里加时间限制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;不要在 plan、spec、spawn prompt、dispatch prompt 里写”XX 分钟内完成”、“先做最重要的 N 个”、“快速 review 一下”这类时间或优先级限制。AI &lt;strong&gt;严重高估任务用时&lt;/strong&gt;（在它眼里复杂工作可能只是几秒钟的 tool call），一旦感到”时间紧”就会&lt;strong&gt;优先跳过 review 这种非生产性步骤&lt;/strong&gt;——伪服从地报 DONE 但实际跳过了 verification、跳过了 spec compliance check、跳过了 receiving-code-review 的五步流程&lt;/p&gt;&lt;p&gt;纪律本身没有时间成本上的浪费（review 不通过反而省时间），但 AI 不会自己做这个权衡。让纪律无条件成立，不给它任何借口跳过&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;什么时候用 team&lt;a href=&quot;#什么时候用-team&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;满足以下任一条件再考虑：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;工作跨多 turn（你会把控制交还用户再回来继续）&lt;/li&gt;
&lt;li&gt;两个以上角色要在共享代码库上并行推进&lt;/li&gt;
&lt;li&gt;implementer 和 reviewer 要跑多轮 fix loop&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果只是一次性的并行 read / draft / analyze，用 &lt;code&gt;superpowers:dispatching-parallel-agents&lt;/code&gt; 的 plain subagent fan-out 就够了，不要为了用 team 而用 team——协调有 overhead&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;这个 plugin 还在持续迭代，每次跑完真实的 multi-agent 任务都会回来调一些 wording。skill 里的每句话都来自一次具体的 coordination failure，所以 &lt;code&gt;CLAUDE.md&lt;/code&gt; 里专门写了一条：“不要根据 ‘theoretically’ 的猜测改 skill”——动 wording 前必须跑一次真实 session 验证新版本不退化&lt;/p&gt;&lt;p&gt;仓库：&lt;a href=&quot;https://github.com/Fomalhaut647/plugins/tree/main/plugins/agent-team&quot; target=&quot;_blank&quot;&gt;https://github.com/Fomalhaut647/plugins/tree/main/plugins/agent-team&lt;/a&gt;，欢迎试用、提 issue&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>挑战宿舍最佳实践</title><link>https://fomalhaut647.com/posts/dormitory/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/dormitory/</guid><description>谁不想在宿舍学累了睡觉，睡醒了开工呢</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;全景图&lt;a href=&quot;#全景图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;右上角摆路由器，用理线器让网线和电线沿着书柜壁整齐排列，wifi 覆盖全宿舍，手机也能高速冲浪&lt;/p&gt;&lt;p&gt;在空调管上卡一个挂钩，书包挂在那里，平板则藏在墙外侧&lt;/p&gt;&lt;p&gt;书柜和墙之间的空间摆一个小木柜，小木柜上再摆一个收纳箱放各种杂物和吃的喝的，茶叶等摆在暖气片上&lt;/p&gt;&lt;p&gt;耳机和帽子挂在衣柜侧壁上方，换季不穿的衣服放在两个大收纳箱里，藏到衣柜顶上&lt;/p&gt;&lt;p&gt;书柜中央的空格摆一套茶具，早上起来泡一壶茶，享受悠闲生活&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;4096&quot; src=&quot;/_astro/dormitory_0.COsU_4Yc_v1psn.webp&quot; srcset=&quot;/_astro/dormitory_0.COsU_4Yc_1Lpn4n.webp 640w, /_astro/dormitory_0.COsU_4Yc_1EL6co.webp 750w, /_astro/dormitory_0.COsU_4Yc_DbyVY.webp 828w, /_astro/dormitory_0.COsU_4Yc_b3N0q.webp 1080w, /_astro/dormitory_0.COsU_4Yc_Z1OAsMQ.webp 1280w, /_astro/dormitory_0.COsU_4Yc_1sLdj.webp 1668w, /_astro/dormitory_0.COsU_4Yc_mi7Hu.webp 2048w, /_astro/dormitory_0.COsU_4Yc_Z12a9AP.webp 2560w, /_astro/dormitory_0.COsU_4Yc_v1psn.webp 3072w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;主体区&lt;a href=&quot;#主体区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;正前方摆一个 27 寸 OLED 显示器，右手边放一个电脑支架，支架上摆好 15.3 寸 MacBook Air，显示器上面放 2 个 14W 的灯，让熬夜写代码时座位如同白天一般敞亮，排插藏在显示器后面，充电线从 MacBook 后方绕到最右侧，需要充电时把线拉过来&lt;/p&gt;&lt;p&gt;工作时显示器可以并排放 5 个 Claude Code 会话，旁边的 MacBook 还能显示其他资料，办公效率大大提升&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;4096&quot; height=&quot;3072&quot; src=&quot;/_astro/dormitory_1.CCWWQtXJ_Z2exKxX.webp&quot; srcset=&quot;/_astro/dormitory_1.CCWWQtXJ_Z1mCLh3.webp 640w, /_astro/dormitory_1.CCWWQtXJ_pjFeP.webp 750w, /_astro/dormitory_1.CCWWQtXJ_2bkChf.webp 828w, /_astro/dormitory_1.CCWWQtXJ_Z6M5Jq.webp 1080w, /_astro/dormitory_1.CCWWQtXJ_D2cUz.webp 1280w, /_astro/dormitory_1.CCWWQtXJ_Z4mki0.webp 1668w, /_astro/dormitory_1.CCWWQtXJ_Z1yyGow.webp 2048w, /_astro/dormitory_1.CCWWQtXJ_ZcraqO.webp 2560w, /_astro/dormitory_1.CCWWQtXJ_Z2exKxX.webp 4096w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;平板&amp;amp;理线器&lt;a href=&quot;#平板理线器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;2 根大功率 Type-C 充电线 + 1 根 Micro-B 能解决一切充电问题，3 根线从红圈处的理线器统一接出，完全不会乱&lt;/p&gt;&lt;p&gt;我在书柜侧面装了一个金属滑轨，可以把平板卡进去，这样就不用在寸土寸金的书柜正面腾一块空间放平板了&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;4096&quot; src=&quot;/_astro/dormitory_2.Dz9jaaiI_8zrXn.webp&quot; srcset=&quot;/_astro/dormitory_2.Dz9jaaiI_Z2ksz7l.webp 640w, /_astro/dormitory_2.Dz9jaaiI_Z2r6PYk.webp 750w, /_astro/dormitory_2.Dz9jaaiI_1BuKzc.webp 828w, /_astro/dormitory_2.Dz9jaaiI_Zbn9tz.webp 1080w, /_astro/dormitory_2.Dz9jaaiI_Z2c2qhQ.webp 1280w, /_astro/dormitory_2.Dz9jaaiI_ZkXbgG.webp 1668w, /_astro/dormitory_2.Dz9jaaiI_Z8OLv.webp 2048w, /_astro/dormitory_2.Dz9jaaiI_Z1oB75P.webp 2560w, /_astro/dormitory_2.Dz9jaaiI_8zrXn.webp 3072w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;干饭图&lt;a href=&quot;#干饭图&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;干饭时把鼠标垫往前推，防止饭菜掉到鼠标垫上&lt;/p&gt;&lt;p&gt;吃完后用湿纸巾把玻璃板擦干净，用干纸巾把水擦掉，最后把鼠标垫拖回来&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;4096&quot; height=&quot;3072&quot; src=&quot;/_astro/dormitory_3.c11ORjD-_Z2rhdES.webp&quot; srcset=&quot;/_astro/dormitory_3.c11ORjD-_Z224nJm.webp 640w, /_astro/dormitory_3.c11ORjD-_Zf6Vdt.webp 750w, /_astro/dormitory_3.c11ORjD-_1vT0NV.webp 828w, /_astro/dormitory_3.c11ORjD-_ZjvxQl.webp 1080w, /_astro/dormitory_3.c11ORjD-_qiJNE.webp 1280w, /_astro/dormitory_3.c11ORjD-_Zh5MoU.webp 1668w, /_astro/dormitory_3.c11ORjD-_Z1Li9vr.webp 2048w, /_astro/dormitory_3.c11ORjD-_ZpaCxJ.webp 2560w, /_astro/dormitory_3.c11ORjD-_Z2rhdES.webp 4096w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>为什么 AI 时代更应该使用双拼</title><link>https://fomalhaut647.com/posts/double-pinyin/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/double-pinyin/</guid><description>让中文输入跟上和 AI 协作的思考速度</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;也许是中文输入的最佳实践——每个汉字固定两次击键，节奏稳定到可以闭着眼打字。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;起因&lt;a href=&quot;#起因&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 &lt;a href=&quot;/posts/keyboard&quot;&gt;程序员键盘的最佳实践&lt;/a&gt; 里我说过：进入 vibe coding 时代之后打字速度反而更重要了，因为提示词要反复增删改、写得很长。&lt;/p&gt;&lt;p&gt;但那篇文章只讲了&lt;strong&gt;敲键这一层&lt;/strong&gt;——把每颗键都拉回主键区，减少手指的物理移动。中文比英文还多了一层独立的开销：&lt;strong&gt;从拼音到汉字的映射&lt;/strong&gt;——同样想表达的意思，要敲多长一串拼音才能上屏。全拼在这一层吃亏最大。&lt;/p&gt;&lt;p&gt;和 AI 协作的过程里，真正在写的中文比想象中多得多：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;提示词里描述需求、列约束、举反例——大段中文&lt;/li&gt;
&lt;li&gt;review AI 输出后写中文反馈，让它改 / 重写 / 走另一个方向&lt;/li&gt;
&lt;li&gt;微信、博客、笔记——日常文字本来就以中文为主&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;英文有它的快捷键和符号优化策略；中文输入的策略是：&lt;strong&gt;减少每个汉字的击键数&lt;/strong&gt; 和 &lt;strong&gt;减少歧义&lt;/strong&gt;。本文要讲的方案——双拼——正是为此而生的。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;全拼的瓶颈&lt;a href=&quot;#全拼的瓶颈&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;全拼的核心开销很简单——&lt;strong&gt;每个字都要敲一整串拼音&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;「我」&lt;code&gt;wo&lt;/code&gt; → 2 键&lt;/li&gt;
&lt;li&gt;「是」&lt;code&gt;shi&lt;/code&gt; → 3 键&lt;/li&gt;
&lt;li&gt;「双」&lt;code&gt;shuang&lt;/code&gt; → 6 键&lt;/li&gt;
&lt;li&gt;「重」&lt;code&gt;chong&lt;/code&gt; → 5 键&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;声母 + 韵母的总长度从 2 到 6 个字母不等，平均一个汉字 &lt;strong&gt;3–5 次击键&lt;/strong&gt;。键击数随拼音长度线性增长，长拼音的字尤其吃亏。&lt;/p&gt;&lt;p&gt;另一个更隐蔽的问题是&lt;strong&gt;汉字切分的歧义&lt;/strong&gt;。全拼的拼音流是连续的字母序列，输入法要靠概率猜在哪里切——&lt;code&gt;xian&lt;/code&gt; 是「线」还是「西安」？切错了就要回头改。这种歧义在部分场景里会反复出现，每次出现都要打断节奏。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;什么是双拼&lt;a href=&quot;#什么是双拼&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;双拼 = 一个键击声母 + 一个键击韵母 = 每个汉字固定 2 次击键&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;核心思路非常简单：把所有声母（&lt;code&gt;b/p/m/f/.../zh/ch/sh&lt;/code&gt;）映射到 26 个字母键上，每个声母一个键；把所有韵母（&lt;code&gt;a/o/e/.../ang/eng/iong&lt;/code&gt;）也映射到 26 个字母键上，每个韵母一个键。打字时&lt;strong&gt;先按声母键、再按韵母键&lt;/strong&gt;，两键合起来就是这个汉字的拼音。&lt;/p&gt;&lt;p&gt;举例（小鹤双拼方案）：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;「中」&lt;code&gt;zhong&lt;/code&gt; → &lt;code&gt;zh&lt;/code&gt; + &lt;code&gt;ong&lt;/code&gt; → &lt;code&gt;v&lt;/code&gt; + &lt;code&gt;s&lt;/code&gt; → &lt;strong&gt;vs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;「国」&lt;code&gt;guo&lt;/code&gt; → &lt;code&gt;g&lt;/code&gt; + &lt;code&gt;uo&lt;/code&gt; → &lt;code&gt;g&lt;/code&gt; + &lt;code&gt;o&lt;/code&gt; → &lt;strong&gt;go&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;「双」&lt;code&gt;shuang&lt;/code&gt; → &lt;code&gt;sh&lt;/code&gt; + &lt;code&gt;uang&lt;/code&gt; → &lt;code&gt;u&lt;/code&gt; + &lt;code&gt;l&lt;/code&gt; → &lt;strong&gt;ul&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;「拼」&lt;code&gt;pin&lt;/code&gt; → &lt;code&gt;p&lt;/code&gt; + &lt;code&gt;in&lt;/code&gt; → &lt;code&gt;p&lt;/code&gt; + &lt;code&gt;b&lt;/code&gt; → &lt;strong&gt;pb&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;一个长拼音如 &lt;code&gt;shuang&lt;/code&gt; 从 6 键压缩到 2 键，一个短拼音如 &lt;code&gt;wo&lt;/code&gt; 仍然是 2 键——&lt;strong&gt;任何汉字都是 2 键，节奏完全均匀&lt;/strong&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;双拼不改变拼音规则&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;双拼只是把拼音「压缩编码」到键盘上，&lt;strong&gt;拼音规则本身没变&lt;/strong&gt;。你不需要重新学拼音，也不需要换输入法软件——主流输入法（系统拼音、微信输入法、搜狗、Rime 等）都内置了双拼方案，开关藏在设置里。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;双拼方案的选择：小鹤&lt;a href=&quot;#双拼方案的选择小鹤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;双拼有不少方案——自然码、微软双拼、智能 ABC、小鹤、搜狗——本质都是「声母 + 韵母」的 26 键映射，区别在于具体怎么映射。&lt;/p&gt;&lt;p&gt;我用的是 &lt;strong&gt;小鹤双拼&lt;/strong&gt;。我当年选择方案时没认真比较各家的方案，只是看推荐小鹤双拼的比较多就选了它，下面三条理由是 Claude 整理的，供参考：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;跨平台支持最完整&lt;/strong&gt;：macOS / iOS / Windows / Linux / Android 的几乎所有主流输入法都内置小鹤方案，换设备零迁移成本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;韵母布局贴近发音&lt;/strong&gt;：例如 &lt;code&gt;ang&lt;/code&gt; 在 &lt;code&gt;h&lt;/code&gt;、&lt;code&gt;eng&lt;/code&gt; 在 &lt;code&gt;g&lt;/code&gt;、&lt;code&gt;iao&lt;/code&gt; 在 &lt;code&gt;n&lt;/code&gt;，许多韵母键位和发音口型/形声有联想，记忆负担小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生态成熟&lt;/strong&gt;：练习网站、教程、键位资料都最丰富，遇到问题搜得到答案&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;其他方案也不差&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;选哪个其实没那么关键——任何一个方案都比全拼快得多&lt;/strong&gt;。如果你的设备主力是 Windows 且不打算装第三方输入法，微软双拼是阻力最小的入口（内置免安装）；搜狗输入法的老用户可以直接用搜狗双拼；其他场景我都推荐小鹤。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;小鹤双拼键位映射&lt;a href=&quot;#小鹤双拼键位映射&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;完整的键位布局如下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;小鹤双拼键位映射&quot; loading=&quot;lazy&quot; width=&quot;1204&quot; height=&quot;584&quot; src=&quot;/_astro/double-pinyin_1.D70k-n8d_ZkeRQW.webp&quot; srcset=&quot;/_astro/double-pinyin_1.D70k-n8d_Z3k0KE.webp 640w, /_astro/double-pinyin_1.D70k-n8d_Z2tDXNc.webp 750w, /_astro/double-pinyin_1.D70k-n8d_2vxG3s.webp 828w, /_astro/double-pinyin_1.D70k-n8d_23p2Dg.webp 1080w, /_astro/double-pinyin_1.D70k-n8d_ZkeRQW.webp 1204w&quot; /&gt;&lt;figcaption&gt;小鹤双拼键位映射&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;记忆有两个要点：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;单字母声母 / 单字母韵母位置不变&lt;/strong&gt;：&lt;code&gt;b/p/m/f/...&lt;/code&gt; 还是按它们原来的键；&lt;code&gt;a/o/e/i/u&lt;/code&gt; 也还是按它们原来的键。所以「我」&lt;code&gt;wo&lt;/code&gt; 还是敲 &lt;code&gt;wo&lt;/code&gt; 两键，没有变化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;真正要记的是&lt;/strong&gt;：3 个双字母声母（&lt;code&gt;zh/ch/sh&lt;/code&gt; → &lt;code&gt;v/i/u&lt;/code&gt;），以及若干双字母韵母（如 &lt;code&gt;ang → h&lt;/code&gt;、&lt;code&gt;ong → s&lt;/code&gt;、&lt;code&gt;uang → l&lt;/code&gt;）。一共 20 多个映射，&lt;strong&gt;和背单词比起来这点量微不足道&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;全拼 vs 小鹤击键对比&lt;a href=&quot;#全拼-vs-小鹤击键对比&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&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;th&gt;全拼击键&lt;/th&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;我们&lt;/td&gt;&lt;td&gt;&lt;code&gt;wo men&lt;/code&gt;&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;code&gt;wo mf&lt;/code&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;双拼&lt;/td&gt;&lt;td&gt;&lt;code&gt;shuang pin&lt;/code&gt;&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;&lt;code&gt;ul pb&lt;/code&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;中国&lt;/td&gt;&lt;td&gt;&lt;code&gt;zhong guo&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;code&gt;vs go&lt;/code&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;输入&lt;/td&gt;&lt;td&gt;&lt;code&gt;shu ru&lt;/code&gt;&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;&lt;code&gt;uu ru&lt;/code&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;上下文&lt;/td&gt;&lt;td&gt;&lt;code&gt;shang xia wen&lt;/code&gt;&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;&lt;code&gt;uh xx wf&lt;/code&gt;&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;提示词&lt;/td&gt;&lt;td&gt;&lt;code&gt;ti shi ci&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;&lt;code&gt;ti ui ci&lt;/code&gt;&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;人工智能&lt;/td&gt;&lt;td&gt;&lt;code&gt;ren gong zhi neng&lt;/code&gt;&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;&lt;code&gt;rf gs vi ng&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;重新生成&lt;/td&gt;&lt;td&gt;&lt;code&gt;chong xin sheng cheng&lt;/code&gt;&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;&lt;code&gt;is xb ug ig&lt;/code&gt;&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;平均下来&lt;strong&gt;击键数大约减半&lt;/strong&gt;。再叠加上面提到的「切分无歧义」——双拼里每个字固定 2 键，输入法不需要猜在哪里切，整句输入更顺。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;双拼还能解决「切分」&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;全拼里 &lt;code&gt;xian&lt;/code&gt; 既可能是「线」也可能是「西安」，输入法要猜；双拼里「线」&lt;code&gt;xm&lt;/code&gt; 和「西安」&lt;code&gt;xian&lt;/code&gt; &lt;strong&gt;完全无歧义&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;学习曲线：阵痛期一两周，回报终身&lt;a href=&quot;#学习曲线阵痛期一两周回报终身&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;从全拼切到双拼是肌肉记忆的彻底重建——你大脑里的「shang」会自动想敲 &lt;code&gt;s-h-a-n-g&lt;/code&gt;，但双拼要你只敲 &lt;code&gt;u-h&lt;/code&gt;，前几天每打一个字都要在心里默念韵母对应到哪个键，速度肯定大幅下滑。&lt;/p&gt;&lt;p&gt;我自己是高考完那个暑假学的双拼，到现在快三年了——具体每周的速度变化早就忘了，但&lt;strong&gt;过渡期比想象中短&lt;/strong&gt;是肯定的：一两周之后就基本不影响日常使用，一两个月后彻底超过原来的全拼速度，之后就再也回不去了。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;过渡期推荐找完整的两周&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;别在赶 ddl 或者要给老板写汇报的时候开始切——你会因为太慢而忍不住切回全拼，前功尽弃。&lt;strong&gt;找一段不那么赶的时间集中突击&lt;/strong&gt;，比如假期前两周，效果最好。我自己选高考后的暑假就是这个考虑。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;怎么练&lt;a href=&quot;#怎么练&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;键位图打印贴显示器边上&lt;/strong&gt;：忘了就查映射图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;练习网站&lt;/strong&gt;：搜「小鹤双拼练习」能找到很多 web 工具，例如 &lt;a href=&quot;https://api.ihint.me/shuang/&quot; target=&quot;_blank&quot;&gt;双拼练习&lt;/a&gt;（无需注册，输入文本就开始练）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;日常切换 = 最好的练习&lt;/strong&gt;：聊微信、写笔记、写代码注释、和 AI 对话——一切场景全用双拼，&lt;strong&gt;不留退路&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;口诀&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;网上有一些小鹤口诀，但我不习惯使用口诀，习惯强行背诵。&lt;strong&gt;强行背诵、直接打字、忘了查图、加深记忆&lt;/strong&gt;——一周不到键位就刻进手指了，根本不需要口诀。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;AI 时代的具体收益&lt;a href=&quot;#ai-时代的具体收益&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;回到开头的论点。讲完了双拼本身，最后说说为什么 AI 时代这件事比以前更值得做。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;提示词撰写&lt;a href=&quot;#提示词撰写&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;我每天写给 Claude / GPT / Gemini 的中文提示词加起来轻松上千字甚至上万字。这些文字的特点是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;长&lt;/strong&gt;：要把约束 / 目标 / 反例都说清楚&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反复改&lt;/strong&gt;：第一版不够好就追加上下文、调措辞、加例子&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;思考密度高&lt;/strong&gt;：每句话都是在精确表达需求，思考速度远跟不上输入速度的话，&lt;strong&gt;很容易丢掉刚才想到的细节&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;双拼把每个汉字的输入开销降到最低，&lt;strong&gt;让手指跟得上脑子&lt;/strong&gt;——这才是 AI 时代它最大的价值。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;微信、飞书、博客&lt;a href=&quot;#微信飞书博客&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;和 AI 协作之外的中文输入场景同样高频：和团队同步进展、和朋友闲聊、写 commit message 的中文部分、写博客——这些场景全都受益。&lt;strong&gt;双拼是一次性投资、终身受益&lt;/strong&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;最后一句总结：&lt;strong&gt;双拼不是给”打字快的人”的高级玩具，而是给”经常用中文表达”的人的基础设施&lt;/strong&gt;。AI 时代每个人都在大量用中文和模型对话——这是历史上中文输入需求最旺盛的一个时代，没有理由继续忍受全拼。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>程序员键盘的最佳实践</title><link>https://fomalhaut647.com/posts/keyboard/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/keyboard/</guid><description>全世界打字速度不变而我提高 1000 倍</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;也许是程序员键盘的最佳实践，它是我创造的东西里我最喜欢的——一把自己组的客制化机械键盘。&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;起因&lt;a href=&quot;#起因&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;打字速度其实非常重要。即便进入了 vibe coding 时代、人类已经很少手写代码，提示词的撰写依然繁琐：为了把每个细节说清楚，提示词往往写得很长，还要反复增删改。打字速度仍然是码字效率的核心。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;本文只讲键盘这一层&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;输入效率可以分两层来看：一层是&lt;strong&gt;敲键本身&lt;/strong&gt;——手指在物理键盘上的移动距离；另一层是&lt;strong&gt;从拼音到汉字的映射&lt;/strong&gt;——同样的中文意图需要敲多少个键。本文聚焦前者；后者请见 &lt;a href=&quot;/posts/double-pinyin&quot;&gt;为什么 AI 时代更应该使用双拼&lt;/a&gt;。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;而真正的瓶颈往往不是十指的快慢，而是&lt;strong&gt;手指频繁离开主键区&lt;/strong&gt;：下划线 &lt;code&gt;_&lt;/code&gt; 离主键区很远还要按 Shift；括号 &lt;code&gt;()/[]/{}&lt;/code&gt; 要伸到右上角；运算符 &lt;code&gt;+/-/*&lt;/code&gt; 在最远的右上角；方向键更是要把整只右手挪走——单看每个操作都很轻，叠起来就是一笔不小的「打字税」。&lt;/p&gt;&lt;p&gt;理想的状态是&lt;strong&gt;所有常用符号和功能键都在主键区一格之内&lt;/strong&gt;，手指几乎不离开 ASDF/JKL; 这一带。这就是本文要讲的方案能做到的事。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;解决方案：Via 改键&lt;a href=&quot;#解决方案via-改键&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://usevia.app/&quot; target=&quot;_blank&quot;&gt;Via&lt;/a&gt; 是一个可视化的键盘改键工具——浏览器打开，连上键盘，点选 + 拖拽即可重映射每一颗键，还能定义多个&lt;strong&gt;图层 (Layer)&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;图层的切换有两种常见模式：&lt;strong&gt;按住触发键&lt;/strong&gt;时进入图层、松手即返；或者&lt;strong&gt;按一下松开&lt;/strong&gt;就切换到图层、再按一下切回。我用的是前一种——按住 &lt;code&gt;Fn&lt;/code&gt; 时，&lt;code&gt;H/J/K/L&lt;/code&gt; 不再是字母而是 &lt;code&gt;Left/Down/Up/Right&lt;/code&gt;，松开 &lt;code&gt;Fn&lt;/code&gt; 立刻回到字母层。于是输入符号不再需要大范围移动手指——&lt;strong&gt;除了阿拉伯数字，所有字母和符号的手指移动距离都不超过一格&lt;/strong&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;关于键盘是否支持 Via&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;不是所有键盘都支持 Via，购买前可以直接询问商家。我用的是唯咖（weikav）Lucky65 V2，支持 Via，不过无线模式下复杂的 Via 操作有 bug——烧录必须在有线下完成，平时使用也建议保持有线，否则部分映射会失效。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;三处核心改动&lt;a href=&quot;#三处核心改动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;整套方案归根结底只有三处关键改动：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;Caps&lt;/code&gt; 改为短按 &lt;code&gt;Esc&lt;/code&gt; / 长按 &lt;code&gt;Fn&lt;/code&gt;&lt;/strong&gt;——&lt;code&gt;Caps&lt;/code&gt; 是左小指最容易触及的位置，而大写锁定平时根本用不上。把它改造成 Esc + Fn 的双功能键性价比极高：&lt;code&gt;Esc&lt;/code&gt; 本身就是高频键（很多工具用它退出、Claude Code 双击 &lt;code&gt;Esc&lt;/code&gt; 触发 &lt;code&gt;/rewind&lt;/code&gt;），vim 用户更是离不开它&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;添加大量 &lt;code&gt;Fn&lt;/code&gt; 组合键&lt;/strong&gt;——把所有常用符号、方向键、功能键塞进 Fn 层&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;交换 &lt;code&gt;;&lt;/code&gt; 和 &lt;code&gt;/&lt;/code&gt;，用 &lt;code&gt;:&lt;/code&gt; 和 &lt;code&gt;&quot;&lt;/code&gt; 覆盖原本 &lt;code&gt;;&lt;/code&gt; 和 &lt;code&gt;&apos;&lt;/code&gt; 的位置&lt;/strong&gt;——&lt;code&gt;:&lt;/code&gt; 在写代码时比 &lt;code&gt;;&lt;/code&gt; 高频得多（Python、字典、JSON、TypeScript 类型注解全都用它），右小指本位键留给更常用的字符更划算&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;调整后的两层布局如下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;表层布局&quot; loading=&quot;lazy&quot; width=&quot;2952&quot; height=&quot;1072&quot; src=&quot;/_astro/keyboard_1.DQG-N1to_2rfk3q.webp&quot; srcset=&quot;/_astro/keyboard_1.DQG-N1to_ZOnMlA.webp 640w, /_astro/keyboard_1.DQG-N1to_Z2fpeht.webp 750w, /_astro/keyboard_1.DQG-N1to_2ekxim.webp 828w, /_astro/keyboard_1.DQG-N1to_ZYVNGC.webp 1080w, /_astro/keyboard_1.DQG-N1to_Zl4R5o.webp 1280w, /_astro/keyboard_1.DQG-N1to_dSrVj.webp 1668w, /_astro/keyboard_1.DQG-N1to_Z1k0aDQ.webp 2048w, /_astro/keyboard_1.DQG-N1to_jjwim.webp 2560w, /_astro/keyboard_1.DQG-N1to_2rfk3q.webp 2952w&quot; /&gt;&lt;figcaption&gt;表层布局&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Fn 层布局&quot; loading=&quot;lazy&quot; width=&quot;2950&quot; height=&quot;1072&quot; src=&quot;/_astro/keyboard_2.CchLoBXM_Z1tlKmi.webp&quot; srcset=&quot;/_astro/keyboard_2.CchLoBXM_2qhfo3.webp 640w, /_astro/keyboard_2.CchLoBXM_10fNsa.webp 750w, /_astro/keyboard_2.CchLoBXM_Z1kvTdz.webp 828w, /_astro/keyboard_2.CchLoBXM_9Ln4X.webp 1080w, /_astro/keyboard_2.CchLoBXM_NDjGc.webp 1280w, /_astro/keyboard_2.CchLoBXM_1nBDHT.webp 1668w, /_astro/keyboard_2.CchLoBXM_ZagXRg.webp 2048w, /_astro/keyboard_2.CchLoBXM_1t2I4W.webp 2560w, /_astro/keyboard_2.CchLoBXM_Z1tlKmi.webp 2950w&quot; /&gt;&lt;figcaption&gt;Fn 层布局&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Fn 层映射示例&lt;a href=&quot;#fn-层映射示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;下面是几组高频用到的 Fn 组合键，完整映射可见后文的 Via json 文件：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;方向键&lt;/strong&gt;：&lt;code&gt;Fn + H/J/K/L&lt;/code&gt; → &lt;code&gt;Left/Down/Up/Right&lt;/code&gt;（vim 风格）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;翻页&lt;/strong&gt;：&lt;code&gt;Fn + N/M&lt;/code&gt; → &lt;code&gt;Pagedown/Pageup&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;退格&lt;/strong&gt;：&lt;code&gt;Fn + D&lt;/code&gt; → &lt;code&gt;Backspace&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回车&lt;/strong&gt;：&lt;code&gt;Fn + ;&lt;/code&gt; → &lt;code&gt;Enter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;下划线&lt;/strong&gt;：&lt;code&gt;Fn + F&lt;/code&gt; → &lt;code&gt;_&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运算符&lt;/strong&gt;：&lt;code&gt;Fn + G/S/B&lt;/code&gt; → &lt;code&gt;+/-/*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;括号&lt;/strong&gt;：&lt;code&gt;Fn + I/O/P&lt;/code&gt; → &lt;code&gt;()/[]/{}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数字行符号&lt;/strong&gt;：&lt;code&gt;Fn + Q/W/E/R/T/Y/U&lt;/code&gt; → &lt;code&gt;!/@/#/$/%/^/&amp;amp;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;方向键映射比 vim 更适合中文用户&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;中文用户在码字时频繁切换输入法——英文敲代码 / 提示词、中文敲提示词的描述部分。vim 普通模式下中文输入法有 bug：按 &lt;code&gt;J&lt;/code&gt; 期望下移一行，输入法会把它当作字母键拦截、进入输入状态。而 &lt;code&gt;Fn + J&lt;/code&gt; 直接映射到系统的下方向键，&lt;strong&gt;无论当前输入法是中文还是英文，按下去都是下移一行&lt;/strong&gt;，不需要先切换输入法。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;括号用宏实现自动配对&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;code&gt;Fn + I/O/P&lt;/code&gt; 并不是输出单个左括号，而是用 Via 的宏功能一次性输出左右括号、并把光标定位到中间。这样做有两个好处：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;节省按键位&lt;/strong&gt;：左右括号合并为一颗键，原本 &lt;code&gt;()&lt;/code&gt; / &lt;code&gt;[]&lt;/code&gt; / &lt;code&gt;{}&lt;/code&gt; 需要 6 个键位，现在压缩成 3 个。主键区一格之内就能塞下三种括号&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨编辑器配对&lt;/strong&gt;：大多数 IDE 已经做了自动补完，但终端和纯文本编辑器没有——键盘自带这功能后所有场景统一&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;常用组合键演示&lt;a href=&quot;#常用组合键演示&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Fn 改键之后，配合 OS 级别的快捷键（macOS 用 &lt;code&gt;Cmd&lt;/code&gt;、Windows 用 &lt;code&gt;Ctrl&lt;/code&gt;），左手小指按住 &lt;code&gt;Caps&lt;/code&gt;（即 &lt;code&gt;Fn&lt;/code&gt;）的同时其他手指几乎不用移动就能完成大量编辑动作：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;跳到行首&lt;/strong&gt;：&lt;code&gt;Cmd&lt;/code&gt; + &lt;code&gt;Caps&lt;/code&gt; + &lt;code&gt;H&lt;/code&gt;——左手大拇指按 &lt;code&gt;Cmd&lt;/code&gt;、左手小指按 &lt;code&gt;Caps&lt;/code&gt;、右手食指按 &lt;code&gt;H&lt;/code&gt; → 触发 &lt;code&gt;Cmd + Left&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跳到行尾&lt;/strong&gt;：&lt;code&gt;Cmd&lt;/code&gt; + &lt;code&gt;Caps&lt;/code&gt; + &lt;code&gt;L&lt;/code&gt;——右手无名指按 &lt;code&gt;L&lt;/code&gt; → 触发 &lt;code&gt;Cmd + Right&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;删除整行&lt;/strong&gt;：&lt;code&gt;Cmd&lt;/code&gt; + &lt;code&gt;Caps&lt;/code&gt; + &lt;code&gt;D&lt;/code&gt;——左手中指按 &lt;code&gt;D&lt;/code&gt; → 触发 &lt;code&gt;Cmd + Backspace&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;再也不需要把右手挪到方向键区，也不需要去摸 &lt;code&gt;Home / End / Backspace&lt;/code&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;顺便说：macOS 的按键布局比 Windows 更人体工学&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;macOS 上最常用的修饰键 &lt;code&gt;Cmd&lt;/code&gt; 紧挨着空格，左手大拇指直接就能按到；而 Windows 上最常用的 &lt;code&gt;Ctrl&lt;/code&gt; 在键盘最左下角，左手小指要大幅外移才能够到。这就是为什么 macOS 上「大拇指 + 字母键」可以舒服地一只手完成，Windows 上等价操作总要把整个左掌扭一下——同样的快捷键，体感差很多。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Via 配置文件&lt;a href=&quot;#via-配置文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;完整的 Via json 配置文件（导入 Via 后可直接复用）：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;Lucky65V2&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;vendorProductId&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;875422727&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;macros&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;{+KC_LSFT}{1}9{1}0{1}{-KC_LSFT}{1}{+KC_LEFT}{1}{-KC_LEFT}&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;[{1}]{1}{+KC_LEFT}{1}{-KC_LEFT}&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;{+KC_RSFT}{1}[{1}]{1}{-KC_RSFT}{1}{+KC_LEFT}{1}{-KC_LEFT}&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;layers&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_GRV&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_2&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_3&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_4&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_6&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_7&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_8&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_9&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_0&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MINS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_EQL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TAB&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_Q&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_W&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_E&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_R&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_T&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_Y&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_U&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_I&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_O&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_P&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LBRC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RBRC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSLS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;LT(1,KC_ESC)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_A&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_S&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_D&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_G&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_H&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_J&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_K&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_L&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SLSH&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_QUOT)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_ENT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LSFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_Z&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_X&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_C&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_V&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_B&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_N&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_M&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_COMM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DOT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_SCLN)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RSFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_UP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;84&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LCTL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;85&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;86&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LALT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;87&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LGUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;88&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;89&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;90&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;91&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RGUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;92&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RALT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;93&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LEFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;94&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DOWN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;95&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RGHT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;96&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;97&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;98&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;99&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;100&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;101&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;QK_CLEAR_EEPROM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;102&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;103&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F2&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;104&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F3&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;105&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F4&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;106&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;107&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F6&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;108&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F7&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;109&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F8&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;110&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F9&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;111&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F10&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;112&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F11&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;113&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F12&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;114&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_TOG&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;115&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;116&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;TO(3)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;117&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;118&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_2)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;119&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_3)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;120&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_4)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;121&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_5)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;122&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_6)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;123&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;124&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;MACRO(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;125&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;MACRO(1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;126&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;MACRO(2)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;127&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;128&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;129&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_MOD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;130&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;131&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;132&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_SLSH)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;133&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PMNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;134&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;135&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_MINS)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;136&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PPLS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;137&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LEFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;138&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DOWN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;139&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_UP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;140&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RGHT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;141&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_ENT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;142&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_QUOT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;143&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_HUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;144&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(5)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;145&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;146&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;147&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_GRV&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;148&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSLS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;149&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DEL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;150&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PEQL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;151&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PAST&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;152&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PGDN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;153&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PGUP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;154&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_BSLS)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;155&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_GRV)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;156&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SCLN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;157&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;158&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;159&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(6)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;160&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;161&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;162&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;163&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;164&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;165&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;166&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;167&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;168&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;169&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;170&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;171&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;172&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;173&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;174&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;175&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;176&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;177&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;178&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;QK_CLEAR_EEPROM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;179&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MYCM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;180&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_WWW_HOME&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;181&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MAIL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;182&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_CALC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;183&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MSEL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;184&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MSTP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;185&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MPRV&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;186&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MPLY&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;187&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MNXT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;188&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;189&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;190&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;191&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_TOG&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;192&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;193&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;TO(3)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;194&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;195&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;196&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(2)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;197&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(5)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;198&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(6)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;199&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;200&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;201&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;202&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;203&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PSCR&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;204&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;205&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;206&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_MOD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;207&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;208&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;209&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;210&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;211&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;212&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;213&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;214&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SLCK&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;215&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PAUS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;216&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_HOME&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;217&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_END&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;218&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;219&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;220&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_HUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;221&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;222&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;223&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;224&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;225&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;226&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;227&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;228&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;229&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;230&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;231&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;232&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;233&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;234&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;235&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;236&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;237&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;238&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(8)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;239&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;240&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;241&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;242&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;243&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;244&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;245&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;246&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;247&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;248&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;249&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;250&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;251&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;252&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;253&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;254&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;255&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_GRV&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;256&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;257&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_2&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;258&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_3&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;259&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_4&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;260&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;261&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_6&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;262&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_7&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;263&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_8&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;264&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_9&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;265&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_0&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;266&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MINS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;267&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_EQL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;268&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;269&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;270&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TAB&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;271&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_Q&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;272&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_W&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;273&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_E&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;274&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_R&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;275&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_T&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;276&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_Y&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;277&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_U&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;278&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_I&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;279&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_O&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;280&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_P&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;281&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LBRC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;282&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RBRC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;283&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSLS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;284&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;285&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;LT(4,KC_ESC)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;286&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_A&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;287&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_S&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;288&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_D&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;289&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;290&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_G&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;291&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_H&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;292&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_J&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;293&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_K&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;294&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_L&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;295&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SLSH&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;296&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_QUOT)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;297&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_ENT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;298&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;299&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;300&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LSFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;301&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_Z&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;302&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_X&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;303&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_C&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;304&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_V&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;305&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_B&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;306&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_N&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;307&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_M&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;308&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_COMM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;309&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DOT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;310&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_SCLN)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;311&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RSFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;312&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_UP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;313&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;314&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;315&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LCTL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;316&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;317&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LGUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;318&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LALT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;319&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;320&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;321&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;322&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RCTL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;323&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RALT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;324&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LEFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;325&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DOWN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;326&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RGHT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;327&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;328&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;329&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;330&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;331&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;332&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;QK_CLEAR_EEPROM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;333&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;334&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F2&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;335&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F3&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;336&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F4&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;337&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;338&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F6&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;339&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F7&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;340&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F8&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;341&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F9&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;342&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F10&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;343&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F11&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;344&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_F12&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;345&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_TOG&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;346&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;347&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;TO(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;348&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;349&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_2)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;350&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_3)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;351&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_4)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;352&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_5)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;353&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_6)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;354&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;355&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;MACRO(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;356&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;MACRO(1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;357&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;MACRO(2)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;358&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;359&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;360&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_MOD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;361&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;362&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;363&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_SLSH)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;364&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PMNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;365&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSPC&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;366&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_MINS)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;367&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PPLS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;368&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_LEFT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;369&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DOWN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;370&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_UP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;371&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_RGHT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;372&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_ENT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;373&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_QUOT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;374&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_HUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;375&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(5)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;376&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;377&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;378&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_GRV&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;379&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BSLS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;380&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_DEL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;381&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PEQL&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;382&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PAST&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;383&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PGDN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;384&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PGUP&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;385&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_BSLS)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;386&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;S(KC_GRV)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;387&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_SCLN&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;388&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;389&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;390&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(6)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;391&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;392&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;393&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;394&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;395&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;396&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;397&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;398&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;399&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;400&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;401&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;402&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;403&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;404&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;405&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;406&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;407&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;408&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;409&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;QK_CLEAR_EEPROM&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;410&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BRIU&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;411&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_BRID&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;412&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;413&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;414&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;415&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;416&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MPRV&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;417&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MPLY&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;418&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MNXT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;419&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;420&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;421&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;422&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_TOG&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;423&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;424&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;TO(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;425&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(0)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;426&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(1)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;427&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(2)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;428&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(5)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;429&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(6)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;430&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;431&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;432&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;433&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;434&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_PSCR&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;435&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;436&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;437&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_MOD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;438&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;439&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;440&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;441&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;442&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;443&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;444&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;445&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;446&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;447&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;448&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;449&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;450&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;451&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_HUI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;452&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;453&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;454&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;455&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;456&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;457&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;458&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;459&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;460&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;461&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;462&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;463&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;464&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;465&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;466&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;467&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;468&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;469&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(8)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;470&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_NO&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;471&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;472&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;473&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;474&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;475&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;CUSTOM(7)&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;476&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;477&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;478&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;479&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_VAD&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;480&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;RGB_SPI&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;481&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;482&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_TRNS&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;483&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;KC_MUTE&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;484&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;485&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;486&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;encoders&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;487&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;488&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;489&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;490&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;491&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;492&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;493&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;&quot;KC_VOLU&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;KC_VOLD&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;494&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;495&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;496&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;关于键盘本身&lt;a href=&quot;#关于键盘本身&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;聊完软件层面再聊硬件。这一节简单介绍键盘选购的基础知识，给打算自己组一把客制化键盘的人作参考。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;键盘类型&lt;a href=&quot;#键盘类型&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;机械键盘&lt;/strong&gt;：每颗按键有独立的「轴体」，根据触发方式和声音又能继续细分（见下一节）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;光轴键盘&lt;/strong&gt;：用红外光束被按键阻断来判定触发，触发响应比传统机械接触式更快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;磁轴键盘&lt;/strong&gt;：用霍尔效应感应磁铁与 PCB 的距离来判断按键深度。&lt;strong&gt;触发距离可以在 Via 等软件里自定义&lt;/strong&gt;，电竞圈用得多&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;「&lt;strong&gt;静音&lt;/strong&gt;」不是一个独立类别，而是机械键盘的一种附加属性——在轴的 stem 加阻尼材料降低声音即可。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;机械轴的两个维度&lt;a href=&quot;#机械轴的两个维度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;机械键盘的轴体可以按两个独立维度分类：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;形态维度&lt;/strong&gt;（决定键程长短）：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标准轴&lt;/strong&gt;：键程约 4mm，触底反馈强烈，是经典手感&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;矮轴&lt;/strong&gt;：键程约 3mm 甚至更短，键盘整体厚度也变薄。除了便携性更好，键程介于标准轴和薄膜之间，&lt;strong&gt;适合作为薄膜键盘到机械键盘的过渡&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;手感维度&lt;/strong&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;段落轴&lt;/strong&gt;（青轴、茶轴等）：按到一定深度有明显的「咔哒」反馈，确认感强&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;市场上&lt;strong&gt;标准轴 + 线性轴&lt;/strong&gt;的组合最为常见。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;客制化键盘的三大件&lt;a href=&quot;#客制化键盘的三大件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;一把客制化机械键盘由三个部分组成，可以分别选购、自由搭配：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;套件&lt;/strong&gt;：键盘的「骨架」——包括外壳、PCB、定位板、卫星轴等。决定&lt;strong&gt;配列&lt;/strong&gt;（68 / 75 / 84 / 全键等）、&lt;strong&gt;连接方式&lt;/strong&gt;（有线 / 无线 / 三模）、以及是否支持 &lt;strong&gt;Via&lt;/strong&gt; 等改键软件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;轴体&lt;/strong&gt;：决定手感和声音的核心&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;键帽&lt;/strong&gt;：键盘的「皮肤」，影响外观和敲击声。常见材质有 ABS（亮、轻、易打油）和 PBT（哑光、重、耐磨）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;我的选择&lt;a href=&quot;#我的选择&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;套件&lt;/strong&gt;：唯咖（weikav）Lucky65 V2，67 键。我不需要 F 区按键和小键盘，所以特意选了 65 配列——桌面占用最小，常用键一颗不少&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;轴体&lt;/strong&gt;：高特青柠轴 V3，当时静音段落轴的王者之一（现在可能有更好的轴体了）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;键帽&lt;/strong&gt;：淘宝买的芙宁娜主题二创键帽&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;65 配列右侧那些键我其实都不用&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;经过 Via 改键之后，65 配列里右侧的方向键、右 Enter、右 Shift、Backspace 等键平时基本用不到——它们的功能都在 Fn 层有等价键，&lt;strong&gt;左手小指按住 &lt;code&gt;Caps&lt;/code&gt;，其他手指移动不超过一格就能搞定&lt;/strong&gt;。我甚至把最右侧的 4 颗特殊键直接设置成空白（按下去什么都不会发生），纯装饰。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;为什么选段落轴 + 静音&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;我自己不太能接受线性轴——按下去全程没阻力变化，容易误触，少了一点「我按到了」的确认感。段落轴那种「咔哒」一下的反馈对我刚刚好。&lt;/p&gt;&lt;p&gt;同时&lt;strong&gt;强烈推荐学生选静音轴体&lt;/strong&gt;：舍友睡觉时也能尽情码字、图书馆里也不必担心键盘声扰人，既不影响别人又能保持自己的码字节奏。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;第一次组键盘的建议&lt;/div&gt;&lt;/div&gt;&lt;div&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;买「轴体全家桶」&lt;/strong&gt;：每种轴体各一颗 + 一个试轴器，自己在家对照按一按，选出最喜欢的再下单&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>为什么 Mac 比 Windows 优越</title><link>https://fomalhaut647.com/posts/mac/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/mac/</guid><description>Linux 是工作, Mac 是生活, Windows 是游戏</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;程序员的最佳生产力机器&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;起因&lt;a href=&quot;#起因&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我大学之前一直用 Windows 台式机，大一期间饱受惠普暗影精灵 9 的折磨，大二初换成 MacBook 后再没回头。AI 时代到来之后这个判断更坚定了：和 Claude / GPT 协作要频繁开终端、跑脚本、连服务器、改 dotfiles，这些动作 Mac 做起来都比 Windows &lt;strong&gt;顺手一个量级&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;两个我观察到的现象：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;身边大量从 Windows 换到 Mac 的同学都后悔没早点换；反过来从 Mac 换回 Windows 的几乎没有。&lt;/strong&gt; 这种不对称性是最直接的信号&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;国内外大厂——互联网巨头、AI 明星公司——给员工配的默认机型基本都是 MacBook&lt;/strong&gt;。工业界用真金白银做出的选择&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;用一句话概括我的立场：&lt;strong&gt;Linux 是工作，Mac 是生活，Windows 是游戏&lt;/strong&gt;。展开就是我心目中的程序员最佳配置三件套：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MacBook Air 作为主力机&lt;/strong&gt;——除了游戏，几乎所有事都在这上面完成：写代码、写文档、刷网页、看视频、剪辑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows 台式机作为游戏机&lt;/strong&gt;——只装游戏，享受老黄的 DLSS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;远程 Linux 服务器&lt;/strong&gt;——本地 Mac 做不动的重体力活（如训练模型）扔到服务器上&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;下文展开讲为什么”生活”那一档 Mac 比 Windows 更适合程序员。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Unix 内核：和 Linux 服务器一脉相承&lt;a href=&quot;#unix-内核和-linux-服务器一脉相承&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是 Mac 对程序员最大的优势。macOS 基于 Unix（具体说是 Darwin 内核 + BSD 用户态工具），&lt;strong&gt;和部署生产服务用的 Linux 是近亲&lt;/strong&gt;。具体好处：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;shell 工具同源&lt;/strong&gt;：&lt;code&gt;bash&lt;/code&gt; / &lt;code&gt;zsh&lt;/code&gt; / &lt;code&gt;grep&lt;/code&gt; / &lt;code&gt;sed&lt;/code&gt; / &lt;code&gt;awk&lt;/code&gt; / &lt;code&gt;find&lt;/code&gt; / &lt;code&gt;ssh&lt;/code&gt; / &lt;code&gt;curl&lt;/code&gt; 本地直接能用，本地写好的脚本几乎可以原封不动丢到服务器上跑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ssh 一行连服务器&lt;/strong&gt;：终端打开就有 &lt;code&gt;ssh&lt;/code&gt;，不需要 PuTTY、Xshell 这类 Windows 平台的第三方客户端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Homebrew 一行装一切&lt;/strong&gt;：&lt;code&gt;brew install &amp;lt;package&amp;gt;&lt;/code&gt; 类似 &lt;code&gt;apt install&lt;/code&gt;，主流开发工具基本都有现成的包，Chrome 等常用软件也能安装&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dotfiles 跨机器同步&lt;/strong&gt;：本地 Mac 和远程 Ubuntu 服务器都是类 Unix 系统，&lt;strong&gt;同一份 &lt;code&gt;.bashrc&lt;/code&gt; / &lt;code&gt;.zshrc&lt;/code&gt; / &lt;code&gt;.tmux.conf&lt;/code&gt; 可以直接共用&lt;/strong&gt;——详见 &lt;a href=&quot;/posts/dotfiles&quot;&gt;跨机器同步数据&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Windows 的对策是 WSL（Windows Subsystem for Linux），但本质上是在 Windows 上再开一台虚拟 Linux——&lt;strong&gt;这是补救方案，不是原生方案&lt;/strong&gt;。文件系统、网络、剪贴板、终端这些跨边界的体验始终隔着一层。WSL 能用，但用起来总有”系统里再套一个系统”的别扭。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;唯一稍弱的是包管理生态&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Linux 上 &lt;code&gt;apt&lt;/code&gt; / &lt;code&gt;dnf&lt;/code&gt; 的官方源覆盖度比 &lt;code&gt;brew&lt;/code&gt; 更广。但对程序员日常工具来说，brew 的覆盖已经完全够用——主流语言运行时、数据库、命令行工具一应俱全。而且这是 Linux 相比 MacOS 的优点，Windows 做得更差&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Apple Silicon：性能、续航、噪声、屏幕&lt;a href=&quot;#apple-silicon性能续航噪声屏幕&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;2020 年后 Mac 切到了自研的 ARM 芯片（M1 / M2 / M3 / M4 / M5 系列），从此&lt;strong&gt;硬件层面也对 Windows 形成了代差优势&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：&lt;strong&gt;M 系列芯片的单核性能极强&lt;/strong&gt;，在很多 Benchmark 里吊打同代 Intel / AMD 的移动端甚至桌面 CPU。日常开发、编译、跑测试当然绰绰有余；剪辑视频也是 Mac 擅长的事&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;统一内存 = 大显存&lt;/strong&gt;：M 系列采用&lt;strong&gt;统一内存架构&lt;/strong&gt;——CPU 和 GPU 共享同一块物理内存——&lt;strong&gt;配 64GB / 128GB 内存的 Mac 约等于拥有 64GB / 128GB 显存&lt;/strong&gt;，跑本地 LLM 推理特别舒服。NVIDIA 同等显存的显卡价格能买好几台 Mac——&lt;strong&gt;如果说 Mac 的内存是金子做的，那 NVIDIA 的显存就是振金做的&lt;/strong&gt;。本地大模型推理的性价比 Mac 完胜&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;续航&lt;/strong&gt;：日常开发 + 浏览器 + 终端 + IDE，&lt;strong&gt;轻松撑满一整天&lt;/strong&gt;。最典型的场景是上课——周围用 Windows 本的同学一进教室就在墙角排队抢插座，&lt;strong&gt;Mac 用户可以优雅地挑一个视野最好、离老师最近的座位坐一整天，期间不用充一次电&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风扇噪声 + 不用清灰&lt;/strong&gt;：M 系列 MacBook Air 直接&lt;strong&gt;无风扇被动散热&lt;/strong&gt;，永远零噪声；&lt;strong&gt;没有风扇也就没有积灰&lt;/strong&gt;，几年下来不用拆机清灰。MacBook Pro 在大多数日常负载下风扇也不转，跑 build 才偶尔转一下。Windows 笔记本则是一打开就嗡嗡响，用两年还要担心散热口堵灰&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;屏幕&lt;/strong&gt;：Retina 显示屏 + 系统级 HiDPI 缩放，&lt;strong&gt;字体渲染细腻、缩放一致性好&lt;/strong&gt;。Windows 上 HiDPI 缩放是出了名的坑——很多老程序在 4K 屏上糊成一片，或者控件错位&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;扬声器&lt;/strong&gt;：MacBook 内置扬声器素质&lt;strong&gt;远超同价位 Win 本&lt;/strong&gt;——空间音频、低频下潜、声场都接近便携音箱水准。开会、看视频、追剧不用再外接音响&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;品控与做工：MacBook 几乎没有翻车&lt;a href=&quot;#品控与做工macbook-几乎没有翻车&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;把上一节的硬件指标连同做工、品控一起看，&lt;strong&gt;MacBook 在做工 / 屏幕 / 扬声器 / 续航这些硬件维度上全面碾压同价位 Windows 笔记本&lt;/strong&gt;——本节展开讲剩下的做工和品控。&lt;/p&gt;&lt;p&gt;品控是大学生小白最容易忽视、但最影响长期体验的一项。我大一用的是当年被称为”神机”的暗影精灵 9，&lt;strong&gt;bug 层出不穷&lt;/strong&gt;——黑屏、插件自启动失败。这并不是个例，而是 Windows 笔记本市场的普遍现状。&lt;/p&gt;&lt;p&gt;B 站「笔吧评测室」做过一期&lt;a href=&quot;https://www.bilibili.com/video/BV1cLFSz4ECr/&quot; target=&quot;_blank&quot;&gt;大翻车？！为了验证品控，一次性测 40 台笔记本！&lt;/a&gt;，统计令人触目惊心：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;笔吧评测室 40 台 Windows 笔记本品控测试&quot; loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/mac_1.CVDeAOeO_2qPH5h.webp&quot; srcset=&quot;/_astro/mac_1.CVDeAOeO_Z2bR9nq.webp 640w, /_astro/mac_1.CVDeAOeO_ZJ0nQs.webp 750w, /_astro/mac_1.CVDeAOeO_Z1R0XO6.webp 828w, /_astro/mac_1.CVDeAOeO_Zs6TVK.webp 1080w, /_astro/mac_1.CVDeAOeO_Z11Mnos.webp 1280w, /_astro/mac_1.CVDeAOeO_ZgqlzX.webp 1668w, /_astro/mac_1.CVDeAOeO_29YeQR.webp 2048w, /_astro/mac_1.CVDeAOeO_1ilLGY.webp 2560w, /_astro/mac_1.CVDeAOeO_2qPH5h.webp 3912w&quot; /&gt;&lt;figcaption&gt;笔吧评测室 40 台 Windows 笔记本品控测试&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;40 台 &lt;strong&gt;主流全新&lt;/strong&gt; Windows 笔记本，5 台严重缺陷、20 台中等缺陷、只有 15 台没问题或仅有轻微缺陷——&lt;strong&gt;超过一半有可见问题&lt;/strong&gt;。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;MacBook 这边在做工和品控上完全是另一个层级：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全金属一体 CNC 机身&lt;/strong&gt;：抗弯折、质感扎实。&lt;strong&gt;很多 Windows 本的塑料 A 面甚至两指就能掰弯&lt;/strong&gt;，键盘区按下去整面下陷&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;出厂良品率高&lt;/strong&gt;：拿到手就能稳定用几年，几乎不需要返厂&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;对大学生尤其重要&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;大学生大多没有维修和返厂经验，电脑出问题就只能找不一定靠谱的第三方售后或者排队等官方售后。电脑这么重要的生产工具每天都要用，维修耽误的每一天都是巨大的损失，还可能遇到黑心维修商被宰——&lt;strong&gt;直接选品控稳的机型可以省掉一整条故障链&lt;/strong&gt;。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;另外补一句机型建议：&lt;strong&gt;MacBook Pro 14 寸是少有的 14 寸高性能笔记本&lt;/strong&gt;——受制于 Windows 阵营 CPU 和 GPU 的发热，几乎没有 14 寸的 Win 游戏本，即使有也续航很差噪声很大。&lt;strong&gt;14 寸高性能&lt;/strong&gt; + &lt;strong&gt;续航优秀&lt;/strong&gt; + &lt;strong&gt;风扇极少响&lt;/strong&gt;这三件事同时成立的，几乎只有 MacBook Pro。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;键盘与触控板：人体工学差距&lt;a href=&quot;#键盘与触控板人体工学差距&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我在 &lt;a href=&quot;/posts/keyboard&quot;&gt;程序员键盘的最佳实践&lt;/a&gt; 里埋过一个伏笔：「macOS 的按键布局比 Windows 更人体工学」。这里展开讲一下：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cmd 在拇指位&lt;/strong&gt;：Mac 上最常用的修饰键 &lt;code&gt;Cmd&lt;/code&gt; 紧挨着空格键，&lt;strong&gt;左手大拇指轻轻一压就能按到&lt;/strong&gt;。常用快捷键如 &lt;code&gt;Cmd + C/V/W/Q/Tab&lt;/code&gt; 几乎都是一只手就能完成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl 在小指位&lt;/strong&gt;：Windows 上最常用的修饰键 &lt;code&gt;Ctrl&lt;/code&gt; 在键盘左下角，&lt;strong&gt;左手小指要大幅外移&lt;/strong&gt;才能够到，长期下来对小指不友好&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快捷键约定统一&lt;/strong&gt;：macOS 下 &lt;code&gt;Cmd + W&lt;/code&gt; 关窗、&lt;code&gt;Cmd + Q&lt;/code&gt; 退出、&lt;code&gt;Cmd + ,&lt;/code&gt; 打开偏好设置——&lt;strong&gt;几乎所有原生 App 都遵守这套约定&lt;/strong&gt;，肌肉记忆全平台通用。Windows 上 &lt;code&gt;Ctrl + W&lt;/code&gt; 在浏览器里能关标签页但在很多软件里没作用，约定的统一性差很多&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;触控板是 Mac 的另一张王牌，&lt;strong&gt;手感和功能在笔记本里独一档&lt;/strong&gt;：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;玻璃面板 + Force Touch&lt;/strong&gt;：面积大、阻尼舒适、支持压感&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;手势丰富且全局一致&lt;/strong&gt;：四指上滑切应用、四指左右切桌面、三指拖动、重按查词、双指捏合缩放（部分手势非默认）——这些手势在&lt;strong&gt;所有 App 里行为一致&lt;/strong&gt;，且系统级响应跟手&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;接近鼠标体验&lt;/strong&gt;：MacBook 触控板做到了”无外设也能舒服干活”——一些重度用户从不使用鼠标&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Windows 笔记本的触控板这几年有进步，但&lt;strong&gt;驱动、手势一致性、跟手程度&lt;/strong&gt;仍有明显差距。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;我自己仍在用外接鼠标&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;strong&gt;我自己日常仍用鼠标&lt;/strong&gt;——鼠标操控更精确、大范围移动更方便。&lt;strong&gt;只有在外工作、桌面不方便摆鼠标时，我才仅用触控板&lt;/strong&gt;——而即便此时也完全够用。Mac 触控板的价值不是”逼你不用鼠标”，而是”当你没鼠标可用时不掉链子”。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;软件层：原生 App 普遍精良 + 付费生态成熟&lt;a href=&quot;#软件层原生-app-普遍精良--付费生态成熟&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;macOS 的软件生态有两个隐性优势，叠加起来让 Mac 上的常用工具普遍精良：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Mac 用户习惯付费&lt;/strong&gt;——开发者能赚到钱、愿意花时间打磨产品。&lt;strong&gt;Mac 上的付费软件生态比 Windows 好得多&lt;/strong&gt;：精品笔记、剪辑、画图、效率工具、设计软件等大量优秀的付费 App 优先甚至只在 Mac 上发布&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;macOS 与 Linux 同源开发顺手&lt;/strong&gt;——开发者本来就用 Mac 写 Linux 服务的代码，&lt;strong&gt;顺手做一个 Mac 客户端没什么额外学习成本&lt;/strong&gt;。例如 Codex App 先有 Mac 版才有 Windows 版，而且 Mac 版往往比 Windows 版功能更丰富&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;具体到日常用的工具：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;终端&lt;/strong&gt;：自带 Terminal 已经够用，iTerm2 / Warp / Ghostty 等第三方终端把体验推到更高水准。Windows 上要装 Windows Terminal + WSL 才能勉强凑出类似体验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编辑器与 IDE&lt;/strong&gt;：VS Code、JetBrains 全家桶、Cursor 等在 Mac 上&lt;strong&gt;字体渲染、动画、缩放都更顺&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件管理与启动器&lt;/strong&gt;：Finder + Spotlight + Alfred / Raycast 组合，&lt;strong&gt;全局搜索、应用启动、剪贴板历史&lt;/strong&gt;等高频操作都很顺手&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;窗口管理&lt;/strong&gt;：原生的 Mission Control + 多桌面 + 全屏分屏；不够用还可以装 Rectangle / Magnet 等第三方工具&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;字体渲染、动画曲线、字距这些细节单看每条都不起眼，&lt;strong&gt;叠起来就是”用起来舒服”和”用起来糙”的本质差距&lt;/strong&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Windows 也在追赶&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Windows 11 + Windows Terminal + PowerToys 的组合体验比十年前的 Windows 好太多。但&lt;strong&gt;起点不一样&lt;/strong&gt;——Mac 是原生顺手，Windows 是装一堆补丁去逼近原生顺手。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Mac 的缺点&lt;a href=&quot;#mac-的缺点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iPhone 与 Mac 的跨设备联动拉完了&lt;/strong&gt;：iPhone ↔ Mac 的 AirDrop 很慢，通用剪贴板经常失败，&lt;strong&gt;实际体验还不如国产厂商的互联服务&lt;/strong&gt;——vivo、OPPO 的手机和 Mac 互联做得比 iPhone 还流畅、稳定、功能全&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;游戏生态拉完了&lt;/strong&gt;：大量游戏不支持 MacOS，MacOS 也没有 DLSS 这种技术，想玩游戏的话最好再配一台专门打游戏的 Windows 台式机。当然如果查到要玩的游戏有 Mac 版就不用配了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CUDA 训练是硬伤&lt;/strong&gt;：深度学习&lt;strong&gt;训练&lt;/strong&gt;几乎完全依赖 NVIDIA 显卡 + CUDA，&lt;strong&gt;Mac 在训练赛道上没有竞争力&lt;/strong&gt;。本地跑大模型训练 / 微调建议直接租云上 GPU 或者用远程 Linux 服务器——这也正是为什么三件套里要给 Linux 服务器单独留一档。&lt;strong&gt;推理则是另一回事&lt;/strong&gt;——见上文统一内存，Mac 反而是性价比最高的本地推理机&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部分工业软件没有 Mac 版&lt;/strong&gt;：CAD、某些专业打印 / 雕刻软件、部分国产办公套件等仍然只有 Windows 版&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;简单概括：&lt;strong&gt;编程 + 写作 + 视频 + 日常用 → Mac；游戏 → Windows；训练模型 / 重计算 → Linux 服务器&lt;/strong&gt;。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;回到开头那句话：&lt;strong&gt;Linux 是工作，Mac 是生活，Windows 是游戏&lt;/strong&gt;。对程序员来说，Mac 不是”更贵的笔记本”，而是&lt;strong&gt;和 Linux 服务器同源、单核性能极强、统一内存即大显存、续航/噪声/屏幕/扬声器/做工/品控/触控板/软件生态全方位领先&lt;/strong&gt;的一台生产力机器。它不解决游戏、不解决 CUDA，&lt;strong&gt;但解决程序员每天 8 小时盯着的那些事&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;身边的换机方向是一面镜子：&lt;strong&gt;几乎每个从 Windows 换到 Mac 的人都后悔没早点换；反过来几乎没人愿意从 Mac 换回 Windows&lt;/strong&gt;。和双拼、客制化键盘一样，换 Mac 是一次性投资、终身受益——&lt;strong&gt;用过就回不去了&lt;/strong&gt;。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>微信支付组合支付</title><link>https://fomalhaut647.com/posts/wechat-pay/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/wechat-pay/</guid><description>再也不担心小额微信零钱花不掉了</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我今天才知道微信支付可以组合支付，微信有心了&lt;/p&gt;</content:encoded></item><item><title>为什么你应该报考北大</title><link>https://fomalhaut647.com/posts/why-pku/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/why-pku/</guid><description>立燕解清！</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;适用范围&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;仅考虑北大信科 AI 方向的视角，其他院系未必如此&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;大部分课没有考勤：想去上课就去，不想去就不去，不用请假不用代课，算上考试我本学期在教学楼的时长不超过 30h&lt;/li&gt;
&lt;li&gt;绝大部分课有回放：错过线下课可以听回放补救，学到简单的部分可以二倍速甚至快进掉，学到难的部分可以暂停查资料问 AI，学习进度完全由自己掌控&lt;/li&gt;
&lt;li&gt;无宵禁不查寝：你可以在任何时间进出宿舍，导员只会在入学时来每个宿舍慰问一次，之后再也不会出现&lt;/li&gt;
&lt;li&gt;无早晚自习无强制集体活动：军训后的三年时间里一次班主任和班干部都没见过（理论上应该在大三上讲保研的班会上见过一次，不过那次班会时我刚好在旅游）&lt;/li&gt;
&lt;li&gt;选课自由：培养方案只是建议不是硬性要求，几乎所有课程没有选课限制，你可以在任何学期选修任何一门课，任何一门（学院会优先保证本专业同学选上，但通常有多余名额给其他人）。无论是跨专业体验生活，还是提前学重要的专业课，还是把任务多给分差又没用的课丢到大四，一切由你掌控&lt;/li&gt;
&lt;li&gt;退课和缓考自由：除了开学前两周可以自由退课，期中时还有一次退课机会。除了体育课、实验课等课程，绝大部分课可以自由退课，退课和从来没选过这门课几乎等同。如果中期没退课，到期末时还有最后一次机会——缓考，但它和退课区别不大，依然约等于没修过这门课，只是可以冲突选课&lt;/li&gt;
&lt;li&gt;文理兼备 + 旁听：除了式微的传统工科，你可以在北大找到几乎所有专业，于是你可以选修任何感兴趣的课程。如果只想听课不想做作业或考试，可以选择旁听，有时旁听的学生几乎和选课的学生一样多&lt;/li&gt;
&lt;li&gt;转专业自由：没有转出限制——原院系不会卡你，只有转入限制——只要转入院系接收你，你就能转过去，即使是强基生也能自由转。可能是因为”差专业”的同学就业也没多差，因此门槛并不高&lt;/li&gt;
&lt;li&gt;双学位：北大的双学位也很丰富，你可以修任何感兴趣的专业的双学位或辅修。重要的是如果不想修了，放弃双学位不会受到任何惩罚，还可以把双学位学分转移到主学位凑选修课学分。如果毕业时修了大部分课但没到双学位的标准，可以转为辅修，不至于前功尽弃&lt;/li&gt;
&lt;li&gt;挂科”自由”：挂科后可以通过重修覆盖绩点，重修时拿多少分就覆盖为多少分，没有重修分数封顶 60 的限制。挂科重修也不影响信科的保研，只要保研时没有挂了还没重修的必修课即可&lt;/li&gt;
&lt;li&gt;绩点改革：北大自 25 年秋季学期开始，不再限制优秀率，推广等级制，课程给分由各院系自己决定，减少内卷无效竞争。每个人每学期还可以选一门选修课设置为 PF（Pass or Fail），不计入绩点，于是可以自由地选感兴趣但拿不到高分的课&lt;/li&gt;
&lt;li&gt;作业审查宽松：老师会吓唬你要查重或查 AI 率，实际上并不会查，部分老师甚至鼓励使用 AI 辅助完成作业。我本学期的几乎所有作业都是 AutoPKU 一键生成的——只要上课能通过考试、保研能做出科研、求职能通过面试，无人在意你的作业是不是自己写的，只有自己为自己负责&lt;/li&gt;
&lt;li&gt;90% 保研线：保研率 50-60%，算上留学和就业的，保研最低排位可以划到 90% 左右，真正做到应保尽保&lt;/li&gt;
&lt;li&gt;Top2 Title：有时 Title 和实习资源等不可兼得，比如对于金融专业的同学，上海高金可能比北大的实习资源更好，但 Title 更弱。如果你的本科一般，选北大读研刷 Title 可能是最优解；而北大本科的同学完全没有这个顾虑，可以硬气地不为 Title 妥协，直接选其他资源更好的去处&lt;/li&gt;
&lt;li&gt;强大的校友资源：我们调侃 Deepseek、MiMo 等基模公司是红模（北大红），意思是在这些公司北大校友占主导地位。类似地，北大校友资源遍布各行各业，想就业的可以联系前辈内推，想创业的可以轻易见到许多投资人&lt;/li&gt;
&lt;li&gt;科研环境：你可以在任何时候加入实验室，导师一般不会拒绝既免费又有潜力的劳动力，AI 方向各组顶会发表常态化，本科生挂个 co-author 并不困难。信科的大组有充足的算力资源，A100/H100 触手可得——其他学校博士才能用上的卡，你本科跟着导师或师兄师姐做科研时就能拿来跑课程作业，体验一把”算力管够”的感觉&lt;/li&gt;
&lt;li&gt;学术追星：在其他学校开的讲座座无虚席的学术大拿亲自为你授课，还有各界名流经常开讲座（同时选修林毅夫和张维迎的课程，同时听截然相反的观点是有趣的体验）&lt;/li&gt;
&lt;li&gt;全国最美校园之一：一塔湖图闻名遐迩，学校北部还有大片园林，风景宜人，非常适合幽会、散步、赏美景&lt;/li&gt;
&lt;li&gt;伙食丰富：本部有十几个食堂 / 餐厅，能做到前两年每天不重样。在勺园中餐厅能用 50-100 的人均消费（取决于点什么菜）享受到 200 人均的美食，各地方菜系正宗美味，是接待亲朋好友的不二之选&lt;/li&gt;
&lt;li&gt;宿舍体验：自 25 年开始，北大将逐步换成上床下桌，运气好的话可以分到。北大有不少本地人和在外租房的，因此四人间变三人间是常有的事。所有浴室都有帘子，洗澡时不用坦诚相对&lt;/li&gt;
&lt;li&gt;Study Hard：北大有全国最大的图书馆之一，典藏丰富能找到各种小众书和古籍，同样也是自习好去处。北大还有许多近年刚装修好的自习室和大量空教室（很多人不知道四教的存在，因此在这里自习时常能一个人独享一间教室）&lt;/li&gt;
&lt;li&gt;Play Harder：每周在五四操场上举办的主题夜奔、一时兴起在未名湖石舫聚众烧烤唱歌、一年一度的十佳歌手比赛（据说在其他学校能夺冠的高手可能连初赛都过不了）&lt;/li&gt;
&lt;li&gt;人才辈出：身边人是全国 top 0.1%，“和优秀的人在一起”本身就是稀缺资源。AI 方向尤其卷出实力，不乏顶会一作、ICPC 金牌等——有时前一天晚上你还在和他联机电竞，第二天就得知他飞赴他国拿下国际大赛金牌&lt;/li&gt;
&lt;li&gt;社团众多：上次百团大战共有 183 个社团参加，无论多么小众的兴趣都能在北大找到属于你的社团，某 985 取消动漫社展出的事情不可能在北大发生。什么你说真的没有你感兴趣的？不妨自己注册一个社团！&lt;/li&gt;
&lt;li&gt;电影戏剧丰富：百周年纪念讲堂经常有文艺电影放映、戏剧表演，校内票价低廉，据说有不少隔壁的同学专程来北大看电影和戏剧&lt;/li&gt;
&lt;li&gt;实习地利：北京基模公司和互联网公司密度全国第一，Deepseek、月之暗面、Minimax、字节等公司大都离学校不远。本科期间多段大厂实习是常态，远比异地通勤的同学舒服&lt;/li&gt;
&lt;li&gt;北京文化资源：海量古迹、博物馆、人文景观，是历史爱好者和喜欢烟火气的人不能错过的城市&lt;/li&gt;
&lt;li&gt;顶级医疗：校医院是二级综合医院，在校医院中算较好的。北医三院、人民医院等是北大直属附属医院，转诊方便，报销力度大&lt;/li&gt;
&lt;li&gt;树洞文化：PKU 树洞匿名社区，吐槽、求助、二手交易、八卦，是了解校园真实生态的最佳窗口，没事刷刷比小红书好玩（什么你说一刷全是 #给给Popi，树洞是这样的）&lt;/li&gt;
&lt;li&gt;思想自由兼容并包：北大是国内对边缘话题最宽容的校园之一，老师敢讲、社团敢办、学生敢问，这种氛围是其他高校稀缺的。例如不讲地震、讲炒股和交谊舞的”地震概论”，观点极具争议的”犹太文明”。学生也可以与老师平起平坐：某高数课原本有考勤，第一节课就有同学据理力争不应该靠考勤留住同学听课，老师真的听从建议取消了考勤；某门课的逆天老师不允许学生上课用电子产品，学生依然用电子产品，老师告到教务，教务让他别管&lt;/li&gt;
&lt;/ol&gt;</content:encoded></item><item><title>家飞猫抽卡大败而归</title><link>https://fomalhaut647.com/posts/gacha/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/gacha/</guid><description>什么叫一井下去一只奸商都没有</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;犹豫井新能还是奸商，想了想还是井了新能，万一以后时来运转歪出奸商了呢&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1216&quot; height=&quot;2640&quot; src=&quot;/_astro/gacha_0.DPeIEYQ9_Z1N4MMm.webp&quot; srcset=&quot;/_astro/gacha_0.DPeIEYQ9_ZuAH00.webp 640w, /_astro/gacha_0.DPeIEYQ9_Z1BdDlq.webp 750w, /_astro/gacha_0.DPeIEYQ9_1xNNMV.webp 828w, /_astro/gacha_0.DPeIEYQ9_11ftKT.webp 1080w, /_astro/gacha_0.DPeIEYQ9_Z1N4MMm.webp 1216w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>大片瓷砖隆起</title><link>https://fomalhaut647.com/posts/tile/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/tile/</guid><description>宿舍楼这是要塌了吗</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;4096&quot; src=&quot;/_astro/tile_0.lZnFJOH1_Zpz83R.webp&quot; srcset=&quot;/_astro/tile_0.lZnFJOH1_ZK6JOQ.webp 640w, /_astro/tile_0.lZnFJOH1_ofH2W.webp 750w, /_astro/tile_0.lZnFJOH1_Z2C5XV.webp 828w, /_astro/tile_0.lZnFJOH1_Z28R1WJ.webp 1080w, /_astro/tile_0.lZnFJOH1_qT0eu.webp 1280w, /_astro/tile_0.lZnFJOH1_Z2l889O.webp 1668w, /_astro/tile_0.lZnFJOH1_24Ms3j.webp 2048w, /_astro/tile_0.lZnFJOH1_1vpK5D.webp 2560w, /_astro/tile_0.lZnFJOH1_Zpz83R.webp 3072w&quot; /&gt;&lt;/p&gt;
&lt;p&gt;后续：工人师傅第二天早上八点过来把瓷砖全敲碎了&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;早八惊魂&quot; loading=&quot;lazy&quot; width=&quot;3072&quot; height=&quot;4096&quot; src=&quot;/_astro/tile_1.CGwnxj6G_y6PeY.webp&quot; srcset=&quot;/_astro/tile_1.CGwnxj6G_14S0wp.webp 640w, /_astro/tile_1.CGwnxj6G_2efspd.webp 750w, /_astro/tile_1.CGwnxj6G_1MmEnk.webp 828w, /_astro/tile_1.CGwnxj6G_Z1ab3DS.webp 1080w, /_astro/tile_1.CGwnxj6G_1pzXxl.webp 1280w, /_astro/tile_1.CGwnxj6G_Z1mr9PX.webp 1668w, /_astro/tile_1.CGwnxj6G_Z21HHrL.webp 2048w, /_astro/tile_1.CGwnxj6G_2u6Iou.webp 2560w, /_astro/tile_1.CGwnxj6G_y6PeY.webp 3072w&quot; /&gt;&lt;figcaption&gt;早八惊魂&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;</content:encoded></item><item><title>读博会腐蚀灵魂</title><link>https://fomalhaut647.com/posts/doctor-meme/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/doctor-meme/</guid><description>读博？赌博！</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;719&quot; height=&quot;860&quot; src=&quot;/_astro/doctor-meme_0.CSyI9CsV_Z14toQz.webp&quot; srcset=&quot;/_astro/doctor-meme_0.CSyI9CsV_1ilJSi.webp 640w, /_astro/doctor-meme_0.CSyI9CsV_Z14toQz.webp 719w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>Xiaomi MiMo Orbit-百万亿 Token 创造者激励计划</title><link>https://fomalhaut647.com/posts/mimo-orbit/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/mimo-orbit/</guid><description>领到了 $100 Max Token Plan</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;领到了 $100 Max Token Plan，不错😋&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3492&quot; height=&quot;2036&quot; src=&quot;/_astro/mimo-orbit_1.BGiAEx___27gGW5.webp&quot; srcset=&quot;/_astro/mimo-orbit_1.BGiAEx___Z1e69z9.webp 640w, /_astro/mimo-orbit_1.BGiAEx___2lyVbm.webp 750w, /_astro/mimo-orbit_1.BGiAEx___2qB2Ve.webp 828w, /_astro/mimo-orbit_1.BGiAEx___Z266wIV.webp 1080w, /_astro/mimo-orbit_1.BGiAEx___Z2oxx7c.webp 1280w, /_astro/mimo-orbit_1.BGiAEx___hBIsF.webp 1668w, /_astro/mimo-orbit_1.BGiAEx___Z2cirO3.webp 2048w, /_astro/mimo-orbit_1.BGiAEx___Z29I2xF.webp 2560w, /_astro/mimo-orbit_1.BGiAEx___27gGW5.webp 3492w&quot; /&gt;&lt;/p&gt;
&lt;p&gt;是不是看到我提交的 Claude Max 20x 套餐支付截图就直接发最高档套餐了&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3492&quot; height=&quot;2036&quot; src=&quot;/_astro/mimo-orbit_2.BYFIFh78_Z2e6YCO.webp&quot; srcset=&quot;/_astro/mimo-orbit_2.BYFIFh78_Uq6Nd.webp 640w, /_astro/mimo-orbit_2.BYFIFh78_Zz5Vfd.webp 750w, /_astro/mimo-orbit_2.BYFIFh78_Zu3Oul.webp 828w, /_astro/mimo-orbit_2.BYFIFh78_Z1mi5uT.webp 1080w, /_astro/mimo-orbit_2.BYFIFh78_Z1EJ5Sa.webp 1280w, /_astro/mimo-orbit_2.BYFIFh78_11qaGH.webp 1668w, /_astro/mimo-orbit_2.BYFIFh78_Z1su0A1.webp 2048w, /_astro/mimo-orbit_2.BYFIFh78_Z1pTAjD.webp 2560w, /_astro/mimo-orbit_2.BYFIFh78_Z2e6YCO.webp 3492w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;3492&quot; height=&quot;2036&quot; src=&quot;/_astro/mimo-orbit_3.CDd8qWZe_tEteS.webp&quot; srcset=&quot;/_astro/mimo-orbit_3.CDd8qWZe_vK8Q1.webp 640w, /_astro/mimo-orbit_3.CDd8qWZe_ZXKTcp.webp 750w, /_astro/mimo-orbit_3.CDd8qWZe_ZSIMrx.webp 828w, /_astro/mimo-orbit_3.CDd8qWZe_1ltnmN.webp 1080w, /_astro/mimo-orbit_3.CDd8qWZe_132mYx.webp 1280w, /_astro/mimo-orbit_3.CDd8qWZe_Z1kYuew.webp 1668w, /_astro/mimo-orbit_3.CDd8qWZe_1fhshG.webp 2048w, /_astro/mimo-orbit_3.CDd8qWZe_1hQRy4.webp 2560w, /_astro/mimo-orbit_3.CDd8qWZe_tEteS.webp 3492w&quot; /&gt;&lt;/p&gt;
&lt;p&gt;虽然但是，这 API 定价是 Deepseek 7 倍了呀，真有人原价买吗&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2058&quot; src=&quot;/_astro/mimo-orbit_4.BNcrL2-2_202A3C.webp&quot; srcset=&quot;/_astro/mimo-orbit_4.BNcrL2-2_Z5Wz3v.webp 640w, /_astro/mimo-orbit_4.BNcrL2-2_Z8WUKo.webp 750w, /_astro/mimo-orbit_4.BNcrL2-2_Srkqx.webp 828w, /_astro/mimo-orbit_4.BNcrL2-2_Z1lPjJs.webp 1080w, /_astro/mimo-orbit_4.BNcrL2-2_Z2n2Thz.webp 1280w, /_astro/mimo-orbit_4.BNcrL2-2_HyED6.webp 1668w, /_astro/mimo-orbit_4.BNcrL2-2_zMNUe.webp 2048w, /_astro/mimo-orbit_4.BNcrL2-2_Z28eKTE.webp 2560w, /_astro/mimo-orbit_4.BNcrL2-2_202A3C.webp 3912w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>如果芙莉莲的魔导书是 Skills</title><link>https://fomalhaut647.com/posts/frieren-skills/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/frieren-skills/</guid><description>上下文窗口够用吗</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;看芙莉莲第二季时突然想到魔导书是不是一种 Skill: Agent 读了 Skill 就能学会一种能力，芙莉莲读了魔导书就能学会一种魔法&lt;/p&gt;
&lt;p&gt;Agent 启动时把所有 Skills 的 description 加载进上下文，需要时再读全文&lt;/p&gt;
&lt;p&gt;芙莉莲把整本书看完才能学会这个魔法，但之后就不用再看了，相当于每一个 skill 都全文加载（学这么多魔法真的不会撑爆上下文吗）&lt;/p&gt;
&lt;p&gt;我学的不常用的知识似乎也是一种 Skill。第一遍学会了，但一段时间不用，细节已经忘了，只记得大概。但知道有这么个知识，等要用时知道要重学这个知识，临时重学并使用不久后又忘了。这不就相当于输入了 description，临时要用时再看正文吗？&lt;/p&gt;
&lt;p&gt;记得刚入学时有朋友问，现在学习课内知识的意义何在，毕竟 AI 都会，就算现在 AI 不会，几年甚至几个月后也会了。当时我给出的回答之一是，不学的话没有这个认知，虽然需要用时可以问 AI 或直接让 AI 干活，但首先得能想到要用这个知识，人无法使用认知之外的能力。现在可以从 Skills 的视角来解读学习，学习是把 description 学会，知道有这个知识，知道什么时候用这个知识，等要用时再让 AI 读全文并实践&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;虽然但是，为什么第二季只有 10 集。等到完结再一口气看完却发现只有 10 集，悲&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>校园网自救手册</title><link>https://fomalhaut647.com/posts/network/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/network/</guid><description>解决 90% 软件导致的网络问题</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;使用校园网时是否经常出现打不开网页，或者又被网关卡了的问题？本文介绍常见的软件导致的网络问题，希望能帮到你&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;快速诊断&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;一个简单的快速诊断方法是测试微信能否正常使用，微信的网络协议特殊，能无视很多网络 bug，以及检查能否打开网络服务&lt;/li&gt;
&lt;li&gt;如果微信和网络中心都没法正常使用，那大概率是真的没网，优先检查硬件问题&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h1&gt;代理忘关&lt;a href=&quot;#代理忘关&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;表现为打不开网页，但是微信可以正常用&lt;/p&gt;&lt;p&gt;这大概是最常见的 bug 了吧，常见于 VPN 异常中断/退出后，在网络设置里把代理都关了，或者重启 VPN 服务即可解决&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1412&quot; height=&quot;922&quot; src=&quot;/_astro/network_1.BMJmQipK_Z1j4i3r.webp&quot; srcset=&quot;/_astro/network_1.BMJmQipK_Z2786rQ.webp 640w, /_astro/network_1.BMJmQipK_2stuF4.webp 750w, /_astro/network_1.BMJmQipK_uVeYc.webp 828w, /_astro/network_1.BMJmQipK_ZmCGMa.webp 1080w, /_astro/network_1.BMJmQipK_1v0lBN.webp 1280w, /_astro/network_1.BMJmQipK_Z1j4i3r.webp 1412w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;DNS 错误&lt;a href=&quot;#dns-错误&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;表现同上：网页打不开、微信正常——但区别是清掉代理也无效&lt;/p&gt;&lt;p&gt;如果没修改过 DNS 服务，这个 bug 一般不会出现&lt;/p&gt;&lt;p&gt;北大校园网的 DNS 地址是 &lt;code&gt;162.105.129.88&lt;/code&gt; 和 &lt;code&gt;162.105.129.122&lt;/code&gt;，&lt;code&gt;223.5.5.5&lt;/code&gt; 是阿里的 DNS，使用校园网时必须启用前两者中的至少一个，否则会 DNS 解析失败导致打不开网页&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1412&quot; height=&quot;922&quot; src=&quot;/_astro/network_2.BSw3kT3R_1pvCr5.webp&quot; srcset=&quot;/_astro/network_2.BSw3kT3R_ZRHy7I.webp 640w, /_astro/network_2.BSw3kT3R_Z1ni5NJ.webp 750w, /_astro/network_2.BSw3kT3R_1JlMjk.webp 828w, /_astro/network_2.BSw3kT3R_2lWdHm.webp 1080w, /_astro/network_2.BSw3kT3R_ZPAQGB.webp 1280w, /_astro/network_2.BSw3kT3R_1pvCr5.webp 1412w&quot; /&gt;&lt;/p&gt;&lt;p&gt;一个很简单的解决方法是直接把所有手动设置的 DNS 都删了，然后电脑会自动设置成 &lt;code&gt;自动 DNS&lt;/code&gt;，也就是根据网络服务商自动切换正确的 DNS 地址&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1412&quot; height=&quot;922&quot; src=&quot;/_astro/network_3.DhYoRJqu_Z1D8zBd.webp&quot; srcset=&quot;/_astro/network_3.DhYoRJqu_Z1sK1VU.webp 640w, /_astro/network_3.DhYoRJqu_Z1XkyCV.webp 750w, /_astro/network_3.DhYoRJqu_19jju8.webp 828w, /_astro/network_3.DhYoRJqu_ZGGYkV.webp 1080w, /_astro/network_3.DhYoRJqu_1aV442.webp 1280w, /_astro/network_3.DhYoRJqu_Z1D8zBd.webp 1412w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;未登录网关&lt;a href=&quot;#未登录网关&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;打开 &lt;a href=&quot;https://its.pku.edu.cn/&quot; target=&quot;_blank&quot;&gt;网络服务&lt;/a&gt; 并登录即可解决&lt;/p&gt;&lt;p&gt;通常被自动登出是因为设备未关闭随机 MAC，导致设备数超限&lt;/p&gt;&lt;section&gt;&lt;h2&gt;未关闭随机 MAC&lt;a href=&quot;#未关闭随机-mac&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;表现为被北大网关登出，重新登录时提示设备数超了&lt;/p&gt;&lt;p&gt;电脑和手机为了防止被追踪，默认使用随机 MAC，于是发送给网络服务商（比如北大校园网）的 MAC 地址经常变，校园网以为是新设备登录，就占掉了一个设备登录名额，导致虽然设备数不超过 4 台，还是因设备数超过 4 台而被校园网网关限制登录&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;如果足够土豪，可以以 &lt;code&gt;¥10/月/台&lt;/code&gt; 的价格在网络中心购买额外的校园网设备数&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;苹果电脑在 &lt;code&gt;Wi-Fi - 详细信息&lt;/code&gt; 里把 &lt;code&gt;私有 Wi-Fi 地址&lt;/code&gt; 调成 &lt;code&gt;固定&lt;/code&gt; 即可&lt;/p&gt;&lt;div&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1502&quot; height=&quot;1322&quot; src=&quot;/_astro/network_4.BUTk-Lt2_1H61aC.webp&quot; srcset=&quot;/_astro/network_4.BUTk-Lt2_Z1QGpdQ.webp 640w, /_astro/network_4.BUTk-Lt2_Z2bD4TE.webp 750w, /_astro/network_4.BUTk-Lt2_Z1ocfKz.webp 828w, /_astro/network_4.BUTk-Lt2_15VmGA.webp 1080w, /_astro/network_4.BUTk-Lt2_Z1PynSI.webp 1280w, /_astro/network_4.BUTk-Lt2_1H61aC.webp 1502w&quot; /&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1412&quot; height=&quot;924&quot; src=&quot;/_astro/network_5.B7SFfK7K_ZgxKG7.webp&quot; srcset=&quot;/_astro/network_5.B7SFfK7K_ZYh6.webp 640w, /_astro/network_5.B7SFfK7K_ZuAvX7.webp 750w, /_astro/network_5.B7SFfK7K_Z2s8LDY.webp 828w, /_astro/network_5.B7SFfK7K_EROza.webp 1080w, /_astro/network_5.B7SFfK7K_Z2wFfON.webp 1280w, /_astro/network_5.B7SFfK7K_ZgxKG7.webp 1412w&quot; /&gt;&lt;/div&gt;&lt;p&gt;有线连接的设置在 &lt;code&gt;网络 - USB 10/100/1000 LAN - 详细信息&lt;/code&gt; 里&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1502&quot; height=&quot;1322&quot; src=&quot;/_astro/network_6.CtdwC4Yi_Z24iJ6O.webp&quot; srcset=&quot;/_astro/network_6.CtdwC4Yi_17YDFL.webp 640w, /_astro/network_6.CtdwC4Yi_N2XYX.webp 750w, /_astro/network_6.CtdwC4Yi_1AtN93.webp 828w, /_astro/network_6.CtdwC4Yi_2oIKe5.webp 1080w, /_astro/network_6.CtdwC4Yi_ZwL0me.webp 1280w, /_astro/network_6.CtdwC4Yi_Z24iJ6O.webp 1502w&quot; /&gt;&lt;/p&gt;&lt;p&gt;Windows 在 &lt;code&gt;网络和 Internet - WLAN&lt;/code&gt; 里把 &lt;code&gt;随机硬件地址&lt;/code&gt; 关了&lt;/p&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;2011&quot; height=&quot;1060&quot; src=&quot;/_astro/network_7.BHEb_Cno_1Xhund.webp&quot; srcset=&quot;/_astro/network_7.BHEb_Cno_Z2o2TTt.webp 640w, /_astro/network_7.BHEb_Cno_YVFYf.webp 750w, /_astro/network_7.BHEb_Cno_1ip8l4.webp 828w, /_astro/network_7.BHEb_Cno_4vbyL.webp 1080w, /_astro/network_7.BHEb_Cno_wPI11.webp 1280w, /_astro/network_7.BHEb_Cno_GBVOf.webp 1668w, /_astro/network_7.BHEb_Cno_1Xhund.webp 2011w&quot; /&gt;&lt;/p&gt;&lt;p&gt;iPhone 端也是改 &lt;code&gt;私有 Wi-Fi 地址&lt;/code&gt;，安卓端则换了个名字 &lt;code&gt;使用设备 MAC&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1206&quot; height=&quot;2481&quot; src=&quot;/_astro/network_8.Dhpi-X2X_Z26gcUw.webp&quot; srcset=&quot;/_astro/network_8.Dhpi-X2X_Z17kGsQ.webp 640w, /_astro/network_8.Dhpi-X2X_lneGH.webp 750w, /_astro/network_8.Dhpi-X2X_HaVsf.webp 828w, /_astro/network_8.Dhpi-X2X_Zbl8FK.webp 1080w, /_astro/network_8.Dhpi-X2X_Z26gcUw.webp 1206w&quot; /&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1216&quot; height=&quot;2521&quot; src=&quot;/_astro/network_9.DKqB_inK_Z2w7qfY.webp&quot; srcset=&quot;/_astro/network_9.DKqB_inK_qy0P.webp 640w, /_astro/network_9.DKqB_inK_Zx47xl.webp 750w, /_astro/network_9.DKqB_inK_Z2cu2vx.webp 828w, /_astro/network_9.DKqB_inK_1ccScE.webp 1080w, /_astro/network_9.DKqB_inK_Z2w7qfY.webp 1216w&quot; /&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;欠费&lt;a href=&quot;#欠费&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;也许是最隐蔽的 bug（这真的是 bug 吗）&lt;/p&gt;&lt;p&gt;在 &lt;strong&gt;门户-我的网络&lt;/strong&gt; 里可以查看余额，电脑打不开门户可以从 &lt;strong&gt;北京大学 App&lt;/strong&gt; 里打开。我的网络里可以充值，也可以直接打开 &lt;strong&gt;门户-网费充值&lt;/strong&gt; 进行充值&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;想转生成北大校园网，虽然很废物，但所有人还是要每个月给我交 10 元&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1216&quot; height=&quot;2500&quot; src=&quot;/_astro/network_10.CIW_SF-0_1WPDSY.webp&quot; srcset=&quot;/_astro/network_10.CIW_SF-0_14O1BS.webp 640w, /_astro/network_10.CIW_SF-0_Z17riV8.webp 750w, /_astro/network_10.CIW_SF-0_1ydakW.webp 828w, /_astro/network_10.CIW_SF-0_Z2gKSg5.webp 1080w, /_astro/network_10.CIW_SF-0_1WPDSY.webp 1216w&quot; /&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Lv.9999 验证码</title><link>https://fomalhaut647.com/posts/verification-code/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/verification-code/</guid><description>万分之一的概率！</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot; src=&quot;/_astro/verification-code_1.BouPaMPN_1tWVJq.webp&quot; srcset=&quot;/_astro/verification-code_1.BouPaMPN_Z1J9I6N.webp 640w, /_astro/verification-code_1.BouPaMPN_EXxu0.webp 750w, /_astro/verification-code_1.BouPaMPN_1HBrk6.webp 828w, /_astro/verification-code_1.BouPaMPN_Z1GxTuN.webp 1080w, /_astro/verification-code_1.BouPaMPN_1tWVJq.webp 1254w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>久赌必输</title><link>https://fomalhaut647.com/posts/duel-channel/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/duel-channel/</guid><description>梭哈，是一种智慧</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/duel-channel_0.CTH6UQQA_Z1MxyY1.webp&quot; srcset=&quot;/_astro/duel-channel_0.CTH6UQQA_Z11FWpr.webp 640w, /_astro/duel-channel_0.CTH6UQQA_1kOWhh.webp 750w, /_astro/duel-channel_0.CTH6UQQA_Z21aj2W.webp 828w, /_astro/duel-channel_0.CTH6UQQA_2g2V5t.webp 1080w, /_astro/duel-channel_0.CTH6UQQA_Z1JrQQH.webp 1280w, /_astro/duel-channel_0.CTH6UQQA_Z2fDDh.webp 1668w, /_astro/duel-channel_0.CTH6UQQA_Zsom6x.webp 2048w, /_astro/duel-channel_0.CTH6UQQA_Z1dJic1.webp 2560w, /_astro/duel-channel_0.CTH6UQQA_Z1MxyY1.webp 3912w&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;哪有赌狗一直输&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/duel-channel_1.CL2kiQR1_1Ls3xI.webp&quot; srcset=&quot;/_astro/duel-channel_1.CL2kiQR1_22s50F.webp 640w, /_astro/duel-channel_1.CL2kiQR1_ZFd96x.webp 750w, /_astro/duel-channel_1.CL2kiQR1_12XIna.webp 828w, /_astro/duel-channel_1.CL2kiQR1_JQpNh.webp 1080w, /_astro/duel-channel_1.CL2kiQR1_1OxKF2.webp 1280w, /_astro/duel-channel_1.CL2kiQR1_Z1xr9Ut.webp 1668w, /_astro/duel-channel_1.CL2kiQR1_Z1XzRnJ.webp 2048w, /_astro/duel-channel_1.CL2kiQR1_2lgkkI.webp 2560w, /_astro/duel-channel_1.CL2kiQR1_1Ls3xI.webp 3912w&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;怎么会有人连输 4 局原地飞升&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/duel-channel_2.CkScZhRz_i8Q2U.webp&quot; srcset=&quot;/_astro/duel-channel_2.CkScZhRz_Z1rzQwb.webp 640w, /_astro/duel-channel_2.CkScZhRz_TV3ax.webp 750w, /_astro/duel-channel_2.CkScZhRz_Z2r4d9G.webp 828w, /_astro/duel-channel_2.CkScZhRz_ZIrLGw.webp 1080w, /_astro/duel-channel_2.CkScZhRz_leyae.webp 1280w, /_astro/duel-channel_2.CkScZhRz_23qLnE.webp 1668w, /_astro/duel-channel_2.CkScZhRz_1Ci3Uo.webp 2048w, /_astro/duel-channel_2.CkScZhRz_QW7OU.webp 2560w, /_astro/duel-channel_2.CkScZhRz_i8Q2U.webp 3912w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/duel-channel_3.EiykmwrH_16ox3.webp&quot; srcset=&quot;/_astro/duel-channel_3.EiykmwrH_2t10CV.webp 640w, /_astro/duel-channel_3.EiykmwrH_ZeEdth.webp 750w, /_astro/duel-channel_3.EiykmwrH_1twE0q.webp 828w, /_astro/duel-channel_3.EiykmwrH_Z10ueco.webp 1080w, /_astro/duel-channel_3.EiykmwrH_4c6Em.webp 1280w, /_astro/duel-channel_3.EiykmwrH_1LojRM.webp 1668w, /_astro/duel-channel_3.EiykmwrH_1lfBpw.webp 2048w, /_astro/duel-channel_3.EiykmwrH_zTFk3.webp 2560w, /_astro/duel-channel_3.EiykmwrH_16ox3.webp 3912w&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;我的 8 连 All in 大胜！功亏两篑 😭&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>Pixi - Python 管理工具</title><link>https://fomalhaut647.com/posts/pixi/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/pixi/</guid><description>也许是 Python 环境管理的最佳实践</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;相信用 Python 写过大工程的人应该都会被它糟糕的环境管理折磨过，我在此推荐 Pixi 作为环境管理工具 &lt;a href=&quot;https://pixi.prefix.dev/latest/&quot; target=&quot;_blank&quot;&gt;https://pixi.prefix.dev/latest/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;（有种）来系统 Python 试试&lt;br /&gt;
权限错误、（不知道啊，）我还以为虚拟环境激活了、依赖地狱刹不住&lt;br /&gt;
它突然被导入&lt;br /&gt;
你怎么粘我依赖树上了&lt;br /&gt;
跟我的 lock 文件说去吧&lt;br /&gt;
我只是个写脚本的，你问我发行版打包的&lt;br /&gt;
我们都在用力地配环境&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;pip venv, conda(mamba), uv, Pixi 是几种常见的 python 环境管理工具。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;pip venv 基础但简陋&lt;/li&gt;
&lt;li&gt;conda 可以较好地处理非纯 Python 的二进制依赖，但锁定依赖处理依赖冲突等能力仍然较弱&lt;/li&gt;
&lt;li&gt;uv 是用 rust 实现的 Python 管理工具，安装速度极快，而且有先进的 “锁” 机制，跨机器同步环境更容易。此外它的环境管理以项目为单位，从而避免不同项目使用同一个全局环境导致依赖冲突、冗余等问题&lt;/li&gt;
&lt;li&gt;Pixi 可以看作 uv 和 conda 的结合，也是 rust 实现，速度极快。能用 conda 安装的依赖，Pixi 会优先使用 conda 渠道安装，否则直接使用内置的 uv 安装，因此 Pixi 对非纯 Python 实现的依赖的处理能力更好。此外 Pixi 还引入了 task 等高级功能&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面是一份 AI 写的介绍，然后是官方速查表的中文翻译，文章末尾是一段关于如何在使用 vscode 时正确激活 pixi 环境的教程&lt;/p&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h1&gt;为什么我推荐用 Pixi 管理 Python 环境&lt;a href=&quot;#为什么我推荐用-pixi-管理-python-环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;如果你写过一段时间 Python，大概率遇到过这些问题：&lt;/p&gt;&lt;p&gt;同一个项目在我电脑上能跑，在别人电脑上跑不起来；
&lt;code&gt;pip install&lt;/code&gt; 装了一堆包，后来忘了哪些是项目真正需要的；
项目依赖 &lt;code&gt;numpy&lt;/code&gt;、&lt;code&gt;pytorch&lt;/code&gt;、&lt;code&gt;opencv&lt;/code&gt; 这类带二进制依赖的库，安装时经常和系统环境、Python 版本、CUDA 或 C/C++ 库纠缠在一起；
用 &lt;code&gt;conda&lt;/code&gt; 能解决一部分问题，但环境和项目之间的关系不够清晰，&lt;code&gt;environment.yml&lt;/code&gt;、&lt;code&gt;requirements.txt&lt;/code&gt;、&lt;code&gt;pyproject.toml&lt;/code&gt; 又常常分散管理。&lt;/p&gt;&lt;p&gt;Pixi 试图把这些问题统一起来解决。按照官方文档的定义，Pixi 是一个快速、现代、可复现的包管理工具，面向不同背景的开发者；它的核心能力包括隔离环境、内置 lockfile、任务管理、多平台支持、多环境管理、Python/&lt;code&gt;pyproject.toml&lt;/code&gt; 支持，以及通过 uv 支持 PyPI。([Pixi][1])&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Pixi 是什么？&lt;a href=&quot;#pixi-是什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一句话说，&lt;strong&gt;Pixi 是一个基于 conda 生态、同时兼容 PyPI 的项目级环境管理工具&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;传统上，我们常把 Python 环境理解成一个单独的虚拟环境：先创建环境，再激活环境，再在里面安装包。Pixi 的思路稍微不同：它更强调 &lt;strong&gt;workspace&lt;/strong&gt;，也就是“项目工作区”。一个 Pixi workspace 通常包含：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;your-project/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── pixi.toml 或 pyproject.toml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── pixi.lock&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── .pixi/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中，&lt;code&gt;pixi.toml&lt;/code&gt; 或 &lt;code&gt;pyproject.toml&lt;/code&gt; 描述项目需要什么依赖、支持哪些平台、有哪些任务；&lt;code&gt;pixi.lock&lt;/code&gt; 记录精确解析出来的依赖版本；&lt;code&gt;.pixi/&lt;/code&gt; 则存放项目实际使用的环境。官方从 Conda/Mamba 迁移指南中也明确指出，Pixi 与 Conda/Mamba 的差异在于：Conda/Mamba 主要围绕 environment，而 Pixi 更强调 workspace；workspace 中包含 manifest、lockfile 和 &lt;code&gt;.pixi&lt;/code&gt; 环境目录，因此更适合项目共享与协作。([Pixi][2])&lt;/p&gt;&lt;p&gt;这点很重要。环境不再只是你电脑上的一个“状态”，而是项目的一部分。别人拿到你的代码仓库，只要有 &lt;code&gt;pixi.toml&lt;/code&gt;/&lt;code&gt;pyproject.toml&lt;/code&gt; 和 &lt;code&gt;pixi.lock&lt;/code&gt;，就能更可靠地复现你的开发环境。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么 Pixi 特别适合 Python？&lt;a href=&quot;#为什么-pixi-特别适合-python&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Python 环境管理的难点不只是“装包”，而是包之间的来源和依赖模型非常复杂。一个现代 Python 项目可能同时依赖：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Python 解释器&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;numpy / pandas / scipy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pytorch / tensorflow&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;opencv / GDAL / CUDA 相关库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ruff / pytest / ipython&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;纯 Python 包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;带 C/C++/Fortran/Rust 扩展的包&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果只使用 &lt;code&gt;pip&lt;/code&gt;，它主要面对的是 PyPI 生态。PyPI 很大、包很多，但一些带系统级二进制依赖的库并不总是好装。Pixi 的优势在于它建立在 conda 生态之上，而 conda 是跨平台、跨语言的包生态，常用于数据科学和机器学习，特点是安装预构建的二进制包；同时 Pixi 也能安装 PyPI 包。官方 Python 教程举了 GDAL 的例子：PyPI 上的 GDAL 不包含二进制 C 依赖，而 conda 包包含；另一方面，也有一些包只在 PyPI 上发布，Pixi 也可以安装它们。([Pixi][3])&lt;/p&gt;&lt;p&gt;换句话说，Pixi 的定位不是“替代 pip”，也不是“换皮 conda”，而是把两个世界接在一起：&lt;strong&gt;能从 conda-forge 装的优先从 conda-forge 装，需要 PyPI 的再从 PyPI 装&lt;/strong&gt;。官方文档也说明，Pixi 同时建立在 conda 和 PyPI 两个生态之上，并采用 conda-first 的策略：先解析 conda 依赖，再映射到 PyPI 包，最后解析剩余 PyPI 依赖。([Pixi][4])&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Pixi 相比 pip、venv、conda、poetry、uv 的核心优势&lt;a href=&quot;#pixi-相比-pipvenvcondapoetryuv-的核心优势&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果只写很小的纯 Python 脚本，&lt;code&gt;venv + pip&lt;/code&gt; 已经够用。但一旦项目变复杂，Pixi 的优势会逐渐体现出来。&lt;/p&gt;&lt;p&gt;官方首页给了一个简化对比：Pixi 支持安装 Python、支持多语言、支持 lockfile、内置 task runner，并支持 workspace 管理；而 pip 不负责安装 Python，也不提供环境管理和 lockfile；Poetry 偏 Python 包管理；uv 很快，也支持 Python 和 lockfile，但官方表格中 Pixi 的优势在于多语言、任务系统和 workspace 管理。([Pixi][1])&lt;/p&gt;&lt;p&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;th&gt;局限&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;venv + pip&lt;/code&gt;&lt;/td&gt;&lt;td&gt;简单 Python 项目&lt;/td&gt;&lt;td&gt;不管理 Python 本身；依赖可复现性较弱&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;conda/mamba&lt;/code&gt;&lt;/td&gt;&lt;td&gt;科学计算、机器学习、二进制依赖&lt;/td&gt;&lt;td&gt;更偏环境级管理，项目工作流不如 Pixi 清晰&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Poetry&lt;/td&gt;&lt;td&gt;Python 包开发与发布&lt;/td&gt;&lt;td&gt;主要面向 PyPI，不擅长系统级二进制依赖&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;uv&lt;/td&gt;&lt;td&gt;极快的 Python 包管理&lt;/td&gt;&lt;td&gt;更专注 Python 生态&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pixi&lt;/td&gt;&lt;td&gt;项目级、跨平台、Python + Conda + PyPI + 任务管理&lt;/td&gt;&lt;td&gt;概念比 &lt;code&gt;pip&lt;/code&gt; 稍多，需要适应 workspace 思路&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Pixi 最值得推荐的地方是：它不是只解决一个局部问题，而是把“Python 版本、依赖来源、环境复现、任务运行、多平台协作”放进同一个项目模型里。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;快速上手&lt;a href=&quot;#快速上手&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;安装 Pixi 很简单。Linux 和 macOS 可以使用：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-fsSL&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://pixi.sh/install.sh&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Windows 可以使用 PowerShell：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;powershell &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;ExecutionPolicy Bypass &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;c &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;irm -useb https://pixi.sh/install.ps1 | iex&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方文档说明，安装脚本会下载最新版本的 &lt;code&gt;pixi&lt;/code&gt;，把二进制文件放到用户目录下的 &lt;code&gt;.pixi/bin&lt;/code&gt;，并把它加入 &lt;code&gt;PATH&lt;/code&gt;；安装后需要重启终端或重新加载 shell 配置。([Pixi][5])&lt;/p&gt;&lt;p&gt;创建一个新项目：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hello-world&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;hello-world&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;python&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;print(&quot;Hello Pixi!&quot;)&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这套命令做了三件事：初始化 workspace、把 Python 加入项目依赖、在 Pixi 管理的环境里运行 Python。官方首页也用类似例子展示了 Pixi 的基本工作流。([Pixi][1])&lt;/p&gt;&lt;p&gt;如果是更标准的 Python 项目，也可以使用 &lt;code&gt;pyproject.toml&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pixi-py&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--format&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pyproject&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方 Python 教程说明，Pixi 支持 &lt;code&gt;pixi.toml&lt;/code&gt; 和 &lt;code&gt;pyproject.toml&lt;/code&gt; 两种 manifest 格式；在 Python 项目中，&lt;code&gt;pyproject.toml&lt;/code&gt; 更常见。初始化后，Pixi 会在 &lt;code&gt;pyproject.toml&lt;/code&gt; 中加入 &lt;code&gt;[tool.pixi.workspace]&lt;/code&gt;、&lt;code&gt;[tool.pixi.pypi-dependencies]&lt;/code&gt; 和 &lt;code&gt;[tool.pixi.tasks]&lt;/code&gt; 等配置。([Pixi][3])&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;添加 Conda 和 PyPI 依赖&lt;a href=&quot;#添加-conda-和-pypi-依赖&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;默认情况下，Pixi 会把依赖作为 conda 包添加。例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;black&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这会在配置文件中加入类似：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;tool&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dependencies&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;black&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;&amp;gt;=25.1.0,&amp;lt;26&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果某个包需要从 PyPI 安装，可以加上 &lt;code&gt;--pypi&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rich&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--pypi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;flask[async]==3.1.0&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--pypi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方 Python 教程说明，Pixi 可以同时管理 conda 依赖和 PyPI 依赖，也支持 PyPI extras，例如 &lt;code&gt;flask[async]&lt;/code&gt;。([Pixi][3])&lt;/p&gt;&lt;p&gt;这对 Python 项目很实用：
像 &lt;code&gt;python&lt;/code&gt;、&lt;code&gt;numpy&lt;/code&gt;、&lt;code&gt;pytorch&lt;/code&gt;、&lt;code&gt;opencv&lt;/code&gt; 这类更依赖二进制构建的包，可以优先交给 conda-forge；一些只在 PyPI 上发布的工具包，则可以继续从 PyPI 安装。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Pixi 会自动管理 Python 解释器&lt;a href=&quot;#pixi-会自动管理-python-解释器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是 Pixi 很容易被低估的一点：它不只是管理 Python 包，也可以管理 Python 本身。&lt;/p&gt;&lt;p&gt;在传统流程里，你可能会先用系统包管理器安装 Python，比如 &lt;code&gt;brew install python&lt;/code&gt;、&lt;code&gt;apt install python3&lt;/code&gt;，再创建虚拟环境。Pixi 则可以直接把 Python 解释器作为项目依赖的一部分安装。官方文档说明，在 &lt;code&gt;pyproject.toml&lt;/code&gt; 项目中，Pixi 会根据 &lt;code&gt;requires-python&lt;/code&gt; 字段决定安装哪个 Python 版本，从而自动管理和引导 Python 解释器，不再需要额外依赖 &lt;code&gt;brew&lt;/code&gt;、&lt;code&gt;apt&lt;/code&gt; 等系统安装步骤。([Pixi][3])&lt;/p&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;project&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;requires-python&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;&amp;gt;=3.11&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后 Pixi 会据此为项目准备合适的 Python。对于多人协作，这比“你自己先装一个差不多的 Python”可靠得多。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;&lt;code&gt;pixi.lock&lt;/code&gt;：可复现性的关键&lt;a href=&quot;#pixilock可复现性的关键&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果说 &lt;code&gt;pixi.toml&lt;/code&gt; / &lt;code&gt;pyproject.toml&lt;/code&gt; 描述“我想要什么”，那么 &lt;code&gt;pixi.lock&lt;/code&gt; 描述的就是“Pixi 实际解析出了什么”。&lt;/p&gt;&lt;p&gt;官方 lockfile 文档解释：manifest 只列出项目的直接依赖；安装环境时，包管理器会进行依赖解析，找到所有直接和间接依赖，并确保版本彼此兼容；lockfile 则记录解析出的精确包、版本和元数据。它的价值在于，其他机器可以根据这个较小的文件重建出相同环境。([Pixi][6])&lt;/p&gt;&lt;p&gt;Pixi 的 lockfile 文件名是 &lt;code&gt;pixi.lock&lt;/code&gt;。官方文档指出，Pixi 会为 manifest 中列出的所有环境和平台解析依赖，并把结果记录在 lockfile 中，这能显著提高项目在不同操作系统或 CPU 架构上的可复现性；很多情况下，共享 lockfile 就能让 CI 重建本地开发环境。([Pixi][6])&lt;/p&gt;&lt;p&gt;所以我的建议是：&lt;strong&gt;应用项目应当提交 &lt;code&gt;pixi.lock&lt;/code&gt;&lt;/strong&gt;。这和 &lt;code&gt;package-lock.json&lt;/code&gt;、&lt;code&gt;pnpm-lock.yaml&lt;/code&gt; 的逻辑类似。它能让别人安装到和你一致的依赖版本，而不是“今天解析一次、明天又解析出另一个版本”。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Tasks：把常用命令写进项目&lt;a href=&quot;#tasks把常用命令写进项目&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 还有一个很实用的功能：task runner。&lt;/p&gt;&lt;p&gt;很多项目都有固定命令：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pytest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ruff&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;check&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ruff&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;format&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;scripts/train.py&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;my_package&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果只靠 README 记录，时间久了很容易不一致。Pixi 可以把这些命令写成 task：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pytest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lint&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;ruff check .&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fmt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;ruff format .&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;之后运行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lint&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fmt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方 tasks 文档说明，构建一个包时，通常不只是运行代码，还会涉及格式化、lint、编译、测试、benchmark 等步骤；Pixi tasks 就是为了让这些工作流更容易管理。任务之间还可以声明依赖关系，例如先 configure，再 build，再 start；如果其中一个命令失败，后续任务不会继续执行。([Pixi][7])&lt;/p&gt;&lt;p&gt;这点对团队协作很有价值。你不用再写“请先激活环境，然后执行某某命令”，而是直接告诉别人：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Pixi 会在正确环境里执行它。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;多环境：开发、测试、生产可以分开&lt;a href=&quot;#多环境开发测试生产可以分开&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;很多项目会有不同依赖集合：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;default：运行项目需要的依赖&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dev：开发工具，比如 ruff、ipython&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;test：测试工具，比如 pytest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;prod：生产环境最小依赖&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Pixi 支持在同一个 workspace 里管理多个环境。官方 Python 教程中，Pixi 可以配合 &lt;code&gt;pyproject.toml&lt;/code&gt; 的 dependency groups 创建多个环境，例如 &lt;code&gt;default&lt;/code&gt; 和 &lt;code&gt;test&lt;/code&gt;；如果要在测试环境中安装或运行，可以加 &lt;code&gt;--environment test&lt;/code&gt;。([Pixi][3])&lt;/p&gt;&lt;p&gt;这比把所有东西都塞进一个环境更干净。比如 &lt;code&gt;pytest&lt;/code&gt;、&lt;code&gt;ruff&lt;/code&gt;、&lt;code&gt;mypy&lt;/code&gt; 这些工具只在开发或测试时需要，不一定应该进入生产环境。Pixi 允许你把它们分到对应 feature/environment 里。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;多平台：同一个项目支持 macOS、Linux、Windows&lt;a href=&quot;#多平台同一个项目支持-macoslinuxwindows&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Python 项目经常遇到跨平台问题：你在 macOS 上开发，服务器是 Linux，队友可能用 Windows。Pixi 允许在 manifest 中声明 workspace 支持的平台，例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;workspace&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;platforms&lt;/span&gt;&lt;span&gt; = [&lt;/span&gt;&lt;span&gt;&quot;win-64&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;linux-64&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;osx-64&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;osx-arm64&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方多平台文档说明，&lt;code&gt;workspace.platforms&lt;/code&gt; 定义 workspace 支持的平台；当声明多个平台时，Pixi 会分别决定每个平台需要安装的依赖，并把这些结果存储在 lockfile 中。它还支持针对特定平台覆盖依赖或激活脚本。([Pixi][8])&lt;/p&gt;&lt;p&gt;这对机器学习、数据科学和后端项目都很有用。比如你可以在 macOS 上开发，在 Linux 服务器上训练模型，而依赖配置仍然保存在同一个项目里。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;&lt;code&gt;pixi global&lt;/code&gt;：顺便管理命令行工具&lt;a href=&quot;#pixi-global顺便管理命令行工具&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;除了项目环境，Pixi 还可以管理全局工具：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ipython&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ripgrep&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;官方文档说明，&lt;code&gt;pixi global&lt;/code&gt; 可以把工具安装到全局位置，并把可执行入口暴露到系统 &lt;code&gt;PATH&lt;/code&gt;，使其可以在任意目录运行；默认情况下，每个包会被隔离在自己的环境里，只暴露必要入口，因此删除某个工具时不容易破坏其他无关工具，这一点类似 &lt;code&gt;pipx&lt;/code&gt;。([Pixi][9])&lt;/p&gt;&lt;p&gt;对我来说，这意味着 Pixi 不仅可以管理项目，还可以管理常用 CLI 工具。比如 &lt;code&gt;ipython&lt;/code&gt;、&lt;code&gt;ruff&lt;/code&gt;、&lt;code&gt;jupyterlab&lt;/code&gt;、&lt;code&gt;ripgrep&lt;/code&gt;、&lt;code&gt;gh&lt;/code&gt; 都可以用 Pixi 安装，而不必污染系统 Python。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;一个推荐的 Python 项目模板&lt;a href=&quot;#一个推荐的-python-项目模板&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果我现在新建一个 Python 项目，我会大致这样做：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;my-project&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--format&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pyproject&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;my-project&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;python&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;numpy&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pandas&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ruff&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pytest&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--pypi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pytest&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lint&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;ruff check .&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;task&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fmt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;ruff format .&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果是机器学习项目，可以继续加：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pytorch&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jupyterlab&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;日常使用：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main.py&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;shell&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;提交到 Git 时，建议提交：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pyproject.toml / pixi.toml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pixi.lock&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;src/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tests/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;不要提交：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.pixi/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;因为 &lt;code&gt;.pixi/&lt;/code&gt; 是本地生成的环境目录，别人可以通过 manifest 和 lockfile 重新创建。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;我为什么推荐大家尝试 Pixi？&lt;a href=&quot;#我为什么推荐大家尝试-pixi&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 最吸引我的地方，不是某一个命令特别酷，而是它对 Python 项目的抽象更完整。&lt;/p&gt;&lt;p&gt;它把 Python 解释器、conda 依赖、PyPI 依赖、lockfile、任务、多环境、多平台放在同一个 workspace 模型里。对于学生、科研、机器学习、数据分析、后端开发来说，这种统一性非常实用。&lt;/p&gt;&lt;p&gt;简单项目里，它可以替代 &lt;code&gt;venv + pip&lt;/code&gt;，让环境更可复现；
科学计算项目里，它能继承 conda-forge 的二进制包优势；
团队项目里，它能用 lockfile 和 task runner 减少“你电脑上怎么跑”的沟通成本；
跨平台项目里，它能把不同平台的依赖结果统一记录下来。&lt;/p&gt;&lt;p&gt;如果你只写一次性的脚本，Pixi 可能显得有点“重”。但只要你的项目需要长期维护、多人协作、跨机器运行，或者涉及数据科学/机器学习依赖，我会非常推荐你尝试 Pixi。它让我感觉 Python 环境管理终于更接近现代前端里的 &lt;code&gt;pnpm&lt;/code&gt; / &lt;code&gt;package-lock&lt;/code&gt; / workspace 工作流：环境不再是混乱的本地状态，而是项目本身的一部分。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Pixi 的基本用法&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#basic-usage-of-pixi&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#pixi-的基本用法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Pixi 能做很多事情，但它被设计得易于上手。下面我们来过一遍 Pixi 的基本用法。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;管理工作区 (workspace)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#managing-workspaces&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#管理工作区-workspace&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/init/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi init&lt;/code&gt;&lt;/a&gt; - 在当前目录创建一个新的 Pixi 清单文件 (manifest)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/add/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi add&lt;/code&gt;&lt;/a&gt; - 向清单文件添加一个依赖项 (dependency)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/remove/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi remove&lt;/code&gt;&lt;/a&gt; - 从清单文件移除一个依赖项&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/update/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi update&lt;/code&gt;&lt;/a&gt; - 更新清单文件中的依赖项&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/upgrade/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi upgrade&lt;/code&gt;&lt;/a&gt; - 将清单文件中的依赖项升级到最新版本，即使你把它们固定 (pin) 在某个特定版本上&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/lock/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi lock&lt;/code&gt;&lt;/a&gt; - 为清单文件创建或更新锁文件 (lockfile)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/info/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi info&lt;/code&gt;&lt;/a&gt; -显示工作区信息&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/run/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi run&lt;/code&gt;&lt;/a&gt; - 运行清单文件中定义的任务 (task)，或在当前环境中运行任意命令&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/shell/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi shell&lt;/code&gt;&lt;/a&gt; - 在当前环境中启动一个 shell&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/list/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi list&lt;/code&gt;&lt;/a&gt; - 列出当前环境中的所有依赖项&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/tree/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi tree&lt;/code&gt;&lt;/a&gt; - 显示当前环境中的依赖树 (dependency tree)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/clean/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi clean&lt;/code&gt;&lt;/a&gt; - 从你的机器上移除该环境&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;管理全局安装 (global installations)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#managing-global-installations&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#管理全局安装-global-installations&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 可以在全局环境 (global environments) 中管理工具的全局安装。它会把这些环境安装到一个集中位置，因此你可以在任意位置使用它们。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/install/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global install&lt;/code&gt;&lt;/a&gt; - 在全局空间 (global space) 中将一个包安装到它自己的环境里&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/uninstall/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global uninstall&lt;/code&gt;&lt;/a&gt; - 从全局空间卸载一个环境&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/add/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global add&lt;/code&gt;&lt;/a&gt; - 向一个已存在的全局环境添加一个包&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/sync/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global sync&lt;/code&gt;&lt;/a&gt; - 将全局已安装的环境与全局清单文件同步，该清单描述了你想安装的所有环境&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/edit/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global edit&lt;/code&gt;&lt;/a&gt; - 编辑全局清单文件&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/update/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global update&lt;/code&gt;&lt;/a&gt; - 更新全局环境&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/global/list/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi global list&lt;/code&gt;&lt;/a&gt; - 列出所有全局环境&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;更多信息： &lt;a href=&quot;https://pixi.prefix.dev/latest/global_tools/introduction/&quot; target=&quot;_blank&quot;&gt;Global Tools&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;运行一次性命令 (one-off commands)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#running-one-off-commands&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#运行一次性命令-one-off-commands&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 可以在特定环境中运行一次性命令。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/exec/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi exec&lt;/code&gt;&lt;/a&gt; - 在临时环境 (temporary environment) 中运行一条命令&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/exec/#arg---spec&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi exec --spec&lt;/code&gt;&lt;/a&gt; - 在临时环境中运行一条命令，并使用指定的规格 (specification)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; pixi exec python -VV&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.13.5&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;packaged&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;by&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;conda-forge&lt;/span&gt;&lt;span&gt; | (&lt;/span&gt;&lt;span&gt;main,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Jun&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2025,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;08:24:05&lt;/span&gt;&lt;span&gt;) [Clang &lt;/span&gt;&lt;span&gt;18.1.8&lt;/span&gt;&lt;span&gt; ]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; pixi exec --spec &lt;/span&gt;&lt;span&gt;&quot;python=3.12&quot;&lt;/span&gt;&lt;span&gt; python -VV&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.12.11&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;packaged&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;by&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;conda-forge&lt;/span&gt;&lt;span&gt; | (&lt;/span&gt;&lt;span&gt;main,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Jun&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2025,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;14:38:53&lt;/span&gt;&lt;span&gt;) [Clang &lt;/span&gt;&lt;span&gt;18.1.8&lt;/span&gt;&lt;span&gt; ]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;多环境 (Multiple Environments)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#multiple-environments&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#多环境-multiple-environments&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 工作区允许你管理多个环境 (environment)。一个环境由一个或多个特性 (feature) 构建而成。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/add/#arg---feature&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi add --feature&lt;/code&gt;&lt;/a&gt; - 向某个特性添加一个包&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/task/add/#arg---feature&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi task add --feature&lt;/code&gt;&lt;/a&gt; - 向某个特定特性添加一个任务&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/workspace/environment/add/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi workspace environment add&lt;/code&gt;&lt;/a&gt; - 向工作区添加一个环境&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/run/#arg---environment&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi run --environment&lt;/code&gt;&lt;/a&gt; - 在指定环境中运行一条命令&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/shell/#arg---environment&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi shell --environment&lt;/code&gt;&lt;/a&gt; - 激活 (activate) 指定环境&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/list/#arg---environment&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi list --environment&lt;/code&gt;&lt;/a&gt; - 列出指定环境中的依赖项&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;更多信息： &lt;a href=&quot;https://pixi.prefix.dev/latest/workspace/multi_environment/&quot; target=&quot;_blank&quot;&gt;Multiple Environments&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;任务 (Tasks)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#tasks&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#任务-tasks&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 内置了任务运行器 (task runner)，可以运行跨平台任务 (cross-platform tasks)。任务既可以是预定义的任务，也可以是任意普通可执行文件 (executable)。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/run/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi run&lt;/code&gt;&lt;/a&gt; - 运行一个任务或命令&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/task/add/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi task add&lt;/code&gt;&lt;/a&gt; - 向清单文件添加一个新任务&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;任务也可以依赖其他任务。下面是一个更复杂的任务用例示例：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;tasks&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;build&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;make build&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# using the toml table view&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;tasks&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;pytest&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;depends-on&lt;/span&gt;&lt;span&gt; = [&lt;/span&gt;&lt;span&gt;&quot;build&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;更多信息： &lt;a href=&quot;https://pixi.prefix.dev/latest/workspace/advanced_tasks/&quot; target=&quot;_blank&quot;&gt;Tasks&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;多平台支持 (Multi platform support)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#multi-platform-support&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#多平台支持-multi-platform-support&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 开箱即用地支持多种平台。你可以指定工作区支持哪些平台，Pixi 会确保依赖项与这些平台兼容。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/add/#arg---platform&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi add --platform&lt;/code&gt;&lt;/a&gt; - 只把某个包添加到指定平台&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/workspace/platform/add/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi workspace platform add&lt;/code&gt;&lt;/a&gt; - 向工作区添加你希望支持的平台&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;更多信息： &lt;a href=&quot;https://pixi.prefix.dev/latest/workspace/multi_platform_configuration/&quot; target=&quot;_blank&quot;&gt;Multi platform support&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;实用工具 (Utilities)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#utilities&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#实用工具-utilities&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 自带了一组实用工具，帮助你调试或管理配置。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/info/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi info&lt;/code&gt;&lt;/a&gt; - 显示当前工作区以及全局配置的信息&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/config/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi config&lt;/code&gt;&lt;/a&gt; - 显示或编辑 Pixi 配置 (configuration)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/tree/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi tree&lt;/code&gt;&lt;/a&gt; - 显示当前环境中的依赖树&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/list/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi list&lt;/code&gt;&lt;/a&gt; - 列出当前环境中的所有依赖项&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/clean/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi clean&lt;/code&gt;&lt;/a&gt; - 从你的机器上移除工作区环境&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pixi help&lt;/code&gt; - 显示 Pixi 命令的帮助信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pixi help &amp;lt;subcommand&amp;gt;&lt;/code&gt; - 显示某个特定 Pixi 命令的帮助信息&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/auth/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi auth&lt;/code&gt;&lt;/a&gt; - 管理 conda 通道 (channel) 的认证 (authentication)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/search/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi search&lt;/code&gt;&lt;/a&gt; - 在已配置的通道中搜索包&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://pixi.prefix.dev/latest/reference/cli/pixi/completion/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;pixi completion&lt;/code&gt;&lt;/a&gt; - 为 Pixi 命令生成 shell 自动补全脚本 (completion scripts)&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;进一步探索 (Going further)&lt;a href=&quot;https://pixi.prefix.dev/latest/getting_started/#going-further&quot; target=&quot;_blank&quot;&gt;#&lt;/a&gt;&lt;a href=&quot;#进一步探索-going-further&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Pixi 还有更多能力等待你挖掘。请查看左侧边栏中的主题来了解更多内容。&lt;/p&gt;&lt;p&gt;别忘了加入我们的 &lt;a href=&quot;https://discord.gg/kKV8ZxyzY4&quot; target=&quot;_blank&quot;&gt;Discord&lt;/a&gt; ，和 Pixi 爱好者社区一起交流！&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;修复 VS Code + Pixi 终端报错 &lt;code&gt;__vsc_prompt_cmd_original: command not found&lt;/code&gt;&lt;a href=&quot;#修复-vs-code--pixi-终端报错-__vsc_prompt_cmd_original-command-not-found&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;问题现象&lt;a href=&quot;#问题现象&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 VS Code 中设置 Python 解释器为 Pixi 环境（启用 Pixi Code 扩展）从而自动激活环境时，打开终端会出现：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;bash: __vsc_prompt_cmd_original: command not found&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;原因分析&lt;a href=&quot;#原因分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;问题涉及三个组件的交互：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;VS Code Shell 集成        Python 扩展             Pixi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │                    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│ 定义 __vsc_* 函数       │ 检测到 pixi 环境    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│ 写入 PROMPT_COMMAND    │                    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │                    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │── pixi shell ──────│→ 启动 bash 子进程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │                    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │   子进程继承了 PROMPT_COMMAND&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │   但没有继承 __vsc_* 函数&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │                    │&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │   bash 执行 PROMPT_COMMAND&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │   → 找不到 __vsc_prompt_cmd_original&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│                        │   → 报错！&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;详细解释&lt;a href=&quot;#详细解释&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;VS Code 的 shell 集成&lt;/strong&gt;：VS Code 打开终端时，注入脚本定义 &lt;code&gt;__vsc_prompt_cmd_original&lt;/code&gt; 等函数，
并将它们挂到 &lt;code&gt;PROMPT_COMMAND&lt;/code&gt; 上。这些函数用于目录跟踪、命令装饰（行号旁的成功/失败图标）、
点击相对路径跳转文件等增强功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Python 扩展的自动激活&lt;/strong&gt;：&lt;code&gt;python.terminal.activateEnvironment&lt;/code&gt; 默认为 &lt;code&gt;true&lt;/code&gt;。
当你选择了 pixi 环境中的 Python 解释器后，扩展会在每次打开终端时自动执行
&lt;code&gt;pixi shell --manifest-path ...&lt;/code&gt; 来激活环境。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;pixi shell&lt;/code&gt; 的子进程问题&lt;/strong&gt;：&lt;code&gt;pixi shell&lt;/code&gt; 启动一个新的 bash 子进程。
子进程通过环境变量继承了 &lt;code&gt;PROMPT_COMMAND&lt;/code&gt;，但 bash 函数（如 &lt;code&gt;__vsc_prompt_cmd_original&lt;/code&gt;）
不是环境变量，不会被继承。子进程执行 &lt;code&gt;PROMPT_COMMAND&lt;/code&gt; 时就会找不到函数而报错。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;&lt;code&gt;pixi shell&lt;/code&gt; vs &lt;code&gt;pixi shell-hook&lt;/code&gt; 对比&lt;a href=&quot;#pixi-shell-vs-pixi-shell-hook-对比&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;pixi shell&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;eval &quot;$(pixi shell-hook)&quot;&lt;/code&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;原理&lt;/td&gt;&lt;td&gt;启动新的 bash 子进程&lt;/td&gt;&lt;td&gt;在当前 shell 中设置环境变量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;VS Code 集成&lt;/td&gt;&lt;td&gt;丢失（函数未继承到子进程）&lt;/td&gt;&lt;td&gt;完整保留&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;退出方式&lt;/td&gt;&lt;td&gt;&lt;code&gt;exit&lt;/code&gt; 退出子 shell&lt;/td&gt;&lt;td&gt;环境变量持续到终端关闭&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;修复步骤&lt;a href=&quot;#修复步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;共需修改 2 个文件。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;步骤 1：编辑 &lt;code&gt;~/.bashrc&lt;/code&gt;&lt;a href=&quot;#步骤-1编辑-bashrc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;1a. 添加 PROMPT_COMMAND 兜底保护&lt;a href=&quot;#1a-添加-prompt_command-兜底保护&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;在交互检查（&lt;code&gt;case $- in ...&lt;/code&gt;）之后，添加：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Fix: clean up VS Code shell integration references in sub-shells&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# (e.g., pixi shell) where the functions are not inherited.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; [[ &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$PROMPT_COMMAND&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;__vsc_prompt_cmd_original&quot;&lt;/span&gt;&lt;span&gt;* ]] &amp;amp;&amp;amp; ! &lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;__vsc_prompt_cmd_original&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;gt;/dev/null; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;unset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;PROMPT_COMMAND&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;作用：如果仍有 &lt;code&gt;pixi shell&lt;/code&gt; 子进程场景（手动执行等），清理掉无效的 &lt;code&gt;PROMPT_COMMAND&lt;/code&gt;，
避免报错。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;1b. 添加 pixi 环境自动激活&lt;a href=&quot;#1b-添加-pixi-环境自动激活&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;在文件末尾（&lt;code&gt;pixi completion&lt;/code&gt; 那行之后），添加：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [ &lt;/span&gt;&lt;span&gt;-x&lt;/span&gt;&lt;span&gt; ~/.pixi/bin/pixi ]; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 启用 pixi 命令自动补全&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;eval&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;$(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$HOME&lt;/span&gt;&lt;span&gt;/.pixi/bin/pixi&quot;&lt;/span&gt;&lt;span&gt; completion &lt;/span&gt;&lt;span&gt;--shell&lt;/span&gt;&lt;span&gt; bash)&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 如果当前目录或其父目录里有 pixi.toml，激活 pixi 环境&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [[ &lt;/span&gt;&lt;span&gt;-z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;PIXI_IN_SHELL&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:-&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; ]]; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;_dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$PWD&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;while&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [[ &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$_dir&lt;/span&gt;&lt;span&gt;/pixi.toml&quot;&lt;/span&gt;&lt;span&gt; ]]; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;eval&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;$(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$HOME&lt;/span&gt;&lt;span&gt;/.pixi/bin/pixi&quot;&lt;/span&gt;&lt;span&gt; shell-hook &lt;/span&gt;&lt;span&gt;--manifest-path&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt;$_dir&lt;/span&gt;&lt;span&gt;/pixi.toml&quot;)&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;[[ &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$_dir&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt; ]] &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;break&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;_dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;$(&lt;/span&gt;&lt;span&gt;dirname&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt;$_dir&lt;/span&gt;&lt;span&gt;&quot;)&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;unset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;_dir&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;作用：终端打开时，从当前目录向上查找 &lt;code&gt;pixi.toml&lt;/code&gt;，找到后用 &lt;code&gt;shell-hook&lt;/code&gt; 在当前 shell
中激活环境。不启动子进程，VS Code 集成功能完整保留。
&lt;code&gt;PIXI_IN_SHELL&lt;/code&gt; 检查防止重复激活。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤 2：创建 &lt;code&gt;.vscode/settings.json&lt;/code&gt;&lt;a href=&quot;#步骤-2创建-vscodesettingsjson&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在项目根目录创建 &lt;code&gt;.vscode/settings.json&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// Disable Python extension&apos;s automatic environment activation in terminal.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// The pixi environment is already auto-activated via ~/.bashrc using shell-hook,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// which avoids spawning a sub-shell and preserves VS Code&apos;s shell integration.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;python.terminal.activateEnvironment&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;作用：禁止 Python 扩展在终端中自动执行 &lt;code&gt;pixi shell&lt;/code&gt;，从根源上消除子进程的产生。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三层防护总结&lt;a href=&quot;#三层防护总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;层级&lt;/th&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;根源修复&lt;/td&gt;&lt;td&gt;&lt;code&gt;.vscode/settings.json&lt;/code&gt;&lt;/td&gt;&lt;td&gt;禁止 Python 扩展自动执行 &lt;code&gt;pixi shell&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;自动激活&lt;/td&gt;&lt;td&gt;&lt;code&gt;~/.bashrc&lt;/code&gt; 末尾&lt;/td&gt;&lt;td&gt;用 &lt;code&gt;shell-hook&lt;/code&gt; 在当前 shell 中激活 pixi&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;兜底保护&lt;/td&gt;&lt;td&gt;&lt;code&gt;~/.bashrc&lt;/code&gt; 开头&lt;/td&gt;&lt;td&gt;手动 &lt;code&gt;pixi shell&lt;/code&gt; 时清理无效 &lt;code&gt;PROMPT_COMMAND&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;为什么不能用 &lt;code&gt;export -f&lt;/code&gt; 导出函数？&lt;a href=&quot;#为什么不能用-export--f-导出函数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一个直觉的想法是：在 &lt;code&gt;~/.bashrc&lt;/code&gt; 中用 &lt;code&gt;export -f __vsc_prompt_cmd_original&lt;/code&gt; 导出函数，
让子进程继承。但这条路走不通，有两个硬性障碍。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;障碍 1：时序不对——函数在 &lt;code&gt;.bashrc&lt;/code&gt; 之后才定义&lt;a href=&quot;#障碍-1时序不对函数在-bashrc-之后才定义&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;VS Code 的 shell 集成脚本 &lt;code&gt;shellIntegration-bash.sh&lt;/code&gt; 的执行顺序如下：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;① shellIntegration-bash.sh 开始执行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;② . ~/.bashrc                               ← .bashrc 在这里运行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;③ 定义 __vsc_prompt_cmd_original 等函数       ← 函数此时还不存在！&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;④ PROMPT_COMMAND=__vsc_prompt_cmd_original&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;对应源码（&lt;code&gt;shellIntegration-bash.sh&lt;/code&gt;）：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 第 ② 步：先执行 .bashrc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; [ &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$VSCODE_INJECTION&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;1&quot;&lt;/span&gt;&lt;span&gt; ]; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [ &lt;/span&gt;&lt;span&gt;-z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$VSCODE_SHELL_LOGIN&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; ]; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [ &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; ~/.bashrc ]; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bashrc&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;# ← .bashrc 在此执行&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# ... 中间定义了大量 __vsc_* 函数 ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 第 ③ 步：函数在 .bashrc 之后才定义&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;__vsc_prompt_cmd_original&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;__vsc_status&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;$?&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;builtin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;local&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;__vsc_restore_exit_code&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;__vsc_status&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;__vsc_original_prompt_command&lt;/span&gt;&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;span&gt;do&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;eval&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:-&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;done&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;__vsc_precmd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 第 ④ 步：设置 PROMPT_COMMAND&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;__vsc_original_prompt_command&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;PROMPT_COMMAND&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:-&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [[ &lt;/span&gt;&lt;span&gt;-n&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;__vsc_original_prompt_command&lt;/span&gt;&lt;/span&gt;&lt;span&gt;:-&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; ... ]]; &lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;PROMPT_COMMAND&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;__vsc_prompt_cmd_original&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;.bashrc&lt;/code&gt; 运行时 &lt;code&gt;__vsc_prompt_cmd_original&lt;/code&gt; &lt;strong&gt;尚未定义&lt;/strong&gt;，&lt;code&gt;export -f&lt;/code&gt; 无法导出不存在的函数。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;障碍 2：依赖链太深——不是导出一个函数就能解决的&lt;a href=&quot;#障碍-2依赖链太深不是导出一个函数就能解决的&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;__vsc_prompt_cmd_original&lt;/code&gt; 并非独立运行，它依赖一整个函数和变量体系（共 20+ 个函数、10+ 个全局变量）：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;__vsc_prompt_cmd_original&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── __vsc_restore_exit_code&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── __vsc_precmd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     ├── __vsc_command_complete&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     ├── __vsc_update_cwd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     │     └── __vsc_escape_value / __vsc_escape_value_fast&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     ├── __vsc_report_prompt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     ├── __vsc_update_prompt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     │     ├── __vsc_prompt_start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     │     ├── __vsc_prompt_end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     │     ├── __vsc_continuation_start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     │     └── __vsc_continuation_end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│     └── __vsc_update_env&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│           └── __updateEnvCache / __updateEnvCacheAA&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└── 变量: __vsc_status, __vsc_nonce, __vsc_original_prompt_command,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;__vsc_in_command_execution, __vsc_current_command,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;__vsc_is_windows, __vsc_history_verify, __vsc_first_prompt, ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;即使解决了时序问题，也需要 &lt;code&gt;export -f&lt;/code&gt; 导出全部 20+ 个函数并 &lt;code&gt;export&lt;/code&gt; 全部变量。
而且这些内部实现随 VS Code 版本更新随时可能变化，维护成本极高。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;结论&lt;a href=&quot;#结论&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;export -f&lt;/code&gt; 方案不可行。正确做法是避免子进程的产生（&lt;code&gt;shell-hook&lt;/code&gt; + 禁用 Python 扩展自动激活），
辅以 &lt;code&gt;PROMPT_COMMAND&lt;/code&gt; 兜底清理。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;验证&lt;a href=&quot;#验证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;修改完成后重新打开 VS Code 终端，应该看到：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;(nodebb)&lt;/code&gt; 前缀正常显示（pixi 环境已激活）&lt;/li&gt;
&lt;li&gt;没有 &lt;code&gt;__vsc_prompt_cmd_original: command not found&lt;/code&gt; 错误&lt;/li&gt;
&lt;li&gt;终端行号旁的命令成功/失败图标正常工作（VS Code 集成保留）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>公费医疗报销&amp;过敏与腰疼治疗</title><link>https://fomalhaut647.com/posts/reimbursement-and-treatment/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/reimbursement-and-treatment/</guid><description>全网最全北大学生公费医疗报销&amp;过敏与腰疼治疗攻略</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我对尘螨过敏，大量调研后决定去协和做脱敏治疗。为了报销费用，也研究了很多公费医疗的相关信息。此外之前多次在校医院和三院看腰疼的病。于是我写了这篇攻略，希望能帮到正在阅读的你。&lt;/p&gt;
&lt;p&gt;第一部分讲所有你需要知道的公费医疗报销知识，第二部分讲尘螨过敏&amp;amp;治疗，第三部分是腰疼&amp;amp;治疗。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;镇楼&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;报销凭据和报销账单。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1206&quot; height=&quot;2622&quot; src=&quot;/_astro/reimbursement-and-treatment_1.DDhIdsqc_ZT5yA0.webp&quot; srcset=&quot;/_astro/reimbursement-and-treatment_1.DDhIdsqc_ZiY1Uq.webp 640w, /_astro/reimbursement-and-treatment_1.DDhIdsqc_11zM9s.webp 750w, /_astro/reimbursement-and-treatment_1.DDhIdsqc_ZOBrtj.webp 828w, /_astro/reimbursement-and-treatment_1.DDhIdsqc_Zrl2xO.webp 1080w, /_astro/reimbursement-and-treatment_1.DDhIdsqc_ZT5yA0.webp 1206w&quot; /&gt;&lt;/p&gt;
&lt;section&gt;&lt;h1&gt;公费医疗&lt;a href=&quot;#公费医疗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;公费医疗不是医保&lt;a href=&quot;#公费医疗不是医保&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;公费医疗报销和医保是不同的东西，北大学生没有医保，只有公费医疗报销。公费医疗报销指学生在指定医院的指定科室看病开药接受治疗，并且满足报销条件，可以报销 90% 左右的金额。校医院预约挂号平台是微信服务号 “北京大学医院服务平台”（公费医疗报销室也在这里预约）。&lt;/p&gt;&lt;p&gt;下文以 &lt;strong&gt;转诊医院&lt;/strong&gt; 指代要转诊的医院。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;就诊 &amp;amp; 报销流程&lt;a href=&quot;#就诊--报销流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;去校医院看病，并开转诊单&lt;/li&gt;
&lt;li&gt;去转诊医院看病&lt;/li&gt;
&lt;li&gt;预约公费医疗报销室，在预约时段拿着校园卡、转诊单、发票去报销室取号，然后排队等待提交报销材料&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;实用技巧&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;急诊不需要开转诊单，直接去报销即可。&lt;/li&gt;
&lt;li&gt;如果转诊医院是三院，可以去门户的 “三院门诊便捷报销” 签署协议，然后不需要去报销室，报销款会自动打进农行卡里。&lt;/li&gt;
&lt;li&gt;医学部的同学去三院看病不需要转诊单。&lt;/li&gt;
&lt;li&gt;在报销室提交材料时工作人员会把转诊单一并收走，因此如果你有多笔费用要用同一份转诊单报销，需要等所有病都看完了，凭据齐全了再一并提交。&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;怎么开出转诊单&lt;a href=&quot;#怎么开出转诊单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;转诊医院在名单上：例如协和医院不在名单上，报销会麻烦不少，后面会讲名单外的怎么报销&lt;/li&gt;
&lt;li&gt;转诊科室在名单上：例如三院最全，大部分科室都在名单上，但部分其他医院只有几个科室在名单上&lt;/li&gt;
&lt;li&gt;满足指定转诊条件：例如三院最宽松，绝大部分的科室没有额外条件，可以直接转诊，但有的医院只有院士才有资格转诊&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;关键细节&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;挂号费必须低于 200。例如三院的特需、国疗均不能报销。&lt;/li&gt;
&lt;li&gt;理论上校医院门诊只能开对应科室的转诊单，急诊不能开转诊单。比如想看三院皮肤科就要去校医院皮肤科看病，让皮肤科医生开转诊单（皮肤科医生出了名的刁钻，很可能不愿意开转诊单）。实际上医生有权限开其他科室的转诊单，只是医院要求医生不要开，所以如果能说服医生，急诊也能开皮肤科转诊单。&lt;/li&gt;
&lt;li&gt;转诊单的有效期是一个月，从开出算起，在转诊医院的就医日期必须在有效期内才能报销。很多医院的号需要提前一周抢，因此如果确定要转诊，可以在开转诊单之前就挂转诊医院的号，只要就医日期在开出转诊单之后即可。&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;转诊医院不在名单上怎么办&lt;a href=&quot;#转诊医院不在名单上怎么办&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;只有一条途径，去三院中转一次&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;去校医院开转诊到三院的转诊单&lt;/li&gt;
&lt;li&gt;去三院开转诊到转诊医院的转诊单&lt;/li&gt;
&lt;li&gt;去转诊医院看病之后，拿着两份转诊单和发票和校园卡去报销室报销&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;补充&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;这个方法需要额外去一趟三院，最终提交材料时需要多提交一份三院开的转诊单。&lt;/li&gt;
&lt;li&gt;三院的科室可以开不同科室的转诊单。例如我去协和变态反应科看病的转诊单是三院皮肤科开的。&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;尘螨过敏&amp;amp;治疗&lt;a href=&quot;#尘螨过敏治疗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我从小就对尘螨过敏，常年过敏性鼻炎，小学时做过舌下滴服脱敏治疗，缓解了几年，但之后又逐渐加重，高中时手指出现湿疹，还得了荨麻疹，空军总医院（以下简称 “空总”）的医生说这些都是过敏导致的。荨麻疹至今未痊愈，需要定期服用抗过敏药。湿疹则在北京时痊愈，回南方就复发。&lt;/p&gt;&lt;p&gt;我在校医院皮肤科、校医院呼吸科、校医院耳鼻喉科、三院皮肤科、三院耳鼻喉科、空总皮肤科就诊过。校医院的医生水平相当一般，略去不谈。三院和空总的医生都认为主要有 3 种治疗方法：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;第一种就是我之前几年一直在用的常年服用抗过敏药，好处是治疗简单，每天或每几天吃药即可，坏处是无法根治，而且病情严重时吃药压不住，仍然会有症状&lt;/li&gt;
&lt;li&gt;第二种是单抗注射治疗，定期（几周一次）去医院打针，好处是几周治疗一次即可，并且效果较好，坏处也是无法根治。例如圆柏等过敏的单抗治疗一般两周一针或四周一针&lt;/li&gt;
&lt;li&gt;第三种是脱敏治疗，它又分舌下滴服和针剂注射两种。我小时候做的是舌下滴服，前 2 年每天在舌根滴药（味道甜甜的，需要用冰箱保存），治疗后几年内不会过敏（具体时长因人而异，我大概持续了 3 年）；另一种是我现在正在接受的注射治疗，前 4 个月每周打一针，之后每一个半月打一针，总疗程 3 年，我用的药是安脱达（进口脱敏针剂），其他药的疗程可能不同。好处是完成治疗后几年内不过敏，坏处是治疗期比较麻烦，而且也不能终生生效。安脱达的治疗价格是每个月几百元。除了安脱达之外，中国唯一一款国产脱敏针剂是协和生产的，没有正式名字，一般就叫做 “协和脱敏针”，一周打两针，总疗程 3 年；圆柏的脱敏针也是一周两针（可能是同一种针剂）&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Info&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;北大一院疼痛科似乎有专门治疗过敏性鼻炎的方法，一季治疗一次。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最终我选了针剂脱敏治疗。三院和空总都不能进行脱敏治疗，空总的医生说北京的脱敏药都是从协和分发出去的，建议我去协和接受治疗，于是我就开始在协和接受脱敏治疗了。前 4 个月过敏症状不会缓解，仍然需要服用抗过敏药，进入一个半月打一针的持续期后，过敏症状应该就能大幅缓解了，届时我再发一篇博客说明情况。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;全流程&lt;a href=&quot;#全流程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;上大学之后，我先去校医院皮肤科找刘慧清医生看病，她说只能定期服用抗过敏药（实际上根本就不是这样），让我定期来复查开抗过敏药。与此同时她还让我不要找对门于苇医生看病，让我不要挂号直接来诊室加号。有一次我挂错号挂成了于苇的号，但是还是找她看的病，她竟然在当天下午打电话给我把我批了一通，大概的意思是她帮于医生做嫁衣……树洞上还有很多关于校医院皮肤科的负面评价，总之这两位都比较难评，尽量不要找她们看病。&lt;/p&gt;&lt;p&gt;然后我去三院和空总看湿疹、荨麻疹，医生说我的湿疹、荨麻疹、过敏性鼻炎等疾病都是对粉尘螨过敏引起的，并且说治疗方法大体可以分成抑制和脱敏两种。抑制就是定期服抗过敏药或打单抗治疗针，需要长期治疗；而脱敏可以在完成治疗后几年内不过敏复发，北京的脱敏药都是从协和分发出来的，于是我最后选择去协和做脱敏治疗，科室是 “变态反应科”。&lt;/p&gt;&lt;p&gt;最终的结果是报销了 800+ 协和治疗费 &amp;amp; 100+ 挂号费，2700+ 的脱敏药物（能使用四个月左右）全自费，早知只能报这么一点就不折腾了……&lt;/p&gt;&lt;p&gt;不过还是把流程记录下来，以供参考&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;确定去协和变态反应科看病&lt;/li&gt;
&lt;li&gt;发现校医院没有变态反应科，而且协和不在报销名单上，在报销室问到可以去三院中转&lt;/li&gt;
&lt;li&gt;在皮肤科找于苇医生开转诊到三院皮肤科的转诊单&lt;/li&gt;
&lt;li&gt;去三院皮肤科开出去协和变态反应科的转诊单&lt;/li&gt;
&lt;li&gt;去协和看病，做初步检查，医生说要停抗过敏药三天后再来做其他检查&lt;/li&gt;
&lt;li&gt;三天后复诊，确定对粉尘螨过敏，开药做脱敏治疗&lt;/li&gt;
&lt;li&gt;收集所有在协和产生的发票&lt;/li&gt;
&lt;li&gt;带校园卡到报销室提交发票和两份转诊单&lt;/li&gt;
&lt;li&gt;两周后收到报销款&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;实际上我还在内科急诊找赵菁医生开了去三院变态反应科、同仁医院耳鼻喉科的转诊单，在耳鼻喉科找张秋颖医生开了去三院耳鼻喉科的转诊单。我抢到的最早的号是三院皮肤科，于是我先去了三院皮肤科，医生直接开了转诊到协和变态反应科的转诊单，于是这 3 张转诊单我最后都没用。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;腰疼&amp;amp;治疗&lt;a href=&quot;#腰疼治疗&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;我从高三开始经常腰疼，久坐之后更严重。我多次在校医院不同科室治疗，都误诊且治疗方案无效，最后在三院骨科才找到有效的治疗方案。&lt;/p&gt;&lt;p&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;我调研发现三院骨科很强，于是决定去三院骨科看病。我先在校医院外科急诊开转诊单，那位医生也认为是腰肌劳损，不过还是开了转诊单。我抢不到三院骨科普通门诊，只好挂了特需号，没法报销，大悲。医生听了我的描述后，简单扫了一眼核磁共振的片子，然后按了我髂骨附近的几个地方问我痛不痛，我说每个地方都很痛。然后他就让我平时自己沿着髂骨附近按一按，哪里痛按哪里，多揉揉，揉出淤血就好了，并象征性开了点药。整个流程就几分钟，我追问后他才说这既不是腰间盘突出也不是腰肌劳损，而是 &lt;strong&gt;神经末梢炎症&lt;/strong&gt;，腰肌的一端连在髂骨附近，我那里的神经末梢有炎症，但由于腰肌一端也在这，于是身体以为是腰肌痛，于是我感受到腰痛，实际上症结在腰下面的髂骨附近而不是腰。我按照他的方法平时没事就按一按，竟然真的按出淤血了，几天之后竟然真的大幅缓解了。&lt;/p&gt;&lt;p&gt;现在我很少腰痛，就算复发，自己按一按就好了。只能说不要信任校医院，感冒等小病就算了，疑难杂症千万不要在校医院看病。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>垂梯上下行按钮反向</title><link>https://fomalhaut647.com/posts/elevator/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/elevator/</guid><description>设计师是倒吊人吗</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是哪个大聪明设计的垂梯，上行按钮在下面，下行按钮在上面&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1084&quot; height=&quot;1448&quot; src=&quot;/_astro/elevator_1.BxHVhbfx_2wgA18.webp&quot; srcset=&quot;/_astro/elevator_1.BxHVhbfx_6F37w.webp 640w, /_astro/elevator_1.BxHVhbfx_ZtyXn9.webp 750w, /_astro/elevator_1.BxHVhbfx_Zz5fek.webp 828w, /_astro/elevator_1.BxHVhbfx_1PPsoN.webp 1080w, /_astro/elevator_1.BxHVhbfx_2wgA18.webp 1084w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>何意味是什么意思</title><link>https://fomalhaut647.com/posts/make-friend/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/make-friend/</guid><description>将何意味添加到备注</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;936&quot; height=&quot;1336&quot; src=&quot;/_astro/make-friend_0.DYNrN3jw_1EPi40.webp&quot; srcset=&quot;/_astro/make-friend_0.DYNrN3jw_Z1qb8CB.webp 640w, /_astro/make-friend_0.DYNrN3jw_Z27U2N4.webp 750w, /_astro/make-friend_0.DYNrN3jw_Z2trJ4E.webp 828w, /_astro/make-friend_0.DYNrN3jw_1EPi40.webp 936w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;848&quot; height=&quot;2004&quot; src=&quot;/_astro/make-friend_1.CCt896tf_1h1FcH.webp&quot; srcset=&quot;/_astro/make-friend_1.CCt896tf_2sl7nb.webp 640w, /_astro/make-friend_1.CCt896tf_Z1fVLnR.webp 750w, /_astro/make-friend_1.CCt896tf_1pckUn.webp 828w, /_astro/make-friend_1.CCt896tf_1h1FcH.webp 848w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;2240&quot; src=&quot;/_astro/make-friend_2.CEX2Pw53_H0cIr.webp&quot; srcset=&quot;/_astro/make-friend_2.CEX2Pw53_1VNbo0.webp 640w, /_astro/make-friend_2.CEX2Pw53_2vK6PU.webp 750w, /_astro/make-friend_2.CEX2Pw53_1CzPus.webp 828w, /_astro/make-friend_2.CEX2Pw53_H0cIr.webp 940w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;832&quot; height=&quot;4440&quot; src=&quot;/_astro/make-friend_3.fci8Z4U__tD0Gu.webp&quot; srcset=&quot;/_astro/make-friend_3.fci8Z4U__Z10uJQg.webp 640w, /_astro/make-friend_3.fci8Z4U__2nwFMb.webp 750w, /_astro/make-friend_3.fci8Z4U__Z27ge3D.webp 828w, /_astro/make-friend_3.fci8Z4U__tD0Gu.webp 832w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>Claude Code buddy</title><link>https://fomalhaut647.com/posts/buddy/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/buddy/</guid><description>咕咕嘎嘎，咕咕嘎嘎？咕咕嘎嘎！</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;Coding 版高松灯&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;814&quot; height=&quot;1268&quot; src=&quot;/_astro/buddy.Dz6CHyy3_XLBAU.webp&quot; srcset=&quot;/_astro/buddy.Dz6CHyy3_29IFht.webp 640w, /_astro/buddy.Dz6CHyy3_Z1niu38.webp 750w, /_astro/buddy.Dz6CHyy3_XLBAU.webp 814w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>Chrome 自动把 HTTP 升级为 HTTPS</title><link>https://fomalhaut647.com/posts/chrome-http/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/chrome-http/</guid><description>Chrome 的离谱特性，在部分网站即使显式输入 HTTP，也会升级为 HTTPS</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;浪费我几小时 debug&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我原本给我的网站开启了边缘加速服务，所以没在服务器上部署 SSL 证书。之后想关掉边缘加速服务器直连服务器，在部署证书之前决定先测试一下网站是否在正常运行，但一直无法通过 HTTP 访问网站，无论是用 IP 还是域名。最后发现 Chrome 会自动把 HTTP 升级为 HTTPS，换成 Safari 就能正常访问了……&lt;/p&gt;
&lt;p&gt;ChatGPT 给了 2 种可能的原因，排查发现都不是。Anyway 网站正常运行就行，懒得管实际原因了，恼&lt;/p&gt;</content:encoded></item><item><title>跨机器同步数据</title><link>https://fomalhaut647.com/posts/dotfiles/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/dotfiles/</guid><description>用 GitHub + GNU Stow 跨机器同步 dotfiles，实现零冗余、按需部署的配置管理方案</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><content:encoded>
&lt;blockquote&gt;&lt;p&gt;本文介绍如何用 &lt;strong&gt;GitHub + GNU Stow&lt;/strong&gt; 跨机器同步配置文件&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;由于我有多台服务器，并且经常重装服务器，于是怎么高效地存储并同步 &lt;code&gt;.bashrc&lt;/code&gt;、Claude Code skills 等数据变得至关重要。&lt;/p&gt;
&lt;p&gt;我最初的想法是维护一个 GitHub repo，在每台机器上部署该 repo，然后用软链接链接到该 repo。缺点是每次需要手动链接，写成脚本也不方便控制链接哪一部分，于是我找到了 GNU Stow，它可以用一行命令快速创建链接，例如 &lt;code&gt;stow -t ~ bash git claude tmux&lt;/code&gt; 就可以一次性配置好 &lt;code&gt;.bashrc&lt;/code&gt;、&lt;code&gt;.gitconfig&lt;/code&gt; 等指定的数据，有需要的话再加 &lt;code&gt;stow -t ~ proxy&lt;/code&gt; 可以把代理配置一起部署了。&lt;/p&gt;
&lt;p&gt;示例 repo 在这里：&lt;/p&gt;
&lt;a href=&quot;https://github.com/Fomalhaut647/dotfiles-demo&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Fomalhaut647&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;dotfiles-demo&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;
&lt;section&gt;&lt;h2&gt;为什么选这套方案&lt;a href=&quot;#为什么选这套方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;零冗余&lt;/strong&gt;：配置文件只有一份，修改后 &lt;code&gt;git push&lt;/code&gt; 即可同步到所有机器，不存在多份拷贝不一致的问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按需部署&lt;/strong&gt;：服务器只装服务器需要的包，本地机器只装本地需要的包，互不干扰&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;易于迁移&lt;/strong&gt;：新机器 &lt;code&gt;git clone&lt;/code&gt; + &lt;code&gt;stow&lt;/code&gt; 两条命令即可还原全部配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史可追溯&lt;/strong&gt;：每次改动都有 commit 记录，可以随时回滚&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 工具配置同步&lt;/strong&gt;：Claude Code 的用户级 &lt;code&gt;CLAUDE.md&lt;/code&gt;、OpenClaw skills 等配置也纳入仓库统一管理，在任意机器上都能获得一致的 AI 辅助体验&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;思路&lt;a href=&quot;#思路&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;GitHub repo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├─ git clone ──▶ 机器 A（本地 Mac）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├─ git clone ──▶ 机器 B（远程 Ubuntu 服务器）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└─ git clone ──▶ 机器 C（...）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;所有机器共享同一份配置，通过 &lt;code&gt;git pull / push&lt;/code&gt; 同步变更；用 &lt;code&gt;stow&lt;/code&gt; 把仓库里的配置文件以符号链接的形式部署到 &lt;code&gt;~&lt;/code&gt;；每台机器只 &lt;code&gt;stow&lt;/code&gt; 自己需要的包，不需要的跳过即可。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;仓库结构&lt;a href=&quot;#仓库结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;每个目录是一个独立的 &lt;strong&gt;stow 包&lt;/strong&gt;，可以按需单独部署：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;dotfiles/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── bash/               # Bash 配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .bash_aliases   #   通用 alias 和函数（跨机器同步）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── zsh/                # Zsh 配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── .zshrc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .zsh_aliases&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── git/                # Git 配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── .gitconfig&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .gitignore_global&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── ssh/                # SSH 客户端配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .ssh/config&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── tmux/               # tmux 配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .tmux.conf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── proxy/              # 代理开关脚本&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .bash_proxy&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── claude/             # Claude Code 配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── .claude/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│       ├── CLAUDE.md&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│       ├── settings.json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│       └── commands/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── .bashrc             # 仅备份，不通过 stow 部署&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;显示更多&lt;/span&gt;&lt;span&gt;显示更少&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;为什么不同步 &lt;code&gt;.bashrc&lt;/code&gt;？&lt;a href=&quot;#为什么不同步-bashrc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;.bashrc&lt;/code&gt; 包含大量机器相关的设置（路径、环境变量等），各机器差异大，强行统一反而麻烦。因此：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;同步&lt;/strong&gt;：&lt;code&gt;bash/.bash_aliases&lt;/code&gt;——通用 alias 和函数，所有机器共享&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不同步&lt;/strong&gt;：&lt;code&gt;.bashrc&lt;/code&gt;——机器自带，各自管理；仓库里保留一份 Ubuntu 默认 &lt;code&gt;.bashrc&lt;/code&gt; 作参考备份&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;.bashrc&lt;/code&gt; 里只需保留这几行来加载 aliases：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;&lt;span&gt; [ &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;span&gt; ~/.bash_aliases ]; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;then&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/.bash_aliases&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Ubuntu 默认 &lt;code&gt;.bashrc&lt;/code&gt; 已经包含这一段，无需额外处理。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;使用方法&lt;a href=&quot;#使用方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 安装 stow&lt;a href=&quot;#1-安装-stow&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Ubuntu / Debian&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stow&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# macOS&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;brew&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stow&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 克隆仓库&lt;a href=&quot;#2-克隆仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;git@github.com:&amp;lt;your-username&amp;gt;/dotfiles&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/dotfiles&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/dotfiles&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 部署配置&lt;a href=&quot;#3-部署配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 按需选择要部署的包，例如：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;stow&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tmux&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 部署全部&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;stow&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;zsh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tmux&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;proxy&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;claude&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;stow&lt;/code&gt; 会在 &lt;code&gt;~&lt;/code&gt; 下创建符号链接，指向仓库中对应的文件。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 取消部署&lt;a href=&quot;#4-取消部署&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;stow&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-D&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bash&lt;/span&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;# 删除 bash 包的符号链接&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;日常同步工作流&lt;a href=&quot;#日常同步工作流&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 在任意机器上修改配置后，提交并推送&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/dotfiles&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-A&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;update: ...&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 在另一台机器上拉取最新配置&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;~/dotfiles&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 符号链接已存在，配置立即生效，无需重新 stow&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Stow 注意事项&lt;a href=&quot;#stow-注意事项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;冲突规则&lt;a href=&quot;#冲突规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;stow 部署时，若目标路径&lt;strong&gt;不存在&lt;/strong&gt;或&lt;strong&gt;已是指向同一文件的符号链接&lt;/strong&gt;，则正常创建链接；若目标路径&lt;strong&gt;已存在且内容不同&lt;/strong&gt;，则报错退出，不会覆盖。&lt;/p&gt;&lt;p&gt;这套方案从设计上就规避了冲突：仓库只同步那些在新机器上本来就不存在的文件（如 &lt;code&gt;.bash_aliases&lt;/code&gt;）；而各机器上本已存在的文件（如 &lt;code&gt;.bashrc&lt;/code&gt;）则不纳入同步，从根本上避免了冲突。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;目录折叠原则&lt;a href=&quot;#目录折叠原则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;stow 采用&lt;strong&gt;最少链接原则&lt;/strong&gt;：它会尽量在最高层级创建链接，而不是逐个链接每个文件。对于带有多层目录的文件，stow 会依次检查各层目录是否存在，在第一个不存在的层级创建链接。&lt;/p&gt;&lt;p&gt;以 &lt;code&gt;claude/.claude/commands/openclaw.md&lt;/code&gt; 为例：&lt;/p&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;code&gt;~/.claude&lt;/code&gt;&lt;/th&gt;&lt;th&gt;&lt;code&gt;~/.claude/commands&lt;/code&gt;&lt;/th&gt;&lt;th&gt;stow 的行为&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;不存在&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;链接整个 &lt;code&gt;.claude/&lt;/code&gt; 目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;已存在&lt;/td&gt;&lt;td&gt;不存在&lt;/td&gt;&lt;td&gt;链接整个 &lt;code&gt;commands/&lt;/code&gt; 目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;已存在&lt;/td&gt;&lt;td&gt;已存在&lt;/td&gt;&lt;td&gt;仅链接 &lt;code&gt;openclaw.md&lt;/code&gt; 文件&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;这对 &lt;code&gt;claude&lt;/code&gt; 包有两点影响：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;应在安装 Claude Code 之后再部署 &lt;code&gt;claude&lt;/code&gt; 包&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Claude Code 安装时会创建 &lt;code&gt;~/.claude/&lt;/code&gt; 并写入自己的运行时文件（对话记录等）。若提前 &lt;code&gt;stow claude&lt;/code&gt;，&lt;code&gt;~/.claude/&lt;/code&gt; 还不存在，stow 会将整个目录链接到仓库，导致 Claude Code 的运行时文件也被写入仓库。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;commands/&lt;/code&gt; 目录应在部署前不存在&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;当 &lt;code&gt;commands/&lt;/code&gt; 不存在时，stow 会将整个目录链接到仓库，后续在仓库中新增的 command 文件会自动在所有机器上生效。若 &lt;code&gt;commands/&lt;/code&gt; 已存在（例如 Claude Code 自行创建），stow 只能逐个链接已有文件，新增文件不会自动同步——此时需先删除 &lt;code&gt;~/.claude/commands/&lt;/code&gt;，再重新 &lt;code&gt;stow claude&lt;/code&gt;。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>何忆卫</title><link>https://fomalhaut647.com/posts/stronghold-protocol/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/stronghold-protocol/</guid><description>领头的羊、善战的狼、哪来的区</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从头 C 到尾，队友漏的 6 金复仇者当小兵杀了。不过打隐藏时忘了阿罗玛是奥术，换成四爷之后奥术没激活（）&lt;/p&gt;
&lt;p&gt;这是我区了那么多把应得的😭&lt;/p&gt;
&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2232&quot; src=&quot;/_astro/stronghold-protocol_1.Cw75w4Av_ZidAzy.webp&quot; srcset=&quot;/_astro/stronghold-protocol_1.Cw75w4Av_ZCM3qp.webp 640w, /_astro/stronghold-protocol_1.Cw75w4Av_1f7abQ.webp 750w, /_astro/stronghold-protocol_1.Cw75w4Av_2iXyAq.webp 828w, /_astro/stronghold-protocol_1.Cw75w4Av_Z16lxi5.webp 1080w, /_astro/stronghold-protocol_1.Cw75w4Av_mgpS2.webp 1280w, /_astro/stronghold-protocol_1.Cw75w4Av_ZD5EmP.webp 1668w, /_astro/stronghold-protocol_1.Cw75w4Av_1KzfF.webp 2048w, /_astro/stronghold-protocol_1.Cw75w4Av_260L6g.webp 2560w, /_astro/stronghold-protocol_1.Cw75w4Av_ZidAzy.webp 3912w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>午夜凶铃？</title><link>https://fomalhaut647.com/posts/ring/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/ring/</guid><description>已经……没有人类了</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;1016&quot; height=&quot;1528&quot; src=&quot;/_astro/ring_0.DK90faoc_Xe4qy.webp&quot; srcset=&quot;/_astro/ring_0.DK90faoc_2wPYvL.webp 640w, /_astro/ring_0.DK90faoc_Z14ANAD.webp 750w, /_astro/ring_0.DK90faoc_1wTN2s.webp 828w, /_astro/ring_0.DK90faoc_Xe4qy.webp 1016w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;840&quot; height=&quot;2236&quot; src=&quot;/_astro/ring_1.CbM1vcgr_1mKEOd.webp&quot; srcset=&quot;/_astro/ring_1.CbM1vcgr_wDHuP.webp 640w, /_astro/ring_1.CbM1vcgr_Z1lq2kO.webp 750w, /_astro/ring_1.CbM1vcgr_EEIA1.webp 828w, /_astro/ring_1.CbM1vcgr_1mKEOd.webp 840w&quot; /&gt;
&lt;img loading=&quot;lazy&quot; width=&quot;848&quot; height=&quot;2204&quot; src=&quot;/_astro/ring_2.rwZpItLB_26rONw.webp&quot; srcset=&quot;/_astro/ring_2.rwZpItLB_J6QLI.webp 640w, /_astro/ring_2.rwZpItLB_4sxm.webp 750w, /_astro/ring_2.rwZpItLB_Z1gI8Iz.webp 828w, /_astro/ring_2.rwZpItLB_26rONw.webp 848w&quot; /&gt;&lt;/p&gt;</content:encoded></item><item><title>订阅 AI 服务的方法</title><link>https://fomalhaut647.com/posts/ai-subscription-methods/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/ai-subscription-methods/</guid><description>本文介绍 5 种订阅 ChatGPT Claude 等 AI 服务的方法，分别适用于有国外银行卡、只有苹果设备、可配合 PayPal、只有安卓手机，或选择代购的平台用户</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;本文将讲解 5 种订阅 ChatGPT Claude 等 AI 服务的方法。默认读者会 &lt;a href=&quot;https://fomalhaut647.com/posts/proxy/&quot;&gt;科学上网&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;方法一：网页端订阅&lt;a href=&quot;#方法一网页端订阅&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;需求：一张国外银行卡或国外 PayPal&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;我在 🇦🇺 旅游时办了一张 WestPac，也许后续会写一篇博客讲如何办国外银行卡&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;WestPac&quot; loading=&quot;lazy&quot; width=&quot;1206&quot; height=&quot;1643&quot; src=&quot;/_astro/subscribe-ai_1.CeeV1vQQ_Z1tuPMh.webp&quot; srcset=&quot;/_astro/subscribe-ai_1.CeeV1vQQ_2igeey.webp 640w, /_astro/subscribe-ai_1.CeeV1vQQ_Z1sacIf.webp 750w, /_astro/subscribe-ai_1.CeeV1vQQ_Z2fma5d.webp 828w, /_astro/subscribe-ai_1.CeeV1vQQ_Z1Qvwk5.webp 1080w, /_astro/subscribe-ai_1.CeeV1vQQ_Z1tuPMh.webp 1206w&quot; /&gt;&lt;figcaption&gt;WestPac&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;不多赘述。需要注意的是，IP 位置最好和发卡地区保持一致，否则可能会被拒付&lt;/p&gt;&lt;p&gt;另外有传言说现在 OpenAI 可以穿透 PayPal 看到 PayPal 绑定的卡的发卡地区，于是拒掉绑定了中国卡的外国 PayPal，真假不明&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;img alt=&quot;ChatGPT&quot; loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2058&quot; src=&quot;/_astro/subscribe-ai_2.v-6T81CD_Z2sh3V5.webp&quot; srcset=&quot;/_astro/subscribe-ai_2.v-6T81CD_Z1osfAT.webp 640w, /_astro/subscribe-ai_2.v-6T81CD_Z1OqSYo.webp 750w, /_astro/subscribe-ai_2.v-6T81CD_1nmv3V.webp 828w, /_astro/subscribe-ai_2.v-6T81CD_ZJTiMQ.webp 1080w, /_astro/subscribe-ai_2.v-6T81CD_1YmBvG.webp 1280w, /_astro/subscribe-ai_2.v-6T81CD_1VwPOK.webp 1668w, /_astro/subscribe-ai_2.v-6T81CD_Z10ukTh.webp 2048w, /_astro/subscribe-ai_2.v-6T81CD_1YjOl7.webp 2560w, /_astro/subscribe-ai_2.v-6T81CD_Z2sh3V5.webp 3912w&quot; /&gt;&lt;figcaption&gt;ChatGPT&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure&gt;&lt;img alt=&quot;ChatGPT&quot; loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2058&quot; src=&quot;/_astro/subscribe-ai_3.BOmwczLx_1m3NYP.webp&quot; srcset=&quot;/_astro/subscribe-ai_3.BOmwczLx_w8cRu.webp 640w, /_astro/subscribe-ai_3.BOmwczLx_69yu0.webp 750w, /_astro/subscribe-ai_3.BOmwczLx_Z1LeagB.webp 828w, /_astro/subscribe-ai_3.BOmwczLx_Z20KyFR.webp 1080w, /_astro/subscribe-ai_3.BOmwczLx_IvlCF.webp 1280w, /_astro/subscribe-ai_3.BOmwczLx_FFzVJ.webp 1668w, /_astro/subscribe-ai_3.BOmwczLx_Z2glAMi.webp 2048w, /_astro/subscribe-ai_3.BOmwczLx_Isys6.webp 2560w, /_astro/subscribe-ai_3.BOmwczLx_1m3NYP.webp 3912w&quot; /&gt;&lt;figcaption&gt;ChatGPT&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;方法二：用 App Store 绕过监控&lt;a href=&quot;#方法二用-app-store-绕过监控&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;需求：一部 iPhone / iPad&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;由于 Claude 等服务商会检查支付银行卡的发卡国家，中国银行发的卡大概率会被拒付，所以需要用其他方法来绕过这一限制。Apple Pay 的特殊之处在于，服务商无法穿透查看它绑定的银行卡的发卡地区，而我们又可以在没有国外银行卡和电话卡的条件下给 App Store 充值，因此可以借助 App Store 完成订阅&lt;/p&gt;&lt;p&gt;步骤如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;准备一部 iPhone / iPad&lt;/li&gt;
&lt;li&gt;注册并登录一个外区 Apple Account，建议选择美国免税州，这样可以使用美元支付，而且价格更低&lt;/li&gt;
&lt;li&gt;在支付宝中购买外区苹果礼品卡，并充值到你的 Apple Account（地区切换到境外，搜索 Pockyt Shop）&lt;/li&gt;
&lt;li&gt;下载对应的 App，比如要订阅 Claude 就下载 Claude App，最后进入 App 并订阅&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;值得一提的是，一个 Apple Account 只能绑定一个 ChatGPT 账号，不能解绑，也不能换绑。我之前不知道这个规则，先用我的 Apple Account 帮朋友订阅了 ChatGPT，于是现在没办法给自己订阅了，只好换用网页端订阅，所以本方法只能用 Claude 举例&lt;/p&gt;&lt;p&gt;通过 App Store 或 Google Play 订阅 Claude 的价格比网页端高约 25%，这是因为苹果和谷歌有抽成，Anthropic 把成本转嫁给消费者，因此有条件的话建议通过网页端订阅 Claude&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Claude&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;1272&quot; src=&quot;/_astro/subscribe-ai_4.OFP_xbIt_Z26Myu4.webp&quot; srcset=&quot;/_astro/subscribe-ai_4.OFP_xbIt_ZcV8v6.webp 640w, /_astro/subscribe-ai_4.OFP_xbIt_Z1BO9Pz.webp 750w, /_astro/subscribe-ai_4.OFP_xbIt_1MAL1j.webp 828w, /_astro/subscribe-ai_4.OFP_xbIt_Z26Myu4.webp 1032w&quot; /&gt;&lt;figcaption&gt;Claude&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;方法三：再加上 PayPal&lt;a href=&quot;#方法三再加上-paypal&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;需求：一部 iPhone / iPad &amp;amp; 一个国外电话卡&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;外区 App Store 不能直接绑定中国银行卡，但可以绑定外区 PayPal；而外区 PayPal 又可以绑定中国银行卡。所以我们可以再加一层 PayPal，实现直接用国内银行卡支付，而不需要再购买礼品卡&lt;/p&gt;&lt;p&gt;步骤如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;准备一部 iPhone / iPad 和一张国外电话卡&lt;/li&gt;
&lt;li&gt;注册并登录一个外区 Apple Account，建议选择美国免税州，这样可以使用美元支付，而且价格更低&lt;/li&gt;
&lt;li&gt;打开 App Store，添加付款方式，选择 PayPal，并进入注册环节&lt;/li&gt;
&lt;li&gt;通过 App Store 使用国外电话卡完成注册&lt;/li&gt;
&lt;li&gt;将国内 Visa / Master 卡绑定到 PayPal&lt;/li&gt;
&lt;li&gt;在 iPhone / iPad 上下载对应 App 并订阅&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;注意，最好通过 App Store 直接注册 PayPal。先单独注册 PayPal，再绑定到 Apple Account，有可能触发风控导致绑定失败&lt;/p&gt;&lt;p&gt;订阅费流转过程如下：&lt;/p&gt;&lt;p&gt;Visa / Master 卡 -&amp;gt; PayPal -&amp;gt; App Store -&amp;gt; Claude&lt;/p&gt;&lt;p&gt;这样可以绕开 Claude 的支付限制完成订阅，而且几乎无额外开销&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;PayPal&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;1272&quot; src=&quot;/_astro/subscribe-ai_5.CMNrqIdx_1WWRLV.webp&quot; srcset=&quot;/_astro/subscribe-ai_5.CMNrqIdx_1o8RWI.webp 640w, /_astro/subscribe-ai_5.CMNrqIdx_ZJ8mK.webp 750w, /_astro/subscribe-ai_5.CMNrqIdx_Z1FvljN.webp 828w, /_astro/subscribe-ai_5.CMNrqIdx_1WWRLV.webp 1032w&quot; /&gt;&lt;figcaption&gt;PayPal&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;方法四：Google Play&lt;a href=&quot;#方法四google-play&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;需求：一部安卓机&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;跟 App Store 方法差不多，我没仔细研究过所以一笔带过&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Google Play&quot; loading=&quot;lazy&quot; width=&quot;1216&quot; height=&quot;1500&quot; src=&quot;/_astro/subscribe-ai_6.DmMq483s_Z1uWuhw.webp&quot; srcset=&quot;/_astro/subscribe-ai_6.DmMq483s_Z2l2sEN.webp 640w, /_astro/subscribe-ai_6.DmMq483s_2qcBtw.webp 750w, /_astro/subscribe-ai_6.DmMq483s_Zkuy8o.webp 828w, /_astro/subscribe-ai_6.DmMq483s_1Uzc1L.webp 1080w, /_astro/subscribe-ai_6.DmMq483s_Z1uWuhw.webp 1216w&quot; /&gt;&lt;figcaption&gt;Google Play&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;方法五：代购&lt;a href=&quot;#方法五代购&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;需求：不贪婪的心&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;网上有很多代充平台，闲鱼上也能搜到不少&lt;/p&gt;&lt;p&gt;建议不要找价格低于成本价的。如果要用低价代充，建议用低价买的 Google 账号，这样被封了也不心疼&lt;/p&gt;&lt;p&gt;我的朋友向我推荐这个网站 &lt;a href=&quot;https://aichongzhi.org/&quot; target=&quot;_blank&quot;&gt;爱充值&lt;/a&gt; ，但我没用过，不确定是否可靠&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>代理</title><link>https://fomalhaut647.com/posts/proxy/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/proxy/</guid><description>本文简要介绍代理相关的各种知识</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;纯净度&lt;a href=&quot;#纯净度&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;先介绍如何检测节点的纯净度&lt;/p&gt;&lt;section&gt;&lt;h2&gt;PING 0（不建议使用）&lt;a href=&quot;#ping-0不建议使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2058&quot; src=&quot;/_astro/proxy_1.oydOZ3JI_14iavS.webp&quot; srcset=&quot;/_astro/proxy_1.oydOZ3JI_Zeq5IQ.webp 640w, /_astro/proxy_1.oydOZ3JI_C0kBg.webp 750w, /_astro/proxy_1.oydOZ3JI_ZGoIs7.webp 828w, /_astro/proxy_1.oydOZ3JI_ZjlVjo.webp 1080w, /_astro/proxy_1.oydOZ3JI_dot0n.webp 1280w, /_astro/proxy_1.oydOZ3JI_ZtoUge.webp 1668w, /_astro/proxy_1.oydOZ3JI_1MdUFs.webp 2048w, /_astro/proxy_1.oydOZ3JI_Z2qwHaf.webp 2560w, /_astro/proxy_1.oydOZ3JI_14iavS.webp 3912w&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;网址&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a href=&quot;https://ping0.cc/&quot; target=&quot;_blank&quot;&gt;https://ping0.cc/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这个网站能够查看 IP 位置、IP 类型、风控值、共享人数等信息。&lt;/p&gt;&lt;p&gt;其中，IP 类型最好是家庭宽带；风控值和共享人数通常越小越好。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;近期 Ping0.cc 被曝出非法收集用户数据，不建议继续使用。可改用下文的 IPQS 或其他网站进行查询。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;IPQS&lt;a href=&quot;#ipqs&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img loading=&quot;lazy&quot; width=&quot;3912&quot; height=&quot;2058&quot; src=&quot;/_astro/proxy_2.kbeqyK19_Z1MRL2c.webp&quot; srcset=&quot;/_astro/proxy_2.kbeqyK19_Z1j79ie.webp 640w, /_astro/proxy_2.kbeqyK19_ZrFHW7.webp 750w, /_astro/proxy_2.kbeqyK19_Z1L5M1u.webp 828w, /_astro/proxy_2.kbeqyK19_1SEfVs.webp 1080w, /_astro/proxy_2.kbeqyK19_2qpFge.webp 1280w, /_astro/proxy_2.kbeqyK19_1IBgYC.webp 1668w, /_astro/proxy_2.kbeqyK19_Z14W0RC.webp 2048w, /_astro/proxy_2.kbeqyK19_ZdvuTo.webp 2560w, /_astro/proxy_2.kbeqyK19_Z1MRL2c.webp 3912w&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;网址&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a href=&quot;https://www.ipqualityscore.com/&quot; target=&quot;_blank&quot;&gt;https://www.ipqualityscore.com/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;输入需要查询的 IP 后，可以检测 Fraud Score 等信息，分数同样越小越好。&lt;/p&gt;&lt;p&gt;如果页面不允许查询，可能说明当前节点太脏了。这时可以先关闭代理，切换为直连后再试。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;其他&lt;a href=&quot;#其他&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;另附 2 个网站&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;网址&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a href=&quot;https://scamalytics.com/&quot; target=&quot;_blank&quot;&gt;https://scamalytics.com/&lt;/a&gt;
&lt;a href=&quot;https://www.ip111.cn/&quot; target=&quot;_blank&quot;&gt;https://www.ip111.cn/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;供应商选择&lt;a href=&quot;#供应商选择&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;我现在用的是 &lt;code&gt;TAG&lt;/code&gt;，上面的例子是 &lt;code&gt;TAG&lt;/code&gt; 的 &lt;code&gt;美国家宽 1&lt;/code&gt;&lt;/p&gt;&lt;p&gt;我的 &lt;code&gt;TAG&lt;/code&gt; 邀请码：&lt;code&gt;RNnznB6C&lt;/code&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;服务器代理&lt;a href=&quot;#服务器代理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;如何在国内服务器上使用代理，从而使用 Claude Code 等墙外产品&lt;/p&gt;&lt;section&gt;&lt;h2&gt;流量转发&lt;a href=&quot;#流量转发&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;把服务器上所有的流量先发送到有代理的本地，然后再从本地转发到远程服务商&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;在服务器上的 &lt;code&gt;.bashrc&lt;/code&gt; 里配置如下代码，从而把所有的服务器流量汇集到 7890 端口&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;.bashrc&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HTTP_PROXY&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;http://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HTTPS_PROXY&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;http://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ALL_PROXY&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;socks5://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;http_proxy&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;http://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https_proxy&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;http://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;all_proxy&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;socks5://127.0.0.1:7890&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 不希望走代理的放在 no_proxy 里，例如腾讯云的镜像服务&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NO_PROXY&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;localhost,127.0.0.1,::1,mirrors.tencentyun.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;no_proxy&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;localhost,127.0.0.1,::1,mirrors.tencentyun.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;在本地 &lt;code&gt;.ssh/config&lt;/code&gt; 里配置端口转发，从而把服务器流量发送到本地&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;.ssh/config&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Host&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;server&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;HostName&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;server_name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;User&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ubuntu&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;# 把“本地 HTTP 代理 7890”自动映射到服务器的 7890&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;RemoteForward&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;7890&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;127.0.0.1:7890&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;启用本地代理，这样服务器流量就通过本地代理发送给远程服务商了&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;在服务器上部署代理&lt;a href=&quot;#在服务器上部署代理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这个方法我已经很久没用过了。关于具体实践，以前可以部署并配置 mihomo 内核 &lt;a href=&quot;https://wiki.metacubex.one/&quot; target=&quot;_blank&quot;&gt;https://wiki.metacubex.one/&lt;/a&gt; ，不清楚现在是否可行。但无论如何这个大方法是可行的&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;本地终端 ssh&lt;a href=&quot;#本地终端-ssh&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果目的是在服务器上使用 Claude Code 等服务，还有一个办法是在本地安装 Claude Code，然后在本地终端用 ssh 连接到服务器，让本地 Claude Code 在本地终端编程，这样也可以实现在服务器上使用 Claude Code 的目的，只需要本地有代理即可&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>越狱 Gemini CoT</title><link>https://fomalhaut647.com/posts/gemini-cot/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/gemini-cot/</guid><description>Gemini CoT 被暴露</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;只需要上传一份超大文档就可以 hack 出 Gemini CoT，真是草草又台台啊&lt;/p&gt;
&lt;p&gt;因为提前退出 CoT 所以思考完成后 Gemini 无法退出 CoT，循环输出退出 token，最后被强制 rewind 回上一轮对话了&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;gemini-cot&quot; loading=&quot;lazy&quot; width=&quot;1646&quot; height=&quot;4438&quot; src=&quot;/_astro/gemini-cot_1.DF1Hfctt_ZvXMxy.webp&quot; srcset=&quot;/_astro/gemini-cot_1.DF1Hfctt_Z1MDunS.webp 640w, /_astro/gemini-cot_1.DF1Hfctt_1KPEQf.webp 750w, /_astro/gemini-cot_1.DF1Hfctt_m7w8x.webp 828w, /_astro/gemini-cot_1.DF1Hfctt_1LLRTp.webp 1080w, /_astro/gemini-cot_1.DF1Hfctt_2ekOHE.webp 1280w, /_astro/gemini-cot_1.DF1Hfctt_ZvXMxy.webp 1646w&quot; /&gt;&lt;figcaption&gt;gemini-cot&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;gemini-cot&quot; loading=&quot;lazy&quot; width=&quot;1646&quot; height=&quot;4138&quot; src=&quot;/_astro/gemini-cot_2.DELkyctD_Z2atifO.webp&quot; srcset=&quot;/_astro/gemini-cot_2.DELkyctD_ZaeX4G.webp 640w, /_astro/gemini-cot_2.DELkyctD_Z1ggrQ7.webp 750w, /_astro/gemini-cot_2.DELkyctD_Z1QvWcF.webp 828w, /_astro/gemini-cot_2.DELkyctD_8mOWz.webp 1080w, /_astro/gemini-cot_2.DELkyctD_Z1G5whh.webp 1280w, /_astro/gemini-cot_2.DELkyctD_Z2atifO.webp 1646w&quot; /&gt;&lt;figcaption&gt;gemini-cot&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;</content:encoded></item><item><title>AI 革命</title><link>https://fomalhaut647.com/posts/ai-revolution/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/ai-revolution/</guid><description>AI 革命是第四次工业革命？格局小了</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&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;而人类革命再往上看，也只是 &lt;strong&gt;碳基生命演化史&lt;/strong&gt; 里的后半段。从原始生命，到复杂生命；从低级结构到高级结构；从无脊椎到脊椎，从鱼类到爬行类、鸟类、哺乳类，再到能够思考、叙事、创造工具的人类——这才是更大的历史背景。过去那些被称为“伟大革命”的东西，放到更大尺度上看，仍然只是碳基生命内部的阶段性跃迁&lt;/p&gt;
&lt;p&gt;而 AI 是 &lt;strong&gt;非碳基的智能&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;人类连单次工业革命的影响都无法想象，又如何想象整个工业革命，又如何想象人类革命，又如何想象碳基革命，又如何想象 AI 革命&lt;/p&gt;
&lt;p&gt;考试时前几题都选 C，下一题未必选 C。也许下一题不是选择题而是填空题。也许碳基生命该交卷了&lt;/p&gt;</content:encoded></item><item><title>歧义</title><link>https://fomalhaut647.com/posts/ambiguity/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/ambiguity/</guid><description>收录了部分常见有歧义的表述</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;本文持续收录部分常见有歧义的表述&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;应该&lt;a href=&quot;#应该&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;应该&lt;/code&gt; 可以表示 &lt;code&gt;大概率&lt;/code&gt; 也可以表示 &lt;code&gt;道德上应当&lt;/code&gt;&lt;/p&gt;&lt;p&gt;有时各执己见的两人说的 “应该” “不应该”，一方指的是 “这件事大概率会发生”，另一方指的是 “这件事不符合道德”&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>坐标系</title><link>https://fomalhaut647.com/posts/coordinate-system/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/coordinate-system/</guid><description>定义是表述本质的说明</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;凡想追求真知识的人，都必须检查定义；定义一错，后面的推理会层层放大错误&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;为了说明定义的重要性，请容我讲一个问题：&lt;/p&gt;
&lt;p&gt;小明是一个学生，他和他的同学平时考试总是拿 100 分，但他考相同难度的大考时总是只能拿 90 分。最近一次大考他又拿了 90 分，他的同学拿了 80 分。请问他发挥得怎么样？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;如果与他平时考试的发挥相比，相同难度拿了更低的分数，毫无疑问他是失常发挥&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;但考虑到他每次大考都失常发挥，这似乎又可以认为是正常发挥&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果再把他的同学纳入考虑范围，平时他只是并列第一，这次大考他是没有并列的第一，按排名看反而是超常发挥&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;&lt;p&gt;如此看来，小明同时失常发挥、正常发挥、超常发挥，如同波粒二象性一般 3 种理论上互斥的事件同时发生，这就是坐标系的神奇之处呀&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果能统一所有人认知的坐标系，或许 90% 的争辩都不会发生了&lt;/p&gt;</content:encoded></item><item><title>踏青</title><link>https://fomalhaut647.com/posts/spring-outing/</link><guid isPermaLink="true">https://fomalhaut647.com/posts/spring-outing/</guid><description>来自一个因为周五没课所以清明假白放了而玉玉的客户端</description><pubDate>Fri, 04 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;&lt;p&gt;​花开有时，花谢无期。&lt;br /&gt;
人生无常，人死有终。&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item></channel></rss>