<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>YSY的博客</title><link>https://ysy.fan/</link><description>Recent content on YSY的博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 04 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ysy.fan/index.xml" rel="self" type="application/rss+xml"/><item><title>快速开始</title><link>https://ysy.fan/p/signriver-dlc-hub/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/signriver-dlc-hub/getting-started/</guid><description>&lt;h2 id="前置条件"&gt;前置条件
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;
&lt;h2 id="安装"&gt;安装
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;
&lt;h2 id="第一次使用"&gt;第一次使用
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;</description></item><item><title>快速开始</title><link>https://ysy.fan/p/stellaris-dlc-helper/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-dlc-helper/getting-started/</guid><description>&lt;h2 id="下载工具"&gt;下载工具
&lt;/h2&gt;&lt;p&gt;从 &lt;a class="link" href="https://github.com/sign-river/Stellaris-DLC-Helper/releases/latest" target="_blank" rel="noopener"
&gt;GitHub Releases&lt;/a&gt; 下载最新版本，并解压到方便找到的位置。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-16-58-48.png"
loading="lazy"
alt="工具主界面"
&gt;&lt;/p&gt;
&lt;h2 id="第一次运行"&gt;第一次运行
&lt;/h2&gt;&lt;p&gt;双击 &lt;code&gt;Stellaris_DLC_Helper.exe&lt;/code&gt;。程序会检查更新并显示公告；确认后，选择或确认自动识别到的游戏安装目录。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-03-52.png"
loading="lazy"
alt="启动后的更新提示"
&gt;&lt;/p&gt;
&lt;p&gt;如果没有自动识别到目录，可通过“浏览”手动选择。所选目录应包含 &lt;code&gt;stellaris.exe&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-06-52.png"
loading="lazy"
alt="选择安装目录"
&gt;&lt;/p&gt;
&lt;h2 id="完成操作"&gt;完成操作
&lt;/h2&gt;&lt;p&gt;确认目录无误后，按界面提示完成操作。进度和结果会显示在程序中；完成后通过 Steam 启动游戏验证。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-09-52.png"
loading="lazy"
alt="操作进度界面"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;仅支持 Windows。使用前建议备份存档和重要的游戏文件。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>日常使用</title><link>https://ysy.fan/p/signriver-dlc-hub/daily-use/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/signriver-dlc-hub/daily-use/</guid><description>&lt;h2 id="常用操作"&gt;常用操作
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;
&lt;h2 id="配置说明"&gt;配置说明
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;
&lt;h2 id="更新与维护"&gt;更新与维护
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;</description></item><item><title>日常使用</title><link>https://ysy.fan/p/stellaris-dlc-helper/daily-use/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-dlc-helper/daily-use/</guid><description>&lt;h2 id="游戏更新后"&gt;游戏更新后
&lt;/h2&gt;&lt;p&gt;打开工具并按界面操作。程序会处理需要更新的内容；结束后再启动游戏确认状态。&lt;/p&gt;
&lt;h2 id="网络测速"&gt;网络测速
&lt;/h2&gt;&lt;p&gt;在“设置”的测速页执行测速，比较可用下载源的速度后再继续操作。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-15-41.png"
loading="lazy"
alt="测速界面"
&gt;&lt;/p&gt;
&lt;h2 id="暂停与继续"&gt;暂停与继续
&lt;/h2&gt;&lt;p&gt;操作进行中可以暂停；恢复时继续即可。工具支持断点续传，网络短暂中断不需要从头开始。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-16-33.png"
loading="lazy"
alt="暂停操作"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-16-46.png"
loading="lazy"
alt="继续操作"
&gt;&lt;/p&gt;
&lt;p&gt;日志、缓存和其他界面功能见 &lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-helper/advanced/" &gt;进阶功能&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>常见问题</title><link>https://ysy.fan/p/signriver-dlc-hub/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/signriver-dlc-hub/faq/</guid><description>&lt;h2 id="问题一"&gt;问题一
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;
&lt;h2 id="问题二"&gt;问题二
&lt;/h2&gt;&lt;p&gt;待补充。&lt;/p&gt;
&lt;h2 id="获取帮助"&gt;获取帮助
&lt;/h2&gt;&lt;p&gt;项目仓库：&lt;a class="link" href="https://github.com/sign-river/SignRiver-DLC-Hub" target="_blank" rel="noopener"
&gt;sign-river/SignRiver-DLC-Hub&lt;/a&gt;&lt;/p&gt;</description></item><item><title>常见问题</title><link>https://ysy.fan/p/stellaris-dlc-helper/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-dlc-helper/faq/</guid><description>&lt;h2 id="找不到游戏目录"&gt;找不到游戏目录
&lt;/h2&gt;&lt;p&gt;使用“浏览”手动选择游戏安装文件夹。正确的目录中应包含 &lt;code&gt;stellaris.exe&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-06-52.png"
loading="lazy"
alt="选择安装目录"
&gt;&lt;/p&gt;
&lt;h2 id="下载失败"&gt;下载失败
&lt;/h2&gt;&lt;p&gt;检查网络连接；随后在“设置 -&amp;gt; 测速”中手动测速并切换可用来源，再重试操作。&lt;/p&gt;
&lt;h2 id="文件缺失"&gt;文件缺失
&lt;/h2&gt;&lt;p&gt;在“设置”的高级功能中按界面提示恢复缺失文件。如果安全软件阻止了文件，请先核对来源与文件安全性，再按自己的安全策略处理。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-44-15.png"
loading="lazy"
alt="文件检查提示"
&gt;&lt;/p&gt;
&lt;h2 id="需要更多帮助"&gt;需要更多帮助
&lt;/h2&gt;&lt;p&gt;可以在 &lt;a class="link" href="https://github.com/sign-river/Stellaris-DLC-Helper/issues" target="_blank" rel="noopener"
&gt;GitHub Issues&lt;/a&gt; 提交可复现的情况、程序版本和相关日志。&lt;/p&gt;</description></item><item><title>进阶功能</title><link>https://ysy.fan/p/stellaris-dlc-helper/advanced/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-dlc-helper/advanced/</guid><description>&lt;h2 id="内容选择"&gt;内容选择
&lt;/h2&gt;&lt;p&gt;在主界面中可按需要选择要处理的内容。操作前请确认选择项和本地可用空间。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-38-15.png"
loading="lazy"
alt="内容选择界面"
&gt;&lt;/p&gt;
&lt;h2 id="查看日志"&gt;查看日志
&lt;/h2&gt;&lt;p&gt;“设置”中的日志页会记录程序操作。提交问题时，可附上相关时间段的日志和程序版本，便于排查。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-39-42.png"
loading="lazy"
alt="日志界面"
&gt;&lt;/p&gt;
&lt;h2 id="清理缓存"&gt;清理缓存
&lt;/h2&gt;&lt;p&gt;缓存会占用本地磁盘空间。确认当前没有进行中的任务后，可在工具中使用清理缓存功能。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://ysy.fan/p/stellaris-dlc-helper/images/2026-02-13-17-40-24.png"
loading="lazy"
alt="清理缓存界面"
&gt;&lt;/p&gt;</description></item><item><title>CC Switch 使用指南：管理 API 密钥并接入 Codex</title><link>https://ysy.fan/p/ccswitch-guide/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/ccswitch-guide/</guid><description>&lt;p&gt;按你的目标选择对应文章：通过 CC Switch 统一管理 API 密钥并登录 Codex，或使用 CC Switch 在 Codex 中接入 DeepSeek API。&lt;/p&gt;
&lt;h2 id="1-api-密钥管理与-codex-登录"&gt;1. API 密钥管理与 Codex 登录
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/ccswitch-faroapi-codex-login/" &gt;使用 CC Switch 管理 Faro API 密钥并登录 Codex 桌面版&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-模型接入"&gt;2. 模型接入
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/codex-deepseek-api/" &gt;使用 CC Switch 在 Codex 中接入 DeepSeek API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-仍未解决"&gt;3. 仍未解决
&lt;/h2&gt;&lt;p&gt;如果在 CC Switch 中配置 API 后 Codex 没有生效、测速失败或模型不可用，请先查看对应子文章中的常见问题。若仍未解决，请提供：CC Switch 版本、供应商配置截图、Codex 版本，以及具体的报错文字或日志。&lt;/p&gt;</description></item><item><title>Clash Verge 开启 TUN 后一元机场节点全部超时的解决办法</title><link>https://ysy.fan/p/clash-verge-yiyuan-airport-timeout-fix/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/clash-verge-yiyuan-airport-timeout-fix/</guid><description>&lt;p&gt;本文记录 Windows 电脑端 Clash Verge 开启 TUN 后，一元机场节点全部超时的排查与解决过程：订阅能正常更新、自建节点也能使用，唯独机场节点在 TUN 模式下几乎全部 &lt;code&gt;Timeout&lt;/code&gt;。最终根因与 TUN 堆栈、DNS、IPv6 以及机场节点的 XHTTP 传输方式共同相关。&lt;/p&gt;
&lt;h2 id="1-故障现象"&gt;1. 故障现象
&lt;/h2&gt;&lt;p&gt;使用环境：Windows + Clash Verge 2.5.2 + Mihomo v1.19.29，规则模式，TUN 虚拟网卡接管，机场节点为 VLESS + TLS + XHTTP（&lt;code&gt;stream-up&lt;/code&gt; 模式，端口 443）。&lt;/p&gt;
&lt;p&gt;故障表现：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clash Verge 正常启动，机场订阅正常更新，流量、到期时间正常显示，节点完整加载。&lt;/li&gt;
&lt;li&gt;代理页面测速时几乎所有节点都显示 &lt;code&gt;Timeout&lt;/code&gt; 或 &lt;code&gt;Error&lt;/code&gt;，自动选择与故障转移也无法找到可用节点。&lt;/li&gt;
&lt;li&gt;同一订阅在朋友电脑上正常；同一台电脑使用自建节点则正常。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由此可排除：机场整体宕机、订阅链接过期、流量耗尽、节点全部失效、账号被封、客户端版本差异。&lt;/p&gt;
&lt;p&gt;节点测速页面截图&lt;/p&gt;
&lt;h2 id="2-关键判断问题出在-tun-接管后的链路"&gt;2. 关键判断：问题出在 TUN 接管后的链路
&lt;/h2&gt;&lt;p&gt;订阅更新与节点连接是两条独立的网络路径：能更新订阅只说明订阅服务器可访问，不代表节点能连上。&lt;/p&gt;
&lt;p&gt;初步验证时关闭 TUN、改用系统代理（同时关闭 IPv6）后，日本、香港等大量节点立刻恢复延迟。这说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;机场节点并没有失效，账号和订阅参数基本正常；&lt;/li&gt;
&lt;li&gt;电脑可以直接连接机场服务器；&lt;/li&gt;
&lt;li&gt;故障主要出现在 TUN 接管流量之后，集中在 TUN 堆栈、路由、DNS 劫持、IPv6 或虚拟网卡环节。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自建节点在 TUN 下正常而机场节点超时也不矛盾：机场 XHTTP 节点同时涉及主连接域名和 &lt;code&gt;download-settings&lt;/code&gt; 中的下载域名，需要维持多条 TCP/TLS/XHTTP 长连接，对 TUN 协议栈和 DNS 解析的敏感度远高于普通自建节点。&lt;/p&gt;
&lt;h2 id="3-解决办法"&gt;3. 解决办法
&lt;/h2&gt;&lt;h3 id="31-先用系统代理验证问题范围"&gt;3.1. 先用系统代理验证问题范围
&lt;/h3&gt;&lt;p&gt;将设置调整为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TUN 虚拟网卡模式：关闭&lt;/li&gt;
&lt;li&gt;系统代理：开启&lt;/li&gt;
&lt;li&gt;IPv6：关闭&lt;/li&gt;
&lt;li&gt;DNS 覆写：关闭&lt;/li&gt;
&lt;li&gt;代理模式：规则&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果节点恢复延迟，即可确认故障在 TUN 接管链路，而不是节点或账号问题。&lt;/p&gt;
&lt;h3 id="32-将-tun-堆栈切换为-mixed"&gt;3.2. 将 TUN 堆栈切换为 Mixed
&lt;/h3&gt;&lt;p&gt;Clash Verge 的 TUN 设置中有三种堆栈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GVisor&lt;/strong&gt;：TCP 和 UDP 都由 Mihomo 内置的用户态协议栈处理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System&lt;/strong&gt;：TCP 和 UDP 都走 Windows 原生协议栈&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mixed&lt;/strong&gt;：TCP 走 Windows 原生协议栈，UDP 走 GVisor 用户态协议栈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;机场 XHTTP 的 TLS 长连接主要依赖 TCP，从 &lt;strong&gt;GVisor&lt;/strong&gt; 切换为 &lt;strong&gt;Mixed&lt;/strong&gt; 后，TCP 连接改由 Windows 原生协议栈处理，兼容性更好。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：仅切换堆栈只是短暂恢复，一段时间后节点会再次全部超时，说明根因不只是协议栈，还需要配合下一步修正 DNS 配置。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="33-修正-dns-覆写配置核心"&gt;3.3. 修正 DNS 覆写配置（核心）
&lt;/h3&gt;&lt;p&gt;原 DNS 覆写配置存在几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;主设置已关闭 IPv6，但 DNS 覆写中 &lt;code&gt;ipv6: true&lt;/code&gt; 且配置了 IPv6 DNS，DNS 返回 AAAA 记录后 Mihomo 尝试走不稳定的 IPv6 出口，导致连接超时。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;default-nameserver&lt;/code&gt; 混用 &lt;code&gt;system&lt;/code&gt;、阿里 DNS、Google DNS、IPv6 DNS，不同来源解析结果不一致。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proxy-server-nameserver&lt;/code&gt; 使用 DoH 域名，解析链路复杂。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;listen: ':53'&lt;/code&gt; 可能与 TUN 的 &lt;code&gt;dns-hijack: any:53&lt;/code&gt; 或 Windows 上其他占用 53 端口的服务冲突。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;修正要点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ipv6: false&lt;/code&gt;，去掉 IPv6 DNS 条目&lt;/li&gt;
&lt;li&gt;&lt;code&gt;listen&lt;/code&gt; 改为 &lt;code&gt;0.0.0.0:1053&lt;/code&gt;，避开 53 端口&lt;/li&gt;
&lt;li&gt;&lt;code&gt;default-nameserver&lt;/code&gt; 统一为国内公共 DNS（如 &lt;code&gt;223.5.5.5&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;开启 &lt;code&gt;use-hosts&lt;/code&gt; 和 &lt;code&gt;use-system-hosts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fake-ip-filter&lt;/code&gt; 保留本地域名、NTP 和系统连通性探测域名&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将 DNS 覆写配置整体替换为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;dns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;0.0.0.0:1053&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enhanced-mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;fake-ip&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fake-ip-range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;198.18.0.1/16&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fake-ip-range6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;fdfe:dcba:9876::1/64&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fake-ip-filter-mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;blacklist&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;prefer-h3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;respect-rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;use-hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;use-system-hosts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ipv6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fake-ip-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;*.lan&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;*.local&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;*.arpa&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;time.*.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;ntp.*.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;+.market.xiaomi.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;localhost.ptlogin2.qq.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;*.msftncsi.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;www.msftconnecttest.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;default-nameserver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;223.5.5.5&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;119.29.29.29&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;nameserver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;https://doh.pub/dns-query&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;https://dns.alidns.com/dns-query&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;direct-nameserver-follow-policy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fallback-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;geoip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;geoip-code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;CN&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ipcidr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;240.0.0.0/4&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;0.0.0.0/32&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;+.google.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;+.facebook.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;+.youtube.com&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;proxy-server-nameserver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;223.5.5.5&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;119.29.29.29&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;direct-nameserver&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;https://doh.pub/dns-query&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;https://dns.alidns.com/dns-query&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="4-验证结果"&gt;4. 验证结果
&lt;/h2&gt;&lt;p&gt;按上述步骤调整后（TUN 开启、堆栈 &lt;strong&gt;Mixed&lt;/strong&gt;、IPv6 关闭、DNS 覆写使用修正后的配置），一元机场节点恢复稳定延迟，TUN 模式下可正常访问网络。&lt;/p&gt;
&lt;h2 id="5-总结"&gt;5. 总结
&lt;/h2&gt;&lt;p&gt;遇到&amp;quot;订阅能更新、节点却全部超时&amp;quot;时，不要急着怀疑节点失效，按以下顺序排查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;关闭 TUN、开启系统代理验证，确认问题是否出在 TUN 接管链路。&lt;/li&gt;
&lt;li&gt;将 TUN 堆栈切换为 &lt;strong&gt;Mixed&lt;/strong&gt;，让 TCP 走 Windows 原生协议栈，改善 XHTTP 长连接兼容性。&lt;/li&gt;
&lt;li&gt;修正 DNS 覆写：关闭 IPv6、统一 &lt;code&gt;default-nameserver&lt;/code&gt;、监听端口避开 53、开启 hosts 支持。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;机场的 XHTTP 节点链路复杂，对 TUN 堆栈和 DNS 解析更敏感，以上三项需要配合调整才能彻底解决。&lt;/p&gt;</description></item><item><title>联想 LJ2400 打印机部件功能与使用指南</title><link>https://ysy.fan/p/lenovo-lj2400-printer-guide/</link><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/lenovo-lj2400-printer-guide/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;适用机型&lt;/strong&gt;：本文以实拍的联想 LJ2400 黑白激光打印机为例。图中硒鼓型号为 &lt;strong&gt;LD2441&lt;/strong&gt;，粉盒型号为 &lt;strong&gt;LT2441&lt;/strong&gt;；购买耗材前请以设备和耗材标签为准。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-部件速览"&gt;1. 部件速览
&lt;/h2&gt;&lt;p&gt;LJ2400 通过 USB 连接电脑，纸张由前方纸盒送入，并从顶部出纸口输出。日常使用时，主要会接触状态灯、前盖、后盖、电源开关和 USB 接口。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-04-51.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-04-51.png" alt="联想 LJ2400 打印机整体外观" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="11-出纸口与状态灯"&gt;1.1. 出纸口与状态灯
&lt;/h3&gt;&lt;p&gt;顶部为出纸口。面板上的四个指示灯从左至右分别表示碳粉、硒鼓、错误和就绪状态；正常待机时，&lt;strong&gt;Ready&lt;/strong&gt; 灯会亮起。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-04-57.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-04-57.png" alt="LJ2400 顶部出纸口和状态指示灯" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="12-电源与-usb-接口"&gt;1.2. 电源与 USB 接口
&lt;/h3&gt;&lt;p&gt;背面的电源开关中，&lt;code&gt;I&lt;/code&gt; 表示开机，&lt;code&gt;O&lt;/code&gt; 表示关机。USB-B 方形接口用于连接电脑；接通电源并连接数据线后，等待 &lt;strong&gt;Ready&lt;/strong&gt; 灯亮起即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-29.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-29.png" alt="LJ2400 背面电源开关" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-34.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-34.png" alt="LJ2400 背面的 USB-B 数据接口" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="13-前盖硒鼓与后盖"&gt;1.3. 前盖、硒鼓与后盖
&lt;/h3&gt;&lt;p&gt;打开前盖后，可取出粉盒和硒鼓组件。请握住组件把手，平稳地向外抽出，避免触摸感光鼓表面。绿色滑块用于清洁电晕丝，使用后务必推回原始标记位置。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-02.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-02.png" alt="打开 LJ2400 前盖后的耗材仓" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-08.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-08.png" alt="LJ2400 耗材仓中的硒鼓和绿色滑块" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-15.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-15.png" alt="从 LJ2400 取出 LD2441 硒鼓组件" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-20.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-20.png" alt="取出的 LJ2400 硒鼓和粉盒组合组件" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;后盖主要用于处理出纸端卡纸。打开后请避开高温警示区域，待机器充分冷却后再取出卡纸。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-05-24.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-05-24.png" alt="打开 LJ2400 后盖后可见的后方纸路和高温警示标签" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-硒鼓灯和错误灯同时亮"&gt;2. 硒鼓灯和错误灯同时亮
&lt;/h2&gt;&lt;p&gt;当 &lt;strong&gt;Drum&lt;/strong&gt; 灯亮黄、&lt;strong&gt;Error&lt;/strong&gt; 灯亮红时，可先尝试清洁硒鼓上的电晕丝。操作前请关闭打印机电源，然后打开前盖并取出硒鼓组件。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-25-08.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-25-08.png" alt="LJ2400 的硒鼓灯和错误灯同时亮起" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;找到硒鼓上的绿色滑块。&lt;/li&gt;
&lt;li&gt;将滑块来回滑动约 10 次。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;将滑块推回原来的标记位置&lt;/strong&gt;，再把硒鼓组件装回机器。&lt;/li&gt;
&lt;li&gt;装回硒鼓组件并关好前盖，开机后确认 &lt;strong&gt;Ready&lt;/strong&gt; 灯恢复正常。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-27-09.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-27-09.png" alt="硒鼓上的绿色电晕丝清洁滑块及滑动方向" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;若仍然报错，请确认硒鼓组件已完全推入、前盖已关严；若问题持续，再考虑更换硒鼓。&lt;/p&gt;
&lt;h2 id="3-windows-安装驱动"&gt;3. Windows 安装驱动
&lt;/h2&gt;&lt;h3 id="31-先确认电脑识别到打印机"&gt;3.1. 先确认电脑识别到打印机
&lt;/h3&gt;&lt;p&gt;按 &lt;code&gt;Win + X&lt;/code&gt;，打开“设备管理器”，再展开“通用串行总线控制器”。确认其中显示 &lt;strong&gt;Lenovo LJ2400&lt;/strong&gt; 后，再继续安装驱动；若未显示该设备，请先检查 USB 数据线和接口。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-34-59.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-34-59.png" alt="从 Win+X 菜单打开设备管理器" style="max-width: 40%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-35-40.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-35-40.png" alt="设备管理器中显示 Lenovo LJ2400" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="32-下载并准备驱动"&gt;3.2. 下载并准备驱动
&lt;/h3&gt;&lt;p&gt;打开 &lt;a class="link" href="https://www.lenovoimage.com/index.php/services/servers_driver" target="_blank" rel="noopener"
&gt;联想打印机驱动下载页&lt;/a&gt;，搜索 &lt;code&gt;LJ2400&lt;/code&gt;，下载与系统版本对应的驱动包并解压。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-38-09.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-38-09.png" alt="联想打印机驱动下载页面搜索 LJ2400" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-38-39.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-38-39.png" alt="LJ2400 驱动下载结果" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-44-01.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-44-01.png" alt="解压后的 LJ2400 驱动文件" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;建议将解压后的文件夹移至全英文路径，例如 &lt;code&gt;C:\LJ2400&lt;/code&gt;，以免旧版安装程序因路径包含中文而无法启动。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-46-05.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-46-05.png" alt="将驱动文件放在全英文路径" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="33-运行安装程序"&gt;3.3. 运行安装程序
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;右键 &lt;code&gt;start.exe&lt;/code&gt;，选择“以管理员身份运行”。&lt;/li&gt;
&lt;li&gt;在启动界面选择 &lt;strong&gt;LJ2400&lt;/strong&gt;，再点击“安装程序”。&lt;/li&gt;
&lt;li&gt;选择“打印机驱动程序”，在许可证协议提示中选择“是”。&lt;/li&gt;
&lt;li&gt;按安装向导提示点击“下一步”，等待安装完成；注册页面可直接跳过。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-48-16.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-48-16.png" alt="以管理员身份运行 start.exe" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-53-06.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-53-06.png" alt="驱动程序中选择 LJ2400" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-53-57.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-53-57.png" alt="LJ2400 安装程序主界面" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-54-19.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-54-19.png" alt="选择打印机驱动程序" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-54-42.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-54-42.png" alt="接受打印机驱动安装的许可证协议" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-55-30.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-55-30.png" alt="选择安装类型：标准或自定义" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-58-46.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-58-46.png" alt="跳过驱动注册" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完成后点击“完成”，然后退出安装程序。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-59-42.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-59-42.png" alt="完成 LJ2400 驱动安装" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-00-08.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-00-08.png" alt="退出 LJ2400 驱动安装程序" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="34-打印测试页"&gt;3.4. 打印测试页
&lt;/h3&gt;&lt;p&gt;依次打开“设置 → 蓝牙和设备 → 打印机和扫描仪”，选择 &lt;strong&gt;Lenovo LJ2400&lt;/strong&gt;，点击“打印测试页”。测试页能正常输出，即表示驱动已安装完成。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-01-44.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-01-44.png" alt="Windows 中的 Lenovo LJ2400 打印机设置" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-03-28.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-03-28.png" alt="LJ2400 成功打印测试页" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-wps-手动双面打印"&gt;4. WPS 手动双面打印
&lt;/h2&gt;&lt;p&gt;LJ2400 需要通过驱动提供的手动双面功能完成双面打印。&lt;strong&gt;重新放纸的方向至关重要&lt;/strong&gt;：已打印的一面朝上，纸张顶部朝向远离打印机的一侧。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 WPS 中打开“打印”，选择 &lt;strong&gt;Lenovo LJ2400&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;设置打印页码范围，勾选“双面打印”，并选择“长边翻页”。&lt;/li&gt;
&lt;li&gt;点击“打印”，在第一个提示框中点击“确定”。打印机将先输出奇数页。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-20-04.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-20-04.png" alt="WPS 中启用双面打印并选择长边翻页" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-21-50.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-21-50.png" alt="手动双面打印的第一个提示框" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;全部奇数页输出完毕后，再处理第二个提示框。取出纸张时请保持整叠纸的顺序不变。&lt;/li&gt;
&lt;li&gt;打开纸盒，将纸张以&lt;strong&gt;已打印面朝上&lt;/strong&gt;的方向放回；纸张顶部应朝向远离打印机的一侧。调整导轨后，将纸盒推回打印机。&lt;/li&gt;
&lt;li&gt;确认纸张方向无误后，点击第二个提示框中的“确定”，开始打印另一面。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-23-27.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-23-27.png" alt="手动双面打印时将奇数页放回纸盒的方向" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-24-55.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-24-55.png" alt="确认纸张方向后打印第二面" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;若首次操作时不确定放纸方向，建议先用两页测试文档验证；确认正反面方向正确后，再打印正式文件。&lt;/p&gt;</description></item><item><title>用本地 Codex 并行开发同一个项目</title><link>https://ysy.fan/p/codex-parallel-development/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/codex-parallel-development/</guid><description>&lt;p&gt;本文演示如何借助本地 Codex 和 Git 工作树，让多个对话同时推进同一个项目中的不同任务。核心原则是先划分清楚任务边界，再分别开发、提交和合并。&lt;/p&gt;
&lt;p&gt;本文介绍两种工作流：临时工作树适合一次性的并行任务；永久工作树适合需要持续维护同一条开发线的场景。无论采用哪一种，都应避免多个任务同时修改同一批文件。&lt;/p&gt;
&lt;h2 id="1-临时工作树适合一次性并行任务"&gt;1. 临时工作树：适合一次性并行任务
&lt;/h2&gt;&lt;p&gt;临时工作树的特点是每次新建对话时创建一个分支和对应的工作树。任务完成并合并后，这个工作树通常不再继续使用，适合功能开发、测试补充或独立问题排查等短期任务。&lt;/p&gt;
&lt;h3 id="11-创建工作树并分配任务"&gt;1.1 创建工作树并分配任务
&lt;/h3&gt;&lt;p&gt;首先新建一个对话。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-31-21-53-02.png" target="_blank"&gt; &lt;img src="images/2026-07-31-21-53-02.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后将本地环境切换到新的工作树。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-31-21-53-26.png" target="_blank"&gt; &lt;img src="images/2026-07-31-21-53-26.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下来，为第一个工作树分配任务。重复“新建对话、创建工作树、分配任务”的过程，就可以让多个对话并行修改同一个项目。&lt;/p&gt;
&lt;p&gt;在开始前，建议明确每个任务负责的模块和文件范围。例如，一个任务负责接口实现，另一个任务负责测试，第三个任务负责前端页面。任务说明中最好同时写清目标、涉及目录、验收方式和不应修改的文件，避免后续合并时出现冲突或重复工作。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-31-21-57-50.png" target="_blank"&gt; &lt;img src="images/2026-07-31-21-57-50.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;多个任务并行执行后的效果如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-31-22-01-38.png" target="_blank"&gt; &lt;img src="images/2026-07-31-22-01-38.png" alt="image" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="12-要求每个任务完成收尾"&gt;1.2 要求每个任务完成收尾
&lt;/h3&gt;&lt;p&gt;当某个工作树中的任务完成后，可以向对应对话发送下面这段提示，确保它在提交前完成必要的检查：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请停止继续扩展范围，完成当前任务的收尾：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 运行本任务相关测试、Ruff、Python 编译和 git diff --check。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 只提交你自己修改的文件，不要更新 docs/任务书.md、docs/完成记录.md。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 创建一个清晰的 Git 提交。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 回复提交哈希、修改文件列表、测试结果和已知风险。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样可以让每个并行任务都产出独立、可审查的提交，也便于后续定位问题。&lt;/p&gt;
&lt;h3 id="13-将各工作树的改动合并到主线"&gt;1.3 将各工作树的改动合并到主线
&lt;/h3&gt;&lt;p&gt;当各工作树完成 Git 提交后，回到主工作区的终端，按提交间的依赖关系依次执行 &lt;code&gt;cherry-pick&lt;/code&gt;。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;cherry-pick&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="n"&gt;的提交哈希&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;cherry-pick&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="n"&gt;的提交哈希&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;cherry-pick&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;E&lt;/span&gt; &lt;span class="n"&gt;的提交哈希&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;cherry-pick&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="n"&gt;的提交哈希&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些命令会将各工作树中的提交复制到主线。每次执行 &lt;code&gt;cherry-pick&lt;/code&gt; 后，都应检查当前工作区状态和补丁格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-short&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="nb"&gt;diff &lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="n"&gt;-check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果发生冲突，应在主工作区统一处理，不要回到原工作树反复修改同一处代码。处理完成后继续执行 &lt;code&gt;cherry-pick&lt;/code&gt;，并在所有提交合并完成后运行完整测试。&lt;/p&gt;
&lt;h2 id="2-永久工作树适合持续维护的任务"&gt;2. 永久工作树：适合持续维护的任务
&lt;/h2&gt;&lt;p&gt;如果某个任务需要跨多次对话持续推进，或你希望长期保留它的独立开发环境，可以创建永久工作树。它不需要在每次开始新对话时重复创建分支，更适合持续迭代的功能或长期维护的模块。&lt;/p&gt;
&lt;h3 id="21-创建永久工作树"&gt;2.1 创建永久工作树
&lt;/h3&gt;&lt;p&gt;在项目右侧的三个点菜单中，选择创建永久工作树。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-19-03-09.png" target="_blank"&gt; &lt;img src="images/2026-08-01-19-03-09.png" alt="image" style="max-width: 40%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;创建完成后，先向 AI 发送一条只读检查指令，确认当前工作树的根目录和 Git 状态：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请只执行 git rev-parse --show-toplevel 和 git status --short，不修改任何文件，并报告输出结果。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="images/2026-08-01-20-50-02.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-50-02.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;确认工作树状态无误后，再为它创建对应的分支。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-08-01-20-50-57.png" target="_blank"&gt; &lt;img src="images/2026-08-01-20-50-57.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;后续可以持续在这个工作树中推进同一类任务。需要将成果并入主线时，仍然应遵循独立提交、审查差异和集中处理冲突的原则。&lt;/p&gt;
&lt;h2 id="3-如何选择工作树方式"&gt;3. 如何选择工作树方式
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;临时工作树：适合目标明确、完成后即可合并的一次性任务。&lt;/li&gt;
&lt;li&gt;永久工作树：适合跨多个阶段持续迭代，或需要长期保留上下文和开发环境的任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;无论使用哪种方式，任务之间的文件边界越清晰，最终合并就越顺畅。&lt;/p&gt;
&lt;h2 id="4-小结"&gt;4. 小结
&lt;/h2&gt;&lt;p&gt;使用本地 Codex 并行开发的重点不在于同时开启多少个对话，而在于任务边界清晰、每项改动独立提交，并在主工作区集中完成合并与验证。这样既能提升并行效率，也能控制集成风险。&lt;/p&gt;</description></item><item><title>从零开始玩转本地模型：Windows 本地部署与使用指南</title><link>https://ysy.fan/p/local-llm-from-zero-guide/</link><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/local-llm-from-zero-guide/</guid><description>&lt;p&gt;本指南汇总在 Windows 上从零开始部署和使用本地大语言模型的完整学习路径。内容按实际操作顺序组织：先让模型稳定运行，再将它用于项目协作，最后进入微调、评估与部署等进阶主题。&lt;/p&gt;
&lt;h2 id="当前内容"&gt;当前内容
&lt;/h2&gt;&lt;h3 id="1-部署并运行第一个本地模型"&gt;1. 部署并运行第一个本地模型
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/windows-local-model-deployment/" &gt;Windows 本地部署流程：安装 LM Studio、下载模型并完成首次对话&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合第一次接触本地模型的读者。文章覆盖硬件准备、LM Studio 安装、模型下载、显卡设置和基础加载参数。&lt;/p&gt;
&lt;h3 id="2-用本地模型修改项目文件"&gt;2. 用本地模型修改项目文件
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/bionic-project-editing/" &gt;用 Bionic 修改项目文件：创建工作区、授权、提出任务与验证改动&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在模型能够稳定运行后，使用 Bionic 将模型带入受控的项目工作区，完成文件修改并审查实际变更。&lt;/p&gt;
&lt;h2 id="后续计划"&gt;后续计划
&lt;/h2&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;p&gt;建议按上述顺序阅读。每一篇分篇都可以单独访问或通过站内搜索找到；阅读分篇时，页面顶部的“返回专题”链接可回到本指南。&lt;/p&gt;</description></item><item><title>IDM 破解安装指南</title><link>https://ysy.fan/p/idm-free-trial-install-guide/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/idm-free-trial-install-guide/</guid><description>&lt;h2 id="第一步下载安装-idm"&gt;第一步：下载安装 IDM
&lt;/h2&gt;&lt;p&gt;访问 &lt;a class="link" href="https://www.internetdownloadmanager.com/" target="_blank" rel="noopener"
&gt;IDM 官方网站&lt;/a&gt;，点击页面上的绿色按钮开始下载。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-18-15.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-18-15.png" alt="IDM 官网下载页面，显示加速下载至 8 倍速的宣传图" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;双击运行下载的安装程序，按照提示一路点击&amp;quot;下一步&amp;quot;直至安装完成。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-18-53.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-18-53.png" alt="IDM 安装完成界面，显示安装成功提示" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;提示&lt;/strong&gt;：如果您想让 IDM 在安装完成后立刻接管浏览器的下载任务，请在继续安装前关闭所有的浏览器窗口。同时，安装结束后您需要重新打开浏览器。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第二步启用-idm-浏览器扩展程序"&gt;第二步：启用 IDM 浏览器扩展程序
&lt;/h2&gt;&lt;p&gt;打开 Chrome 浏览器，点击右上角的扩展程序图标（拼图形状），选择&amp;quot;IDM Integration Module&amp;quot;并点击&amp;quot;启用扩展程序&amp;quot;按钮。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-19-48.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-19-48.png" alt="Chrome 浏览器扩展程序启用界面，显示 IDM Integration Module 的激活按钮" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="第三步下载激活脚本"&gt;第三步：下载激活脚本
&lt;/h2&gt;&lt;p&gt;前往 &lt;a class="link" href="https://github.com/tytsxai/IDM-Activation-Script-Chinese" target="_blank" rel="noopener"
&gt;IDM 激活脚本 GitHub 项目&lt;/a&gt; 的 Release 页面，点击右侧&amp;quot;Releases&amp;quot;区域的最新版本（v1.4.2）。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-21-04.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-21-04.png" alt="GitHub 项目主页，显示 IDM 激活脚本中文版页面" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 Release 页面右侧的 &lt;strong&gt;Assets&lt;/strong&gt;（资源）区域，点击下载 &lt;code&gt;IDM-Activation-Script.zip&lt;/code&gt; 压缩包：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-23-53.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-23-53.png" alt="GitHub Release 页面，显示 IDM-Activation-Script.zip 下载链接" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="第四步运行激活脚本"&gt;第四步：运行激活脚本
&lt;/h2&gt;&lt;p&gt;下载并解压压缩包后，您会看到以下两个核心命令文件（原 Release 中还包含其他文档，但这两个是必需的）：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-24-55.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-24-55.png" alt="解压后的文件列表，显示 IAS.cmd 和开始激活.cmd 两个文件" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;双击运行 &lt;code&gt;开始激活.cmd&lt;/code&gt; 文件，当系统提示授予权限时点击&amp;quot;是&amp;quot;，进入命令行菜单界面：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-25-44.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-25-44.png" alt="IDM 激活脚本主菜单，显示多个选项供用户选择" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="第五步执行激活操作"&gt;第五步：执行激活操作
&lt;/h2&gt;&lt;p&gt;在菜单中输入 &lt;strong&gt;&lt;code&gt;2&lt;/code&gt;&lt;/strong&gt;（激活模式），系统将自动处理激活流程，进入如下界面显示激活结果：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-26-24.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-26-24.png" alt="IDM 激活脚本执行结果，显示 IDM 激活功能已完成" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;警告&lt;/strong&gt;：对某些用户而言（设置），IDM 可能会显示假阳性序列号提示。如果你遇到这种情况，请使用冻结激活选项（输入 &lt;code&gt;1&lt;/code&gt;）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;继续执行直到如下界面：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-27-11.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-27-11.png" alt="继续任务" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="第六步禁用-idm-自动更新"&gt;第六步：禁用 IDM 自动更新
&lt;/h2&gt;&lt;p&gt;返回主菜单，选择 &lt;strong&gt;&lt;code&gt;4&lt;/code&gt;&lt;/strong&gt;（禁用 IDM 更新）选项：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-27-57.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-27-57.png" alt="IDM 激活脚本主菜单，显示禁用更新选项" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;提示&lt;/strong&gt;：停留在当前版本可避免更新后激活失效，但也不再获得官方修复。如需恢复更新检查，请在主菜单选择 &lt;code&gt;5&lt;/code&gt;（恢复 IDM 更新提示）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第七步验证激活状态"&gt;第七步：验证激活状态
&lt;/h2&gt;&lt;p&gt;激活完成后，重新启动 IDM 软件即可看到授权信息弹窗，确认激活成功：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-29-00-28-32.png" target="_blank"&gt; &lt;img src="images/2026-07-29-00-28-32.png" alt="IDM 激活成功界面，显示授权信息弹窗" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;激活完成！&lt;/strong&gt; 现在您可以正常使用 IDM 的所有功能了。&lt;/p&gt;</description></item><item><title>Cursor 使用指南：入门、界面、插件、模型与常见问题</title><link>https://ysy.fan/p/cursor-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/cursor-troubleshooting-guide/</guid><description>&lt;p&gt;根据你的目标选择对应文章：首次了解 Cursor、调整界面与插件、配置模型服务，或排查 Agent 卡死问题。&lt;/p&gt;
&lt;h2 id="1-入门与界面"&gt;1. 入门与界面
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/cursor-beginner-guide/" &gt;Cursor 使用心得：AI 编程助手的初体验&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/switch-cursor-ui-mode/" &gt;Cursor 新旧界面切换：编辑器模式与 Agents 模式&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-插件与模型配置"&gt;2. 插件与模型配置
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/cursor-install-plugin-from-github/" &gt;Cursor 手动安装插件：中英文自动空格插件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/cursor-aliyun-bailian-api-setup/" &gt;在 Cursor 中接入阿里云百炼 API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-常见问题"&gt;3. 常见问题
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/cursor-agent-freeze-fix/" &gt;Cursor Agent 模式频繁卡死的排查方案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Hugo 博客搭建与维护指南：部署、主题与内容优化</title><link>https://ysy.fan/p/blog-site-maintenance-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/blog-site-maintenance-guide/</guid><description>&lt;p&gt;本指南汇总本站 Hugo Theme Stack 的搭建与维护文章。根据你所处的阶段选择对应内容：首次部署、调整主题显示、封装内容组件、优化文章推荐，或解决搜索引擎收录问题。&lt;/p&gt;
&lt;h2 id="1-从零搭建与部署"&gt;1. 从零搭建与部署
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/hugo-github-pages-blog-tutorial/" &gt;Hugo Theme Stack 入门：GitHub 个人博客搭建全流程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-主题与内容显示"&gt;2. 主题与内容显示
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/hugo-stack-image-size-control/" &gt;控制图片大小与点击效果&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/hugo-theme-stack-shortcodes-html-wrapper/" &gt;用 Shortcodes 封装常用 HTML 组件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-内容推荐优化"&gt;3. 内容推荐优化
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/hugo-related-posts-config/" &gt;相关文章推荐配置指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-搜索引擎收录"&gt;4. 搜索引擎收录
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/github-pages-google-sitemap-fix/" &gt;解决 Google Search Console 无法抓取 GitHub Pages 站点地图&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/bing-webmaster-sitemap-submit/" &gt;在 Bing Webmaster Tools 提交站点地图&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>P 社启动器报错解决指南：安装、启动、MOD 与 DLC 问题汇总</title><link>https://ysy.fan/p/paradox-launcher-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/paradox-launcher-troubleshooting-guide/</guid><description>&lt;p&gt;遇到 P 社启动器报错时，请先记录完整的中文或英文提示，再按下方目录进入对应方案。相近的错误可能由不同原因引起，优先选择与提示文字最一致的文章。&lt;/p&gt;
&lt;h2 id="1-安装与更新"&gt;1. 安装与更新
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-01/" &gt;P 社启动器总是更新失败&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-04/" &gt;安装启动器时提示“User installations are disabled via policy on the machine”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-06/" &gt;启动器安装报错 2503&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-11/" &gt;Windows Installer 打开安装日志文件时发生错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-12/" &gt;安装程序写入安装信息时发生错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-15/" &gt;安装启动器报错“Could not open key”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-17/" &gt;安装时提示网络资源不可用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-18/" &gt;无法删除旧版本的 Paradox Launcher v2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-19/" &gt;Paradox Launcher v2 安装向导提前结束&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-20/" &gt;安装时发生严重错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-27/" &gt;提示另一个安装正在进行中&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-启动器无法打开或运行异常"&gt;2. 启动器无法打开或运行异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-02/" &gt;打开启动器时报错无法找到配置文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-03/" &gt;启动器打开时报错 Steam 运行时通讯错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-07/" &gt;启动器数据库错误，数据库迁移失败&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-09/" &gt;缺少 .NET Framework 等，游戏崩溃或意外终止&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-13/" &gt;找不到有效的 Paradox Launcher 安装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-14/" &gt;Bootstrapper 无法启动启动器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-16/" &gt;主进程发生 JavaScript 错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-22/" &gt;无法找到有效的 P 社启动器文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-23/" &gt;安装完成后点击无反应，但任务管理器中正在运行&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-24/" &gt;检测到启动器安装但无法正常工作，提示重新安装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-25/" &gt;无法启动 Paradox Launcher，提示具体路径&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-游戏目录mod-与-dlc"&gt;3. 游戏目录、MOD 与 DLC
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-05/" &gt;DLC 列表出现“无法确认此 DLC 的拥有者”警告&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-08/" &gt;游戏数据访问错误，没有游戏数据目录的读写权限&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-10/" &gt;启动游戏时报错无法创建图形设备&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-21/" &gt;无法添加已下载的群星游戏，所选目录中没有已安装的游戏&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-26/" &gt;无法找到 Documents 文件夹，无法修改 DLC、MOD 和游戏设置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/paradox-launcher-error-28/" &gt;浏览 MOD 时启动器崩溃，提示“生成错误”&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-仍未解决"&gt;4. 仍未解决
&lt;/h2&gt;&lt;p&gt;请保留完整错误文字、复现步骤、截图以及相关日志。不要仅凭相似的界面或按钮文字判断问题，错误提示中的路径、错误代码和英文原文通常是定位问题的关键。&lt;/p&gt;</description></item><item><title>Steam 常见问题解决指南：启动、游戏状态与激活异常</title><link>https://ysy.fan/p/steam-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/steam-troubleshooting-guide/</guid><description>&lt;p&gt;请先确认问题发生在启动游戏、游戏运行中还是关闭游戏后，再选择对应方案。&lt;/p&gt;
&lt;h2 id="1-启动游戏异常"&gt;1. 启动游戏异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steam-error-01/" &gt;Steam 启动游戏特别慢&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steam-error-02/" &gt;点击开始游戏后无法打开，停止按钮又变回开始游戏&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steam-error-04/" &gt;游戏无法打开，Steam 库中却显示正在运行&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-游戏状态无法结束"&gt;2. 游戏状态无法结束
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steam-error-05/" &gt;关闭游戏后 Steam 库一直显示正在停止&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-游戏激活异常"&gt;3. 游戏激活异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steam-error-03/" &gt;删除 Steam 中假入库的游戏，并使用正版 CDK 重新激活覆盖&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>SteamCMD 常见问题解决指南：下载、更新、网络与登录异常</title><link>https://ysy.fan/p/steamcmd-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/steamcmd-troubleshooting-guide/</guid><description>&lt;p&gt;请保留 SteamCMD 的完整英文报错和执行命令。网络、登录和下载问题的提示文字相似，但对应处理方式不同。&lt;/p&gt;
&lt;h2 id="1-启动更新与磁盘空间"&gt;1. 启动、更新与磁盘空间
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-02/" &gt;打开 SteamCMD 后直接闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-04/" &gt;不断重复下载更新，但进度条不变&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-05/" &gt;提示需要 250MB 可用磁盘空间用于更新&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-下载异常"&gt;2. 下载异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-01/" &gt;每次下载都会重复下载之前已下载的内容&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-03/" &gt;下载时报错 Download item failed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-11/" &gt;下载到一半命令行窗口突然闪退&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-网络与-https-错误"&gt;3. 网络与 HTTPS 错误
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-06/" &gt;httpclient.cpp (91) HTTPS 错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-07/" &gt;httpclient.cpp (72) HTTPS 错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-09/" &gt;Steam needs to be online to update&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-登录输入异常"&gt;4. 登录输入异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-08/" &gt;下载时报错 Not logged on&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/steamcmd-error-10/" &gt;登录时无法输入密码或不显示字符&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>联机加速器常见问题解决指南：虚拟网卡、网络与节点连接</title><link>https://ysy.fan/p/multiplayer-accelerator-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/multiplayer-accelerator-troubleshooting-guide/</guid><description>&lt;p&gt;联机加速器问题通常分为虚拟网卡、客户端网络和自建节点三个层面。请按实际提示或发生步骤选择文章。&lt;/p&gt;
&lt;h2 id="1-虚拟网卡安装与识别"&gt;1. 虚拟网卡安装与识别
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/multiplayer-accelerator-error-01/" &gt;网卡安装过程卡死，无法安装虚拟网卡&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/multiplayer-accelerator-error-02/" &gt;已安装网卡，仍提示未检测到虚拟网卡&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-客户端网络异常"&gt;2. 客户端网络异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/multiplayer-accelerator-error-03/" &gt;打开时报错读取数据失败，请检查网络或 DNS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/multiplayer-accelerator-error-04/" &gt;打开后乱码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/multiplayer-accelerator-error-05/" &gt;适配器显示网络电缆被拔出，无法连接服务器&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-自建节点无法连接"&gt;3. 自建节点无法连接
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/multiplayer-accelerator-error-06/" &gt;创建加速器节点后无法通过 TCP 或 UDP 连接&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>群星 DLC 异常解决指南：补丁包、未激活与启动报错汇总</title><link>https://ysy.fan/p/stellaris-dlc-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-dlc-troubleshooting-guide/</guid><description>&lt;p&gt;请先确认异常发生在哪一步：解压补丁包、安装后检查 DLC、启动器列表显示，还是进入游戏或启动游戏时。根据现象进入对应文章，避免因为相似的问题描述而重复操作。&lt;/p&gt;
&lt;h2 id="1-解压补丁包后文件异常"&gt;1. 解压补丁包后文件异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-01/" &gt;解压后文件夹里只有 DLC，没有补丁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-02/" &gt;解压后 DLC 序号不连续&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-dlc-没有正常激活或显示不一致"&gt;2. DLC 没有正常激活或显示不一致
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-03/" &gt;启动器显示有 DLC，但进入游戏后没有&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-04/" &gt;其他 DLC 正常激活，但部分旧 DLC 没有激活&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-05/" &gt;其他 DLC 正常激活，但最新的一个或几个 DLC 没有激活&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-06/" &gt;启动器列表和游戏内都没有 DLC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-启动游戏时报错"&gt;3. 启动游戏时报错
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-dlc-error-07/" &gt;[SmokeAPI] Panic! Failed to hook function ISteamClient_GetISteamInventory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-仍未解决"&gt;4. 仍未解决
&lt;/h2&gt;&lt;p&gt;记录补丁包的目录结构、启动器和游戏内的 DLC 显示状态、完整错误提示以及截图。DLC 问题经常与文件路径、解压层级或当前游戏版本相关，完整信息能显著缩小排查范围。&lt;/p&gt;</description></item><item><title>群星常见报错解决指南：闪退、加载、界面与联机问题汇总</title><link>https://ysy.fan/p/stellaris-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-troubleshooting-guide/</guid><description>&lt;p&gt;请按闪退发生的阶段选择方案：启动时、加载时、主界面或进入存档后。不同阶段对应的日志与排查方向不同。&lt;/p&gt;
&lt;h2 id="1-启动与加载阶段"&gt;1. 启动与加载阶段
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-01/" &gt;最常见的闪退后白框报错&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-02/" &gt;点击开始游戏时直接闪退，没有任何报错&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-03/" &gt;游戏加载到 100% 后闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-04/" &gt;打开游戏时报错缺少 DLL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-05/" &gt;打开游戏黑屏但音乐正常播放&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-14/" &gt;游戏加载到 5% 固定卡死&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-进入游戏后的闪退与界面异常"&gt;2. 进入游戏后的闪退与界面异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-06/" &gt;进入游戏后在主界面闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-07/" &gt;进入游戏后点击新游戏闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-08/" &gt;进入游戏后在自定义国家界面闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-09/" &gt;选择国家并进入地图时闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-10/" &gt;游玩一两分钟后闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-11/" &gt;界面过大，不显示按钮&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-13/" &gt;退出游戏时卡死，只能强制关闭&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-联机异常"&gt;3. 联机异常
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-error-12/" &gt;校验码与其他玩家不同，无法加入联机房间&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>群星离线版常见问题解决指南：闪退、语言与 MOD</title><link>https://ysy.fan/p/stellaris-offline-troubleshooting-guide/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-offline-troubleshooting-guide/</guid><description>&lt;p&gt;按问题出现的操作步骤进入对应文章：启动游戏、设置语言、修改语言文件或加载 MOD。&lt;/p&gt;
&lt;h2 id="1-启动与语言"&gt;1. 启动与语言
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-offline-error-01/" &gt;离线版群星一打开就闪退&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-offline-error-02/" &gt;离线版群星无法调中文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-offline-error-04/" &gt;修改语言文件后启动游戏闪退报错&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-mod-未生效"&gt;2. MOD 未生效
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ysy.fan/p/stellaris-offline-error-03/" &gt;使用 JSGME 添加 MOD 后没有生效&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>使用 TeamViewer 远程控制手机：Android 连接流程与注意事项</title><link>https://ysy.fan/p/teamviewer-remote-control-phone/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/teamviewer-remote-control-phone/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文以电脑远程协助 Android 手机为例。仅应在设备所有者知情并同意的情况下发起连接；涉及验证码、支付和隐私信息时，建议由手机持有人自行操作。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本次使用 TeamViewer 的“会话”功能实现远程控制：电脑端创建会话并生成会话码，Android 手机端加入会话、完成授权后，即可由电脑操作手机。&lt;/p&gt;
&lt;h2 id="1-下载所需客户端"&gt;1. 下载所需客户端
&lt;/h2&gt;&lt;p&gt;先打开 &lt;a class="link" href="https://www.teamviewer.com/en-us/download/portal/windows/" target="_blank" rel="noopener"
&gt;TeamViewer 下载页面&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-36-18.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-36-18.png" alt="TeamViewer 下载页面" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;电脑端选择并下载 &lt;strong&gt;TeamViewer Full Client 64 位版&lt;/strong&gt;。不要下载 TeamViewer QuickSupport，QuickSupport 用于被协助端，无法按本文流程在电脑上创建会话。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-37-04.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-37-04.png" alt="下载 TeamViewer Full Client" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后切换到 Android 下载页面，下载 &lt;strong&gt;TeamViewer QuickSupport&lt;/strong&gt; 的 APK，并将安装包发送到需要被控制的手机上安装。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-38-32.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-38-32.png" alt="下载 TeamViewer QuickSupport" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;为便于下载，本文也提供了对应文件的国内下载地址：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gitlink.org.cn/signriver/file-warehouse/releases/download/TeamViewer/TeamViewer_Setup_x64.exe" target="_blank" rel="noopener"
&gt;TeamViewer Full Client 64 位版&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://gitlink.org.cn/signriver/file-warehouse/releases/download/TeamViewer/TeamViewerQS.apk" target="_blank" rel="noopener"
&gt;TeamViewer QuickSupport APK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从第三方渠道下载 APK 时，请自行核对文件来源和安全性；Android 可能会要求允许浏览器或文件管理器安装未知来源应用。&lt;/p&gt;
&lt;h2 id="2-在电脑端创建会话"&gt;2. 在电脑端创建会话
&lt;/h2&gt;&lt;p&gt;安装完成后，在电脑上打开 TeamViewer Full Client 并登录或注册账号。创建会话码需要登录账号；若界面与下图差异很大，请确认电脑端没有误装成 TeamViewer QuickSupport。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-44-59.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-44-59.png" alt="电脑端 TeamViewer 主界面" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击“创建新会话”，再点击“开始”创建本次远程协助会话。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-47-07.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-47-07.png" alt="创建新的 TeamViewer 会话" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;会话创建后，复制生成的会话码，并通过可信渠道发送给手机持有人。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-47-40.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-47-40.png" alt="复制 TeamViewer 会话码" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-在-android-端安装插件并授权"&gt;3. 在 Android 端安装插件并授权
&lt;/h2&gt;&lt;p&gt;在手机上打开 TeamViewer QuickSupport，先进入“设置”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-54-50.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-54-50.png" alt="打开 QuickSupport 设置" style="max-width: 30%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;进入“权限”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-55-10.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-55-10.png" alt="QuickSupport 权限页面" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;打开“远程控制”功能。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-55-32.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-55-32.png" alt="启用远程控制功能" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首次启用时，需要按提示安装 TeamViewer 的控制插件。点击“安装”下载并安装插件，完成后选择打开 &lt;strong&gt;Universal Add-On&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-56-29.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-56-29.png" alt="安装 TeamViewer 控制插件" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在系统页面中选择“已下载的应用”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-56-47.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-56-47.png" alt="选择已下载的应用" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;找到并打开 TeamViewer Universal Add-On 的授权项。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-57-03.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-57-03.png" alt="打开 Universal Add-On 授权项" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;部分手机会提示该应用的权限受到限制。这通常是系统针对侧载应用或无障碍服务的安全保护。请根据手机品牌和系统提示，进入应用权限管理页解除限制，再返回此处完成启用。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-58-12.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-58-12.png" alt="解除应用权限限制" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接着返回 QuickSupport 的权限页，进入“存储空间”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-58-57.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-58-57.png" alt="授予存储空间权限" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;授予所需权限。如果再次出现权限受限提示，按系统页面给出的步骤解除限制后重试即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-02-59-41.png" target="_blank"&gt;&lt;img src="images/2026-07-28-02-59-41.png" alt="完成存储空间授权" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-加入会话并开始控制"&gt;4. 加入会话并开始控制
&lt;/h2&gt;&lt;p&gt;返回 QuickSupport 首页，点击“加入会话”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-03-00-00.png" target="_blank"&gt;&lt;img src="images/2026-07-28-03-00-00.png" alt="在手机端加入会话" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;输入电脑端发送的会话码，点击“加入”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-03-03-22.png" target="_blank"&gt;&lt;img src="images/2026-07-28-03-03-22.png" alt="输入 TeamViewer 会话码" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此时回到电脑端，点击“加入会议”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-03-03-42.png" target="_blank"&gt;&lt;img src="images/2026-07-28-03-03-42.png" alt="电脑端加入会议" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;手机端会要求确认身份或允许本次连接。确认协助者身份无误后，点击允许。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-03-04-02.png" target="_blank"&gt;&lt;img src="images/2026-07-28-03-04-02.png" alt="手机端确认远程连接" style="max-width: 30%; width: 300px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;连接建立后，电脑端即可显示并控制手机画面。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-28-03-04-25.png" target="_blank"&gt;&lt;img src="images/2026-07-28-03-04-25.png" alt="电脑端远程控制 Android 手机" style="max-width: 100%; width: 1000px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="5-使用结束后"&gt;5. 使用结束后
&lt;/h2&gt;&lt;p&gt;协助完成后，在电脑端结束会话，或由手机端退出 QuickSupport。若仅为临时协助，建议同时关闭 Universal Add-On 的无障碍授权，或卸载 QuickSupport 及其插件，避免设备在无人知情时被再次远程访问。&lt;/p&gt;</description></item><item><title>广电流量卡在线注销与余额退还记录</title><link>https://ysy.fan/p/china-broadcast-card-cancellation-refund/</link><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/china-broadcast-card-cancellation-refund/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文记录一次实际办理过程，页面入口、受理条件和退款时限可能因地区、套餐或运营商规则调整而变化，请以 App 页面和官方客服答复为准。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这次没有前往线下营业厅，而是直接通过中国广电 App 完成了业务退订和销户。线上办理的核心顺序是：&lt;strong&gt;先退订全部业务，再提交自助销户申请&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="1-登录并查看已订业务"&gt;1. 登录并查看已订业务
&lt;/h2&gt;&lt;p&gt;使用需要注销的手机号登录中国广电 App，进入“分类 -&amp;gt; 查询”，然后点击“已订业务”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-18-40-35.png" target="_blank"&gt;&lt;img src="images/2026-07-25-18-40-35.png" alt="已订业务入口" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-逐项退订产品和营销套餐"&gt;2. 逐项退订产品和营销套餐
&lt;/h2&gt;&lt;p&gt;已订业务页通常包含“我的产品”和“营销套餐”两个分页。两个分页中的有效条目都需要分别退订，否则可能无法继续销户。&lt;/p&gt;
&lt;p&gt;每次退订都需要通过手机接收验证码确认。实测中验证码存在发送间隔限制，大约一分钟只能接收一条；如果项目较多，需要预留几分钟逐项完成。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-18-40-58.png" target="_blank"&gt;&lt;img src="images/2026-07-25-18-40-58.png" alt="退订已订业务" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-遇到异常条目时先核对状态"&gt;3. 遇到异常条目时先核对状态
&lt;/h2&gt;&lt;p&gt;我在退订“奎马体验金”时遇到了报错，页面提示关联主体不存在。结合其他条目的状态判断，这个项目可能已被此前的退订操作一并取消，只是 App 状态尚未及时刷新。&lt;/p&gt;
&lt;p&gt;遇到类似情况时，建议先刷新页面并确认该条目是否仍然生效；如无法判断，不要反复操作，可保留截图并通过官方客服确认。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-18-42-32.png" target="_blank"&gt;&lt;img src="images/2026-07-25-18-42-32.png" alt="退订业务时的异常提示" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-提交自助销户申请"&gt;4. 提交自助销户申请
&lt;/h2&gt;&lt;p&gt;确认全部业务均已退订后，进入“分类 -&amp;gt; 服务 -&amp;gt; 自助销户”。随后按照页面提示完成身份验证、签字等流程即可提交申请。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-18-44-31.png" target="_blank"&gt;&lt;img src="images/2026-07-25-18-44-31.png" alt="自助销户入口" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="5-余额退还结果"&gt;5. 余额退还结果
&lt;/h2&gt;&lt;p&gt;本次销户完成后，App 内剩余的可退余额进入退款流程。我的退款在提交销户后的第二天到账。&lt;/p&gt;
&lt;p&gt;到账时间和可退金额会受余额性质、套餐协议和受理规则影响。建议在提交前截图保留余额信息，并保存销户受理记录；若超过页面或客服承诺的时限仍未到账，可凭记录向官方客服查询处理进度。&lt;/p&gt;
&lt;h2 id="6-注意事项"&gt;6. 注意事项
&lt;/h2&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;</description></item><item><title>如何关闭 Steam 手机版令牌</title><link>https://ysy.fan/p/steam-mobile-authenticator-disable/</link><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/steam-mobile-authenticator-disable/</guid><description>&lt;blockquote&gt;
&lt;p&gt;关闭手机令牌会降低账户保护强度，并可能影响交易、社区市场或其他账户功能。操作前请确认仍可访问绑定邮箱，并妥善保存恢复代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-打开手机令牌页面"&gt;1. 打开手机令牌页面
&lt;/h2&gt;&lt;p&gt;打开 Steam 手机版 App，点击底部中间的令牌入口，进入 Steam Guard 手机令牌页面。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-19-44-42.png" target="_blank"&gt;&lt;img src="images/2026-07-25-19-44-42.png" alt="Steam 手机版令牌入口" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-选择移除令牌"&gt;2. 选择移除令牌
&lt;/h2&gt;&lt;p&gt;在令牌页面中选择“移除令牌”，然后按页面提示完成确认。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-19-45-11.png" target="_blank"&gt;&lt;img src="images/2026-07-25-19-45-11.png" alt="移除 Steam 手机令牌" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-确认交易限制提示"&gt;3. 确认交易限制提示
&lt;/h2&gt;&lt;p&gt;确认前，Steam 会提示移除令牌后可能产生的限制。我的页面提示交易会在 15 天内受到影响；具体限制范围和时长应以账户当前显示的说明为准。&lt;/p&gt;
&lt;p&gt;如果账户中有需要保护的库存、余额或交易权限，建议保留手机令牌。只有在确认不再需要该验证方式，并且能够承担相应限制时再继续移除。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-25-19-46-16.png" target="_blank"&gt;&lt;img src="images/2026-07-25-19-46-16.png" alt="移除令牌后的交易限制提示" style="max-width: 100%; width: 250px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;确认移除后，操作即完成。建议重新登录或返回账户安全设置，确认 Steam Guard 状态符合预期。&lt;/p&gt;</description></item><item><title>往日种种。你说的……可是往日？</title><link>https://ysy.fan/p/wangri-zhongzhong/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0800</pubDate><guid>https://ysy.fan/p/wangri-zhongzhong/</guid><description>&lt;blockquote&gt;
&lt;p&gt;不是考证，也不是合集。就是网上找到的旧照片，看看还能不能认出来。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-09-35.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-09-35.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-09-48.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-09-48.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-09-55.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-09-55.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-03.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-03.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-10.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-10.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-19.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-19.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-26.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-26.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-31.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-31.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-37.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-37.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-43.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-43.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-48.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-48.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-53.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-53.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-10-59.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-10-59.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-05.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-05.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-09.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-09.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-14.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-14.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-18.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-18.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-23.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-23.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-32.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-32.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-36.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-36.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-51.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-51.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-11-58.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-11-58.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-03.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-03.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-08.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-08.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-12.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-12.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-16.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-16.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-22.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-22.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-27.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-27.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-30.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-30.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-37.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-37.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-41.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-41.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-45.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-45.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-49.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-49.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-12-53.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-12-53.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-03.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-03.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-08.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-08.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-18.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-18.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-22.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-22.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-27.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-27.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-33.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-33.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-46.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-46.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-50.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-50.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-54.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-54.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-13-58.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-13-58.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-02.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-02.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-06.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-06.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-11.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-11.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-18.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-18.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-22.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-22.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-26.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-26.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-30.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-30.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-33.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-33.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-37.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-37.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-44.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-44.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-48.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-48.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-52.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-52.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-14-56.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-14-56.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-00.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-00.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-10.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-10.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-13.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-13.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-17.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-17.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-21.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-21.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-25.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-25.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-30.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-30.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-34.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-34.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-37.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-37.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-07-21-00-15-43.png" target="_blank"&gt; &lt;img src="images/2026-07-21-00-15-43.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;</description></item><item><title>ChatGPT 频繁「正在重新连接」？开启 Clash TUN 模式即可解决</title><link>https://ysy.fan/p/chatgpt-clash-tun-mode-fix/</link><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/chatgpt-clash-tun-mode-fix/</guid><description>&lt;h2 id="1-问题现象"&gt;1. 问题现象
&lt;/h2&gt;&lt;p&gt;使用 ChatGPT 时，界面顶部频繁弹出 &lt;strong&gt;正在重新连接&lt;/strong&gt;，往往连续重试四五次，看起来已经无法正常使用了。但稍等片刻后，回复又会突然正常输出。&lt;/p&gt;
&lt;p&gt;这种「先失败、后恢复」的表现容易让人误以为是网络波动或 ChatGPT 服务端不稳定。&lt;/p&gt;
&lt;h2 id="2-原因分析"&gt;2. 原因分析
&lt;/h2&gt;&lt;p&gt;问题通常出在代理配置上，而非 ChatGPT 本身。&lt;/p&gt;
&lt;p&gt;ChatGPT 优先通过 &lt;strong&gt;WebSocket&lt;/strong&gt; 与服务器保持长连接，以实现流式输出。在仅开启系统代理、未启用 TUN 模式的情况下，Clash 往往只能接管浏览器走 HTTP 代理的那部分流量，&lt;strong&gt;WebSocket 连接不一定能稳定经过代理&lt;/strong&gt;，于是反复握手失败，界面便不断显示「正在重新连接」。&lt;/p&gt;
&lt;p&gt;多次重试之后，客户端会 &lt;strong&gt;降级为普通 HTTP 请求&lt;/strong&gt; 拉取回复。HTTP 走代理通常没有问题，所以最终又能看到正常输出——给人一种「快放弃了又好了」的错觉。&lt;/p&gt;
&lt;h2 id="3-解决方案开启-clash-tun-模式"&gt;3. 解决方案：开启 Clash TUN 模式
&lt;/h2&gt;&lt;p&gt;TUN 模式在系统网络层接管全部流量，WebSocket 与 HTTP 都会经过 Clash 路由，长连接不再频繁中断。&lt;/p&gt;
&lt;h3 id="31-操作步骤"&gt;3.1. 操作步骤
&lt;/h3&gt;&lt;p&gt;以 Clash Verge 为例：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开 Clash Verge，确保代理已正常运行&lt;/li&gt;
&lt;li&gt;进入 &lt;strong&gt;设置&lt;/strong&gt;，找到 &lt;strong&gt;TUN 模式&lt;/strong&gt;（或 &lt;strong&gt;虚拟网卡模式&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;开启 &lt;strong&gt;TUN 模式&lt;/strong&gt;，按提示授予管理员权限（Windows 首次开启需要）&lt;/li&gt;
&lt;li&gt;重新打开 ChatGPT 页面，发起一次对话验证&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/Clash%20TUN%20模式开启截图.png" target="_blank"&gt; &lt;img src="images/Clash%20TUN%20模式开启截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;若使用其他 Clash 客户端（如 Clash for Windows、Clash Meta 等），同样在设置中开启 TUN / 增强模式即可，名称可能略有不同。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="4-总结"&gt;4. 总结
&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;WebSocket 未稳定走代理&lt;/td&gt;
&lt;td&gt;开启 Clash TUN 模式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;重试多次后又能用&lt;/td&gt;
&lt;td&gt;客户端降级为 HTTP&lt;/td&gt;
&lt;td&gt;同上，无需额外操作&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;开启 TUN 模式后，ChatGPT 的 WebSocket 长连接可以稳定经代理转发，流式输出不再反复断连。&lt;/p&gt;</description></item><item><title>从零搭建文件下载服务器完整教程</title><link>https://ysy.fan/p/file-download-server-setup/</link><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/file-download-server-setup/</guid><description>&lt;h2 id="1-概述"&gt;1. 概述
&lt;/h2&gt;&lt;p&gt;本文记录在阿里云 ECS 上搭建文件下载服务的完整流程：购买服务器、安装 Nginx、配置目录浏览，最后通过公网 IP 访问下载页面。&lt;/p&gt;
&lt;h2 id="2-购买服务器"&gt;2. 购买服务器
&lt;/h2&gt;&lt;h3 id="21-打开产品页并选择优惠套餐"&gt;2.1. 打开产品页并选择优惠套餐
&lt;/h3&gt;&lt;p&gt;打开 &lt;a class="link" href="https://www.aliyun.com/product/ecs?spm=5176.30275541.J_ZGek9Blx07Hclc3Ddt9dg.2.3c872f3dr4kUFP&amp;amp;scm=20140722.S_card@@%E4%BA%A7%E5%93%81@@163972.S_new~UND~card.ID_card@@%E4%BA%A7%E5%93%81@@163972-RL_%E6%9C%8D%E5%8A%A1%E5%99%A8-LOC_2024SPSearchCard-OR_ser-PAR1_0bc059b717827943826333110e2327-V_4-RE_new13-P0_0-P1_0" target="_blank" rel="noopener"
&gt;阿里云 ECS 产品页&lt;/a&gt;，选择 &lt;strong&gt;99 元/年&lt;/strong&gt; 的优惠套餐并点击购买。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-30-13-00-11.png" target="_blank"&gt; &lt;img src="images/2026-06-30-13-00-11.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="22-服务器配置与下单"&gt;2.2. 服务器配置与下单
&lt;/h3&gt;&lt;p&gt;操作系统选择 &lt;strong&gt;Ubuntu 24.04 64 位&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/操作系统选择截图.png" target="_blank"&gt; &lt;img src="images/操作系统选择截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;勾选 &lt;strong&gt;自动续费&lt;/strong&gt;，避免到期后实例被释放。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/自动续费选项截图.png" target="_blank"&gt; &lt;img src="images/自动续费选项截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="23-连接服务器"&gt;2.3. 连接服务器
&lt;/h3&gt;&lt;p&gt;实例创建完成后，进入 ECS 控制台，找到对应实例，点击 &lt;strong&gt;远程连接&lt;/strong&gt;，使用阿里云自带的远程连接功能接入。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/阿里云远程连接截图.png" target="_blank"&gt; &lt;img src="images/阿里云远程连接截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-部署相关软件"&gt;3. 部署相关软件
&lt;/h2&gt;&lt;h3 id="31-基础环境准备"&gt;3.1. 基础环境准备
&lt;/h3&gt;&lt;p&gt;接入服务器后，依次执行以下命令。&lt;/p&gt;
&lt;h4 id="311-更新系统软件包"&gt;3.1.1. 更新系统软件包
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="312-创建下载目录"&gt;3.1.2. 创建下载目录
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo mkdir -p /var/www/download
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="313-设置目录权限"&gt;3.1.3. 设置目录权限
&lt;/h4&gt;&lt;p&gt;将目录所有权赋予当前用户和 Nginx 组：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chown -R &lt;span class="nv"&gt;$USER&lt;/span&gt;:www-data /var/www/download
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo chmod -R &lt;span class="m"&gt;755&lt;/span&gt; /var/www/download
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="32-安装-nginx"&gt;3.2. 安装 Nginx
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install nginx -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="33-删除默认站点"&gt;3.3. 删除默认站点
&lt;/h3&gt;&lt;p&gt;删除 Nginx 自带的默认页面，避免与后续配置冲突：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm -f /etc/nginx/sites-enabled/default
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="34-配置-nginx"&gt;3.4. 配置 Nginx
&lt;/h3&gt;&lt;p&gt;在远程连接界面左侧的 &lt;strong&gt;文件管理&lt;/strong&gt; 中，依次展开 &lt;code&gt;/etc&lt;/code&gt; → &lt;code&gt;nginx&lt;/code&gt; → &lt;code&gt;conf.d&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/进入%20conf.d%20目录截图.png" target="_blank"&gt; &lt;img src="images/进入%20conf.d%20目录截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;右键点击 &lt;code&gt;conf.d&lt;/code&gt; 文件夹，选择 &lt;strong&gt;新建文件&lt;/strong&gt;，命名为 &lt;code&gt;download.conf&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/新建%20download.conf%20文件截图.png" target="_blank"&gt; &lt;img src="images/新建%20download.conf%20文件截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;双击打开 &lt;code&gt;download.conf&lt;/code&gt;，写入以下配置：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-30-13-53-46.png" target="_blank"&gt; &lt;img src="images/2026-06-30-13-53-46.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="s"&gt;default_server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="s"&gt;[::]:80&lt;/span&gt; &lt;span class="s"&gt;default_server&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;location&lt;/span&gt; &lt;span class="s"&gt;/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;root&lt;/span&gt; &lt;span class="s"&gt;/var/www/download&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;autoindex&lt;/span&gt; &lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;autoindex_exact_size&lt;/span&gt; &lt;span class="no"&gt;off&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;autoindex_localtime&lt;/span&gt; &lt;span class="no"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;charset&lt;/span&gt; &lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 核心限速策略：前 5MB 满速，之后限制在 100 KB/s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;limit_rate_after&lt;/span&gt; &lt;span class="mi"&gt;5m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;limit_rate&lt;/span&gt; &lt;span class="mi"&gt;100k&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按 &lt;strong&gt;Ctrl+S&lt;/strong&gt; 保存。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/download.conf%20文件编辑截图.png" target="_blank"&gt; &lt;img src="images/download.conf%20文件编辑截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;回到终端，检查配置语法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出 &lt;code&gt;syntax is ok&lt;/code&gt; 和 &lt;code&gt;test is successful&lt;/code&gt; 即表示配置正确。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-30-13-57-41.png" target="_blank"&gt; &lt;img src="images/2026-06-30-13-57-41.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;重启 Nginx 使配置生效：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="4-挂载文件供下载"&gt;4. 挂载文件供下载
&lt;/h2&gt;&lt;h3 id="41-创建测试文件"&gt;4.1. 创建测试文件
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Hello, this is a test file!&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /var/www/download/test.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="42-访问下载界面"&gt;4.2. 访问下载界面
&lt;/h3&gt;&lt;p&gt;在浏览器访问 &lt;code&gt;http://&amp;lt;公网IP&amp;gt;/&lt;/code&gt;，将 &lt;code&gt;&amp;lt;公网IP&amp;gt;&lt;/code&gt; 替换为实例的公网地址。例如 &lt;code&gt;http://59.110.167.218/&lt;/code&gt;，页面会列出 &lt;code&gt;/var/www/download&lt;/code&gt; 目录下的文件，其中包含刚创建的 &lt;code&gt;test.txt&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/文件下载界面截图.png" target="_blank"&gt; &lt;img src="images/文件下载界面截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="43-上传文件"&gt;4.3. 上传文件
&lt;/h3&gt;&lt;p&gt;后续如需添加文件，在 &lt;strong&gt;文件管理&lt;/strong&gt; 中打开 &lt;code&gt;/var/www/download&lt;/code&gt;，点击左上角 &lt;strong&gt;上传文件&lt;/strong&gt;，选中目标文件即可。上传完成后刷新浏览器页面即可看到新文件。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/上传文件截图.png" target="_blank"&gt; &lt;img src="images/上传文件截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-30-14-08-35.png" target="_blank"&gt; &lt;img src="images/2026-06-30-14-08-35.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="5-总结"&gt;5. 总结
&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;下载目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/var/www/download&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nginx 配置&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/etc/nginx/conf.d/download.conf&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;访问地址&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://&amp;lt;公网IP&amp;gt;/&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;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>水星路由器有线 AP 组网操作流程</title><link>https://ysy.fan/p/mercury-router-mesh-setup/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/mercury-router-mesh-setup/</guid><description>&lt;h2 id="1-重置路由器"&gt;1. 重置路由器
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;拔出路由器 &lt;strong&gt;WAN 口&lt;/strong&gt;上的网线&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-17-57-11.png" target="_blank"&gt; &lt;img src="images/2026-06-20-17-57-11.png" alt="image" style="max-width: 40%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;长按&lt;/strong&gt;路由器上的复位键，重置路由器&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-17-57-30.png" target="_blank"&gt; &lt;img src="images/2026-06-20-17-57-30.png" alt="image" style="max-width: 40%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;等到指示灯&lt;strong&gt;绿灯闪烁&lt;/strong&gt;，说明复位成功&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-17-57-49.png" target="_blank"&gt; &lt;img src="images/2026-06-20-17-57-49.png" alt="image" style="max-width: 40%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-进入管理页面"&gt;2. 进入管理页面
&lt;/h2&gt;&lt;p&gt;用网线或 Wi-Fi 将电脑与路由器连接。&lt;strong&gt;此时不要把墙上的网线插进 WAN 口。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在浏览器地址栏输入路由器管理地址（如水星路由器一般为 &lt;code&gt;192.168.1.1&lt;/code&gt;），回车进入设置页面。&lt;/p&gt;
&lt;h2 id="3-设置密码并跳过向导"&gt;3. 设置密码并跳过向导
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;设置路由器&lt;strong&gt;登录密码&lt;/strong&gt;，点击确认进入下一步&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-18-20-27.png" target="_blank"&gt; &lt;img src="images/2026-06-20-18-20-27.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;在上网设置页面，点击右上角&lt;strong&gt;跳过向导&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-18-20-37.png" target="_blank"&gt; &lt;img src="images/2026-06-20-18-20-37.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-修改-lan-口-ip"&gt;4. 修改 LAN 口 IP
&lt;/h2&gt;&lt;p&gt;进入 &lt;strong&gt;高级设置 → 网络参数 → LAN 口设置&lt;/strong&gt;，将 IP 设置改为&lt;strong&gt;手动&lt;/strong&gt;，并将 IP 地址改为与主路由器不冲突的地址。&lt;/p&gt;
&lt;p&gt;例如主路由器 IP 为 &lt;code&gt;192.168.1.1&lt;/code&gt;，子路由可设为 &lt;code&gt;192.168.1.2&lt;/code&gt;、&lt;code&gt;192.168.1.3&lt;/code&gt; 或 &lt;code&gt;192.168.1.4&lt;/code&gt;。改好后点击&lt;strong&gt;保存&lt;/strong&gt;，页面会自动重启。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-18-20-46.png" target="_blank"&gt; &lt;img src="images/2026-06-20-18-20-46.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="5-关闭-dhcp"&gt;5. 关闭 DHCP
&lt;/h2&gt;&lt;p&gt;进入 &lt;strong&gt;高级设置 → 网络参数 → DHCP 服务器&lt;/strong&gt;，将 DHCP 服务器设为&lt;strong&gt;关&lt;/strong&gt;，点击&lt;strong&gt;保存&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-18-20-59.png" target="_blank"&gt; &lt;img src="images/2026-06-20-18-20-59.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="6-网线接入-lan-口"&gt;6. 网线接入 LAN 口
&lt;/h2&gt;&lt;p&gt;将墙上那根网线插到路由器的 &lt;strong&gt;LAN 口&lt;/strong&gt;（不是 WAN 口）。&lt;/p&gt;
&lt;p&gt;若路由器会自动识别 WAN 口，需先在设置里&lt;strong&gt;关闭自动识别 WAN 口&lt;/strong&gt;选项，再插网线。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-20-step6-plug-lan.png" target="_blank"&gt; &lt;img src="images/2026-06-20-step6-plug-lan.png" alt="网线插入 LAN 口" style="max-width: 40%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;插上网线后，组网流程结束。&lt;/p&gt;</description></item><item><title>文明 6 DLC 补丁包使用演示</title><link>https://ysy.fan/p/civ6-dlc-patch-demo/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/civ6-dlc-patch-demo/</guid><description>&lt;h2 id="1-引言"&gt;1. 引言
&lt;/h2&gt;&lt;p&gt;文明 6 的 DLC 内容较多，手动逐个安装比较麻烦。本补丁包将所需文件打包整理，只需下载、解压、复制粘贴三步，即可完成全部 DLC 的安装。&lt;/p&gt;
&lt;h2 id="2-使用前准备"&gt;2. 使用前准备
&lt;/h2&gt;&lt;p&gt;开始之前，请确认你已具备以下条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作系统&lt;/strong&gt;：Windows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;游戏版本&lt;/strong&gt;：已在 Steam 安装并激活文明 6 本体&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="如何找到游戏根目录"&gt;如何找到游戏根目录
&lt;/h3&gt;&lt;p&gt;在 Steam 中右键点击「文明 6」→ &lt;strong&gt;管理&lt;/strong&gt; → &lt;strong&gt;浏览本地文件&lt;/strong&gt;，打开的文件夹即为游戏根目录，路径通常如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...\Steam\steamapps\common\Sid Meier&amp;#39;s Civilization VI\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="3-下载与解压"&gt;3. 下载与解压
&lt;/h2&gt;&lt;p&gt;补丁包托管在夸克网盘，点击以下链接即可下载：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a class="link" href="https://pan.quark.cn/s/ab226343129f" target="_blank" rel="noopener"
&gt;https://pan.quark.cn/s/ab226343129f&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下载完成后，将压缩包解压到任意方便找到的文件夹。&lt;/p&gt;
&lt;h2 id="4-安装步骤"&gt;4. 安装步骤
&lt;/h2&gt;&lt;p&gt;解压后会得到 &lt;code&gt;Base&lt;/code&gt; 和 &lt;code&gt;DLC&lt;/code&gt; 两个文件夹，将这两个文件夹全部选中，复制后直接粘贴到文明 6 的游戏根目录。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-06-16-02-14-10.png" target="_blank"&gt; &lt;img src="images/2026-06-16-02-14-10.png" alt="解压后的 Base 和 DLC 文件夹" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;粘贴时若提示覆盖文件，选择&lt;strong&gt;全部覆盖&lt;/strong&gt;即可。安装完成后，通过 Steam 正常启动游戏即可。&lt;/p&gt;
&lt;h2 id="5-验证是否成功"&gt;5. 验证是否成功
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;通过 Steam 启动文明 6&lt;/li&gt;
&lt;li&gt;进入游戏主菜单，打开 &lt;strong&gt;额外内容&lt;/strong&gt;（Additional Content）&lt;/li&gt;
&lt;li&gt;确认 DLC 列表中各项内容均已显示为可用状态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若列表中能看到完整 DLC，说明补丁包已安装成功。&lt;/p&gt;
&lt;h2 id="6-重要提示"&gt;6. 重要提示
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;仅供学习交流使用&lt;/strong&gt;，请支持正版游戏&lt;/li&gt;
&lt;li&gt;使用本补丁包造成的任何后果，用户自行承担&lt;/li&gt;
&lt;li&gt;建议定期备份游戏存档&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>论文阅读：Falcon - Fair Active Learning using Multi-armed Bandits</title><link>https://ysy.fan/p/falcon-fair-active-learning/</link><pubDate>Sun, 22 Mar 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/falcon-fair-active-learning/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;学术声明 / Academic Statement&lt;/strong&gt;
本文是个人学习笔记，仅用于学术交流和知识分享，非商业用途。
文中观点为作者个人理解和分析，不代表原论文作者立场。
如需引用原论文，请查阅官方出版版本。
版权归原论文作者和 VLDB Endowment 所有。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-论文基本信息"&gt;1. 论文基本信息
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：Falcon: Fair Active Learning using Multi-armed Bandits&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者&lt;/strong&gt;：Ki Hyun Tae, Hantian Zhang, Jaeyoung Park, Kexin Rong, Steven Euijong Whang&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单位&lt;/strong&gt;：KAIST / Georgia Institute of Technology&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发表期刊&lt;/strong&gt;：Proceedings of the VLDB Endowment, Vol. 17, No. 5, 2024，pp. 952–965&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOI&lt;/strong&gt;：&lt;a class="link" href="https://doi.org/10.14778/3641204.3641207" target="_blank" rel="noopener"
&gt;10.14778/3641204.3641207&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;：&lt;a class="link" href="https://github.com/khtae8250/Falcon" target="_blank" rel="noopener"
&gt;https://github.com/khtae8250/Falcon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-背景与痛点"&gt;2. 背景与痛点
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-22-15-19-45.png" target="_blank"&gt; &lt;img src="images/2026-03-22-15-19-45.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="21-传统主动学习会恶化公平性"&gt;2.1 传统主动学习会恶化公平性
&lt;/h3&gt;&lt;p&gt;传统 AL 唯一的 KPI 是“提升模型整体准确率”，它通常倾向于挑选模型最不确定的样本。假设某个少数群体在当前数据集中本就缺乏代表性，如果 AL 盲目追求整体准确率而不特意挑选该群体的样本，标注后的新数据集会使得不同群体间的准确率差异进一步拉大，导致模型更加不公平。&lt;/p&gt;
&lt;h3 id="22-标签缺失困境"&gt;2.2 标签缺失困境
&lt;/h3&gt;&lt;p&gt;为了提升公平性，我们必须针对性地去扩充“目标子群”的样本。但矛盾在于：我们在挑选样本时，这些样本是“无标签”的！如果用模型现有的预测结果去生成“伪标签”也不靠谱，因为 AL 专挑模型“拿不准”的样本，这些样本的伪标签错误率极高。&lt;/p&gt;
&lt;h3 id="23-准确率与公平性的固有冲突"&gt;2.3 准确率与公平性的固有冲突
&lt;/h3&gt;&lt;p&gt;在许多真实场景下，公平性目标与准确率目标是相互冲突的。比如，一个在整体准确率上表现完美的分类器，如果不加干预，往往无法保证在各个子群体上具有相同的正类预测率。如何在有限的标注预算下，优雅地平衡这两者，是一个工程和理论上的双重难题。&lt;/p&gt;
&lt;h2 id="3-方法概述"&gt;3. 方法概述
&lt;/h2&gt;&lt;h3 id="31-公平性定义回顾"&gt;3.1 公平性定义回顾
&lt;/h3&gt;&lt;p&gt;作者首先概述了多种主流的公平性定义：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-15-35-20.png" target="_blank"&gt; &lt;img src="images/2026-03-22-15-35-20.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;人口统计学均等性（Demographic Parity, DP）&lt;/strong&gt;：不考虑模型的预测准确率，要求模型对各群体（如不同性别、族裔）给出正类预测的比例基本相同，即仅按群体分布强行实现表面上的公平。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;均衡概率（Equalized Odds, ED）&lt;/strong&gt;：要求对于正类样本，各群体被正确判为正类的概率一致；对于负类，各群体被判为负类的概率也要一致，也就是无论正反向，不同群体的准确率相当。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平等机会（Equal Opportunity, EO）&lt;/strong&gt;：只关注正向，即对于所有实际为正的样本，各群体被判定为正的概率必须一致，不考虑负例。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预测一致性（Predictive Parity, PP）&lt;/strong&gt;：要求模型在不同群体中判为正类的样本，其实际为正的比例需大体一致，也就是预测出的“好人”在各群体中都同样可靠。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;均衡错误率（Equal Error Rate, EER）&lt;/strong&gt;：要求各群体在错误分类上的比率相同，不能让某一群体承担更高的错误风险。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-整体流程"&gt;3.2 整体流程
&lt;/h3&gt;&lt;p&gt;Falcon 的整体工作流程如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-14-36-30.png" target="_blank"&gt; &lt;img src="images/2026-03-22-14-36-30.png" alt="image" style="max-width: 100%; width: 700px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;确定公平性准则&lt;/strong&gt;：用户指定一种公平性定义（如 DP、EO 等），作为后续优化的目标；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;识别目标子群体&lt;/strong&gt;：算法根据当前模型状态和验证集，自动识别当前最需要补充样本的目标子群；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;策略选择&lt;/strong&gt;：利用**对抗性多臂老虎机（Adversarial MAB）**机制，结合历史反馈，动态选择当前最优的采样策略；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;试错标注&lt;/strong&gt;：从未标注数据池中依据所选策略挑选样本交由人工标注——若标签与预期相符，则加入训练集；若不符，则暂缓纳入（postpone）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型更新与反馈&lt;/strong&gt;：用新增标注数据重训模型，依据公平性改善情况更新 MAB 参数；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;循环迭代&lt;/strong&gt;：重复步骤 2–5，直至标注预算耗尽，逐步实现公平性与准确率的平衡提升。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="4-核心方法详解"&gt;4. 核心方法详解
&lt;/h2&gt;&lt;p&gt;首先目标群体样本的标签是缺失的。最直接的想法是：让现在的模型去“猜”一个伪标签。但是在主动学习中，我们最想要的是信息量大的样本。但是信息量大的样本正是模型最拿不准的样本，如果你让模型去猜它最拿不准的样本，猜错的概率极大。把带有错误标签的样本强行喂给模型，不仅学不到东西，还会引入更严重的偏见。
所以就尝试筛选出最有价值的样本花钱请人工标注，如果符合要求就直接用，不符合要求就先搁置，可能以后处理其他目标时会用到&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-15-22-41.png" target="_blank"&gt; &lt;img src="images/2026-03-22-15-22-41.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;对于推迟错误样本使用的可行性作者也进行了证明，首先作者引用信息论中的香浓熵证明当样本预测概率为 0.5 时他的信息量达到最大，所以作者就进行了一个简单的实验，把试错法和其他基线算法对比，其他算法认为人工标注的样本不管是好是坏只要用于训练就对模型性能有帮助，而试错法会推迟使用不合规定的样本，最终结果一目了然，试错法推迟了 4000 个样本中的近 2900 个，只使用了其中 1100 个，同时只选取预测概率为 0.5 的样本，但试错法的性能远超其他基线模型。&lt;/p&gt;
&lt;p&gt;虽然试错法已经很优秀了，但是他浪费的标注费用有些高，所以接下来我们就要解决这个问题&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-15-40-33.png" target="_blank"&gt; &lt;img src="images/2026-03-22-15-40-33.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在选择样本策略时，我们会遇到如下难题：以图为例，模型对某一群体的样本进行了偏见可视化，虚线右侧为正类，左侧为负类的位置。假设有两个未标注的样本，分别位于虚线两侧。假如我们想要减少偏见，需要推动决策边界（虚线）左移。理论上，最理想的做法是选择左侧的未标注样本并希望其真实标签为正类，这样模型会大幅调整决策边界，从而降低偏见。但现实中，左侧样本大概率与其周围样本一致，属于负类。如果该样本被标注为负类，就白白浪费了一次宝贵的标注机会，这属于高风险高收益的尝试。相比之下，右侧的未标注样本很可能是正类，但是标注出来对模型影响有限，算是低风险低回报的策略。如何在高风险高收益与低风险低回报之间权衡取舍，是样本选择策略需要重点解决的问题。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-15-53-22.png" target="_blank"&gt; &lt;img src="images/2026-03-22-15-53-22.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一个自然的想法是：既然始终选取预测概率为 0.5 的样本效果不理想，那如果始终选择概率为 0.3 或 0.7 的样本会不会更好？针对这一疑问，作者进行了实证分析。实验结果表明，在数据集 a 中，群体 1 在初期以 0.5 概率样本表现最佳，但后期 0.7 概率样本的效果反超；而群体 2 则始终以 0.5 概率样本效果最好。这说明同一数据集中，不同子群体适合不同的采样策略。同时，横向比较 a、b 两个数据集可以发现，a 集中各子群以 0.7 概率样本表现普遍优于 0.3；而在 b 集中恰好相反，0.3 概率效果高于 0.7。由此可见，单一固定的采样策略难以兼顾不同群体和不同数据分布的公平性需求，因此需要一种灵活、可动态调整的策略来进行样本选择——这正是引入对抗性多臂老虎机（Adversarial MAB）方法的动因。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-23-13-23-17.png" target="_blank"&gt; &lt;img src="images/2026-03-23-13-23-17.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;与传统多臂老虎机（MAB）不同，对抗性多臂老虎机在每次选择后，拉杆（即选择某策略）的概率会动态调整，这种机制更贴合我们在实际训练中遇到的动态环境。例如：最初我们可能优先优化某个弱势群体，但随着优化的推进，该群体表现提升，甚至变为新的“强势”群体，此时就需要将资源转向其它尚未得到足够关注的群体以实现整体平衡。&lt;/p&gt;
&lt;p&gt;为此，作者引入了经典的 EXP3 算法。EXP3 的核心思想是：奖励高的策略，其被选概率将在下一轮中指数级增加，但与此同时仍会保留一部分探索性——即始终为所有策略保留一定的基础概率，避免算法陷入局部最优。这种自适应调整机制能兼顾公平性与模型整体表现。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-16-53-42.png" target="_blank"&gt; &lt;img src="images/2026-03-22-16-53-42.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在实际应用中，作者发现存在两个主要挑战。首先，由于每轮被主动标注并纳入训练的样本数量很少（例如一万个样本中仅有十个被人工标注），即便这些样本对模型性能的提升极其有限（如仅提升 0.00001），对抗性多臂老虎机（EXP3 算法）的反馈信号也会非常弱，难以有效调整策略。为解决这一问题，作者采用了预先多轮训练，记录参数变化的基线；随后将每轮因标注新增样本带来的变化幅度与该基线归一化，将归一化后的结果限定在 0-1 区间，再送入 EXP3 算法进行更新，这样能稳定激励信号，提升策略调整的敏感性。&lt;/p&gt;
&lt;p&gt;其次，EXP3 本身容易陷入局部最优：比如初期某个采样概率（如 0.4）表现较好、被频繁强化，久而久之其概率会被指数级放大，导致其他采样概率（如 0.5）几乎被排挤，后续即便 0.5 更合适也难以“翻身”。为此，作者提出了“奖励传播”机制：当某个采样概率被强化时，会将一半的奖励分摊给其相邻的概率（如 0.4 被强化，则 0.3 和 0.5 也获得部分奖励），以保证探索空间的多样性，使其他策略在后期仍有机会切换出来，从而有效缓解陷入局部最优的问题。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-32-28.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-32-28.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在解决样本选择与处理策略后，下一步的核心目标是有效权衡公平性与模型准确率。为追求公平性而显著牺牲准确率是不可取的。因此，FALcon 框架在每轮训练中引入了一个权衡参数 λ：每轮训练以 (1-λ) 的概率采用常规主动学习策略，专注提升模型准确率；以 λ 的概率按照 FALcon 的公平性机制进行样本选择和模型优化，实现公平与准确性的动态平衡。&lt;/p&gt;
&lt;h2 id="5-实验设计与结果"&gt;5. 实验设计与结果
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-22-16-54-58.png" target="_blank"&gt; &lt;img src="images/2026-03-22-16-54-58.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;作者在实验中选择了公平性学习领域中最具代表性的数据集，公平性得分采用所有子群体（群体）的性能最高值与最低值之差来衡量，差值越大表示公平性越差。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-28-26.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-28-26.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;对比方法涵盖了传统的主动学习策略，如信息熵（Entropy）和随机采样（Random），同时引入了专为公平主动学习设计的先进方法（SOTA），如 FaL 和 D-FA2L。模型方面，作者采用了逻辑回归和基础神经网络，而未选择如 Transformer 或 ResNet 这类复杂模型，原因有三：首先，所用数据集类型以表格数据为主，复杂模型优势不明显；其次，主动学习需频繁对新样本进行重训练，复杂网络训练代价高昂；最后，简化模型有助于排除模型本身能力对实验结果的干扰，使实验更能反映采样策略（如多臂老虎机机制）的实际效果。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-13-25.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-13-25.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从结果图中可以看出，FALcon 在群体平权和公平性指标上显著优于其他方法，实现了高公平性，而其他算法则存在高准确率但公平性较低的问题。此外，FALcon 通过调整 λ 参数，能够灵活实现不同的准确率与公平性组合，用户可根据实际需求自主权衡选择。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-26-08.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-26-08.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以表格的形式看更清晰，之前最新的算法只能略微提升公平性，但是我们的算法有碾压式的提升&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-27-14.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-27-14.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而且我们的算法不仅效果好，耗时也不长，算是耗时最短的那一批&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-44-57.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-44-57.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从图 7 可以看出，虽然我们的方法在与固定概率策略相比时并非最优，但其表现已经非常接近最优方案。考虑到在实际应用中我们无法拥有“上帝视角”，需要合理分配预算进行探索，因此能取得与最优策略相近的效果已经极具实用价值，充分体现了方法的有效性和探索带来的收益。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-47-07.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-47-07.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图 8 详细展示了多臂老虎机策略的动态调整过程。初始时，各拉杆（采样策略）被选择的概率均为 0.1。随着迭代推进，0.6 拉杆因表现优异逐渐被算法“青睐”，其被选概率稳步提升并趋于 0.4，而其他拉杆的选择概率则逐步降低，趋近于零。从图 b 的对比实验也可以看出，作者用各种固定概率策略进行了测试，最终结果验证了 0.6 确实是表现最优的选择方案。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-58-02.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-58-02.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;表五是每批次样本数量对结果的影响，虽然批次数量为 1 时效果最好，但是考虑到计算成本，默认选 10&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-17-59-18.png" target="_blank"&gt; &lt;img src="images/2026-03-22-17-59-18.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;表六是拉杆数量对结果的影响，结果表明拉杆并不是越多越好，当拉杆数量提升到 9 时，性能反而有所下降，毕竟探索也有成本，最后研究发现拉杆设置 3-5 个即可&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-18-10-42.png" target="_blank"&gt; &lt;img src="images/2026-03-22-18-10-42.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;表七是消融实验，可以看到仅仅装上试错推迟机制，公平性就从 0.1 提升到了 0.8，整个算法里试错推迟机制起码起到 80% 的作用，不过对抗性多臂老虎机虽然对性能提升小，但是作者提到他节省了高达 25% 左右的标注预算，比起性能提升他更能省钱&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-18-14-23.png" target="_blank"&gt; &lt;img src="images/2026-03-22-18-14-23.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;表八是作者给别人的算法装上自己研究的试错推迟机制，可以看到他人算法的性能有很大提升，但是还是不及我们的算法&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-18-17-04.png" target="_blank"&gt; &lt;img src="images/2026-03-22-18-17-04.png" alt="image" style="max-width: 100%; width: 600px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;之前提到我们用的算法是 exp3，但是市面上有更复杂先进的算法，作者一一尝试后证明，不用情况下不同算法都有可能是最佳算法，而且大家差距不大，不如用最基础的减小算法难度和复杂度&lt;/p&gt;
&lt;h2 id="6-关于联邦遗忘学习的拓展"&gt;6. 关于联邦遗忘学习的拓展
&lt;/h2&gt;&lt;p&gt;论文中中的公平性主要关注于不同子群体间的表现差异。如果发现某些子群体处于不公平状态，可以采用多臂老虎机选择采样策略，从样本池中优先挑选弱势群体的样本交由人工标注，标注后再判断是否纳入训练，不合适则推迟使用。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-23-13-49-08.png" target="_blank"&gt; &lt;img src="images/2026-03-23-13-49-08.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&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;h2 id="7-参考文献"&gt;7. 参考文献
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;原文引用格式（ACM）：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Ki Hyun Tae, Hantian Zhang, Jaeyoung Park, Kexin Rong, and Steven Euijong Whang.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Falcon: Fair Active Learning using Multi-armed Bandits.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Proc. VLDB Endow. 17, 5 (2024), 952–965.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DOI: 10.14778/3641204.3641207
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;相关链接：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;论文 DOI：&lt;a class="link" href="https://doi.org/10.14778/3641204.3641207" target="_blank" rel="noopener"
&gt;https://doi.org/10.14778/3641204.3641207&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;代码仓库：&lt;a class="link" href="https://github.com/khtae8250/Falcon" target="_blank" rel="noopener"
&gt;https://github.com/khtae8250/Falcon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Anaconda 安装教程</title><link>https://ysy.fan/p/anaconda-install-guide/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/anaconda-install-guide/</guid><description>&lt;h2 id="1-下载安装包"&gt;1. 下载安装包
&lt;/h2&gt;&lt;p&gt;前往 &lt;a class="link" href="https://www.anaconda.com/download" target="_blank" rel="noopener"
&gt;Anaconda 官网&lt;/a&gt; 下载安装包。
进入页面后，点击 &lt;strong&gt;Skip Registration&lt;/strong&gt;（跳过注册）即可直接下载，无需注册账号。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-20-23-42-46.png" target="_blank"&gt; &lt;img src="images/2026-03-20-23-31-03.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;跳过注册后，根据自己的操作系统选择对应的版本下载。以 Windows 为例，点击 &lt;strong&gt;Anaconda Distribution&lt;/strong&gt; 下的 &lt;strong&gt;Windows 64-Bit Graphical Installer&lt;/strong&gt; 即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-20-23-42-46.png" target="_blank"&gt; &lt;img src="images/2026-03-20-23-42-46.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-安装"&gt;2. 安装
&lt;/h2&gt;&lt;p&gt;下载完成后，双击安装程序（&lt;code&gt;.exe&lt;/code&gt; 文件）启动安装向导。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-20-23-45-39.png" target="_blank"&gt; &lt;img src="images/2026-03-20-23-45-39.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="21-欢迎界面"&gt;2.1. 欢迎界面
&lt;/h3&gt;&lt;p&gt;打开安装向导后，点击 &lt;strong&gt;Next&lt;/strong&gt; 继续。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/欢迎界面截图.png" target="_blank"&gt; &lt;img src="images/欢迎界面截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="22-许可协议"&gt;2.2. 许可协议
&lt;/h3&gt;&lt;p&gt;阅读许可协议后，点击 &lt;strong&gt;I Agree&lt;/strong&gt; 同意并继续。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/许可协议截图.png" target="_blank"&gt; &lt;img src="images/许可协议截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="23-选择安装类型"&gt;2.3. 选择安装类型
&lt;/h3&gt;&lt;p&gt;选择 &lt;strong&gt;Just Me&lt;/strong&gt;（默认推荐），然后点击 &lt;strong&gt;Next&lt;/strong&gt; 继续。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-03-14-52.png" target="_blank"&gt; &lt;img src="images/2026-03-21-03-14-52.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="24-选择安装位置"&gt;2.4. 选择安装位置
&lt;/h3&gt;&lt;p&gt;默认安装路径为 &lt;code&gt;C:\Users\用户名\anaconda3&lt;/code&gt;，建议保持默认，直接点击 &lt;strong&gt;Next&lt;/strong&gt; 继续。&lt;/p&gt;
&lt;p&gt;若需要安装到其他位置，请注意：&lt;strong&gt;路径中不能含有中文&lt;/strong&gt;，否则可能导致运行异常。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-03-15-34.png" target="_blank"&gt; &lt;img src="images/2026-03-21-03-15-34.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="25-高级安装选项"&gt;2.5. 高级安装选项
&lt;/h3&gt;&lt;p&gt;建议&lt;strong&gt;全部勾选&lt;/strong&gt;，然后点击 &lt;strong&gt;Install&lt;/strong&gt; 开始安装。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create shortcuts&lt;/strong&gt;：创建快捷方式，方便从开始菜单启动 Anaconda 相关工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add installation to my PATH&lt;/strong&gt;：将 Anaconda 加入系统环境变量，这样在普通 cmd/PowerShell 中也能直接使用 &lt;code&gt;conda&lt;/code&gt; 命令。虽然安装器标注了&amp;quot;不推荐&amp;quot;，但那主要是针对同时安装了多个 Python 的用户，担心产生冲突。如果你只使用 Anaconda，勾上更方便；如果你熟悉环境变量配置，也可以不勾，后续手动添加&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Register Anaconda3 as my default Python&lt;/strong&gt;：将 Anaconda 的 Python 注册为系统默认 Python，VSCode、PyCharm 等工具可自动识别&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear the package cache upon completion&lt;/strong&gt;：安装完成后清理缓存，释放磁盘空间&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-03-20-03.png" target="_blank"&gt; &lt;img src="images/2026-03-21-03-20-03.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="26-安装完成"&gt;2.6. 安装完成
&lt;/h3&gt;&lt;p&gt;等待安装进度条跑完，提示 &lt;strong&gt;Installation Complete&lt;/strong&gt; 后，点击 &lt;strong&gt;Next&lt;/strong&gt; 继续。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/安装完成截图.png" target="_blank"&gt; &lt;img src="images/安装完成截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="27-云端推广页"&gt;2.7. 云端推广页
&lt;/h3&gt;&lt;p&gt;这是 Anaconda 的云服务推广页面，直接点击 &lt;strong&gt;Next&lt;/strong&gt; 跳过即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/云端推广页截图.png" target="_blank"&gt; &lt;img src="images/云端推广页截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="28-完成安装"&gt;2.8. 完成安装
&lt;/h3&gt;&lt;p&gt;取消勾选 &lt;strong&gt;Welcome to Anaconda&lt;/strong&gt;，然后点击 &lt;strong&gt;Finish&lt;/strong&gt; 完成安装。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/完成安装截图.png" target="_blank"&gt; &lt;img src="images/完成安装截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-验证安装"&gt;3. 验证安装
&lt;/h2&gt;&lt;p&gt;按 &lt;code&gt;Win + R&lt;/code&gt; 打开运行窗口，输入 &lt;code&gt;cmd&lt;/code&gt; 后回车打开命令提示符。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/运行窗口截图.png" target="_blank"&gt; &lt;img src="images/运行窗口截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在命令提示符中依次输入以下命令验证安装是否成功：&lt;/p&gt;
&lt;p&gt;输入 &lt;code&gt;python&lt;/code&gt; 回车，若显示 Python 版本信息（如 &lt;code&gt;Python 3.13.9 | packaged by Anaconda&lt;/code&gt;）则说明 Python 安装正常，输入 &lt;code&gt;exit()&lt;/code&gt; 退出。&lt;/p&gt;
&lt;p&gt;再输入 &lt;code&gt;conda --version&lt;/code&gt;，若显示版本号（如 &lt;code&gt;conda 25.11.1&lt;/code&gt;）则说明 Anaconda 安装成功。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/验证截图.png" target="_blank"&gt; &lt;img src="images/验证截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;</description></item><item><title>用 LaTeX-OCR 在 Word/WPS 中优雅地插入数学公式</title><link>https://ysy.fan/p/latex-ocr-for-word-wps/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/latex-ocr-for-word-wps/</guid><description>&lt;h2 id="1-前置准备"&gt;1. 前置准备
&lt;/h2&gt;&lt;p&gt;本工具基于 Python 运行，建议使用 Anaconda 管理 Python 环境。如果尚未安装，可以参考：&lt;a class="link" href="https://ysy.fan/p/anaconda-install-guide/" &gt;Anaconda 安装教程&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-安装-latex-ocr"&gt;2. 安装 LaTeX-OCR
&lt;/h2&gt;&lt;p&gt;按 &lt;code&gt;Win&lt;/code&gt; 键搜索 &lt;strong&gt;Anaconda Prompt&lt;/strong&gt;，打开它。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-19-17-13.png" target="_blank"&gt; &lt;img src="images/2026-03-21-19-17-13.png" alt="image" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 Anaconda Prompt 中依次输入以下命令，创建并激活一个独立的虚拟环境：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda create -n latexocr &lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3.12
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="images/2026-03-21-03-45-36.png" target="_blank"&gt; &lt;img src="images/2026-03-21-03-45-36.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda activate latexocr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="images/2026-03-21-03-45-49.png" target="_blank"&gt; &lt;img src="images/2026-03-21-03-45-49.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="22-安装-pytorch"&gt;2.2. 安装 PyTorch
&lt;/h3&gt;&lt;p&gt;LaTeX-OCR 依赖 PyTorch 运行模型。由于每个人的显卡和系统环境不同，建议前往 &lt;a class="link" href="https://pytorch.org/get-started/locally/" target="_blank" rel="noopener"
&gt;PyTorch 官网&lt;/a&gt; 根据自己的配置生成对应的安装指令。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-19-17-59.png" target="_blank"&gt; &lt;img src="images/2026-03-21-19-17-59.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;各选项说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PyTorch Build&lt;/strong&gt;：选 &lt;code&gt;Stable&lt;/code&gt;（稳定版）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your OS&lt;/strong&gt;：选对应操作系统，Windows 用户选 &lt;code&gt;Windows&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package&lt;/strong&gt;：选 &lt;code&gt;Pip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language&lt;/strong&gt;：选 &lt;code&gt;Python&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compute Platform&lt;/strong&gt;：有 NVIDIA 显卡选对应的 CUDA 版本，没有独显或不确定选 &lt;code&gt;CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;如何确认自己的 CUDA 版本：按 &lt;code&gt;Win + R&lt;/code&gt; 输入 &lt;code&gt;cmd&lt;/code&gt; 回车，在终端输入 &lt;code&gt;nvidia-smi&lt;/code&gt;，右上角显示的即为支持的最高 CUDA 版本。选择时要保证选的版本 &lt;strong&gt;≤&lt;/strong&gt; 该数字。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;选好后复制页面生成的命令，粘贴到 Anaconda Prompt 中执行即可（文件较大约 2GB+，请耐心等待）。&lt;/p&gt;
&lt;p&gt;以 CUDA 13.0 为例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="23-安装-pix2tex"&gt;2.3. 安装 pix2tex
&lt;/h3&gt;&lt;p&gt;PyTorch 安装完成后，继续输入以下命令安装 LaTeX-OCR（含 GUI 界面）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install &lt;span class="s2"&gt;&amp;#34;pix2tex[gui]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装完成后，首次运行时会自动下载模型权重文件（约 100MB+），下载完毕后 GUI 窗口会自动弹出。&lt;/p&gt;
&lt;h2 id="3-使用方法"&gt;3. 使用方法
&lt;/h2&gt;&lt;p&gt;安装完成后，在 Anaconda Prompt 中输入以下命令启动 LaTeX-OCR：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;latexocr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="images/启动命令截图.png" target="_blank"&gt; &lt;img src="images/启动命令截图.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;启动后界面如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/GUI界面截图.png" target="_blank"&gt; &lt;img src="images/GUI界面截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;界面各选项说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Format&lt;/strong&gt;：输出格式选择
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Raw&lt;/code&gt;：原始 LaTeX 代码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LaTeX-$&lt;/code&gt;：行内公式格式（适合嵌在文字中间）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LaTeX-$$&lt;/code&gt;：独立公式格式（适合单独一行展示）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sympy&lt;/code&gt;：Python sympy 格式（复杂公式容易报错，日常不推荐）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snip [Alt+S]&lt;/strong&gt;：截图识别快捷键&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temperature&lt;/strong&gt;：识别参数，值越低越保守准确，默认 0.33 即可&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有三种方式输入公式图片：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用其他截图工具截图后，直接将图片&lt;strong&gt;粘贴&lt;/strong&gt;到顶部白色区域&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Snip&lt;/strong&gt; 按钮，使用程序内置截图框选公式区域&lt;/li&gt;
&lt;li&gt;先单击程序窗口使其成为焦点，再按 &lt;strong&gt;Alt+S&lt;/strong&gt; 快捷键截图&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;截图后程序会自动识别公式，结果显示在中间文本框中，直接复制即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-04-05-48.png" target="_blank"&gt; &lt;img src="images/2026-03-21-04-05-48.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-插入-word"&gt;4. 插入 Word
&lt;/h2&gt;&lt;p&gt;识别完成后，下方文本框中即为可直接使用的 LaTeX 代码，复制它。&lt;/p&gt;
&lt;p&gt;以下图为例，识别结果为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\operatorname*{min}_{w}F(w)=\sum_{k=1}^{K}p_{k}F_{k}(w)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="images/识别结果截图.png" target="_blank"&gt; &lt;img src="images/识别结果截图.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 WPS 或 Word 中，光标定位到需要插入公式的位置，点击菜单栏&lt;strong&gt;插入 → 公式&lt;/strong&gt;，在弹出的公式编辑框中将识别结果粘贴进去即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-19-20-05.png" target="_blank"&gt; &lt;img src="images/2026-03-21-19-20-05.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-04-47-58.png" target="_blank"&gt; &lt;img src="images/2026-03-21-04-47-58.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Word 用户注意&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;粘贴后需要手动切换两个设置，否则公式无法正确渲染：左上角输入类型选择 &lt;strong&gt;LaTeX&lt;/strong&gt;（默认是 Unicode）；右侧格式选择&lt;strong&gt;专业&lt;/strong&gt;（选&amp;quot;线性&amp;quot;则公式不会转换为排版格式）。&lt;/li&gt;
&lt;li&gt;Word 不支持 &lt;code&gt;\operatorname*&lt;/code&gt; 语法和 &lt;code&gt;$...$&lt;/code&gt; 包裹，粘贴前需手动处理：删去开头的 &lt;code&gt;$\operatorname*&lt;/code&gt; 及结尾的 &lt;code&gt;$&lt;/code&gt;。例如 WPS 可直接使用的 &lt;code&gt;$\operatorname*{min}_{w}F(w)=\sum_{k=1}^{K}p_{k}F_{k}(w)$&lt;/code&gt;，在 Word 中需改为 &lt;code&gt;{min}_{w}F(w)=\sum_{k=1}^{K}p_{k}F_{k}(w)&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-19-25-18.png" target="_blank"&gt; &lt;img src="images/2026-03-21-19-25-18.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="5-创建一键启动脚本"&gt;5. 创建一键启动脚本
&lt;/h2&gt;&lt;p&gt;每次使用都要打开 Anaconda Prompt 再手动输命令比较繁琐，可以创建一个批处理脚本实现双击启动。&lt;/p&gt;
&lt;p&gt;在桌面新建一个文本文档，输入以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Set ws = CreateObject(&amp;#34;Wscript.Shell&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ws.run &amp;#34;cmd /c conda run -n latexocr latexocr&amp;#34;, 0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="images/2026-03-21-04-25-44.png" target="_blank"&gt; &lt;img src="images/2026-03-21-04-25-44.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;按 &lt;code&gt;Ctrl+S&lt;/code&gt; 保存。如果看不到文件后缀名，在文件资源管理器中点击顶部&lt;strong&gt;查看 → 显示 → 文件扩展名&lt;/strong&gt;将其勾选。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/显示文件扩展名截图.png" target="_blank"&gt; &lt;img src="images/显示文件扩展名截图.png" alt="image" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;之后选中文件按 &lt;code&gt;F2&lt;/code&gt; 重命名，将其改为 &lt;code&gt;公式识别.vbs&lt;/code&gt;，双击即可静默启动 LaTeX-OCR（不会弹出黑色命令行窗口）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;双击后不会立即弹出窗口，后台仍需要激活环境并启动程序，请耐心等待几秒钟。如果怎么双击都没有反应，可以检查一下 vbs 文件是否保存成功、内容是否为空。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-04-24-56.png" target="_blank"&gt; &lt;img src="images/2026-03-21-04-24-56.png" alt="image" style="max-width: 100%; width: 300px;"/&gt; &lt;/a&gt;&lt;/p&gt;</description></item><item><title>PC 端《三角洲行动》启动画面放大、纯色闪屏的解决方案</title><link>https://ysy.fan/p/delta-force-dpi-scaling-fix/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/delta-force-dpi-scaling-fix/</guid><description>&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;前言&lt;/strong&gt;：如果你第一次启动《三角洲行动》时遇到画面放大或纯色闪屏，别慌！这是 Windows 高 DPI 缩放与游戏引擎的冲突。本文提供解决方案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1--问题现象"&gt;1. 🔍 问题现象
&lt;/h2&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;&amp;ldquo;假花屏&amp;rdquo;&lt;/strong&gt;：能听到游戏音效，但屏幕显示单一颜色交替闪动，不显示游戏内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反复重启才能进&lt;/strong&gt;：遇到上述情况只能强退，需多次重启才能正常进入&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2--问题原因"&gt;2. 🔍 问题原因
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这不是显卡故障&lt;/strong&gt;，而是 Windows 高 DPI 缩放与游戏引擎的冲突。&lt;/p&gt;
&lt;p&gt;使用 2.5K 或更高分辨率屏幕时，Windows 默认开启 125% 或 150% 系统缩放。游戏启动时，引擎未能正确接管屏幕，Windows 将系统缩放强加在全屏游戏画面上，造成&amp;quot;二次放大&amp;quot;，导致渲染出错，表现为画面缩小或纯色闪屏。&lt;/p&gt;
&lt;h2 id="3--解决方案nvidia-应用设置"&gt;3. 🛠️ 解决方案：NVIDIA 应用设置
&lt;/h2&gt;&lt;h3 id="31-详细步骤"&gt;3.1 详细步骤
&lt;/h3&gt;&lt;p&gt;打开电脑上的 &lt;strong&gt;NVIDIA 应用&lt;/strong&gt;（NVIDIA App），在左侧导航栏点击 &lt;strong&gt;图形&lt;/strong&gt; 选项卡。&lt;/p&gt;
&lt;p&gt;在程序列表中找到并点击 &lt;strong&gt;三角洲行动&lt;/strong&gt;（Delta Force）。&lt;/p&gt;
&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;strong&gt;无边框窗口化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-07-21-51-54.png" target="_blank"&gt; &lt;img src="images/2026-03-07-21-51-54.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;设置完成后无需额外保存，直接关闭 NVIDIA 应用即可。&lt;/p&gt;
&lt;h2 id="4--验证效果"&gt;4. ✅ 验证效果
&lt;/h2&gt;&lt;p&gt;重新打开游戏，画面应该能正常显示，不再出现放大或纯色闪屏问题。&lt;/p&gt;
&lt;p&gt;如果问题仍然存在，可以尝试重启电脑后再启动游戏。&lt;/p&gt;
&lt;h2 id="5--总结"&gt;5. 📝 总结
&lt;/h2&gt;&lt;p&gt;《三角洲行动》启动时的画面放大和纯色闪屏问题，本质上是 Windows 高 DPI 缩放与游戏引擎的冲突。&lt;/p&gt;
&lt;p&gt;通过 NVIDIA 应用将显示模式设置为 &lt;strong&gt;无边框窗口化&lt;/strong&gt;，可以让游戏正确接管画面渲染，彻底解决问题。这种方法简单快捷，无需修改任何文件属性。&lt;/p&gt;
&lt;p&gt;希望这篇文章能帮助到遇到同样问题的朋友！如果还有什么新的方法，欢迎在评论区留言交流。&lt;/p&gt;</description></item><item><title>公平性的定义</title><link>https://ysy.fan/p/fairness-definition/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/fairness-definition/</guid><description>&lt;h2 id="1-公平性问题的基本形态"&gt;1. 公平性问题的基本形态
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-22-13-04-01.png" target="_blank"&gt; &lt;img src="images/2026-03-22-13-04-01.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="11-种族与群体歧视"&gt;1.1. 种族与群体歧视
&lt;/h3&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;：如将某族裔的犯罪风险系统性高估，或仅以某一群体的审美/标准作为判定依据，使其他群体在 AI 决策中处于劣势。&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;h3 id="12-边缘群体被忽视"&gt;1.2. 边缘群体被忽视
&lt;/h3&gt;&lt;p&gt;长期被边缘化的群体若未被充分纳入数据与学习过程，模型会缺乏其代表性，导致对这些群体的服务不足或歧视&lt;strong&gt;加剧&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="13-联邦场景下的客户端公平"&gt;1.3. 联邦场景下的客户端公平
&lt;/h3&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;非 IID 与模型偏向&lt;/strong&gt;：客户端数据多为&lt;strong&gt;非独立同分布（Non-IID）&lt;/strong&gt;，模型容易偏向数据量或特征更「强势」的客户端，导致对弱势客户端不公平。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-公平性与联邦遗忘学习的关系"&gt;2. 公平性与联邦遗忘学习的关系
&lt;/h2&gt;&lt;p&gt;联邦遗忘学习（Federated Unlearning）与公平性存在双向关系：既可被用来&lt;strong&gt;促进公平&lt;/strong&gt;，也可能&lt;strong&gt;加剧不公平&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-13-09-23.png" target="_blank"&gt; &lt;img src="images/2026-03-22-13-09-23.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="21-利用遗忘学习促进公平"&gt;2.1. 利用遗忘学习促进公平
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;事后去偏&lt;/strong&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;h3 id="22-遗忘学习可能损害公平"&gt;2.2. 遗忘学习可能损害公平
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;过度遗忘&lt;/strong&gt;：若遗忘程度过深，可能删掉&lt;strong&gt;代表性本就不足&lt;/strong&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;：招聘、信用评分、医疗 AI 等场景中，公平性极为关键，上述风险的影响尤为突出。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-直接删除偏见内容的局限"&gt;2.3. 直接删除偏见内容的局限
&lt;/h3&gt;&lt;p&gt;单纯删除「偏见内容」或敏感标签（如种族、肤色）往往不够：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-22-13-13-38.png" target="_blank"&gt; &lt;img src="images/2026-03-22-13-13-38.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;偏见转移&lt;/strong&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;h2 id="3-维持公平性的主要技术手段"&gt;3. 维持公平性的主要技术手段
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-22-13-28-03.png" target="_blank"&gt; &lt;img src="images/2026-03-22-13-28-03.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="31-数据预处理"&gt;3.1. 数据预处理
&lt;/h3&gt;&lt;p&gt;从源头介入，在模型训练之前通过调整数据的构成来改善公平性，属于**预处理（Pre-processing）**方法。常见策略包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;重采样（Resampling）&lt;/strong&gt;：对代表性不足的群体进行过采样，或对主导群体进行欠采样，使各群体在训练集中的比例更加均衡。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重标注（Relabeling）&lt;/strong&gt;：识别并修正训练数据中存在偏见的标签，从根源消除偏差。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;公平主动学习（Fair Active Learning）&lt;/strong&gt;：在标注预算有限的情况下，优先选取能够提升弱势群体代表性的样本交由专家标注，以最小的标注成本最大化公平性收益。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-公平遗忘感知重训"&gt;3.2. 公平遗忘感知重训
&lt;/h3&gt;&lt;p&gt;在遗忘过程中&lt;strong&gt;同时&lt;/strong&gt;优化公平性：边做「遗忘手术」边施加公平约束或重训，使删除/更新后的模型在统计特性上仍满足既定公平准则（如不同群体间性能差距可控）。&lt;/p&gt;
&lt;h3 id="33-基于正则化的遗忘"&gt;3.3. 基于正则化的遗忘
&lt;/h3&gt;&lt;p&gt;在遗忘算法中引入&lt;strong&gt;数学约束&lt;/strong&gt;，强制模型在参数更新或「模糊化」过程中遵守公平性准则，避免遗忘操作破坏公平指标。&lt;/p&gt;
&lt;h3 id="34-遗忘后去偏"&gt;3.4. 遗忘后去偏
&lt;/h3&gt;&lt;p&gt;采用两阶段策略：先完成数据/参数层面的遗忘，再对所得模型做一次&lt;strong&gt;专门的去偏或公平性微调&lt;/strong&gt;，作为「做完手术再打磨」的补充步骤。&lt;/p&gt;</description></item><item><title>如何查找 Gemini 订阅截止日期</title><link>https://ysy.fan/p/find-gemini-subscription-expiry/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/find-gemini-subscription-expiry/</guid><description>&lt;p&gt;Gemini（原 Google One AI）的订阅到期时间在网页里藏得比较刁钻，第一次找往往要翻半天。这里记一下&lt;strong&gt;具体查找路径&lt;/strong&gt;，方便大家查找。&lt;/p&gt;
&lt;h2 id="1-第一步设置和帮助--个人使用场景"&gt;1. 第一步：设置和帮助 → 个人使用场景
&lt;/h2&gt;&lt;p&gt;在 &lt;a class="link" href="https://gemini.google.com" target="_blank" rel="noopener"
&gt;Gemini&lt;/a&gt; 页面，&lt;strong&gt;唯一的入口&lt;/strong&gt;是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;点击左侧边栏底部的 &lt;strong&gt;「设置和帮助」&lt;/strong&gt;，展开或进入设置相关页面。&lt;/li&gt;
&lt;li&gt;在随之出现的内容里进入 &lt;strong&gt;「个人使用场景」&lt;/strong&gt;（Personal Usage Scenarios）。&lt;/li&gt;
&lt;li&gt;在该页的 &lt;strong&gt;「你的付费内容」&lt;/strong&gt; 区块中，点击下方的 &lt;strong&gt;「管理与你的 Google 账号关联的订阅」&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;点击后会跳转到 Google 账号的订阅页面。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-24-14-08-26.png" target="_blank"&gt; &lt;img src="images/2026-02-24-14-08-26.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="2-第二步在-google-账号订阅页查看续订日期"&gt;2. 第二步：在 Google 账号订阅页查看续订日期
&lt;/h2&gt;&lt;p&gt;跳转后进入的是 &lt;strong&gt;Google 账号 → 订阅&lt;/strong&gt; 页面。页面顶部有返回箭头和「订阅」标题。&lt;/p&gt;
&lt;p&gt;找到 Google One 一栏，这里的续订日期就是你会员到期的时间&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-24-14-10-52.png" target="_blank"&gt; &lt;img src="images/2026-02-24-14-10-52.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-小结"&gt;3. 小结
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;路径总结&lt;/strong&gt;：打开 Gemini → &lt;strong&gt;设置和帮助&lt;/strong&gt; → &lt;strong&gt;个人使用场景&lt;/strong&gt; → 点击「管理与你的 Google 账号关联的订阅」→ 在跳转后的「订阅」页中，看「由 Google 管理」里对应订阅卡片上的 &lt;strong&gt;「续订日期」&lt;/strong&gt; 即可。&lt;/p&gt;</description></item><item><title>Nilesoft Shell：打造个性化 Win11 右键菜单</title><link>https://ysy.fan/p/nilesoft-shell-win11-right-click/</link><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/nilesoft-shell-win11-right-click/</guid><description>&lt;h2 id="1-什么是-nilesoft-shell"&gt;1. 什么是 Nilesoft Shell？
&lt;/h2&gt;&lt;p&gt;Nilesoft Shell 是一款强大的 Windows 右键菜单自定义工具，让你完全掌控右键菜单的每一个细节。无论是添加常用程序、自定义图标、创建子菜单，还是根据文件类型显示不同选项，Nilesoft Shell 都能轻松实现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心优势：&lt;/strong&gt;&lt;/p&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;li&gt;✅ 轻量级，不影响系统性能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;接下来，我们以&amp;quot;添加 Cursor 到右键菜单&amp;quot;为例，演示如何使用 Nilesoft Shell。&lt;/p&gt;
&lt;h2 id="2-安装-nilesoft-shell"&gt;2. 安装 Nilesoft Shell
&lt;/h2&gt;&lt;p&gt;前往&lt;a class="link" href="https://nilesoft.org/download" target="_blank" rel="noopener"
&gt;官网下载&lt;/a&gt;并安装 Nilesoft Shell。安装完成后可能需要重启资源管理器才能看到效果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：安装时请记住安装路径，后续配置时会用到。&lt;/p&gt;
&lt;h2 id="3-体验默认功能"&gt;3. 体验默认功能
&lt;/h2&gt;&lt;p&gt;安装完成后，右键点击桌面，即可看到 Nilesoft Shell 的默认菜单。默认配置已经包含了许多实用功能，比如快速访问系统工具、文件操作等。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-19-32-51.png" target="_blank"&gt; &lt;img src="images/2026-02-14-19-32-51.png" alt="默认菜单效果" style="max-width: 50%; width: 400px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这只是冰山一角，接下来我们将学习如何自定义菜单！&lt;/p&gt;
&lt;h2 id="4-认识配置文件"&gt;4. 认识配置文件
&lt;/h2&gt;&lt;p&gt;Nilesoft Shell 的所有配置都保存在 &lt;code&gt;shell.nss&lt;/code&gt; 文件中。这是一个纯文本配置文件，使用类似 JavaScript 的语法，易读易写。&lt;/p&gt;
&lt;p&gt;进入 Nilesoft 安装目录，找到并打开 &lt;code&gt;shell.nss&lt;/code&gt; 文件：&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-20-03-08.png" target="_blank"&gt; &lt;img src="images/2026-02-14-20-03-08.png" alt="配置文件位置" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默认配置内容&lt;/strong&gt;（建议保存备份，方便出错时恢复）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;priority&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;exclude&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;is_explorer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;showdelay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// Options to allow modification of system items
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;modify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;duplicate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;tip&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/theme.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/images.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/modify.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;menu&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;multiple&amp;#34;&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Pin/Unpin&amp;#34;&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;menu&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;multiple&amp;#34;&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;more_options&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;more_options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/terminal.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/file-manage.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/develop.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/goto.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;imports/taskbar.nss&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="5-基本操作"&gt;5. 基本操作
&lt;/h2&gt;&lt;p&gt;掌握基本操作是使用 Nilesoft Shell 的第一步。以下是最常用的几个操作。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="51-应用配置修改"&gt;5.1. 应用配置修改
&lt;/h3&gt;&lt;p&gt;每次修改配置文件后，需要重启资源管理器才能使配置生效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;操作方法：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在开始菜单搜索 &lt;code&gt;nilesoft&lt;/code&gt; 或直接运行安装目录下的 &lt;code&gt;shell.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在弹出的窗口中选择 &lt;strong&gt;Restart Explorer&lt;/strong&gt;（重启资源管理器）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-20-48-20.png" target="_blank"&gt; &lt;img src="images/2026-02-14-20-48-20.png" alt="重启资源管理器" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&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;Register&lt;/strong&gt;：启用 Nilesoft Shell&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unregister&lt;/strong&gt;：停用 Nilesoft Shell&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restart Explorer&lt;/strong&gt;：重启资源管理器（使配置生效）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="52-移除菜单项"&gt;5.2. 移除菜单项
&lt;/h3&gt;&lt;p&gt;如果想移除右键菜单中的某个选项，可以使用 &lt;code&gt;remove()&lt;/code&gt; 命令。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;语法格式：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;find&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;菜单上显示的文字&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;使用示例：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如要移除「护眼卫士」这个选项，在配置文件末尾添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;find&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;护眼卫士&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存后重启资源管理器，该选项即可消失。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-20-54-39.png" target="_blank"&gt; &lt;img src="images/2026-02-14-20-54-39.png" alt="移除前后对比" style="max-width: 60%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 注意事项：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&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;remove(find=&amp;quot;Print&amp;quot;)&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持模糊匹配&lt;/strong&gt;：可以使用通配符，如 &lt;code&gt;remove(find=&amp;quot;护眼*&amp;quot;)&lt;/code&gt; 移除所有以&amp;quot;护眼&amp;quot;开头的菜单项&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="53-添加菜单项"&gt;5.3. 添加菜单项
&lt;/h3&gt;&lt;p&gt;添加自定义菜单项是 Nilesoft Shell 的核心功能。根据不同场景，添加方式略有不同。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="531-场景一添加普通应用程序"&gt;5.3.1. 场景一：添加普通应用程序
&lt;/h4&gt;&lt;p&gt;适用于计算器、记事本等不需要参数的程序。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;语法格式：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;菜单名&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;程序命令&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;图标&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;示例：添加计算器&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 添加计算器到右键菜单
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;计算器&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;calc.exe&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;\uE1E7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt;：菜单中显示的文字&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cmd&lt;/code&gt;：要执行的程序命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image&lt;/code&gt;：菜单图标（&lt;code&gt;\uE1E7&lt;/code&gt; 是系统内置的计算器图标）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="532-场景二添加文件处理工具"&gt;5.3.2. 场景二：添加文件处理工具
&lt;/h4&gt;&lt;p&gt;适用于需要打开当前选中文件的程序，如编辑器、播放器等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键点&lt;/strong&gt;：使用 &lt;code&gt;args='&amp;quot;@sel.path&amp;quot;'&lt;/code&gt; 将选中的文件路径传递给程序。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例：添加 Python 运行&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一步：获取 Python 路径&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按 &lt;code&gt;Win + R&lt;/code&gt; 打开运行，输入 &lt;code&gt;cmd&lt;/code&gt; 回车&lt;/li&gt;
&lt;li&gt;在命令行中输入：&lt;code&gt;where python&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;复制显示的路径（如 &lt;code&gt;C:\Users\xxxxx\anaconda3\python.exe&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;第二步：添加配置&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 用 Python 运行当前脚本
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;用 Python 运行&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;python&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\xxxxx\anaconda3\python.exe&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;args='&amp;quot;@sel.path&amp;quot;'&lt;/code&gt;：将选中文件的完整路径传递给 Python&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image='...'&lt;/code&gt;：程序路径需要加引号，系统会自动提取程序图标&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="533-场景三添加网址快捷方式"&gt;5.3.3. 场景三：添加网址快捷方式
&lt;/h4&gt;&lt;p&gt;可以将常用网站添加到右键菜单，点击即可打开浏览器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例：添加 Google 搜索&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 添加 Google 搜索
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Google 搜索&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://www.google.com/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 搜索选中的文本
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;搜索选中内容&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://www.google.com/search?q=@sel.text&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;\uE16F&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@sel.text&lt;/code&gt;：获取选中的文本内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;效果展示：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-21-44-48.png" target="_blank"&gt; &lt;img src="images/2026-02-14-21-44-48.png" alt="添加网址效果" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="6-进阶操作"&gt;6. 进阶操作
&lt;/h2&gt;&lt;p&gt;掌握基本操作后，我们来学习更强大的功能，让右键菜单更加智能和精准。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="61-条件显示让菜单项更智能"&gt;6.1. 条件显示：让菜单项更智能
&lt;/h3&gt;&lt;p&gt;通过 &lt;code&gt;where&lt;/code&gt; 参数，可以让菜单项根据不同条件显示，避免菜单杂乱。&lt;/p&gt;
&lt;h4 id="611-语法格式"&gt;6.1.1. 语法格式
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;条件&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;菜单名&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;命令&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h4 id="612-根据文件扩展名显示"&gt;6.1.2. 根据文件扩展名显示
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在 .py 文件上显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.py&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;用 Python 运行&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;python&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在图片文件上显示（支持多种格式）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.jpg&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.png&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.gif&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;画图编辑&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;mspaint.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在 Markdown 文件上显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.md&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;用 Typora 打开&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Program Files\Typora\Typora.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h4 id="613-根据选择类型显示"&gt;6.1.3. 根据选择类型显示
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在选中文件时显示（不包括文件夹）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Google 搜索文件名&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://www.google.com/search?q=@sel.name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在选中文件夹时显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;在此处打开 CMD&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;cmd.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/K cd /d &amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在空白处显示（没有选中任何东西）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;计算器&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;calc.exe&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h4 id="614-根据文件数量显示"&gt;6.1.4. 根据文件数量显示
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在选中单个文件时显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;查看文件属性&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;explorer.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/select,&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 选中多个文件时显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;批量处理&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;你的批量处理工具路径&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h4 id="615-组合条件"&gt;6.1.5. 组合条件
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Python 文件 且 只选中一个文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.py&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;调试此脚本&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;python&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;-m pdb &amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h4 id="616-实战案例智能编辑器菜单"&gt;6.1.6. 实战案例：智能编辑器菜单
&lt;/h4&gt;&lt;p&gt;根据不同文件类型，自动调用相应的编辑器：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Markdown 文件用 Typora 打开
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.md&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Typora 编辑&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Program Files\Typora\Typora.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 代码文件用 VSCode 打开
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.py&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.js&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.html&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;VSCode 编辑&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\你的用户名\AppData\Local\Programs\Microsoft VS Code\Code.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 文本文件用记事本打开
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;记事本编辑&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;notepad.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="62-创建子菜单让菜单更整洁"&gt;6.2. 创建子菜单：让菜单更整洁
&lt;/h3&gt;&lt;p&gt;当自定义菜单项越来越多时，可以用子菜单进行分组，保持菜单简洁。&lt;/p&gt;
&lt;h4 id="621-基本语法"&gt;6.2.1. 基本语法
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;menu&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;菜单组名&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;图标&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;选项 1&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;选项 2&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;sep&lt;/span&gt; &lt;span class="c1"&gt;// 分隔线
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;选项 3&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="622-实战案例开发工具菜单"&gt;6.2.2. 实战案例：开发工具菜单
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建&amp;#34;开发工具&amp;#34;子菜单
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;menu&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;开发工具&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;\uE26C&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Cursor&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\你的用户名\AppData\Local\Programs\cursor\Cursor.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;VSCode&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\你的用户名\AppData\Local\Programs\Microsoft VS Code\Code.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;sep&lt;/span&gt; &lt;span class="c1"&gt;// 添加分隔线
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Git Bash&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Program Files\Git\git-bash.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#34;@sel.path&amp;#34;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：右键菜单会显示&amp;quot;开发工具&amp;quot;，点击后展开包含多个选项的二级菜单。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="63-添加分隔线让菜单更清晰"&gt;6.3. 添加分隔线：让菜单更清晰
&lt;/h3&gt;&lt;p&gt;使用 &lt;code&gt;sep&lt;/code&gt; 在菜单项之间添加分隔线，让菜单结构更清晰。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;选项 1&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;选项 2&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;sep&lt;/span&gt; &lt;span class="c1"&gt;// 添加分隔线
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;选项 3&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="64-图标使用技巧"&gt;6.4. 图标使用技巧
&lt;/h3&gt;&lt;p&gt;图标可以让菜单更美观易识别。Nilesoft Shell 支持三种图标添加方式。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="641-方式一使用程序自带图标推荐"&gt;6.4.1. 方式一：使用程序自带图标（推荐）
&lt;/h4&gt;&lt;p&gt;直接使用程序的 &lt;code&gt;.exe&lt;/code&gt; 文件路径，系统会自动提取图标。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 使用程序自带图标
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Cursor&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\xxxxx\AppData\Local\Programs\cursor\Cursor.exe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;C:\Users\xxxxx\AppData\Local\Programs\cursor\Cursor.exe&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：图标与程序完全匹配，视觉统一。&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="642-方式二使用-unicode-图标代码"&gt;6.4.2. 方式二：使用 Unicode 图标代码
&lt;/h4&gt;&lt;p&gt;使用 Windows 内置的 Segoe MDL2 Assets 字体图标。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 使用系统内置图标
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;计算器&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;calc.exe&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;\uE1E7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;\uE1E7&lt;/code&gt;&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;code&gt;\uE26C&lt;/code&gt;&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;code&gt;\uE943&lt;/code&gt;&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;code&gt;\uE713&lt;/code&gt;&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;code&gt;\uE768&lt;/code&gt;&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;code&gt;\uE16F&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;搜索&lt;/td&gt;
&lt;td&gt;搜索功能&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 重要提示&lt;/strong&gt;：Unicode 图标代码&lt;strong&gt;不要加引号&lt;/strong&gt;，直接使用！&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ✅ 正确写法
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;\uE1E7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ❌ 错误写法（加引号图标不显示）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;\uE1E7&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h4 id="643-方式三不使用图标"&gt;6.4.3. 方式三：不使用图标
&lt;/h4&gt;&lt;p&gt;如果不需要图标，直接省略 &lt;code&gt;image&lt;/code&gt; 参数即可。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 不使用图标
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;我的工具&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="65-常用变量和属性"&gt;6.5. 常用变量和属性
&lt;/h3&gt;&lt;p&gt;在配置中可以使用丰富的变量和属性来获取上下文信息。&lt;/p&gt;
&lt;h4 id="651-选择对象相关变量sel"&gt;6.5.1. 选择对象相关变量（@sel）
&lt;/h4&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;选中项的完整路径&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\Users\xxx\file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件名（含扩展名）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件名（不含扩展名）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.ext&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件扩展名&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.parent&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;父文件夹路径&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\Users\xxx&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.parent.name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;父文件夹名称&lt;/td&gt;
&lt;td&gt;&lt;code&gt;xxx&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;根目录路径&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;条件判断属性：&lt;/strong&gt;&lt;/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;sel.count&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;选中的文件数量&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;2&lt;/code&gt;, &lt;code&gt;3&lt;/code&gt;&amp;hellip;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sel.type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;选择类型（见下表）&lt;/td&gt;
&lt;td&gt;数字代码&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.text&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;选中的文本内容&lt;/td&gt;
&lt;td&gt;&lt;code&gt;被选中的文字&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;仅文件的路径（排除文件夹）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.directory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;仅文件夹的路径（排除文件）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\folder&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@sel.curdir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;当前工作目录&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C:\Users\xxx&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="652-类型判断type-属性"&gt;6.5.2. 类型判断（type 属性）
&lt;/h4&gt;&lt;p&gt;在 &lt;code&gt;where&lt;/code&gt; 条件中，可以使用 &lt;code&gt;type&lt;/code&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;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==file&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dir&lt;/code&gt; / &lt;code&gt;directory&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件夹&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==dir&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;drive&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;驱动器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==drive&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fixed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;固定磁盘（如硬盘）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==fixed&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;removable&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;可移动磁盘（如 U 盘）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==removable&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;usb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;USB 设备&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==usb&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dvd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;DVD 驱动器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==dvd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;remote&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;网络驱动器&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==remote&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vhd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;虚拟硬盘&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==vhd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;desktop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;桌面&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==desktop&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;recyclebin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;回收站&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==recyclebin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;taskbar&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;任务栏&lt;/td&gt;
&lt;td&gt;&lt;code&gt;where=sel.type==taskbar&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;实战示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在 U 盘上显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="nx"&gt;usb&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;安全弹出 U 盘&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 只在回收站显示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="nx"&gt;recyclebin&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;清空回收站&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 排除网络驱动器
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="nx"&gt;remote&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;本地文件操作&amp;#39;&lt;/span&gt; &lt;span class="nx"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="653-完整变量列表"&gt;6.5.3. 完整变量列表
&lt;/h4&gt;&lt;p&gt;以上仅列出常用变量。Nilesoft Shell 还提供了更多高级变量和函数，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件元数据获取（&lt;code&gt;sel.meta()&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;快捷方式信息（&lt;code&gt;sel.lnk&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;路径长度检测（&lt;code&gt;sel.path.length&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;只读/隐藏属性判断（&lt;code&gt;sel.readonly&lt;/code&gt;, &lt;code&gt;sel.hidden&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;等等&amp;hellip;&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;a class="link" href="https://nilesoft.org/docs/functions/sel" target="_blank" rel="noopener"
&gt;sel 函数完整文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://nilesoft.org/docs/configuration/properties" target="_blank" rel="noopener"
&gt;配置属性完整文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://nilesoft.org/docs/expressions" target="_blank" rel="noopener"
&gt;表达式和变量&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="7-默认配置汉化"&gt;7. 默认配置汉化
&lt;/h2&gt;&lt;p&gt;Nilesoft Shell 默认菜单为英文，对中文用户不够友好。下面提供&lt;strong&gt;文件管理&lt;/strong&gt;和**快速跳转（Go to）**两个菜单的汉化配置，可直接替换使用。&lt;/p&gt;
&lt;h3 id="71-下载汉化文件"&gt;7.1. 下载汉化文件
&lt;/h3&gt;&lt;p&gt;点击下方菜单名称即可下载对应汉化配置（浏览器会下载 &lt;code&gt;.nss&lt;/code&gt; 文件）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;对应菜单&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="link" href="patch/file-manage.nss" &gt;&lt;strong&gt;file-manage.nss&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;复制路径、重命名、在新窗口打开等文件与文件夹操作&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a class="link" href="patch/goto.nss" &gt;&lt;strong&gt;goto.nss&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;桌面、下载、文档、控制面板、设置等系统常用入口&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="72-替换与生效"&gt;7.2. 替换与生效
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;替换原文件&lt;/strong&gt;：打开 Nilesoft Shell 安装目录下的 &lt;code&gt;imports&lt;/code&gt; 文件夹（即 &lt;code&gt;nilesoft\imports&lt;/code&gt;），将下载好的 &lt;code&gt;file-manage.nss&lt;/code&gt; 和 &lt;code&gt;goto.nss&lt;/code&gt; 拖入，若提示已存在同名文件则选择&lt;strong&gt;替换&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生效&lt;/strong&gt;：在 Nilesoft Shell 中执行 &lt;strong&gt;Restart Explorer&lt;/strong&gt;（重启资源管理器）后即可看到汉化效果。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="8-常见问题"&gt;8. 常见问题
&lt;/h2&gt;&lt;h3 id="81-新增选项没有出现且菜单风格变差"&gt;8.1. 新增选项没有出现，且菜单风格变差
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;症状示例：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-22-04-10.png" target="_blank"&gt; &lt;img src="images/2026-02-14-22-04-10.png" alt="image" style="max-width: 70%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原因分析：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;配置文件语法错误导致 Nilesoft Shell 加载失败，系统回退到默认右键菜单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;逐步排查&lt;/strong&gt;：删除最近添加的配置，重启资源管理器测试&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常见错误&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;程序路径未加引号（如 &lt;code&gt;image=C:\xxx\xxx.exe&lt;/code&gt; 应改为 &lt;code&gt;image='C:\xxx\xxx.exe'&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;Unicode 图标错误加了引号（如 &lt;code&gt;image='\uE1E7'&lt;/code&gt; 应改为 &lt;code&gt;image=\uE1E7&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;括号、引号未正确闭合&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;恢复备份&lt;/strong&gt;：如果改乱了，使用前面保存的默认配置恢复&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;调试技巧&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次只添加一个配置，测试无误后再添加下一个&lt;/li&gt;
&lt;li&gt;养成备份配置文件的习惯&lt;/li&gt;
&lt;li&gt;注意检查中英文标点符号（要用英文标点）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="9-总结"&gt;9. 总结
&lt;/h2&gt;&lt;p&gt;Nilesoft Shell 是一款功能强大的右键菜单定制工具，通过简单的配置文件即可打造出完全符合个人工作流的右键菜单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心要点：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;remove()&lt;/code&gt; 移除不需要的菜单项&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;item()&lt;/code&gt; 添加自定义菜单项&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;where&lt;/code&gt; 参数实现条件显示&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;menu()&lt;/code&gt; 创建子菜单分组&lt;/li&gt;
&lt;li&gt;每次修改后记得重启资源管理器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;掌握这些技巧，你的 Windows 右键菜单将变得更加高效、整洁、个性化！&lt;/p&gt;
&lt;h2 id="10-相关资源"&gt;10. 相关资源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://nilesoft.org/" target="_blank" rel="noopener"
&gt;Nilesoft Shell 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/moudey/Shell" target="_blank" rel="noopener"
&gt;Nilesoft Shell GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://nilesoft.org/docs" target="_blank" rel="noopener"
&gt;官方配置文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://learn.microsoft.com/en-us/windows/apps/design/style/segoe-ui-symbol-font" target="_blank" rel="noopener"
&gt;Segoe MDL2 图标列表&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>搜狗输入法自定义短语：快速输入直角引号</title><link>https://ysy.fan/p/sogou-corner-brackets/</link><pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/sogou-corner-brackets/</guid><description>&lt;h2 id="1-为什么需要直角引号"&gt;1. 为什么需要直角引号？
&lt;/h2&gt;&lt;p&gt;在中文排版中，直角引号「」和『』比普通引号 &amp;quot;&amp;quot; 更加规范和美观，特别适合用于：&lt;/p&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;p&gt;相比普通的弯引号，直角引号在视觉上更加醒目，也更符合传统中文排版规范。&lt;/p&gt;
&lt;h2 id="2-直角引号的区别"&gt;2. 直角引号的区别
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;普通引号&lt;/strong&gt;：&amp;quot;&amp;quot;、''&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;直角引号&lt;/strong&gt;：「」、『』&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「」用于第一层引用（相当于双引号 &amp;ldquo;&amp;quot;）&lt;/li&gt;
&lt;li&gt;『』用于第二层引用，即引用中的引用（相当于单引号 &amp;lsquo;&amp;rsquo;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：他说「这本书里写着『天行健，君子以自强不息』」&lt;/p&gt;
&lt;h2 id="3-设置方法"&gt;3. 设置方法
&lt;/h2&gt;&lt;h3 id="31-第一步开启自定义短语功能"&gt;3.1. 第一步：开启自定义短语功能
&lt;/h3&gt;&lt;p&gt;打开搜狗输入法设置界面，选择属性设置-&amp;gt;高级，勾选自定义短语。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-18-28-49.png" target="_blank"&gt; &lt;img src="images/2026-02-14-18-28-49.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="32-第二步添加新短语"&gt;3.2. 第二步：添加新短语
&lt;/h3&gt;&lt;p&gt;进入自定义短语设置，点击添加新短语。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-18-35-02.png" target="_blank"&gt; &lt;img src="images/2026-02-14-18-35-02.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="33-第三步设置直角引号"&gt;3.3. 第三步：设置直角引号「」
&lt;/h3&gt;&lt;p&gt;缩写可以自拟，这里我用 &amp;ldquo;syh&amp;rdquo; 意指&amp;quot;第一层引号&amp;rdquo;，下方文本框输入直角引号「」即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-18-45-11.png" target="_blank"&gt; &lt;img src="images/2026-02-14-18-45-11.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="34-第四步使用效果"&gt;3.4. 第四步：使用效果
&lt;/h3&gt;&lt;p&gt;以后输入 syh 即可快速打出直角引号「」。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-18-45-26.png" target="_blank"&gt; &lt;img src="images/2026-02-14-18-45-26.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="35-第五步添加嵌套引号"&gt;3.5. 第五步：添加嵌套引号『』
&lt;/h3&gt;&lt;p&gt;同理可以添加第二层引号『』，用于引用中的引用。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-14-18-47-26.png" target="_blank"&gt; &lt;img src="images/2026-02-14-18-47-26.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="4-总结"&gt;4. 总结
&lt;/h2&gt;&lt;p&gt;通过搜狗输入法的自定义短语功能，我们可以快速输入直角引号，让中文文档的排版更加规范美观。你也可以用同样的方法添加其他常用符号，提升输入效率！&lt;/p&gt;</description></item><item><title>东秦学生申请 GitHub 学生认证完全指南</title><link>https://ysy.fan/p/github-student-pack-neu-qhd/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/github-student-pack-neu-qhd/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;适用对象&lt;/strong&gt;：东北大学秦皇岛分校（NEU Qinhuangdao）在校学生
&lt;strong&gt;认证优势&lt;/strong&gt;：免费使用 GitHub Pro、JetBrains 全家桶、Azure 学生订阅等价值上千美元的开发者工具&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-前言"&gt;1. 前言
&lt;/h2&gt;&lt;p&gt;GitHub Student Developer Pack 为学生提供了丰富的免费开发工具和服务。本指南基于东秦学生的实际申请经验编写，&lt;strong&gt;特别记录了&amp;quot;修改浏览器定位&amp;quot;这一解决认证失败的关键技巧&lt;/strong&gt;，希望帮助同学们顺利通过认证。&lt;/p&gt;
&lt;h2 id="2-东北大学总校学生邮箱的注册与激活"&gt;2. 东北大学总校学生邮箱的注册与激活
&lt;/h2&gt;&lt;p&gt;申请 GitHub 学生包需要使用学校提供的教育邮箱。对于东秦学生，我们需要注册并激活东北大学总校的邮箱（后缀为 &lt;code&gt;@mails.neu.edu.cn&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id="21-前情提要"&gt;2.1. 前情提要
&lt;/h3&gt;&lt;p&gt;在操作过程中，如果遇到网站加载缓慢、转圈半天然后报错的情况，这通常是学校网站维护或网络波动，并非您的操作问题。请不要焦躁，稍作休息，等一会儿再回来尝试。&lt;/p&gt;
&lt;h3 id="22-进入邮箱系统与初步尝试"&gt;2.2. 进入邮箱系统与初步尝试
&lt;/h3&gt;&lt;p&gt;首先，请在浏览器中访问东北大学邮件系统：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a class="link" href="https://mails.neu.edu.cn/coremail/" target="_blank" rel="noopener"
&gt;https://mails.neu.edu.cn/coremail/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在登录框下方找到并点击 &lt;strong&gt;新生注册&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-13-21-21-42.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-21-42.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;注意：无论您是大一新生还是大四老生，只要您之前没有注册过这个邮箱账号，都必须点击“新生注册”入口。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-统一身份认证与密码重置"&gt;2.3. 统一身份认证与密码重置
&lt;/h3&gt;&lt;p&gt;点击注册后，系统会跳转到“统一身份认证”界面。由于大多数同学不清楚默认密码或已遗忘，我们需要直接走密码重置流程。&lt;/p&gt;
&lt;h4 id="231-进入重置流程"&gt;2.3.1. 进入重置流程
&lt;/h4&gt;&lt;p&gt;在登录框下方，点击 &lt;strong&gt;忘记密码&lt;/strong&gt;。
&lt;a href="images/2026-02-13-21-22-06.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-22-06.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h4 id="232-验证账号信息"&gt;2.3.2. 验证账号信息
&lt;/h4&gt;&lt;ol&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;a href="images/2026-02-13-21-22-25.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-22-25.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="233-设置新密码"&gt;2.3.3. 设置新密码
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;系统会向您的手机发送 6 位动态验证码，填入验证码。&lt;/li&gt;
&lt;li&gt;设置一个新的密码（请务必记住，后续登录全靠它）。&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;完成&lt;/strong&gt;。
&lt;a href="images/2026-02-13-21-22-47.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-22-47.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="24-二次进入注册流程"&gt;2.4. 二次进入注册流程
&lt;/h3&gt;&lt;p&gt;密码重置成功后，不要直接登录，我们需要重新走一遍注册入口。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;再次回到邮箱系统首页：&lt;code&gt;https://mails.neu.edu.cn/coremail/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;再次点击 &lt;strong&gt;新生注册&lt;/strong&gt;。
&lt;a href="images/2026-02-13-21-23-04.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-23-04.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在跳转出的统一身份认证界面，使用您的 &lt;strong&gt;学号&lt;/strong&gt; 和 &lt;strong&gt;刚才重置的新密码&lt;/strong&gt; 进行登录。
&lt;a href="images/2026-02-13-21-23-34.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-23-34.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;到了绑定邮箱这个界面后，保留这个界面，继续下一步
&lt;a href="images/2026-02-13-21-25-17.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-25-17.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="25-第三次进入注册流程"&gt;2.5. 第三次进入注册流程
&lt;/h3&gt;&lt;p&gt;输入网址再回到登录界面，再次点击新生注册&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https://mails.neu.edu.cn/coremail/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-13-21-27-30.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-27-30.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&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;：设置邮箱的独立密码。&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;/ul&gt;
&lt;p&gt;填写完毕后，点击 &lt;strong&gt;提交信息&lt;/strong&gt;。
&lt;a href="images/2026-02-13-21-28-02.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-28-02.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="26-登录邮箱关键避坑点"&gt;2.6. 登录邮箱（关键避坑点）
&lt;/h3&gt;&lt;p&gt;注册提交后，可能会遇到一个坑：如果直接使用刚才注册的“邮箱账号 + 邮箱密码”登录，系统可能会提示失败或进不去（可能是系统适配问题）。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-13-21-29-27.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-29-27.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确登录方式：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;回到邮箱登录首页。&lt;/li&gt;
&lt;li&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;/ol&gt;
&lt;p&gt;成功登录后，您将看到邮箱主界面。请点击左上角头像，确认您的邮箱地址后缀为 &lt;code&gt;@mails.neu.edu.cn&lt;/code&gt;。至此，教育邮箱准备工作完成
&lt;a href="images/2026-02-13-21-29-45.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-29-45.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-github-账号的标准化配置"&gt;3. GitHub 账号的标准化配置
&lt;/h2&gt;&lt;p&gt;拥有了教育邮箱后，我们需要将其绑定到 GitHub 账号上，并完成官方要求的安全设置（2FA）以及个人资料的“学生化”包装。&lt;/p&gt;
&lt;h3 id="31-准备工作网络环境配置"&gt;3.1. 准备工作：网络环境配置
&lt;/h3&gt;&lt;p&gt;在登录 GitHub 之前，有一个非常重要的细节需要注意。
根据实测经验，建议开启 &lt;strong&gt;Steam++&lt;/strong&gt; (Watt Toolkit) 来加速 GitHub。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;避坑指南&lt;/strong&gt;：尽量避免使用其他普通的梯子或代理工具，因为 GitHub 的风控系统可能会检测到 IP 异常，从而影响最终的认证结果。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-绑定教育邮箱"&gt;3.2. 绑定教育邮箱
&lt;/h3&gt;&lt;h4 id="321-进入设置页面"&gt;3.2.1. 进入设置页面
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;访问 GitHub 官网：&lt;code&gt;https://github.com/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;登录您的 GitHub 账号（如果没有账号请先注册）。&lt;/li&gt;
&lt;li&gt;点击右上角的头像，在下拉菜单中选择 &lt;strong&gt;Settings&lt;/strong&gt; (设置)。
&lt;a href="images/2026-02-13-21-33-23.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-33-23.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="322-添加邮箱"&gt;3.2.2. 添加邮箱
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;在左侧菜单栏中找到并点击 &lt;strong&gt;Emails&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;在 &amp;ldquo;Add email address&amp;rdquo; 输入框中，填入您在第一章注册好的学生邮箱（例如 &lt;code&gt;yourname@mails.neu.edu.cn&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt; 按钮。&lt;/li&gt;
&lt;li&gt;之后点击认证一下，GitHub 会向您的学生邮箱发送一封验证邮件。请登录您的学生邮箱，找到邮件并点击验证链接。&lt;/li&gt;
&lt;li&gt;找到 &lt;strong&gt;Keep my email addresses private&lt;/strong&gt; 选项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;务必取消勾选&lt;/strong&gt;（保持 Off 状态）。如果不关闭这个选项，GitHub 在审核时可能无法读取到您的学生邮箱，导致认证失败。
&lt;a href="images/2026-02-13-21-39-19.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-39-19.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="33-开启双重认证-2fa"&gt;3.3. 开启双重认证 (2FA)
&lt;/h3&gt;&lt;p&gt;GitHub 现在强制要求开启 2FA (Two-factor authentication) 才能进行某些操作，这也是申请学生包的硬性门槛。&lt;/p&gt;
&lt;h4 id="331-启用入口"&gt;3.3.1. 启用入口
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;在左侧菜单栏点击 &lt;strong&gt;Password and authentication&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;向下滚动找到 &amp;ldquo;Two-factor authentication&amp;rdquo; 区域。&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Enable two-factor authentication&lt;/strong&gt; 按钮。
&lt;a href="images/2026-02-13-21-39-55.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-39-55.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="332-配置身份验证器"&gt;3.3.2. 配置身份验证器
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;页面会显示一个二维码。&lt;/li&gt;
&lt;li&gt;请在手机上下载并安装 &lt;strong&gt;Microsoft Authenticator&lt;/strong&gt; (或其他类似软件)。&lt;/li&gt;
&lt;li&gt;打开手机 App，扫描屏幕上的二维码。&lt;/li&gt;
&lt;li&gt;App 会生成一个 6 位数的动态验证码，将其填入 GitHub 网页的输入框中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保存恢复代码&lt;/strong&gt;：系统会生成一组 Recovery Codes（恢复代码），请务必下载并妥善保存。如果您丢失了手机或误删了 App，这是找回账号的唯一凭证。
&lt;a href="images/2026-02-13-21-40-23.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-40-23.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="34-完善个人资料-关键加分项"&gt;3.4. 完善个人资料 (关键加分项)
&lt;/h3&gt;&lt;p&gt;为了证明您的“真实学生身份”，我们需要将个人资料修改为符合东秦学生特征的标准格式。&lt;/p&gt;
&lt;p&gt;在左侧菜单栏点击 &lt;strong&gt;Public profile&lt;/strong&gt;，按照以下标准填写：&lt;/p&gt;
&lt;h4 id="341-name-姓名"&gt;3.4.1. Name (姓名)
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;格式：&lt;strong&gt;名 姓&lt;/strong&gt; (拼音)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;示例：如果您叫张三丰，请填 &lt;strong&gt;Sanfeng Zhang&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注意：不要填昵称，要填真实姓名的拼音，与学生证/校园卡保持一致。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="342-bio-简介"&gt;3.4.2. Bio (简介)
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;建议：用英文简单描述一下您的身份。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;示例：Student from School of Computer Science and Engineering, majoring in Software Engineering.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="343-url-链接"&gt;3.4.3. URL (链接)
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;填入东秦官网地址：&lt;code&gt;https://www.neuq.edu.cn/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="344-company-学校机构"&gt;3.4.4. Company (学校/机构)
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;必须严格填写东秦的英文全称&lt;/strong&gt;：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;内容：&lt;code&gt;Northeastern University at Qinhuangdao&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注意：不要填简写，也不要只填东北大学总校的名字，要精确到秦皇岛分校。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="345-location-地区"&gt;3.4.5. Location (地区)
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;内容：&lt;code&gt;China&lt;/code&gt;
&lt;a href="images/2026-02-13-21-41-01.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-41-01.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
&lt;a href="images/2026-02-13-21-41-39.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-41-39.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;填写完毕后，点击页面底部的 &lt;strong&gt;Update profile&lt;/strong&gt; 保存修改&lt;/p&gt;
&lt;h2 id="4-完善账单信息"&gt;4. 完善账单信息
&lt;/h2&gt;&lt;p&gt;在正式提交学生认证申请之前，我们需要先完善 GitHub 的账单信息（Payment information）。这一步非常关键，因为 GitHub 会校验这里的“名义地址”是否与你的学校所在地（秦皇岛）一致。&lt;/p&gt;
&lt;h3 id="41-填写账单信息-关键"&gt;4.1. 填写账单信息 (关键)
&lt;/h3&gt;&lt;h4 id="411-进入入口"&gt;4.1.1. 进入入口
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;点击 GitHub 页面右上角的头像，选择 Settings。&lt;/li&gt;
&lt;li&gt;在左侧菜单栏找到 Access 区域，点击 Billing and licensing。&lt;/li&gt;
&lt;li&gt;在展开的子菜单中，点击 Payment information。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="412-填写规范-请严格照抄"&gt;4.1.2. 填写规范 (请严格照抄)
&lt;/h4&gt;&lt;p&gt;请参照以下标准进行填写，确保与第二章的个人资料保持高度一致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;First name / Last name (姓名)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;格式：名 姓 (拼音)&lt;/li&gt;
&lt;li&gt;示例：如果您叫张三丰，这里填 Sanfeng 后面填 Zhang。&lt;/li&gt;
&lt;li&gt;警告：必须填真实姓名的拼音，严禁使用昵称或中文。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Company (公司/学校)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这里的输入框可能自动同步了个人资料，如果没有，请手动填入：&lt;/li&gt;
&lt;li&gt;Northeastern University at Qinhuangdao&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Address (街道地址)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内容：Northeastern University at Qinhuangdao&lt;/li&gt;
&lt;li&gt;注意：必须填东秦的英文全称。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;City (城市)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内容：Qinhuangdao&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;State/Province (省份)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内容：Hebei Province&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Country/Region (国家/地区)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择：China
&lt;a href="images/2026-02-13-21-44-05.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-44-05.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;确认所有信息无误后，点击底部的 Save billing information 保存。&lt;/p&gt;
&lt;h2 id="5-开始申请流程解决定位问题与上传凭证核心章节"&gt;5. 开始申请流程，解决定位问题与上传凭证（核心章节）
&lt;/h2&gt;&lt;h3 id="51-进入教育优惠申请入口"&gt;5.1. 进入教育优惠申请入口
&lt;/h3&gt;&lt;h4 id="511-找到入口"&gt;5.1.1. 找到入口
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;依然在左侧 Billing and licensing 菜单下。&lt;/li&gt;
&lt;li&gt;点击 Education benefits。&lt;/li&gt;
&lt;li&gt;在页面右侧找到并找到绿色的 Start an application 按钮，但是先不要点击，先看下一步。
&lt;a href="images/2026-02-13-21-44-39.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-44-39.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;GitHub 会校验您的物理位置是否在学校附近。如果您身处校外（如寒暑假在家），或者校园网定位不准，直接申请很可能导致认证失败。&lt;/p&gt;
&lt;p&gt;请务必按照以下“修改浏览器定位”的流程操作：&lt;/p&gt;
&lt;h4 id="512-打开开发者工具"&gt;5.1.2. 打开开发者工具
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;在当前申请页面，按键盘上的 F12 键（打开开发者工具）。&lt;/li&gt;
&lt;li&gt;保持开发者工具开启，不要关闭。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="513-调出传感器-sensors-面板"&gt;5.1.3. 调出传感器 (Sensors) 面板
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;在开发者工具窗口中，先点击顶部的 Network (网络) 选项卡。&lt;/li&gt;
&lt;li&gt;点击右上角的 三个点 图标（更多选项）。&lt;/li&gt;
&lt;li&gt;在下拉菜单中选择 More tools (更多工具)。&lt;/li&gt;
&lt;li&gt;在子菜单中选择 Sensors (传感器)。&lt;/li&gt;
&lt;li&gt;此时，界面下方会出现一个 Sensors 面板。
&lt;a href="images/2026-02-13-21-59-07.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-59-07.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="514-输入东大坐标参数-严格照抄"&gt;5.1.4. 输入东大坐标参数 (严格照抄)
&lt;/h4&gt;&lt;p&gt;在 Sensors 面板中进行如下设置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Location: 在下拉框中选择 Other&amp;hellip;&lt;/li&gt;
&lt;li&gt;Latitude (纬度): 输入 41.7636&lt;/li&gt;
&lt;li&gt;Longitude (经度): 输入 123.4113&lt;/li&gt;
&lt;li&gt;Timezone ID: 输入 Asia/Shanghai&lt;/li&gt;
&lt;li&gt;Locale: 输入 zh-Hans-CN&lt;/li&gt;
&lt;li&gt;Accuracy: 输入 150
&lt;a href="images/2026-02-13-21-59-53.png" target="_blank"&gt; &lt;img src="images/2026-02-13-21-59-53.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="515-刷新页面生效"&gt;5.1.5. 刷新页面生效
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;保持开发者工具（F12）和 Sensors 面板处于开启状态（这一点非常重要，不能关）。&lt;/li&gt;
&lt;li&gt;后续截图虽然没有截入开发者工具面板，但是一定不能关&lt;/li&gt;
&lt;li&gt;点击浏览器左上角的 刷新 按钮。&lt;/li&gt;
&lt;li&gt;页面刷新后，点击绿色的 Start an application 按钮。
&lt;a href="images/2026-02-13-22-07-26.png" target="_blank"&gt; &lt;img src="images/2026-02-13-22-07-26.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="52-确认身份信息"&gt;5.2. 确认身份信息
&lt;/h3&gt;&lt;h4 id="521-选择角色"&gt;5.2.1. 选择角色
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Select your role in education: 选择 Student (学生)。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="522-确认学校关联"&gt;5.2.2. 确认学校关联
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;由于我们在第二章已经绑定了 @mails.neu.edu.cn 的邮箱，系统会自动识别出学校。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;界面通常会提示：You have verified the email address &amp;hellip; associated with the school Northeastern University, China.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;此时直接点击 Continue (继续) 即可。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-22-19-42-13.png" target="_blank"&gt; &lt;img src="images/2026-02-22-19-42-13.png" alt="image" style="max-width: 100%; width: 700px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;点击 Continue 后，再点击 Share Location（分享定位）。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-22-19-42-59.png" target="_blank"&gt; &lt;img src="images/2026-02-22-19-42-59.png" alt="image" style="max-width: 100%; width: 700px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="53-上传学生证件"&gt;5.3. 上传学生证件
&lt;/h3&gt;&lt;p&gt;定位通过后，页面下方会出现证件上传区域。&lt;/p&gt;
&lt;h4 id="531-选择凭证类型"&gt;5.3.1. 选择凭证类型
&lt;/h4&gt;&lt;p&gt;在 Please select the type of proof you would like to provide 下拉菜单中，选择：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Dated school ID - Good (有日期的学生证)
&lt;a href="images/2026-02-13-22-19-48.png" target="_blank"&gt; &lt;img src="images/2026-02-13-22-19-48.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="532-拍照上传"&gt;5.3.2. 拍照上传
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;浏览器会请求使用摄像头，请务必点击 允许。&lt;/li&gt;
&lt;li&gt;拿出您的 东北大学秦皇岛分校一卡通（校园卡）。&lt;/li&gt;
&lt;li&gt;拍摄要求：
&lt;ul&gt;
&lt;li&gt;拍摄印有 人像照片 的那一面。&lt;/li&gt;
&lt;li&gt;确保光线充足，文字清晰可见。&lt;/li&gt;
&lt;li&gt;手持卡片对准摄像头（第二次点击通常有 3 秒延迟拍摄）。&lt;/li&gt;
&lt;li&gt;亲测饭卡（一卡通）是可行的。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-13-22-21-45.png" target="_blank"&gt; &lt;img src="images/2026-02-13-22-21-45.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="54-提交与审核结果"&gt;5.4. 提交与审核结果
&lt;/h3&gt;&lt;h4 id="541-提交申请"&gt;5.4.1. 提交申请
&lt;/h4&gt;&lt;p&gt;照片上传无误后，点击底部的 Submit 提交申请。&lt;/p&gt;
&lt;h4 id="542-查看审核状态"&gt;5.4.2. 查看审核状态
&lt;/h4&gt;&lt;p&gt;提交后页面会显示审核状态，一般 3-4 分钟 即可出结果，请刷新页面查看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approved (绿色)：恭喜！认证通过。页面提示福利将在 72 小时内到账。&lt;/li&gt;
&lt;li&gt;Denied (红色)：认证失败。系统会提示具体原因（如图像不清、定位不符等），请根据提示修正后重新尝试。
&lt;a href="images/2026-02-13-22-26-38.png" target="_blank"&gt; &lt;img src="images/2026-02-13-22-26-38.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-参考资料"&gt;6. 参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://education.github.com/" target="_blank" rel="noopener"
&gt;GitHub Education 官方网站&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://education.github.com/pack" target="_blank" rel="noopener"
&gt;GitHub Student Developer Pack 福利列表&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item><item><title>联邦遗忘学习基础知识</title><link>https://ysy.fan/p/federated-unlearning-fundamentals/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/federated-unlearning-fundamentals/</guid><description>&lt;h2 id="1-联邦遗忘学习"&gt;1. 联邦遗忘学习
&lt;/h2&gt;&lt;h3 id="11-机器遗忘的本质"&gt;1.1 机器遗忘的本质
&lt;/h3&gt;&lt;p&gt;在机器遗忘学习（Machine Unlearning）的语境下，所谓&amp;quot;遗忘数据&amp;quot;，并非指在物理存储介质上删除原始数据文件，而是指&lt;strong&gt;对模型的权重参数进行定向修改，使模型的行为表现等价于从未在该数据上进行过训练&lt;/strong&gt;。这一过程的核心目标是消除特定样本对模型参数分布的影响，同时尽可能保留模型在剩余数据上的泛化能力。&lt;/p&gt;
&lt;h3 id="12-主流遗忘范式"&gt;1.2 主流遗忘范式
&lt;/h3&gt;&lt;p&gt;学术界目前主流的遗忘方法大致可归纳为以下三类范式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;精确遗忘 / 重训练（Exact Unlearning / Retraining）&lt;/strong&gt;：将待遗忘样本从原始训练集中物理移除后，对模型从零开始重新训练。该方法遗忘效果最为彻底，理论上不存在任何残留影响，但在联邦学习场景下代价极高——每次遗忘请求都需要所有参与节点同步进行完整重训，通信开销与算力开销均难以承受。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;近似遗忘（Approximate Unlearning）&lt;/strong&gt;：当前论文中最常见的方法路线，核心思想是&amp;quot;逆向消除梯度贡献&amp;quot;。模型训练阶段通过梯度下降记忆数据特征，遗忘阶段则对应地施加&lt;strong&gt;梯度上升（Gradient Ascent）&lt;strong&gt;或注入特定噪声，以反向抵消目标样本当初对模型参数造成的更新量。在公平性场景下，该范式还可通过构造针对敏感属性（如性别、种族）的&lt;/strong&gt;公平性损失函数&lt;/strong&gt;，向模型注入反向梯度，冲刷偏置权重，实现对敏感特征的脱敏处理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分片隔离（Sharding / SISA）&lt;/strong&gt;：联邦学习场景下的专属优化方案。其核心思路是将训练数据与模型参数按一定策略切分为若干独立的&amp;quot;碎片（Shard）&amp;quot;，避免所有数据混合训练。当某客户端发起遗忘请求时，服务端仅需对涉及该数据的特定碎片执行重训，其余碎片保持不变，从而在保证遗忘效果的同时大幅降低计算与通信开销。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-主动学习"&gt;2. 主动学习
&lt;/h2&gt;&lt;h3 id="21-主动学习的动机"&gt;2.1 主动学习的动机
&lt;/h3&gt;&lt;p&gt;在传统监督学习中，模型训练依赖大量已标注数据的一次性输入。然而在现实场景中，未标注数据（如互联网上的海量图片、文本）获取成本极低，而人工标注（如由医学专家逐一标注影像中的病灶位置）却代价高昂、耗时极长。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;主动学习（Active Learning）&lt;/strong&gt; 正是为了解决这一&amp;quot;标注成本&amp;quot;瓶颈而提出的学习范式：通过让模型主动挑选最有价值的样本交由专家标注，在有限的标注预算内最大化模型性能的提升。&lt;/p&gt;
&lt;h3 id="22-主动学习的核心流程"&gt;2.2 主动学习的核心流程
&lt;/h3&gt;&lt;p&gt;主动学习可以类比为**&amp;ldquo;学生主动向老师提问&amp;rdquo;**的过程——模型不是被动地接受所有数据，而是主动挑出自己最困惑的问题寻求解答。其标准流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;初始化&lt;/strong&gt;：使用少量人工标注数据训练一个初始基础模型；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主动查询（Query Strategy）&lt;/strong&gt;：基础模型扫描海量未标注数据，依据特定策略（如熵值最大、置信度最低）挑选出&lt;strong&gt;信息量最大&lt;/strong&gt;、对当前模型&lt;strong&gt;最具挑战性&lt;/strong&gt;的少数样本；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专家标注（Oracle）&lt;/strong&gt;：将挑选出的样本交由人类专家（论文中称为 Oracle）打上真实标签；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型更新&lt;/strong&gt;：将新标注的高价值样本加入训练集，重新训练或微调模型；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;循环迭代&lt;/strong&gt;：重复步骤 2–4，直至模型性能达标或标注预算耗尽。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;主动学习的核心假设是：&lt;strong&gt;并非所有数据对模型的贡献是等价的&lt;/strong&gt;。少数关键样本所携带的信息量，可能远超大量普通样本。因此，有策略地选择标注对象，能够以远低于全量标注的成本达到相近甚至更优的模型效果。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>论文阅读：FedEditor - Efficient and Effective Federated Unlearning</title><link>https://ysy.fan/p/fededitor-paper-reading/</link><pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/fededitor-paper-reading/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;学术声明 / Academic Statement&lt;/strong&gt;
本文是个人学习笔记，仅用于学术交流和知识分享，非商业用途。
文中观点为作者个人理解和分析，不代表原论文作者立场。
如需引用原论文，请查阅官方出版版本。
版权归原论文作者和 IEEE 所有。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-论文基本信息"&gt;1. 论文基本信息
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标题&lt;/strong&gt;：FedEditor: Efficient and Effective Federated Unlearning in Cooperative Intelligent Transportation Systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作者&lt;/strong&gt;：Xiaohan Yuan, Jiqiang Liu, Bin Wang, Guorong Chen, Xiangrui Xu, Junyong Wang, Tao Li, Wei Wang&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单位&lt;/strong&gt;：Beijing Jiaotong University, Haihe Lab of ITAI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发表期刊&lt;/strong&gt;：IEEE Transactions on Information Forensics and Security, Vol. 20, 2025&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;页码&lt;/strong&gt;：6560-6575&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOI&lt;/strong&gt;：&lt;a class="link" href="https://doi.org/10.1109/TIFS.2025.3583231" target="_blank" rel="noopener"
&gt;10.1109/TIFS.2025.3583231&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;：&lt;a class="link" href="https://github.com/XXiaoY/Fededitor" target="_blank" rel="noopener"
&gt;https://github.com/XXiaoY/Fededitor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;论文作者如下 Xiaohan Yuan, Jiqiang Liu(北京交通大学网络空间安全学院院长), Bin Wang, Guorong Chen, Xiangrui Xu, Junyong Wang, Tao Li(海河实验室副主任), Wei Wang(北京交通大学计算机科学与技术学院的正教授)&lt;/p&gt;
&lt;p&gt;其中除了刘吉强是北京交通大学网络空间安全学院院长，王伟是北京交通大学计算机科学与技术学院的正教授，李涛是海河实验室副主任，其他人都是背景交通大学的学生以及海河实验室的工作人员，在致谢中作者感谢了海河实验室，所以大体是 Xiaohan Yuan 承担了大部分工作，王伟和刘吉强提供指导，海河实验室提供资源&lt;/p&gt;
&lt;p&gt;Xiaohan Yuan 是论文一作，北京交通大学博士在读，在智能交通安全与隐私北京重点实验室，可以看到几乎每篇论文都有王伟的身影，王伟应该是她的导师，他的方向和王伟大体一致，然后这些论文实验室的学生轮流一作&lt;/p&gt;
&lt;p&gt;王伟教授 主要方向是联邦学习与车联网，智能交通安全和 AI 对抗&lt;/p&gt;
&lt;h2 id="2-背景与痛点"&gt;2. 背景与痛点
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-02-13-19-14-20.png" target="_blank"&gt; &lt;img src="images/2026-02-13-19-14-20.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在车联网时代，AI 模型极其依赖海量数据的训练。但随之而来的是严峻的隐私挑战。
随着 GDPR 等法规的出台，‘被遗忘权’成了硬性指标。无论是用户要求删除隐私数据，还是我们发现某批数据被恶意投毒，系统都必须具备一种能力：从训练好的模型中，干净彻底地剥离掉特定数据的影响。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-15-10-28-39.png" target="_blank"&gt; &lt;img src="images/2026-02-15-10-28-39.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&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;a href="images/2026-03-21-21-23-04.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-23-04.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-18-51.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-18-51.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;为此，我们提出了 FedEditor 算法，首先在定位上他是一个高效的主动遗忘算法，与被动重训不同，它允许车辆在本地主动进行修改，其次在方法上 FedEditor 创新性的提出了表征层面的局部遗忘策略
他包含两个核心部件，一个是目标导向遗忘，他通过引入错误质心来作为目标，解决了我们刚才提到的缺乏目标的问题，另一个是模型性能修复，他利用剩余数据和正则化约束保护模型的关键知识，防止灾难性遗忘
接下来我们将详细讲解算法细节&lt;/p&gt;
&lt;h2 id="3-算法核心思路"&gt;3. 算法核心思路
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-21-21-24-27.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-24-27.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;论文首先回顾了集中式场景下的传统机器遗忘方法。尽管这些方法均面向拥有完整数据的单体服务器设计，但其核心思路为联邦遗忘提供了重要参考，大致可分为两类：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;精确遗忘&lt;/strong&gt;的代表是 SISA 框架，其核心策略是&lt;strong&gt;数据分片&lt;/strong&gt;：将训练数据预先切分为若干独立子集，当遗忘请求到来时，仅需对包含目标数据的子模型进行重训，而无需重训整个模型，从而显著降低了时间开销。&lt;/p&gt;
&lt;p&gt;&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;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-27-29.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-27-29.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&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;strong&gt;FedEraser&lt;/strong&gt;，它不再对模型进行完全重训，而是利用历史梯度更新记录进行参数回溯，再引导剩余客户端在当前基础上进行多轮校准训练，从而间接消除目标数据在历史更新中留下的影响；其二是文献 [17] 提出的贡献回滚方案，服务器持续记录每个客户端的参数贡献量，遗忘时直接撤销目标客户端的历史贡献，再对全局模型进行修复。然而，被动联邦遗忘对服务器的持续在线和大量通信开销有较强依赖，难以适应车联网的动态连接环境。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;主动联邦遗忘&lt;/strong&gt;则由客户端在本地独立完成遗忘操作，无需服务器深度介入。最直接的思路是&lt;strong&gt;梯度上升（Gradient Ascent）&lt;/strong&gt;：既然模型通过梯度下降&amp;quot;记住&amp;quot;了训练数据，反向施加梯度上升便能让模型&amp;quot;忘记&amp;quot;目标数据。但纯粹的梯度上升副作用显著，容易在消除目标数据影响的同时破坏模型在剩余数据上的知识，因此后续工作引入了 &lt;strong&gt;EWC（Elastic Weight Consolidation）&lt;/strong&gt; 正则化约束，对参数修改幅度加以限制，以保护关键权重不被过度扰动。此外，文献 [27] 提出的方法与本文的 FedEditor 有异曲同工之妙：该方法通过 &lt;strong&gt;KL 散度&lt;/strong&gt;约束遗忘数据的输出分布，使当前模型的行为趋近于一个从未见过目标数据的理想模型。两者的关键区别在于作用层次——文献 [27] 的约束作用于&lt;strong&gt;分类器的输出层&lt;/strong&gt;，而 FedEditor 则直接干预更底层的&lt;strong&gt;特征提取器&lt;/strong&gt;，实现表征层面的精准遗忘。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-31-42.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-31-42.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通过对上述方法的系统梳理，FedEditor 的设计目标逐渐清晰：&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;a href="images/2026-03-21-21-32-22.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-32-22.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;具体来说，我们需要通过高效的遗忘算法生成一个遗忘模型，使其在性能和行为上尽可能接近理想的“理想模型”（即完全移除目标数据后重新训练得到的模型）。其核心思想是通过特定手段，使遗忘后的模型在待遗忘数据上的表现与对非成员数据类似。从评估角度来看，是否成功遗忘的标准通常采用成员推理攻击：训练一个判别模型来区分数据是否为成员。如果新模型能够有效误导该判别器，使其将待遗忘数据识别为非成员，则视为遗忘成功。同时，新的模型还需确保对其他数据的准确性不受影响，也就是说，其特征提取结果需与原模型高度一致，实现知识的完整保留。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-35-20.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-35-20.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而，传统的被动联邦遗忘算法由于耗时过长难以满足实际需求，而梯度上升方法效果也有限——在模型过拟合时难以彻底遗忘目标数据，正常情况下又容易经过多轮训练后导致剩余知识的灾难性遗忘。面对这些局限，作者选择突破常规，创新性地提出了全新的解决思路。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-36-06.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-36-06.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;前面提到，为了让训练后的模型对遗忘数据的“看法”与非成员数据一致，我们需要找到合适的衡量指标。作者通过定量分析发现，在原始模型中，待遗忘（成员）数据的交叉熵一般较小且波动较小，说明模型对这些数据有高度自信；而对于非成员数据，交叉熵则普遍较大且波动很大，反映出模型缺乏信心。在“理想模型”——即已经完全移除目标数据并重新训练得到的模型——中，待遗忘数据表现出与非成员数据一致的高交叉熵和不稳定性，表明这些数据已被模型“遗忘”。因此，如果希望模型把待遗忘数据当做“陌生人”，核心目标就是显著提升其交叉熵，使其表现接近非成员数据。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-36-13.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-36-13.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;除了定量指标之外，表征分布的可视化（如图 4）也进一步揭示了特征层的变化：原始模型下，成员数据的特征分布紧密且边界清晰，显示出模型强烈的区分能力；而在理想模型中，遗忘数据的特征分布变得分散模糊，完全融入背景，与成员数据融为一体，标志着模型已不再识别这些数据。从本质上讲，让待遗忘数据变成“陌生人”的关键，就是打破其原本紧密的聚类结构，使其在特征空间内变得杂乱、无序。&lt;/p&gt;
&lt;p&gt;那么，如何高效且精确地打散这些特征，使遗忘彻底生效？接下来我们将详细介绍 FedEditor 的核心算法设计。&lt;/p&gt;
&lt;h2 id="4-核心方法详解"&gt;4. 核心方法详解
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-21-21-37-28.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-37-28.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在论文中，FedEditor 的算法流程如图所示：当某个客户端发起遗忘请求后，先从服务器获取全局模型，随后仅针对特征提取器进行精细、局部的修改，实现主动遗忘。这一创新点区别于传统的联邦遗忘方法。与以往依赖梯度上升直接调整全局参数（如文献 11）或修改输出层（如文献 27）的做法不同，FedEditor 选择“手术式”地干预特征提取器，将遗忘作用精确聚焦于表征层。通过调整特征提取器的参数，打破原本紧密聚类的成员特征分布，使其变得分散、无序，从而逼近“理想模型”的特性。&lt;/p&gt;
&lt;p&gt;可以类比为：特征提取器如同“眼睛”，分类器如同“大脑”。当眼睛准确地将“5”对应的特征传给大脑时，大脑很容易识别为数字 5。但如果改变了“眼睛”的参数，使其输出的特征与原标签弱相关，大脑也难以做出准确判断。这就是 FedEditor 遗忘的基本思想。&lt;/p&gt;
&lt;p&gt;具体操作流程如下：首先利用非成员数据，通过原始模型的特征提取器计算每个错误类别的特征中心（绿色圆圈和星星，星星代表各类别均值中心）；再用待遗忘数据，通过同样的特征提取层获得其初始特征向量（左侧红点）。对于每一个待遗忘样本，都会选择其最近的错误类别中心作为目标，通过优化使该样本经过修改后的特征提取器输出从原始位置逐步“推离”并朝该错误类别中心“靠拢”。在这一过程中，原始特征位置提供动力，目标位置产生牵引，参数变化通过权重正则化加以约束，分类损失保障剩余数据的预测准确性。最终，原本聚集的待遗忘样本的特征会因为各自最近的错误类别中心不同而被拉扯到不同方向，特征分布整体被打散，原标签与特征不再高度对应，分类器对它们的预测置信度降低、交叉熵显著升高，实现模型对其“陌生化”——使成员推理攻击也难以分辨，达到真正的遗忘效果。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：为什么要用非成员数据来计算错误类别中心，而不是直接用训练数据呢？以“遗忘数字 5 的图片”为例，如果我们用训练集中“7”这一类别来作为错误类别中心，看似无害，但实际上，成员数据（即参与过训练的数据）与模型的拟合高度相关。如果用成员数据计算错误类别中心，待遗忘样本在特征空间被引导靠近这些点时，会不可避免地染上成员数据的特征分布。由于模型对成员数据本就具有高置信度，此时即便模型从“高置信度的 5”识别为“高置信度的 7”，置信度依然很高，反而让攻击者依旧容易通过成员推理攻击判断该样本参与过训练——即使预测标签错了，只要置信度高异常就仍有泄漏风险。因此，选取非成员数据（未被模型训练过的数据）计算错误类别中心，可以最大化减少遗忘过程中成员特征的“染色”，避免模型对这些点形成异常自信，从而实现更彻底的遗忘和更强的抗推理攻击能力。
至于“非成员数据”具体该如何选择，其实通常直接采用训练集对应的测试集即可——即便没有严格对应的测试集，选择其他相似分布的测试数据也完全可行。实验证明，只要数据未被模型训练过，都可以作为合格的非成员数据用于错误类别中心的计算。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-00-14.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-00-14.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;前文提到，原始特征向量为推力，错误类别中心为拉力，这种说法容易流于抽象。那么，FedEditor 的遗忘机制究竟是如何在算法层面实现的呢？这里，作者提出了基于模型的对比学习（contrastive learning）的创新思路。与传统对比学习仅对不同增强版本的同类样本进行“拉近正样本、推远负样本”不同，MOON 算法的突破在于将对比对象从数据维度扩展到了模型维度，通过让本地模型与全局模型间的特征距离拉近，提升联邦训练的稳定性。&lt;/p&gt;
&lt;p&gt;FedEditor 则在此基础上进一步创新，对正负样本对的定义做了巧妙翻转：正样本对设定为“错误类别中心”，负样本对则为“原始正确类别的特征中心”。在优化过程中，每一个待遗忘样本被有意拉近至与其标签错误的类别中心，同时远离其原本所属类别中心。这一机制促使成员数据在特征空间内失去原有紧密聚类的结构，分布变得分散、模糊，从而达到遗忘目标并有效削弱成员推理攻击的能力。&lt;/p&gt;
&lt;p&gt;相关的计算流程如下：首先，遍历所有非成员数据，计算得到各类别的错误类别中心。然后，对于每一个待遗忘样本，选择其最近的错误类别中心作为“正样本对”，并将原始正确类别的特征中心作为“负样本对”。在定义损失函数时，采用对比学习的经典结构：优化目标是增强锚点（待遗忘样本特征）与新目标（最近错误类别中心）之间的相似度，同时削弱与原类别中心的相似度。具体而言，分子部分衡量锚点与新目标的相似性，分母部分则综合了与新目标和旧目标的相似性。通过最小化该损失函数，可以推动特征提取器更好地将待遗忘数据的特征远离原类别，同时向错误类别靠拢，有效打散原有的聚类特征，从而实现遗忘目的。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-07-39.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-07-39.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;与此同时，模型修复模块中的两个关键损失函数在持续发挥作用：其一，记忆保留损失（即交叉熵损失）确保模型对剩余数据的预测准确性不受遗忘过程影响；其二，偏差抵抗损失（即权重正则化）则限制参数变化幅度，防止模型结构发生较大偏移。这三项损失（加上遗忘损失）通过加权求和，共同组成算法的全局损失函数，有效引导模型实现精准、可控的参数调整。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-21-37-28.png" target="_blank"&gt; &lt;img src="images/2026-03-21-21-37-28.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;回到整体流程，在完成局部模型修改后，客户端将新模型上传到服务器，由服务器进行聚合。随后，为评估遗忘效果，会基于原始模型输出，用成员数据和非成员数据训练一个二分类器（成员推理攻击器），再利用该分类器检测新模型对待遗忘数据的判别效果。如果分类器在新模型上难以分辨成员与非成员数据，则判定遗忘成功。&lt;/p&gt;
&lt;h2 id="5-实验设计与结果"&gt;5. 实验设计与结果
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-21-22-10-37.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-10-37.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;算法设计完成后，进入实验评估阶段，以全面验证所提方法的有效性与优越性。为此，作者围绕算法性能提出了四个核心问题，后续将结合具体实验数据一一解答。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-11-08.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-11-08.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;实验部分，作者选用了五个经典图像数据集（FMNIST、CIFAR10、SVHN、CIFAR100、GTSRB）和两个表格数据集（LOAN 和 BAIOT）来全面验证方法的有效性。其中，FMNIST（Fashion-MNIST）用于服饰图像分类，CIFAR10 和 CIFAR100 用于通用物体识别，SVHN 主要针对街景数字识别，GTSRB 则用于交通标志分类；LOAN 和 BAIOT 数据集分别涉及贷款欺诈检测和物联网设备异常检测。实验评价指标包括遗忘效率、遗忘质量和预测性能三大类标准。在遗忘质量评估方面，作者同时采用了后门检测、基于指标的分析和基于模型的评测三种方法以确保结论的客观全面。对比方案则涵盖了基于 FedAvg 训练的原始模型、彻底重训练得到的理想模型，以及多个主流被动和主动联邦遗忘算法。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-14-40.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-14-40.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在训练效率方面，被动遗忘算法虽然通常能够获得更高的准确率，但其训练过程十分耗时。比如 Eraser 的整体流程复杂，Rap_train 需要计算二阶导数矩阵，Con_train 则需用剩余数据重新训练多轮，因此耗费的时间成本较高。相比之下，主动遗忘算法在效率上有显著优势。虽然 FedEditor 并不是所有主动算法中最快的方案（如 Ram_lab 通过随机标签处理在速度上更有优势，而 FedEditor 需计算质心并构造正负样本对，耗时略长），但 FedEditor 作为主动遗忘方法，兼顾了效率与准确性：其训练速度远超被动遗忘算法，同时在剩余数据上的准确率不仅明显高于其他主动算法，还几乎与被动遗忘算法持平甚至略有超越。尤其在车联网等对安全性要求极高的场景下，为提升剩余数据的识别精度、哪怕多花费几秒训练时间也是完全值得的。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-17-22.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-17-22.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;针对问题 2，即遗忘的有效性，从实验结果可以看出，FedEditor 在遗忘任务上表现十分出色。尽管与部分对比方法相比，遗忘识别率未必最低，但已经显著降低了模型对待遗忘数据的记忆，充分实现了预期的遗忘目标。同时，值得注意的是，遗忘识别率并非越低越好。例如，完全重训练的模型遗忘识别率也无法降到 0，而有些算法虽然实现了极低的遗忘识别率，却以牺牲剩余数据的准确性为代价，整体表现反而不佳。&lt;/p&gt;
&lt;p&gt;这里需要重点解释一下论文中用来衡量“遗忘干净程度”的两个核心指标：JSD to Re_train↓ 和 AD to Re_train↓。这两个指标的关键点在于后缀的“to Re_train” —— 即和彻底删数据、从头完整重训（Retrain）的“黄金标准”模型进行对比。“↓”代表数值越小越好，也就是遗忘模型和重训模型的差距越小越好。&lt;/p&gt;
&lt;p&gt;具体来说：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;JSD (Jensen-Shannon Divergence，詹森 - 香农散度)：这个指标用来衡量概率分布之间的相似度。在本场景下，就是比较你的遗忘模型与重训模型，在同一个测试样本上输出的预测概率分布有多相像。JSD 值越接近 0，说明你的遗忘模型在输出层上已经非常接近于“完美遗忘”的重训模型，没有残留异常行为，遗忘够“干净”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AD (Activation Distance / Absolute Distance，激活距离/绝对距离)：这个指标反映两个模型在处理相同输入时，其内部特征表示或输出向量之间的空间距离。如果说 JSD 比的是“猜的结果”，AD 看的则是底层“思考过程”上的接近程度。AD 越低，表示遗忘模型在神经元、特征层参数等深层面也已和重训模型非常接近，遗忘的效果非常彻底。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;论文实验展示，FedEditor 在这两个核心指标（JSD to Re_train↓ 和 AD to Re_train↓）上的表现整体优于基准模型，说明其遗忘算法不仅实现了高效“删除”，而且最小化了与重训的差距，在不影响剩余数据性能的前提下，遗忘结果足够彻底和“纯净”。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-20-16.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-20-16.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从熵分布图可以直观地看出，FedEditor 有效地模拟了重训练效果：蓝色表示原始模型，其熵分布集中且数值较低，而重训练模型和遗忘模型的熵分布整体更高、更分散，并且二者在分布区域上高度重叠，显示出遗忘模型成功逼近了理想的重训练状态。进一步，通过特征表示的可视化结果也能明显看出模型调整后的作用：图 a 展示的是基准模型，不同类别的数据在特征空间中聚成明显的团块，类别间区分清晰；图 c 则表明在彻底重训练后，待遗忘数据的原本聚类被有效打散，分布渗透到其他类别的团块之中，模型已无法准确区分这些待遗忘样本的原始类别。图 d 进一步展示了特征分布的动态变化：蓝色为成员数据，绿色为非成员数据，粉色代表待遗忘数据的初始状态，黄色为遗忘后状态。可见，遗忘后待遗忘数据的特征向量由原先的高度聚集状态被有意识地驱散，分布到非成员数据周围，与作者提出的设计目标高度一致。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-28-31.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-28-31.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;关于第三个问题预测能力的准确性，可以看到图中 FedEditor 的数据非常亮眼，在各个算法中都名列前茅，这因为 FedEditor 有明确的对齐目标，而且专注于表示层的修改，相比之下，Rap_train 等被动方法虽然准确但太慢，而 GA 等主动方法虽然快但会严重破坏模型性能。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-29-44.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-29-44.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;全局损失函数由三部分组成，通过消融实验证明三部分缺一不可，且 FedEditor 精心选择 a 和 r 最后取得了平衡点
为什么不涉及β，在多目标优化中，通常需要选定一个基准。由于 lr 代表的是“保持正常功能”这个最基础的目标，作者把它设为 1（基准单位）。默认 a 是 10,r 是 0.1&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-31-30.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-31-30.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不同分布的非成员数据对模型训练的影响：图中从左到右，所选非成员数据集的质量依次降低，但实验结果显示，无论非成员数据质量如何，模型的遗忘效果与剩余数据的准确率基本保持稳定。这表明，甚至随意选取一些无关图片作为非成员数据，也能够有效支撑算法实现遗忘目标。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-32-17.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-32-17.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FedEditor 带来的额外计算和通信开销极小。实验还表明，即使显著降低非成员数据的比例，对最终模型性能和遗忘效果的影响也非常有限，算法鲁棒性较强，无需高比例非成员数据即可达到理想表现。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-34-41.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-34-41.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;作者还进一步通过实验探究了能否实现对整类对象的遗忘（如遗忘所有猫或所有狗）。结果显示，在原始模型中，模型的注意力主要集中在动物的眼睛、鼻子等关键区域，以辅助类别判别；而理想模型则不再关注这些区域。经过 FedEditor 算法处理后，模型的注意力分布与理想重训练模型高度一致，充分证明了该方法在整类遗忘场景下同样具备良好效果和可行性。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-03-21-22-37-21.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-37-21.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后，作者还在多种车联网现实复杂场景下对 FedEditor 的稳定性进行了深入验证。实验涵盖了不同类别和任务设置，即使在各种极端或高难度的环境中，FedEditor 依然展现出显著的稳健性。尽管任务复杂度提升会带来模型性能的轻微下降，但整体表现依然优异，各项指标变化均处于可接受范围之内，充分证明了算法的通用性与稳定性。&lt;/p&gt;
&lt;h2 id="6-总结与思考"&gt;6. 总结与思考
&lt;/h2&gt;&lt;p&gt;&lt;a href="images/2026-03-21-22-40-51.png" target="_blank"&gt; &lt;img src="images/2026-03-21-22-40-51.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FedEditor 创新性地将轻量级本地遗忘机制集成到联邦学习流程中。针对待遗忘车辆的数据，FedEditor 精确构建了目标对齐方案，并结合表征空间净化技术，有效消除了遗忘数据对全局模型的影响。同时，FedEditor 利用目标车辆的剩余数据优化模型输出分布，通过引入正则化项抑制模型漂移，确保在遗忘过程中全局模型的预测能力稳定。大量实验结果进一步验证，FedEditor 能以高效率完成有效遗忘，同时几乎不影响全局模型对遗忘数据以外样本的预测性能。&lt;/p&gt;
&lt;h2 id="7-参考文献"&gt;7. 参考文献
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;原文引用格式（IEEE 格式）：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;X. Yuan, J. Liu, B. Wang, G. Chen, X. Xu, J. Wang, T. Li, and W. Wang,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;FedEditor: Efficient and Effective Federated Unlearning in Cooperative
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Intelligent Transportation Systems,&amp;#34; IEEE Transactions on Information
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Forensics and Security, vol. 20, pp. 6560-6575, 2025.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DOI: 10.1109/TIFS.2025.3583231
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;相关链接：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;论文 DOI: &lt;a class="link" href="https://doi.org/10.1109/TIFS.2025.3583231" target="_blank" rel="noopener"
&gt;https://doi.org/10.1109/TIFS.2025.3583231&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;代码仓库：&lt;a class="link" href="https://github.com/XXiaoY/Fededitor" target="_blank" rel="noopener"
&gt;https://github.com/XXiaoY/Fededitor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item><item><title>Clash Verge 个人节点搭建完整教程</title><link>https://ysy.fan/p/clash-verge-setup-tutorial/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/clash-verge-setup-tutorial/</guid><description>&lt;h2 id="1-引言"&gt;1. 引言
&lt;/h2&gt;&lt;p&gt;在互联网日益复杂的今天，拥有一台属于自己的远程服务器（VPS）不仅是程序员的练手必备，更是探索更广阔网络世界的基石。相比于购买现成的机场服务，自建节点最大的优势在于独享带宽、数据安全以及完全的可控性。&lt;/p&gt;
&lt;p&gt;本教程将手把手教你如何从零开始，搭建一套稳定、高速且现代化的节点服务。我们将采用目前主流且配置简便的方案，即使你对 Linux 命令不熟悉，也能轻松完成。&lt;/p&gt;
&lt;h2 id="2-服务器选购与基础环境部署"&gt;2. 服务器选购与基础环境部署
&lt;/h2&gt;&lt;p&gt;一切的开始，我们需要拥有一台位于海外的虚拟服务器（VPS）。本章将指导你完成账号注册、充值以及服务器的各项配置选择。&lt;/p&gt;
&lt;h3 id="21-平台选择与账号注册"&gt;2.1. 平台选择与账号注册
&lt;/h3&gt;&lt;p&gt;在众多 VPS 服务商中，本教程首选 Vultr 作为演示平台，主要基于以下几点核心优势：&lt;/p&gt;
&lt;p&gt;支付便捷：直接支持 支付宝 (Alipay) 扫码付款，无需准备境外信用卡或 PayPal，这是对国内用户最友好的功能之一。&lt;/p&gt;
&lt;p&gt;性价比高：提供“共享 CPU (Shared CPU)”的基础方案，价格低廉，完全满足个人节点的性能需求。&lt;/p&gt;
&lt;p&gt;线路优势：拥有洛杉矶 (Los Angeles) 等优质数据中心，作为国际网络枢纽，其信号连接相对畅通，延迟较低。&lt;/p&gt;
&lt;p&gt;新手福利：新用户注册往往会获赠一定额度的体验金（例如 $300），虽然通常有有效期限制（如 30 天），但足以让你免费完成初期的搭建和测试。&lt;/p&gt;
&lt;p&gt;注册账号：访问 Vultr 官网（&lt;a class="link" href="https://my.vultr.com/%ef%bc%89%e8%bf%9b%e8%a1%8c%e6%b3%a8%e5%86%8c%e5%b9%b6%e7%99%bb%e5%bd%95" target="_blank" rel="noopener"
&gt;https://my.vultr.com/）进行注册并登录&lt;/a&gt; 。
&lt;a href="images/2026-02-11-11-59-25.png" target="_blank"&gt; &lt;img src="images/2026-02-11-11-59-25.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
账号充值：&lt;/p&gt;
&lt;p&gt;登录后点击左侧菜单栏的 Account（账户）。&lt;/p&gt;
&lt;p&gt;在支付方式中选择 Alipay（支付宝），这对国内用户非常方便。
&lt;a href="images/2026-02-11-12-02-41.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-02-41.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
填写必要的账单信息（可用拼音），选择充值金额（例如 $10 或 $25），勾选同意条款并点击 Pay with Alipay 完成支付。&lt;/p&gt;
&lt;p&gt;注：新用户注册有时会获赠 $300 的体验金（有效期通常为一个月），这属于新手福利，过期后会自动失效，不必惊慌。
&lt;a href="images/2026-02-11-12-03-09.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-03-09.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="22-部署服务器-deploy-instance"&gt;2.2. 部署服务器 (Deploy Instance)
&lt;/h3&gt;&lt;p&gt;充值到账后，点击页面右上角的蓝色按钮 Deploy + -&amp;gt; Deploy New Server 开始创建服务器。下面会推荐配置，以确保性价比和兼容性：
&lt;a href="images/2026-02-11-12-03-21.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-03-21.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
Choose Type（服务器类型）：选择 Shared CPU（共享 CPU）。对于个人节点而言，共享核心的性能完全足够，且价格最实惠。&lt;/p&gt;
&lt;p&gt;Choose Location（地区选择）：建议选择 Americas -&amp;gt; Los Angeles（洛杉矶）。这里是中美海底光缆的登陆点之一，作为网络枢纽，通常能提供较好的连接速度和信号稳定性。&lt;/p&gt;
&lt;p&gt;Choose Plan（配置套餐）：根据个人预算选择。通常选择 $5.00/month（1 vCPU, 1GB Memory）的配置即可满足日常 4K 视频浏览等需求。&lt;/p&gt;
&lt;p&gt;Additional Features（附加功能）：重要提示：请务必找到 Automatic Backups（自动备份）选项并点击 Disable（关闭）。&lt;/p&gt;
&lt;p&gt;理由：自动备份需要额外收费。对于这种随时可以销毁重建的节点服务器，开启备份不仅浪费钱，也没有太大的实际意义。
&lt;a href="images/2026-02-11-12-04-37.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-04-37.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
Choose Image（操作系统）：选择 Debian，版本建议选择 12 x64。Debian 系统以轻量、稳定著称，相比其他系统更节省服务器资源。
&lt;a href="images/2026-02-11-12-06-09.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-06-09.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="23-获取服务器信息"&gt;2.3. 获取服务器信息
&lt;/h3&gt;&lt;p&gt;点击底部的 Deploy Now 部署后，等待服务器状态从 Installing 变为 Running。点击服务器名称（如 Cloud Instance）进入详情页，请记录下以下两项关键信息，稍后连接服务器时必须用到：
&lt;a href="images/2026-02-11-12-06-48.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-06-48.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
IP Address：服务器的公网 IP 地址。&lt;/p&gt;
&lt;p&gt;Password：root 账户的初始密码（点击眼睛图标可显示，点击复制图标可直接复制）&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-11-12-07-00.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-07-00.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-服务器连接与面板安装"&gt;3. 服务器连接与面板安装
&lt;/h2&gt;&lt;p&gt;购买好服务器后，我们需要通过 SSH（Secure Shell）远程连接到它，并安装可视化的管理面板 3x-ui。&lt;/p&gt;
&lt;h3 id="31-建立-ssh-连接"&gt;3.1. 建立 SSH 连接
&lt;/h3&gt;&lt;p&gt;我们需要使用电脑自带的终端工具连接服务器。&lt;/p&gt;
&lt;p&gt;右键点击“开始”菜单，选择 Windows PowerShell 或 终端。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-11-12-26-07.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-26-07.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在终端中输入以下指令（请将 xx.xx.xxx.xxx 替换为你刚才在 Vultr 后台复制的 IP 地址）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh root@xx.xx.xxx.xxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;连接过程中的注意事项：&lt;/p&gt;
&lt;p&gt;首次连接确认：输入指令回车后，若提示 Are you sure you want to continue connecting (yes/no/[fingerprint])?，请输入 yes 并回车。&lt;/p&gt;
&lt;p&gt;输入密码：系统会提示 root@&amp;hellip; password:。此时输入你刚才复制的服务器密码。注意：Linux 系统为了安全，输入密码时屏幕上不会显示任何字符（包括星号），光标也不会移动。这完全正常，输完密码后直接按回车即可。
&lt;a href="images/2026-02-11-12-29-20.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-29-20.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="32-优化连接稳定性防断连"&gt;3.2. 优化连接稳定性（防断连）
&lt;/h3&gt;&lt;p&gt;默认情况下，如果 SSH 连接长时间无操作会自动断开。为了避免安装过程中断，建议先执行以下指令设置“心跳包” 。&lt;/p&gt;
&lt;p&gt;请依次复制以下三行指令，在终端中粘贴并回车执行：&lt;/p&gt;
&lt;p&gt;Bash
echo &amp;ldquo;ClientAliveInterval 60&amp;rdquo; &amp;raquo; /etc/ssh/sshd_config
echo &amp;ldquo;ClientAliveCountMax 3&amp;rdquo; &amp;raquo; /etc/ssh/sshd_config
systemctl restart ssh
&lt;a href="images/2026-02-11-12-29-35.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-29-35.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="33-安装-3x-ui-管理面板"&gt;3.3. 安装 3x-ui 管理面板
&lt;/h3&gt;&lt;p&gt;接下来，我们将安装 3x-ui 面板，它能让我们通过网页轻松管理节点。&lt;/p&gt;
&lt;p&gt;复制以下一键安装脚本到终端并回车：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash &amp;lt;(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-11-12-30-45.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-30-45.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
安装引导设置：
&lt;p&gt;脚本启动后，会询问是否自定义端口。输入 y 并回车。&lt;/p&gt;
&lt;p&gt;设置面板端口：建议输入一个好记的数字，例如 54321，然后回车。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-11-12-31-07.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-31-07.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
安装完成后，终端会显示你的登录信息，包括访问地址（http://IP: 端口） 。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-11-12-31-30.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-31-30.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="34-配置防火墙开放端口"&gt;3.4. 配置防火墙（开放端口）
&lt;/h3&gt;&lt;p&gt;为了让外部网络能访问我们的面板和节点，必须配置服务器防火墙开放相应的端口。&lt;/p&gt;
&lt;p&gt;请依次执行以下指令：&lt;/p&gt;
&lt;h4 id="341-更新软件源并安装-ufw-防火墙工具"&gt;3.4.1. 更新软件源并安装 UFW 防火墙工具
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update &amp;amp;&amp;amp; apt install ufw -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="342-开放必要端口"&gt;3.4.2. 开放必要端口
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow ssh # 开放 SSH 连接端口，防止自己被锁在外面 [cite: 34]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow 54321 # 开放刚才设置的面板端口 [cite: 35]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw allow 443 # 开放节点传输端口（后续配置节点时会用到） [cite: 36]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="343-启用防火墙"&gt;3.4.3. 启用防火墙
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ufw enable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;（如果提示 Command may disrupt existing ssh connections，输入 y 确认即可）
&lt;a href="images/2026-02-11-12-32-39.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-32-39.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
至此，服务器端的底层环境已经搭建完毕。&lt;/p&gt;
&lt;h2 id="4-面板配置与节点创建"&gt;4. 面板配置与节点创建
&lt;/h2&gt;&lt;p&gt;环境搭建完毕后，我们将离开黑色的命令行界面，转到浏览器中进行可视化的操作。本章的核心任务是配置目前业界公认“隐蔽性”最强、且被封锁概率最低的协议组合：&lt;strong&gt;VLESS + TCP + Reality&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="41-登录管理面板"&gt;4.1. 登录管理面板
&lt;/h3&gt;&lt;p&gt;打开您电脑上的浏览器，在地址栏输入访问地址。格式为 &lt;code&gt;http://你的服务器 IP: 端口号&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;例如，如果您的 IP 是 &lt;code&gt;192.168.1.1&lt;/code&gt;，安装时设置的端口是 &lt;code&gt;54321&lt;/code&gt;，则完整地址为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a class="link" href="http://192.168.1.1:54321" target="_blank" rel="noopener"
&gt;http://192.168.1.1:54321&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;进入登录页面后，输入我们在上一章安装过程中设置的&lt;strong&gt;用户名&lt;/strong&gt;和&lt;strong&gt;密码&lt;/strong&gt;，点击登录进入系统仪表盘。
&lt;a href="images/2026-02-11-12-43-54.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-43-54.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3 id="42-添加并配置入站节点"&gt;4.2. 添加并配置入站节点
&lt;/h3&gt;&lt;p&gt;在左侧菜单栏中找到 &lt;strong&gt;入站列表 (Inbound List)&lt;/strong&gt;，点击进入后，选择页面中的绿色按钮 &lt;strong&gt;添加入站 (Add Inbound)&lt;/strong&gt;。
&lt;a href="images/2026-02-11-12-44-07.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-44-07.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
此时会弹出一个详细的配置窗口，这是整个教程最关键的一步。请严格按照以下参数进行设置，未提及的选项保持默认即可：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;备注 (Remark)&lt;/strong&gt;：&lt;code&gt;MyVPN&lt;/code&gt; （或者任何您喜欢的名字）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协议 (Protocol)&lt;/strong&gt;：&lt;code&gt;vless&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;端口 (Port)&lt;/strong&gt;：&lt;code&gt;443&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;注意：这里必须填 443，因为我们在配置防火墙时专门开放了这个端口。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;传输 (Network)&lt;/strong&gt;：&lt;code&gt;tcp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全 (Security)&lt;/strong&gt;：&lt;code&gt;reality&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;重要：选择此项后，下方会出现更多关于伪装的设置选项。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;uTLS&lt;/strong&gt;：&lt;code&gt;chrome&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目标网站 (Target)&lt;/strong&gt;：&lt;code&gt;www.microsoft.com:443&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SNI 域名 (SNI)&lt;/strong&gt;：&lt;code&gt;www.microsoft.com&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;原理：Reality 协议会将您的流量伪装成访问微软官网，从而在防火墙面前“隐身”。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;公钥/私钥 (Public/Private Key)&lt;/strong&gt;：点击输入框下方的 &lt;strong&gt;&lt;code&gt;Get New Cert&lt;/code&gt;&lt;/strong&gt; 按钮，系统会自动生成一串密钥。
&lt;a href="images/2026-02-11-12-44-19.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-44-19.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
&lt;a href="images/2026-02-11-12-44-27.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-44-27.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="43-保存并生效"&gt;4.3. 保存并生效
&lt;/h3&gt;&lt;p&gt;确认上述所有信息（尤其是端口和协议）填写无误后，点击窗口底部的 &lt;strong&gt;添加 (Create)&lt;/strong&gt; 或&lt;strong&gt;更新 (Create)&lt;/strong&gt; 按钮。&lt;/p&gt;
&lt;p&gt;添加成功后，您会在列表中看到刚才创建的节点。此时，您的服务器端配置已全部完成，它正静静地等待客户端的连接&lt;/p&gt;
&lt;h2 id="5-客户端配置与连通性测试"&gt;5. 客户端配置与连通性测试
&lt;/h2&gt;&lt;p&gt;服务端（VPS）配置完成后，我们还需要在电脑上安装专门的客户端软件，才能将网络流量通过节点进行转发。本教程将以开源、免费且功能强大的 &lt;strong&gt;Clash Verge&lt;/strong&gt; 为例进行演示。&lt;/p&gt;
&lt;h3 id="51-下载并安装客户端"&gt;5.1. 下载并安装客户端
&lt;/h3&gt;&lt;p&gt;首先，请下载适配您操作系统的 Clash Verge 客户端。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GitHub 官方下载&lt;/strong&gt;（推荐）：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a class="link" href="https://github.com/clash-verge-rev/clash-verge-rev/releases" target="_blank" rel="noopener"
&gt;https://github.com/clash-verge-rev/clash-verge-rev/releases&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Windows 用户请下载 &lt;code&gt;.exe&lt;/code&gt; 安装包（通常为 x64-setup.exe），Mac 用户请下载 &lt;code&gt;.dmg&lt;/code&gt; 文件。&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="52-导出并转换节点配置"&gt;5.2. 导出并转换节点配置
&lt;/h3&gt;&lt;p&gt;由于 Clash 软件无法直接识别原始的 VLESS 链接，我们需要借助工具将其转换为 Clash 专用的配置文件（.yaml 格式）。&lt;/p&gt;
&lt;h4 id="521-获取节点链接"&gt;5.2.1. &lt;strong&gt;获取节点链接&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;回到浏览器中的 &lt;strong&gt;3x-ui 管理面板&lt;/strong&gt;，在 &lt;strong&gt;入站列表&lt;/strong&gt; 中找到刚才创建的节点。
点击节点左侧的 &lt;strong&gt;菜单图标&lt;/strong&gt;（三个点），选择 &lt;strong&gt;导出链接&lt;/strong&gt;，然后点击复制。
&lt;a href="images/2026-02-11-12-51-16.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-51-16.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h4 id="522-手动创建配置文件"&gt;5.2.2. &lt;strong&gt;手动创建配置文件&lt;/strong&gt;
&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;可按照以下方法手动创建 &lt;code&gt;.yaml&lt;/code&gt; 配置文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;第一步：解析 vless 链接&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;复制到的节点链接格式如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vless://{uuid}@{server}:{port}?type={network}&amp;amp;...&amp;amp;pbk={public-key}&amp;amp;fp={fingerprint}&amp;amp;sni={servername}&amp;amp;sid={short-id}#{name}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以实际链接为例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vless://b71c4e29-d0c6-4906-b6a4-956e7ec2d005@64.64.242.65:443?type=tcp&amp;amp;encryption=none&amp;amp;security=reality&amp;amp;pbk=jJZt-0pxC42THHzelBlhE6ObF_bKkmE_5P3sjdLRpz8&amp;amp;fp=chrome&amp;amp;sni=www.microsoft.com&amp;amp;sid=fe69b17bb8440e&amp;amp;spx=%2F#MyVPN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&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;://&lt;/code&gt; 与 &lt;code&gt;@&lt;/code&gt; 之间&lt;/td&gt;
&lt;td&gt;&lt;code&gt;b71c4e29-...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;UUID（用户身份凭证）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@&lt;/code&gt; 与 &lt;code&gt;:&lt;/code&gt; 之间&lt;/td&gt;
&lt;td&gt;&lt;code&gt;64.64.242.65&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;服务器 IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP 后的 &lt;code&gt;:&lt;/code&gt; 之后&lt;/td&gt;
&lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;端口号&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;type=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tcp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;传输协议&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pbk=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;jJZt-0p...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reality 公钥&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fp=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;chrome&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;客户端指纹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sni=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;www.microsoft.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;伪装域名&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sid=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;fe69b17bb8440e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reality Short ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;#&lt;/code&gt; 之后&lt;/td&gt;
&lt;td&gt;&lt;code&gt;MyVPN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;节点备注名&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;第二步：填入模板&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;新建一个文本文件，将后缀命名为 &lt;code&gt;.yaml&lt;/code&gt;（例如 &lt;code&gt;MyVPN.yaml&lt;/code&gt;），复制以下模板内容，然后将各占位符替换为上表中解析出的对应值：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7890&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;socks-port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7891&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;allow-lan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;rule&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;log-level&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;info&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;external-controller&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;9090&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;rule-providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;google&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;http&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;behavior&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;domain&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/google.txt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./ruleset/google.yaml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;86400&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;proxy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;http&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;behavior&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;domain&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./ruleset/proxy.yaml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;86400&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;direct&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;http&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;behavior&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;domain&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/direct.txt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./ruleset/direct.yaml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;interval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;86400&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;proxies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;MyVPN&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 节点名称，可自定义&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;vless&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;server&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;server }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为服务器 IP&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;port }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为端口号&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;uuid }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为 UUID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;network&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;network }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为传输协议（如 tcp）&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tls&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;udp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;flow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;servername&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;sni }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为 sni= 的值&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;client-fingerprint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;fp }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为 fp= 的值&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;reality-opts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;public-key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;public-key }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为 pbk= 的值&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;short-id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;short-id }&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# ← 替换为 sid= 的值&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;proxy-groups&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;节点选择&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;select&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;proxies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s2"&gt;&amp;#34;MyVPN&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;DIRECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;RULE-SET,google,节点选择&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;RULE-SET,proxy,节点选择&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;RULE-SET,direct,DIRECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;GEOIP,CN,DIRECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;MATCH,节点选择&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;请务必保存好填写完毕的 &lt;code&gt;.yaml&lt;/code&gt; 文件，下一步导入 Clash Verge 时会用到。&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="53-导入配置到-clash-verge"&gt;5.3. 导入配置到 Clash Verge
&lt;/h3&gt;&lt;h4 id="531-打开安装好的-clash-verge-软件"&gt;5.3.1. 打开安装好的 &lt;strong&gt;Clash Verge&lt;/strong&gt; 软件
&lt;/h4&gt;&lt;h4 id="532-点击左侧菜单栏的-订阅-subscription然后点击右上角的-新建-new-按钮"&gt;5.3.2. 点击左侧菜单栏的 &lt;strong&gt;订阅 (Subscription)&lt;/strong&gt;，然后点击右上角的 &lt;strong&gt;新建 (New)&lt;/strong&gt; 按钮
&lt;/h4&gt;&lt;p&gt;&lt;a href="images/2026-02-11-12-53-42.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-53-42.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h4 id="533-在弹出的窗口中进行如下设置"&gt;5.3.3. 在弹出的窗口中进行如下设置
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型 (Type)&lt;/strong&gt;：选择 &lt;code&gt;Local&lt;/code&gt;（本地文件）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;名称 (Name)&lt;/strong&gt;：填写 &lt;code&gt;MyVPN&lt;/code&gt;（或你喜欢的任何名字）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件 (File)&lt;/strong&gt;：点击 &lt;strong&gt;选择文件&lt;/strong&gt; 按钮，选中刚才下载的 &lt;code&gt;MyVPN.yaml&lt;/code&gt; 文件。
&lt;a href="images/2026-02-11-12-53-59.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-53-59.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="534-点击-保存-save-按钮"&gt;5.3.4. 点击 &lt;strong&gt;保存 (Save)&lt;/strong&gt; 按钮
&lt;/h4&gt;&lt;h3 id="54-开启代理与连接测试"&gt;5.4. 开启代理与连接测试
&lt;/h3&gt;&lt;h4 id="541-选择节点"&gt;5.4.1. &lt;strong&gt;选择节点&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;点击软件左侧菜单栏的 &lt;strong&gt;代理 (Proxies)&lt;/strong&gt;。在顶部的模式切换中选择 &lt;strong&gt;规则 (Rule)&lt;/strong&gt;。此时你应该能在下方列表中看到的节点 &lt;code&gt;MyVPN&lt;/code&gt;。&lt;/p&gt;
&lt;h4 id="542-连通性测试"&gt;5.4.2. &lt;strong&gt;连通性测试&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;点击节点名称旁边的 &lt;strong&gt;测试图标&lt;/strong&gt;（通常是一个类似 WiFi 信号的图标）。
&lt;strong&gt;*成功&lt;/strong&gt;：如果显示绿色的数字（例如 &lt;code&gt;187 ms&lt;/code&gt;），代表节点已连通。* &lt;strong&gt;失败&lt;/strong&gt;：如果显示 &lt;code&gt;Timeout&lt;/code&gt;，请检查 VPS 的防火墙端口是否已开放，或配置步骤是否有误。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-11-12-54-19.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-54-19.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h4 id="543-开启系统代理"&gt;5.4.3. &lt;strong&gt;开启系统代理&lt;/strong&gt;
&lt;/h4&gt;&lt;p&gt;确认连接成功后，点击左侧菜单栏的 &lt;strong&gt;设置 (Settings)&lt;/strong&gt;，找到 &lt;strong&gt;系统代理 (System Proxy)&lt;/strong&gt; 开关并将其&lt;strong&gt;打开&lt;/strong&gt;（变为蓝色）。
&lt;a href="images/2026-02-11-12-53-09.png" target="_blank"&gt; &lt;img src="images/2026-02-11-12-53-09.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
此时，打开浏览器访问 Google 或 YouTube，如果能顺利加载，恭喜你！你已经成功从零开始搭建了属于自己的高速节点。&lt;/p&gt;</description></item><item><title>Windows Defender 彻底关闭指南</title><link>https://ysy.fan/p/disable-windows-defender/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/disable-windows-defender/</guid><description>&lt;h2 id="1-问题背景"&gt;1. 问题背景
&lt;/h2&gt;&lt;p&gt;在日常使用 Windows 系统时，Windows Defender 的实时保护功能有时会带来一些困扰：&lt;/p&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;p&gt;虽然可以在&amp;quot;设置&amp;quot;中临时关闭实时保护，但系统会在一段时间后自动重新启用。本文介绍如何通过&lt;strong&gt;组策略编辑器&lt;/strong&gt;彻底禁用 Windows Defender。&lt;/p&gt;
&lt;h2 id="2-操作步骤"&gt;2. 操作步骤
&lt;/h2&gt;&lt;h3 id="21-打开组策略编辑器"&gt;2.1. 打开组策略编辑器
&lt;/h3&gt;&lt;p&gt;按下 &lt;code&gt;Windows + R&lt;/code&gt; 组合键，打开&amp;quot;运行&amp;quot;窗口。&lt;/p&gt;
&lt;p&gt;在输入框中输入以下命令并按回车：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gpedit.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-11-13-05-10.png" target="_blank"&gt; &lt;img src="images/2026-02-11-13-05-10.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;注意&lt;/strong&gt;：家庭版 Windows 默认不包含组策略编辑器。如果提示找不到 gpedit.msc，需要先安装组策略编辑器功能。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="22-导航到-defender-设置"&gt;2.2. 导航到 Defender 设置
&lt;/h3&gt;&lt;p&gt;在组策略编辑器窗口中，按照以下路径依次展开：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;计算机配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 管理模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → Windows 组件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → Windows Defender 防病毒程序
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-11-13-02-25.png" target="_blank"&gt; &lt;img src="images/2026-02-11-13-02-25.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
&lt;h3 id="23-禁用反恶意软件服务"&gt;2.3. 禁用反恶意软件服务
&lt;/h3&gt;&lt;p&gt;在右侧面板中找到并双击：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;允许反恶意软件服务始终保持运行状态
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-11-13-03-21.png" target="_blank"&gt; &lt;img src="images/2026-02-11-13-03-21.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
在弹出的设置窗口中：
&lt;ol&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;a href="images/2026-02-11-13-03-57.png" target="_blank"&gt; &lt;img src="images/2026-02-11-13-03-57.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="24-重启生效"&gt;2.4. 重启生效
&lt;/h3&gt;&lt;p&gt;完成上述设置后，&lt;strong&gt;重启电脑&lt;/strong&gt;使配置生效。&lt;/p&gt;
&lt;p&gt;重启后，Windows Defender 的实时保护将被彻底关闭，且不会自动重新启用。&lt;/p&gt;
&lt;h2 id="3-验证是否成功"&gt;3. 验证是否成功
&lt;/h2&gt;&lt;p&gt;重启后，打开&amp;quot;Windows 安全中心&amp;quot;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按 &lt;code&gt;Windows + I&lt;/code&gt; 打开设置&lt;/li&gt;
&lt;li&gt;进入 &lt;strong&gt;隐私和安全性&lt;/strong&gt; → &lt;strong&gt;Windows 安全中心&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;病毒和威胁防护&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果看到&amp;quot;未进行任何操作&amp;quot;或&amp;quot;实时保护已关闭&amp;quot;的提示，说明设置成功。&lt;/p&gt;
&lt;h2 id="4-如何恢复实时保护"&gt;4. 如何恢复实时保护
&lt;/h2&gt;&lt;p&gt;如果将来需要重新启用 Windows Defender：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;再次打开组策略编辑器（&lt;code&gt;gpedit.msc&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;找到同样的设置项&lt;/li&gt;
&lt;li&gt;将其改为 &lt;strong&gt;未配置&lt;/strong&gt; 或 &lt;strong&gt;已启用&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;重启电脑&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="5-总结"&gt;5. 总结
&lt;/h2&gt;&lt;p&gt;通过组策略编辑器禁用 Windows Defender 是一个简单但有效的方法，适合需要长期关闭实时保护的场景。&lt;/p&gt;
&lt;p&gt;但请记住：&lt;strong&gt;安全性和便利性往往是一对矛盾&lt;/strong&gt;。关闭防护的同时，也要承担相应的风险。建议根据实际需求谨慎操作。&lt;/p&gt;</description></item><item><title>群星联机优化指南：基于 OpenVPN 搭建低延迟虚拟局域网</title><link>https://ysy.fan/p/stellaris-lan-openvpn-guide/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/stellaris-lan-openvpn-guide/</guid><description>&lt;h2 id="1-引言"&gt;1. 引言
&lt;/h2&gt;&lt;p&gt;《群星 (Stellaris)》玩家最大的痛点是什么？往往不是天灾的入侵，而是联机时无休止的“时间停止”、掉线和高延迟。由于群星采用 P2P 联机机制，一旦某位玩家网络波动，整局游戏都会受到影响。&lt;/p&gt;
&lt;p&gt;群星采用 P2P 联机，市面上的加速器往往难以对症下药。本系列教程将手把手教你搭建一个专属于你和小伙伴的联机加速节点。&lt;/p&gt;
&lt;p&gt;本方案基于 &lt;strong&gt;OpenVPN TAP 模式&lt;/strong&gt;，通过 &lt;strong&gt;去除加密环节&lt;/strong&gt; 来极致优化传输速度，实测 &lt;strong&gt;10Mbps 带宽即可流畅支撑 1～2 车联机&lt;/strong&gt;（每车约 10 人）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特别致谢&lt;/strong&gt;：本教程方案核心及加速器客户端由大佬 &lt;strong&gt;Dogfight360&lt;/strong&gt; 免费提供，教程基础内容由 &lt;strong&gt;唏噓南溪&lt;/strong&gt; 编写。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📖 原作者博客：&lt;a class="link" href="https://www.dogfight360.com/blog/1590/#comment-41142" target="_blank" rel="noopener"
&gt;Dogfight360 Blog&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="2-选择你的系统版本"&gt;2. 选择你的系统版本
&lt;/h2&gt;&lt;p&gt;请根据你使用的服务器系统，选择对应教程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;a class="link" href="https://ysy.fan/p/stellaris-lan-openvpn-ubuntu/" &gt;点此查看 Ubuntu / Debian 现代系统搭建指南（强烈推荐）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📜 &lt;a class="link" href="https://ysy.fan/p/stellaris-lan-openvpn-centos/" &gt;点此查看 CentOS 7 旧版系统搭建指南（仅供参考）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description></item><item><title>新电脑 Git 初始化配置指南</title><link>https://ysy.fan/p/git-initial-setup/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/git-initial-setup/</guid><description>&lt;h2 id="1-问题背景"&gt;1. 问题背景
&lt;/h2&gt;&lt;p&gt;在新电脑上使用 Git 时，常常会因为缺少必要配置而遇到各种问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无法连接 GitHub（网络问题）&lt;/li&gt;
&lt;li&gt;提交代码时提示缺少用户信息&lt;/li&gt;
&lt;li&gt;中文文件名显示为乱码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文整理了新机 Git 初始化的完整流程，帮助你快速配置好开发环境。&lt;/p&gt;
&lt;h2 id="2-配置代理"&gt;2. 配置代理
&lt;/h2&gt;&lt;p&gt;如果你需要使用代理工具访问 GitHub，首先需要配置 Git 的网络代理。&lt;/p&gt;
&lt;h3 id="21-查找代理端口"&gt;2.1. 查找代理端口
&lt;/h3&gt;&lt;p&gt;不同的代理工具使用的端口不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clash&lt;/strong&gt;：默认端口 &lt;code&gt;7890&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clash Verge&lt;/strong&gt;：默认端口 &lt;code&gt;7897&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其他工具：可在工具的设置中查看
&lt;a href="images/2026-02-11-11-28-12.png" target="_blank"&gt; &lt;img src="images/2026-02-11-11-28-12.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-设置代理"&gt;2.2. 设置代理
&lt;/h3&gt;&lt;p&gt;在 Git Bash 或终端中输入以下命令（将 &lt;code&gt;7897&lt;/code&gt; 替换为你的实际端口）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global http.proxy http://127.0.0.1:7897
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global https.proxy http://127.0.0.1:7897
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="23-验证配置"&gt;2.3. 验证配置
&lt;/h3&gt;&lt;p&gt;输入以下命令查看配置是否生效：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果看到以下输出，说明代理配置成功：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http.proxy=http://127.0.0.1:7897
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;https.proxy=http://127.0.0.1:7897
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-11-11-28-50.png" target="_blank"&gt; &lt;img src="images/2026-02-11-11-28-50.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
&lt;h2 id="3-配置用户信息"&gt;3. 配置用户信息
&lt;/h2&gt;&lt;p&gt;Git 在提交代码时需要记录提交者的身份信息。&lt;/p&gt;
&lt;h3 id="31-设置用户名和邮箱"&gt;3.1. 设置用户名和邮箱
&lt;/h3&gt;&lt;p&gt;在引号内填入你的 GitHub 用户名和邮箱（建议使用 GitHub 绑定的邮箱）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;你的 GitHub 用户名&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;your-email@example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;sign-river&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;example@gmail.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="4-解决中文文件名乱码问题"&gt;4. 解决中文文件名乱码问题
&lt;/h2&gt;&lt;p&gt;如果你的项目中有中文文件名，Git 默认会将其转义为八进制编码，显示为乱码（如 &lt;code&gt;\344\270\255\346\226\207&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id="41-设置显示中文"&gt;4.1. 设置显示中文
&lt;/h3&gt;&lt;p&gt;执行以下命令禁用路径引号转义：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global core.quotepath &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;配置后，&lt;code&gt;git status&lt;/code&gt; 等命令就能正常显示中文文件名了。&lt;/p&gt;
&lt;h2 id="5-完整配置脚本"&gt;5. 完整配置脚本
&lt;/h2&gt;&lt;p&gt;如果你想一次性完成所有配置，可以复制以下命令并修改对应的值：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 配置代理（根据实际端口修改）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global http.proxy http://127.0.0.1:7897
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global https.proxy http://127.0.0.1:7897
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 配置用户信息（替换为你的信息）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;你的用户名&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;your-email@example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 解决中文乱码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global core.quotepath &lt;span class="nb"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看所有配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="6-常见问题"&gt;6. 常见问题
&lt;/h2&gt;&lt;h3 id="61-q1-如何取消代理配置"&gt;6.1. Q1: 如何取消代理配置？
&lt;/h3&gt;&lt;p&gt;如果不再需要代理，可以使用以下命令移除：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset http.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --unset https.proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="62-q2-如何修改已有的配置"&gt;6.2. Q2: 如何修改已有的配置？
&lt;/h3&gt;&lt;p&gt;直接重新执行设置命令即可覆盖旧配置，或者使用以下命令编辑配置文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global --edit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="63-q3-配置是否对所有仓库生效"&gt;6.3. Q3: 配置是否对所有仓库生效？
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;--global&lt;/code&gt; 参数表示全局配置，对当前用户的所有 Git 仓库生效。如果只想针对某个仓库配置，可以去掉 &lt;code&gt;--global&lt;/code&gt; 参数，在仓库目录下执行命令。&lt;/p&gt;
&lt;h2 id="7-总结"&gt;7. 总结
&lt;/h2&gt;&lt;p&gt;完成以上配置后，你的新电脑就可以正常使用 Git 进行开发了。这些配置只需要执行一次，之后就可以专注于代码本身。&lt;/p&gt;
&lt;p&gt;如果遇到其他 Git 相关问题，欢迎在评论区讨论！&lt;/p&gt;</description></item><item><title>Markdown 语法指南</title><link>https://ysy.fan/p/markdown-syntax-guide/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/markdown-syntax-guide/</guid><description>&lt;h2 id="1-前言"&gt;1. 前言
&lt;/h2&gt;&lt;p&gt;Markdown 是一种轻量级标记语言，让你可以用纯文本格式编写文档，然后转换成格式丰富的 HTML 页面。本文将系统介绍 Markdown 的各种语法。&lt;/p&gt;
&lt;h2 id="2-基础语法"&gt;2. 基础语法
&lt;/h2&gt;&lt;h3 id="21-标题"&gt;2.1. 标题
&lt;/h3&gt;&lt;p&gt;使用 &lt;code&gt;#&lt;/code&gt; 符号创建标题，数量表示标题级别：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# 一级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 二级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 三级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;#### 四级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;##### 五级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;###### 六级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="22-段落和换行"&gt;2.2. 段落和换行
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;段落&lt;/strong&gt;：段落之间用空行分隔&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是第一段内容。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是第二段内容。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;换行&lt;/strong&gt;：在行末添加两个空格或使用 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第一行内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第二行内容（注意上一行末尾有两个空格）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;或者使用 HTML 标签：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第一行内容&amp;lt;br&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第二行内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;在代码段和图片间添加空行更适合用第二种方法
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：
第一行内容
第二行内容&lt;/p&gt;
&lt;p&gt;或者：&lt;br&gt;
第一行内容&lt;br&gt;
第二行内容&lt;/p&gt;
&lt;h3 id="23-强调"&gt;2.3. 强调
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;_斜体_ 或 &lt;span class="ge"&gt;_斜体_&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**粗体**&lt;/span&gt; 或 &lt;span class="gs"&gt;**粗体**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gs"&gt;**_粗斜体_**&lt;/span&gt; 或 &lt;span class="gs"&gt;**_粗斜体_**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gd"&gt;~~删除线~~&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;斜体&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;粗体&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;粗斜体&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;del&gt;删除线&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-列表"&gt;3. 列表
&lt;/h2&gt;&lt;h3 id="31-无序列表"&gt;3.1. 无序列表
&lt;/h3&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;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 第一项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 第二项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;-&lt;/span&gt; 嵌套项 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;-&lt;/span&gt; 嵌套项 2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 第三项
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一项&lt;/li&gt;
&lt;li&gt;第二项
&lt;ul&gt;
&lt;li&gt;嵌套项 1&lt;/li&gt;
&lt;li&gt;嵌套项 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第三项&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-有序列表"&gt;3.2. 有序列表
&lt;/h3&gt;&lt;p&gt;使用数字加点加空格：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 第一项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 第二项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;1.&lt;/span&gt; 嵌套项 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;2.&lt;/span&gt; 嵌套项 2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 第三项
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一项&lt;/li&gt;
&lt;li&gt;第二项
&lt;ol&gt;
&lt;li&gt;嵌套项 1&lt;/li&gt;
&lt;li&gt;嵌套项 2&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;第三项&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="33-任务列表"&gt;3.3. 任务列表
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; 已完成任务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 未完成任务
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 待办事项
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 已完成任务&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 未完成任务&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 待办事项&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-链接和图片"&gt;4. 链接和图片
&lt;/h2&gt;&lt;h3 id="41-链接"&gt;4.1. 链接
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;普通链接&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&lt;span class="nt"&gt;链接文本&lt;/span&gt;](&lt;span class="na"&gt;https://example.com&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&lt;span class="nt"&gt;带标题的链接&lt;/span&gt;](&lt;span class="na"&gt;https://example.com &amp;#34;鼠标悬停时显示&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com" target="_blank" rel="noopener"
&gt;GitHub 官网&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com" title="这是鼠标悬停时的提示"
target="_blank" rel="noopener"
&gt;带标题的链接&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自动链接&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;https://example.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;email&lt;span class="ni"&gt;@example&lt;/span&gt;.com&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com" target="_blank" rel="noopener"
&gt;https://github.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="mailto:example@email.com" &gt;example@email.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;引用式链接&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是 [链接][1] 和 [另一个链接][link-ref]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[1]: https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[link-ref]: https://another-example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：
这是 &lt;a class="link" href="https://github.com" target="_blank" rel="noopener"
&gt;GitHub&lt;/a&gt; 和 &lt;a class="link" href="https://code.visualstudio.com" target="_blank" rel="noopener"
&gt;VS Code&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="42-图片"&gt;4.2. 图片
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;基本语法&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;![&lt;span class="nt"&gt;图片描述&lt;/span&gt;](&lt;span class="na"&gt;图片路径。jpg&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;![&lt;span class="nt"&gt;带标题的图片&lt;/span&gt;](&lt;span class="na"&gt;图片路径。jpg &amp;#34;鼠标悬停标题&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;调整图片大小（需要 HTML）&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;图片路径。jpg&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;描述&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;300&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;images/example.jpg&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;示例图片&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;400&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;引用式图片&lt;/strong&gt;（与引用式链接类似）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;![图片][image-ref]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[image-ref]: 图片路径。jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="5-引用"&gt;5. 引用
&lt;/h2&gt;&lt;h3 id="51-基本引用"&gt;5.1. 基本引用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;这是一句引用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;&amp;gt; 可以包含多个段落
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这是一句引用&lt;/p&gt;
&lt;p&gt;可以包含多个段落&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="52-嵌套引用"&gt;5.2. 嵌套引用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;第一层引用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;&amp;gt; &amp;gt; 第二层引用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;&amp;gt; &amp;gt; 第三层引用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第一层引用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第二层引用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第三层引用&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3 id="53-引用中使用其他元素"&gt;5.3. 引用中使用其他元素
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;## 引用中的标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;&amp;gt; - 列表项 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;- 列表项 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ge"&gt;&amp;gt; **粗体文本**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;h2 id="引用中的标题"&gt;引用中的标题
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;列表项 1&lt;/li&gt;
&lt;li&gt;列表项 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;粗体文本&lt;/strong&gt; 和 &lt;em&gt;斜体文本&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="6-代码"&gt;6. 代码
&lt;/h2&gt;&lt;h3 id="61-行内代码"&gt;6.1. 行内代码
&lt;/h3&gt;&lt;p&gt;使用反引号包裹：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是一段包含 &lt;span class="sb"&gt;`代码`&lt;/span&gt; 的文本。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：这是一段包含 &lt;code&gt;代码&lt;/code&gt; 的文本。&lt;/p&gt;
&lt;h3 id="62-代码块"&gt;6.2. 代码块
&lt;/h3&gt;&lt;h4 id="621-方式一使用三个反引号"&gt;6.2.1. 方式一：使用三个反引号
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```python
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="622-方式二缩进四个空格"&gt;6.2.2. 方式二：缩进四个空格
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def hello():
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(&amp;#34;Hello, World!&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="623-指定语言以启用语法高亮"&gt;6.2.3. 指定语言以启用语法高亮
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```python
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Python 代码&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```javascript
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;JavaScript 代码&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Shell 脚本&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Hello, &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="7-表格"&gt;7. 表格
&lt;/h2&gt;&lt;h3 id="71-基本表格"&gt;7.1. 基本表格
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 左对齐 | 居中对齐 | 右对齐 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| :----- | :------: | -------: |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 内容 1 | 内容 2 | 内容 3 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 长内容 | 短 | 中等内容 |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;左对齐&lt;/th&gt;
&lt;th style="text-align: center"&gt;居中对齐&lt;/th&gt;
&lt;th style="text-align: right"&gt;右对齐&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;内容 1&lt;/td&gt;
&lt;td style="text-align: center"&gt;内容 2&lt;/td&gt;
&lt;td style="text-align: right"&gt;内容 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;长内容&lt;/td&gt;
&lt;td style="text-align: center"&gt;短&lt;/td&gt;
&lt;td style="text-align: right"&gt;中等内容&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;对齐方式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:---&lt;/code&gt; 左对齐&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:---:&lt;/code&gt; 居中&lt;/li&gt;
&lt;li&gt;&lt;code&gt;---:&lt;/code&gt; 右对齐&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="8-分隔线"&gt;8. 分隔线
&lt;/h2&gt;&lt;p&gt;使用三个或更多的 &lt;code&gt;-&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;第一条分隔线：&lt;/p&gt;
&lt;h2 id="9-转义字符"&gt;9. 转义字符
&lt;/h2&gt;&lt;p&gt;使用反斜杠 &lt;code&gt;\&lt;/code&gt; 转义特殊字符：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\* 不是斜体
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\# 不是标题
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\[ 不是链接
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;* 这不会变成列表&lt;/li&gt;
&lt;li&gt;# 这不会变成标题&lt;/li&gt;
&lt;li&gt;[这不是链接、]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;可转义的字符&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\ ` * _ { } [ ] ( ) # + - . !
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="10-进阶语法"&gt;10. 进阶语法
&lt;/h2&gt;&lt;h3 id="101-脚注"&gt;10.1. 脚注
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是一段包含脚注的文本 [^1]。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[^1]: 这是脚注内容。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：
这是一段包含脚注的文本 &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;，还有另一个脚注 &lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;h3 id="102-定义列表"&gt;10.2. 定义列表
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;术语
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: 定义内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: 可以有多个定义
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;另一个术语
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: 另一个定义
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Markdown&lt;/dt&gt;
&lt;dd&gt;一种轻量级标记语言&lt;/dd&gt;
&lt;dd&gt;由 John Gruber 创建&lt;/dd&gt;
&lt;dt&gt;HTML&lt;/dt&gt;
&lt;dd&gt;超文本标记语言&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="103-缩略语"&gt;10.3. 缩略语
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;_[HTML]: Hyper Text Markup Language
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;_[CSS]: Cascading Style Sheets
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTML 和 CSS 是 Web 开发的基础。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="11-html-支持"&gt;11. HTML 支持
&lt;/h2&gt;&lt;p&gt;Markdown 支持内嵌 HTML 标签：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;center&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;居中标题&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;color: red;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;红色文字&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;details&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;点击展开&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 隐藏的内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;details&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;div align="center"&gt;
&lt;h3&gt;这是居中的标题&lt;/h3&gt;
&lt;p style="color: red;"&gt;这是红色的文字&lt;/p&gt;
&lt;/div&gt;
&lt;details&gt;
&lt;summary&gt;点击展开查看更多&lt;/summary&gt;
&lt;p&gt;这里是隐藏的内容&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以包含列表&lt;/li&gt;
&lt;li&gt;也可以包含其他 Markdown 语法&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;甚至是粗体&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id="12-数学公式"&gt;12. 数学公式
&lt;/h2&gt;&lt;p&gt;使用 LaTeX 语法（需要支持）：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;行内公式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是行内公式 $E = mc^2$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：
这是行内公式 $E = mc^2$，还有勾股定理 $a^2 + b^2 = c^2$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;块级公式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$$
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
$$
\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n
$$$$
\int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$&lt;h2 id="13-常用技巧"&gt;13. 常用技巧
&lt;/h2&gt;&lt;h3 id="131-空行和空格"&gt;13.1. 空行和空格
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;&amp;lt;!-- 强制空行（HTML 注释不显示） --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;&amp;lt;!-- 空格 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;使用&amp;amp;nbsp; 添加不间断空格
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&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;h3 id="132-文本居中"&gt;13.2. 文本居中
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;align&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;center&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;居中的内容&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;div align="center"&gt;
&lt;p&gt;&lt;strong&gt;这段文字是居中的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可以包含多行内容&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id="133-折叠内容"&gt;13.3. 折叠内容
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;details&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;点击展开&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 这里是折叠的内容 可以包含任何 Markdown 语法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;details&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;（上文 HTML 支持部分已展示）&lt;/p&gt;
&lt;h3 id="134-颜色文字"&gt;13.4. 颜色文字
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;color: red;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;红色文字&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;color: blue;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;蓝色文字&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;span style="color: red;"&gt;这是红色文字&lt;/span&gt;
&lt;span style="color: blue;"&gt;这是蓝色文字&lt;/span&gt;
&lt;span style="color: green;"&gt;这是绿色文字&lt;/span&gt;
&lt;span style="color: orange;"&gt;这是橙色文字&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="14-vs-code-快捷键markdown-all-in-one"&gt;14. VS Code 快捷键（Markdown All in One）
&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;加粗&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl + B&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;斜体&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl + I&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;删除线&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Alt + S&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;切换标题级别&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl + Shift + ]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;预览&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ctrl + K V&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="15-常见问题"&gt;15. 常见问题
&lt;/h2&gt;&lt;h3 id="151-q-如何在列表中添加多个段落"&gt;15.1. Q: 如何在列表中添加多个段落？
&lt;/h3&gt;&lt;p&gt;A: 在段落前添加 4 个空格或 1 个 Tab：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 第一项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 这是第一项的第二段。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 这是第一项的第三段。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 第二项
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;第一项&lt;/p&gt;
&lt;p&gt;这是第一项的第二段内容。&lt;/p&gt;
&lt;p&gt;这是第一项的第三段内容。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;第二项&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="152-q-如何在表格中换行"&gt;15.2. Q: 如何在表格中换行？
&lt;/h3&gt;&lt;p&gt;A: 使用 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; 标签：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 列 1 | 列 2 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| ---------------- | ---- |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 第一行&amp;lt;br&amp;gt;第二行 | 内容 |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&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;列 1&lt;/th&gt;
&lt;th&gt;列 2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;第一行&lt;br&gt;第二行&lt;/td&gt;
&lt;td&gt;内容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多行&lt;br&gt;内容&lt;br&gt;演示&lt;/td&gt;
&lt;td&gt;这是单行&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="153-q-图片太大怎么办"&gt;15.3. Q: 图片太大怎么办？
&lt;/h3&gt;&lt;p&gt;A: 使用 HTML 指定宽度：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;img&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;image.jpg&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;描述&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;400&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="16-在线工具推荐"&gt;16. 在线工具推荐
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;StackEdit&lt;/strong&gt;：在线 Markdown 编辑器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dillinger&lt;/strong&gt;：支持实时预览&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Typora&lt;/strong&gt;：所见即所得编辑器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown Preview Enhanced&lt;/strong&gt;：VS Code 插件&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="17-参考资料"&gt;17. 参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://daringfireball.net/projects/markdown/" target="_blank" rel="noopener"
&gt;Markdown 官方语法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.github.com/gfm/" target="_blank" rel="noopener"
&gt;GitHub Flavored Markdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://commonmark.org/" target="_blank" rel="noopener"
&gt;CommonMark 规范&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;最后更新：2026-02-10&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;这是第一个脚注的内容。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;这是第二个脚注的内容。&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>PyTorch 基础入门</title><link>https://ysy.fan/p/pytorch-basics/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/pytorch-basics/</guid><description>&lt;h2 id="1-前言"&gt;1. 前言
&lt;/h2&gt;&lt;p&gt;开始学习 PyTorch，记录基础知识和学习心得。&lt;/p&gt;
&lt;h2 id="2-pytorch-简介"&gt;2. PyTorch 简介
&lt;/h2&gt;&lt;p&gt;PyTorch 是一个基于 Python 的科学计算包，主要用于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;替代 NumPy，利用 GPU 加速&lt;/li&gt;
&lt;li&gt;提供灵活的深度学习研究平台&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-环境配置"&gt;3. 环境配置
&lt;/h2&gt;&lt;h3 id="31-配置-anaconda"&gt;3.1. 配置 Anaconda
&lt;/h3&gt;&lt;p&gt;在开始 PyTorch 学习前，使用 Anaconda 进行环境隔离是最佳选项，避免不同项目的依赖冲突。&lt;/p&gt;
&lt;p&gt;操作步骤：&lt;/p&gt;
&lt;p&gt;点击底部的 Create 按钮。&lt;/p&gt;
&lt;p&gt;Name (名称)：设置为 pytorch（清晰明了，便于识别）。&lt;/p&gt;
&lt;p&gt;Packages (版本选择)：勾选 Python，并选择 3.12 版本。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-21-30-21.png" target="_blank"&gt; &lt;img src="images/2026-02-10-21-30-21.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;💡 版本选择思路 (2026 Q1)：推荐选择 Python 3.12。相比于旧版本，它拥有更好的性能；相比于最新的 3.13+ 版本，它在 PyTorch 生态圈（包括 NumPy, Pandas 等依赖库）中的兼容性最为成熟稳定。&lt;/p&gt;
&lt;h3 id="32-安装-pytorch"&gt;3.2. 安装 PyTorch
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;确认显卡驱动与 CUDA 版本&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在安装 GPU 版本的 PyTorch 前，必须确认显卡驱动支持的最高 CUDA 版本。&lt;/p&gt;
&lt;p&gt;操作：Win + R 打开运行 -&amp;gt; 输入 cmd -&amp;gt; 输入指令 nvidia-smi。&lt;/p&gt;
&lt;p&gt;关键信息：查看右上角的 CUDA Version（例如：13.1）。&lt;/p&gt;
&lt;p&gt;⚠️ 重要原则：官网下载时选择的 CUDA 版本（Runtime）必须 &amp;lt;= 电脑显示的 CUDA 版本（Driver）。&lt;/p&gt;
&lt;p&gt;win+r，输入 cmd 回车打开终端，在终端输入 nvidia-smi 回车，第一行最右边就是适合你选择的 CUDA 版本&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-21-53-17.png" target="_blank"&gt; &lt;img src="images/2026-02-10-21-53-17.png" alt="image" style="max-width: 50%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-21-53-50.png" target="_blank"&gt; &lt;img src="images/2026-02-10-21-53-50.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;获取安装指令&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;前往 &lt;a class="link" href="https://pytorch.org/get-started/locally/" target="_blank" rel="noopener"
&gt;PyTorch 官网&lt;/a&gt;，根据机器配置选择：&lt;/p&gt;
&lt;p&gt;PyTorch Build: Stable&lt;/p&gt;
&lt;p&gt;Your OS: Windows&lt;/p&gt;
&lt;p&gt;Package: Pip&lt;/p&gt;
&lt;p&gt;Language: Python&lt;/p&gt;
&lt;p&gt;Compute Platform: CUDA 13.0 (根据上一步确认的版本选择，这里选 13.0 是安全的，因为 13.0 &amp;lt; 13.1)&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-21-55-27.png" target="_blank"&gt; &lt;img src="images/2026-02-10-21-55-27.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;执行安装&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;打开 Anaconda Navigator，找到 pytorch 环境。&lt;/p&gt;
&lt;p&gt;点击播放键 ▶️ -&amp;gt; 选择 Open Terminal（这一步确保了命令是在虚拟环境中运行）。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-22-00-24.png" target="_blank"&gt; &lt;img src="images/2026-02-10-22-00-24.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;粘贴并运行官网生成的指令：&lt;/p&gt;
&lt;p&gt;(注：下载文件较大，约 2GB+，请耐心等待)&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-22-02-31.png" target="_blank"&gt; &lt;img src="images/2026-02-10-22-02-31.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;验证安装 (Verification)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;安装完成后，必须验证 PyTorch 能否正确调用 GPU。在当前终端输入 python 进入交互模式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import torch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 检查 CUDA 是否可用，返回 True 即为成功
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;torch.cuda.is_available()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br/&gt;
&lt;a href="images/2026-02-10-22-08-48.png" target="_blank"&gt; &lt;img src="images/2026-02-10-22-08-48.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
&lt;h2 id="5-参考资料"&gt;5. 参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://pytorch.org/docs/stable/index.html" target="_blank" rel="noopener"
&gt;PyTorch 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://pytorch.org/tutorials/" target="_blank" rel="noopener"
&gt;PyTorch 官方教程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>VS Code 编写 Markdown 如何轻松解决格式问题</title><link>https://ysy.fan/p/vscode-markdown-format-tips/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/vscode-markdown-format-tips/</guid><description>&lt;h2 id="1-前言"&gt;1. 前言
&lt;/h2&gt;&lt;p&gt;在 VS Code 中编写 Markdown 时，常常会遇到各种格式问题：表格对不齐、列表缩进混乱、链接格式错误等。本文将介绍如何通过插件和配置来轻松解决这些问题，让你的 Markdown 写作更加高效。&lt;/p&gt;
&lt;h2 id="2-安装插件-markdownlint"&gt;2. 安装插件 markdownlint
&lt;/h2&gt;&lt;h3 id="21-格式检查工具"&gt;2.1. 格式检查工具
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;实时检查 Markdown 格式&lt;/li&gt;
&lt;li&gt;自动修复常见问题&lt;/li&gt;
&lt;li&gt;保持文档规范统一&lt;/li&gt;
&lt;/ul&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;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MD001&lt;/td&gt;
&lt;td&gt;标题层级不连续&lt;/td&gt;
&lt;td&gt;不要从 # 直接跳到 ###&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MD009&lt;/td&gt;
&lt;td&gt;行尾有多余空格&lt;/td&gt;
&lt;td&gt;删除行尾空格&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MD012&lt;/td&gt;
&lt;td&gt;连续空行超过一行&lt;/td&gt;
&lt;td&gt;删除多余空行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MD013&lt;/td&gt;
&lt;td&gt;行长度超过限制&lt;/td&gt;
&lt;td&gt;换行或调整配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MD022&lt;/td&gt;
&lt;td&gt;标题前后需要空行&lt;/td&gt;
&lt;td&gt;添加空行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MD032&lt;/td&gt;
&lt;td&gt;列表前后需要空行&lt;/td&gt;
&lt;td&gt;添加空行&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="22-使用方法"&gt;2.2. 使用方法
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;在拓展商店搜索并安装 markdownlint&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-23-18-56.png" target="_blank"&gt; &lt;img src="images/2026-02-10-23-18-56.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;打开设置 (json)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-23-21-47.png" target="_blank"&gt; &lt;img src="images/2026-02-10-23-21-47.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-23-22-18.png" target="_blank"&gt; &lt;img src="images/2026-02-10-23-22-18.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;在设置中输入&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;editor.codeActionsOnSave&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;source.fixAll.markdownlint&amp;#34;: &amp;#34;explicit&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;editor.formatOnSave&amp;#34;: true,
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;a href="images/2026-02-10-23-23-38.png" target="_blank"&gt; &lt;img src="images/2026-02-10-23-23-38.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;
&lt;h2 id="3-总结"&gt;3. 总结
&lt;/h2&gt;&lt;p&gt;之后只要 Ctrl + S 保存文件，就会自动修正 Markdown 格式&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;最后更新：2026-02-10&lt;/p&gt;</description></item><item><title>VS Code 自动在中英文间添加空格</title><link>https://ysy.fan/p/vscode-auto-space-chinese-english/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/vscode-auto-space-chinese-english/</guid><description>&lt;h2 id="1-前言"&gt;1. 前言
&lt;/h2&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;/ul&gt;
&lt;p&gt;但是手动添加空格既繁琐又容易遗漏，本文将介绍如何使用 VS Code 插件实现保存时自动格式化。&lt;/p&gt;
&lt;h2 id="2-安装插件"&gt;2. 安装插件
&lt;/h2&gt;&lt;h3 id="21-pangu-markdown"&gt;2.1. Pangu-Markdown
&lt;/h3&gt;&lt;p&gt;打开 VS Code 扩展商店，搜索 &lt;code&gt;Pangu-Markdown&lt;/code&gt; 并安装。&lt;/p&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-23-47-23.png" target="_blank"&gt; &lt;img src="images/2026-02-10-23-47-23.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h2 id="3-配置自动格式化"&gt;3. 配置自动格式化
&lt;/h2&gt;&lt;h3 id="31-settingsjson-配置"&gt;3.1. settings.json 配置
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;打开设置&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-23-48-31.png" target="_blank"&gt; &lt;img src="images/2026-02-10-23-48-31.png" alt="image" style="max-width: 100%; width: 500px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;搜索并启用自动格式化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;搜索 &lt;code&gt;pangu&lt;/code&gt;，勾选 &amp;ldquo;Format On Save&amp;rdquo;（保存时自动格式化）选项。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-11-00-01-13.png" target="_blank"&gt; &lt;img src="images/2026-02-11-00-01-13.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;重启 VS Code&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;配置完成后需要重启 VS Code 才能生效。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：如果配置后没有生效，请尝试重启 VS Code。这是插件生效的必要步骤。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="4-总结"&gt;4. 总结
&lt;/h2&gt;&lt;p&gt;配置完成后，使用 &lt;code&gt;Ctrl+S&lt;/code&gt; 保存文件时，插件会自动在中文和英文之间添加空格，让你专注于内容创作，无需担心排版格式问题。&lt;/p&gt;</description></item><item><title>WPS 复制图片模糊问题完美解决方案</title><link>https://ysy.fan/p/wps-image-blur-solution/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate><guid>https://ysy.fan/p/wps-image-blur-solution/</guid><description>&lt;h2 id="1-问题描述"&gt;1. 问题描述
&lt;/h2&gt;&lt;p&gt;在使用 WPS Office 时，很多人会遇到这样的困扰：明明文档里的图片看起来很清晰，但一旦复制粘贴到其他地方（如微信、PPT、网页等），图片就变得模糊不清。&lt;/p&gt;
&lt;p&gt;这个问题的根本原因是什么？又该如何解决呢？&lt;/p&gt;
&lt;h2 id="2-原因分析"&gt;2. 原因分析
&lt;/h2&gt;&lt;h3 id="21-wps-默认压缩机制"&gt;2.1. WPS 默认压缩机制
&lt;/h3&gt;&lt;p&gt;WPS 为了减小文件体积，会对插入的图片进行自动压缩。当你复制图片时，复制的是压缩后的版本，而不是原始高清图片。&lt;/p&gt;
&lt;h2 id="3-解决方案"&gt;3. 解决方案
&lt;/h2&gt;&lt;h3 id="31-先放大再复制就是清晰图片了"&gt;3.1. 先放大再复制就是清晰图片了
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;操作步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 WPS 文档中&lt;strong&gt;点击图片右边的放大镜按钮&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="images/2026-02-10-09-42-16.png" target="_blank"&gt; &lt;img src="images/2026-02-10-09-42-16.png" alt="image" style="max-width: 100%; width: 1000px;"/&gt; &lt;/a&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Ctrl+C 或者直接右键复制即可&lt;/li&gt;
&lt;li&gt;该往哪粘往哪粘，现在就是清晰的了&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="4-总结"&gt;4. 总结
&lt;/h2&gt;&lt;p&gt;从 WPS 复制图片模糊的问题，本质上是软件的默认压缩机制导致的。先手动放大一下再复制就没事了。&lt;/p&gt;
&lt;p&gt;希望这篇教程能帮助你告别模糊图片的困扰！如果有其他疑问，欢迎在评论区留言讨论。&lt;/p&gt;
&lt;hr&gt;</description></item><item><title>archives</title><link>https://ysy.fan/archives/</link><pubDate>Sun, 06 Mar 2022 00:00:00 +0000</pubDate><guid>https://ysy.fan/archives/</guid><description/></item><item><title>Links</title><link>https://ysy.fan/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/links/</guid><description>&lt;p&gt;欢迎交换友链！如果你想添加你的链接，请在&lt;a class="link" href="https://ysy.fan/guestbook/" &gt;留言板&lt;/a&gt;留言。&lt;/p&gt;</description></item><item><title>Search</title><link>https://ysy.fan/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/search/</guid><description/></item><item><title>关于我</title><link>https://ysy.fan/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/about/</guid><description>&lt;h2 id="-你好我是-ysy"&gt;👋 你好，我是 YSY
&lt;/h2&gt;&lt;p&gt;一名热爱编程和技术探索的开发者，对新技术充满好奇心，喜欢通过代码解决实际问题。&lt;/p&gt;
&lt;p&gt;这个博客是我的技术笔记本，用于记录学习过程中的点滴收获、项目实践经验、效率工具使用技巧和问题解决方案。希望这些内容能够帮助到有相同需求的朋友。&lt;/p&gt;
&lt;h3 id="-技术栈"&gt;💻 技术栈
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;前端开发&lt;/strong&gt;: HTML, CSS, JavaScript, Vue.js, React&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后端开发&lt;/strong&gt;: Python, C++&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库&lt;/strong&gt;: MySQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具链&lt;/strong&gt;: Git, Docker, Linux, Hugo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-兴趣方向"&gt;🎯 兴趣方向
&lt;/h3&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;h3 id="-博客信息"&gt;📚 博客信息
&lt;/h3&gt;&lt;p&gt;本站基于 &lt;a class="link" href="https://gohugo.io/" target="_blank" rel="noopener"
&gt;Hugo&lt;/a&gt; 静态网站生成器构建，使用 &lt;a class="link" href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank" rel="noopener"
&gt;Stack&lt;/a&gt; 主题进行定制化开发，部署在 &lt;a class="link" href="https://pages.github.com/" target="_blank" rel="noopener"
&gt;GitHub Pages&lt;/a&gt; 上，所有文章源码开源。&lt;/p&gt;
&lt;h3 id="-找到我"&gt;🔗 找到我
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a class="link" href="https://github.com/sign-river" target="_blank" rel="noopener"
&gt;@sign-river&lt;/a&gt; - 查看我的开源项目&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bilibili&lt;/strong&gt;: &lt;a class="link" href="https://space.bilibili.com/504574253" target="_blank" rel="noopener"
&gt;我的主页&lt;/a&gt; - 技术视频分享&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-版权说明"&gt;📝 版权说明
&lt;/h3&gt;&lt;p&gt;本站所有原创内容采用 &lt;a class="link" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener"
&gt;CC BY-NC-SA 4.0&lt;/a&gt; 协议，转载请注明出处。&lt;/p&gt;</description></item><item><title>留言板</title><link>https://ysy.fan/guestbook/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/guestbook/</guid><description>&lt;p&gt;欢迎在下方留言！无论是对博客的建议、技术交流还是随便聊聊，都非常欢迎。&lt;/p&gt;
&lt;p&gt;留言系统基于 &lt;a class="link" href="https://giscus.app/" target="_blank" rel="noopener"
&gt;Giscus&lt;/a&gt;，需要使用 GitHub 账号登录后即可留言。&lt;/p&gt;</description></item><item><title>项目</title><link>https://ysy.fan/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ysy.fan/projects/</guid><description>&lt;p&gt;这里展示了我的个人项目，欢迎查看和交流。&lt;/p&gt;</description></item></channel></rss>