<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Shirley Auspice&apos;s Blog</title><description>Home</description><link>https://auspiceshirley.dev/</link><language>zh_CN</language><item><title>开源项目与知识汇总（持续更新）</title><link>https://auspiceshirley.dev/posts/opensource/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/opensource/</guid><description>这里汇总了一些我从网络上收集来的资源，包括网站、开源项目以及一大堆学习资料</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::caution
&lt;strong&gt;本页面所引用的图标、商标等第三方视觉元素，其知识产权归各自的权利人或公司所有。这些第三方内容独立于本站，不适用本站采用的 CC BY-NC-SA 4.0 许可协议，本站仅出于说明的目的而进行引用。&lt;/strong&gt;
:::&lt;/p&gt;
&lt;p&gt;:::tip
2026-01-13日更新：对于在 GitHub 开源的开源项目，现已使用 &lt;a href=&quot;https://shields.io/&quot;&gt;Shields.io&lt;/a&gt; 加入相应的&lt;code&gt;仓库&lt;/code&gt;或&lt;code&gt;组织&lt;/code&gt;的星标数徽章，详细信息请参考 Shields.io 的相关页面 &lt;a href=&quot;https://shields.io/badges/git-hub-repo-stars&quot;&gt;GitHub Repo stars&lt;/a&gt; 和 &lt;a href=&quot;https://shields.io/badges/git-hub-orgs-stars&quot;&gt;GitHub Org&apos;s stars&lt;/a&gt;
:::&lt;/p&gt;
&lt;h2&gt;代码托管与协作平台&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- 代码托管与协作平台 --&amp;gt;
&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;!-- GitHub --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/GitHub.png&quot; alt=&quot;GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;GitHub 是一个基于 Git 的全球最大的代码托管平台，主要用于开发者存储、管理、协作开发代码及开展开源项目，拥有超过1亿开发者。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Cloudflare Pages --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/CloudflarePages.svg&quot; alt=&quot;Cloudflare Pages&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.cloudflare.com/developer-platform/products/pages/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Cloudflare Pages&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Cloudflare Pages 是一个类似于 GitHub Pages的静态网站托管服务，并且依托于 Cloudflare 的全球 CDN 网络，通过 Cloudflare Pages 部署网站的加载速度通常比其他服务更快。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/p&gt;
&lt;h2&gt;学习与工具网站&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- 学习与工具网站 --&amp;gt;
&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;!-- 哔哩哔哩 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/bilibili.svg&quot; alt=&quot;哔哩哔哩&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://bilibili.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;哔哩哔哩&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;哔哩哔哩是中国知名的视频分享网站，涵盖了动画、游戏、娱乐、科技等多个领域，拥有大量免费优质的学习资源。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- DeepSeek --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/deepseek.svg&quot; alt=&quot;DeepSeek&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://chat.deepseek.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;DeepSeek&amp;lt;img alt=&quot;GitHub Org&apos;s stars&quot; src=&quot;https://img.shields.io/github/stars/deepseek-ai&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;DeepSeek是深度求索公司开发的AI助手。其主要特点在于采用混合专家模型等先进技术，并优势突出表现为高性能、低成本以及开源策略，致力于推动AI技术普惠。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- HelloGitHub --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/HelloGitHub.png&quot; alt=&quot;Hello&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://hellogithub.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;HelloGitHub&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/521xueweihan/HelloGitHub?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;分享 GitHub 上有趣、入门级的开源项目。每月 28 号以月刊的形式更新发布，内容包括：有趣、入门级的开源项目、开源书籍、实战项目、企业级项目等，让你用很短时间感受到开源的魅力，爱上开源！&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Hello算法 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/hello-algo.svg&quot; alt=&quot;Hello算法&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.hello-algo.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Hello算法&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/krahets/hello-algo?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;《Hello 算法》：动画图解、一键运行的数据结构与算法教程。支持 Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart 代码。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- arXiv --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/arxiv.svg&quot; alt=&quot;arXiv&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://arxiv.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;arXiv&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;arXiv 是一项免费分发服务和开放获取档案，收录了物理、数学、计算机科学、定量生物学、定量金融、统计学、电气工程和系统科学以及经济学领域的近 240 万篇学术文章。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Microsoft Learn --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/microsoft.svg&quot; alt=&quot;Microsoft Learn&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://learn.microsoft.com/zh-cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Microsoft Learn&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Microsoft Learn 是微软官方提供的一个学习平台，提供丰富的技术课程和学习资源，涵盖云计算、人工智能、开发工具等多个领域。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- MDN Web Docs --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/simple-icons/mdnwebdocs.svg&quot; alt=&quot;MDN Web Docs&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://developer.mozilla.org/zh-CN/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;MDN Web Docs&amp;lt;img alt=&quot;GitHub Org&apos;s stars&quot; src=&quot;https://img.shields.io/github/stars/mdn&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;MDN Web Docs是一个由Mozilla维护的免费开放的网络技术文档库，涵盖HTML、CSS、JavaScript等前端技术的详尽资料和教程。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- 知乎 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/zhihu.svg&quot; alt=&quot;知乎&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://zhihu.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;知乎&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;知乎是一个中文互联网高质量问答社区和创作者聚集的原创内容平台，用户可以在平台上提问、回答和分享知识，涵盖了广泛的主题和领域。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- OI Wiki --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/OI-WiKi.png&quot; alt=&quot;OI Wiki&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://oi-wiki.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;OI Wiki&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/OI-wiki/OI-wiki?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;OI Wiki 是一个免费开放且持续更新的编程竞赛知识整合站点，包含竞赛中的基础知识、常见题型、解题思路以及常用工具等内容。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- freeCodeCamp --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/simple-icons/freecodecamp.svg&quot; alt=&quot;freeCodeCamp&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.freecodecamp.org/chinese&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;freeCodeCamp&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/freeCodeCamp/freeCodeCamp?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;freeCodeCamp 是一个全球性、开源、非营利、自定进度的交互式编程学习社区。它提供了一套包含数千小时训练内容的全栈开发者课程，旨在帮助学习者通过沉浸式编程挑战和项目实践，零基础成长为具备就业能力的软件开发者。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- 菜鸟教程 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/runoob.png&quot; alt=&quot;菜鸟教程&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.runoob.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;菜鸟教程&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;菜鸟教程提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python，Java，Ruby，C，PHP , MySQL等各种编程语言的基础知识。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- W3Schools --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/W3Schoolspng.png&quot; alt=&quot;W3Schools&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.w3schools.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;W3Schools&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;W3Schools 提供有关 HTML、CSS、JavaScript、PHP、SQL 和 JQuery 等 Web 开发语言的免费在线教程和参考资料。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- PubScholar --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/pubscholar.png&quot; alt=&quot;PubScholar&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://pubscholar.cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;PubScholar&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;PubScholar公益学术平台由中国科学院建设，提供公益性学术资源检索、获取与共享，开放优质学术资源。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- 你缺失的那门计算机课 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/missing_logo.svg&quot; alt=&quot;你缺失的那门计算机课&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.criwits.top/missing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;你缺失的那门计算机课&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/criwits/missing-web?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;你缺失的那门计算机课（网页版）不仅是一份适合电脑小白入门的电脑使用课程，更是一份面向今日与未来的信息时代指南。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- GPT 学术优化 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/gpt_academic.svg&quot; alt=&quot;GPT 学术优化&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://academic.chatwithpaper.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;GPT 学术优化&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/binary-husky/gpt_academic?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;ChatGPT Academic 项目是由中科院团队基于 ChatGPT 专属定制的版本，一般俗称中科院学术版 GPT 。它可以一键搞定论文润色、语法检查、中英互译、代码解释等，堪称科研神器。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- jsDelivr --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/jsdelivr.svg&quot; alt=&quot;jsDelivr&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://jsdelivr.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;jsDelivr&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/jsdelivr/jsdelivr?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;jsDelivr 是一个免费的开源 CDN（内容分发网络）服务，专为开源项目提供快速、可靠的文件托管和分发，支持全球范围内的访问。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Iconify --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/Iconify.png&quot; alt=&quot;Iconify&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://iconify.design/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Iconify&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/iconify/iconify?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Iconify 是一个集成了大量图标的开源项目，提供统一的图标访问接口，方便开发者在网页和应用中使用各种图标。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- OfferNow --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/OfferNow.png&quot; alt=&quot;OfferNow&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://offernow.cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;OfferNow&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;OfferNow 是一个面向程序员与AI学习者的综合性学习平台，聚焦于计算机基础与人工智能技能的系统提升。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Shields.io --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/Shields.io.png&quot; alt=&quot;Shields.io&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://shields.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Shields.io&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/badges/shields?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Shields.io 是一项用于生成简洁、统一且易读的徽章的服务，可以轻松嵌入 GitHub 项目自述文件或任何其他网页中。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/p&gt;
&lt;h2&gt;开源软件&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- 开源软件 --&amp;gt;
&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;!-- OpenClaw --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/OpenClaw.jpg&quot; alt=&quot;OpenClaw&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://openclaw.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;OpenClaw&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/openclaw/openclaw?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;OpenClaw 是运行在你自己设备上的个人 AI 助手。它在你常用的聊天工具里直接回复你，在 macOS/iOS/Android 上支持语音对话，并能显示一个你实时控制的画布。Gateway 只是控制平面，这个产品的核心就是助手本身。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- ComfyUI --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/ComfyUI.png&quot; alt=&quot;ComfyUI&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.comfy.org/zh-cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;ComfyUI&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/Comfy-Org/ComfyUI?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;ComfyUI 是可以在本地设备上运行的最强大的基于节点的生成式 AI 界面和推理引擎，用户可以通过节点组合各种 AI 模型和操作，实现高度可定制和可控的内容生成。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Ollama --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/ollama.png&quot; alt=&quot;Ollama&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://ollama.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Ollama&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/ollama/ollama?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Ollama 是一个用于在本地运行 DeepSeek-R1，Qwen3，GPT-OSS，Gemma 3 等大语言模型（LLM）的开源框架，并且能够与 Codex、Claude Code、OpenCode、OpenClaw、VS Code 等工具集成。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Blender --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/blender.png&quot; alt=&quot;Blender&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.blender.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Blender&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/blender/blender?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Blender 是一款免费开源的三维创作套件，支持建模、雕刻、动画、渲染、合成和视频编辑等功能，广泛应用于电影、游戏和视觉效果制作。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- VLC --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/vlc.png&quot; alt=&quot;VLC Media Player&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.videolan.org/vlc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;VLC Media Player&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/videolan/vlc?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;VLC Media Player 是一款免费开源的跨平台多媒体播放器，支持播放几乎所有音频和视频格式，以及DVD、音频CD和各种流媒体协议。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Visual Studio Code --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/vscode.svg&quot; alt=&quot;Visual Studio Code&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Visual Studio Code&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/microsoft/vscode?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Visual Studio Code 是微软开发的一款免费开源的跨平台代码编辑器，支持多种编程语言和扩展，提供强大的调试、版本控制和智能代码补全功能。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Office Tool Plus --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/office-tool-plus.png&quot; alt=&quot;Office Tool Plus&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.officetool.plus/zh-cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Office Tool Plus&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/YerongAI/Office-Tool?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Office Tool Plus 是一款免费的开源工具，旨在帮助用户更轻松地安装、激活和管理 Microsoft Office 套件。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Bulk Crap Uninstaller --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/BCUninstaller.png&quot; alt=&quot;Bulk Crap Uninstaller&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.bcuninstaller.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Bulk Crap Uninstaller&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/Klocman/Bulk-Crap-Uninstaller&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Bulk Crap Uninstaller 是一款免费开源的的批量程序卸载工具，它可以检测大多数应用程序和游戏（即使是便携版或未注册版），清理残留文件，强制卸载或根据预设列表自动卸载等等。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Git --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/git.svg&quot; alt=&quot;Git&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://git-scm.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Git&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/git/git?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Git 是一个免费开源的分布式版本控制系统，广泛用于软件开发和其他版本管理任务，支持高效的分支管理和协作工作流程。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Python --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/python.png&quot; alt=&quot;Python&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.python.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Python&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/python/cpython?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Python 是一种广泛使用的高级编程语言，因其简洁易读的语法和强大的库支持而受到开发者的喜爱，适用于从网页开发到数据科学等多种应用领域。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- FFmpeg --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/FFmpeg.png&quot; alt=&quot;FFmpeg&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://ffmpeg.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;FFmpeg&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/FFmpeg/FFmpeg?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;FFmpeg 是一个跨平台的用于处理多媒体内容（如音频、视频、字幕及相关元数据）的库和工具集合。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- KaTeX --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/KaTeX.svg&quot; alt=&quot;KaTeX&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://katex.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;KaTeX&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/KaTeX/KaTeX?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;KaTeX 是一个快速、易用的开源数学公式渲染库，支持LaTeX语法，适用于网页中的数学表达式显示。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Twikoo --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/twikoo.png&quot; alt=&quot;&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://twikoo.js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Twikoo&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/twikoojs/twikoo?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Twikoo 是一个基于云函数的轻量级评论系统，支持多种云服务提供商，易于集成和使用，适合个人博客和网站。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Godot --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/godot.svg&quot; alt=&quot;Godot&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://godotengine.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Godot&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/godotengine/godot?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Godot 是一个功能强大且易于使用的开源游戏引擎，支持2D和3D游戏开发，拥有丰富的工具和灵活的脚本语言，适合各种规模的游戏项目。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- PowerToys --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/PowerToys.png&quot; alt=&quot;PowerToys&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/microsoft/PowerToys&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;PowerToys&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/microsoft/PowerToys?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;PowerToys 是微软为 Windows 用户提供的一组实用工具，旨在提升生产力和用户体验，包括窗口管理、键盘快捷键、自定义文件资源管理器等功能。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- 7-Zip --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/7-zip.png&quot; alt=&quot;7-Zip&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.7-zip.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;7-Zip&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/ip7z/7zip?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;7-Zip 是一款免费开源的文件压缩和解压缩软件，支持多种压缩格式，具有高压缩比和强大的加密功能，适用于 Windows 操作系统。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- F-Droid --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/F-Droid.png&quot; alt=&quot;F-Droid&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://f-droid.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;F-Droid&amp;lt;img alt=&quot;GitHub Org&apos;s stars&quot; src=&quot;https://img.shields.io/github/stars/f-droid&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;F-Droid 是一个免费的开源 Android 应用商店，专注于提供开源软件，用户可以轻松浏览、下载和更新各种免费、自由和开源的 Android 应用程序。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- ImageToolbox --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/ImageToolbox.png&quot; alt=&quot;ImageToolbox&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/T8RIN/ImageToolbox&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;ImageToolbox&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/T8RIN/ImageToolbox?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Image Toolbox 是一款功能强大的安卓应用程序，用于高级图像处理。它提供了数十种功能，从裁剪和绘图等基本工具到滤镜、OCR 和广泛的图像处理选项。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Termux --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/termux.png&quot; alt=&quot;Termux&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://termux.dev/cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Termux&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/termux/termux-app?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Termux是一个适用于 Android 的终端模拟器，类似于 Linux 环境，无需Root或设置即可使用。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- BinaryEye --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/BinaryEye.png&quot; alt=&quot;BinaryEye&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/markusfisch/BinaryEye&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;BinaryEye&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/markusfisch/BinaryEye?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;BinaryEye 是一款功能强大的开源 Android 二维码和条形码扫描器，支持多种格式，界面简洁，使用方便。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- VitePress --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/vitepress.svg&quot; alt=&quot;VitePress&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://vitepress.dev/zh/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;VitePress&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/vuejs/vitepress?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;VitePress 是一个由 Vite 和 Vue 驱动的静态站点生成器 (SSG)，专为构建快速、以内容为中心的站点而设计。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- VuePress --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/VuePress.png&quot; alt=&quot;VuePress&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://vuepress.vuejs.org/zh/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;VuePress&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/vuejs/vuepress?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;VuePress 是一个由 Vue 驱动的以 Markdown 为中心的静态网站生成器（Static Site Generator, SSG）。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Astro --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/astro.png&quot; alt=&quot;Astro&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://astro.build/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Astro&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/withastro/astro?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Astro 是一个适合构建像博客、营销网站、电子商务网站这样的以内容驱动的网站的 Web 框架。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Hexo --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/hexo.svg&quot; alt=&quot;Hexo&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://hexo.io/zh-cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Hexo&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/hexojs/hexo?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Hexo 是一款基于 Node.js 的快速、简单且强大的静态博客框架，它使用 Markdown（或其他标记语言）解析文章，在几秒内，即可利用靓丽的主题生成静态网页。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- LocalSend --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/localsend.png&quot; alt=&quot;LocalSend&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://localsend.org/zh-CN&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;LocalSend&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/localsend/localsend?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;LocalSend 是一款免费的开源应用程序，可让您通过本地网络与附近的设备安全地共享文件和消息，而无需互联网连接。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Upscayl --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/upscayl.png&quot; alt=&quot;Upscayl&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://upscayl.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Upscayl&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/upscayl/upscayl?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Upscayl 是一个免费开源的图像增强工具，使用先进的 AI 技术提升图像分辨率，同时保持高质量和细节。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- FontForge --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/fontforge.png&quot; alt=&quot;FontForge&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://fontforge.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;FontForge&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/fontforge/fontforge?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;FontForge 是一款免费、自由的字体编辑器，适用于 Windows、Mac OS X 和 GNU+Linux。 您可以使用它创建、编辑和转换OpenType、TrueType、UFO、CID-keyed、Multiple Master 等多种格式的字体。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Krita --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/krita.png&quot; alt=&quot;Krita&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://krita.org/zh-cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Krita&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/KDE/krita?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Krita 是一款自由开源且免费的专业绘画软件，无需注册、无广告、试用期或者商用限制，助力每一位画师随心所欲地表达创意。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Kdenlive --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/kdenlive.png&quot; alt=&quot;Kdenlive&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://kdenlive.org/zh-cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Kdenlive&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/KDE/kdenlive?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Kdenlive 是一款强大、免费的开源视频编辑器，为每个人提供专业级的视频编辑功能。无论你是在制作简单的家庭视频，还是在进行复杂的项目，Kdenlive 都能提供实现你创意所需的工具。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- GIMP --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/gimp.png&quot; alt=&quot;GIMP&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.gimp.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;GIMP&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/GNOME/gimp?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;GIMP（GNU Image Manipulation Program）是一个免费开源的图像编辑软件，提供强大的图像处理和编辑功能，适用于照片修饰、图形设计等多种用途。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Inkscape --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/inkscape.svg&quot; alt=&quot;Inkscape&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://inkscape.org/zh/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Inkscape&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/inkscape/inkscape?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Inkscape 是一款免费开源的矢量图形编辑软件，支持多种文件格式，适用于创建插图、图标、标志、图表等各种图形设计任务。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Mermaid --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/Mermaid.svg&quot; alt=&quot;Mermaid&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://mermaid.ai/open-source/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Mermaid&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/mermaid-js/mermaid?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Mermaid 是一个基于 JavaScript 的图表和绘图工具，可以将类似 Markdown 的文本定义渲染出来，动态创建和修改图表。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- D3 --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/d3.svg&quot; alt=&quot;D3&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://d3js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;D3&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/d3/d3?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;D3（或者 D3.js）是一个免费的开源 JavaScript 数据可视化库。它基于 Web 标准构建的底层方法，在创建动态数据驱动型图形方面提供了无与伦比的灵活性。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- JSXGraph --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/JSXGraph.svg&quot; alt=&quot;JSXGraph&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;http://jsxgraph.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;JSXGraph&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/jsxgraph/jsxgraph?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;JSXGraph 是一个跨浏览器 JavaScript 库，用于在网页浏览器中实现交互式几何作图、函数绘图、图表绘制及数据可视化。该库完全基于 JavaScript 实现，不依赖任何外部库，并支持 SVG、Canvas 乃至经典的老牌 VML 作为渲染方式。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- p5.js --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/p5.js.svg&quot; alt=&quot;p5.js&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://p5js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;p5.js&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/processing/p5.js&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;p5.js 是一款旨在帮助人们学习编程并进行艺术创作的友好工具。作为一个免费的开源 JavaScript 库，它由一个充满包容和关怀的社区共同打造。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- HMCL --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/HMCL.png&quot; alt=&quot;HMCL&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://hmcl.huangyuhui.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;HMCL&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/HMCL-dev/HMCL?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;HMCL 是一个开源的跨平台 Minecraft 启动器，支持模组管理、游戏定制、模组加载器安装（Forge、NeoForge、Cleanroom、Fabric、Quilt、LiteLoader 和 OptiFine）、模组包创建、用户界面自定义等功能。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- GitHub Desktop --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/github-desktop.png&quot; alt=&quot;GitHub Desktop&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;GitHub Desktop&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/desktop/desktop?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;GitHub Desktop 是 GitHub 官方发布的免费开源桌面应用程序，简化了 Git 和 GitHub 的使用，适合开发者进行版本控制和协作开发。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Readest --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/readest.png&quot; alt=&quot;Readest&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://readest.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Readest&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/readest/readest?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Readest 是一个免费开源的电子书阅读器，支持多种电子书格式，提供舒适的阅读体验和丰富的功能，如翻译、书签、注释和主题切换等。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Ventoy --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/ventoy.png&quot; alt=&quot;Ventoy&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://www.ventoy.net/cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Ventoy&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/ventoy/Ventoy?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘，你只需要把映像文件直接拷贝到U盘里面就可以启动了，无需其他操作。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- OpenHashTab --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/OpenHashTab.png&quot; alt=&quot;OpenHashTab&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/namazso/OpenHashTab&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;OpenHashTab&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/namazso/OpenHashTab&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;OpenHashTab 是一款开源的 Windows Shell 扩展工具，它能够在文件属性或文件夹属性中添加一个“哈希信息”标签，用来显示每一个文件的哈希值，并且可以输入哈希值进行对比，支持多种算法，让用户无需借助额外软件，就能便捷地验证文件的完整性，确保其未被篡改。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Sandboxie --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/Sandboxie.png&quot; alt=&quot;Sandboxie&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://sandboxie-plus.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Sandboxie&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/sandboxie-plus/Sandboxie&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Sandboxie 是一款基于沙盒的隔离软件，适用于基于 Windows NT 的操作系统。它创建一个安全的操作环境，可在此环境中运行或安装应用程序，而不会永久修改本地及映射驱动器或 Windows 注册表。其隔离的虚拟环境允许用户以可控方式测试不可信程序并安全地进行网页浏览。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/p&gt;
&lt;h2&gt;开源浏览器插件&lt;/h2&gt;
&lt;p&gt;&amp;lt;!-- 开源浏览器插件 --&amp;gt;
&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;!-- uBlock Origin --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/ublock.svg&quot; alt=&quot;uBlock Origin&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/gorhill/uBlock&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;uBlock Origin&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/gorhill/uBlock?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;uBlock Origin是一款高效的开源广告拦截和内容过滤浏览器扩展，支持多种浏览器，旨在提高用户的上网体验。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- Global Speed --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/GlobalSpeed.png&quot; alt=&quot;Global Speed&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/polywock/globalSpeed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Global Speed&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/polywock/globalSpeed?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;Global Speed 是一个开源的浏览器扩展，它允许用户调整视频的播放速度，以便更灵活地观看内容，最高可设置为16倍速。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- KISS Translator --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/kiss-translator.png&quot; alt=&quot;KISS Translatory&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/fishjar/kiss-translator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;KISS Translator&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/fishjar/kiss-translator?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;KISS Translator（简约翻译）是一个简约、开源的 双语对照翻译扩展 &amp;amp; 油猴脚本&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- FluentRead --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/FluentRead.png&quot; alt=&quot;FluentRead&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/Bistutu/FluentRead&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;FluentRead&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/Bistutu/FluentRead?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;FluentRead是一款开源的、革命性的沉浸式浏览器翻译插件，它让所有人都能够拥有母语般的阅读体验。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;!-- uBlacklist --&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/icons/uBlacklist.svg&quot; alt=&quot;uBlacklist&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/iorate/ublacklist&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;uBlacklist&amp;lt;img alt=&quot;GitHub Repo stars&quot; src=&quot;https://img.shields.io/github/stars/iorate/ublacklist?style=social&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;p class=&quot;resource-description&quot;&amp;gt;uBlacklist 是一款浏览器扩展程序，用于过滤 Google、Bing、Yandex等搜索引擎的搜索结果，可用于Edge、Chrome、Firefox 和 Safari。&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
p {
text-indent: 0em !important;
}&lt;/p&gt;
&lt;p&gt;/* 去除博客文章中的图片圆角 */
img {
border-radius: 0 !important;
}&lt;/p&gt;
&lt;p&gt;.open-source-resources {
max-width: 100%;
}&lt;/p&gt;
&lt;p&gt;.resources-intro {
margin-bottom: 2.5rem;
padding: 1.5rem;
background-color: var(--color-bg-secondary);
border-radius: 8px;
border-left: 4px solid var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;.resources-intro p {
margin: 0;
font-size: 1.1rem;
color: var(--color-text);
}&lt;/p&gt;
&lt;p&gt;.resource-section {
margin-bottom: 3rem;
}&lt;/p&gt;
&lt;p&gt;.resource-section h2 {
margin-bottom: 1.5rem;
padding-bottom: 0.75rem;
border-bottom: 2px solid var(--color-border);
color: var(--color-heading);
font-size: 1.8rem;
}&lt;/p&gt;
&lt;p&gt;.resources-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.resources-grid {
grid-template-columns: 1fr;
gap: 1rem;
}
}&lt;/p&gt;
&lt;p&gt;.resource-card {
display: flex;
align-items: flex-start;
padding: 1.25rem;
background-color: var(--color-bg-card);
border: 1px solid var(--color-border);
border-radius: 10px;
transition: all 0.3s ease;
text-decoration: none;
color: inherit;
}&lt;/p&gt;
&lt;p&gt;.resource-card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
border-color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;.resource-icon {
flex-shrink: 0;
margin-right: 1.25rem;
width: 60px;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
padding: 0.5rem;
}&lt;/p&gt;
&lt;p&gt;.resource-icon img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
}&lt;/p&gt;
&lt;p&gt;.resource-content {
flex: 1;
min-width: 0; /* 防止内容溢出 */
}&lt;/p&gt;
&lt;p&gt;.resource-title {
margin: 0 0 0.5rem 0;
font-size: 1.2rem;
font-weight: 600;
}&lt;/p&gt;
&lt;p&gt;.resource-title a {
color: var(--color-heading);
text-decoration: none;
transition: color 0.2s ease;
display: inline-flex;
align-items: center;
gap: 6px;
}&lt;/p&gt;
&lt;p&gt;.resource-title a:hover {
color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;.resource-title a img {
display: inline-block;
vertical-align: center;
margin: 0 0 0.5rem 0.5rem;
}&lt;/p&gt;
&lt;p&gt;.resource-description {
margin: 0;
font-size: 0.95rem;
line-height: 1.5;
color: var(--color-text-secondary);
}&lt;/p&gt;
&lt;p&gt;/* 响应式调整 */
@media (max-width: 480px) {
.resource-card {
flex-direction: column;
align-items: center;
text-align: center;
}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.resource-icon {
  margin-right: 0;
  margin-bottom: 1rem;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Android 高级用法（更新中）</title><link>https://auspiceshirley.dev/posts/advanced-android-usage/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/advanced-android-usage/</guid><description>Android 高级用法——ADB、Shizuku、雹……</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::caution[警告！警告！！警告！！！]&lt;/p&gt;
&lt;p&gt;&amp;lt;p style=&quot;font-size:x-large;color:red&quot;&amp;gt;如果您执行了不当指令，卸载了、停用了重要系统组件从而导致系统损坏、不能开机，后果自负，本博客作者及软件作者不承担任何责任&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;h2&gt;本页目录&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;#1%E5%8D%B8%E8%BD%BD%E7%B3%BB%E7%BB%9F%E5%BA%94%E7%94%A8&quot;&gt;1.卸载系统应用&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;#2shizuku&quot;&gt;2.Shizuku&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;#3%E9%9B%B9&quot;&gt;3.雹&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;#4canta&quot;&gt;4.Canta&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;#5nrfr&quot;&gt;5.Nrfr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;#6shizuwall&quot;&gt;6.ShizuWall&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;1.卸载系统应用&lt;/h2&gt;
&lt;p&gt;:::tip[ADB 是什么？]
ADB（Android Debug Bridge）即&lt;code&gt;安卓调试桥&lt;/code&gt;。它是 Android 官方提供的一个多功能命令行工具，充当电脑与安卓设备（如手机、平板、智能电视或车机）之间的通信桥梁，让用户或开发者能够从电脑端直接向设备发送指令并执行操作。
:::&lt;/p&gt;
&lt;p&gt;:::note
为了让此教程能够在各厂商的&lt;code&gt;Android 设备&lt;/code&gt;上通用，此部分&lt;code&gt;不提供参考图&lt;/code&gt;
:::&lt;/p&gt;
&lt;h3&gt;安装 ADB&lt;/h3&gt;
&lt;p&gt;:::tip[如何下载 ADB？]&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从&lt;code&gt;Android.com&lt;/code&gt;下载&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://developer.android.com/tools/releases/platform-tools?hl=zh-cn#downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;SDK 平台工具版本说明 | Android Studio | Android Developers&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从&lt;code&gt;Google.cn&lt;/code&gt;下载&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn#downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;SDK 平台工具版本说明 | Android Studio | Android Developers&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;根据您的操作系统选择合适的&lt;code&gt;SDK 平台工具&lt;/code&gt;，这里以&lt;code&gt;Windows&lt;/code&gt;平台为例：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;找到下载的&lt;code&gt;platform-tools-latest-windows.zip&lt;/code&gt;文件，把它解压到一个合适的位置，比如&lt;code&gt;D:\ADB&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将&lt;code&gt;D:\ADB&lt;/code&gt;添加到&lt;code&gt;Windows 环境变量&lt;/code&gt;的&lt;code&gt;PATH 变量&lt;/code&gt;里&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;开发者设置&lt;/h3&gt;
&lt;p&gt;:::note
不同型号、不同操作系统的设备此处的操作可能略有不同，需要您自行探索
:::&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;设置&lt;/code&gt;中找到您&lt;code&gt;Android&lt;/code&gt;设备的&lt;code&gt;版本号&lt;/code&gt;，连续点击&lt;code&gt;7次&lt;/code&gt;，打开&lt;code&gt;开发者设置（选项）&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在设置中找到&lt;code&gt;开发者选项&lt;/code&gt;的入口&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;USB 调试&lt;/code&gt;，忽略掉任何可能出现的所谓的&lt;code&gt;安全警告&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;连接设备&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;将您的&lt;code&gt;Android 设备&lt;/code&gt;通过&lt;code&gt;USB 数据线&lt;/code&gt;连接您的&lt;code&gt;Windows 设备&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开&lt;code&gt;Windows 终端&lt;/code&gt;，执行以下命令连接设备&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;adb shell
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在手机端选中&lt;code&gt;一律允许计算机调试&lt;/code&gt;并点击&lt;code&gt;确定&lt;/code&gt;，等待手机与电脑连接成功&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若连接成功，终端会出现类似&lt;code&gt;XXX:/ $&lt;/code&gt;的机型的字样&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;卸载系统应用&lt;/h3&gt;
&lt;p&gt;:::tip
使用&lt;code&gt;ADB 卸载系统应用&lt;/code&gt;，实际上是将该应用从当前用户&lt;code&gt;User 0&lt;/code&gt;中卸载。此操作无需获取&lt;code&gt;Root 权限&lt;/code&gt;，且&lt;code&gt;不会&lt;/code&gt;破坏系统分区。
:::&lt;/p&gt;
&lt;p&gt;执行以下命令列出&lt;code&gt;Android&lt;/code&gt;设备上安装的所有应用的&lt;code&gt;包名&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pm list packages
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就像这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\Admin&amp;gt; adb shell
XXX:/ $ pm list packages
package:com.android.updater
......
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;package:com.android.updater&lt;/code&gt;中的&lt;code&gt;com.android.updater&lt;/code&gt;即为应用的&lt;code&gt;包名&lt;/code&gt;（这个是&lt;code&gt;系统更新&lt;/code&gt;）&lt;/p&gt;
&lt;h4&gt;卸载应用&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;pm uninstall -k --user 0 应用包名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
&lt;code&gt;-k&lt;/code&gt;参数会保留用户数据，若不包含&lt;code&gt;-k&lt;/code&gt;则不会保留用户数据
:::&lt;/p&gt;
&lt;p&gt;所以建议执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pm uninstall --user 0 应用包名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以彻底删除不需要的系统应用&lt;/p&gt;
&lt;p&gt;出现&lt;code&gt;Success&lt;/code&gt;，则表示卸载应用成功。&lt;/p&gt;
&lt;p&gt;:::caution
关于各个软件的包名是什么，哪些能删、哪些不能删，这里不方便列出，需要您自行检索相关信息
:::&lt;/p&gt;
&lt;h4&gt;重新安装/恢复应用&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;pm install-existing --user 0 应用包名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::warning
由于直接卸载系统应用风险较大，笔者建议您&lt;code&gt;停用或禁用&lt;/code&gt;系统应用
:::&lt;/p&gt;
&lt;p&gt;:::tip&lt;/p&gt;
&lt;h4&gt;停用/冻结应用&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;adb shell pm disable-user 应用包名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;出现&lt;code&gt;disabled-user&lt;/code&gt;，则表示&lt;code&gt;停用/冻结&lt;/code&gt;应用成功。&lt;/p&gt;
&lt;h4&gt;启用/解冻应用&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;adb shell pm enable 应用包名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;出现&lt;code&gt;disabled-user&lt;/code&gt;，则表示&lt;code&gt;启用/解冻&lt;/code&gt;应用成功。&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;2.Shizuku&lt;/h2&gt;
&lt;p&gt;:::tip[Shizuku 是什么？]
&lt;code&gt;Shizuku&lt;/code&gt;是一款著名的&lt;code&gt;开源Android 权限管理工具&lt;/code&gt;。它允许用户在&lt;code&gt;无需获取系统最高权限&lt;/code&gt;（Root）的情况下，通过&lt;code&gt;ADB&lt;/code&gt;（Android 调试桥）赋予其他应用程序系统级别的权限，从而实现&lt;code&gt;高级系统修改&lt;/code&gt;、&lt;code&gt;深度定制&lt;/code&gt;和&lt;code&gt;自动化控制&lt;/code&gt;。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;rikkaapps/shizuku&quot;}&lt;/p&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;Shizuku&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/rikkaapps/shizuku/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau01.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 1&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击&amp;lt;code&amp;gt;查看指令&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau02.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;在&amp;lt;code&amp;gt;Windows 终端&amp;lt;/code&amp;gt;中执行此处的命令&amp;lt;/br&amp;gt;您的设备重新启动后必须重新执行此命令&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau11.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&apos;&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;当然，你也可以通过无线调试来启动 Shizuku&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau12.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&apos;&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;在通知栏中输入屏幕上出现的六位配对码&amp;lt;br/&amp;gt;注意，您的系统通知应该是原生样式的，否则可能无法输入配对码&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau13.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&apos;&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;像这样就是配对成功了&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau03.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 3&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;出现此界面则表示 Shizuku 成功启动&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau04.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 4&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;在这里管理授权&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;3.雹&lt;/h2&gt;
&lt;p&gt;:::tip[雹 是什么]
雹（英文名：Hail）是一款开源、免费的&lt;code&gt;Android&lt;/code&gt;系统&lt;code&gt;应用管理与冻结工具&lt;/code&gt;。它的主要作用是帮助用户冻结、隐藏或停用手机上的各类应用程序。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;aistra0528/Hail&quot;}&lt;/p&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;雹&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/aistra0528/Hail/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-fdroid.png&quot; alt=&quot;Get it on F-Droid&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://cloudflare.f-droid.org/packages/com.aistra.hail&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on F-Droid（Mirror）&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau05.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 1&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击&amp;lt;code&amp;gt;设置&amp;lt;/code&amp;gt;，选择&amp;lt;code&amp;gt;工作模式&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau06.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;选择&amp;lt;code&amp;gt;Shizuku - 强行停止&amp;lt;/code&amp;gt;以强行退出某些持续在后台运行的应用&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau07.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 3&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击&amp;lt;code&amp;gt;应用&amp;lt;/code&amp;gt;添加或删除需要管理的应用&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau08.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 4&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;在这里筛选应用&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau09.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 5&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;如果您要管理系统应用，请勿忽略这里的提示&amp;lt;/br&amp;gt;如您不慎错误操作，后果自负&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau10.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 6&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;这个按钮是执行操作&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;4.Canta&lt;/h2&gt;
&lt;p&gt;:::tip[Canta 是什么？]
Canta 是一款配合&lt;code&gt;Shizuku&lt;/code&gt;使用的&lt;code&gt;Android 系统应用卸载工具&lt;/code&gt;。它可以让用户在&lt;code&gt;无需 Root 权限&lt;/code&gt;的情况下，安全地卸载手机中预装的顽固软件或系统级应用。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;samolego/Canta&quot;}&lt;/p&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;Canta&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/samolego/Canta/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-fdroid.png&quot; alt=&quot;Get it on F-Droid&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://cloudflare.f-droid.org/packages/io.github.samolego.canta&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on F-Droid（Mirror）&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau14.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Canta&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;Canta 需要 Shizuku 授权&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;5.Nrfr&lt;/h2&gt;
&lt;p&gt;:::tip[Nrfr 是什么？]
Nrfr 是一款强大的&lt;code&gt;SIM 卡国家码&lt;/code&gt;修改工具，&lt;code&gt;无需 Root 权限&lt;/code&gt;即可修改 SIM 卡国家码。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;Ackites/Nrfr&quot;}&lt;/p&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;Nrfr&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/Ackites/Nrfr/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau15.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Nrfr&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;Nrfr 需要 Shizuku 授权&amp;lt;br/&amp;gt;选中 SIM 卡再点击还原设置即可撤销更改&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;h2&gt;6.ShizuWall&lt;/h2&gt;
&lt;p&gt;:::tip[ShizuWall 是什么？]
ShizuWall 是一款适用于&lt;code&gt;Android 11 及以上系统&lt;/code&gt;的开源轻量级&lt;code&gt;网络防火墙&lt;/code&gt;应用。它&lt;code&gt;不需要 Root 权限&lt;/code&gt;，也不&lt;code&gt;需要开启耗电的本地 VPN&lt;/code&gt;，即可实现单应用的网络拦截。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;AhmetCanArslan/ShizuWall&quot;}&lt;/p&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;ShizuWall&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/AhmetCanArslan/ShizuWall/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau16.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;ShizuWall&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;ShizuWall 需要 Shizuku 授权&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
/&lt;em&gt;img {
border-radius: 0 !important;
}&lt;/em&gt;/&lt;/p&gt;
&lt;p&gt;.resource-section {
margin-bottom: 3rem;
}&lt;/p&gt;
&lt;p&gt;.resources-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.resources-grid {
grid-template-columns: 1fr;
gap: 1rem;
}
}&lt;/p&gt;
&lt;p&gt;.resource-card {
display: flex;
flex-direction: column;&lt;br /&gt;
padding: 1.25rem;
background-color: var(--color-bg-card);
border: 1px solid var(--color-border);
border-radius: 10px;
transition: all 0.3s ease;
text-decoration: none;
color: inherit;
overflow: hidden;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
border-color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;.resource-icon {
width: 100%;
aspect-ratio: 646 / 250;&lt;br /&gt;
margin-right: 0;&lt;br /&gt;
margin-bottom: 1.25rem;&lt;br /&gt;
/_background-color: #f0f2f5; _/
border-radius: 8px;
overflow: hidden;&lt;br /&gt;
display: flex;
align-items: center;
justify-content: center;
}&lt;/p&gt;
&lt;p&gt;.resource-icon img {
width: 100%;
height: 100%;
object-fit: cover;&lt;br /&gt;
display: block;
border-radius: 8px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-content {
flex: 1;
min-width: 0;
text-align: left;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-title {
margin: 0 0 0.25rem 0;
font-size: 1.2rem;
font-weight: 600;
text-align: center;
}&lt;/p&gt;
&lt;p&gt;.resource-title a {
color: var(--color-heading);
text-decoration: none;
transition: color 0.2s ease;
display: inline-flex;
align-items: center;
gap: 6px;
}&lt;/p&gt;
&lt;p&gt;.resource-title a:hover {
color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 480px) {
.resource-card {
padding: 1rem;
}
.resource-icon {
margin-bottom: 1rem;
}
.resource-title {
font-size: 1.1rem;
}
}&lt;/p&gt;
&lt;p&gt;.alternating-layout {
display: flex;
flex-direction: column;
gap: 3rem;&lt;br /&gt;
margin: 2rem 0;
}&lt;/p&gt;
&lt;p&gt;.alternating-item {
display: flex;
align-items: center;&lt;br /&gt;
gap: 2rem;
background: transparent;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image {
flex: 0 0 30%;&lt;br /&gt;
max-width: 30%;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image img {
width: 100%;
height: auto;
display: block;
border-radius: 12px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-text {
flex: 1;
text-align: center;
}&lt;/p&gt;
&lt;p&gt;.alternating-item:nth-child(even) {
flex-direction: row-reverse;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.alternating-item,
.alternating-item:nth-child(even) {
flex-direction: column;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image {
flex: 0 0 auto;
max-width: 80%;&lt;br /&gt;
width: 80%;
margin-bottom: 1rem;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-text {
text-align: center;
}
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- 模板
&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postaau/aau.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - &amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
--&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Dify 本地部署指南</title><link>https://auspiceshirley.dev/posts/dify/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/dify/</guid><description>使用 Docker Compose 在 Windows 设备上本地部署 Dify</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note[什么是 Dify？]&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Dify&lt;/code&gt;是一个用于构建&lt;code&gt;AI&lt;/code&gt;工作流的开源平台。通过在可视化画布上编排&lt;code&gt;AI&lt;/code&gt;模型、连接数据源、定义处理流程，直接将你的领域知识转化为可运行的软件。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;langgenius/dify&quot;}&lt;/p&gt;
&lt;p&gt;本文将向你介绍如何使用&lt;code&gt;Docker&lt;/code&gt;在您的&lt;code&gt;Windows&lt;/code&gt;设备上部署&lt;code&gt;Dify&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;:::tip&lt;/p&gt;
&lt;p&gt;本文 100% 由人类编写&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;安装Docker&lt;/h2&gt;
&lt;p&gt;:::caution
Docker 官网为&amp;lt;a href=&quot;https://www.docker.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;https://www.docker.com&amp;lt;/a&amp;gt;，其他号称 “Docker官方网站” 的网站一律为假！！！由于受不可抗力影响，Docker 网站目前访问受阻，导致从&amp;lt;a href=&quot;https://hub.docker.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Docker Hub&amp;lt;/a&amp;gt;拉取镜像往往出现&lt;code&gt;速度慢&lt;/code&gt;、&lt;code&gt;拉取超时&lt;/code&gt;等问题，但是您可以使用诸如&lt;code&gt;Steamcommunity 302&lt;/code&gt;（&amp;lt;a href=&quot;https://www.dogfight360.com/blog/18682/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;下载链接&amp;lt;/a&amp;gt;）等工具加速访问
:::&lt;/p&gt;
&lt;p&gt;访问&amp;lt;a href=&quot;https://www.docker.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;https://www.docker.com&amp;lt;/a&amp;gt;下载&lt;code&gt;Docker Desktop Installer.exe&lt;/code&gt;可执行文件（当然，Docker Desktop 也在&amp;lt;a href=&quot;https://apps.microsoft.com/detail/xp8cbj40xlbwkx?hl=zh-Hans-CN&amp;amp;gl=CN&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;微软商店&amp;lt;/a&amp;gt;提供安装，但我未验证这种安装方法是否可以更改安装位置）&lt;/p&gt;
&lt;h3&gt;更改安装位置&lt;/h3&gt;
&lt;p&gt;由于&lt;code&gt;Docker Desktop&lt;/code&gt;默认安装在 C 盘（&lt;code&gt;C:\Program Files\Docker\Docker&lt;/code&gt;），我们可以通过命令行将&lt;code&gt;Docker Desktop&lt;/code&gt;安装到指定目录（在文件所在的目录启动终端）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; .\&apos;Docker Desktop Installer.exe&apos;  install --installation-dir=&quot;D:\Docker&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使&lt;code&gt;Docker Desktop&lt;/code&gt;安装到&lt;code&gt;D:\Docker&lt;/code&gt;，需要提前在&lt;code&gt;D盘&lt;/code&gt;根目录下创建名为&lt;code&gt;Docker&lt;/code&gt;的文件夹，否则命令会执行失败&lt;/p&gt;
&lt;p&gt;安装时选择默认选项即可，安装完成后重启电脑，这会启用&lt;code&gt;WSL&lt;/code&gt;（适用于 Linux 的 Windows 子系统）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;电脑重启后会弹出以下弹窗，请根据提示升级&lt;code&gt;WSL&lt;/code&gt;版本，此操作需要良好的网络连接&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你不慎关闭此窗口，请以管理员身份运行终端并执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl.exe --update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当终端输出类似以下内容时，你可以安全地关闭终端：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;启动&lt;code&gt;Docker Desktop&lt;/code&gt;并跳过登录&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;更改默认镜像保存位置&lt;/h3&gt;
&lt;p&gt;Docker 的镜像默认安装在&lt;code&gt;%UserProfile%\AppData\Local\Docker\wsl&lt;/code&gt;目录下，建议将目录更改到除 C 盘外的其他位置，Docker 会自动在选定的目录下增加子&lt;code&gt;DockerDesktopWSL&lt;/code&gt;文件夹&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;Apply &amp;amp; restart&lt;/code&gt;保存设置&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;部署 Dify&lt;/h2&gt;
&lt;p&gt;:::note[Dify Docs]
&amp;lt;a href=&quot;https://docs.dify.ai/zh/self-host/quick-start/docker-compose&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;使用 Docker Compose 部署 Dify - Dify Docs&amp;lt;/a&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::tip[硬件要求]
您的设备需要具备&lt;code&gt;两个以上&lt;/code&gt;核心的&lt;code&gt;CPU&lt;/code&gt;（中央处理器）以及&lt;code&gt;4 GiB&lt;/code&gt;以上&lt;code&gt;RAM&lt;/code&gt;（随机存储器，即“内存”）
:::&lt;/p&gt;
&lt;h3&gt;克隆 Dify&lt;/h3&gt;
&lt;p&gt;官方文档是这么写的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone --branch &quot;$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)&quot; https://github.com/langgenius/dify.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中&lt;code&gt;&quot;$()&quot;&lt;/code&gt;这部分的作用是自动获取&lt;code&gt;Dify&lt;/code&gt;最新&lt;code&gt;Release&lt;/code&gt;的标签（&lt;code&gt;tag&lt;/code&gt;），需要额外安装一个&lt;code&gt;jq&lt;/code&gt;，这里我们直接访问&lt;code&gt;Dify&lt;/code&gt;的&amp;lt;a href=&quot;https://github.com/langgenius/dify/releases/latest&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;GitHub Release&amp;lt;/a&amp;gt;页面，手动复制一下最新的&lt;code&gt;tag&lt;/code&gt;。例如截至&lt;code&gt;2026-05-10&lt;/code&gt;的最新版是&lt;code&gt;1.14.0&lt;/code&gt;，我们将上述命令改成如下形式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone --branch 1.14.0 https://github.com/langgenius/dify.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;示例输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS E:\Develop\Github&amp;gt; git clone --branch 1.14.0 https://github.com/langgenius/dify.git
Cloning into &apos;dify&apos;...
remote: Enumerating objects: 404526, done.
remote: Counting objects: 100% (438/438), done.
remote: Compressing objects: 100% (306/306), done.
remote: Total 404526 (delta 238), reused 132 (delta 132), pack-reused 404088 (from 4)
Receiving objects: 100% (404526/404526), 353.61 MiB | 10.69 MiB/s, done.
Resolving deltas: 100% (296297/296297), done.
Note: switching to &apos;6fafeec41502152ec3552d1851aaeb3c22db1f02&apos;.

You are in &apos;detached HEAD&apos; state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c &amp;lt;new-branch-name&amp;gt;

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

Updating files: 100% (11297/11297), done.
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;启动 Dify&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;导航到&lt;code&gt;Dify&lt;/code&gt;源代码中的&lt;code&gt;docker&lt;/code&gt;目录：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;cd dify/docker
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;复制示例环境配置文件：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;cp .env.example .env
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;根据你的 Docker Compose 版本选择相应命令启动容器：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这一步需要拉取的文件较多，请耐心等待。你应该会看到类似以下的输出，显示每个容器的状态和启动时间：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS E:\Develop\Github\dify\docker&amp;gt; docker compose up -d
[+] up 19/23
 ✔ Image langgenius/dify-api:1.14.0                Pulled                                                          15.3s
 ✔ Image langgenius/dify-plugin-daemon:0.6.0-local Pulled                                                          50.7s
 ✔ Network docker_default                          Created                                                          0.2s
 ✔ Network docker_ssrf_proxy_network               Created                                                          0.1s
 ✔ Container docker-sandbox-1                      Started                                                          3.1s
 ✔ Container docker-init_permissions-1             Exited                                                           3.6s
 ✔ Container docker-redis-1                        Started                                                          3.1s
 ✔ Container docker-db_postgres-1                  Healthy                                                         25.1s
 ✔ Container docker-web-1                          Started                                                          3.1s
 ✔ Container docker-ssrf_proxy-1                   Started                                                          3.2s
 ✔ Container docker-weaviate-1                     Started                                                          3.1s
 ✔ Container docker-plugin_daemon-1                Started                                                         25.1s
 ✔ Container docker-api-1                          Started                                                         24.8s
 ✔ Container docker-worker_beat-1                  Started                                                         24.8s
 ✔ Container docker-worker-1                       Started                                                         24.8s
 ✔ Container docker-nginx-1                        Started                                                         24.8s

What&apos;s next:
    Filter, search, and stream logs from all your Compose services
    in one place with Docker Desktop&apos;s Logs view. docker-desktop://dashboard/logs
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;验证所有容器是否成功运行：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;docker compose ps
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;示例输出，每个容器的状态应为&lt;code&gt;Up&lt;/code&gt;或&lt;code&gt;healthy&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS E:\Develop\Github\dify\docker&amp;gt; docker compose ps
NAME                     IMAGE                                       COMMAND                   SERVICE         CREATED              STATUS                        PORTS
docker-api-1             langgenius/dify-api:1.14.0                  &quot;/bin/bash /entrypoi…&quot;   api             About a minute ago   Up About a minute (healthy)   5001/tcp
docker-db_postgres-1     postgres:15-alpine                          &quot;docker-entrypoint.s…&quot;   db_postgres     2 minutes ago        Up About a minute (healthy)   5432/tcp
docker-nginx-1           nginx:latest                                &quot;sh -c &apos;cp /docker-e…&quot;   nginx           About a minute ago   Up About a minute             0.0.0.0:80-&amp;gt;80/tcp, [::]:80-&amp;gt;80/tcp, 0.0.0.0:443-&amp;gt;443/tcp, [::]:443-&amp;gt;443/tcp
docker-plugin_daemon-1   langgenius/dify-plugin-daemon:0.6.0-local   &quot;/usr/bin/tini -g --…&quot;   plugin_daemon   About a minute ago   Up About a minute             0.0.0.0:5003-&amp;gt;5003/tcp, [::]:5003-&amp;gt;5003/tcp
docker-redis-1           redis:6-alpine                              &quot;docker-entrypoint.s…&quot;   redis           2 minutes ago        Up About a minute (healthy)   6379/tcp
docker-sandbox-1         langgenius/dify-sandbox:0.2.15              &quot;/entrypoint.sh&quot;          sandbox         2 minutes ago        Up About a minute (healthy)
docker-ssrf_proxy-1      ubuntu/squid:latest                         &quot;sh -c &apos;cp /docker-e…&quot;   ssrf_proxy      2 minutes ago        Up About a minute             3128/tcp
docker-weaviate-1        semitechnologies/weaviate:1.27.0            &quot;/bin/weaviate --hos…&quot;   weaviate        2 minutes ago        Up About a minute
docker-web-1             langgenius/dify-web:1.14.0                  &quot;/bin/sh ./entrypoin…&quot;   web             2 minutes ago        Up About a minute             3000/tcp
docker-worker-1          langgenius/dify-api:1.14.0                  &quot;/bin/bash /entrypoi…&quot;   worker          About a minute ago   Up About a minute             5001/tcp
docker-worker_beat-1     langgenius/dify-api:1.14.0                  &quot;/bin/bash /entrypoi…&quot;   worker_beat     About a minute ago   Up About a minute             5001/tcp
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;访问&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;打开管理员初始化页面以设置管理员账户：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;http://localhost/install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你将看到：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;完成管理员账户设置后，在以下地址登录&lt;code&gt;Dify&lt;/code&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;http://localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip&lt;/p&gt;
&lt;p&gt;关于&lt;code&gt;Dify&lt;/code&gt;其余的配置、升级等其他信息请参考&amp;lt;a href=&quot;https://docs.dify.ai/zh/use-dify/getting-started/introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Dify Docs&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;使用 Dify&lt;/h2&gt;
&lt;h3&gt;配置模型&lt;/h3&gt;
&lt;p&gt;点击右上角的头像，打开&lt;code&gt;设置&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;模型供应商&lt;/code&gt;页面&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里我们以&lt;code&gt;免费&lt;/code&gt;的&lt;code&gt;NVIDIA NIM APIs&lt;/code&gt;为例，点击安装：&lt;/p&gt;
&lt;p&gt;:::note
没有&lt;code&gt;NVIDIA NIM API Key&lt;/code&gt;？自行访问&amp;lt;a href=&quot;https://build.nvidia.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Try NVIDIA NIM APIs&amp;lt;/a&amp;gt;注册一个&lt;code&gt;NVIDIA&lt;/code&gt;账号并获取一个以&lt;code&gt;nvapi-&lt;/code&gt;开头的&lt;code&gt;API Key&lt;/code&gt;
:::&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;添加模型&lt;/code&gt;
&lt;img src=&quot;/images//postdify/postdify05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里我们以&lt;code&gt;Google&lt;/code&gt;的&lt;code&gt;Gemma 4&lt;/code&gt;模型为例：在&lt;code&gt;API Key&lt;/code&gt;填入您的&lt;code&gt;NVIDIA NIM API Key&lt;/code&gt;，在&lt;code&gt;API endpoint中的模型名称&lt;/code&gt;填入&lt;code&gt;google/gemma-4-31b-it&lt;/code&gt;，在&lt;code&gt;API endpoint URL&lt;/code&gt;填入&lt;code&gt;https://integrate.api.nvidia.com/v1&lt;/code&gt;，其他的自行配置：&lt;/p&gt;
&lt;p&gt;:::tip
模型名称需要您在&amp;lt;a href=&quot;https://build.nvidia.com/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Models - Try NVIDIA NIM APIs&amp;lt;/a&amp;gt;页面自行复制（模型链接&lt;code&gt;https://build.nvidia.com/google/gemma-4-31b-it&lt;/code&gt;去掉&lt;code&gt;https://build.nvidia.com/&lt;/code&gt;）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;google/gemma-4-31b-it
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;https://integrate.api.nvidia.com/v1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;更改&lt;code&gt;默认模型设置&lt;/code&gt;，其余的我们稍后再配置：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify07.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;创建工作流&lt;/h3&gt;
&lt;p&gt;回到首页，您可以&lt;code&gt;创建空白应用&lt;/code&gt;也可以&lt;code&gt;从应用模板创建&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify08.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;我们这里自己创建一个简单的聊天机器人：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify09.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;发布&lt;/code&gt;-&lt;code&gt;发布更新&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;运行&lt;/code&gt;，这回在浏览器里打开一个新的窗口:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;效果展示&lt;/h3&gt;
&lt;p&gt;测试一下，效果不错，哈哈😏&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;尾声&lt;/h2&gt;
&lt;p&gt;当然，上面我们展示的只是&lt;code&gt;Dify&lt;/code&gt;最最最简单简单的用法，由于&lt;code&gt;Dify&lt;/code&gt;使用工作流模式，这使得&lt;code&gt;Dify&lt;/code&gt;拥有无限可能（就像&lt;code&gt;Comfy UI&lt;/code&gt;那样），后面的进阶使用方法还请各位自行探索了，哈哈🥰&lt;/p&gt;
&lt;p&gt;:::note[🤔]
为什么我不直接使用&lt;code&gt;NVIDIA NIM&lt;/code&gt;插件？&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images//postdify/postdify13.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;因为我没有在这个插件里面找到添加&lt;code&gt;API Key&lt;/code&gt;的选项🤣
:::&lt;/p&gt;
&lt;p&gt;::::tip[如何压缩虚拟 Docker 的硬盘映像文件🤔]&lt;/p&gt;
&lt;p&gt;:::note
Windows 的 Docker Desktop 基于 WSL2 来运行，所有的 Image、Container 数据都会被放到 WSL2 的虚拟磁盘文件（vhdx）中。而 WSL2 的 vhdx 具有“动态”特性，即当磁盘文件创建时，初始化一个最大的上限容量（默认是 1TB ），当里面数据增加时，vhdx 所占的空间随之增加，直到上限，但当里面的数据被移除时，vhdx 所占的空间并不会随之减小。这导致即使在 Docker 里删除了镜像文件，也无法即时释放磁盘的存储空间。&lt;/p&gt;
&lt;p&gt;参考：&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/wsl/disk-space&quot;&gt;如何管理 WSL 磁盘空间 | Microsoft Learn&lt;/a&gt;
:::&lt;/p&gt;
&lt;p&gt;首先你需要关闭 WSL（如果你开启了 Docker Desktop，或者 Docker Desktop 关闭的时候卡住了，请重启电脑，记得关闭 Docker Desktop 的自启动）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以管理员身份运行终端：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;diskpart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; diskpart

Microsoft DiskPart 版本 10.0.26100.1150

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS11-ADMIN

DISKPART&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输入并执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select vdisk file=&quot;&amp;lt;vhdx文件路径&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Microsoft DiskPart 版本 10.0.26100.1150

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS11-ADMIN

DISKPART&amp;gt;select vdisk file=&quot;E:\DockerDesktopWSL\disk\docker_data.vhdx&quot;

DiskPart 已成功选择虚拟磁盘文件。

DISKPART&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;压缩磁盘（依次执行）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attach vdisk readonly
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;compact vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若遇到报错：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

虚拟磁盘服务错误:
所请求的操作需要以只读方式
连接虚拟磁盘。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;则先分离磁盘文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;detach vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再依次执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attach vdisk readonly
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;compact vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就像这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

虚拟磁盘服务错误:
所请求的操作需要以只读方式
连接虚拟磁盘。

DISKPART&amp;gt; detach vdisk

DiskPart 已成功分离虚拟磁盘文件。

DISKPART&amp;gt; attach vdisk readonly

  100 百分比已完成

DiskPart 已成功连接虚拟磁盘文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后你应该看到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

  100 百分比已完成

DiskPart 已成功压缩虚拟磁盘文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;退出 DiskPart：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;detach vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大功告成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; detach vdisk

DiskPart 已成功分离虚拟磁盘文件。

DISKPART&amp;gt; exit

退出 DiskPart...
PS C:\Users\Admin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时你再去文件资源管理器里看看，你的磁盘空间应该得到了一定的释放&lt;/p&gt;
&lt;p&gt;::::&lt;/p&gt;
</content:encoded></item><item><title>Expressive Code Example</title><link>https://auspiceshirley.dev/posts/expressive-code-example/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/expressive-code-example/</guid><description>由于我自己总是忘记这些代码到底怎么写，干脆水一篇文章……</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note
&lt;code&gt;Fuwari&lt;/code&gt;使用&lt;a href=&quot;https://expressive-code.com&quot;&gt;Expressive Code&lt;/a&gt;来呈现代码块，但是由于我自己总是忘记这些代码到底怎么写，干脆&amp;lt;del&amp;gt;水一篇文章&amp;lt;/del&amp;gt;把它记下来方便查阅
:::&lt;/p&gt;
&lt;p&gt;:::tip
以下是渲染后的结果，原始 Markdown 格式文本在&lt;a href=&quot;#%E5%8E%9F%E5%A7%8B-markdown-%E6%A0%BC%E5%BC%8F%E6%96%87%E6%9C%AC&quot;&gt;文章末尾&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;del&amp;gt;（别问，问就是水字数的）&amp;lt;/del&amp;gt;
:::&lt;/p&gt;
&lt;h2&gt;语法高亮&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/syntax-highlighting/&quot;&gt;Syntax Highlighting - Expressive Code&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;常规语法高亮&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;console.log(&quot;这段代码带有语法高亮！&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;渲染 ANSI 转义序列&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ANSI Colors:
- Regular: [31mRed[0m [32mGreen[0m [33mYellow[0m [34mBlue[0m [35mMagenta[0m [36mCyan[0m
- Bold:    [1;31mRed[0m [1;32mGreen[0m [1;33mYellow[0m [1;34mBlue[0m [1;35mMagenta[0m [1;36mCyan[0m
- Dimmed:  [2;31mRed[0m [2;32mGreen[0m [2;33mYellow[0m [2;34mBlue[0m [2;35mMagenta[0m [2;36mCyan[0m

256 colors (showing colors 160-177):
[38;5;160m160 [38;5;161m161 [38;5;162m162 [38;5;163m163 [38;5;164m164 [38;5;165m165[0m
[38;5;166m166 [38;5;167m167 [38;5;168m168 [38;5;169m169 [38;5;170m170 [38;5;171m171[0m
[38;5;172m172 [38;5;173m173 [38;5;174m174 [38;5;175m175 [38;5;176m176 [38;5;177m177[0m

Full RGB colors:
[38;2;34;139;34mForestGreen - RGB(34, 139, 34)[0m

Text formatting: [1mBold[0m [2mDimmed[0m [3mItalic[0m [4mUnderline[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;编辑器与终端框架&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/frames/&quot;&gt;Editor &amp;amp; Terminal Frames - Expressive Code&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;代码编辑器框架&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;console.log(&quot;标题属性示例&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- src/content/index.html --&amp;gt;
&amp;lt;div&amp;gt;文件名注释示例&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;终端框架&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;此终端框架没有标题&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Write-Output &quot;这个有标题！&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;覆盖框架类型&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;看，没有框架！&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;# 如果不覆盖，这里会显示为终端框架
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;文本与行标记&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/text-markers/&quot;&gt;Text &amp;amp; Line Markers - Expressive Code&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;标记完整行与行范围&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// 第 1 行 - 通过行号定位
// 第 2 行
// 第 3 行
// 第 4 行 - 通过行号定位
// 第 5 行
// 第 6 行
// 第 7 行 - 通过范围“7-8”定位
// 第 8 行 - 通过范围“7-8”定位
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;选择行标记类型（mark、ins、del）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&quot;这一行被标记为删除&quot;);
  // 这一行和下一行被标记为插入
  console.log(&quot;这是第二行插入的内容&quot;);

  return &quot;这一行使用默认的中性标记类型&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;为行标记添加标签&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &quot;string&quot; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;将长标签放在独立行上&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &quot;string&quot; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;使用类似 diff 的语法&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;+这一行将被标记为插入
-这一行将被标记为删除
这是一行普通内容
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+这是一个实际的差异文件
-所有内容将保持不变
不会移除任何空白字符
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;将语法高亮与 diff 式语法结合&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;  function thisIsJavaScript() {
    // 整个代码块都将作为 JavaScript 进行高亮，
    // 并且我们仍然可以向其中添加差异标记！
-   console.log(&apos;要移除的旧代码&apos;)
+   console.log(&apos;崭新闪亮的代码！&apos;)
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;标记行内的单个文本&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  // 标记行内任意给定的文本
  return &quot;支持给定文本的多次匹配&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;正则表达式&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;console.log(&quot;单词 yes 和 yep 将被标记。&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;转义正斜杠&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;Test&quot; &amp;gt; /home/test.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;选择内联标记类型（mark、ins、del）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&quot;这些是插入和删除标记类型&quot;);
  // return 语句使用默认标记类型
  return true;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;自动换行&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/word-wrap/&quot;&gt;Word Wrap - Expressive Code&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;按代码块配置自动换行&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// 启用换行的示例
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// 禁用换行的示例
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置换行行的缩进&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// 启用 preserveIndent 的示例（默认启用）
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// 禁用 preserveIndent 的示例
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;可折叠部分&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/collapsible-sections/&quot;&gt;Collapsible Sections - Expressive Code&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 以下所有样板设置代码将被折叠
import { someBoilerplateEngine } from &quot;@example/some-boilerplate&quot;;
import { evenMoreBoilerplate } from &quot;@example/even-more-boilerplate&quot;;

const engine = someBoilerplateEngine(evenMoreBoilerplate());

// 这部分代码默认可见
engine.doSomething(1, 2, 3, calcFn);

function calcFn() {
  // 你可以有多个可折叠部分
  const a = 1;
  const b = 2;
  const c = a + b;

  // 这部分保持可见
  console.log(`计算结果：${a} + ${b} = ${c}`);
  return c;
}

// 从此处到代码块末尾的所有代码将再次折叠
engine.closeConnection();
engine.freeMemory();
engine.shutdown({ reason: &quot;样板代码示例结束&quot; });
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;行号&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/line-numbers/&quot;&gt;Line Numbers - Expressive Code&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;按代码块显示行号&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// 此代码块将显示行号
console.log(&quot;来自第 2 行的问候！&quot;);
console.log(&quot;我在第 3 行&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// 此代码块已禁用行号
console.log(&quot;你好？&quot;);
console.log(&quot;抱歉，你知道我在哪一行吗？&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;更改起始行号&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;console.log(&quot;来自第 5 行的问候！&quot;);
console.log(&quot;我在第 6 行&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;原始 Markdown 格式文本&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## 语法高亮

[Syntax Highlighting - Expressive Code](https://expressive-code.com/key-features/syntax-highlighting/)

### 常规语法高亮

```js
console.log(&quot;这段代码带有语法高亮！&quot;);
```

### 渲染 ANSI 转义序列

```ansi
ANSI Colors:
- Regular: [31mRed[0m [32mGreen[0m [33mYellow[0m [34mBlue[0m [35mMagenta[0m [36mCyan[0m
- Bold:    [1;31mRed[0m [1;32mGreen[0m [1;33mYellow[0m [1;34mBlue[0m [1;35mMagenta[0m [1;36mCyan[0m
- Dimmed:  [2;31mRed[0m [2;32mGreen[0m [2;33mYellow[0m [2;34mBlue[0m [2;35mMagenta[0m [2;36mCyan[0m

256 colors (showing colors 160-177):
[38;5;160m160 [38;5;161m161 [38;5;162m162 [38;5;163m163 [38;5;164m164 [38;5;165m165[0m
[38;5;166m166 [38;5;167m167 [38;5;168m168 [38;5;169m169 [38;5;170m170 [38;5;171m171[0m
[38;5;172m172 [38;5;173m173 [38;5;174m174 [38;5;175m175 [38;5;176m176 [38;5;177m177[0m

Full RGB colors:
[38;2;34;139;34mForestGreen - RGB(34, 139, 34)[0m

Text formatting: [1mBold[0m [2mDimmed[0m [3mItalic[0m [4mUnderline[0m
```

## 编辑器与终端框架

[Editor &amp;amp; Terminal Frames - Expressive Code](https://expressive-code.com/key-features/frames/)

### 代码编辑器框架

```js title=&quot;my-test-file.js&quot;
console.log(&quot;标题属性示例&quot;);
```

---

```html
&amp;lt;!-- src/content/index.html --&amp;gt;
&amp;lt;div&amp;gt;文件名注释示例&amp;lt;/div&amp;gt;
```

### 终端框架

```bash
echo &quot;此终端框架没有标题&quot;
```

---

```powershell title=&quot;PowerShell 终端示例&quot;
Write-Output &quot;这个有标题！&quot;
```

### 覆盖框架类型

```sh frame=&quot;none&quot;
echo &quot;看，没有框架！&quot;
```

---

```ps frame=&quot;code&quot; title=&quot;PowerShell Profile.ps1&quot;
# 如果不覆盖，这里会显示为终端框架
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail
```

## 文本与行标记

[Text &amp;amp; Line Markers - Expressive Code](https://expressive-code.com/key-features/text-markers/)

### 标记完整行与行范围

```js {1, 4, 7-8}
// 第 1 行 - 通过行号定位
// 第 2 行
// 第 3 行
// 第 4 行 - 通过行号定位
// 第 5 行
// 第 6 行
// 第 7 行 - 通过范围“7-8”定位
// 第 8 行 - 通过范围“7-8”定位
```

### 选择行标记类型（mark、ins、del）

```js title=&quot;line-markers.js&quot; del={2} ins={3-4} {6}
function demo() {
  console.log(&quot;这一行被标记为删除&quot;);
  // 这一行和下一行被标记为插入
  console.log(&quot;这是第二行插入的内容&quot;);

  return &quot;这一行使用默认的中性标记类型&quot;;
}
```

### 为行标记添加标签

```jsx {&quot;1&quot;:5} del={&quot;2&quot;:7-8} ins={&quot;3&quot;:10-12}
// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &quot;string&quot; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
```

### 将长标签放在独立行上

```jsx {&quot;1. 在此处提供 value 属性：&quot;:5-6} del={&quot;2. 移除 disabled 和 active 状态：&quot;:8-10} ins={&quot;3. 添加此代码以在按钮内渲染 children：&quot;:12-15}
// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &quot;string&quot; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
```

### 使用类似 diff 的语法

```diff
+这一行将被标记为插入
-这一行将被标记为删除
这是一行普通内容
```

---

```diff
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+这是一个实际的差异文件
-所有内容将保持不变
不会移除任何空白字符
```

### 将语法高亮与 diff 式语法结合

```diff lang=&quot;js&quot;
  function thisIsJavaScript() {
    // 整个代码块都将作为 JavaScript 进行高亮，
    // 并且我们仍然可以向其中添加差异标记！
-   console.log(&apos;要移除的旧代码&apos;)
+   console.log(&apos;崭新闪亮的代码！&apos;)
  }
```

### 标记行内的单个文本

```js &quot;给定文本&quot;
function demo() {
  // 标记行内任意给定的文本
  return &quot;支持给定文本的多次匹配&quot;;
}
```

### 正则表达式

```ts /ye[sp]/
console.log(&quot;单词 yes 和 yep 将被标记。&quot;);
```

### 转义正斜杠

```sh //ho.*//
echo &quot;Test&quot; &amp;gt; /home/test.txt
```

### 选择内联标记类型（mark、ins、del）

```js &quot;return true;&quot; ins=&quot;已插入&quot; del=&quot;已删除&quot;
function demo() {
  console.log(&quot;这些是插入和删除标记类型&quot;);
  // return 语句使用默认标记类型
  return true;
}
```

## 自动换行

[Word Wrap - Expressive Code](https://expressive-code.com/key-features/word-wrap/)

### 按代码块配置自动换行

```js wrap
// 启用换行的示例
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
```

---

```js wrap=false
// 禁用换行的示例
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
```

### 配置换行行的缩进

```js wrap preserveIndent
// 启用 preserveIndent 的示例（默认启用）
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
```

---

```js wrap preserveIndent=false
// 禁用 preserveIndent 的示例
function getLongString() {
  return &quot;这是一个非常长的字符串，很可能在可用空间内无法完全显示，除非容器非常宽&quot;;
}
```

## 可折叠部分

[Collapsible Sections - Expressive Code](https://expressive-code.com/plugins/collapsible-sections/)

```js collapse={1-5, 12-14, 21-24}
// 以下所有样板设置代码将被折叠
import { someBoilerplateEngine } from &quot;@example/some-boilerplate&quot;;
import { evenMoreBoilerplate } from &quot;@example/even-more-boilerplate&quot;;

const engine = someBoilerplateEngine(evenMoreBoilerplate());

// 这部分代码默认可见
engine.doSomething(1, 2, 3, calcFn);

function calcFn() {
  // 你可以有多个可折叠部分
  const a = 1;
  const b = 2;
  const c = a + b;

  // 这部分保持可见
  console.log(`计算结果：${a} + ${b} = ${c}`);
  return c;
}

// 从此处到代码块末尾的所有代码将再次折叠
engine.closeConnection();
engine.freeMemory();
engine.shutdown({ reason: &quot;样板代码示例结束&quot; });
```

## 行号

[Line Numbers - Expressive Code](https://expressive-code.com/plugins/line-numbers/)

### 按代码块显示行号

```js showLineNumbers
// 此代码块将显示行号
console.log(&quot;来自第 2 行的问候！&quot;);
console.log(&quot;我在第 3 行&quot;);
```

---

```js showLineNumbers=false
// 此代码块已禁用行号
console.log(&quot;你好？&quot;);
console.log(&quot;抱歉，你知道我在哪一行吗？&quot;);
```

### 更改起始行号

```js showLineNumbers startLineNumber=5
console.log(&quot;来自第 5 行的问候！&quot;);
console.log(&quot;我在第 6 行&quot;);
```
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Cloudflare CDN 节点信息展示页</title><link>https://auspiceshirley.dev/posts/cdn-info/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/cdn-info/</guid><description>为您在 Cloudflare 部署的网站添加一个 CDN 节点信息展示页</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;介绍&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;“众所周知”&lt;/strong&gt; 这个博客是基于&lt;code&gt;Cloudflare Pages&lt;/code&gt;构建的，套用了 Cloudflare 的 CDN 服务。
:::tip[什么是 CDN？]
CDN（Content Delivery Network，内容分发网络）是一种分布式网络架构，通过在多个地理位置部署服务器节点，将内容缓存到离用户最近的节点上，从而加速内容的加载速度并提高用户体验。&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;Cloudflare 在全球部署了多个 CDN 节点，我们如何得知当前连接的是哪一个节点呢？🤔&lt;/p&gt;
&lt;p&gt;幸运的是，Cloudflare 提供了一个网关追踪信息的接口&lt;code&gt;/cdn-cgi/trace&lt;/code&gt;，我参考了&amp;lt;a href=&quot;https://blog.isteed.cc/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;Lufs&apos;s Blog&amp;lt;/a&amp;gt;的文章&amp;lt;a href=&quot;https://blog.isteed.cc/post/cloudflare-trace-info/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;在网页展示上 Cloudflare 网关跟踪信息 —— Cloudflare-Trace-Info-on-Web&amp;lt;/a&amp;gt;，受此启发，写了一个&lt;code&gt;JavaScript&lt;/code&gt;脚本来实现这个功能&lt;/p&gt;
&lt;p&gt;效果展示（为保护隐私，已抹除 IP 信息）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postcdn/cdn-info.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;例如，当您访问&amp;lt;a href=&quot;https://blog.auspiceshirley.dev/cdn-cgi/trace&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;https://blog.auspiceshirley.dev/cdn-cgi/trace&amp;lt;/a&amp;gt;时，您将会看到类似以下的信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fl=******
h=blog.auspiceshirley.dev
ip=******
ts=******
visit_scheme=https
uag=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0
colo=SEA
sliver=none
http=http/3
loc=CN
tls=TLSv1.3
sni=encrypted
warp=off
gateway=off
rbi=off
kex=******
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;根据&amp;lt;a href=&quot;https://developers.cloudflare.com/support/troubleshooting/general-troubleshooting/gathering-information-for-troubleshooting-sites/#identify-the-cloudflare-data-center-serving-your-request&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;Cloudflare 文档&amp;lt;/a&amp;gt;，我们得知，其中的&lt;code&gt;colo&lt;/code&gt;字段是离节点最近的机场的&lt;code&gt;IATA&lt;/code&gt;代码&lt;/p&gt;
&lt;p&gt;如何获取机场的&lt;code&gt;IATA&lt;/code&gt;代码所对应的实际地理位置？&lt;/p&gt;
&lt;p&gt;博客作者&lt;code&gt;LufsX&lt;/code&gt;有这样一个项目：&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;LufsX/Cloudflare-Data-Center-IATA-Code-list&quot;}&lt;/p&gt;
&lt;p&gt;我使用了&lt;code&gt;https://github.com/LufsX/Cloudflare-Data-Center-IATA-Code-list/blob/main/cloudflare-iata-full.json&lt;/code&gt;这个文件，但是做了&lt;code&gt;一些修改&lt;/code&gt;，现已部署在&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://cdn.auspiceshirley.dev/cloudflare/cdn-info/cloudflare-iata.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;脚本连接：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://cdn.auspiceshirley.dev/cloudflare/cdn-info/cdn-info.js
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;您可以直接把这个脚本添加到您的网页中。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如何使用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将以下代码添加到网站页面的 &lt;code&gt;&amp;lt;/body&amp;gt;&lt;/code&gt; 标签之前即可：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script src=&quot;https://cdn.auspiceshirley.dev/cloudflare/cdn-info/cdn-info.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
信息页下方的&lt;code&gt;Protected by Cloudflare&lt;/code&gt;图片来源于&amp;lt;a href=&quot;https://www.cloudflare-cn.com/press/press-kit/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&amp;gt;Cloudflare 媒体资料包 | Cloudflare&amp;lt;/a&amp;gt;的&lt;code&gt;Web badges&lt;/code&gt;部分，用于向访客展示您的网站受&lt;code&gt;Cloudflare&lt;/code&gt;保护
:::&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;(function () {
  const ENABLE_SESSION_CHECK = true;

  if (ENABLE_SESSION_CHECK &amp;amp;&amp;amp; sessionStorage.getItem(&quot;__cdn_info_shown&quot;)) {
    return;
  }

  if (ENABLE_SESSION_CHECK) {
    sessionStorage.setItem(&quot;__cdn_info_shown&quot;, &quot;1&quot;);
  }

  if (window.__cdnInfoShown) return;
  window.__cdnInfoShown = true;

  const TRACE_URL = &quot;/cdn-cgi/trace&quot;;
  const IATA_JSON_URL =
    &quot;https://cdn.auspiceshirley.dev/cloudflare/cdn-info/cloudflare-iata.json&quot;;
  const COUNTDOWN_SECONDS = 5; //Seconds
  const REQUEST_TIMEOUT_MS = 4000; //Milliseconds

  const BADGE_IMAGE_PATH =
    &quot;https://cdn.auspiceshirley.dev/cloudflare/web-badges/BDES-5287_ProtectedByCloudflareBadge_web_badges_3.png&quot;;

  function parseTrace(text) {
    const data = {};
    text
      .trim()
      .split(&quot;\n&quot;)
      .forEach((line) =&amp;gt; {
        const idx = line.indexOf(&quot;=&quot;);
        if (idx &amp;gt; 0) {
          const key = line.substring(0, idx);
          const val = line.substring(idx + 1);
          data[key] = val;
        }
      });
    return data;
  }

  function createOverlay() {
    document.body.style.overflow = &quot;hidden&quot;;
    const overlay = document.createElement(&quot;div&quot;);
    overlay.id = &quot;cdn-info-overlay&quot;;
    overlay.innerHTML = ` &amp;lt;style&amp;gt;
    #cdn-info-overlay {
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      display: flex;
      align-items: flex-start;
      justify-content: flex-start;
      padding: 60px 80px;
      box-sizing: border-box;
      z-index: 999999;
      font-family: serif;
      pointer-events: auto;
      user-select: none;
      overflow-y: auto;
      -webkit-overflow-scrolling: touch;
      overscroll-behavior: contain;
      background: rgba(255, 255, 255, 0.8);
      backdrop-filter: blur(20px) saturate(180%);
      -webkit-backdrop-filter: blur(20px) saturate(180%);
      color: rgb(0, 0, 0);
    }

    @media (prefers-color-scheme: dark) {
      #cdn-info-overlay {
        background: rgba(0, 0, 0, 0.8);
        backdrop-filter: blur(20px) saturate(180%);
        -webkit-backdrop-filter: blur(20px) saturate(180%);
        color: rgba(255, 255, 255, 0.8);
      }
    }

    #info-container {
      max-width: 900px;
      width: 100%;
      display: flex;
      flex-direction: column;
    }

    .node-line {
      margin-bottom: 40px;
    }

    .node-label {
      font-size: 20px;
      font-weight: 400;
      letter-spacing: 2px;
      margin-bottom: 8px;
      text-transform: uppercase;
    }

    .node-value {
      font-size: 64px;
      font-weight: 700;
      line-height: 1.2;
      display: flex;
      align-items: baseline;
      flex-wrap: wrap;
      gap: 12px;
    }

    .node-zh {
      font-size: 64px;
      font-weight: 700;
    }

    .node-en {
      font-size: 36px;
      font-weight: 400;
    }

    .info-line {
      margin-bottom: 20px;
      border-bottom: 1px solid;
      padding-bottom: 16px;
      border-bottom-color: rgba(0, 0, 0, 0.2);
    }

    @media (prefers-color-scheme: dark) {
      .info-line {
        border-bottom-color: rgba(255, 255, 255, 0.2);
      }
    }

    .info-label {
      font-size: 14px;
      font-weight: 400;
      letter-spacing: 3px;
      text-transform: uppercase;
      margin-bottom: 6px;
    }

    .info-value {
      font-size: 28px;
      font-weight: 500;
      word-break: break-word;
    }

    .action-bar {
      margin-top: 20px;
      display: flex;
      align-items: center;
      gap: 30px;
    }

    #countdown-tip {
      font-size: 16px;
    }

    #close-btn {
      background: transparent;
      border: none;
      padding: 8px 28px;
      border-radius: 40px;
      font-size: 16px;
      font-weight: 400;
      cursor: pointer;
      transition: all 0.25s ease;
      letter-spacing: 1px;
      font-family: inherit;
      color: inherit;
    }

    #close-btn:hover {
      background: rgba(128, 128, 128, 0.15);
      transform: scale(1.02);
    }

    .cf-footer {
      margin-top: 30px;
      transition: none;
    }

    .cf-footer img {
      height: 100px;
      width: auto;
      display: block;
      filter: none !important;
    }

    .loading-placeholder {
      font-size: 28px;
      margin-top: 40px;
    }

    @media (max-width: 768px) {
      #cdn-info-overlay {
        padding: 30px 25px;
      }
      .node-value {
        font-size: 42px;
      }
      .node-zh {
        font-size: 42px;
      }
      .node-en {
        font-size: 24px;
      }
      .info-value {
        font-size: 22px;
      }
      .action-bar {
        flex-direction: column;
        align-items: flex-start;
        gap: 15px;
      }
    }
    &amp;lt;/style&amp;gt;

    &amp;lt;div id=&quot;info-container&quot;&amp;gt;
      &amp;lt;div id=&quot;content-area&quot; class=&quot;loading-placeholder&quot;&amp;gt;正在获取边缘节点信息...&amp;lt;/div&amp;gt;
      &amp;lt;div class=&quot;action-bar&quot;&amp;gt;
        &amp;lt;span id=&quot;countdown-tip&quot;&amp;gt;${COUNTDOWN_SECONDS} 秒后自动关闭&amp;lt;/span&amp;gt;
        &amp;lt;button id=&quot;close-btn&quot;&amp;gt;关闭&amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class=&quot;cf-footer&quot;&amp;gt;
        &amp;lt;img src=&quot;${BADGE_IMAGE_PATH}&quot; alt=&quot;Protected by Cloudflare&quot;&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    `;
    document.body.appendChild(overlay);
    return {
      overlay,
      contentArea: document.getElementById(&quot;content-area&quot;),
      countdownSpan: document.getElementById(&quot;countdown-tip&quot;),
      closeBtn: document.getElementById(&quot;close-btn&quot;),
    };
  }

  function renderInfo(traceData, iataData) {
    const ip = traceData.ip || &quot;—&quot;;
    const loc = traceData.loc || &quot;—&quot;;
    const tsRaw = traceData.ts;
    const colo = traceData.colo || &quot;—&quot;;
    const h = traceData.h || &quot;—&quot;;

    let timestampDisplay = &quot;—&quot;;
    if (tsRaw) {
      try {
        const tsMs = parseFloat(tsRaw) * 1000;
        const date = new Date(tsMs);
        if (!isNaN(date.getTime())) {
          timestampDisplay = date.toISOString();
        } else {
          timestampDisplay = tsRaw;
        }
      } catch (e) {
        timestampDisplay = tsRaw;
      }
    }

    let placeEn = colo;
    let placeZh = &quot;&quot;;

    if (iataData &amp;amp;&amp;amp; iataData[colo]) {
      placeEn = iataData[colo].place || colo;
      placeZh = iataData[colo].place_zh || &quot;&quot;;
    }

    const nodeDisplayZh = placeZh || &quot;&quot;;
    const nodeDisplayEn = placeEn;

    return `
      &amp;lt;div class=&quot;node-line&quot;&amp;gt;
        &amp;lt;div class=&quot;node-label&quot;&amp;gt;当前 CDN 节点 / Current CDN Node&amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;node-value&quot;&amp;gt;
          &amp;lt;span class=&quot;node-zh&quot;&amp;gt;${nodeDisplayZh || nodeDisplayEn}&amp;lt;/span&amp;gt;
          ${nodeDisplayZh ? `&amp;lt;span class=&quot;node-en&quot;&amp;gt; / ${nodeDisplayEn}&amp;lt;/span&amp;gt;` : &quot;&quot;}
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class=&quot;info-line&quot;&amp;gt;
        &amp;lt;div class=&quot;info-label&quot;&amp;gt;目标主机 / Target Host&amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;info-value&quot;&amp;gt;${h}&amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class=&quot;info-line&quot;&amp;gt;
        &amp;lt;div class=&quot;info-label&quot;&amp;gt;请求时间戳 / Request Timestamp&amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;info-value&quot;&amp;gt;${timestampDisplay}&amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class=&quot;info-line&quot;&amp;gt;
        &amp;lt;div class=&quot;info-label&quot;&amp;gt;请求 IP 地址 / Request IP Address&amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;info-value&quot;&amp;gt;${ip}&amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class=&quot;info-line&quot;&amp;gt;
        &amp;lt;div class=&quot;info-label&quot;&amp;gt;请求位置 / Request Location&amp;lt;/div&amp;gt;
        &amp;lt;div class=&quot;info-value&quot;&amp;gt;${loc}&amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    `;
  }

  function closeOverlay(overlay) {
    document.body.style.overflow = &quot;&quot;;
    if (overlay &amp;amp;&amp;amp; overlay.parentNode) {
      overlay.parentNode.removeChild(overlay);
    }
    window.__cdnInfoShown = false;
  }

  function startCountdown(seconds, countdownSpan, onFinish) {
    let remaining = seconds;
    const update = () =&amp;gt;
      (countdownSpan.textContent = `${remaining} 秒后自动关闭`);
    update();
    const timer = setInterval(() =&amp;gt; {
      remaining--;
      if (remaining &amp;lt;= 0) {
        clearInterval(timer);
        onFinish();
      } else {
        update();
      }
    }, 1000);
    return timer;
  }

  function fetchWithTimeout(url, options, timeoutMs) {
    return Promise.race([
      fetch(url, options),
      new Promise((_, reject) =&amp;gt;
        setTimeout(() =&amp;gt; reject(new Error(&quot;Request timeout&quot;)), timeoutMs),
      ),
    ]);
  }

  async function init() {
    const elements = createOverlay();
    const { overlay, contentArea, countdownSpan, closeBtn } = elements;

    let timer = null;
    let isClosed = false;

    const close = () =&amp;gt; {
      if (isClosed) return;
      isClosed = true;
      if (timer) clearInterval(timer);
      closeOverlay(overlay);
    };

    closeBtn.addEventListener(&quot;click&quot;, close);
    timer = startCountdown(COUNTDOWN_SECONDS, countdownSpan, close);

    try {
      const [traceRes, iataRes] = await Promise.all([
        fetchWithTimeout(TRACE_URL, {}, REQUEST_TIMEOUT_MS),
        fetchWithTimeout(IATA_JSON_URL, {}, REQUEST_TIMEOUT_MS).catch(
          () =&amp;gt; null,
        ),
      ]);

      if (!traceRes.ok)
        throw new Error(`Trace request failed: ${traceRes.status}`);
      const traceText = await traceRes.text();
      const traceData = parseTrace(traceText);

      let iataData = null;
      if (iataRes &amp;amp;&amp;amp; iataRes.ok) {
        iataData = await iataRes.json();
      }

      contentArea.innerHTML = renderInfo(traceData, iataData);
    } catch (error) {
      contentArea.innerHTML = `
        &amp;lt;div style=&quot;font-size: 28px; color: rgba(255,100,100,0.8);&quot;&amp;gt;
          ⚡Error&amp;lt;br&amp;gt;
          &amp;lt;span style=&quot;font-size: 16px; opacity: 0.6;&quot;&amp;gt;${error.message}&amp;lt;/span&amp;gt;
        &amp;lt;/div&amp;gt;
      `;
    }
  }

  init().catch(() =&amp;gt; {});
})();
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;隐私声明&lt;/h2&gt;
&lt;p&gt;本脚本&lt;code&gt;仅在浏览器本地运行&lt;/code&gt;，&lt;code&gt;不会&lt;/code&gt;将从&lt;code&gt;/cdn-cgi/trace&lt;/code&gt;获取的 IP、时间戳等信息发送至任何第三方服务器，&lt;code&gt;请放心使用&lt;/code&gt;。&lt;/p&gt;
</content:encoded></item><item><title>F-Droid 使用指南</title><link>https://auspiceshirley.dev/posts/f-droid/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/f-droid/</guid><description>安装与配置开源应用商店 F-Droid</description><pubDate>Sat, 04 Apr 2026 13:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;div id=&quot;keepandroidopen-banner&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script src=&quot;https://keepandroidopen.org/banner.js?id=keepandroidopen-banner&amp;amp;hidebutton=off&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;:::tip
本文 100% 由人类编写
:::&lt;/p&gt;
&lt;p&gt;:::note[F-Droid 是什么？]
F-Droid 是一个包含各种已验证自由软件 Android 应用的存储库，同时又是一个完备的“应用商店工具箱”，提供设置与运行应用商店所需的全部工具。这是一个属于社区的自由软件项目，由各种各样的参与者开发。同时，提供完整的编译和发布工具，可用于管理应用源代码至发布包流程。
:::&lt;/p&gt;
&lt;h2&gt;下载&lt;/h2&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;F-Dorid&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-gitlab.png&quot; alt=&quot;Get it on GitLab&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://gitlab.com/fdroid/fdroidclient/-/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitLab&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-fdroid.png&quot; alt=&quot;Get it on F-Droid&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://cloudflare.f-droid.org/packages/org.fdroid.fdroid&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on F-Droid（Mirror）&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
:::&lt;/p&gt;
&lt;h2&gt;安装&lt;/h2&gt;
&lt;p&gt;找到你下载的APK文件，然后继续与您的操作系统“斗智斗勇”🙏&lt;/p&gt;
&lt;h2&gt;配置&lt;/h2&gt;
&lt;p&gt;:::tip
南京大学开源镜像站&lt;code&gt;F-Droid&lt;/code&gt;软件仓库帮助链接：&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;https://help.mirror.nju.edu.cn/fdroid/?mirror=NJU&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;软件仓库 - MirrorZ Help&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;存储库链接：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://mirror.nju.edu.cn/fdroid/repo/?fingerprint=43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid01.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 1&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;打开设置&amp;lt;/br&amp;gt;软件顶部的横幅详见：&amp;lt;a href=&quot;https://keepandroidopen.org/zh-CN/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Keep Android Open&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid02.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击&amp;lt;code&amp;gt;储存库&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid03.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 3&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;授予&amp;lt;/code&amp;gt;通知权限&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid04.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 4&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击“+”按钮添加储存库&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid05.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 5&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;手动输入仓库 URL&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid06.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 6&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;在这里粘贴&amp;lt;code&amp;gt;南京大学开源镜像站&amp;lt;/code&amp;gt;的&amp;lt;code&amp;gt;F-Droid&amp;lt;/code&amp;gt;储存库链接，然后点击&amp;lt;code&amp;gt;添加&amp;lt;/code&amp;gt;&amp;lt;/br&amp;gt;这里我使用的输入法是开源的&amp;lt;code&amp;gt;小企鹅输入法&amp;lt;/code&amp;gt;（&amp;lt;a href=&quot;https://github.com/fcitx5-android/fcitx5-android&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Fcitx5-Android&amp;lt;/a&amp;gt;），可以最大化地&amp;lt;code&amp;gt;保护您的隐私&amp;lt;/code&amp;gt;（毕竟它都没有联网的权限，您的数据是完全保存在本地的），同样可以在&amp;lt;code&amp;gt;F-Droid&amp;lt;/code&amp;gt;下载安装&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid07.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 7&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击&amp;lt;code&amp;gt;添加镜像&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid08.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 8&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击这里进入&amp;lt;code&amp;gt;储存库详情&amp;lt;/code&amp;gt;，注意&amp;lt;code&amp;gt;不是&amp;lt;/code&amp;gt;右边那个开关按钮&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid09.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 9&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;禁用&amp;lt;code&amp;gt;所有的&amp;lt;/code&amp;gt;官方镜像（因为连接缓慢）&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid10.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 10&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;只保留&amp;lt;code&amp;gt;这一个&amp;lt;/code&amp;gt;用户镜像&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid11.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 11&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;耐心等待&amp;lt;/code&amp;gt;储存库完成更新，这是更新完成后的主界面&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid12.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 12&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;你现在可以使用&amp;lt;code&amp;gt;F-Droid&amp;lt;/code&amp;gt;安装开源&amp;lt;code&amp;gt;Android&amp;lt;/code&amp;gt;软件了&amp;lt;/br&amp;gt;比如&amp;lt;code&amp;gt;小企鹅输入法&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid13.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 13&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;为了能让&amp;lt;code&amp;gt;F-Droid&amp;lt;/code&amp;gt;正常安装软件，你可能需要授予&amp;lt;code&amp;gt;F-Droid&amp;lt;/code&amp;gt;安装软件的权限&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postfdroid/fdroid14.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 14&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;无视风险，继续安装&amp;lt;/code&amp;gt;&amp;lt;/br&amp;gt;不过即使授予此权限，在&amp;lt;code&amp;gt;F-Droid&amp;lt;/code&amp;gt;安装软件的时候，你可能还需要与您的&amp;lt;code&amp;gt;非原生 Android&amp;lt;/code&amp;gt;操作系统“斗智斗勇”&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
/&lt;em&gt;img {
border-radius: 0 !important;
}&lt;/em&gt;/&lt;/p&gt;
&lt;p&gt;.resource-section {
margin-bottom: 3rem;
}&lt;/p&gt;
&lt;p&gt;.resources-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.resources-grid {
grid-template-columns: 1fr;
gap: 1rem;
}
}&lt;/p&gt;
&lt;p&gt;.resource-card {
display: flex;
flex-direction: column;&lt;br /&gt;
padding: 1.25rem;
background-color: var(--color-bg-card);
border: 1px solid var(--color-border);
border-radius: 10px;
transition: all 0.3s ease;
text-decoration: none;
color: inherit;
overflow: hidden;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
border-color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;.resource-icon {
width: 100%;
aspect-ratio: 646 / 250;&lt;br /&gt;
margin-right: 0;&lt;br /&gt;
margin-bottom: 1.25rem;&lt;br /&gt;
/_background-color: #f0f2f5; _/
border-radius: 8px;
overflow: hidden;&lt;br /&gt;
display: flex;
align-items: center;
justify-content: center;
}&lt;/p&gt;
&lt;p&gt;.resource-icon img {
width: 100%;
height: 100%;
object-fit: cover;&lt;br /&gt;
display: block;
border-radius: 8px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-content {
flex: 1;
min-width: 0;
text-align: left;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-title {
margin: 0 0 0.25rem 0;
font-size: 1.2rem;
font-weight: 600;
text-align: center;
}&lt;/p&gt;
&lt;p&gt;.resource-title a {
color: var(--color-heading);
text-decoration: none;
transition: color 0.2s ease;
display: inline-flex;
align-items: center;
gap: 6px;
}&lt;/p&gt;
&lt;p&gt;.resource-title a:hover {
color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 480px) {
.resource-card {
padding: 1rem;
}
.resource-icon {
margin-bottom: 1rem;
}
.resource-title {
font-size: 1.1rem;
}
}&lt;/p&gt;
&lt;p&gt;.alternating-layout {
display: flex;
flex-direction: column;
gap: 3rem;&lt;br /&gt;
margin: 2rem 0;
}&lt;/p&gt;
&lt;p&gt;.alternating-item {
display: flex;
align-items: center;&lt;br /&gt;
gap: 2rem;
background: transparent;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image {
flex: 0 0 30%;&lt;br /&gt;
max-width: 30%;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image img {
width: 100%;
height: auto;
display: block;
border-radius: 12px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-text {
flex: 1;
text-align: center;
}&lt;/p&gt;
&lt;p&gt;.alternating-item:nth-child(even) {
flex-direction: row-reverse;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.alternating-item,
.alternating-item:nth-child(even) {
flex-direction: column;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image {
flex: 0 0 auto;
max-width: 80%;&lt;br /&gt;
width: 80%;
margin-bottom: 1rem;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-text {
text-align: center;
}
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>AdAway 使用指南</title><link>https://auspiceshirley.dev/posts/adaway/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/adaway/</guid><description>使用 AdAway 拦截您的 Android 设备上烦人的广告与追踪器</description><pubDate>Sat, 04 Apr 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::tip
本文除&lt;code&gt;CSS&lt;/code&gt;代码外 100% 由人类编写
:::&lt;/p&gt;
&lt;p&gt;:::note[AdAway 是什么]
AdAway 是一个适用于 Android 设备的 Hosts 广告拦截器
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;AdAway/AdAway&quot;}&lt;/p&gt;
&lt;h2&gt;下载&lt;/h2&gt;
&lt;p&gt;:::note
从哪里下载&lt;code&gt;AdAway&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;&amp;lt;section class=&quot;resource-section&quot;&amp;gt;
&amp;lt;div class=&quot;resources-grid&quot;&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://github.com/AdAway/AdAway/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on GitHub&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-adaway.png&quot; alt=&quot;Get it on AdAway&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://app.adaway.org/adaway.apk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on AdAway&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-fdroid.png&quot; alt=&quot;Get it on F-Droid&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;a href=&quot;https://cloudflare.f-droid.org/packages/org.adaway&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Get it on F-Droid（Mirror）&amp;lt;/a&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-card&quot;&amp;gt;
&amp;lt;div class=&quot;resource-icon&quot;&amp;gt;
&amp;lt;img src=&quot;/images/get/get-it-on-google-play.png&quot; alt=&quot;Get it on Google Play&quot; width=&quot;48&quot; height=&quot;48&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;resource-content&quot;&amp;gt;
&amp;lt;h3 class=&quot;resource-title&quot;&amp;gt;
&amp;lt;span&amp;gt;Get it on Google Play&amp;lt;/span&amp;gt;
&amp;lt;/h3&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;&lt;/p&gt;
&lt;p&gt;推荐从&lt;code&gt;F-Droid&lt;/code&gt;下载（上面给的链接是&lt;code&gt;F-Droid&lt;/code&gt;官方使用&lt;code&gt;Cloudflare Workers&lt;/code&gt;部署的镜像站点&lt;code&gt;https://cloudflare.f-droid.org&lt;/code&gt; ），下期更新&amp;lt;a href=&quot;/posts/f-droid/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;F-Droid 使用教程&amp;lt;/a&amp;gt;&lt;/p&gt;
&lt;p&gt;去广告应用早就从 Google Play 下架了（2013年），原因“懂的都懂”
:::&lt;/p&gt;
&lt;h2&gt;安装&lt;/h2&gt;
&lt;p&gt;:::warning&lt;/p&gt;
&lt;p&gt;首先，你需要打开您的&lt;code&gt;Android&lt;/code&gt;设备安&lt;code&gt;装第三方来源软件&lt;/code&gt;的开关，然后在一大堆“安全警告”里面找到&lt;code&gt;真正的安装按钮&lt;/code&gt;……祝各位好运🙏&lt;/p&gt;
&lt;p&gt;如果您的设备出现各种报毒并试图阻拦您安装&lt;code&gt;AdAway&lt;/code&gt;，请无视
:::&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AdAway&lt;/code&gt;好久没更新了，截至&lt;code&gt;2026/04&lt;/code&gt;最新的版本依然是&lt;code&gt;2024/10/27&lt;/code&gt;发布的&lt;code&gt;6.1.4&lt;/code&gt;版本&lt;/p&gt;
&lt;p&gt;文件哈希值：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sha256:09F8E1528A53E5FFAD59E57A174E90D4E10C5092BF4F6A60AB6594F046614417
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;VirusTotal 完整扫描结果截图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postadaway/virustotal.com.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway00.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;风险？病毒？&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;这个软件哪来的风险？😂&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;&lt;/p&gt;
&lt;p&gt;如果您在“重重阻拦”中成功安装了&lt;code&gt;AdAway&lt;/code&gt;，请移步至下一步。如果您不知道如何安装，请自行寻找教程🙏&lt;/p&gt;
&lt;h2&gt;配置&lt;/h2&gt;
&lt;p&gt;:::caution
不同厂商的 Android 设备的&lt;code&gt;操作逻辑&lt;/code&gt;和&lt;code&gt;相关设置&lt;/code&gt;存在&lt;code&gt;不同&lt;/code&gt;，请以&lt;code&gt;您的设备&lt;/code&gt;为准，以下步骤&lt;code&gt;仅供参考&lt;/code&gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway01.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 1&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;选择&amp;lt;code&amp;gt;基于 VPN 的广告屏蔽&amp;lt;/code&amp;gt;（您的手机能&amp;lt;code&amp;gt;Root&amp;lt;/code&amp;gt;吗？你就想选&amp;lt;code&amp;gt;Root模式&amp;lt;/code&amp;gt;？）&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway02.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 2&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;在弹出的窗口中点击&amp;lt;code&amp;gt;确定&amp;lt;/code&amp;gt;安装&amp;lt;code&amp;gt;VPN 配置文件&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway03.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 3&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;耐心等待初始化完成&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway04.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 4&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;允许通知（给予&amp;lt;code&amp;gt;AdAway&amp;lt;/code&amp;gt;发送通知的权限）&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway05.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 5&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;初始化完成，点击&amp;lt;code&amp;gt;前进&amp;lt;/code&amp;gt;进入下一步&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway06.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 6&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;不推荐&amp;lt;/code&amp;gt;启用遥测，点击&amp;lt;code&amp;gt;完成&amp;lt;/code&amp;gt;进入主界面&amp;lt;/br&amp;gt;如果您有&amp;lt;code&amp;gt;PayPal&amp;lt;/code&amp;gt;账户的话，您可以考虑赞助&amp;lt;code&amp;gt;AdAway&amp;lt;/code&amp;gt;的作者，当然，这不是强制的&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway07.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 7&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击左下角打开菜单选项&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway08.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 8&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;进入&amp;lt;code&amp;gt;首选项&amp;lt;/code&amp;gt;（设置）&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway09.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 9&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;启用&amp;lt;code&amp;gt;IPv6&amp;lt;/code&amp;gt;支持&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway10.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 10&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;启用&amp;lt;code&amp;gt;监视连接&amp;lt;/code&amp;gt;，防止 VPN 断连&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway11.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 11&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击这里，打开&amp;lt;code&amp;gt;Hosts 配置&amp;lt;/code&amp;gt;界面&amp;lt;/br&amp;gt;提示：界面下方中间的红色按钮是&amp;lt;code&amp;gt;启动和暂停&amp;lt;/code&amp;gt;按钮&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway12.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 12&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;点击 “+” 按钮，添加来源&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
需要额外添加的 Hosts 来源：&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;hagezi/dns-blocklists&quot;}
::github{repo=&quot;217heidai/adblockfilters&quot;}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/hosts/ultimate.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里我用的是&lt;code&gt;DNS Blocklists&lt;/code&gt;的&lt;code&gt;Multi ULTIMATE&lt;/code&gt;版（激进防护）&lt;/p&gt;
&lt;p&gt;:::tip
Multi ULTIMATE - Aggressive protection&lt;/p&gt;
&lt;p&gt;Ultimate Sweeper - Strictly cleans the Internet and protects your privacy! Blocks Ads, Affiliate, Tracking, Metrics, Telemetry, Phishing, Malware, Scam, Fake, Cryptojacking and other &quot;Crap&quot;.
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://gcore.jsdelivr.net/gh/217heidai/adblockfilters@main/rules/adblockhosts.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;div class=&quot;alternating-layout&quot;&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway13.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 13&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;按照提示填写，如果您觉得手动填写比较麻烦的话，您可以在&amp;lt;code&amp;gt;文章末尾处&amp;lt;/code&amp;gt;找到我正在使用的配置的备份文件（JSON 格式）&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway14.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 14&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;配置好并更新后的 Hosts 来源界面&amp;lt;/br&amp;gt;&amp;lt;code&amp;gt;下载配置文件&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;检查配置文件更新&amp;lt;/code&amp;gt;的按钮在主界面上自己找一下&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway15.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 15&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;建议给予&amp;lt;code&amp;gt;AdAway&amp;lt;/code&amp;gt;自启动权限&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway16.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 16&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;为了能让&amp;lt;code&amp;gt;AdAway&amp;lt;/code&amp;gt;在后台持续运行，需要&amp;lt;code&amp;gt;忽略电源优化&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;alternating-item&quot;&amp;gt;
&amp;lt;div class=&quot;item-image&quot;&amp;gt;
&amp;lt;img src=&quot;/images/postadaway/adaway17.jpg&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;item-text&quot;&amp;gt;
&amp;lt;h3&amp;gt;Step - 17&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;如果您的设备有这个设置的话，建议将这个按钮打开，以便始终与&amp;lt;code&amp;gt;AdAway&amp;lt;/code&amp;gt;的&amp;lt;code&amp;gt;本地 VPN&amp;lt;/code&amp;gt;保持连接&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;这是我正在使用的&lt;code&gt;Hosts来源&lt;/code&gt;的&lt;code&gt;备份文件&lt;/code&gt;，复制下来，保存成&lt;code&gt;JSON&lt;/code&gt;文件，导入&lt;code&gt;AdAway&lt;/code&gt;即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
    &quot;sources&quot;: [
        {
            &quot;label&quot;: &quot;AdAway 官方 hosts&quot;,
            &quot;url&quot;: &quot;https:\/\/adaway.org\/hosts.txt&quot;,
            &quot;enabled&quot;: true,
            &quot;allow&quot;: false,
            &quot;redirect&quot;: false
        },
        {
            &quot;label&quot;: &quot;AdBlock DNS Filters&quot;,
            &quot;url&quot;: &quot;https:\/\/gcore.jsdelivr.net\/gh\/217heidai\/adblockfilters@main\/rules\/adblockhosts.txt&quot;,
            &quot;enabled&quot;: true,
            &quot;allow&quot;: false,
            &quot;redirect&quot;: false
        },
        {
            &quot;label&quot;: &quot;DNS Blocklists Ultimate&quot;,
            &quot;url&quot;: &quot;https:\/\/cdn.jsdelivr.net\/gh\/hagezi\/dns-blocklists@latest\/hosts\/ultimate.txt&quot;,
            &quot;enabled&quot;: true,
            &quot;allow&quot;: false,
            &quot;redirect&quot;: false
        },
        {
            &quot;label&quot;: &quot;Pete Lowe blocklist hosts&quot;,
            &quot;url&quot;: &quot;https:\/\/pgl.yoyo.org\/adservers\/serverlist.php?hostformat=hosts&amp;amp;showintro=0&amp;amp;mimetype=plaintext&quot;,
            &quot;enabled&quot;: true,
            &quot;allow&quot;: false,
            &quot;redirect&quot;: false
        },
        {
            &quot;label&quot;: &quot;StevenBlack Unified hosts&quot;,
            &quot;url&quot;: &quot;https:\/\/raw.githubusercontent.com\/StevenBlack\/hosts\/master\/hosts&quot;,
            &quot;enabled&quot;: true,
            &quot;allow&quot;: false,
            &quot;redirect&quot;: false
        }
    ],
    &quot;blocked&quot;: [],
    &quot;allowed&quot;: [],
    &quot;redirected&quot;: []
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
&lt;code&gt;AdAway&lt;/code&gt;会在&lt;code&gt;控制中心&lt;/code&gt;注册一个快捷按钮，您可以添加这个按钮，以便于在&lt;code&gt;AdAway&lt;/code&gt;意外退出的时候快速重新启动
:::&lt;/p&gt;
&lt;h2&gt;说明&lt;/h2&gt;
&lt;p&gt;理论上导入&lt;code&gt;AdAway&lt;/code&gt;的&lt;code&gt;700000+&lt;/code&gt;条有效规则能拦截绝大部分广告和追踪器（比如“摇一摇”等及其恶心的广告），但并不能保证&lt;code&gt;100%&lt;/code&gt;的准确性，部分顽固广告可能难以准确拦截&lt;/p&gt;
&lt;p&gt;建议在启用&lt;code&gt;AdAway&lt;/code&gt;后删除其他软件的缓存文件，以删除被缓存的广告，其他问题详见软件内的&lt;code&gt;帮助与提示&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
/&lt;em&gt;img {
border-radius: 0 !important;
}&lt;/em&gt;/&lt;/p&gt;
&lt;p&gt;.resource-section {
margin-bottom: 3rem;
}&lt;/p&gt;
&lt;p&gt;.resources-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.resources-grid {
grid-template-columns: 1fr;
gap: 1rem;
}
}&lt;/p&gt;
&lt;p&gt;.resource-card {
display: flex;
flex-direction: column;&lt;br /&gt;
padding: 1.25rem;
background-color: var(--color-bg-card);
border: 1px solid var(--color-border);
border-radius: 10px;
transition: all 0.3s ease;
text-decoration: none;
color: inherit;
overflow: hidden;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
border-color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;.resource-icon {
width: 100%;
aspect-ratio: 646 / 250;&lt;br /&gt;
margin-right: 0;&lt;br /&gt;
margin-bottom: 1.25rem;&lt;br /&gt;
/*background-color: #f0f2f5; */
border-radius: 8px;
overflow: hidden;&lt;br /&gt;
display: flex;
align-items: center;
justify-content: center;
}&lt;/p&gt;
&lt;p&gt;.resource-icon img {
width: 100%;
height: 100%;
object-fit: cover;&lt;br /&gt;
display: block;
border-radius: 8px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-content {
flex: 1;
min-width: 0;
text-align: left;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.resource-title {
margin: 0 0 0.25rem 0;
font-size: 1.2rem;
font-weight: 600;
text-align: center;
}&lt;/p&gt;
&lt;p&gt;.resource-title a {
color: var(--color-heading);
text-decoration: none;
transition: color 0.2s ease;
display: inline-flex;
align-items: center;
gap: 6px;
}&lt;/p&gt;
&lt;p&gt;.resource-title a:hover {
color: var(--color-primary);
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 480px) {
.resource-card {
padding: 1rem;
}
.resource-icon {
margin-bottom: 1rem;
}
.resource-title {
font-size: 1.1rem;
}
}&lt;/p&gt;
&lt;p&gt;.alternating-layout {
display: flex;
flex-direction: column;
gap: 3rem;&lt;br /&gt;
margin: 2rem 0;
}&lt;/p&gt;
&lt;p&gt;.alternating-item {
display: flex;
align-items: center;&lt;br /&gt;
gap: 2rem;
background: transparent;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image {
flex: 0 0 30%;&lt;br /&gt;
max-width: 30%;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image img {
width: 100%;
height: auto;
display: block;
border-radius: 12px;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-text {
flex: 1;
text-align: center;
}&lt;/p&gt;
&lt;p&gt;.alternating-item:nth-child(even) {
flex-direction: row-reverse;
}&lt;/p&gt;
&lt;p&gt;@media (max-width: 768px) {
.alternating-item,
.alternating-item:nth-child(even) {
flex-direction: column;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-image {
flex: 0 0 auto;
max-width: 80%;&lt;br /&gt;
width: 80%;
margin-bottom: 1rem;
}&lt;/p&gt;
&lt;p&gt;.alternating-item .item-text {
text-align: center;
}
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Public DNS Server List</title><link>https://auspiceshirley.dev/posts/public-dns-server-list/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/public-dns-server-list/</guid><description>公共DNS服务器列表</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::tip
本文内容来源于互联网，已验证其准确性。对于有多个&lt;code&gt;DoH&lt;/code&gt;和&lt;code&gt;DoT&lt;/code&gt;的，这里只选取其中一个
:::&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;Cloudflare DNS(1.1.1.1)&lt;/code&gt;&lt;/h2&gt;
&lt;h3&gt;标准&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;1.1.1.1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;1.0.0.1
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Ipv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:4700::1111
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:4700::1001
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns.cloudflare.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://one.one.one.one
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;仅屏蔽恶意软件&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;1.1.1.2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;1.0.0.2
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:4700::1112
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:4700::1002
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://security.cloudflare-dns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://security.cloudflare-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;屏蔽恶意软件和成人内容&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;1.1.1.3
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;1.0.0.3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:4700::1113
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2606:4700:4700::1003
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://family.cloudflare-dns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://family.cloudflare-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;Google DNS&lt;/code&gt;&lt;/h2&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;8.8.8.8
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;8.8.4.4
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2001:4860:4860::8888
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2001:4860:4860::8844
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns.google/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.google
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;Quad9 DNS&lt;/code&gt;&lt;/h2&gt;
&lt;h3&gt;标准&lt;/h3&gt;
&lt;p&gt;屏蔽恶意软件，DNSSEC 验证（这是最常见的配置）&lt;/p&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;9.9.9.9
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;149.112.112.112
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2620:fe::fe
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2620:fe::9
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns.quad9.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.quad9.net
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;ECS 支持&lt;/h3&gt;
&lt;p&gt;屏蔽恶意软件、DNSSEC 验证、启用 ECS&lt;/p&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;9.9.9.11
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;149.112.112.11
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2620:fe::11
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2620:fe::fe:11
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns11.quad9.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns11.quad9.net
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;未加密(不推荐)&lt;/h3&gt;
&lt;p&gt;无恶意软件阻断，无 DNSSEC 验证（仅限专家使用！）&lt;/p&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;9.9.9.10
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;149.112.112.10
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2620:fe::10
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2620:fe::fe:10
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns10.quad9.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns10.quad9.net
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;DNS.SB&lt;/code&gt;&lt;/h2&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;185.222.222.222
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;45.11.45.11
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a09::
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a11::
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://doh.dns.sb/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.sb
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;Cisco OpenDNS&lt;/code&gt;&lt;/h2&gt;
&lt;h3&gt;标准&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;208.67.222.222
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;208.67.220.220
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2620:119:35::35
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2620:119:53::53
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://doh.opendns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.opendns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;FamilyShield&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;208.67.222.123
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;208.67.220.123
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://doh.familyshield.opendns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://familyshield.opendns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Sandbox&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;208.67.222.2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;208.67.220.2
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2620:0:ccc::2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2620:0:ccd::2
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://doh.sandbox.opendns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://sandbox.opendns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;Yandex DNS&lt;/code&gt;&lt;/h2&gt;
&lt;h3&gt;Basic&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;77.88.8.8
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;77.88.8.1
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a02:6b8::feed:0ff
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a02:6b8:0:1::feed:0ff
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://common.dot.dns.yandex.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://common.dot.dns.yandex.net
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Safe&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;77.88.8.88
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;77.88.8.2
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a02:6b8::feed:bad
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a02:6b8:0:1::feed:bad
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://safe.dot.dns.yandex.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://safe.dot.dns.yandex.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Family&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;77.88.8.3
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;77.88.8.7
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a02:6b8::feed:a11
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a02:6b8:0:1::feed:a11
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://family.dot.dns.yandex.net/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://family.dot.dns.yandex.net
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;AdGuard DNS&lt;/code&gt;&lt;/h2&gt;
&lt;h3&gt;默认&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;94.140.14.14
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;94.140.15.15
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a10:50c0::ad1:ff
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a10:50c0::ad2:ff
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns.adguard-dns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.adguard-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoQ&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;quic://dns.adguard-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;家庭保护&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;94.140.14.15
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;94.140.15.16
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a10:50c0::bad1:ff
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a10:50c0::bad2:ff
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://family.adguard-dns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://family.adguard-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoQ&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;quic://family.adguard-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;无过滤&lt;/h3&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;94.140.14.140
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;94.140.14.141
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a10:50c0::bad1:ff
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a10:50c0::bad2:ff
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://unfiltered.adguard-dns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://unfiltered.adguard-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoQ&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;quic://unfiltered.adguard-dns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;DNSGuard&lt;/code&gt;&lt;/h2&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;62.192.153.242
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;62.192.153.243
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2a0c:4ac1:29::2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2a0c:4ac1:29::3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns.dnsguard.pub/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.dnsguard.pub
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoQ&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;quic://dns.dnsguard.pub
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;阿里公共 DNS&lt;/code&gt;&lt;/h2&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;223.5.5.5
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;223.6.6.6
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;2400:3200::1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;2400:3200:baba::1
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://dns.alidns.com/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dns.alidns.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoQ&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;quic://dns.alidns.com:853
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;&lt;code&gt;DNSPod Public DNS+&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;(腾讯 DNS)&lt;/p&gt;
&lt;h4&gt;IPv4&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;119.29.29.29
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;IPv6&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;119.29.29.29
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://doh.pub/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoH (国密)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;https://sm2.doh.pub/dns-query
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;DoT&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;tls://dot.pub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
code{
text-align: center !important;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>IndexTTS-2 本地部署指南</title><link>https://auspiceshirley.dev/posts/indextts2/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/indextts2/</guid><description>在具备 NIVIDIA GPU 的 Windows 系统的计算机上部署 IndexTTS-2 模型（包含通过 WSL 部署）</description><pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note
本文旨在向你介绍如何在具备&lt;code&gt;NIVIDIA GPU&lt;/code&gt;的&lt;code&gt;Windows&lt;/code&gt;系统的计算机上部署 IndexTTS-2 模型（包含通过&lt;code&gt;WSL&lt;/code&gt;部署）
:::&lt;/p&gt;
&lt;p&gt;:::tip
本文使用 AI 辅助翻译，其余部分100%由人类编写&lt;/p&gt;
&lt;p&gt;这篇文章非常长，请耐心阅读
:::&lt;/p&gt;
&lt;p&gt;:::caution
以下步骤必须严格遵守，否则报错会让你崩溃（别问我怎么知道的），所有软件的安装位置请自行决定，建议安装到除 C 盘以外的磁盘&lt;/p&gt;
&lt;p&gt;如有条件（希望您的&lt;code&gt;Windows&lt;/code&gt;版本不是&lt;code&gt;家庭版&lt;/code&gt;），建议你通过&lt;code&gt;WSL&lt;/code&gt;部署（&lt;code&gt;Windows&lt;/code&gt;系统兼容性堪忧），&lt;a href=&quot;/posts/indextts2/#wsl-%E9%83%A8%E7%BD%B2&quot;&gt;点击这里&lt;/a&gt;跳转到&lt;code&gt;WSL部署&lt;/code&gt;（强烈推荐）
:::&lt;/p&gt;
&lt;h2&gt;安装 UV&lt;/h2&gt;
&lt;p&gt;:::note[什么是 UV]
uv 是由 Astral 公司开发的一款 Rust 编写的 Python 包管理器和环境管理器，它的主要目标是提供比现有工具快 10-100 倍的性能，同时保持简单直观的用户体验。&lt;/p&gt;
&lt;p&gt;uv 可以替代 pip、virtualenv、pip-tools 等工具，提供依赖管理、虚拟环境创建、Python 版本管理等一站式服务。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;astral-sh/uv&quot;}&lt;/p&gt;
&lt;h3&gt;更改 UV 安装位置（建议）&lt;/h3&gt;
&lt;p&gt;UV 又是一个默认安装在 C 盘的小软件……这里建议通过&lt;code&gt;PowerShell&lt;/code&gt;独立安装而不是通过&lt;code&gt;pip&lt;/code&gt;安装，方便全局使用&lt;/p&gt;
&lt;p&gt;官方给的安装命令是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -ExecutionPolicy ByPass -c &quot;irm https://astral.sh/uv/install.ps1 | iex&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;略做修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -ExecutionPolicy ByPass -c {$env:UV_INSTALL_DIR = &quot;D:\uv&quot;;irm https://astral.sh/uv/install.ps1 | iex}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将&lt;code&gt;D:\uv&lt;/code&gt;改为你实际需要安装的位置&lt;/p&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\Admin&amp;gt; powershell -ExecutionPolicy ByPass -c {$env:UV_INSTALL_DIR = &quot;D:\uv&quot;;irm https://astral.sh/uv/install.ps1 | iex}
Downloading uv 0.10.4 (x86_64-pc-windows-msvc)
Installing to D:\uv
  uv.exe
  uvx.exe
  uvw.exe
everything&apos;s installed!

To add D:\uv to your PATH, either restart your shell or run:

    set Path=D:\uv;%Path%   (cmd)
    $env:Path = &quot;D:\uv;$env:Path&quot;   (powershell)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;添加环境变量&lt;/h3&gt;
&lt;p&gt;终端中输出的指令（如下）执行后只对当前会话有效，永久修改环境变量的命令有点长，还不如手动添加&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;To add D:\uv to your PATH, either restart your shell or run:

    set Path=D:\uv;%Path%   (cmd)
    $env:Path = &quot;D:\uv;$env:Path&quot;   (powershell)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将&lt;code&gt;D:\uv&lt;/code&gt;添加到&lt;code&gt;系统Path环境变量&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;code&gt;UV_CACHE_DIR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;D:\uv\cache&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;UV_TOOL_DIR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;D:\uv\tools&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;UV_PYTHON_INSTALL_DIR&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;D:\uv\python&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;重启终端&lt;/code&gt;，依次执行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv --version
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;uv python dir
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;uv cache dir
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;uv tool dir
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;验证安装以及目录更改是否成功，输出示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\Admin&amp;gt; uv --version
uv 0.10.4 (079e3fd05 2026-02-17)
PS C:\Users\Admin&amp;gt; uv python dir
D:\uv\python
PS C:\Users\Admin&amp;gt; uv cache dir
D:\uv\cache
PS C:\Users\Admin&amp;gt; uv tool dir
D:\uv\tools
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装 Git&lt;/h2&gt;
&lt;p&gt;:::note[什么是 Git]
Git 是一个免费且开源的分布式版本控制系统，旨在快速高效地处理从小型到非常大型的项目，官网：&lt;a href=&quot;https://git-scm.com&quot;&gt;https://git-scm.com&lt;/a&gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[什么是 Git LFS]
GGit LFS（Git Large File Storage）是一个用于用 Git 管理大型文件的命令行扩展和规范，官网：&lt;a href=&quot;https://git-lfs.com&quot;&gt;https://git-lfs.com&lt;/a&gt;
:::&lt;/p&gt;
&lt;p&gt;:::note
目前&lt;code&gt;Git LFS&lt;/code&gt;已经集成在了&lt;code&gt;Git for Windows&lt;/code&gt;中，直接下载和使用最新版本的 Windows Git 即可，当然，你如果想单独安装&lt;code&gt;Git LFS&lt;/code&gt;也是可以的
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;git/git&quot;}
::github{repo=&quot;git-for-windows/git&quot;}
::github{repo=&quot;git-lfs/git-lfs&quot;}&lt;/p&gt;
&lt;p&gt;对于 Windows ，直接去&lt;a href=&quot;https://gitforwindows.org&quot;&gt;https://gitforwindows.org&lt;/a&gt;下载&lt;code&gt;Git for Windows&lt;/code&gt;，注意，软件是从&lt;code&gt;GitHub&lt;/code&gt;下载的，请确保您的网络环境可以稳定访问&lt;code&gt;GitHub&lt;/code&gt;，&lt;code&gt;Git for Windows&lt;/code&gt;的安装设置略微有点儿麻烦，由于我已事先安装过了，为了写这个教程，我把&lt;code&gt;Git&lt;/code&gt;卸载重装了🤣（安装的&lt;code&gt;Git&lt;/code&gt;版本是&lt;code&gt;2.53.0&lt;/code&gt;，&lt;code&gt;不同版本的安装界可能有所不同&lt;/code&gt;）&lt;/p&gt;
&lt;p&gt;:::tip
以下内容使用 AI 辅助翻译，内容仅供参考，不保证翻译的准确性
:::&lt;/p&gt;
&lt;h3&gt;01 许可文本&lt;/h3&gt;
&lt;p&gt;直接点击 Next&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;02 选择安装位置，根据实际情况修改或不修改&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;03 请选择要安装的组件&lt;/h3&gt;
&lt;p&gt;（根据实际情况选择，我是全选的）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;附加图标
&lt;ul&gt;
&lt;li&gt;在桌面上&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Windows 文件资源管理器集成
&lt;ul&gt;
&lt;li&gt;在此处打开 Git Bash&lt;/li&gt;
&lt;li&gt;在此处打开 Git GUI&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Git LFS（大文件支持）&lt;/li&gt;
&lt;li&gt;将 .git* 配置文件与默认文本编辑器关联&lt;/li&gt;
&lt;li&gt;将 .sh 文件关联到 Bash 运行&lt;/li&gt;
&lt;li&gt;每日检查 Git for Windows 更新&lt;/li&gt;
&lt;li&gt;将 Git Bash 配置文件添加到 Windows 终端&lt;/li&gt;
&lt;li&gt;Scalar（用于管理大规模仓库的 Git 插件）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;04 开始菜单的快捷方式文件夹&lt;/h3&gt;
&lt;p&gt;保持默认即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;05 选择 Git 使用的默认编辑器&lt;/h3&gt;
&lt;p&gt;由于我使用&lt;code&gt;Visual Studio Code&lt;/code&gt;，所以我选择这个，你可以根据实际情况选择&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;06 调整新仓库中初始分支的名称&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;您希望 Git 在执行“git init”后将初始分支命名为什么？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;让 Git 决定&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;让 Git 对新创建的仓库使用其默认分支名称（当前为：“master”）作为初始分支。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;覆盖新仓库的默认分支名称&lt;/code&gt;
许多团队已经重命名了他们的默认分支；常见的选择是“main”、“trunk”和“development”。指定“git init”应使用的初始分支名称：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;main&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;此设置不影响现有仓库。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;07 调整 PATH 环境&lt;/h3&gt;
&lt;p&gt;（选择推荐项）&lt;/p&gt;
&lt;p&gt;您希望如何从命令行使用 Git？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;仅从 Git Bash 使用 Git&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这是最谨慎的选择，因为您的 PATH 将完全不会被修改。您将只能从 Git Bash 中使用 Git 命令行工具。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;从命令行以及第三方软件中使用 Git&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;span style=&quot;color:red&quot;&amp;gt;（推荐）&amp;lt;/span&amp;gt;此选项仅将一些最小的 Git 包装器添加到您的 PATH 中，以避免使用可选的 Unix 工具污染您的环境。您将能够从 Git Bash、命令提示符和 Windows PowerShell 以及任何在 PATH 中寻找 Git 的第三方软件中使用 Git。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;从命令提示符中使用 Git 和可选的 Unix 工具&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Git 和可选的 Unix 工具都将被添加到您的 PATH 中。&lt;/p&gt;
&lt;p&gt;&amp;lt;span style=&quot;color:red&quot;&amp;gt;警告：这将覆盖 Windows 工具，例如“find”和“sort”。仅在您了解其影响的情况下使用此选项。&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git07.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;08 选择 SSH 可执行文件&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;您希望 Git 使用哪个 Secure Shell 客户端程序？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;使用捆绑的 OpenSSH&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这将使用 Git 自带的 ssh.exe。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;使用外部的 OpenSSH&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这将使用外部的 ssh.exe。Git 不会安装自己的 OpenSSH（及相关）二进制文件，而是使用在 PATH 中找到的它们。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git08.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;09 选择 HTTPS 传输后端&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;您希望 Git 使用哪个 SSL/TLS 库进行 HTTPS 连接？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;使用 OpenSSL 库&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;服务器证书将使用 ca-bundle.crt 文件进行验证。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;使用本机 Windows Secure Channel 库&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;服务器证书将使用 Windows 证书存储进行验证。
此选项还允许您使用公司内部根 CA 证书，例如通过 Active Directory 域服务分发的证书。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git09.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;10 配置行尾转换&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;Git 应如何处理文本文件中的行尾？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;按 Windows 风格检出，提交 Unix 风格的行尾&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Git 在检出文本文件时会将 LF 转换为 CRLF。在提交文本文件时，CRLF 会被转换为 LF。对于跨平台项目，这是在 Windows 上的推荐设置（“core.autocrlf”设置为“true”）。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;按原样检出，提交 Unix 风格的行尾&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Git 在检出文本文件时不执行任何转换。在提交文本文件时，CRLF 会被转换为 LF。对于跨平台项目，这是在 Unix 上的推荐设置（“core.autocrlf”设置为“input”）。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;按原样检出，按原样提交&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Git 在检出或提交文本文件时不执行任何转换。对于跨平台项目，不建议选择此选项（“core.autocrlf”设置为“false”）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;11 配置与 Git Bash 一起使用的终端模拟器&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;您想将哪个终端模拟器与 Git Bash 一起使用？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;使用 MinTTY（MSYS2 的默认终端）&lt;/code&gt;
Git Bash 将使用 MinTTY 作为终端模拟器，它具有可调整大小的窗口、非矩形选择和 Unicode 字体。Windows 控制台程序（如交互式 Python）必须通过 winpty 启动才能在 MinTTY 中工作。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;使用 Windows 的默认控制台窗口&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Git 将使用 Windows 的默认控制台窗口（“cmd.exe”），它能很好地与 Win32 控制台程序（如交互式 Python 或 node.js）配合使用，但默认回滚非常有限，需要配置为使用 Unicode 字体才能正确显示非 ASCII 字符，并且在 Windows 10 之前，其窗口无法自由调整大小，且仅允许矩形文本选择。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;12 选择 git pull 的默认行为&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;默认情况下 git pull 应该做什么？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;快进或合并&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;尽可能快进当前分支到获取的分支，否则创建一个合并提交。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;变基&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;将当前分支变基到获取的分支。如果没有要变基的本地提交，这等同于快进。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;仅快进&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;快进到获取的分支。如果不可能则失败。这是 git pull 的标准行为。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;13 选择凭据助手&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;应配置哪个凭据助手？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;Git Credential Manager&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;使用跨平台的 Git Credential Manager。
在此处查看有关 Git Credential Manager 未来的更多信息。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;无&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;不使用凭据助手。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git13.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;14 配置额外选项&lt;/h3&gt;
&lt;p&gt;（建议保持默认）&lt;/p&gt;
&lt;p&gt;您希望启用哪些功能？&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;启用文件系统缓存&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;对于某些操作，文件系统数据将被批量读取并缓存在内存中（“core.fscache”设置为“true”）。这提供了显著的性能提升。&lt;/p&gt;
&lt;p&gt;○ &lt;code&gt;启用符号链接&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;启用符号链接（需要 SeCreateSymbolicLink 权限）。请注意，现有仓库不受此设置影响。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/git14.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;Install&lt;/code&gt;等待完成即可&lt;/p&gt;
&lt;p&gt;（呼~好累啊……&lt;/p&gt;
&lt;h2&gt;部署 IndexTTS-2&lt;/h2&gt;
&lt;p&gt;:::note[IndexTTS-2 是什么]
IndexTTS-2 是&lt;a href=&quot;https://www.bilibili.com&quot;&gt;哔哩哔哩&lt;/a&gt;发布的一款支持情感表达与时长可控的自回归零样本&lt;code&gt;开源&lt;/code&gt;语音合成模型，能够在零样本条件下精准复刻音色，并独立控制情感，实现高自然度与高同步性的语音生成。
:::&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;index-tts/index-tts&quot;}&lt;/p&gt;
&lt;p&gt;:::note
以下内容改编自&lt;code&gt;IndexTTS-2&lt;/code&gt;的&lt;code&gt;GitHub&lt;/code&gt;仓库说明文档
:::&lt;/p&gt;
&lt;p&gt;:::note[Help]
遇到报错怎么办？文章末尾加入了一些我遇到的问题以及具体解决方法，或者，&lt;a href=&quot;/posts/indextts2/#wsl-%E9%83%A8%E7%BD%B2&quot;&gt;点击这里&lt;/a&gt;跳转到&lt;code&gt;WSL部署&lt;/code&gt;（强烈推荐）
:::&lt;/p&gt;
&lt;h3&gt;1 在仓库中启用&lt;code&gt;Git-LFS&lt;/code&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;git lfs install
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2 下载代码&lt;/h3&gt;
&lt;p&gt;依次执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/index-tts/index-tts.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
此处&lt;code&gt;git clone&lt;/code&gt;会报错，缺失的是&lt;code&gt;example&lt;/code&gt;文件夹下的演示文件，不影响使用，如有需要，请前往&lt;a href=&quot;https://github.com/index-tts/index-tts&quot;&gt;https://github.com/index-tts/index-tts&lt;/a&gt;下载
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd index-tts
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;git lfs pull  # 下载大文件
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
在 Git Clone 命令后附加文件夹名称&lt;code&gt;IndexTTS-2&lt;/code&gt;可将文件保存到&lt;code&gt;IndexTTS-2&lt;/code&gt;目录下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/index-tts/index-tts.git IndexTTS-2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;cd IndexTTS-2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;git lfs pull  # 下载大文件
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h3&gt;3 安装依赖&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]&lt;/p&gt;
&lt;p&gt;请确保已安装NVIDIA &lt;a href=&quot;https://developer.nvidia.com/cuda-toolkit&quot;&gt;CUDA Toolkit&lt;/a&gt; 12.8及以上。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;DeepSpeed&lt;/code&gt;在部分&lt;code&gt;Windows&lt;/code&gt;环境较难安装（比如我的电脑……悲🥲）&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;uv&lt;/code&gt;安装依赖时，会&lt;code&gt;自动创建虚拟环境&lt;/code&gt;，将所有依赖安装到&lt;code&gt;.venv&lt;/code&gt;目录：&lt;/p&gt;
&lt;p&gt;Linux：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv sync --all-extras
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Windows（推荐）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv sync --extra webui
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果&lt;code&gt;PyPI 官方源&lt;/code&gt;（&lt;a href=&quot;https://pypi.org/simple&quot;&gt;https://pypi.org/simple&lt;/a&gt;）下载缓慢，建议通过&lt;a href=&quot;https://mirrors.nju.edu.cn&quot;&gt;南京大学开源镜像站&lt;/a&gt;下载：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv sync --all-extras --default-index &quot;https://mirror.nju.edu.cn/pypi/web/simple&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
&lt;strong&gt;可选功能：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--all-extras&lt;/code&gt;：安装全部可选功能，可去除自定义&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--extra webui&lt;/code&gt;：安装WebUI支持（推荐）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--extra deepspeed&lt;/code&gt;：安装DeepSpeed加速&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;:::tip
清理&lt;code&gt;UV&lt;/code&gt;下载缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv cache clean
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h3&gt;4 下载模型&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
项目首次运行会自动下载部分小模型，由于中国大陆无法访问&lt;code&gt;HuggingFace&lt;/code&gt;，需要提前设置临时环境变量：&lt;/p&gt;
&lt;p&gt;PowerShell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$env:HF_ENDPOINT=&quot;https://hf-mirror.com&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CMD&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set HF_ENDPOINT=https://hf-mirror.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果想要永久化的话，你也可以在系统中添加名为&lt;code&gt;HF_ENDPOINT&lt;/code&gt;的环境变量，只要确保其值为&lt;code&gt;https://hf-mirror.com&lt;/code&gt;（这是&lt;code&gt;HuggingFace&lt;/code&gt;的镜像站）即可解决网络问题&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;使用&lt;code&gt;HuggingFace&lt;/code&gt;镜像站&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$env:HF_ENDPOINT=&quot;https://hf-mirror.com&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载模型&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool install &quot;huggingface-hub[cli,hf_xet]&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;hf download IndexTeam/IndexTTS-2 --local-dir=checkpoints
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;PyTorch GPU 加速检测&lt;/h3&gt;
&lt;p&gt;可运行脚本检测机器是否有&lt;code&gt;GPU&lt;/code&gt;，以及是否安装了&lt;code&gt;GPU&lt;/code&gt;版本的&lt;code&gt;PyTorch&lt;/code&gt;。（如&lt;code&gt;PyTorch&lt;/code&gt;版本不对，可能使用&lt;code&gt;CPU&lt;/code&gt;启动，推理会非常慢）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run tools/gpu_check.py
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Web演示&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;浏览器访问&lt;a href=&quot;http://127.0.0.1:7860&quot;&gt;http://127.0.0.1:7860&lt;/a&gt;查看 Web 演示&lt;/p&gt;
&lt;p&gt;可通过命令行参数开启&lt;code&gt;FP16 推理&lt;/code&gt;（降低显存占用）、&lt;code&gt;DeepSpeed 加速&lt;/code&gt;、&lt;code&gt;CUDA 内核编译加速&lt;/code&gt;等。可运行以下命令查看所有选项：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py -h
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;快速启动&lt;/h2&gt;
&lt;p&gt;如果你觉得每次启动都要手动输命令很麻烦，你可以自己写一个一键启动的批处理脚本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以在后面加上允许的参数，就像&lt;code&gt;uv run webui.py --fp16 --cuda_kernel&lt;/code&gt;这样，将命令复制下来另存为一个&lt;code&gt;bat&lt;/code&gt;批处理脚本文件，例如&lt;code&gt;go-webui.bat&lt;/code&gt;，放在与&lt;code&gt;webui.py&lt;/code&gt;相同的目录内，以后每次启动都运行这个批处理脚本即可（虽然这毫无技术含量🤣）&lt;/p&gt;
&lt;h2&gt;报错了？&lt;/h2&gt;
&lt;h3&gt;页面文件过小？&lt;/h3&gt;
&lt;p&gt;如果遇到页面文件过小的错误，请手动设置页面文件的大小，直到不再报错为止。&lt;/p&gt;
&lt;h3&gt;DeepSpeed 报错？&lt;/h3&gt;
&lt;p&gt;LINK : fatal error LNK1181: 无法打开输入文件“aio.lib”&lt;/p&gt;
&lt;p&gt;LINK : fatal error LNK1181: 无法打开输入文件“cufile.lib”&lt;/p&gt;
&lt;p&gt;…………&lt;/p&gt;
&lt;p&gt;请使用&lt;code&gt;Linux&lt;/code&gt;操作系统部署&lt;code&gt;IndexTTS-2&lt;/code&gt;……毕竟&lt;code&gt;DeepSpeed&lt;/code&gt;是为&lt;code&gt;Linux&lt;/code&gt;设计的&lt;/p&gt;
&lt;h2&gt;WSL 部署&lt;/h2&gt;
&lt;p&gt;:::note[WSL是什么？]
&lt;code&gt;适用于 Windows 的 Linux 子系统&lt;/code&gt;（WSL）是&lt;code&gt;Windows&lt;/code&gt;操作系统的一项功能，它使您能够在&lt;code&gt;Windows&lt;/code&gt;上直接运行&lt;code&gt;Linux&lt;/code&gt;文件系统，以及&lt;code&gt;Linux&lt;/code&gt;命令行工具和图形界面应用程序，同时与传统的&lt;code&gt;Windows&lt;/code&gt;桌面和应用程序并存。
:::&lt;/p&gt;
&lt;p&gt;:::note[为什么不使用Hyper-V创建完整虚拟机？]
答：也可以，但是&lt;code&gt;Hyper-V&lt;/code&gt;资源占用太大，操作比较麻烦，而&lt;code&gt;WSL&lt;/code&gt;是&lt;code&gt;轻量级&lt;/code&gt;的且与&lt;code&gt;Windows&lt;/code&gt;无缝集成
:::&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/wsl/&quot;&gt;Windows Subsystem for Linux 文档 - Microsoft Learn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands&quot;&gt;WSL 的基本命令 - Microsoft Learn&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;安装 WSL2&lt;/h3&gt;
&lt;p&gt;以&lt;code&gt;管理员身份&lt;/code&gt;运行&lt;code&gt;PowerShell&lt;/code&gt;并执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
请确保网络稳定，以免像这样遇到&lt;code&gt;403 错误&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\Admin&amp;gt; wsl --install
已禁止(403)。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;设置&lt;code&gt;WSL&lt;/code&gt;默认版本为&lt;code&gt;WSL2&lt;/code&gt;（通常不需要操作，默认安装的应该就是&lt;code&gt;WSL2&lt;/code&gt;）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --set-default-version 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
默认情况下，已安装的 Linux 分发版将为 Ubuntu（目前是&lt;code&gt;Ubuntu 24.04.4 LTS&lt;/code&gt;）
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\Admin&amp;gt; wsl --install
正在下载: 适用于 Linux 的 Windows 子系统 2.6.3
正在安装: 适用于 Linux 的 Windows 子系统 2.6.3
已安装 适用于 Linux 的 Windows 子系统 2.6.3。
操作成功完成。
正在下载: Ubuntu
正在安装: Ubuntu
已成功安装分发。可以通过 “wsl.exe -d Ubuntu” 启动它
正在启动 Ubuntu...
Provisioning the new WSL instance Ubuntu
This might take a while...
Create a default Unix user account: # 在此处输入你的用户名，有效的用户名必须以小写字母或下划线开头，可以包含小写字母、数字、下划线和破折号。
New password: # 在此处输入密码，注意，密码文本不会显示
Retype new password: # 再次输入密码
passwd: password updated successfully
To run a command as administrator (user &quot;root&quot;), use &quot;sudo &amp;lt;command&amp;gt;&quot;.
See &quot;man sudo_root&quot; for details.
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;更改安装位置&lt;/h3&gt;
&lt;p&gt;WSL 安装的 Linux 发行版默认位置为&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;C:\Users\你的用户名\AppData\Local\wsl&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这些东西全丢 C 盘，时间久了，C 盘空间不得“爆炸”嘛……&lt;/p&gt;
&lt;p&gt;列出发行版&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --list --all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你应该会看到类似的输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PS C:\Users\Admin&amp;gt; wsl --list --all
适用于 Linux 的 Windows 子系统分发:
Ubuntu (默认值)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;终止 WSL 进程&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行迁移&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --manage &amp;lt;发行版名称&amp;gt; --move &amp;lt;目标路径&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如，我可以这样写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; wsl --manage Ubuntu --move &quot;E:\WSL\Ubuntu&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将会把&lt;code&gt;Ubuntu&lt;/code&gt;的&lt;code&gt;ext4.vhdx&lt;/code&gt;虚拟磁盘文件移动到&lt;code&gt;E:\WSL\Ubuntu&lt;/code&gt;目录下&lt;/p&gt;
&lt;h3&gt;安装依赖&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Git&lt;/code&gt;是内置的，我们接下来安装&lt;code&gt;Git LFS&lt;/code&gt;、&lt;code&gt;UV&lt;/code&gt;、&lt;code&gt;CUDA&lt;/code&gt;以及&lt;code&gt;cuDNN&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1 安装&lt;code&gt;Git LFS&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;添加 packagecloud 仓库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;admin@Windows11:/mnt/c/Users/Admin$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
[sudo] password for admin: # 在这里输入你的密码
Detected operating system as Ubuntu/noble.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Detected apt version as 2.8.3
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/github_git-lfs.list...done.
Importing packagecloud gpg key... Packagecloud gpg key imported to /etc/apt/keyrings/github_git-lfs-archive-keyring.gpg
done.
Running apt-get update... done.

The repository is setup! You can now install packages.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装软件包&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install git-lfs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;admin@Windows11:/mnt/c/Users/Admin$ sudo apt-get install git-lfs
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  git-lfs
0 upgraded, 1 newly installed, 0 to remove and 9 not upgraded.
Need to get 8927 kB of archives.
After this operation, 19.2 MB of additional disk space will be used.
Get:1 https://packagecloud.io/github/git-lfs/ubuntu noble/main amd64 git-lfs amd64 3.7.1 [8927 kB]
Fetched 8927 kB in 9s (973 kB/s)
Selecting previously unselected package git-lfs.
(Reading database ... 40809 files and directories currently installed.)
Preparing to unpack .../git-lfs_3.7.1_amd64.deb ...
Unpacking git-lfs (3.7.1) ...
Setting up git-lfs (3.7.1) ...
Git LFS initialized.
Processing triggers for man-db (2.12.0-4build2) ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2 安装&lt;code&gt;UV&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -LsSf https://astral.sh/uv/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;admin@Windows11:/mnt/c/Users/Admin$ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.10.4 x86_64-unknown-linux-gnu
no checksums to verify
installing to /home/admin/.local/bin
  uv
  uvx
everything&apos;s installed!

To add $HOME/.local/bin to your PATH, either restart your shell or run:

    source $HOME/.local/bin/env (sh, bash, zsh)
    source $HOME/.local/bin/env.fish (fish)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置环境变量（写入&lt;code&gt;Shell配置文件&lt;/code&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;source $HOME/.local/bin/env&apos; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新加载配置文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3 安装&lt;code&gt;CUDA Toolkit 12.8&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;:::caution[警告]
你&lt;code&gt;不需要&lt;/code&gt;在&lt;code&gt;WSL&lt;/code&gt;里面安装&lt;code&gt;NVIDIA GPU 驱动程序&lt;/code&gt;
:::
依次执行：&lt;/p&gt;
&lt;p&gt;命令来源：&lt;a href=&quot;https://developer.nvidia.com/cuda-12-8-0-download-archive?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;Distribution=WSL-Ubuntu&amp;amp;target_version=2.0&amp;amp;target_type=deb_local&quot;&gt;CUDA Toolkit 12.8 Downloads | NVIDIA Developer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;文件较大，请确保网络连接通畅&lt;/p&gt;
&lt;p&gt;更换当前目录（为什么？因为这个目录是用户文件夹，能直接从&lt;code&gt;Windows 文件资源管理器&lt;/code&gt;进入，方便操作）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /home/admin
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get -y install cuda-toolkit-12-8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置环境变量（写入&lt;code&gt;Shell配置文件&lt;/code&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;export PATH=/usr/local/cuda-12.8/bin:$PATH&apos; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}&apos; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新加载配置文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;4 安装&lt;code&gt;cuDNN&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;依次执行：&lt;/p&gt;
&lt;p&gt;命令来源：&lt;a href=&quot;https://developer.nvidia.com/cudnn-downloads?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;Distribution=Ubuntu&amp;amp;target_version=24.04&amp;amp;target_type=deb_local&amp;amp;Configuration=Full&quot;&gt;cuDNN 9.19.0 Downloads | NVIDIA Developer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;文件较大，请确保网络连接通畅&lt;/p&gt;
&lt;p&gt;更换当前目录（若已在此目录中请忽略）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /home/admin
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;wget https://developer.download.nvidia.com/compute/cudnn/9.19.0/local_installers/cudnn-local-repo-ubuntu2404-9.19.0_1.0-1_amd64.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo dpkg -i cudnn-local-repo-ubuntu2404-9.19.0_1.0-1_amd64.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;admin@Windows11-Admin:~$ sudo dpkg -i cudnn-local-repo-ubuntu2404-9.19.0_1.0-1_amd64.deb
[sudo] password for admin:
Selecting previously unselected package cudnn-local-repo-ubuntu2404-9.19.0.
(Reading database ... 54611 files and directories currently installed.)
Preparing to unpack cudnn-local-repo-ubuntu2404-9.19.0_1.0-1_amd64.deb ...
Unpacking cudnn-local-repo-ubuntu2404-9.19.0 (1.0-1) ...
Setting up cudnn-local-repo-ubuntu2404-9.19.0 (1.0-1) ...

The public cudnn-local-repo-ubuntu2404-9.19.0 GPG key does not appear to be installed.
To install the key, run this command:
sudo cp /var/cudnn-local-repo-ubuntu2404-9.19.0/cudnn-local-9EC59F07-keyring.gpg /usr/share/keyrings/ # 执行这里的命令

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面这条命令以上条命令执行后的输出&lt;code&gt;sudo cp /var/cudnn-local-repo-ubuntu2404-9.19.0/cudnn-local-9EC59F07-keyring.gpg /usr/share/keyrings/&lt;/code&gt;为准：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cp /var/cudnn-local-repo-ubuntu2404-9.19.0/cudnn-local-9EC59F07-keyring.gpg /usr/share/keyrings/
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get -y install cudnn9-cuda-12
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置环境变量（写入&lt;code&gt;Shell配置文件&lt;/code&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;export PATH=/usr/local/cuda-12.8/bin:$PATH&apos; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}&apos; &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新加载配置文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;验证安装&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvcc --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若输出类似：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;admin@Windows11-Admin:~$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:20:09_PST_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;则表明安装成功&lt;/p&gt;
&lt;h3&gt;部署 IndexTTS-2&lt;/h3&gt;
&lt;p&gt;更换当前目录（为什么？因为这个目录是用户文件夹，能从&lt;code&gt;Windows 文件资源管理器&lt;/code&gt;直接进入，&lt;code&gt;UV&lt;/code&gt;也默认安装在这里）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd /home/admin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把其中的&lt;code&gt;admin&lt;/code&gt;替换为你的实际用户名&lt;/p&gt;
&lt;p&gt;1 在仓库中启用&lt;code&gt;Git-LFS&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git lfs install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2 下载代码&lt;/p&gt;
&lt;p&gt;依次执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/index-tts/index-tts.git IndexTTS-2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
此处&lt;code&gt;git clone&lt;/code&gt;会报错，缺失的是&lt;code&gt;example&lt;/code&gt;文件夹下的演示文件，不影响使用，如有需要，请前往&lt;a href=&quot;https://github.com/index-tts/index-tts&quot;&gt;https://github.com/index-tts/index-tts&lt;/a&gt;下载
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd IndexTTS-2
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;git lfs pull  # 下载大文件
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装&lt;code&gt;Python&lt;/code&gt;虚拟环境&lt;/p&gt;
&lt;p&gt;下载 Python&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv python install

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建虚拟环境&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv venv

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;激活虚拟环境&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装依赖&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv sync --all-extras
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用&lt;code&gt;HuggingFace&lt;/code&gt;镜像站&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export HF_ENDPOINT=&quot;https://hf-mirror.com&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载模型&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool install &quot;huggingface-hub[cli,hf_xet]&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;hf download IndexTeam/IndexTTS-2 --local-dir=checkpoints
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::tip
清理&lt;code&gt;UV&lt;/code&gt;下载缓存&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv cache clean
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::
PyTorch GPU 加速检测&lt;/p&gt;
&lt;p&gt;可运行脚本检测机器是否有&lt;code&gt;GPU&lt;/code&gt;，以及是否安装了&lt;code&gt;GPU&lt;/code&gt;版本的&lt;code&gt;PyTorch&lt;/code&gt;。（如&lt;code&gt;PyTorch&lt;/code&gt;版本不对，可能使用&lt;code&gt;CPU&lt;/code&gt;启动，推理会非常慢）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run tools/gpu_check.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Web 演示&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;浏览器访问&lt;a href=&quot;http://127.0.0.1:7860&quot;&gt;http://127.0.0.1:7860&lt;/a&gt;查看 Web 演示&lt;/p&gt;
&lt;p&gt;可通过命令行参数开启&lt;code&gt;FP16 推理&lt;/code&gt;（降低显存占用）、&lt;code&gt;DeepSpeed 加速&lt;/code&gt;、&lt;code&gt;CUDA 内核编译加速&lt;/code&gt;等。可运行以下命令查看所有选项：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py -h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如，你可以这样启动 Web 演示，这将同时启动&lt;code&gt;FP16 推理&lt;/code&gt;、&lt;code&gt;DeepSpeed 加速&lt;/code&gt;以及&lt;code&gt;CUDA 内核编译加速&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py --fp16 --deepspeed --cuda_kernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你发现 WebUI 的界面是英文的，请修改&lt;code&gt;webui.py&lt;/code&gt;文件的&lt;code&gt;第54行&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;原文：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;i18n = I18nAuto(language=&quot;Auto&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;i18n = I18nAuto(language=&quot;zh_CN&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将强制禁用语言检测并将界面语言为简体中文&lt;/p&gt;
&lt;p&gt;下一次启动：&lt;/p&gt;
&lt;p&gt;启动&lt;code&gt;WSL&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入&lt;code&gt;IndexTTS-2&lt;/code&gt;目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd ~/IndexTTS-2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;（具体目录以你的实际部署情况为准）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run webui.py --fp16 --deepspeed --cuda_kernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关闭&lt;code&gt;WSL&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;生成的文件在哪里？&lt;/h3&gt;
&lt;p&gt;如图所示（点击放大图片）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/indextts2/wsl.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;压缩虚拟硬盘映像文件&lt;/h3&gt;
&lt;p&gt;:::note
WSL2 的 vhdx 具有&lt;code&gt;动态特性&lt;/code&gt;，即当磁盘文件创建时，初始化一个最大的上限容量（默认是 1TB ），当里面数据增加时，vhdx 所占的空间随之增加，直到上限，但当里面的数据被移除时，vhdx 所占的空间并不会随之减小。这导致即使在&lt;code&gt;WSL&lt;/code&gt;里删除了文件，也无法即时释放磁盘的存储空间。&lt;/p&gt;
&lt;p&gt;参考：&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/wsl/disk-space&quot;&gt;如何管理 WSL 磁盘空间 | Microsoft Learn&lt;/a&gt;
:::&lt;/p&gt;
&lt;p&gt;首先你需要关闭&lt;code&gt;WSL&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以管理员身份运行&lt;code&gt;终端&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;diskpart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; diskpart

Microsoft DiskPart 版本 10.0.26100.1150

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS11-ADMIN

DISKPART&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输入并执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select vdisk file=&quot;&amp;lt;vhdx文件路径&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Microsoft DiskPart 版本 10.0.26100.1150

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS11-ADMIN

DISKPART&amp;gt;select vdisk file=&quot;E:\WSL\Ubuntu\ext4.vhdx&quot;
DiskPart 已成功选择虚拟磁盘文件。

DISKPART&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;压缩磁盘（依次执行）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attach vdisk readonly
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;compact vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若遇到报错：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

虚拟磁盘服务错误:
所请求的操作需要以只读方式
连接虚拟磁盘。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;则先分离磁盘文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;detach vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再依次执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attach vdisk readonly
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;compact vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就像这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

虚拟磁盘服务错误:
所请求的操作需要以只读方式
连接虚拟磁盘。

DISKPART&amp;gt; detach vdisk

DiskPart 已成功分离虚拟磁盘文件。

DISKPART&amp;gt; attach vdisk readonly

  100 百分比已完成

DiskPart 已成功连接虚拟磁盘文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后你应该看到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

  100 百分比已完成

DiskPart 已成功压缩虚拟磁盘文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;退出 DiskPart：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;detach vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大功告成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; detach vdisk

DiskPart 已成功分离虚拟磁盘文件。

DISKPART&amp;gt; exit

退出 DiskPart...
PS C:\Users\Admin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时你再去文件资源管理器里看看，你的磁盘空间应该得到了一定程度的的释放&lt;/p&gt;
</content:encoded></item><item><title>LocalAI 本地部署指南</title><link>https://auspiceshirley.dev/posts/localai/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/localai/</guid><description>使用 Docker 在 Windows 设备上部署 LocalAI 服务</description><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note
LocalAI is the free, Open Source OpenAI alternative. LocalAI act as a drop-in replacement REST API that&apos;s compatible with OpenAI (Elevenlabs, Anthropic... ) API specifications for local AI inferencing. It allows you to run LLMs, generate images, audio (and not only) locally or on-prem with consumer grade hardware, supporting multiple model families. Does not require GPU.（摘自&lt;a href=&quot;https://github.com/mudler/LocalAI&quot;&gt;https://github.com/mudler/LocalAI&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;本文旨在向你介绍如何使用 Docker 在安装了 Windows 11 操作系统的个人电脑上部署 LocalAI 服务&lt;/p&gt;
&lt;p&gt;相比于 Ollama，LocalAI 支持更多类型的 AI 大模型，例如语音合成、图像生成等等，同时 LocalAI 也支持从多种途径下载模型文件，例如 HuggingFace、Ollama 和 Docker Hub
:::&lt;/p&gt;
&lt;p&gt;:::tip
本文 100% 由人类编写
:::&lt;/p&gt;
&lt;h2&gt;安装Docker&lt;/h2&gt;
&lt;p&gt;:::caution
Docker 官网为&amp;lt;a href=&quot;https://www.docker.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;https://www.docker.com&amp;lt;/a&amp;gt;，其他号称 “Docker官方网站” 的网站一律为假！！！由于受不可抗力影响，Docker 网站目前访问受阻，导致从&amp;lt;a href=&quot;https://hub.docker.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;Docker Hub&amp;lt;/a&amp;gt;拉取镜像往往出现&lt;code&gt;速度慢&lt;/code&gt;、&lt;code&gt;拉取超时&lt;/code&gt;等问题，但是您可以使用诸如&lt;code&gt;Steamcommunity 302&lt;/code&gt;（&amp;lt;a href=&quot;https://www.dogfight360.com/blog/18682/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;下载链接&amp;lt;/a&amp;gt;）等工具加速访问
:::&lt;/p&gt;
&lt;p&gt;访问&amp;lt;a href=&quot;https://www.docker.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;https://www.docker.com&amp;lt;/a&amp;gt;下载&lt;code&gt;Docker Desktop Installer.exe&lt;/code&gt;可执行文件（当然，Docker Desktop 也在&amp;lt;a href=&quot;https://apps.microsoft.com/detail/xp8cbj40xlbwkx?hl=zh-Hans-CN&amp;amp;gl=CN&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&amp;gt;微软商店&amp;lt;/a&amp;gt;提供安装，但我未验证这种安装方法是否可以更改安装位置）&lt;/p&gt;
&lt;h3&gt;更改安装位置&lt;/h3&gt;
&lt;p&gt;由于&lt;code&gt;Docker Desktop&lt;/code&gt;默认安装在 C 盘（&lt;code&gt;C:\Program Files\Docker\Docker&lt;/code&gt;），我们可以通过命令行将&lt;code&gt;Docker Desktop&lt;/code&gt;安装到指定目录（在文件所在的目录启动终端）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; .\&apos;Docker Desktop Installer.exe&apos;  install --installation-dir=&quot;D:\Docker&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这将使&lt;code&gt;Docker Desktop&lt;/code&gt;安装到&lt;code&gt;D:\Docker&lt;/code&gt;，需要提前在&lt;code&gt;D盘&lt;/code&gt;根目录下创建名为&lt;code&gt;Docker&lt;/code&gt;的文件夹，否则命令会执行失败&lt;/p&gt;
&lt;p&gt;安装时选择默认选项即可，安装完成后重启电脑，这会启用&lt;code&gt;WSL&lt;/code&gt;（适用于 Linux 的 Windows 子系统）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;电脑重启后会弹出以下弹窗，请根据提示升级&lt;code&gt;WSL&lt;/code&gt;版本，此操作需要良好的网络连接&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你不慎关闭此窗口，请以管理员身份运行终端并执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl.exe --update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当终端输出类似以下内容时，你可以安全地关闭终端：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;启动&lt;code&gt;Docker Desktop&lt;/code&gt;并跳过登录&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;更改默认镜像保存位置&lt;/h3&gt;
&lt;p&gt;Docker 的镜像默认安装在&lt;code&gt;%UserProfile%\AppData\Local\Docker\wsl&lt;/code&gt;目录下，建议将目录更改到除 C 盘外的其他位置，Docker 会自动在选定的目录下增加子&lt;code&gt;DockerDesktopWSL&lt;/code&gt;文件夹&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;Apply &amp;amp; restart&lt;/code&gt;保存设置&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;安装LocalAI&lt;/h2&gt;
&lt;p&gt;访问&lt;code&gt;LocalAI官方文档&lt;/code&gt; &lt;a href=&quot;https://localai.io/installation/docker/&quot;&gt;https://localai.io/installation/docker/&lt;/a&gt;，根据设备硬件配置选择合适的 Images 运行命令，这里以 &lt;code&gt;NVIDIA CUDA 13&lt;/code&gt;为例&lt;/p&gt;
&lt;p&gt;:::tip
在 Docker 内置的终端运行以下所有命令：点击终端图标再点击&lt;code&gt;Enable&lt;/code&gt;（首次）
&lt;img src=&quot;/images/postdlai/docker07.png&quot; alt=&quot;&quot; /&gt;
:::&lt;/p&gt;
&lt;h3&gt;拉取镜像&lt;/h3&gt;
&lt;p&gt;Standard Images（标准镜像）标准镜像不包含预配置的模型，如果您想手动配置模型，请使用这些镜像。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-13
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All-in-One (AIO) Images（All-in-One 镜像，&lt;code&gt;推荐&lt;/code&gt;）适合新手 - 这些镜像已预先配置好模型和后端，开箱即可使用。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-aio-gpu-nvidia-cuda-13
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
接下来我们使用 All-in-One 镜像（但是这个镜像占用的空间会非常大，虚拟磁盘文件大约有&lt;code&gt;40GB&lt;/code&gt;，如果你的硬盘没有那么大的空间，建议你拉取标准镜像，这个会&lt;code&gt;相对小亿点&lt;/code&gt;，大约在&lt;code&gt;10GB&lt;/code&gt;左右，就是配置相对会比较麻烦）
:::&lt;/p&gt;
&lt;p&gt;镜像拉取的&lt;code&gt;整个过程&lt;/code&gt;都需要&lt;code&gt;稳定的网络连接&lt;/code&gt;，若您的网络连通顺畅，您应该看到类似以下的输出内容（已抹除部分 GPU 硬件信息）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker08.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时关闭终端（不是结束运行）你将看到以下内容，这表明 LocalAI 已成功安装，ID 为 f89d05a440f1******** 的容器已成功运行：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker09.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;:::note
等待&lt;code&gt;模型以及后端文件下载完成&lt;/code&gt;（可在日志（Logs）或终端中查看进度），否则&lt;a href=&quot;http://localhost:8080/&quot;&gt;http://localhost:8080&lt;/a&gt;无法打开&lt;/p&gt;
&lt;p&gt;完整安装完成后，&lt;code&gt;docker_data.vhdx&lt;/code&gt;文件大小将达到&lt;code&gt;40GB&lt;/code&gt;以上
:::&lt;/p&gt;
&lt;p&gt;在 Docker 内执行 &lt;code&gt;nvidia-smi&lt;/code&gt; 和 &lt;code&gt;nvcc --version&lt;/code&gt; 命令，你应当看到以下类似的输出（已抹除部分 GPU 硬件信息）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/docker10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这表明已成功启动 CUDA(NVIDIA) 加速&lt;/p&gt;
&lt;p&gt;此时访问&lt;a href=&quot;http://localhost:8080&quot;&gt;http://localhost:8080&lt;/a&gt;，你将看到 LocalAI WebUI 的初始界面：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/lai01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;恭喜！软件安装阶段大功告成！👍&lt;/p&gt;
&lt;h2&gt;部署AI模型&lt;/h2&gt;
&lt;p&gt;:::tip
访问&lt;a href=&quot;https://models.localai.io/&quot;&gt;https://models.localai.io&lt;/a&gt;（会重定向到&lt;a href=&quot;https://localai.io/gallery.html&quot;&gt;https://localai.io/gallery.html&lt;/a&gt;）查看受支持的 AI 模型
:::&lt;/p&gt;
&lt;p&gt;由于 All-in-One 镜像内置了 8 个模型（&lt;code&gt;gpt-4&lt;/code&gt;、&lt;code&gt;gpt-4o&lt;/code&gt;、&lt;code&gt;jina-reranker-v1-base-en&lt;/code&gt;、&lt;code&gt;silero-vad&lt;/code&gt;、&lt;code&gt;stablediffusion&lt;/code&gt;、&lt;code&gt;text-embedding-ada-002&lt;/code&gt;、&lt;code&gt;tts-1&lt;/code&gt; 和 &lt;code&gt;whisper-1&lt;/code&gt;）（磁盘空间：⚠️危）&lt;/p&gt;
&lt;p&gt;:::tip
点击&lt;code&gt;Browse Gallery&lt;/code&gt;查找并下载模型
&lt;img src=&quot;/images/postdlai/lai02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你发现容器启动时日志有错误信息，且在容器内的&lt;code&gt;model&lt;/code&gt;文件夹下发现有后缀为&lt;code&gt;partial&lt;/code&gt;的文件，请将其删除并重启容器，这会重新下载该未完全下载的文件
:::&lt;/p&gt;
&lt;p&gt;我们来测试一下&lt;code&gt;GPT-4o&lt;/code&gt;模型：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/lai03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tts-1&lt;/code&gt;（生成的语音文件这里就不放出来了）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postdlai/lai04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;其余的这里就不展示了，具体的请查看 LocalAI 官方文档&lt;/p&gt;
&lt;h2&gt;压缩虚拟硬盘映像文件&lt;/h2&gt;
&lt;p&gt;:::note
Windows 的 Docker Desktop 基于 WSL2 来运行，所有的 Image、Container 数据都会被放到 WSL2 的虚拟磁盘文件（vhdx）中。而 WSL2 的 vhdx 具有“动态”特性，即当磁盘文件创建时，初始化一个最大的上限容量（默认是 1TB ），当里面数据增加时，vhdx 所占的空间随之增加，直到上限，但当里面的数据被移除时，vhdx 所占的空间并不会随之减小。这导致即使在 Docker 里删除了镜像文件，也无法即时释放磁盘的存储空间。&lt;/p&gt;
&lt;p&gt;参考：&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/wsl/disk-space&quot;&gt;如何管理 WSL 磁盘空间 | Microsoft Learn&lt;/a&gt;
:::&lt;/p&gt;
&lt;p&gt;首先你需要关闭 WSL（如果你开启了 Docker Desktop，或者 Docker Desktop 关闭的时候卡住了，请重启电脑，记得关闭 Docker Desktop 的自启动）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wsl --shutdown
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以管理员身份运行终端：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;diskpart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;类似输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; diskpart

Microsoft DiskPart 版本 10.0.26100.1150

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS11-ADMIN

DISKPART&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输入并执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;select vdisk file=&quot;&amp;lt;vhdx文件路径&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Microsoft DiskPart 版本 10.0.26100.1150

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS11-ADMIN

DISKPART&amp;gt;select vdisk file=&quot;E:\DockerDesktopWSL\disk\docker_data.vhdx&quot;

DiskPart 已成功选择虚拟磁盘文件。

DISKPART&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;压缩磁盘（依次执行）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attach vdisk readonly
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;compact vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若遇到报错：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

虚拟磁盘服务错误:
所请求的操作需要以只读方式
连接虚拟磁盘。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;则先分离磁盘文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;detach vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再依次执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attach vdisk readonly
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;compact vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就像这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

虚拟磁盘服务错误:
所请求的操作需要以只读方式
连接虚拟磁盘。

DISKPART&amp;gt; detach vdisk

DiskPart 已成功分离虚拟磁盘文件。

DISKPART&amp;gt; attach vdisk readonly

  100 百分比已完成

DiskPart 已成功连接虚拟磁盘文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后你应该看到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; compact vdisk

  100 百分比已完成

DiskPart 已成功压缩虚拟磁盘文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;退出 DiskPart：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;detach vdisk
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大功告成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DISKPART&amp;gt; detach vdisk

DiskPart 已成功分离虚拟磁盘文件。

DISKPART&amp;gt; exit

退出 DiskPart...
PS C:\Users\Admin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时你再去文件资源管理器里看看，你的磁盘空间应该得到了一定的释放&lt;/p&gt;
&lt;p&gt;:::tip
值得注意的是，由于&lt;code&gt;模型参数量&lt;/code&gt;、&lt;code&gt;模型版本&lt;/code&gt;以及&lt;code&gt;设备算力&lt;/code&gt;的差异，您在本地运行的模型在使用体验上可能不如在线模型
:::&lt;/p&gt;
</content:encoded></item><item><title>Ollama + KISS Translator：本地 AI 翻译部署指南</title><link>https://auspiceshirley.dev/posts/ollama-kiss-translator/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/ollama-kiss-translator/</guid><description>使用 Ollama 和 KISS Translator（简约翻译）插件在搭建本地 AI 翻译服务</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note
本文将向你介绍如何使用 &lt;code&gt;Ollama&lt;/code&gt; 和 &lt;code&gt;KISS Translator&lt;/code&gt;（简约翻译）插件搭建本地 AI 翻译服务，以摆脱对在线翻译服务的依赖，从而达到&lt;code&gt;保护隐私&lt;/code&gt;的目的（以 &lt;code&gt;Microsoft Edge&lt;/code&gt;为例，&lt;code&gt;Google Chrome&lt;/code&gt;等其他浏览器操作方式类似，故暂不讨论）&lt;/p&gt;
&lt;p&gt;如果您未安装 Ollama，请参考我的这篇文章的前半部分：&lt;a href=&quot;https://blog.auspiceshirley.dev/posts/vscode-local-ai/&quot;&gt;VSCode本地AI指南&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文中&lt;code&gt;Windows 终端&lt;/code&gt;均使用&lt;code&gt;PowerShell&lt;/code&gt;
:::&lt;/p&gt;
&lt;p&gt;:::tip
本文 100% 由人类编写
:::&lt;/p&gt;
&lt;h2&gt;安装 KISS Translator 插件&lt;/h2&gt;
&lt;p&gt;KISS Translator（简约翻译）是一个简约、开源的 &lt;code&gt;双语对照翻译扩展 &amp;amp; 油猴脚本&lt;/code&gt;，相比于 ■■■ 翻译（被收购后转向闭源，劣迹斑斑），它完全免费开放，隐私风险极低&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;fishjar/kiss-translator&quot;}&lt;/p&gt;
&lt;p&gt;由于使用体验的差异，这里推荐使用&lt;code&gt;插件版&lt;/code&gt;而不是&lt;code&gt;脚本版&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://microsoftedge.microsoft.com/addons/detail/%E7%AE%80%E7%BA%A6%E7%BF%BB%E8%AF%91/jemckldkclkinpjighnoilpbldbdmmlh&quot;&gt;Microsoft Edge 扩展&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://chromewebstore.google.com/detail/kiss-translator/bdiifdefkgmcblbcghdlonllpjhhjgof&quot;&gt;Google Chrome 应用商店&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/zh-CN/firefox/addon/kiss-translator/&quot;&gt;Firefox Browsers ADD-ONS&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;下载模型&lt;/h2&gt;
&lt;p&gt;基于我实际测试的体验，这里推荐 Google 开源的全新翻译模型：&lt;code&gt;TranslateGemma&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;TranslateGemma 于 2026年1月15日 发布，基于&lt;code&gt;Gemma 3&lt;/code&gt;架构构建，覆盖&lt;code&gt;55种&lt;/code&gt;语言，可在&lt;code&gt;各种设备&lt;/code&gt;上运行。此模型目前有&lt;code&gt;4b&lt;/code&gt;、&lt;code&gt;12b&lt;/code&gt;和&lt;code&gt;27b&lt;/code&gt;三个版本，本文以&lt;code&gt;4b&lt;/code&gt;版本为例&lt;/p&gt;
&lt;p&gt;下载模型文件（&lt;a href=&quot;https://ollama.com/library/translategemma&quot;&gt;translategemma - Ollama&lt;/a&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ollama pull translategemma:4b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载完成后，你应该看到类似以下的输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; ollama pull translategemma:4b
pulling manifest
pulling bdbf939b402e: 100% ▕█████████████████████████████▏ 3.3 GB
pulling e0a42594d802: 100% ▕█████████████████████████████▏  358 B
pulling 3e2c24001f9e: 100% ▕█████████████████████████████▏ 8.4 KB
pulling 339e884a40f6: 100% ▕█████████████████████████████▏   61 B
pulling 37490ee3c3a4: 100% ▕█████████████████████████████▏  489 B
verifying sha256 digest
writing manifest
success
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置&lt;/h2&gt;
&lt;p&gt;为了方便使用，建议将插件固定到 Edge 的工具栏上&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;打开设置&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;将界面改成&lt;code&gt;简体中文&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;规则设置&lt;/code&gt;里面将&lt;code&gt;翻译服务&lt;/code&gt;改成&lt;code&gt;Ollama&lt;/code&gt;，记得点击&lt;code&gt;保存&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;接口设置&lt;/code&gt;里面找到&lt;code&gt;Ollama&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;更改&lt;code&gt;Model&lt;/code&gt;为&lt;code&gt;translategemma:4b&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;translategemma:4b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;建议禁用&lt;code&gt;聚合发送翻译请求&lt;/code&gt;（根据设备性能差异，启用聚合发送可能会&lt;code&gt;增加资源占用&lt;/code&gt;以及&lt;code&gt;延时增加&lt;/code&gt;）以及启用&lt;code&gt;智能上下文&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea07.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;保存&lt;/code&gt;并测试&lt;code&gt;服务可用性&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果提示&lt;code&gt;测试失败 Failed to fetch&lt;/code&gt;，那么你一定是忘记启动 Ollama 服务了，终端运行&lt;code&gt;ollama serve&lt;/code&gt;或者启动并后台运行 Ollama 客户端&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ollama serve
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;测试成功示例：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postlait/ea08.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果你遇到&lt;code&gt;403 Forbidden&lt;/code&gt;的错误，请添加名为&lt;code&gt;OLLAMA_ORIGINS&lt;/code&gt;的&lt;code&gt;系统环境变量&lt;/code&gt;，其值为&lt;code&gt;*&lt;/code&gt;（Windows 操作系统），参考：&lt;a href=&quot;https://github.com/fishjar/kiss-translator/issues/174&quot;&gt;https://github.com/fishjar/kiss-translator/issues/174&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;:::caution[警告]
如果你不确定，请勿更改提示词（Prompt）
:::&lt;/p&gt;
&lt;h2&gt;提示&lt;/h2&gt;
&lt;p&gt;:::tip
这里仅演示最基础的&lt;code&gt;接口配置&lt;/code&gt;，其他设置，比如&lt;code&gt;译文样式&lt;/code&gt;、&lt;code&gt;划词翻译&lt;/code&gt;、&lt;code&gt;输入框翻译&lt;/code&gt;、&lt;code&gt;数据同步&lt;/code&gt;等请自行探索，在页面中按下&lt;code&gt;Alt + Q&lt;/code&gt;组合键即可启动翻译，其余的按键绑定请在Edge 内置页面&lt;code&gt;edge://extensions/shortcuts&lt;/code&gt;中查看和更改&lt;/p&gt;
&lt;p&gt;由于&lt;code&gt;模型参数&lt;/code&gt;和&lt;code&gt;设备性能&lt;/code&gt;的差异，在使用本地 AI 翻译服务时，您的体验可能不如在线翻译服务（比如翻译质量差、延时高、设备资源占用高等），但相比于糟糕的、翻译地我一头雾水的 ■■ 翻译（是哪家我不说😈），这已经有了质的飞跃🤣
:::&lt;/p&gt;
</content:encoded></item><item><title>VSCode 本地 AI 指南</title><link>https://auspiceshirley.dev/posts/vscode-local-ai/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/vscode-local-ai/</guid><description>使用 Ollama 和 Continue 插件在 VSCode 内使用本地AI模型</description><pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note
本文将向你介绍如何使用 &lt;code&gt;Ollama&lt;/code&gt; 和 &lt;code&gt;Continue&lt;/code&gt; 插件在 &lt;code&gt;VSCode&lt;/code&gt; 内使用本地AI模型，以达到&lt;code&gt;保护隐私，维护数据安全&lt;/code&gt;的目的（以 &lt;code&gt;Windows 11 25H2 专业版&lt;/code&gt; 和受支持的&lt;code&gt;NVIDIA GPU&lt;/code&gt;为例，&lt;code&gt;AMD GPU&lt;/code&gt;暂不讨论）&lt;/p&gt;
&lt;p&gt;如果您决定本地部署AI模型，那么我默认您对 Windows 操作系统有基础的认知，比如&lt;code&gt;命令行&lt;/code&gt;、&lt;code&gt;软件安装&lt;/code&gt;、&lt;code&gt;防火墙&lt;/code&gt;等，同时我也默认您会使用 VSCode 的基础功能&lt;/p&gt;
&lt;p&gt;本文中&lt;code&gt;Windows 终端&lt;/code&gt;均使用&lt;code&gt;PowerShell&lt;/code&gt;
:::&lt;/p&gt;
&lt;p&gt;:::tip
本文使用 AI 辅助编写
:::&lt;/p&gt;
&lt;h2&gt;软件、扩展下载与安装&lt;/h2&gt;
&lt;h3&gt;NVIDIA 相关&lt;/h3&gt;
&lt;p&gt;:::note
前提：您的设备安装有 NVIDIA GPU 且 GPU 受支持
:::&lt;/p&gt;
&lt;p&gt;Ollama 支持计算能力为 5.0 及以上且驱动版本为 531 或更新版本的 NVIDIA GPU&lt;/p&gt;
&lt;p&gt;相关链接：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.ollama.com/gpu&quot;&gt;Hardware support - Ollama&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.nvidia.com/cuda/gpus&quot;&gt;CUDA GPU Compute Capability - NVIDIA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;为了更好发挥您的 NVIDIA GPU 算力，建议安装 &lt;a href=&quot;https://www.nvidia.cn/software/nvidia-app/&quot;&gt;NVIDIA App&lt;/a&gt; 、&lt;a href=&quot;https://developer.nvidia.com/cuda-toolkit-archive&quot;&gt;CUDA Toolkit&lt;/a&gt; 和 &lt;a href=&quot;https://developer.nvidia.com/cudnn&quot;&gt;cuDNN&lt;/a&gt;这三款软件&lt;/p&gt;
&lt;p&gt;验证 CUDA 支持性:&lt;/p&gt;
&lt;p&gt;在终端中输入以下命令并查看输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvidia-smi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出示例（部分）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;+----------------------------------------------------------------------+
| NVIDIA-SMI 591.86    Driver Version: 591.86    CUDA Version: 13.1    |
+----------------------+-------------------------+---------------------+
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中，&lt;code&gt;CUDA Version&lt;/code&gt;表示驱动支持的最高CUDA版本，CUDA 版本需与显卡驱动、cuDNN 版本严格匹配，否则会导致兼容性问题。&lt;/p&gt;
&lt;p&gt;验证 CUDA 是否正确安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvcc -V
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正确安装输出示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Tue_Dec_16_19:27:18_Pacific_Standard_Time_2025
Cuda compilation tools, release 13.1, V13.1.115
Build cuda_13.1.r13.1/compiler.37061995_0
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Visual Studio Code&lt;/h3&gt;
&lt;p&gt;:::tip
VSCode 是目前最流行、社区最活跃的免费、轻量开源编辑器之一。虽然它本身只是一个“文本编辑器”，但通过丰富的插件生态，它可以变成一个功能强大的 IDE，几乎能胜任所有语言的开发任务。
:::
::github{repo=&quot;microsoft/vscode&quot;}
下载链接：&lt;a href=&quot;https://code.visualstudio.com/Download&quot;&gt;https://code.visualstudio.com/Download&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;对于 Windows 用户，我推荐您下载图中红色箭头所指的&lt;code&gt;System Installer&lt;/code&gt;版本
&lt;img src=&quot;/images/postvscai/vsc-d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Continue&lt;/h3&gt;
&lt;p&gt;&amp;lt;details&amp;gt;
&amp;lt;summary&amp;gt;此方法不推荐使用（点击展开）&amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;:::tip
Continue 是一款开源的AI编程助手插件，能将 DeepSeek、ChatGPT、Claude 及 Gemini 等主流模型直接集成到编辑器内。它通过聊天、代码自动补全、解释、调试和重构等功能，在编写时提供智能辅助，支持本地部署，可完全免费使用。
:::
::github{repo=&quot;continuedev/continue&quot;}&lt;/p&gt;
&lt;p&gt;安装 Continue&lt;/p&gt;
&lt;p&gt;1、通过 Visual Studio Marketplace&lt;/p&gt;
&lt;p&gt;访问链接 &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=Continue.continue&quot;&gt;Continue - open-source AI code agent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击 &lt;code&gt;Install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postvscai/vsm-c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在弹出的窗口中点击&lt;code&gt;打开&lt;/code&gt;即可自动打开 VSCode 内的 &lt;code&gt;Continue&lt;/code&gt; 扩展页面（前提是已安装 VSCode）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postvscai/vsm-cd.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;安装&lt;/code&gt;即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postvscai/vs-cd.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;2、或者，你也可以直接在 VSCode 的扩展活动栏中搜索 &lt;code&gt;Continue&lt;/code&gt; 然后完成安装&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postvscai/vs-cd2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/details&amp;gt;&lt;/p&gt;
&lt;h3&gt;Ollama&lt;/h3&gt;
&lt;p&gt;:::tip
Ollama 是一个开源的大型语言模型（LLM）平台，旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。Ollama 提供了一个简单的方式来加载和使用各种预训练的语言模型，支持文本生成、翻译、代码编写、问答等多种自然语言处理任务。
:::
::github{repo=&quot;ollama/ollama&quot;}&lt;/p&gt;
&lt;p&gt;下载链接（官网）：&lt;a href=&quot;https://ollama.com&quot;&gt;https://ollama.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;:::important
对于下载的 OllamaSetup.exe 可执行文件，它的默认安装位置是 C盘，为了避免将软件安装到系统主驱动器，可以使用命令行附加参数更改安装位置 &lt;a href=&quot;https://docs.ollama.com/windows#changing-install-location&quot;&gt;官方文档&lt;/a&gt;
:::&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;Windows 终端&lt;/code&gt;成功执行以下命令的前提是通过&lt;code&gt;cd&lt;/code&gt;命令导航到文件所在位置，或者在文件所在文件夹内单击鼠标右键，点击&lt;code&gt;在终端中打开&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.\OllamaSetup.exe /DIR=&quot;d:\some\location&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将 d:\some\location 更改为您实际的安装位置，比如 D:\Ollama，然后在 Ollama 的安装向导中按照提示进行操作即可将 Ollama 安装到您指定的目录中&lt;/p&gt;
&lt;p&gt;更改 Ollama 模型储存位置&lt;/p&gt;
&lt;p&gt;根据&lt;a href=&quot;https://docs.ollama.com/windows#changing-model-location&quot;&gt;官方文档&lt;/a&gt;，需要设置名为&lt;code&gt;OLLAMA_MODELS&lt;/code&gt;的系统环境变量（或用户环境变量，建议设置成系统的），其值为你的模型文件夹的完整地址，如 &lt;code&gt;F:\OllamaModels&lt;/code&gt;。同时， Ollama 客户端中也要保持相同设置&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/postvscai/ollama-ml.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;验证环境变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo $env:OLLAMA_MODELS
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若输出类似以下内容则说明环境变量已生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; echo $env:OLLAMA_MODELS
F:\OllamaModels
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;调用 NVIDIA GPU&lt;/p&gt;
&lt;p&gt;添加名为&lt;code&gt;OLLAMA_GPU_LAYER&lt;/code&gt;的系统环境变量，变量值为&lt;code&gt;cuda&lt;/code&gt;。如果需要指定特定的 GPU ，可以添加名为&lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;的环境变量，变量值为&lt;code&gt;GPU的UUID&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;查看&lt;code&gt;GPU的UUID&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvidia-smi -L
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出示例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; nvidia-smi -L
GPU 0: GPU 型号 (UUID: GPU-6d7f66be-9e21-dcc8-5d5f-befea4a0eb87)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中的&lt;code&gt;GPU-6d7f66be-9e21-dcc8-5d5f-befea4a0eb87&lt;/code&gt;即为&lt;code&gt;GPU的UUID&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;查看环境变量是否生效：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo $env:OLLAMA_GPU_LAYER
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;echo $env:CUDA_VISIBLE_DEVICES
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若无输出，请检查添加环境变量时是否复制了&lt;code&gt;额外的空格&lt;/code&gt;，或者尝试&lt;code&gt;重启终端或系统&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;下载本地模型&lt;/h2&gt;
&lt;p&gt;访问 Ollama 模型页面 &lt;a href=&quot;https://ollama.com/library&quot;&gt;https://ollama.com/library&lt;/a&gt;，选择你需要的模型&lt;/p&gt;
&lt;p&gt;下面以 &lt;code&gt;deepseek-r1:8b&lt;/code&gt; 模型为例（&lt;a href=&quot;https://ollama.com/library/deepseek-r1&quot;&gt;https://ollama.com/library/deepseek-r1&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;首先，在 Windows 终端 执行以下指令查看 Ollama 是否安装成功&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ollama
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果您的终端输出类似以下的内容，则说明 Ollama 安装成功&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; ollama
Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model
  show        Show information for a model
  run         Run a model
  stop        Stop a running model
  pull        Pull a model from a registry
  push        Push a model to a registry
  signin      Sign in to ollama.com
  signout     Sign out from ollama.com
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  launch      Launch an integration with Ollama
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use &quot;ollama [command] --help&quot; for more information about a command.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行以下命令下载&lt;code&gt;deepseek-r1:8b&lt;/code&gt;模型文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ollama pull deepseek-r1:8b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果您执行的命令是&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ollama run deepseek-r1:8b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会在下载完成后直接运行对应的模型，不推荐首次下载时执行此命令&lt;/p&gt;
&lt;p&gt;当你看到终端中输出&lt;code&gt;success&lt;/code&gt;时则表示模型下载完成，这时候就可以安全地关闭终端了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Windows PowerShell
版权所有（C） Microsoft Corporation。保留所有权利。

安装最新的 PowerShell，了解新功能和改进！https://aka.ms/PSWindows

PS C:\Users\Admin&amp;gt; ollama pull deepseek-r1:8b
pulling manifest
pulling e6a7edc1a4d7: 100% ▕██████████████████████████████████▏ 5.2 GB
pulling c5ad996bda6e: 100% ▕██████████████████████████████████▏  556 B
pulling 6e4c38e1172f: 100% ▕██████████████████████████████████▏ 1.1 KB
pulling ed8474dc73db: 100% ▕██████████████████████████████████▏  179 B
pulling f64cd5418e4b: 100% ▕██████████████████████████████████▏  487 B
verifying sha256 digest
writing manifest
success
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;启动Ollama服务&lt;/h2&gt;
&lt;p&gt;方法一：&lt;/p&gt;
&lt;p&gt;直接启动 Ollama 客户端，并保持其后台运行&lt;/p&gt;
&lt;p&gt;或者通过命令行启动 Ollama 客户端&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;amp; &quot;ollama app.exe&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若 Ollama 正确安装，您应该会看到弹出的 Ollama 客户端窗口，&lt;code&gt;您可以安全地关闭终端&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;方法二：&lt;/p&gt;
&lt;p&gt;启动 Ollama 服务&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ollama serve
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;若您看到大量输出，则表明 Ollama 服务成功启动，&lt;code&gt;您不得关闭此终端窗口&lt;/code&gt;，在输出中找到&lt;code&gt;OLLAMA_MODELS:F:\\OllamaModels&lt;/code&gt;（示例内容）这一条，这表明 Ollama 的模型位置已成功更改&lt;/p&gt;
&lt;p&gt;Ollama 默认监听本地网络的&lt;code&gt;11434&lt;/code&gt;端口，访问&lt;a href=&quot;http://127.0.0.1:11434&quot;&gt;http://127.0.0.1:11434&lt;/a&gt;，您应该看到&lt;code&gt;Ollama is running&lt;/code&gt;的字样&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;Windows 安全中心&lt;/code&gt;弹出的类似&lt;code&gt;是否要允许此应用在公用和专用网络上进行通信？&lt;/code&gt;的窗口中选择&lt;code&gt;允许&lt;/code&gt;（仅首次启用时需要）&lt;/p&gt;
&lt;h2&gt;配置Continue插件&lt;/h2&gt;
&lt;p&gt;由于 Continue 插件默认显示的位置为 VSCode 的主侧边栏，建议将 Continue 显示的位置移动到 GitHub Copilot 所在的位置（辅助侧边栏）
&lt;img src=&quot;/images/postvscai/mcdl.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;将 Continue 插件显示的位置移动到辅助侧边栏后，接下来进行对 Continue 的配置&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;config.yaml&lt;/code&gt;配置文件（文件位置：&quot;C:\Users\your user name\.continue\config.yaml&quot;&lt;/p&gt;
&lt;p&gt;1、点击&lt;code&gt;设置&lt;/code&gt;图标
&lt;img src=&quot;/images/postvscai/cs1.png&quot; alt=&quot;&quot; /&gt;
2、点击&lt;code&gt;配置&lt;/code&gt;图标
&lt;img src=&quot;/images/postvscai/cs2.png&quot; alt=&quot;&quot; /&gt;
3、点击&lt;code&gt;设置&lt;/code&gt;图标
&lt;img src=&quot;/images/postvscai/cs3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这样三步下来，即可打开&lt;code&gt;config.yaml&lt;/code&gt;配置文件&lt;/p&gt;
&lt;p&gt;初始&lt;code&gt;config.yaml&lt;/code&gt;配置文件如下所示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: Local Config
version: 1.0.0
schema: v1
models: []
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
不同模型具体的配置方式请参考&lt;a href=&quot;https://www.continue.dev/ollama&quot;&gt;Continue 官方页面&lt;/a&gt;
:::
根据已下载的&lt;code&gt;deepseek-r1:8b&lt;/code&gt;模型，需要对&lt;code&gt;config.yaml&lt;/code&gt;文件进行更改：（&lt;a href=&quot;https://docs.continue.dev/customize/model-providers/top-level/ollama&quot;&gt;官方文档&lt;/a&gt;）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: Local Config
version: 1.0.0
schema: v1
models:
  - name: DeepSeek-R1:8B
    provider: ollama
    model: deepseek-r1:8b
    apiBase: http://localhost:11434
    roles:
      - apply
      - autocomplete
      - chat
      - edit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你有多个模型，可以按此格式继续添加配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: Local Config
version: 1.0.0
schema: v1
models:
  - name: DeepSeek-R1:8B
    provider: ollama
    model: deepseek-r1:8b
    apiBase: http://localhost:11434
    roles:
      - apply
      - autocomplete
      - chat
      - edit
  - name: Qwen2.5 Coder:7B
    provider: ollama
    model: qwen2.5-coder:7b
    apiBase: http://localhost:11434
    roles:
      - apply
      - autocomplete
      - chat
      - edit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你觉得手动添加比较麻烦，也可以让 Continue 自动检测已下载的模型：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: Local Config
version: 1.0.0
schema: v1
models:
  - name: Autodetect
    provider: ollama
    model: AUTODETECT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
恭喜！你现在可以在 VSCode 内使用本地模型了！当然，如果你有诸如 DeepSeek、ChatGPT、Gemini 或 Ollama 之类的 API 密钥的话，你也可以使用在线的模型，配置方式这里不再赘述，详见 Ollama 和 Continue 的官方文档。如果你只需运行本地模型的话，那你无需在此期间注册任何账号，请忽略 Ollama 和 Continue 内登录的提示。值得注意的是，由于&lt;code&gt;模型参数量&lt;/code&gt;和&lt;code&gt;设备算力&lt;/code&gt;的差异，你在本地运行的模型在使用体验上可能不如在线模型
:::
&lt;img src=&quot;/images/postvscai/dsr1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;模型联网&lt;/h2&gt;
&lt;p&gt;首先在 Ollama 客户端中打开&lt;code&gt;Expose Ollama to the network&lt;/code&gt;选项
&lt;img src=&quot;/images/postvscai/ollama-ol.png&quot; alt=&quot;&quot; /&gt;
在&lt;code&gt;Windows 安全中心&lt;/code&gt;弹出的类似&lt;code&gt;是否要允许此应用在公用和专用网络上进行通信？&lt;/code&gt;的窗口中选择&lt;code&gt;允许&lt;/code&gt;（仅首次启用时需要）
:::caution
请勿关闭 Windows 防火墙，以免您的设备受到不必要的网络安全威胁
:::
对于支持的模型，在 Continue 中选择&lt;code&gt;Plan&lt;/code&gt;或&lt;code&gt;Agent&lt;/code&gt;模式，实测&lt;code&gt;Chat&lt;/code&gt;模式无网络访问权限
&lt;img src=&quot;/images/postvscai/ccm.png&quot; alt=&quot;&quot; /&gt;
:::tip
如果你需要单独将网页链接复制进对话框，请去掉&lt;code&gt;https://&lt;/code&gt;或&lt;code&gt;http://&lt;/code&gt;后再手动补全，否则复制进去的是对应页面的标题（🤔真奇怪）
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
img {
border-radius: 0 !important;
}
a {
text-indent: 0em !important;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>平静之下，深海无声</title><link>https://auspiceshirley.dev/posts/silent-deep-sea/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/silent-deep-sea/</guid><description>又直到以后的某天，死亡与我而言再不是恐惧</description><pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;正文&lt;/h2&gt;
&lt;p&gt;&amp;lt;p&amp;gt;不知不觉便临近高考，没什么特别的感觉，出乎意外的平静。作为一个总是想很多的人，在别人眼里无时无刻不在发呆，在无数的那瞬间，我在寻找我于我人生的痕迹。究竟我的性格、思想、观点是在哪个阶段发生了改变？是小学举手回答问题却因为结巴说不出话而全班哄堂大笑？是初中第一次发现有人遥遥领先于我？是高一那一次表白失败还被大肆宣扬？无所谓这些了，我敏感多疑的性格似乎也是无法改变的了的。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;回想那时，第一次接触命理，我只觉得抓住了我的未来，我从无数符号、文字中挑寻着独属于我的未来。呵，这在他人眼里看不乏是一种逃避现实的手段，但与我而言，没有什么比这更真实了。每天人海里泳，校园里无数相同的衣服，相同的面容、相同的笑声、相同的建筑、相同的安排、相同的一切一切，压的我喘不过气，我拼了命想证明自己与他们的不同，命运啊！命运告诉我是有不同的，我的性格被命运捏造，藏在那被我解出的符号中。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;梦，记不清上次是什么时候在没有梦境的情况下度过一晚了。似乎自打记事起，我就从未间断过梦境，不可否认，它丰富我的生活，我梦见过我的过去，未来，现在。梦见过许久未联系的人，梦见过熟悉的人，梦见过关系不好的人，梦见过曾喜欢过的人。记得小时候，已不记得有多小了，那人在梦里牵着我的手，轻吻我的额头，谁？我不清楚，只牢牢记住她给我的一串数字，在梦境即将消散前，至于数字是什么，早就忘了。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;还有一次，在空无一物的房间醒来，被绑在椅子上，周围满是黑暗，只模糊看清正前方的门，忽然，门被打开，依然是看不清脸的人逐步走向我，手里拿着针管，我发不出声音，只静静的等待针管的整个注入，于是，在最后按压的那瞬间，整个人变得轻飘飘，我想我该睡了，思绪被清空，本就黑暗的房间变得更加黑暗，我从未有过这种感觉，这是死亡吗？毫无预兆的又一次醒来，怅然若失。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;死亡，不止一次思考，第一次是紧贴妈妈的胸口，聆听心跳的声音，妈妈说只要心跳还在跳动，人便还活着，那时的我想“生命真是脆弱啊，这个小家伙要是哪一天突然不跳了怎么办”。直到小学，在某个即将入眠前的夜晚，第一次将存在于死亡放在一起，“死亡是长眠吗？”而后我开始不自觉的惧怕死亡，我害怕一直在梦境里面，这一切都是虚假，我不愿我不想。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;又直到以后的某天，死亡与我而言再不是恐惧。下次再说吧，在高考完后。&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;h2&gt;后记&lt;/h2&gt;
&lt;p&gt;:::note&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&quot;text-align: right; margin: 20px 0;&quot;&amp;gt;
&amp;lt;div style=&quot;display: flex; justify-content: space-between; align-items: flex-start;&quot;&amp;gt;
&amp;lt;div class=&quot;note note-info&quot; style=&quot;flex: 1; text-align: left; margin-right: 30px; padding: 15px;&quot;&amp;gt;
&amp;lt;p&amp;gt;飞鸟给我这篇文章的时候没有拟题目，我思索一二，决定拟题为《平静之下，深海无声》，也放到了“浮生札记”这个专栏里，也不知道是否符合飞鸟的心意，暂且就这么定吧。&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;“死亡是长眠吗？”——一千个读者心中有一千个哈姆雷特，你怎么看呢？&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;未经原作者授权，禁止二次转载&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div style=&quot;text-align: right;&quot;&amp;gt;
&amp;lt;img class=&quot;feiniao-avatar&quot; src=&quot;/images/post0005/feiniao-avatar.png&quot;&amp;gt;
&amp;lt;p&amp;gt;本文的作者是 飞鸟&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;&amp;lt;p&amp;gt;最后献上飞鸟的倾情力作一张（调整了一下大小）：&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;
&amp;lt;img src=&quot;/images/post0005/001.png&quot;&amp;gt;
&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
.feiniao-avatar {
width: 150px !important;
height: 150px !important;
border-radius: 50% !important;
transition: transform 0.5s, box-shadow 0.5s !important;
margin-bottom: 50px ;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>Error code 500：Cloudflare全球网络故障事件</title><link>https://auspiceshirley.dev/posts/error-code-500/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/error-code-500/</guid><description>Error code 500：Cloudflare 全球网络故障事件</description><pubDate>Sat, 22 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cloudflarestatus.com/incidents/8gmgl950y3h7&quot;&gt;Cloudflare 状态&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/zh-cn/18-november-2025-outage/&quot;&gt;Cloudflare 博客&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;北京时间 2025 年 11 月 18 日，对于全球互联网而言是一个不太平静的日子。晚上 7 点 20 分左右，作为互联网基础设施的重要一环的 Cloudflare 经历了自 2019 年以来最严重的一次全球性服务中断，导致大量网站和在线服务无法访问。事件发生约 3 小时后，核心服务才基本恢复，所有系统在次日凌晨 1 点 06 分完全恢复正常。这次事件持续时长约 6 小时。&lt;/p&gt;
&lt;p&gt;然鹅，&quot;覆巢之下，焉有完卵&quot;，我的小破站也随之崩溃，悲😢（图中时间换算成北京时间为 2025-11-18 19:54:37）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/post0004/001.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;当时 Cloudflare 的状态页面显示，&quot; Cloudflare 全球网络遇到问题&quot;👇&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/post0004/002.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;甚至，用来检测网站是否宕机的 Downdetector，自己因为使用 Cloudflare 而出现了短暂的宕机&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/post0004/003.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;哦对了，还有 Cloudflare 自家的仪表板
&lt;img src=&quot;/images/post0004/006.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;🔍事件的来龙去脉&lt;/h2&gt;
&lt;h3&gt;🔧平静前的更改&lt;/h3&gt;
&lt;p&gt;当天北京时间晚北京时间上 7 点 05 分，Cloudflare 的工程师对其 ClickHouse 数据库集群进行了一项权限变更。这项变更是为了提升分布式查询的安全性和可靠性，确保查询在初始用户账户下执行，以实现更精细的权限控制。当时，没有人意识到这个善意的调整会埋下怎样的隐患。&lt;/p&gt;
&lt;h3&gt;💥崩溃的开始&lt;/h3&gt;
&lt;p&gt;仅仅 15 分钟后，在北京时间晚上 7 点 20 分，灾难准时降临。 Cloudflare 的全球网络开始出现严重故障，用户尝试访问依赖 Cloudflare 服务的网站时，看到的只是一个冰冷的 HTTP 5xx 错误页面。&lt;/p&gt;
&lt;p&gt;问题的核心指向了 Cloudflare 的 Bot 管理系统使用的一个核心文件——&quot;特征文件&quot;。这个文件就像一个&quot;识别手册&quot;，每五分钟自动生成一次，并快速发布到全球所有服务器上，用于帮助系统识别恶意机器人流量。&lt;/p&gt;
&lt;p&gt;然而，那次在晚上 7 点 05 分进行的数据库权限变更，导致生成此文件的查询行为发生了微妙变化。查询在获取数据时，意外地返回了大量重复的&quot;特征&quot;列，使得这个本该尺寸稳定的配置文件体积翻了一倍。&lt;/p&gt;
&lt;p&gt;当这个&quot;臃肿&quot;的文件被分发到全球服务器并尝试加载时，触发了核心代理软件中一个严格的安全限制——该软件对特征文件的大小有预设的上限（低于翻倍后的大小）。于是，软件崩溃了。由于这个处理流量的核心代理几乎接触网络上的每一个请求，故障迅速蔓延至整个全球网络。&lt;/p&gt;
&lt;h3&gt;🌀混乱的诊断过程&lt;/h3&gt;
&lt;p&gt;最初，Cloudflare 内部团队看到系统时好时坏的症状，曾怀疑遭遇了超大规模的 DDoS 攻击。&lt;/p&gt;
&lt;p&gt;更富戏剧性的是，一个巧合加深了这种怀疑：完全托管在 Cloudflare 基础设施之外的官方状态页面也发生了故障。这导致内部部分人员一度认为攻击者可能同时在以 Cloudflare 的系统及其状态页面为目标。&lt;/p&gt;
&lt;p&gt;事实上，这种时好时坏的现象，正是故障的真正根源所在。因为那个有问题的特征文件，仅在数据库集群中已更新的部分节点上才会生成。每五分钟，全球网络可能收到一份&quot;好&quot;的配置文件，系统短暂恢复；也可能收到一份&quot;坏&quot;的，系统再次崩溃。这种波动使得团队在初期难以迅速锁定问题本质。&lt;/p&gt;
&lt;h3&gt;🛠️艰难的恢复&lt;/h3&gt;
&lt;p&gt;经过一番排查，工程师们最终抓住了问题的元凶——那个因数据库权限变更而异常增大的特征文件。&lt;/p&gt;
&lt;p&gt;北京时间晚上 10 点 30 分左右，救援行动全面展开。团队阻止了异常文件的继续传播，并手动将一份早期已知的、正常的版本重新插入到特征文件的分发队列中。随后，他们开始强制重启全球网络中受影响的核心代理系统。至此，核心流量大致恢复正常。&lt;/p&gt;
&lt;p&gt;在接下来的几个小时里，团队持续努力，缓解因流量恢复上线而对网络各部分造成的负载增加。直到北京时间次日凌晨 1 点 06 分，Cloudflare 宣布所有系统均已恢复正常运行。&lt;/p&gt;
&lt;p&gt;这次中断事件清晰地展示了现代互联网生态中高度的相互依存性，以及一个微小技术问题在全球化的基础设施中被放大后所能产生的深远影响。&lt;/p&gt;
&lt;p&gt;&amp;lt;span style=&quot;font-size:24px&quot;&amp;gt;PS:&amp;lt;/span&amp;gt;&lt;/p&gt;
&lt;h3&gt;😂混乱中的一丝幽默&lt;/h3&gt;
&lt;p&gt;当 Cloudflare 的工程师们正在焦头烂额地排查故障时，互联网的另一个角落，一位名为 MrShibolet 的网友进行了一次&quot;自黑式&quot;整活。&lt;/p&gt;
&lt;p&gt;在服务中断期间，MrShibolet 发布了一条推文，内容是： &quot;First day at CloudFlare , pushed a little update and taking the afternoon off &quot; （译&quot;在 CloudFlare 的第一天，推送了一个小更新，下午休息了&quot;）并配上一个溜走的表情&quot;✌️&quot;。&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;
&amp;lt;img src=&quot;/images/post0004/004.jpg&quot; width=&quot;50%&quot;/&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;p&gt;值得一提的是，2025 年 10 月 20 日 AWS DNS 故障的时候，MrShibolet 也发过一条一模一样的推文，这次不过是把名字换成了 Cloudflare（我：🤣）。&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;
&amp;lt;img src=&quot;/images/post0004/005.jpeg&quot; width=&quot;50%&quot;&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;h3&gt;🖼️梗图&lt;/h3&gt;
&lt;p&gt;在网络上找了点事件相关的梗图，仅供大家一乐，请勿过度解读：&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;
&amp;lt;img src=&quot;/images/post0004/007.jpg&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;img src=&quot;/images/post0004/008.jpg&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;img src=&quot;/images/post0004/009.jpeg&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;img src=&quot;/images/post0004/013.png&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;img src=&quot;/images/post0004/014.png&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;img src=&quot;/images/post0004/015.png&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;img src=&quot;/images/post0004/012.png&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;p&gt;让我们为此次事件默哀：&lt;/p&gt;
&lt;p&gt;&amp;lt;center&amp;gt;
&amp;lt;img src=&quot;/images/post0004/011.jpg&quot; width=&quot;50%&quot;&amp;gt;
&amp;lt;/center&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;p style=&quot;text-align: center; font-size: 18px&quot;&amp;gt;以下是事件解决后相关 Cloudflare 状态页最终页面的全文中英双语对照翻译&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;text-align: right&quot;&amp;gt;按照更新时间正序排序，加入了换算后的北京时间（UTC+8）&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;color: #da304c; text-align: center; font-size: xx-large&quot;&amp;gt;Cloudflare 全球网络遇到问题&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;color: #da304c; text-align: center; font-size: x-large&quot;&amp;gt;Cloudflare Global Network experiencing issues&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;color: #62676a; text-align: center; font-size: x-large&quot;&amp;gt;Cloudflare 事件报告&amp;lt;/p&amp;gt;
&amp;lt;p style=&quot;color: #62676a; text-align: center; font-size: large&quot;&amp;gt;Incident Report for Cloudflare&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;h2&gt;事件时间线&lt;/h2&gt;
&lt;p&gt;:::warning[调查中 / Investigating]
Cloudflare 正在经历内部服务降级。部分服务可能会间歇性受影响。我们正专注于恢复服务。一旦能够修复，我们将提供更新。稍后将提供更多更新。&amp;lt;br&amp;gt;Cloudflare is experiencing an internal service degradation. Some services may be intermittently impacted. We are focused on restoring service. We will update as we are able to remediate. More updates to follow shortly.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 19:48 UTC+8 / 2025-11-18 11:48 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续调查此问题。&amp;lt;br&amp;gt;We are continuing to investigate this issue.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 20:03 UTC+8 / 2025-11-18 12:03 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们看到服务正在恢复，但在我们继续修复工作时，客户可能仍会观察到高于正常的错误率。&amp;lt;br&amp;gt;We are seeing services recover, but customers may continue to observe higher-than-normal error rates as we continue remediation efforts.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 20:21 UTC+8 / 2025-11-18 12:21 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续调查此问题。&amp;lt;br&amp;gt;We are continuing to investigate this issue.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 20:37 UTC+8 / 2025-11-18 12:37 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续调查此问题。&amp;lt;br&amp;gt;We are continuing to investigate this issue.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 20:53 UTC+8 / 2025-11-18 12:53 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
在尝试修复期间，我们已禁用伦敦的 WARP 访问。伦敦用户尝试通过 WARP 访问互联网将看到连接失败。&amp;lt;br&amp;gt;During our attempts to remediate, we have disabled WARP access in London. Users in London trying to access the Internet via WARP will see a failure to connect.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 21:04 UTC+8 / 2025-11-18 13:04 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::important[已识别 / Identified]
问题已识别，正在实施修复。&amp;lt;br&amp;gt;The issue has been identified and a fix is being implemented.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 21:09 UTC+8 / 2025-11-18 13:09 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们已进行更改，使 Cloudflare Access 和 WARP 恢复。Access 和 WARP 用户的错误率已恢复到事件前水平。我们已重新启用伦敦的 WARP 访问。我们正在继续努力恢复其他服务。&amp;lt;br&amp;gt;We have made changes that have allowed Cloudflare Access and WARP to recover. Error levels for Access and WARP users have returned to pre-incident rates. We have re-enabled WARP access in London. We are continuing to work towards restoring other services.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 21:13 UTC+8 / 2025-11-18 13:13 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续为应用服务客户恢复服务。&amp;lt;br&amp;gt;We are continuing working on restoring service for application services customers.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 21:35 UTC+8 / 2025-11-18 13:35 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续为应用服务客户恢复服务。&amp;lt;br&amp;gt;We are continuing working on restoring service for application services customers.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 21:58 UTC+8 / 2025-11-18 13:58 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续修复此问题。&amp;lt;br&amp;gt;We are continuing to work on a fix for this issue.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 22:22 UTC+8 / 2025-11-18 14:22 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们已部署更改，恢复了仪表板服务。我们仍在努力修复广泛的应用服务影响。&amp;lt;br&amp;gt;We&apos;ve deployed a change which has restored dashboard services. We are still working to remediate broad application services impact.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 22:34 UTC+8 / 2025-11-18 14:34 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::important[监控中 / Monitoring]
修复已实施，我们认为事件现已解决。我们正在继续监控错误，以确保所有服务恢复正常。&amp;lt;br&amp;gt;A fix has been implemented and we believe the incident is now resolved. We are continuing to monitor for errors to ensure all services are back to normal.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 22:42 UTC+8 / 2025-11-18 14:42 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
部分客户可能仍遇到登录或使用 Cloudflare 仪表板的问题。我们正在修复此问题，并继续监控任何进一步问题。&amp;lt;br&amp;gt;Some customers may be still experiencing issues logging into or using the Cloudflare dashboard. We are working on a fix to resolve this, and continuing to monitor for any further issues.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 22:57 UTC+8 / 2025-11-18 14:57 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们正在继续监控任何进一步问题。&amp;lt;br&amp;gt;We are continuing to monitor for any further issues.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 23:23 UTC+8 / 2025-11-18 15:23 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
团队正继续专注于修复后恢复服务。我们正在缓解部署后遗留的几个问题。&amp;lt;br&amp;gt;The team is continuing to focus on restoring service post-fix. We are mitigating several issues that remain post-deployment.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-18 23:40 UTC+8 / 2025-11-18 15:40 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
在我们进行全局恢复期间，机器人分数可能会间歇性受影响。一旦我们认为机器人分数完全恢复，我们将提供更新。&amp;lt;br&amp;gt;Bot scores will be impacted intermittently while we undergo global recovery. We will update once we believe bot scores are fully recovered.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-19 00:04 UTC+8 / 2025-11-18 16:04 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们继续看到错误和延迟改善，但仍收到间歇性错误报告。团队继续监控情况改善，并寻找加速完全恢复的方法。&amp;lt;br&amp;gt;We continue to see errors and latency improve but still have reports of intermittent errors. The team continues to monitor the situation as it improves, and looking for ways to accelerate full recovery.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-19 00:27 UTC+8 / 2025-11-18 16:27 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们在全球范围内处理服务并清除剩余错误和延迟时，继续看到错误下降。&amp;lt;br&amp;gt;We continue to see errors drop as we work through services globally and clearing remaining errors and latency.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-19 00:46 UTC+8 / 2025-11-18 16:46 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::note[更新 / Update]
我们继续通过恢复监控系统，并看到错误和延迟恢复正常水平。完整的事后调查和事件详情将尽快提供。&amp;lt;br&amp;gt;We continue to monitor the system through recovery and we are seeing errors and latency return to normal levels. A full post-incident investigation and details about the incident will be made available asap.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-19 01:14 UTC+8 / 2025-11-18 17:14 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::important[更新 / Update]
Cloudflare 服务目前运行正常。我们不再观察到整个网络中的错误率或延迟升高。我们的工程团队继续密切监控平台，并对早先的中断进行深入调查，但此时未进行任何配置更改。此时，重新启用事件期间临时禁用的任何 Cloudflare 服务被认为是安全的。调查完成后，我们将提供最终更新。&amp;lt;br&amp;gt;Cloudflare services are currently operating normally. We are no longer observing elevated errors or latency across the network. Our engineering teams continue to closely monitor the platform and perform a deeper investigation into the earlier disruption, but no configuration changes are being made at this time. At this point, it is considered safe to re-enable any Cloudflare services that were temporarily disabled during the incident. We will provide a final update once our investigation is complete.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-19 01:44 UTC+8 / 2025-11-18 17:44 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;p&gt;:::tip[已解决 / Resolved]
此事件已解决。&amp;lt;br&amp;gt;This incident has been resolved.&amp;lt;br&amp;gt;
&amp;lt;p style=&quot;text-align:right&quot;&amp;gt;2025-11-19 03:28 UTC+8 / 2025-11-18 19:28 UTC&amp;lt;/p&amp;gt;
:::&lt;/p&gt;
&lt;h2&gt;受影响的服务&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Access&lt;/li&gt;
&lt;li&gt;Bot 管理&lt;/li&gt;
&lt;li&gt;CDN/缓存&lt;/li&gt;
&lt;li&gt;仪表板&lt;/li&gt;
&lt;li&gt;防火墙&lt;/li&gt;
&lt;li&gt;网络&lt;/li&gt;
&lt;li&gt;WARP&lt;/li&gt;
&lt;li&gt;Workers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;hr /&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>一把神圣的匕首🗡️</title><link>https://auspiceshirley.dev/posts/a-sacred-dagger/</link><guid isPermaLink="true">https://auspiceshirley.dev/posts/a-sacred-dagger/</guid><description>假如你有一把锋利的匕首，这把匕首被赋予了神力，被这把匕首捅死的人将立刻前往极乐世界……</description><pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;:::note[转载已获得原作者 ywws 授权]
&lt;a href=&quot;https://tieba.baidu.com/home/main?id=tb.1.de4927fb.ro1nmjfW6iWzW3miSx1WkA&quot;&gt;作者主页&lt;/a&gt;
&lt;a href=&quot;https://tieba.baidu.com/p/10146203665?pid=152765162995&quot;&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;p&gt;请问你会用着把匕首来杀人吗？他们真的是苦的不能再苦的那种，你也可以用这把匕首带给更多的人来世的幸福，只不过他们统统都不知道，只知道死前几分钟有个疯子拿刀向他们刺去。&lt;/p&gt;
&lt;p&gt;&amp;lt;style&amp;gt;
.bdm-note a{
text-indent: 0em !important;
}
&amp;lt;/style&amp;gt;&lt;/p&gt;
</content:encoded></item></channel></rss>