<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://dongyue.org/</id>
  <title type="text">冬月的博客</title>
  <subtitle type="text">记录 Windows、开发工具与自建服务</subtitle>
  <updated>2026-09-24T00:00:00.000Z</updated>
  <author><name>冬月</name></author>
  <link rel="alternate" href="https://dongyue.org/"/>
  <link rel="self" href="https://dongyue.org/atom.xml"/>
  <generator uri="https://github.com/CuteLeaf/Firefly">Firefly v6.16.8</generator>
    <entry>
      <id>https://dongyue.org/posts/20/</id>
      <title type="text">VSCode 设置和插件推荐</title>
      <published>2026-09-24T00:00:00.000Z</published>
      <updated>2026-09-24T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/20/"/>
      <summary type="text">一份自用的 settings.json 和插件清单，重点在少折腾、够顺手。</summary>
      <content type="html"><![CDATA[<section><h2>设置推荐<a href="#设置推荐"><span>#</span></a></h2><p>点击左下角的齿轮按钮，再点击设置按钮，进入设置后，右上角会有一个文件图标，点击会显示打开 <code>settings.json</code> 设置文件，设置推荐如下：</p><div><div><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>// 文件自动保存策略：延迟一段时间后自动保存（默认延迟1000ms）</span></div></div><div><div><div>2</div></div><div><span>"files.autoSave"</span><span>: </span><span>"afterDelay"</span><span>,</span></div></div><div><div><div>3</div></div><div><span>// 自动猜测文件的字符编码，避免打开文件时出现乱码</span></div></div><div><div><div>4</div></div><div><span>"files.autoGuessEncoding"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>5</div></div><div><span>// 工作台列表（如文件列表、搜索结果）启用平滑滚动效果</span></div></div><div><div><div>6</div></div><div><span>"workbench.list.smoothScrolling"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>7</div></div><div><span>// 编辑器光标移动时启用平滑的插入符动画，视觉更流畅</span></div></div><div><div><div>8</div></div><div><span>"editor.cursorSmoothCaretAnimation"</span><span>: </span><span>"on"</span><span>,</span></div></div><div><div><div>9</div></div><div><span>// 编辑器内容滚动时启用平滑滚动效果</span></div></div><div><div><div>10</div></div><div><span>"editor.smoothScrolling"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>11</div></div><div><span>// 光标闪烁方式设置为平滑闪烁（而非固定频率的闪烁）</span></div></div><div><div><div>12</div></div><div><span>"editor.cursorBlinking"</span><span>: </span><span>"smooth"</span><span>,</span></div></div><div><div><div>13</div></div><div><span>// 允许通过鼠标滚轮配合Ctrl键（或Cmd键）缩放编辑器字体大小</span></div></div><div><div><div>14</div></div><div><span>"editor.mouseWheelZoom"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>15</div></div><div><span>// 粘贴内容时自动格式化，保持代码风格统一</span></div></div><div><div><div>16</div></div><div><span>"editor.formatOnPaste"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>17</div></div><div><span>// 输入代码时（如打完分号/括号）自动格式化当前行/块</span></div></div><div><div><div>18</div></div><div><span>"editor.formatOnType"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>19</div></div><div><span>// 保存文件时自动格式化整个文件，强制代码风格规范</span></div></div><div><div><div>20</div></div><div><span>"editor.formatOnSave"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>21</div></div><div><span>// 启用编辑器文字自动换行，无需横向滚动查看长行代码</span></div></div><div><div><div>22</div></div><div><span>"editor.wordWrap"</span><span>: </span><span>"on"</span><span>,</span></div></div><div><div><div>23</div></div><div><span>// 显示括号对的引导线，方便识别括号嵌套层级</span></div></div><div><div><div>24</div></div><div><span>"editor.guides.bracketPairs"</span><span>: </span><span>true</span><span>,</span></div></div><div><div><div>25</div></div><div><span>// 注：新版VSCode已默认开启括号对彩色高亮，无需手动配置</span></div></div><div><div><div>26</div></div><div><span>// "editor.bracketPairColorization.enabled": true,</span></div></div><div><div><div>27</div></div><div><span>// 代码片段提示不会阻止快速建议的显示，确保补全提示不被遮挡</span></div></div><div><div><div>28</div></div><div><span>"editor.suggest.snippetsPreventQuickSuggestions"</span><span>: </span><span>false</span><span>,</span></div></div><div><div><div>29</div></div><div><span>// 按Enter键接受代码建议时采用智能策略：仅在明确选中建议时生效</span></div></div><div><div><div>30</div></div><div><span>"editor.acceptSuggestionOnEnter"</span><span>: </span><span>"smart"</span><span>,</span></div></div><div><div><div>31</div></div><div><span>// 代码建议列表优先显示最近使用过的选项，提升补全效率</span></div></div><div><div><div>32</div></div><div><span>"editor.suggestSelection"</span><span>: </span><span>"recentlyUsed"</span><span>,</span></div></div><div><div><div>33</div></div><div><span>// 将VSCode的对话框样式设置为自定义样式（而非系统原生样式）</span></div></div><div><div><div>34</div></div><div><span>"window.dialogStyle"</span><span>: </span><span>"custom"</span><span>,</span></div></div><div><div><div>35</div></div><div><span>// 在编辑器右侧的概览标尺中显示断点位置，方便快速定位断点</span></div></div><div><div><div>36</div></div><div><span>"debug.showBreakpointsInOverviewRuler"</span><span>: </span><span>true</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div></section>
<section><h2>插件推荐<a href="#插件推荐"><span>#</span></a></h2><ul>
<li>Dracula Official 一款很有特点的吸血鬼主题</li>
<li>Material Icon Theme 好看，类型大而全</li>
<li>vscode-icons 也是一款不错的图标主题</li>
<li>Chinese (Simplified) (简体中文) 【中文语言包】这应该不用多介绍，是 vscode 的官方中文语言包</li>
<li>Error Lens 【错误提示】可以将原先显示的问题显示在对应行右侧并高亮</li>
<li>Path Intellisense 【路径补全】在输入路径时，有智能提示补全</li>
<li>Image preview 【图像预览】可以预览引入的图像</li>
<li>CodeSnap 【代码截图】一款非常好用的代码截图插件</li>
<li>Prettier - Code formatter 【代码格式化工具】支持超多语言，一键格式化，美化代码格式</li>
<li>GBK to UTF8 for vscode 【文件编码转化】可以将文件在 GBK 与 UTF8 编码之间无瑕转换</li>
<li>Hex Editor 用来查看文件的 hex 或 UTF-8 编码</li>
<li>Doxygen Documentation Generator 【文档生成器】写注释和文档时非常好用</li>
<li>Remote - SSH 【ssh 连接】连接远程服务器或虚拟机</li>
<li>Hungry Delete 【像 IDEA 的退格键】删除整个空格或制表符块，并减少程序员按退格键所需的时间</li>
<li>CodeGeeX 【AI 代码补全】可以自动补全代码，并且完全免费</li>
<li>Live Preview 【可以自动更新网页页面】右键点击显示预览就会在右侧打开预览，如果想在浏览器打开，可以点击右上角横杠，选择在浏览器打开</li>
<li>Auto Rename Tag 【修改 html 开始标签时，结束标签也会修改】</li>
<li>Easy LESS 【保存时自动转换为 css】</li>
<li>会了吧 <strong>【代码翻译工具】</strong> 打开源码文件可以自动分析所有包含的英语单词，并显示解释结果，先学单词再看代码。</li>
<li>cloudcode 插件，推荐启用 <strong>Bypass Permission</strong> 模式
<ul>
<li>打开 <strong>VS Code 设置</strong>（快捷键：<code>Ctrl/Cmd + ,</code>）</li>
<li>搜索 <code>Claude Code</code></li>
<li>找到 <strong>“Allow Dangerously Skip Permissions”</strong> 选项勾选启用</li>
</ul>
</li>
</ul><blockquote><p>参考：
版权声明：本文为 CSDN 博主「Star-tears」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。
原文链接：<a href="https://blog.csdn.net/qq_51173321/article/details/126287293" target="_blank">https://blog.csdn.net/qq_51173321/article/details/126287293</a></p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/19/</id>
      <title type="text">VSCode 快捷键</title>
      <published>2026-09-23T00:00:00.000Z</published>
      <updated>2026-09-23T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/19/"/>
      <summary type="text">VSCode 里最常用的一批快捷键，按编辑、导航和终端分组。</summary>
      <content type="html"><![CDATA[<section><h2>一、常用快捷键速查表<a href="#一常用快捷键速查表"><span>#</span></a></h2>

<table><thead><tr><th>功能</th><th>快捷键 (Windows/Linux)</th></tr></thead><tbody><tr><td>快速打开最近的文件</td><td>Ctrl + P</td></tr><tr><td>查找（当前文件）</td><td>Ctrl + F</td></tr><tr><td>替换（当前文件）</td><td>Ctrl + H</td></tr><tr><td>全局查找</td><td>Ctrl + Shift + F</td></tr><tr><td>全局替换</td><td>Ctrl + Shift + H</td></tr><tr><td>粘贴并格式化</td><td>Ctrl + Shift + V</td></tr><tr><td>复制</td><td>Ctrl + C</td></tr><tr><td>撤销</td><td>Ctrl + Z</td></tr><tr><td>打开命令面板</td><td>Ctrl + Shift + P</td></tr><tr><td>打开设置</td><td>Ctrl + ,</td></tr><tr><td>向左缩进</td><td>Ctrl + [</td></tr><tr><td>向右缩进</td><td>Ctrl + ]</td></tr><tr><td>单行注释</td><td>Ctrl + /</td></tr><tr><td>多行注释</td><td>Ctrl + Shift + /（可自定义）</td></tr><tr><td>格式化代码</td><td>Shift + Alt + F</td></tr></tbody></table></section>
<section><h2>二、常用操作技巧<a href="#二常用操作技巧"><span>#</span></a></h2><section><h3>1. 快速复制一行<a href="#1-快速复制一行"><span>#</span></a></h3><ul>
<li><strong>方式一</strong>：<code>Shift + Alt + ↑</code>（向上复制） / <code>↓</code>（向下复制）</li>
<li><strong>方式二</strong>：<code>Ctrl + C</code> 复制当前行，<code>Ctrl + V</code> 粘贴</li>
</ul></section><section><h3>2. 选定多个相同单词（批量修改）<a href="#2-选定多个相同单词批量修改"><span>#</span></a></h3><ul>
<li>双击选中一个单词，然后按 <code>Ctrl + D</code></li>
<li>每按一次会继续向下选中下一个相同单词，可同时编辑所有选中项</li>
</ul></section><section><h3>3. 添加多个光标<a href="#3-添加多个光标"><span>#</span></a></h3><ul>
<li><code>Ctrl + Alt + ↑</code>（向上添加光标）/ <code>↓</code>（向下添加光标）</li>
<li>适合在多个位置同时输入相同内容</li>
</ul></section><section><h3>4. 全局替换某个单词<a href="#4-全局替换某个单词"><span>#</span></a></h3><ul>
<li>按 <code>Ctrl + H</code> 打开替换面板</li>
<li>输入查找内容和替换内容后，选择<strong>全部替换</strong>（替换所有匹配项）</li>
</ul></section><section><h3>5. 快速定位到某一行<a href="#5-快速定位到某一行"><span>#</span></a></h3><ul>
<li>按 <code>Ctrl + G</code>，输入行号后回车，直接跳转</li>
</ul></section><section><h3>6. 选择某个区块（列选择/块选择）<a href="#6-选择某个区块列选择块选择"><span>#</span></a></h3><ul>
<li>按住 <code>Shift + Alt</code>，然后用鼠标拖动选择矩形区域</li>
</ul></section><section><h3>7. 放大 / 缩小整个编辑器界面<a href="#7-放大--缩小整个编辑器界面"><span>#</span></a></h3><ul>
<li>放大：<code>Ctrl + +</code>（或 <code>Ctrl + =</code>）</li>
<li>缩小：<code>Ctrl + -</code></li>
</ul></section></section>
<section><h2>三、自定义快捷键示例<a href="#三自定义快捷键示例"><span>#</span></a></h2><p>VSCode 支持自定义快捷键，避免与默认快捷键冲突，建议先熟悉默认设置后再修改。<strong>操作步骤：</strong></p><ol>
<li>按 <code>Ctrl + K</code>，然后按 <code>Ctrl + S</code>，打开键盘快捷方式设置（macOS：<code>⌘K ⌘S</code>）</li>
<li>在搜索框中输入命令名称，如 <strong>“切换块注释”</strong></li>
<li>找到对应条目，点击左侧的<strong>编辑</strong>按钮</li>
<li>直接按下你想要的新快捷键组合，如 <code>Ctrl + Shift + /</code></li>
<li>按回车保存即可</li>
</ol><blockquote><p>提示：多数快捷键均可通过此方法自定义，修改前建议确认不与系统或其他命令冲突。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/12/</id>
      <title type="text">SQL Server 安装</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/12/"/>
      <summary type="text">SQL Server 2022 Developer Edition 的下载地址，以及三种安装类型该怎么选。</summary>
      <content type="html"><![CDATA[<section><h2>下载<a href="#下载"><span>#</span></a></h2><p>官方引导安装器（SQL Server 2022 Developer Edition，开发测试免费）：</p><p><a href="https://go.microsoft.com/fwlink/?LinkID=2214968" target="_blank">https://go.microsoft.com/fwlink/?LinkID=2214968</a></p></section>
<section><h2>三种安装类型怎么选<a href="#三种安装类型怎么选"><span>#</span></a></h2><p>双击引导器后，第一个界面会让选安装类型：</p><p></p><figure><img alt="SQL Server 2022 Developer Edition 的三种安装类型" loading="lazy" width="1268" height="1005" src="/_astro/sql-server-install.Cx9y8xmo_wQN8I.webp" /><figcaption>SQL Server 2022 Developer Edition 的三种安装类型</figcaption></figure><p></p>

<table><thead><tr><th>选项</th><th>说明</th><th>适合场景</th></tr></thead><tbody><tr><td><strong>Basic</strong></td><td>用默认配置装数据库引擎，只需指定安装位置，其余全自动</td><td>本地开发、只想尽快跑起来</td></tr><tr><td><strong>Custom</strong></td><td>走完整安装向导，勾选要装的组件（复制、全文检索、SSAS 等），耗时长</td><td>需要特定组件或自定义实例名/排序规则</td></tr><tr><td><strong>Download Media</strong></td><td>不直接安装，只把安装介质（ISO/EXE）下载下来</td><td>离线部署、装到另一台不联网的机器</td></tr></tbody></table><p>一般自用选 <strong>Basic</strong> 就够：选个非系统盘的位置，等进度条走完即可。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/13/</id>
      <title type="text">在 Chrome 工具栏显示下载按钮</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/13/"/>
      <summary type="text">打开 download-bubble 实验开关，让 Chrome 工具栏上重新出现下载按钮。</summary>
      <content type="html"><![CDATA[<p>新版 Chrome 把下载内容收进了右上角的工具栏气泡里，但部分版本默认不显示这个按钮，下载进度只能靠地址栏的细小提示或 <code>Ctrl + J</code> 查看。打开一个实验开关就能把它固定到工具栏上。</p>
<section><h2>步骤<a href="#步骤"><span>#</span></a></h2><ol>
<li>
<p>先把浏览器升到最新版：右上角三个点 → <strong>帮助</strong> → <strong>关于 Google Chrome</strong>，等它自动更新完并重启。</p>
</li>
<li>
<p>地址栏输入下面这个地址：</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>chrome://flags/#download-bubble</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
<li>
<p>找到 <strong>Enable download bubble</strong> 这一项，把右侧的 <code>Default</code> 改成 <code>Enabled</code>，然后点右下角的 <strong>Relaunch</strong> 重启浏览器。</p>
</li>
<li>
<p>重启后按钮<strong>不会立刻出现</strong>。随便点一个链接下载一个文件，下载按钮就会出现在右上角，之后一直保留，点开就能看到下载清单和进度。</p>
</li>
</ol></section>
<section><h2>注意<a href="#注意"><span>#</span></a></h2><ul>
<li><code>chrome://flags</code> 里的实验功能会随版本更新被移除或转正，升级后如果找不到该项，说明官方已经把它设为默认行为。</li>
<li>想还原：把同一项改回 <code>Default</code> 再重启即可。</li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/14/</id>
      <title type="text">取消繁体切换快捷键</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/14/"/>
      <summary type="text">关掉微软拼音里 Ctrl+Shift+F 的简繁切换，避免打字时手滑把整段变成繁体。</summary>
      <content type="html"><![CDATA[<p>微软拼音默认把 <code>Ctrl + Shift + F</code> 绑成了”简体/繁体中文输入切换”。这个组合键离 <code>Ctrl + Shift + C/V</code> 太近，打字快了很容易误触，整段文字突然变成繁体还找不到原因。</p>
<p>关掉它只需要三步。</p>
<section><h2>第 1 步：进入语言选项<a href="#第-1-步进入语言选项"><span>#</span></a></h2><p>设置 → <strong>时间和语言</strong> → <strong>语言</strong>，找到”中文(简体，中国)“，点右侧的<strong>选项</strong>。</p><p></p><figure><img alt="在语言列表里点击中文的“选项”" loading="lazy" width="1240" height="941" src="/_astro/cancel-traditional-shortcut-1.CKco758V_XTENv.webp" /><figcaption>在语言列表里点击中文的“选项”</figcaption></figure><p></p></section>
<section><h2>第 2 步：打开微软拼音<a href="#第-2-步打开微软拼音"><span>#</span></a></h2><p>在”语言选项”页面向下找到<strong>键盘</strong>，点<strong>微软拼音</strong>。</p><p></p><figure><img alt="在键盘列表里选择微软拼音" loading="lazy" width="1240" height="941" src="/_astro/cancel-traditional-shortcut-2.DZl0Za33_10GmGr.webp" /><figcaption>在键盘列表里选择微软拼音</figcaption></figure><p></p></section>
<section><h2>第 3 步：关掉简繁切换热键<a href="#第-3-步关掉简繁切换热键"><span>#</span></a></h2><p>进入”微软拼音”的设置后切到<strong>按键</strong>页面，最下方的<strong>热键</strong>区域里有一项”简体/繁体中文输入切换”，把开关拨到<strong>关</strong>即可。右侧还能看到它当前绑定的按键（默认 <code>Ctrl + Shift + F</code>）。</p><p></p><figure><img alt="把“简体/繁体中文输入切换”的开关关掉" loading="lazy" width="1240" height="941" src="/_astro/cancel-traditional-shortcut-3.DAJsfq_K_1rPTkt.webp" /><figcaption>把“简体/繁体中文输入切换”的开关关掉</figcaption></figure><p></p><blockquote><p>用搜狗或其他第三方输入法的，去该输入法的”按键/快捷键”设置里找同类选项关闭，位置各不相同。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/15/</id>
      <title type="text">去掉快捷方式左下角的小箭头</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/15/"/>
      <summary type="text">改注册表里的覆盖图标并重建图标缓存，清掉桌面快捷方式左下角的小箭头。</summary>
      <content type="html"><![CDATA[<p>Windows 会给每个快捷方式（<code>.lnk</code>）左下角叠一个小箭头。它由注册表 <code>Shell Icons</code> 里的 29 和 77 号覆盖图标决定，把这两项指向一个透明图标，再重建图标缓存就干净了。</p>
<section><h2>清除箭头<a href="#清除箭头"><span>#</span></a></h2><p>新建一个 <code>.bat</code> 文件，粘贴下面的内容，右键”以管理员身份运行”：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>reg</span><span> add </span><span>"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons"</span><span> /v </span><span>29</span><span> /d </span><span><span>"</span><span>%</span></span><span>systemroot</span><span><span>%</span><span>\system32\imageres.dll,197"</span></span><span> /t reg_sz /f</span></div></div><div><div><div>2</div></div><div><span>reg</span><span> add </span><span>"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons"</span><span> /v </span><span>77</span><span> /d </span><span><span>"</span><span>%</span></span><span>systemroot</span><span><span>%</span><span>\system32\imageres.dll,197"</span></span><span> /t reg_sz /f</span></div></div><div><div><div>3</div></div><div><span>taskkill</span><span> /f /im explorer.exe</span></div></div><div><div><div>4</div></div><div><span>attrib</span><span> -s -r -h </span><span><span>"</span><span>%</span></span><span>userprofile</span><span><span>%</span><span>\AppData\Local\iconcache.db"</span></span></div></div><div><div><div>5</div></div><div><span>del</span><span> </span><span><span>"</span><span>%</span></span><span>userprofile</span><span><span>%</span><span>\AppData\Local\iconcache.db"</span></span><span> /f /q</span></div></div><div><div><div>6</div></div><div><span>start</span><span> explorer</span></div></div><div><div><div>7</div></div><div><span>pause</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>脚本会重启 <code>explorer.exe</code>，屏幕会闪一下、任务栏短暂消失，属正常现象。</p></section>
<section><h2>恢复箭头<a href="#恢复箭头"><span>#</span></a></h2><p>想改回默认外观，管理员身份运行下面这段：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>@</span><span>echo</span><span> </span><span>off</span></div></div><div><div><div>2</div></div><div><span>reg</span><span> delete </span><span>"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons"</span><span> /v </span><span>29</span><span> /f</span></div></div><div><div><div>3</div></div><div><span>reg</span><span> delete </span><span>"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons"</span><span> /v </span><span>77</span><span> /f</span></div></div><div><div><div>4</div></div><div><span>taskkill</span><span> /f /im explorer.exe</span></div></div><div><div><div>5</div></div><div><span>attrib</span><span> -s -r -h </span><span><span>"</span><span>%</span></span><span>userprofile</span><span><span>%</span><span>\AppData\Local\iconcache.db"</span></span><span> </span><span>2</span><span>&gt;</span><span>nul</span></div></div><div><div><div>6</div></div><div><span>del</span><span> </span><span><span>"</span><span>%</span></span><span>userprofile</span><span><span>%</span><span>\AppData\Local\iconcache.db"</span></span><span> /f /q </span><span>2</span><span>&gt;</span><span>nul</span></div></div><div><div><div>7</div></div><div><span>attrib</span><span> -s -r -h </span><span><span>"</span><span>%</span></span><span>localappdata</span><span><span>%</span><span>\IconCache.db"</span></span><span> </span><span>2</span><span>&gt;</span><span>nul</span></div></div><div><div><div>8</div></div><div><span>del</span><span> </span><span><span>"</span><span>%</span></span><span>localappdata</span><span><span>%</span><span>\IconCache.db"</span></span><span> /f /q </span><span>2</span><span>&gt;</span><span>nul</span></div></div><div><div><div>9</div></div><div><span>attrib</span><span> -s -r -h </span><span><span>"</span><span>%</span></span><span>userprofile</span><span><span>%</span><span>\AppData\Local\Microsoft\Windows\Explorer\iconcache*"</span></span><span> </span><span>2</span><span>&gt;</span><span>nul</span></div></div><div><div><div>10</div></div><div><span>del</span><span> </span><span><span>"</span><span>%</span></span><span>userprofile</span><span><span>%</span><span>\AppData\Local\Microsoft\Windows\Explorer\iconcache*"</span></span><span> /f /q </span><span>2</span><span>&gt;</span><span>nul</span></div></div><div><div><div>11</div></div><div><span>start</span><span> explorer</span></div></div><div><div><div>12</div></div><div><span>pause</span></div></div></code></pre><div><div></div><div></div></div></figure></div><blockquote><p>提示：两段脚本都必须以管理员身份运行，否则写 <code>HKLM</code> 会报拒绝访问。改完如果箭头还在，注销一次或重启资源管理器即可。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/16/</id>
      <title type="text">Windows 系统激活</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/16/"/>
      <summary type="text">用一条 PowerShell 命令调用 MAS 完成激活，以及激活状态的检查方法。</summary>
      <content type="html"><![CDATA[<blockquote><p>仅作个人环境存档。生产或商业环境请使用正版授权。</p></blockquote>
<section><h2>一条命令激活<a href="#一条命令激活"><span>#</span></a></h2><p>以管理员身份打开 PowerShell（开始菜单搜索 PowerShell → 右键”以管理员身份运行”），执行：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>irm https:</span><span>//</span><span>get.activated.win | iex</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>命令会在线拉取 MAS 脚本并弹出菜单，按提示选择对应系统的激活项即可。</p></section>
<section><h2>检查激活状态<a href="#检查激活状态"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>slmgr </span><span>/</span><span>xpr</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>弹出的对话框会直接说明当前系统的授权状态（已永久激活 / 剩余天数 / 未激活）。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/17/</id>
      <title type="text">在终端打开当前目录到文件资源管理器</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/17/"/>
      <summary type="text">在终端里用一条命令把当前目录丢进资源管理器，省掉一层层点进去的麻烦。</summary>
      <content type="html"><![CDATA[<p>在终端里翻到一个深层目录（比如某个项目的构建产物），想用图形界面对着文件操作时，不用再从 <code>C:\</code> 一层层点下去。</p>
<section><h2>打开当前目录<a href="#打开当前目录"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>explorer</span><span> </span><span>.</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div><p><code>explorer</code> 是 Windows 自带的命令，<code>.</code> 表示当前目录。终端停在哪儿，资源管理器就开在哪儿。</p></section>
<section><h2>几个常用变体<a href="#几个常用变体"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>explorer</span><span> </span><span>..</span><span>          </span><span># 打开上一级目录</span></div></div><div><div><div>2</div></div><div><span>explorer</span><span> </span><span>.</span><span>\d</span><span>ist</span><span>      </span><span># 打开当前目录下的 dist 文件夹</span></div></div><div><div><div>3</div></div><div><span>explorer</span><span> </span><span>C:</span><span>\U</span><span>sers</span><span>    </span><span># 打开绝对路径</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section>
<section><h2>注意<a href="#注意"><span>#</span></a></h2><p><code>explorer.exe</code> 成功打开窗口时<strong>返回值也是 1</strong>，所以在脚本里判断成败不能看退出码，否则会误判成失败。用它做跳转就行，不要拿来做存在性检查。</p></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/18/</id>
      <title type="text">Windows 常用快捷键整理</title>
      <published>2026-09-22T00:00:00.000Z</published>
      <updated>2026-09-22T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/18/"/>
      <summary type="text">Win、Alt、F 几组常用快捷键，按使用场景整理成一份速查表。</summary>
      <content type="html"><![CDATA[<ul>
<li><strong>Win + E</strong>：打开文件资源管理器（快速访问文件和文件夹）。</li>
<li><strong>Win + D</strong>：显示或隐藏桌面，快速清理屏幕上的所有窗口。</li>
<li><strong>Win + L</strong>：锁定计算机，保护你的隐私和数据。</li>
<li><strong>Win + R</strong>：打开“运行”对话框，快速启动程序或打开文件。</li>
<li><strong>Win + M</strong>：最小化所有窗口，只显示桌面。</li>
<li><strong>Win + Shift + M</strong>：还原之前最小化的所有窗口。</li>
<li><strong>Win + Tab</strong>：使用任务视图切换窗口，预览和管理打开的应用和窗口。</li>
<li><strong>Win + V</strong>（Windows 10及以后）：打开剪贴板历史记录，快速访问复制过的内容。</li>
<li><strong>Win + 加号键</strong> 和 <strong>Win + 减号键</strong>：放大或缩小当前页面或屏幕，辅助视力不佳的用户。</li>
<li><strong>Win + 方向键</strong>：调整窗口大小或移动窗口（左、右、上、下）。</li>
<li><strong>Alt + F4</strong>：关闭当前程序或窗口。</li>
<li><strong>Alt + Enter</strong>：在文件资源管理器中查看文件或文件夹的属性。</li>
<li><strong>F11</strong>：全屏化当前浏览器窗口（大多数浏览器支持）。 <strong>1. 基础系统操作</strong></li>
<li><strong>Win + E</strong>：打开文件资源管理器（快速访问文件和文件夹）。</li>
<li><strong>Win + D</strong>：显示或隐藏桌面，快速清理屏幕上的所有窗口。</li>
<li><strong>Win + L</strong>：锁定计算机，保护你的隐私和数据。</li>
<li><strong>Win + R</strong>：打开“运行”对话框，快速启动程序或打开文件。</li>
<li><strong>Win + M</strong>：最小化所有窗口，只显示桌面。</li>
<li><strong>Win + Shift + M</strong>：还原之前最小化的所有窗口。</li>
<li><strong>Win + Tab</strong>：使用任务视图切换窗口，预览和管理打开的应用和窗口。</li>
<li><strong>Win + X</strong>：打开Windows快速链接菜单，快速访问电源选项、设备管理器等。</li>
<li><strong>Win + PrtSc</strong>（Windows 10及以后）：将整个屏幕的截图保存为文件。</li>
<li><strong>PrtSc</strong>（Print Screen）：复制整个屏幕的截图到剪贴板。</li>
<li><strong>Alt + PrtSc</strong>：仅复制当前活动窗口的截图到剪贴板。</li>
<li>Ctrl + Home/End**：在文本编辑器中快速将光标移动到文件头或文件尾。 <strong>2. 文本编辑与浏览</strong></li>
<li><strong>Ctrl + S</strong>：保存文件或当前工作。</li>
<li><strong>Ctrl + N</strong>：新建文件或窗口。</li>
<li><strong>Ctrl + O</strong>：打开文件或窗口。</li>
<li><strong>Ctrl + Z</strong>：撤销上一步操作。</li>
<li><strong>Ctrl + F</strong>：查找文件或内容。</li>
<li><strong>Ctrl + X</strong>：剪切选定的内容或文件。</li>
<li><strong>Ctrl + C</strong>：复制选定的内容或文件。</li>
<li><strong>Ctrl + V</strong>：粘贴内容或文件。</li>
<li><strong>Ctrl + B/I/U</strong>：加粗、斜体、下划线文本（在文本编辑器中）。</li>
<li><strong>Ctrl + Shift</strong>：切换输入法（需结合其他键使用）。</li>
<li><strong>Ctrl + 空格</strong>：中英文输入法切换。</li>
<li><strong>F5</strong>：刷新页面或窗口。</li>
<li><strong>Ctrl + F5</strong>：在浏览器中强行刷新页面，忽略缓存。</li>
<li><strong>Ctrl + Home/End</strong>：在文本编辑器中快速将光标移动到文件头或文件尾。 <strong>3. 窗口与导航</strong></li>
<li><strong>Alt + F4</strong>：关闭当前程序或窗口。</li>
<li><strong>Alt + Tab</strong>：在打开的程序或窗口间切换。</li>
<li><strong>Alt + 空格 + C/N/R/X/M/S</strong>：在窗口标题栏上按Alt + 空格后，可使用这些键关闭、最小化、恢复、最大化、移动或改变窗口大小。</li>
<li><strong>Win + G</strong>（Windows 10及以后）：打开游戏栏，用于录屏、截图等。</li>
<li><strong>Win + V</strong>（Windows 10及以后）：打开剪贴板历史记录，快速访问复制过的内容。</li>
<li><strong>Win + Shift + S</strong>（Windows 10及以后）：启动截图工具，可选择区域截图。 <strong>4. 浏览器操作</strong></li>
<li><strong>Ctrl + T</strong>：在浏览器中打开新标签页。</li>
<li><strong>Ctrl + W</strong> 或 <strong>Ctrl + F4</strong>：关闭当前浏览器标签页。</li>
<li><strong>Ctrl + Shift + T</strong>：恢复最近关闭的标签页（大多数现代浏览器支持）。</li>
<li><strong>Ctrl + 数字键</strong>：快速切换到指定序号的标签页。</li>
<li><strong>Ctrl + D</strong>：将当前页面添加到书签。</li>
<li><strong>Ctrl + H</strong>：打开浏览器历史记录。</li>
<li><strong>F11</strong>：全屏化当前浏览器窗口（大多数浏览器支持）。 <strong>5 辅助功能</strong></li>
<li><strong>Win + 加号键</strong> 和 <strong>Win + 减号键</strong>：放大或缩小当前页面或屏幕，辅助视力不佳的用户。</li>
<li><strong>Win + 方向键</strong>：调整窗口大小或移动窗口（左、右、上、下）。</li>
<li><strong>Alt + Enter</strong>：在文件资源管理器中查看文件或文件夹的属性。</li>
</ul>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/11/</id>
      <title type="text">免信用卡为 Cloudflare 添加付款方式</title>
      <published>2026-09-17T00:00:00.000Z</published>
      <updated>2026-09-17T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/11/"/>
      <summary type="text">没有信用卡也能给 Cloudflare 添加付款方式，顺便记一下注意事项。</summary>
      <content type="html"><![CDATA[<section><h2>参考<a href="#参考"><span>#</span></a></h2><p><a href="https://jiaoblog.dpdns.org/feed/9" target="_blank">参考文章地址</a></p><p>本文章用于备份一下文档，具体可以参看上面的地址</p></section>
<section><h2>准备网址<a href="#准备网址"><span>#</span></a></h2><ul>
<li>信用卡号生成与验活(包括卡BIN生成)：<a href="https://chkr.cc/" target="_blank">https://chkr.cc/</a></li>
<li>地址生成器：<a href="https://meiguodizhi.com" target="_blank">https://meiguodizhi.com</a>
一个可以通过cf支付网关验证的卡段，这里我为大家提供几个：(实测第三个卡段的成功率最高)</li>
</ul><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span><span>601121255660</span><span>xxxx</span></span></div></div><div><div><div>2</div></div><div><span><span>546775142533</span><span>xxxx</span></span></div></div><div><div><div>3</div></div><div><span><span>622759531087</span><span>xxxx</span></span></div></div><div><div><div>4</div></div><div><span><span>479229938031</span><span>xxxx</span></span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div><p>打开<a href="https://chkr.cc/" target="_blank">https://chkr.cc/</a>
点击页面中的「⚙️」在弹出的页面中: 「BIN」填写上面给出的卡段，「Year」可以把年份改到3到5年以后(不用卡片到期后频繁生成新卡片)，「Quantity」是生成的卡片数量(一般填写50-100可以保证一轮即可检测出可以卡片，且检测时间不算长)，「Month」和「CVV」不用填写。然后点击下方的GENERATE</p><p><img alt="" loading="lazy" width="1440" height="764" src="/_astro/chkr-bin-settings.CtHSRGYl_ZoSoBa.webp" /></p><p>点击「⚙️」上方的**「▶️」**图标，开始检测卡片信息，请等待进度条至100%</p><p><img alt="" loading="lazy" width="1440" height="896" src="/_astro/chkr-card-check.Cn0Ch2UP_Z25280l.webp" /></p><section><h3>分享一下卡号<a href="#分享一下卡号"><span>#</span></a></h3><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>|</span><span>6227595310872182</span><span>|</span><span>06</span><span>|</span><span>2030</span><span>|</span><span>186</span><span>|</span></div></div><div><div><div>2</div></div><div><span>|</span><span>6227595310876548</span><span>|</span><span>04</span><span>|</span><span>2030</span><span>|</span><span>617</span><span>|</span></div></div><div><div><div>3</div></div><div><span>|</span><span>6227595310875326</span><span>|</span><span>04</span><span>|</span><span>2030</span><span>|</span><span>741</span><span>|</span></div></div><div><div><div>4</div></div><div><span>|</span><span>6227595310871135</span><span>|</span><span>04</span><span>|</span><span>2030</span><span>|</span><span>912</span><span>|</span></div></div><div><div><div>5</div></div><div><span>|</span><span>6227595310878692</span><span>|</span><span>09</span><span>|</span><span>2030</span><span>|</span><span>249</span><span>|</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section></section>
<section><h2>生成虚拟地址<a href="#生成虚拟地址"><span>#</span></a></h2><p>打开地址生成器，然后选择该卡片对应地区的地址生成
随便生成一个地址即可</p></section>
<section><h2>填写付款信息<a href="#填写付款信息"><span>#</span></a></h2><p>打开Cloudflare仪表盘
点击「存储和数据库」→「R2 对象存储」→「概述」此时会提示R2的收费标准，请点击下方的「将 R2 订阅到我的账户」</p><p><img alt="" loading="lazy" width="1440" height="894" src="/_astro/cloudflare-r2-subscribe.CB65ZHW5_VOM58.webp" /></p></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/10/</id>
      <title type="text">7-Zip 右键菜单改为一级</title>
      <published>2026-09-16T00:00:00.000Z</published>
      <updated>2026-09-16T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/10/"/>
      <summary type="text">用第三方 shell 扩展把 7-Zip 的二级右键菜单摊平成一级，少点一次。</summary>
      <content type="html"><![CDATA[<p>7-Zip 默认把功能收在二级菜单里：右键 → <strong>7-Zip</strong> → 再选”提取到当前文件夹”。压一两个包还行，批量解压时就显得啰嗦。换成下面这个 shell 扩展，可以把常用项直接摊到右键一级菜单。</p>
<section><h2>插件地址<a href="#插件地址"><span>#</span></a></h2><p><a href="https://github.com/Wings-Fantasy/7-Zip_Context_menu_plugin/releases" target="_blank">https://github.com/Wings-Fantasy/7-Zip_Context_menu_plugin/releases</a></p><p>仓库是开源的，从 releases 里挑最新的安装包下载即可。</p></section>
<section><h2>安装<a href="#安装"><span>#</span></a></h2><p>双击安装包，一路下一步装完。如果已经装过，安装程序会提示 <strong>“is already installed”</strong>，此时想覆盖安装就点 <strong>Reinstall</strong>。</p><p></p><figure><img alt="安装程序提示已安装，可点 Reinstall 重装" loading="lazy" width="975" height="662" src="/_astro/7zip-context-menu-plugin.DZwKc5M4_11BDOi.webp" /><figcaption>安装程序提示已安装，可点 Reinstall 重装</figcaption></figure><p></p></section>
<section><h2>让菜单生效<a href="#让菜单生效"><span>#</span></a></h2><p>安装完右键菜单不一定立刻变样，需要重启一次资源管理器：</p><ol>
<li><code>Ctrl + Shift + Esc</code> 打开任务管理器</li>
<li>找到 <strong>Windows 资源管理器</strong>，右键 → <strong>重新启动</strong></li>
</ol><p>任务栏闪一下之后，右键任意压缩包就能看到一级菜单里的 7-Zip 选项了。</p><blockquote><p>卸载：在”设置 → 应用”里找到该插件卸载，然后同样重启一次资源管理器。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/8/</id>
      <title type="text">如何关闭 WPS 网盘</title>
      <published>2026-09-10T00:00:00.000Z</published>
      <updated>2026-09-10T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/8/"/>
      <summary type="text">去掉资源管理器左侧的 WPS 网盘入口，恢复干净的文件树。</summary>
      <content type="html"><![CDATA[<blockquote><p>适用环境：Windows 10 / 11 + WPS Office（国内版）
目标：移除文件资源管理器<strong>导航窗格</strong>和**“此电脑”**中的”WPS网盘”图标，且不影响 WPS Office 本身的正常使用。</p></blockquote>
<hr />
<section><h2>一、背景<a href="#一背景"><span>#</span></a></h2><p>安装 WPS Office 后，文件资源管理器里会多出一个”WPS网盘”入口（侧边栏和”此电脑”里各一个）。WPS 客户端内的关闭开关藏得很深、部分版本甚至没有，卸载重装也不一定干净。最直接可靠的办法，是删除它在注册表 <code>NameSpace</code> 里注册的两个项。</p><p><strong>原理</strong>：资源管理器在以下两个注册表键下枚举”额外位置”图标，WPS 安装时会把自己的 GUID 子项写进去——</p>

<table><thead><tr><th>注册表路径</th><th>控制的位置</th></tr></thead><tbody><tr><td><code>HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace</code></td><td>“此电脑”里显示的附加项</td></tr><tr><td><code>HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace</code></td><td>桌面 / 导航窗格的附加项</td></tr></tbody></table><p>删掉这两个 WPS 的 GUID 子项，图标即消失。<code>HKLM</code>（HKEY_LOCAL_MACHINE）下虽有同名路径，但里面都是系统自带项（回收站、控制面板等），一般没有 WPS 的，<strong>不需要动</strong>。</p><p>本机（Win11 + WPS）实测查到的两个 GUID，仅供参考，<strong>请以自己机器上查到的名称为准</strong>：</p>

<table><thead><tr><th>位置</th><th>GUID</th></tr></thead><tbody><tr><td>此电脑</td><td><code>{5FCD4425-CA3A-48F4-A57C-B8A75C32ACB1}</code></td></tr><tr><td>桌面/导航窗格</td><td><code>{7AE6DE87-C956-4B40-9C89-3D166C9841D3}</code></td></tr></tbody></table><hr /></section>
<section><h2>二、准备工作：备份注册表<a href="#二准备工作备份注册表"><span>#</span></a></h2><blockquote><p>⚠️ 删除注册表项之前务必备份，出问题时双击 <code>.reg</code> 文件即可还原。</p></blockquote><p>手动方式：在 regedit 中右键 <code>NameSpace</code> 键 → <strong>导出</strong>，保存为 <code>.reg</code> 文件。</p><p>命令行方式（PowerShell）：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>reg export </span><span>"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"</span><span> </span><span><span>"</span><span>$</span></span><span>env:USERPROFILE</span><span>\Downloads\MyComputer-NameSpace-backup.reg"</span><span><span> </span><span>/</span><span>y</span></span></div></div><div><div><div>2</div></div><div><span>reg export </span><span>"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace"</span><span> </span><span><span>"</span><span>$</span></span><span>env:USERPROFILE</span><span>\Downloads\Desktop-NameSpace-backup.reg"</span><span><span> </span><span>/</span><span>y</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section>
<section><h2>三、方法一：注册表编辑器手动删除<a href="#三方法一注册表编辑器手动删除"><span>#</span></a></h2><ol>
<li>
<p><code>Win + R</code> 打开运行，输入 <code>regedit</code> 回车。</p>
</li>
<li>
<p>分别定位到以下两个路径（可直接复制粘贴到 regedit 顶部地址栏）：</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace</span></div></div><div><div><div>2</div></div><div><span>计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
<li>
<p>展开 <code>NameSpace</code>，找到与 WPS 相关的项（名称是一串 GUID）。<strong>辨认方法</strong>：</p>
<ul>
<li>选中 GUID 项后，一般看不到名字；去 <code>HKEY_CLASSES_ROOT\CLSID\{这个GUID}</code> 查看它的”默认”值，显示为 <strong>WPS网盘</strong> 的就是；</li>
<li>或者直接用 regedit 的 <code>Ctrl + F</code> 搜索 <code>WPS网盘</code>。</li>
</ul>
</li>
<li>
<p>右键该 GUID 项 → <strong>删除</strong>。两个路径下各有一个 WPS 的项，都要删。</p>
</li>
<li>
<p>刷新资源管理器（<code>F5</code>）看图标是否消失；如果没消失，重启 explorer：</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>taskkill </span><span>/</span><span>f </span><span>/</span><span>im </span></span><span>explorer.exe</span></div></div><div><div><div>2</div></div><div><span>start </span><span>explorer.exe</span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
</ol><hr /></section>
<section><h2>四、方法二：PowerShell 一条龙（识别 + 备份 + 删除 + 刷新）<a href="#四方法二powershell-一条龙识别--备份--删除--刷新"><span>#</span></a></h2><section><h3>第 1 步：枚举 NameSpace 下的项，确认哪个是 WPS<a href="#第-1-步枚举-namespace-下的项确认哪个是-wps"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>[</span><span>Console</span><span><span>]::OutputEncoding </span><span>=</span><span> [</span></span><span>System.Text.Encoding</span><span>]::UTF8</span></div></div><div><div><div>2</div></div><div><span>$roots</span><span><span> </span><span>=</span><span> </span></span><span>@</span><span>(</span></div></div><div><div><div>3</div></div><div><span>  </span><span>"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"</span><span>,</span></div></div><div><div><div>4</div></div><div><span>  </span><span>"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace"</span></div></div><div><div><div>5</div></div><div><span>)</span></div></div><div><div><div>6</div></div><div><span>foreach</span><span> (</span><span>$r</span><span> </span><span>in</span><span> </span><span>$roots</span><span>) {</span></div></div><div><div><div>7</div></div><div><span>  </span><span>Write-Host</span><span> </span><span><span>"== </span><span>$</span></span><span>r</span><span>"</span></div></div><div><div><div>8</div></div><div><span>  </span><span>Get-ChildItem</span><span> </span><span>$r</span><span> | </span><span>ForEach-Object</span><span> {</span></div></div><div><div><div>9</div></div><div><span>    </span><span>$g</span><span><span> </span><span>=</span><span> $_</span></span><span>.PSChildName</span></div></div><div><div><div>10</div></div><div><span>    </span><span>$n</span><span><span> </span><span>=</span><span> (</span></span><span>Get-ItemProperty</span><span> </span><span><span>"Registry::HKEY_CLASSES_ROOT\CLSID\</span><span>$</span></span><span>g</span><span>"</span><span><span> </span><span>-</span><span>ErrorAction SilentlyContinue).</span></span><span>"(default)"</span></div></div><div><div><div>11</div></div><div><span>    </span><span>Write-Host</span><span> </span><span><span>"   </span><span>$</span></span><span>g</span><span><span>  =&gt;  </span><span>$</span></span><span>n</span><span>"</span></div></div><div><div><div>12</div></div><div><span><span>  </span></span><span>}</span></div></div><div><div><div>13</div></div><div><span>}</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>输出中 <code>=&gt; WPS网盘</code> 的就是目标（形如 <code>{5FCD4425-CA3A-48F4-A57C-B8A75C32ACB1}  =&gt;  WPS网盘</code>）。</p></section><section><h3>第 2 步：备份 → 删除 → 通知系统刷新<a href="#第-2-步备份--删除--通知系统刷新"><span>#</span></a></h3><blockquote><p>先把下面两个 GUID 换成第 1 步在你机器上查到的。</p></blockquote><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>$mc</span><span><span> </span><span>=</span><span> </span></span><span>"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"</span></div></div><div><div><div>2</div></div><div><span>$dt</span><span><span> </span><span>=</span><span> </span></span><span>"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace"</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 1) 备份（还原时双击 .reg 导入即可）</span></div></div><div><div><div>5</div></div><div><span>reg export </span><span>"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace"</span><span> </span><span><span>"</span><span>$</span></span><span>env:USERPROFILE</span><span>\Downloads\MyComputer-NameSpace-backup.reg"</span><span><span> </span><span>/</span><span>y</span></span></div></div><div><div><div>6</div></div><div><span>reg export </span><span>"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace"</span><span> </span><span><span>"</span><span>$</span></span><span>env:USERPROFILE</span><span>\Downloads\Desktop-NameSpace-backup.reg"</span><span><span> </span><span>/</span><span>y</span></span></div></div><div><div><div>7</div></div><div>
</div></div><div><div><div>8</div></div><div><span># 2) 删除 WPS 的两个 GUID 子项</span></div></div><div><div><div>9</div></div><div><span>Remove-Item</span><span> </span><span><span>"</span><span>$</span></span><span>mc</span><span>\{5FCD4425-CA3A-48F4-A57C-B8A75C32ACB1}"</span><span><span> </span><span>-</span><span>Recurse</span></span></div></div><div><div><div>10</div></div><div><span>Remove-Item</span><span> </span><span><span>"</span><span>$</span></span><span>dt</span><span>\{7AE6DE87-C956-4B40-9C89-3D166C9841D3}"</span><span><span> </span><span>-</span><span>Recurse</span></span></div></div><div><div><div>11</div></div><div>
</div></div><div><div><div>12</div></div><div><span># 3) 通知资源管理器刷新（免重启 explorer，实测立即生效）</span></div></div><div><div><div>13</div></div><div><span>Add-Type</span><span><span> </span><span>-</span><span>MemberDefinition </span></span><span>'[DllImport("shell32.dll")] public static extern void SHChangeNotify(int wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);'</span><span><span> </span><span>-</span><span>Name ShellNotify </span><span>-</span><span>Namespace Win32</span></span></div></div><div><div><div>14</div></div><div><span>[</span><span>Win32.ShellNotify</span><span>]::SHChangeNotify(</span><span>0x08000000</span><span>, </span><span>0</span><span>, [</span><span>IntPtr</span><span>]::Zero, [</span><span>IntPtr</span><span>]::Zero)</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section><section><h3>第 3 步：验证<a href="#第-3-步验证"><span>#</span></a></h3><p>打开文件资源管理器，导航窗格里”WPS网盘”应已消失；也可以用命令确认：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>Test-Path</span><span> </span><span>"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace\{5FCD4425-CA3A-48F4-A57C-B8A75C32ACB1}"</span><span>   </span><span># 应为 False</span></div></div><div><div><div>2</div></div><div><span>Test-Path</span><span> </span><span>"HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{7AE6DE87-C956-4B40-9C89-3D166C9841D3}"</span><span>     </span><span># 应为 False</span></div></div></code></pre><div><div></div><div></div></div></figure></div><hr /></section></section>
<section><h2>五、注意事项与善后<a href="#五注意事项与善后"><span>#</span></a></h2><section><h3>1. 后台进程 wpscloudsvr.exe<a href="#1-后台进程-wpscloudsvrexe"><span>#</span></a></h3><p>删完注册表后，WPS 的后台云服务进程 <code>wpscloudsvr.exe</code> 可能仍在运行（它是网盘的后端）。普通权限下结束它会被拒绝（<strong>Access is denied</strong>，该进程以系统账户运行），需要管理员权限：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 需在管理员 PowerShell 中执行</span></div></div><div><div><div>2</div></div><div><span>Stop-Process</span><span><span> </span><span>-</span><span>Name wpscloudsvr </span><span>-</span><span>Force</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>它没有任何界面，对应的系统服务是”<strong>手动 + 已停止</strong>”，<strong>开机不会自启</strong>，只有打开 WPS 时才可能被拉起。不想折腾的话重启一次电脑即可清掉。</p></section><section><h3>2. 图标将来可能”复活”<a href="#2-图标将来可能复活"><span>#</span></a></h3><p>WPS 在运行或更新时，可能会把这两个注册表项<strong>重新写回</strong>。如果哪天图标又出现了：</p><ul>
<li>简单处理：按上面流程再删一次；</li>
<li>根治处理：去 WPS 里从源头关闭 —— 打开 WPS，<strong>首页 → 右上角全局设置（齿轮）→ 设置中心</strong>，找到”在’此电脑’中显示 WPS 网盘 / 云文档入口”之类的开关关掉（不同版本措辞略有差异）。</li>
</ul></section><section><h3>3. 如何还原<a href="#3-如何还原"><span>#</span></a></h3><p>双击之前导出的备份 <code>.reg</code> 文件，确认导入即可恢复删除的项。</p></section><section><h3>4. 其他相关项（可选）<a href="#4-其他相关项可选"><span>#</span></a></h3><ul>
<li>计划任务 <code>WpsUpdateTask_&lt;用户名&gt;</code>：WPS 的自动更新任务，与网盘无直接关系，介意的话可在”任务计划程序”中禁用。</li>
<li>自启动：<code>HKCU\...\Run</code> 下如出现 WPS 相关的启动项，可顺手删除。</li>
</ul><hr /></section></section>
<section><h2>附录：本次实测记录<a href="#附录本次实测记录"><span>#</span></a></h2><ul>
<li>系统：Windows 11（10.0.26200）</li>
<li>实际删除的项：
<ul>
<li><code>HKCU\...\Explorer\MyComputer\NameSpace\{5FCD4425-CA3A-48F4-A57C-B8A75C32ACB1}</code></li>
<li><code>HKCU\...\Explorer\Desktop\NameSpace\{7AE6DE87-C956-4B40-9C89-3D166C9841D3}</code></li>
</ul>
</li>
<li>备份文件：<code>Downloads\WPS-MyComputer-NameSpace-backup.reg</code>、<code>Downloads\WPS-Desktop-NameSpace-backup.reg</code></li>
<li>删除后调用 <code>SHChangeNotify</code> 刷新，<strong>无需重启 explorer</strong>，导航窗格图标立即消失；</li>
<li>复查两次，注册表项未被 <code>wpscloudsvr.exe</code> 写回；</li>
<li><code>HKLM</code> 下的两个 NameSpace 路径均无 WPS 项，未做改动。</li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/9/</id>
      <title type="text">Windows 11 下 VSCode 右键菜单“通过 Code 打开”中文乱码：原因与修复</title>
      <published>2026-09-10T00:00:00.000Z</published>
      <updated>2026-09-10T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/9/"/>
      <summary type="text">Windows 11 下右键菜单中文乱码的原因，以及注册表层面的修法。</summary>
      <content type="html"><![CDATA[<blockquote><p>作者：离尘<br />
链接：<a href="https://www.zhihu.com/question/2019777857736455403/answer/2022865748335273444" target="_blank">https://www.zhihu.com/question/2019777857736455403/answer/2022865748335273444</a><br />
来源：知乎<br />
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。</p></blockquote>
<hr />
<section><h2>0. 问题现象<a href="#0-问题现象"><span>#</span></a></h2><ul>
<li><strong>环境</strong>：Windows 11 + VSCode 1.109+ + HiBit Uninstaller 4.x</li>
<li><strong>触发</strong>：使用 HiBit Uninstaller 执行注册表扫描（即使未点击清理）后，VSCode 右键菜单项“通过 Code 打开”显示为中文乱码，但功能正常。</li>
<li><strong>关键特征</strong>：
<ul>
<li>仅在 Windows 11 复现，Windows 10 正常；</li>
<li>与用户名（中文/英文）无关；</li>
<li>卸载重装 VSCode 无效，只有用 HiBit 彻底清除残留后重装才能恢复。</li>
</ul>
</li>
</ul><hr /></section>
<section><h2>1. 根本原因分析<a href="#1-根本原因分析"><span>#</span></a></h2><p>通过反复实验和注册表监控，定位到三个因素的叠加：</p><section><h3>1.1 HiBit Uninstaller 的“副作用”<a href="#11-hibit-uninstaller-的副作用"><span>#</span></a></h3><p>该工具在执行注册表扫描时，会在 <code>HKLM\SOFTWARE\Classes</code> 下创建与 <code>HKCU\Software\Classes</code> 中同名且完全为空的项（例如 <code>VSCodeContextMenu</code>）。这一行为在旧版本（如 3.2.55）中就已存在。</p></section><section><h3>1.2 VSCode 的版本变更<a href="#12-vscode-的版本变更"><span>#</span></a></h3><p>VSCode 从 1.109 版本（2026年1月）开始，为适配 Windows 11 原生一级右键菜单，将右键菜单注册路径从旧的 <code>HKCR\*\shell\VSCode</code> 迁移至 <code>HKCU\Software\Classes</code> 区域。</p></section><section><h3>1.3 Windows 11 的优先级策略<a href="#13-windows-11-的优先级策略"><span>#</span></a></h3><p>传统上，HKCU 的优先级高于 HKLM，HKCR 是两者的合并视图。但在 Windows 11 中，对于 VSCode 这类外壳扩展，系统优先读取 HKLM 下的同名项。于是系统读到了 HiBit 创建的空项，无法获取显示文本，最终显示乱码。</p><p><strong>结论</strong>：只要让 <code>HKLM\SOFTWARE\Classes\VSCodeContextMenu</code> 这个项非空，即可彻底解决。</p><hr /></section></section>
<section><h2>2. 解决方案对比<a href="#2-解决方案对比"><span>#</span></a></h2>

<table><thead><tr><th>方案</th><th>操作</th><th>效果</th><th>是否彻底</th></tr></thead><tbody><tr><td>删除空项</td><td>删除 HKLM 下的空 <code>VSCodeContextMenu</code></td><td>立即恢复，但下次扫描复现</td><td>❌ 临时</td></tr><tr><td>写入 Title</td><td>在空项中添加 <code>Title</code> 值</td><td>系统读取到正确文字，HiBit 不会覆盖已有值的项</td><td>✅ 彻底</td></tr></tbody></table><hr /></section>
<section><h2>3. 推荐方案：写入脚本（彻底修复）<a href="#3-推荐方案写入脚本彻底修复"><span>#</span></a></h2><p>以下 PowerShell 脚本会自动提权，在 <code>HKLM\SOFTWARE\Classes\VSCodeContextMenu</code> 下创建 <code>Title</code> 值，内容为“通过 Code 打开”。</p><p><strong>使用方法</strong>：</p><ol>
<li>以管理员身份打开 PowerShell。</li>
<li>复制下方代码并粘贴执行。</li>
<li>重启文件资源管理器或注销重新登录。</li>
</ol><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;#</span></div></div><div><div><div>2</div></div><div><span>.</span><span>SYNOPSIS</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>为 HKLM 下的 VSCodeContextMenu 添加 Title 值，解决右键菜单乱码问题。</span></div></div><div><div><div>4</div></div><div><span>.</span><span>DESCRIPTION</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>此脚本仅在 HKLM\SOFTWARE\Classes\VSCodeContextMenu 下操作：</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>- 如果项不存在，则创建；</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>- 然后添加（或修改）名为 Title 的可扩充字符串值，数据为“通过 Code 打开”。</span></div></div><div><div><div>8</div></div><div><span><span>    </span></span><span>操作前自动提权，不备份注册表，但生成详细日志到桌面，便于排查问题。</span></div></div><div><div><div>9</div></div><div><span>.PRINCIPLE</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>问题根源：HiBit Uninstaller 在 HKLM 下创建了空的 VSCodeContextMenu 项，</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>而 Windows 11 优先读取 HKLM 下的配置，导致菜单显示乱码。</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>添加 Title 值后，HKLM 下的项有了有效数据，系统就能正常显示。</span></div></div><div><div><div>13</div></div><div><span>.</span><span>NOTES</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>需要管理员权限。脚本会自动提权。</span></div></div><div><div><div>15</div></div><div><span><span>    </span></span><span>只操作指定项，不影响其他注册表位置。</span></div></div><div><div><div>16</div></div><div><span>#&gt;</span></div></div><div><div><div>17</div></div><div>
</div></div><div><div><div>18</div></div><div><span># ========== 自动提权 ==========</span></div></div><div><div><div>19</div></div><div><span>$isAdmin</span><span><span> </span><span>=</span><span> ([</span></span><span>Security.Principal.WindowsPrincipal</span><span>] [</span><span>Security.Principal.WindowsIdentity</span><span>]::GetCurrent()).IsInRole([</span><span>Security.Principal.WindowsBuiltInRole</span><span>] </span><span>"Administrator"</span><span>)</span></div></div><div><div><div>20</div></div><div><span>if</span><span><span> (</span><span>-not</span><span> </span></span><span>$isAdmin</span><span>) {</span></div></div><div><div><div>21</div></div><div><span>    </span><span>$scriptPath</span><span><span> </span><span>=</span><span> $MyInvocation</span></span><span>.MyCommand.Path</span></div></div><div><div><div>22</div></div><div><span>    </span><span>if</span><span> (</span><span>$scriptPath</span><span>) {</span></div></div><div><div><div>23</div></div><div><span>        </span><span>Write-Host</span><span> </span><span>"当前不是管理员权限，正在尝试以管理员身份重新启动..."</span><span><span> </span><span>-</span><span>ForegroundColor Yellow</span></span></div></div><div><div><div>24</div></div><div><span>        </span><span>Start-Process</span><span><span> PowerShell </span><span>-</span><span>Verb RunAs </span><span>-</span><span>ArgumentList </span></span><span>"-NoProfile -ExecutionPolicy Bypass -File </span><span>`"</span><span>$</span><span>scriptPath</span><span>`"</span><span>"</span></div></div><div><div><div>25</div></div><div><span>        </span><span>exit</span></div></div><div><div><div>26</div></div><div><span><span>    </span></span><span>} </span><span>else</span><span> {</span></div></div><div><div><div>27</div></div><div><span>        </span><span>Write-Host</span><span> </span><span>"错误：需要管理员权限才能运行此脚本。"</span><span><span> </span><span>-</span><span>ForegroundColor Red</span></span></div></div><div><div><div>28</div></div><div><span>        </span><span>Write-Host</span><span> </span><span>"请关闭此窗口，然后右键点击 PowerShell 选择“</span><span>以管理员身份运行</span><span>”，再重新粘贴脚本。"</span><span><span> </span><span>-</span><span>ForegroundColor Yellow</span></span></div></div><div><div><div>29</div></div><div><span>        </span><span>Read-Host</span><span> </span><span>"按回车键退出"</span></div></div><div><div><div>30</div></div><div><span>        </span><span>exit</span></div></div><div><div><div>31</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>32</div></div><div><span>}</span></div></div><div><div><div>33</div></div><div>
</div></div><div><div><div>34</div></div><div><span># ========== 设置日志路径 ==========</span></div></div><div><div><div>35</div></div><div><span>$logDir</span><span><span> </span><span>=</span><span> </span></span><span><span>"</span><span>$</span></span><span>env:USERPROFILE</span><span>\Desktop"</span></div></div><div><div><div>36</div></div><div><span>$logName</span><span><span> </span><span>=</span><span> </span></span><span>"AddVSCodeTitle_</span><span>$(</span><span>Get-Date</span><span> </span><span>-</span><span>Format </span><span>'yyyyMMdd_HHmmss'</span><span>)</span><span>.log"</span></div></div><div><div><div>37</div></div><div><span>$logFile</span><span><span> </span><span>=</span><span> </span></span><span>Join-Path</span><span> </span><span>$logDir</span><span> </span><span>$logName</span></div></div><div><div><div>38</div></div><div>
</div></div><div><div><div>39</div></div><div><span># 日志写入函数</span></div></div><div><div><div>40</div></div><div><span>function</span><span> </span><span>Write-Log</span><span> {</span></div></div><div><div><div>41</div></div><div><span>    </span><span>param</span><span>([</span><span>string</span><span>]</span><span>$Message</span><span>)</span></div></div><div><div><div>42</div></div><div><span>    </span><span>$timestamp</span><span><span> </span><span>=</span><span> </span></span><span>Get-Date</span><span><span> </span><span>-</span><span>Format </span></span><span>"yyyy-MM-dd HH:mm:ss.fff"</span></div></div><div><div><div>43</div></div><div><span>    </span><span>$logLine</span><span><span> </span><span>=</span><span> </span></span><span><span>"</span><span>$</span></span><span>timestamp</span><span><span> - </span><span>$</span></span><span>Message</span><span>"</span></div></div><div><div><div>44</div></div><div><span>    </span><span>Add-Content</span><span><span> </span><span>-</span><span>Path </span></span><span>$logFile</span><span><span> </span><span>-</span><span>Value </span></span><span>$logLine</span><span><span> </span><span>-</span><span>Encoding UTF8</span></span></div></div><div><div><div>45</div></div><div><span>    </span><span>Write-Host</span><span> </span><span>$Message</span></div></div><div><div><div>46</div></div><div><span>}</span></div></div><div><div><div>47</div></div><div>
</div></div><div><div><div>48</div></div><div><span># 初始化日志</span></div></div><div><div><div>49</div></div><div><span>Write-Log</span><span> </span><span>"========================================"</span></div></div><div><div><div>50</div></div><div><span>Write-Log</span><span> </span><span>"VSCode 右键菜单修复工具 (添加Title值) - 操作日志"</span></div></div><div><div><div>51</div></div><div><span>Write-Log</span><span> </span><span>"开始时间: </span><span>$(</span><span>Get-Date</span><span> </span><span>-</span><span>Format </span><span>'yyyy-MM-dd HH:mm:ss'</span><span>)</span><span>"</span></div></div><div><div><div>52</div></div><div><span>Write-Log</span><span> </span><span>"========================================"</span></div></div><div><div><div>53</div></div><div><span>Write-Log</span><span> </span><span>"操作目标: HKLM\SOFTWARE\Classes\VSCodeContextMenu"</span></div></div><div><div><div>54</div></div><div><span>Write-Log</span><span> </span><span>"操作内容: 设置 Title = '通过 Code 打开' (类型: 可扩充字符串值)"</span></div></div><div><div><div>55</div></div><div><span>Write-Log</span><span> </span><span>""</span></div></div><div><div><div>56</div></div><div>
</div></div><div><div><div>57</div></div><div><span># ========== 定义路径 ==========</span></div></div><div><div><div>58</div></div><div><span>$regPath</span><span><span> </span><span>=</span><span> </span></span><span>"HKLM:\SOFTWARE\Classes\VSCodeContextMenu"</span></div></div><div><div><div>59</div></div><div><span>$valueName</span><span><span> </span><span>=</span><span> </span></span><span>"Title"</span></div></div><div><div><div>60</div></div><div><span>$valueData</span><span><span> </span><span>=</span><span> </span></span><span>"通过 Code 打开"</span></div></div><div><div><div>61</div></div><div><span>$valueType</span><span><span> </span><span>=</span><span> </span></span><span>"ExpandString"</span></div></div><div><div><div>62</div></div><div>
</div></div><div><div><div>63</div></div><div><span># ========== 检查并创建项 ==========</span></div></div><div><div><div>64</div></div><div><span>Write-Log</span><span> </span><span>"[1] 检查目标项是否存在..."</span></div></div><div><div><div>65</div></div><div><span>if</span><span><span> (</span><span>-not</span><span> (</span></span><span>Test-Path</span><span> </span><span>$regPath</span><span>)) {</span></div></div><div><div><div>66</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"    目标项不存在，正在创建..."</span></div></div><div><div><div>67</div></div><div><span>    </span><span>try</span><span> {</span></div></div><div><div><div>68</div></div><div><span>        </span><span>New-Item</span><span><span> </span><span>-</span><span>Path </span></span><span>$regPath</span><span><span> </span><span>-</span><span>Force </span><span>-</span><span>ErrorAction Stop | </span></span><span>Out-Null</span></div></div><div><div><div>69</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    创建成功。"</span></div></div><div><div><div>70</div></div><div><span><span>    </span></span><span>} </span><span>catch</span><span> {</span></div></div><div><div><div>71</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    创建失败！错误信息: $_"</span></div></div><div><div><div>72</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    请检查权限或路径是否正确。"</span></div></div><div><div><div>73</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"操作中止。"</span></div></div><div><div><div>74</div></div><div><span>        </span><span>Read-Host</span><span> </span><span>"按回车键退出"</span></div></div><div><div><div>75</div></div><div><span>        </span><span>exit</span><span> </span><span>1</span></div></div><div><div><div>76</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>77</div></div><div><span>} </span><span>else</span><span> {</span></div></div><div><div><div>78</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"    目标项已存在。"</span></div></div><div><div><div>79</div></div><div><span>}</span></div></div><div><div><div>80</div></div><div>
</div></div><div><div><div>81</div></div><div><span># ========== 记录当前状态（如果有Title值） ==========</span></div></div><div><div><div>82</div></div><div><span>try</span><span> {</span></div></div><div><div><div>83</div></div><div><span>    </span><span>$currentValue</span><span><span> </span><span>=</span><span> </span></span><span>Get-ItemProperty</span><span><span> </span><span>-</span><span>Path </span></span><span>$regPath</span><span><span> </span><span>-</span><span>Name </span></span><span>$valueName</span><span><span> </span><span>-</span><span>ErrorAction SilentlyContinue</span></span></div></div><div><div><div>84</div></div><div><span>    </span><span>if</span><span> (</span><span>$currentValue</span><span><span> </span><span>-and</span><span> </span></span><span>$currentValue.Title</span><span>) {</span></div></div><div><div><div>85</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"[2] 当前 Title 值已存在，内容为: '</span><span>$(</span><span>$</span><span>currentValue.Title</span><span>)</span><span>'"</span></div></div><div><div><div>86</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    将覆盖为新值。"</span></div></div><div><div><div>87</div></div><div><span><span>    </span></span><span>} </span><span>else</span><span> {</span></div></div><div><div><div>88</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"[2] 当前 Title 值不存在，将新建。"</span></div></div><div><div><div>89</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>90</div></div><div><span>} </span><span>catch</span><span> {</span></div></div><div><div><div>91</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"[2] 读取当前值失败（不影响后续操作）: $_"</span></div></div><div><div><div>92</div></div><div><span>}</span></div></div><div><div><div>93</div></div><div>
</div></div><div><div><div>94</div></div><div><span># ========== 设置 Title 值 ==========</span></div></div><div><div><div>95</div></div><div><span>Write-Log</span><span> </span><span>"[3] 正在设置 Title 值..."</span></div></div><div><div><div>96</div></div><div><span>try</span><span> {</span></div></div><div><div><div>97</div></div><div><span>    </span><span>Set-ItemProperty</span><span><span> </span><span>-</span><span>Path </span></span><span>$regPath</span><span><span> </span><span>-</span><span>Name </span></span><span>$valueName</span><span><span> </span><span>-</span><span>Value </span></span><span>$valueData</span><span><span> </span><span>-</span><span>Type </span></span><span>$valueType</span><span><span> </span><span>-</span><span>Force </span><span>-</span><span>ErrorAction Stop</span></span></div></div><div><div><div>98</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"    设置成功。"</span></div></div><div><div><div>99</div></div><div><span>} </span><span>catch</span><span> {</span></div></div><div><div><div>100</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"    设置失败！错误信息: $_"</span></div></div><div><div><div>101</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"操作中止。"</span></div></div><div><div><div>102</div></div><div><span>    </span><span>Read-Host</span><span> </span><span>"按回车键退出"</span></div></div><div><div><div>103</div></div><div><span>    </span><span>exit</span><span> </span><span>1</span></div></div><div><div><div>104</div></div><div><span>}</span></div></div><div><div><div>105</div></div><div>
</div></div><div><div><div>106</div></div><div><span># ========== 验证设置结果 ==========</span></div></div><div><div><div>107</div></div><div><span>Write-Log</span><span> </span><span>"[4] 验证设置结果..."</span></div></div><div><div><div>108</div></div><div><span>try</span><span> {</span></div></div><div><div><div>109</div></div><div><span>    </span><span>$newValue</span><span><span> </span><span>=</span><span> </span></span><span>Get-ItemProperty</span><span><span> </span><span>-</span><span>Path </span></span><span>$regPath</span><span><span> </span><span>-</span><span>Name </span></span><span>$valueName</span><span><span> </span><span>-</span><span>ErrorAction SilentlyContinue</span></span></div></div><div><div><div>110</div></div><div><span>    </span><span>if</span><span> (</span><span>$newValue</span><span><span> </span><span>-and</span><span> </span></span><span>$newValue.Title</span><span><span> </span><span>-eq</span><span> </span></span><span>$valueData</span><span>) {</span></div></div><div><div><div>111</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    验证通过，Title 值为: '</span><span>$(</span><span>$</span><span>newValue.Title</span><span>)</span><span>'"</span></div></div><div><div><div>112</div></div><div><span><span>    </span></span><span>} </span><span>else</span><span> {</span></div></div><div><div><div>113</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    验证失败！当前值为: </span><span>$(</span><span>$</span><span>newValue.Title</span><span>)</span><span><span>，期望为: '</span><span>$</span></span><span>valueData</span><span>'"</span></div></div><div><div><div>114</div></div><div><span>        </span><span>Write-Log</span><span> </span><span>"    请手动检查注册表。"</span></div></div><div><div><div>115</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>116</div></div><div><span>} </span><span>catch</span><span> {</span></div></div><div><div><div>117</div></div><div><span>    </span><span>Write-Log</span><span> </span><span>"    验证时出错: $_"</span></div></div><div><div><div>118</div></div><div><span>}</span></div></div><div><div><div>119</div></div><div>
</div></div><div><div><div>120</div></div><div><span># ========== 完成 ==========</span></div></div><div><div><div>121</div></div><div><span>Write-Log</span><span> </span><span>"========================================"</span></div></div><div><div><div>122</div></div><div><span>Write-Log</span><span> </span><span>"操作完成时间: </span><span>$(</span><span>Get-Date</span><span> </span><span>-</span><span>Format </span><span>'yyyy-MM-dd HH:mm:ss'</span><span>)</span><span>"</span></div></div><div><div><div>123</div></div><div><span>Write-Log</span><span> </span><span><span>"日志文件保存至: </span><span>$</span></span><span>logFile</span><span>"</span></div></div><div><div><div>124</div></div><div><span>Write-Log</span><span> </span><span>"========================================"</span></div></div><div><div><div>125</div></div><div><span>Write-Log</span><span> </span><span>""</span></div></div><div><div><div>126</div></div><div><span>Write-Log</span><span> </span><span>"请重启文件资源管理器或注销重新登录以使更改生效。"</span></div></div><div><div><div>127</div></div><div>
</div></div><div><div><div>128</div></div><div><span>Read-Host</span><span> </span><span>"按回车键退出"</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><hr /></section>
<section><h2>4. 备选方案：删除脚本（临时修复）<a href="#4-备选方案删除脚本临时修复"><span>#</span></a></h2><p>如果你仍希望使用删除方式，可用以下脚本。它会自动删除 HKLM 下与 VSCode 相关的空项，并生成日志。</p><div><div><div><figure><figcaption><span></span><span>Terminal window</span><span>展开</span><span>收起</span></figcaption><pre><code><div><div><div>1</div></div><div><span>&lt;#</span></div></div><div><div><div>2</div></div><div><span>.</span><span>SYNOPSIS</span></div></div><div><div><div>3</div></div><div><span><span>    </span></span><span>自动删除由 HiBit Uninstaller 在 HKLM 下创建的、与 VSCode 相关的空注册表项。</span></div></div><div><div><div>4</div></div><div><span>.</span><span>DESCRIPTION</span></div></div><div><div><div>5</div></div><div><span><span>    </span></span><span>此脚本扫描 HKLM\SOFTWARE\Classes 下与 HKCU\Software\Classes 同名且为空的项，</span></div></div><div><div><div>6</div></div><div><span><span>    </span></span><span>仅处理项名称中包含 "VSCode"（不区分大小写）的项，直接删除，无需用户确认。</span></div></div><div><div><div>7</div></div><div><span><span>    </span></span><span>操作前会自动提升管理员权限，并在用户下载目录下生成详细日志。</span></div></div><div><div><div>8</div></div><div><span>.PRINCIPLE</span></div></div><div><div><div>9</div></div><div><span><span>    </span></span><span>问题根源：HiBit Uninstaller 扫描时，会在 HKLM\SOFTWARE\Classes 下创建与 HKCU 中同名</span></div></div><div><div><div>10</div></div><div><span><span>    </span></span><span>的空项。系统读取右键菜单时，优先使用 HKLM 下的空项，导致显示异常。</span></div></div><div><div><div>11</div></div><div><span><span>    </span></span><span>删除这些空项后，系统回落到 HKCU 中的正确配置，右键菜单恢复正常。</span></div></div><div><div><div>12</div></div><div><span><span>    </span></span><span>此脚本只删除 VSCode 相关的空项，不影响其他软件。</span></div></div><div><div><div>13</div></div><div><span>.</span><span>NOTES</span></div></div><div><div><div>14</div></div><div><span><span>    </span></span><span>需要管理员权限。脚本会自动提权。</span></div></div><div><div><div>15</div></div><div><span>#&gt;</span></div></div><div><div><div>16</div></div><div>
</div></div><div><div><div>17</div></div><div><span># ========== 自动提权 ==========</span></div></div><div><div><div>18</div></div><div><span>$isAdmin</span><span><span> </span><span>=</span><span> ([</span></span><span>Security.Principal.WindowsPrincipal</span><span>] [</span><span>Security.Principal.WindowsIdentity</span><span>]::GetCurrent()).IsInRole([</span><span>Security.Principal.WindowsBuiltInRole</span><span>] </span><span>"Administrator"</span><span>)</span></div></div><div><div><div>19</div></div><div><span>if</span><span><span> (</span><span>-not</span><span> </span></span><span>$isAdmin</span><span>) {</span></div></div><div><div><div>20</div></div><div><span>    </span><span>$scriptPath</span><span><span> </span><span>=</span><span> $MyInvocation</span></span><span>.MyCommand.Path</span></div></div><div><div><div>21</div></div><div><span>    </span><span>if</span><span> (</span><span>$scriptPath</span><span>) {</span></div></div><div><div><div>22</div></div><div><span>        </span><span>Write-Host</span><span> </span><span>"当前不是管理员权限，正在尝试以管理员身份重新启动..."</span><span><span> </span><span>-</span><span>ForegroundColor Yellow</span></span></div></div><div><div><div>23</div></div><div><span>        </span><span>Start-Process</span><span><span> PowerShell </span><span>-</span><span>Verb RunAs </span><span>-</span><span>ArgumentList </span></span><span>"-NoProfile -ExecutionPolicy Bypass -File </span><span>`"</span><span>$</span><span>scriptPath</span><span>`"</span><span>"</span></div></div><div><div><div>24</div></div><div><span>        </span><span>exit</span></div></div><div><div><div>25</div></div><div><span><span>    </span></span><span>} </span><span>else</span><span> {</span></div></div><div><div><div>26</div></div><div><span>        </span><span>Write-Host</span><span> </span><span>"错误：需要管理员权限才能运行此脚本。"</span><span><span> </span><span>-</span><span>ForegroundColor Red</span></span></div></div><div><div><div>27</div></div><div><span>        </span><span>Write-Host</span><span> </span><span>"请关闭此窗口，然后右键点击 PowerShell 选择“</span><span>以管理员身份运行</span><span>”，再重新粘贴脚本。"</span><span><span> </span><span>-</span><span>ForegroundColor Yellow</span></span></div></div><div><div><div>28</div></div><div><span>        </span><span>Read-Host</span><span> </span><span>"按回车键退出"</span></div></div><div><div><div>29</div></div><div><span>        </span><span>exit</span></div></div><div><div><div>30</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>31</div></div><div><span>}</span></div></div><div><div><div>32</div></div><div>
</div></div><div><div><div>33</div></div><div><span># ========== 设置日志路径 ==========</span></div></div><div><div><div>34</div></div><div><span>$logDir</span><span><span> </span><span>=</span><span> </span></span><span><span>"</span><span>$</span></span><span>env:USERPROFILE</span><span>\Downloads"</span></div></div><div><div><div>35</div></div><div><span>$logName</span><span><span> </span><span>=</span><span> </span></span><span>"FixVSCodeMenu_</span><span>$(</span><span>Get-Date</span><span> </span><span>-</span><span>Format </span><span>'yyyyMMdd_HHmmss'</span><span>)</span><span>.log"</span></div></div><div><div><div>36</div></div><div><span>$logFile</span><span><span> </span><span>=</span><span> </span></span><span>Join-Path</span><span> </span><span>$logDir</span><span> </span><span>$logName</span></div></div><div><div><div>37</div></div><div>
</div></div><div><div><div>38</div></div><div><span># 写入日志头部</span></div></div><div><div><div>39</div></div><div><span>$logContent</span><span><span> </span><span>=</span><span> </span></span><span>@"</span></div></div><div><div><div>40</div></div><div><span>========================================</span></div></div><div><div><div>41</div></div><div><span>VSCode 右键菜单修复工具 - 操作日志</span></div></div><div><div><div>42</div></div><div><span>时间: </span><span>$(</span><span>Get-Date</span><span> </span><span>-</span><span>Format </span><span>'yyyy-MM-dd HH:mm:ss'</span><span>)</span></div></div><div><div><div>43</div></div><div><span>脚本版本: 1.0</span></div></div><div><div><div>44</div></div><div><span>========================================</span></div></div><div><div><div>45</div></div><div>
</div></div><div><div><div>46</div></div><div><span>[原理]</span></div></div><div><div><div>47</div></div><div><span>HiBit Uninstaller 扫描注册表时，会在 HKLM\SOFTWARE\Classes 下创建与 HKCU\Software\Classes</span></div></div><div><div><div>48</div></div><div><span>中同名且为空的项。系统读取右键菜单时优先使用 HKLM 下的空项，导致显示异常。</span></div></div><div><div><div>49</div></div><div><span>本脚本删除这些与 VSCode 相关的空项，恢复正确的菜单显示。</span></div></div><div><div><div>50</div></div><div>
</div></div><div><div><div>51</div></div><div><span>[操作]</span></div></div><div><div><div>52</div></div><div><span>扫描并删除 HKLM\SOFTWARE\Classes 下与 HKCU\Software\Classes 同名且为空的项，</span></div></div><div><div><div>53</div></div><div><span>且项名称包含 "VSCode"（不区分大小写）。</span></div></div><div><div><div>54</div></div><div><span>无需用户确认，自动执行。</span></div></div><div><div><div>55</div></div><div>
</div></div><div><div><div>56</div></div><div><span>[执行结果]</span></div></div><div><div><div>57</div></div><div><span>"@</span></div></div><div><div><div>58</div></div><div>
</div></div><div><div><div>59</div></div><div><span># 写入初始日志</span></div></div><div><div><div>60</div></div><div><span>$logContent</span><span> | </span><span>Out-File</span><span><span> </span><span>-</span><span>FilePath </span></span><span>$logFile</span><span><span> </span><span>-</span><span>Encoding UTF8</span></span></div></div><div><div><div>61</div></div><div>
</div></div><div><div><div>62</div></div><div><span># ========== 定义路径和关键词 ==========</span></div></div><div><div><div>63</div></div><div><span>$hkcuPath</span><span><span> </span><span>=</span><span> </span></span><span>"HKCU:\Software\Classes"</span></div></div><div><div><div>64</div></div><div><span>$hklmPath</span><span><span> </span><span>=</span><span> </span></span><span>"HKLM:\SOFTWARE\Classes"</span></div></div><div><div><div>65</div></div><div><span>$keyword</span><span><span> </span><span>=</span><span> </span></span><span>"VSCode"</span></div></div><div><div><div>66</div></div><div>
</div></div><div><div><div>67</div></div><div><span># 扫描并删除</span></div></div><div><div><div>68</div></div><div><span>Write-Host</span><span> </span><span>"正在扫描注册表，请稍候..."</span><span><span> </span><span>-</span><span>ForegroundColor Yellow</span></span></div></div><div><div><div>69</div></div><div>
</div></div><div><div><div>70</div></div><div><span># 预加载 HKLM 所有子项名到哈希表（加速）</span></div></div><div><div><div>71</div></div><div><span>$hklmExistItems</span><span><span> </span><span>=</span><span> </span></span><span>@</span><span>{}</span></div></div><div><div><div>72</div></div><div><span>if</span><span> (</span><span>Test-Path</span><span> </span><span>$hklmPath</span><span>) {</span></div></div><div><div><div>73</div></div><div><span>    </span><span>Get-ChildItem</span><span> </span><span>$hklmPath</span><span><span> </span><span>-</span><span>ErrorAction SilentlyContinue | </span></span><span>ForEach-Object</span><span> {</span></div></div><div><div><div>74</div></div><div><span>        </span><span>$hklmExistItems</span><span>[$_</span><span>.PSChildName</span><span><span>] </span><span>=</span><span> </span></span><span>$true</span></div></div><div><div><div>75</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>76</div></div><div><span>}</span></div></div><div><div><div>77</div></div><div>
</div></div><div><div><div>78</div></div><div><span>$deletedItems</span><span><span> </span><span>=</span><span> </span></span><span>@</span><span>()</span></div></div><div><div><div>79</div></div><div><span>$failedItems</span><span><span> </span><span>=</span><span> </span></span><span>@</span><span>()</span></div></div><div><div><div>80</div></div><div>
</div></div><div><div><div>81</div></div><div><span>if</span><span> (</span><span>Test-Path</span><span> </span><span>$hkcuPath</span><span>) {</span></div></div><div><div><div>82</div></div><div><span>    </span><span>$hkcuNames</span><span><span> </span><span>=</span><span> </span></span><span>Get-ChildItem</span><span> </span><span>$hkcuPath</span><span> | </span><span>Select-Object</span><span><span> </span><span>-</span><span>ExpandProperty PSChildName</span></span></div></div><div><div><div>83</div></div><div><span>    </span><span>foreach</span><span> (</span><span>$name</span><span> </span><span>in</span><span> </span><span>$hkcuNames</span><span>) {</span></div></div><div><div><div>84</div></div><div><span>        </span><span># 关键词过滤</span></div></div><div><div><div>85</div></div><div><span>        </span><span>if</span><span> (</span><span>$name</span><span><span> </span><span>-like</span><span> </span></span><span><span>"*</span><span>$</span></span><span>keyword</span><span>*"</span><span>) {</span></div></div><div><div><div>86</div></div><div><span>            </span><span>if</span><span> (</span><span>$hklmExistItems.ContainsKey</span><span>(</span><span>$name</span><span>)) {</span></div></div><div><div><div>87</div></div><div><span>                </span><span>$hklmItem</span><span><span> </span><span>=</span><span> </span></span><span>Join-Path</span><span> </span><span>$hklmPath</span><span> </span><span>$name</span></div></div><div><div><div>88</div></div><div><span>                </span><span>$key</span><span><span> </span><span>=</span><span> </span></span><span>Get-Item</span><span> </span><span>$hklmItem</span><span><span> </span><span>-</span><span>ErrorAction SilentlyContinue</span></span></div></div><div><div><div>89</div></div><div><span>                </span><span>if</span><span> (</span><span>$null</span><span><span> </span><span>-ne</span><span> </span></span><span>$key</span><span>) {</span></div></div><div><div><div>90</div></div><div><span>                    </span><span>$hasSubkeys</span><span><span> </span><span>=</span><span> </span></span><span>$key.GetSubKeyNames</span><span><span>().Count </span><span>-gt</span><span> </span></span><span>0</span></div></div><div><div><div>91</div></div><div><span>                    </span><span>$hasValues</span><span><span>  </span><span>=</span><span> </span></span><span>$key.GetValueNames</span><span><span>().Count </span><span>-gt</span><span> </span></span><span>0</span></div></div><div><div><div>92</div></div><div><span>                    </span><span>if</span><span><span> (</span><span>-not</span><span> </span></span><span>$hasSubkeys</span><span><span> </span><span>-and</span><span> </span><span>-not</span><span> </span></span><span>$hasValues</span><span>) {</span></div></div><div><div><div>93</div></div><div><span>                        </span><span>try</span><span> {</span></div></div><div><div><div>94</div></div><div><span>                            </span><span>Remove-Item</span><span> </span><span>$hklmItem</span><span><span> </span><span>-</span><span>Force </span><span>-</span><span>ErrorAction Stop</span></span></div></div><div><div><div>95</div></div><div><span>                            </span><span>$deletedItems</span><span><span> </span><span>+=</span><span> </span></span><span>$hklmItem</span></div></div><div><div><div>96</div></div><div><span>                            </span><span>Write-Host</span><span> </span><span><span>"已删除: </span><span>$</span></span><span>hklmItem</span><span>"</span><span><span> </span><span>-</span><span>ForegroundColor Green</span></span></div></div><div><div><div>97</div></div><div><span><span>                        </span></span><span>} </span><span>catch</span><span> {</span></div></div><div><div><div>98</div></div><div><span>                            </span><span>$failedItems</span><span><span> </span><span>+=</span><span> </span></span><span><span>"</span><span>$</span></span><span>hklmItem</span><span> (错误: </span><span>$(</span><span>$_</span><span>.Exception.Message</span><span>)</span><span>)"</span></div></div><div><div><div>99</div></div><div><span>                            </span><span>Write-Host</span><span> </span><span><span>"删除失败: </span><span>$</span></span><span>hklmItem</span><span>"</span><span><span> </span><span>-</span><span>ForegroundColor Red</span></span></div></div><div><div><div>100</div></div><div><span><span>                        </span></span><span>}</span></div></div><div><div><div>101</div></div><div><span><span>                    </span></span><span>}</span></div></div><div><div><div>102</div></div><div><span><span>                </span></span><span>}</span></div></div><div><div><div>103</div></div><div><span><span>            </span></span><span>}</span></div></div><div><div><div>104</div></div><div><span><span>        </span></span><span>}</span></div></div><div><div><div>105</div></div><div><span><span>    </span></span><span>}</span></div></div><div><div><div>106</div></div><div><span>}</span></div></div><div><div><div>107</div></div><div>
</div></div><div><div><div>108</div></div><div><span># 写入删除记录</span></div></div><div><div><div>109</div></div><div><span>$logContent</span><span><span> </span><span>=</span><span> </span></span><span>@"</span></div></div><div><div><div>110</div></div><div><span>`n</span><span>[删除的项] (共 </span><span>$(</span><span>$</span><span>deletedItems.Count</span><span>)</span><span> 项)</span></div></div><div><div><div>111</div></div><div><span>"@</span></div></div><div><div><div>112</div></div><div><span>if</span><span> (</span><span>$deletedItems.Count</span><span><span> </span><span>-gt</span><span> </span></span><span>0</span><span>) {</span></div></div><div><div><div>113</div></div><div><span>    </span><span>$logContent</span><span><span> </span><span>+=</span><span> (</span></span><span>$deletedItems</span><span> | </span><span>ForEach-Object</span><span> { </span><span>"  $_"</span><span> }) -join </span><span>"</span><span>`n</span><span>"</span></div></div><div><div><div>114</div></div><div><span>} </span><span>else</span><span> {</span></div></div><div><div><div>115</div></div><div><span>    </span><span>$logContent</span><span><span> </span><span>+=</span><span> </span></span><span>"  无"</span></div></div><div><div><div>116</div></div><div><span>}</span></div></div><div><div><div>117</div></div><div>
</div></div><div><div><div>118</div></div><div><span>$logContent</span><span><span> </span><span>+=</span><span> </span></span><span>@"</span></div></div><div><div><div>119</div></div><div>
</div></div><div><div><div>120</div></div><div><span>`n</span><span>[失败的项] (共 </span><span>$(</span><span>$</span><span>failedItems.Count</span><span>)</span><span> 项)</span></div></div><div><div><div>121</div></div><div><span>"@</span></div></div><div><div><div>122</div></div><div><span>if</span><span> (</span><span>$failedItems.Count</span><span><span> </span><span>-gt</span><span> </span></span><span>0</span><span>) {</span></div></div><div><div><div>123</div></div><div><span>    </span><span>$logContent</span><span><span> </span><span>+=</span><span> (</span></span><span>$failedItems</span><span> | </span><span>ForEach-Object</span><span> { </span><span>"  $_"</span><span> }) -join </span><span>"</span><span>`n</span><span>"</span></div></div><div><div><div>124</div></div><div><span>} </span><span>else</span><span> {</span></div></div><div><div><div>125</div></div><div><span>    </span><span>$logContent</span><span><span> </span><span>+=</span><span> </span></span><span>"  无"</span></div></div><div><div><div>126</div></div><div><span>}</span></div></div><div><div><div>127</div></div><div>
</div></div><div><div><div>128</div></div><div><span>$logContent</span><span><span> </span><span>+=</span><span> </span></span><span>@"</span></div></div><div><div><div>129</div></div><div>
</div></div><div><div><div>130</div></div><div><span>`n</span><span>[完成时间] </span><span>$(</span><span>Get-Date</span><span> </span><span>-</span><span>Format </span><span>'yyyy-MM-dd HH:mm:ss'</span><span>)</span></div></div><div><div><div>131</div></div><div><span>========================================</span></div></div><div><div><div>132</div></div><div><span>"@</span></div></div><div><div><div>133</div></div><div>
</div></div><div><div><div>134</div></div><div><span># 追加到日志文件</span></div></div><div><div><div>135</div></div><div><span>$logContent</span><span> | </span><span>Out-File</span><span><span> </span><span>-</span><span>FilePath </span></span><span>$logFile</span><span><span> </span><span>-</span><span>Encoding UTF8 </span><span>-</span><span>Append</span></span></div></div><div><div><div>136</div></div><div>
</div></div><div><div><div>137</div></div><div><span># 控制台输出</span></div></div><div><div><div>138</div></div><div><span>Write-Host</span><span> </span><span>"</span><span>`n</span><span>操作完成！"</span><span><span> </span><span>-</span><span>ForegroundColor Green</span></span></div></div><div><div><div>139</div></div><div><span>Write-Host</span><span> </span><span>"成功删除 </span><span>$(</span><span>$</span><span>deletedItems.Count</span><span>)</span><span> 项，失败 </span><span>$(</span><span>$</span><span>failedItems.Count</span><span>)</span><span> 项。"</span><span><span> </span><span>-</span><span>ForegroundColor Cyan</span></span></div></div><div><div><div>140</div></div><div><span>Write-Host</span><span> </span><span><span>"详细日志已保存至: </span><span>$</span></span><span>logFile</span><span>"</span><span><span> </span><span>-</span><span>ForegroundColor Yellow</span></span></div></div><div><div><div>141</div></div><div><span>Write-Host</span><span> </span><span>"请重启文件资源管理器或注销重新登录以使更改生效。"</span><span><span> </span><span>-</span><span>ForegroundColor Cyan</span></span></div></div><div><div><div>142</div></div><div>
</div></div><div><div><div>143</div></div><div><span>Read-Host</span><span> </span><span>"按回车键退出"</span></div></div></code></pre><div><div></div><div></div></div></figure><div></div></div><span>展开</span><span>收起</span></div></div><hr /></section>
<section><h2>5. 总结<a href="#5-总结"><span>#</span></a></h2><p>推荐使用写入脚本，一劳永逸，不受 HiBit 后续扫描影响。两个脚本均会自动提权、生成日志，安全可控。</p><p>该问题的本质是 HiBit Uninstaller 的“空项创建”行为与 Windows 11 新优先级策略的冲突。若其他软件未来也迁移至 HKCU 区域，同样可能触发此问题，排查思路可参考本文。</p><blockquote><p>注：本文提到的两个脚本已在本地测试通过，如有任何问题欢迎评论区交流。</p></blockquote><p><strong>特别鸣谢</strong>：特别鸣谢 CSDN 社区 @Sponge_F 大佬在本问题的解决和推进上的支持和帮助，是他提供了解决思路才有了本篇文章！</p></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/26/</id>
      <title type="text">魔方顶层角块公式</title>
      <published>2026-09-09T00:00:00.000Z</published>
      <updated>2026-09-09T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/26/"/>
      <summary type="text">顶层角块还原的公式和手法记录，配合字母含义那篇一起看。</summary>
      <content type="html"><![CDATA[<section><h2>小鱼公式<a href="#小鱼公式"><span>#</span></a></h2><p><strong>顺</strong>：<code>R U' R' U' R U' U' R'</code> —— 放在左手边</p><p></p><figure><img alt="小鱼公式（顺）" loading="lazy" width="342" height="347" src="/_astro/cube-top-corner-1.d_9QhTaZ_18rGME.webp" /><figcaption>小鱼公式（顺）</figcaption></figure><p></p><p><strong>倒</strong>：<code>R' U U R U R' U R</code> —— 放在右手边</p><p></p><figure><img alt="小鱼公式（倒）" loading="lazy" width="354" height="356" src="/_astro/cube-top-corner-2.DlqP_UlH_ZezHBr.webp" /><figcaption>小鱼公式（倒）</figcaption></figure><p></p><p><strong>F 系列</strong>：<code>F R U R' U' F'</code> —— 朝上的黄色块一侧放在右手边</p><p></p><figure><img alt="F 系列公式" loading="lazy" width="344" height="352" src="/_astro/cube-top-corner-3.CsQt_4Ja_ZKRont.webp" /><figcaption>F 系列公式</figcaption></figure><p></p></section>
<section><h2>其他常用公式<a href="#其他常用公式"><span>#</span></a></h2><ul>
<li><code>R U R' U' R' F R F</code></li>
<li><code>F R U R' U' R U R' U' F'</code></li>
<li><code>F R U R' U' R U R' U' R U R' U' F'</code></li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/1/</id>
      <title type="text">Git 自动转成 SSH</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/1/"/>
      <summary type="text">把 HTTPS 远程仓库换成 SSH，省掉每次推送都要输账号密码的麻烦。</summary>
      <content type="html"><![CDATA[<p>GitHub 的 HTTPS 时常连不上，SSH 走 22 端口要稳得多。与其每次 clone 都手动改地址，不如让 git 自动把 <code>https://github.com/</code> 前缀改写成 SSH 形式。</p>
<section><h2>配置<a href="#配置"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>git</span><span> </span><span>config</span><span> </span><span>--global</span><span> </span><span>url."git@github.com:".insteadOf</span><span> </span><span>"https://github.com/"</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div><p>配好之后，<code>git clone https://github.com/user/repo.git</code> 实际走的是 SSH，前提是本机公钥已经加到 GitHub 账号里。</p></section>
<section><h2>验证与撤销<a href="#验证与撤销"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 查看当前生效的 url 改写规则</span></div></div><div><div><div>2</div></div><div><span>git</span><span> </span><span>config</span><span> </span><span>--global</span><span> </span><span>--get-regexp</span><span> </span><span>"url\."</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 撤销</span></div></div><div><div><div>5</div></div><div><span>git</span><span> </span><span>config</span><span> </span><span>--global</span><span> </span><span>--unset</span><span> </span><span>url."git@github.com:".insteadOf</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/2/</id>
      <title type="text">Winget 换源</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/2/"/>
      <summary type="text">把 Winget 的软件源换成国内镜像，下载和更新都能快不少。</summary>
      <content type="html"><![CDATA[<p>WinGet 默认走微软的 CDN，国内拉包经常卡住或超时。换成南京大学镜像后，<code>winget install</code> 和 <code>winget upgrade</code> 都会顺很多。</p>
<section><h2>换源<a href="#换源"><span>#</span></a></h2><p>先删掉原源：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>winget source remove winget</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>再添加南京大学镜像：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span><span>winget source add winget https:</span><span>//</span><span>mirror.nju.edu.cn</span><span>/</span><span>winget</span><span>-</span><span>source</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>最后确认一下当前源列表：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>winget source list</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>恢复默认<a href="#恢复默认"><span>#</span></a></h2><p>想换回官方源：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>winget source reset winget</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/3/</id>
      <title type="text">Zoxide 快速跳转工具</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/3/"/>
      <summary type="text">用 z 命令直接跳到常去的目录，比反复 cd 省事。</summary>
      <content type="html"><![CDATA[<section><h2>介绍<a href="#介绍"><span>#</span></a></h2><blockquote><p>zoxide 是一个可以快速跳转到常用文件地址的工具 使用起来十分方便，只需要 <code>z note</code>就可以从任意目录跳转到常用的note文件夹，但是需要先访问一次</p></blockquote></section>
<section><h2>1. 安装 zoxide<a href="#1-安装-zoxide"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>winget install ajeetdsouza.zoxide</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>2. 配置你的 Shell<a href="#2-配置你的-shell"><span>#</span></a></h2><p>安装完成后，需要将 <code>zoxide</code> 集成到你使用的命令行环境 在 PowerShell 中输入 <code>code $PROFILE</code> 打开配置文件 并添加以下内容后保存</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>Invoke-Expression</span><span> (&amp; { (zoxide init powershell | </span><span>Out-String</span><span>) })</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>3. 重新加载配置文件<a href="#3-重新加载配置文件"><span>#</span></a></h2><p>在 PowerShell 中运行（使刚才的修改立即生效，无需重启终端）：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>. $PROFILE</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>
<section><h2>4. 使用方法<a href="#4-使用方法"><span>#</span></a></h2><p>命令：<code>z 需要访问的文件夹名称</code>，比如：</p><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>z blog</span></div></div></code></pre><div><div></div><div></div></div></figure></div><p>条件是：必须在配置好<code>zoxide</code>之后访问一次目录，才可以记录这个地址，并在下次访问</p></section>
<section><h2>5. 工作原理<a href="#5-工作原理"><span>#</span></a></h2><ol>
<li>每次cd或者z的时候都会记录访问地址，通过<strong>频率</strong>（访问次数）和<strong>时效性</strong>（最近访问时间）来为每个目录计算分数</li>
<li>这样每次都会匹配都会访问分数最高的地址</li>
</ol></section>
<section><h2>6. 常用命令<a href="#6-常用命令"><span>#</span></a></h2><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>使用方法：</span></div></div><div><div><div>2</div></div><div><span><span>  </span></span><span>z    &lt;文件夹&gt; 快速跳转</span></div></div><div><div><div>3</div></div><div><span><span>  </span></span><span>zoxide &lt;命令&gt;</span></div></div><div><div><div>4</div></div><div><span>命令：</span></div></div><div><div><div>5</div></div><div><span><span>  </span></span><span>add     添加一个新目录或增加其排名</span></div></div><div><div><div>6</div></div><div><span><span>  </span></span><span>edit    编辑数据库</span></div></div><div><div><div>7</div></div><div><span><span>  </span></span><span>import  从另一个应用导入条目</span></div></div><div><div><div>8</div></div><div><span><span>  </span></span><span>init    生成 shell 配置</span></div></div><div><div><div>9</div></div><div><span><span>  </span></span><span>query   在数据库中搜索目录</span></div></div><div><div><div>10</div></div><div><span><span>  </span></span><span>remove  从数据库中移除目录</span></div></div><div><div><div>11</div></div><div><span>zoxide query golang </span><span># 返回最匹配 golang 的目录</span></div></div><div><div><div>12</div></div><div><span><span>zoxide query golang </span><span>--</span><span>list </span></span><span># 返回所有匹配 golang 的目录</span></div></div><div><div><div>13</div></div><div><span><span>zoxide </span><span>-</span><span>h </span></span><span># 更多帮助信息</span></div></div></code></pre><div><div></div><div></div></div></figure></div></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/4/</id>
      <title type="text">Docker 常用命令</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/4/"/>
      <summary type="text">容器、镜像、网络、数据卷的常用命令速查，附几条清理技巧。</summary>
      <content type="html"><![CDATA[<section><h2>一、容器生命周期管理（最常用）<a href="#一容器生命周期管理最常用"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker run</code></td><td>创建并启动容器</td><td><code>docker run -d --name nginx -p 80:80 nginx</code></td></tr><tr><td><code>docker start/stop/restart</code></td><td>启动/停止/重启容器</td><td><code>docker stop calibre-web</code></td></tr><tr><td><code>docker pause/unpause</code></td><td>暂停/恢复容器进程</td><td><code>docker pause &lt;容器名&gt;</code></td></tr><tr><td><code>docker rm</code></td><td>删除容器（需先停止）</td><td><code>docker rm -f &lt;容器名&gt;</code>（强制删除）</td></tr><tr><td><code>docker exec</code></td><td>进入容器执行命令</td><td><code>docker exec -it &lt;容器名&gt; /bin/bash</code></td></tr><tr><td><code>docker rename</code></td><td>重命名容器</td><td><code>docker rename old_name new_name</code></td></tr></tbody></table><hr /></section>
<section><h2>二、容器状态查看<a href="#二容器状态查看"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker ps</code></td><td>查看<strong>运行中</strong>的容器</td><td><code>docker ps -a</code>（查看所有容器）</td></tr><tr><td><code>docker stats</code></td><td>查看容器资源占用（实时）</td><td><code>docker stats --no-stream</code>（查看一次）</td></tr><tr><td><code>docker logs</code></td><td>查看容器日志</td><td><code>docker logs -f &lt;容器名&gt;</code>（实时跟踪）</td></tr><tr><td><code>docker inspect</code></td><td>查看容器详细信息（JSON）</td><td><code>docker inspect &lt;容器名&gt; | grep IPAddress</code></td></tr><tr><td><code>docker top</code></td><td>查看容器内运行的进程</td><td><code>docker top &lt;容器名&gt;</code></td></tr><tr><td><code>docker port</code></td><td>查看容器端口映射</td><td><code>docker port &lt;容器名&gt;</code></td></tr></tbody></table><hr /></section>
<section><h2>三、镜像管理<a href="#三镜像管理"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker images</code></td><td>列出本地镜像</td><td><code>docker images -a</code>（列出所有）</td></tr><tr><td><code>docker pull</code></td><td>拉取镜像</td><td><code>docker pull ubuntu:22.04</code></td></tr><tr><td><code>docker build</code></td><td>从 Dockerfile 构建镜像</td><td><code>docker build -t myapp:v1 .</code></td></tr><tr><td><code>docker push</code></td><td>推送镜像到仓库</td><td><code>docker push myusername/myapp:v1</code></td></tr><tr><td><code>docker rmi</code></td><td>删除镜像</td><td><code>docker rmi -f &lt;镜像ID&gt;</code>（强制删除）</td></tr><tr><td><code>docker tag</code></td><td>给镜像打标签</td><td><code>docker tag ubuntu:22.04 myrepo/ubuntu:latest</code></td></tr><tr><td><code>docker save/load</code></td><td>导出/导入镜像为 tar 文件</td><td><code>docker save -o myimage.tar myapp:v1</code>  <br /><code>docker load -i myimage.tar</code></td></tr></tbody></table><hr /></section>
<section><h2>四、数据卷管理（Volume）<a href="#四数据卷管理volume"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker volume ls</code></td><td>列出所有数据卷</td><td><code>docker volume ls</code></td></tr><tr><td><code>docker volume create</code></td><td>创建数据卷</td><td><code>docker volume create mydata</code></td></tr><tr><td><code>docker volume inspect</code></td><td>查看数据卷详情</td><td><code>docker volume inspect talebook_data</code></td></tr><tr><td><code>docker volume prune</code></td><td>删除未使用的数据卷</td><td><code>docker volume prune -f</code></td></tr><tr><td><code>docker volume rm</code></td><td>删除指定数据卷</td><td><code>docker volume rm mydata</code></td></tr></tbody></table><hr /></section>
<section><h2>五、网络管理<a href="#五网络管理"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker network ls</code></td><td>列出所有网络</td><td><code>docker network ls</code></td></tr><tr><td><code>docker network create</code></td><td>创建自定义网络</td><td><code>docker network create mynet --driver bridge</code></td></tr><tr><td><code>docker network inspect</code></td><td>查看网络详情</td><td><code>docker network inspect bridge</code></td></tr><tr><td><code>docker network connect</code></td><td>将容器连接到网络</td><td><code>docker network connect mynet &lt;容器名&gt;</code></td></tr><tr><td><code>docker network disconnect</code></td><td>断开容器与网络连接</td><td><code>docker network disconnect mynet &lt;容器名&gt;</code></td></tr><tr><td><code>docker network prune</code></td><td>删除未使用的网络</td><td><code>docker network prune -f</code></td></tr></tbody></table><hr /></section>
<section><h2>六、资源清理（释放磁盘空间）<a href="#六资源清理释放磁盘空间"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker system df</code></td><td>查看 Docker 磁盘使用情况</td><td><code>docker system df -v</code>（详细）</td></tr><tr><td><code>docker system prune</code></td><td><strong>清理停止的容器、未使用的网络、悬空镜像</strong></td><td><code>docker system prune -a -f</code>（激进清理）</td></tr><tr><td><code>docker container prune</code></td><td>删除所有停止的容器</td><td><code>docker container prune -f</code></td></tr><tr><td><code>docker image prune</code></td><td>删除未使用的镜像</td><td><code>docker image prune -a -f</code></td></tr><tr><td><code>docker builder prune</code></td><td>清理构建缓存</td><td><code>docker builder prune -f</code></td></tr></tbody></table><hr /></section>
<section><h2>七、Docker Compose 命令（项目级管理）<a href="#七docker-compose-命令项目级管理"><span>#</span></a></h2>

<table><thead><tr><th>命令</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td><code>docker-compose up</code></td><td>启动服务</td><td><code>docker-compose up -d</code>（后台运行）</td></tr><tr><td><code>docker-compose down</code></td><td>停止并删除容器</td><td><code>docker-compose down -v</code>（同时删除数据卷）</td></tr><tr><td><code>docker-compose ps</code></td><td>查看项目容器状态</td><td><code>docker-compose ps</code></td></tr><tr><td><code>docker-compose logs</code></td><td>查看项目日志</td><td><code>docker-compose logs -f talebook</code></td></tr><tr><td><code>docker-compose restart</code></td><td>重启服务</td><td><code>docker-compose restart</code></td></tr><tr><td><code>docker-compose pull</code></td><td>拉取最新镜像</td><td><code>docker-compose pull</code></td></tr><tr><td><code>docker-compose exec</code></td><td>进入某个容器</td><td><code>docker-compose exec talebook /bin/bash</code></td></tr><tr><td><code>docker-compose config</code></td><td>验证 compose 文件语法</td><td><code>docker-compose config</code></td></tr><tr><td><code>docker-compose build</code></td><td>重新构建镜像</td><td><code>docker-compose build --no-cache</code></td></tr></tbody></table><hr /></section>
<section><h2>八、常用技巧和最佳实践<a href="#八常用技巧和最佳实践"><span>#</span></a></h2><section><h3>1. 快速删除所有容器（慎用！）<a href="#1-快速删除所有容器慎用"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>rm</span><span> </span><span>-f</span><span> $(</span><span>docker</span><span> </span><span>ps</span><span> </span><span>-aq</span><span>)</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>2. 删除所有镜像（慎用！）<a href="#2-删除所有镜像慎用"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>rmi</span><span> </span><span>-f</span><span> $(</span><span>docker</span><span> </span><span>images</span><span> </span><span>-q</span><span>)</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>3. 进入容器调试<a href="#3-进入容器调试"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>-it</span><span> </span><span>&lt;容器名&gt;</span><span> </span><span>sh</span><span>   </span><span># 如果 bash 不可用</span></div></div><div><div><div>2</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>-it</span><span> </span><span>&lt;容器名&gt;</span><span> </span><span>/bin/bash</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>4. 查看容器 IP 地址<a href="#4-查看容器-ip-地址"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>inspect</span><span> </span><span>-f</span><span> </span><span>'{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'</span><span> </span><span>&lt;容器名&gt;</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>5. 实时查看容器日志并过滤<a href="#5-实时查看容器日志并过滤"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>logs</span><span> </span><span>-f</span><span> </span><span>&lt;容器名&gt;</span><span> | </span><span>grep</span><span> </span><span>ERROR</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>6. 复制文件进/出容器<a href="#6-复制文件进出容器"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>cp</span><span> </span><span>&lt;容器名&gt;:/path/to/file</span><span> </span><span>/host/path</span><span>   </span><span># 容器 → 宿主机</span></div></div><div><div><div>2</div></div><div><span>docker</span><span> </span><span>cp</span><span> </span><span>/host/file</span><span> </span><span>&lt;容器名&gt;:/path/to/file</span><span>   </span><span># 宿主机 → 容器</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>7. 查看容器环境变量<a href="#7-查看容器环境变量"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>docker</span><span> </span><span>exec</span><span> </span><span>&lt;容器名&gt;</span><span> </span><span>env</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div></section><section><h3>8. 批量操作（组合命令）<a href="#8-批量操作组合命令"><span>#</span></a></h3><div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span># 停止所有运行中的容器</span></div></div><div><div><div>2</div></div><div><span>docker</span><span> </span><span>stop</span><span> $(</span><span>docker</span><span> </span><span>ps</span><span> </span><span>-q</span><span>)</span></div></div><div><div><div>3</div></div><div>
</div></div><div><div><div>4</div></div><div><span># 删除所有停止的容器</span></div></div><div><div><div>5</div></div><div><span>docker</span><span> </span><span>container</span><span> </span><span>prune</span><span> </span><span>-f</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div><hr /></section></section>
<section><h2>九、命令速查图（记忆口诀）<a href="#九命令速查图记忆口诀"><span>#</span></a></h2>

<table><thead><tr><th>操作对象</th><th>创建</th><th>查看</th><th>删除</th><th>进入/详情</th></tr></thead><tbody><tr><td>容器</td><td><code>run</code></td><td><code>ps</code></td><td><code>rm</code></td><td><code>exec</code> / <code>inspect</code></td></tr><tr><td>镜像</td><td><code>build</code> / <code>pull</code></td><td><code>images</code></td><td><code>rmi</code></td><td><code>history</code> / <code>inspect</code></td></tr><tr><td>卷</td><td><code>volume create</code></td><td><code>volume ls</code></td><td><code>volume rm</code></td><td><code>volume inspect</code></td></tr><tr><td>网络</td><td><code>network create</code></td><td><code>network ls</code></td><td><code>network rm</code></td><td><code>network inspect</code></td></tr></tbody></table></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/5/</id>
      <title type="text">Obsidian 插件推荐</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/5/"/>
      <summary type="text">正在用的 Obsidian 插件清单，以及它们各自解决了什么问题。</summary>
      <content type="html"><![CDATA[<p>插件装多了会拖慢启动、也会把界面堆满。我的原则是：只留每天都会用到的，能用内置功能替代就不装。</p>
<section><h2>Paste image rename<a href="#paste-image-rename"><span>#</span></a></h2><p>粘贴截图时，Obsidian 默认把图片存成 <code>image-20260727121048044.png</code> 这种名字。时间一长，附件目录里全是看不懂的文件名，想清理都不知道哪张还有引用。</p><p>这个插件会在图片落盘时自动重命名为<strong>当前笔记的文件名</strong>（可加序号），附件目录一眼就能对上正文。</p><ul>
<li>设置项里可以选命名格式：笔记名、时间戳，或两者组合</li>
<li>配合”附件统一放一个目录”使用效果最好，删笔记时能按名字批量清图</li>
</ul></section>
<section><h2>Image Converter<a href="#image-converter"><span>#</span></a></h2><p>解决图片体积问题：粘贴 PNG 截图动辄几百 KB，一篇图文笔记很快就上到十几 MB。</p><p>它能把导入的图片自动转成 <strong>WebP</strong>，体积通常降到三分之一左右，同时支持按最长边调整尺寸。默认参数已经是可用状态，装完不用改就直接生效。</p><blockquote><p>两个插件都是”粘贴/导入时”生效，所以老笔记里已有的图片不会自动处理，需要手动重新粘贴或单独转换。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/6/</id>
      <title type="text">Windows Terminal 快捷键</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/6/"/>
      <summary type="text">标签页、分屏、搜索和外观的快捷键速查，附交换窗格的配置片段。</summary>
      <content type="html"><![CDATA[<section><h2>Windows Terminal 完整快捷键参考：<a href="#windows-terminal-完整快捷键参考"><span>#</span></a></h2><section><h3>标签页<a href="#标签页"><span>#</span></a></h3><ul>
<li><code>Ctrl + Shift + T</code> — 新建标签页</li>
<li><code>Ctrl + Tab</code> — 切换到下一个标签页</li>
<li><code>Ctrl + Shift + Tab</code> — 切换到上一个标签页</li>
<li><code>Ctrl + Alt + 数字键</code> — 切换到第 N 个标签页</li>
<li><code>Ctrl + Shift + W</code> — 关闭当前窗格/标签页</li>
</ul></section><section><h3>分屏窗格<a href="#分屏窗格"><span>#</span></a></h3><ul>
<li><code>Alt + Shift + D</code> — 垂直分屏（左右）</li>
<li><code>Alt + Shift + -</code>（减号）— 水平分屏（上下）</li>
<li><code>Alt + Shift + +</code>（加号）— 再次垂直分屏（重复当前分割方向）</li>
<li><code>Alt + 方向键</code> — 在窗格间移动焦点</li>
<li><code>Alt + Shift + 方向键</code> — 调整窗格大小</li>
<li><code>Ctrl + Shift + Space</code> — 全屏切换当前窗格</li>
</ul></section><section><h3>交换窗格位置（需手动配置）<a href="#交换窗格位置需手动配置"><span>#</span></a></h3><p>默认无快捷键，需在 settings.json 中添加：</p><div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>{ </span><span>"command"</span><span>: { </span><span>"action"</span><span>: </span><span>"swapPane"</span><span>, </span><span>"direction"</span><span>: </span><span>"up"</span><span> }, </span><span>"keys"</span><span>: </span><span>"ctrl+shift+up"</span><span> },</span></div></div><div><div><div>2</div></div><div><span>{ </span><span>"command"</span><span>: { </span><span>"action"</span><span>: </span><span>"swapPane"</span><span>, </span><span>"direction"</span><span>: </span><span>"down"</span><span> }, </span><span>"keys"</span><span>: </span><span>"ctrl+shift+down"</span><span> },</span></div></div><div><div><div>3</div></div><div><span>{ </span><span>"command"</span><span>: { </span><span>"action"</span><span>: </span><span>"swapPane"</span><span>, </span><span>"direction"</span><span>: </span><span>"left"</span><span> }, </span><span>"keys"</span><span>: </span><span>"ctrl+shift+left"</span><span> },</span></div></div><div><div><div>4</div></div><div><span>{ </span><span>"command"</span><span>: { </span><span>"action"</span><span>: </span><span>"swapPane"</span><span>, </span><span>"direction"</span><span>: </span><span>"right"</span><span> }, </span><span>"keys"</span><span>: </span><span>"ctrl+shift+right"</span><span> },</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div><p>也可用 <code>Ctrl+Shift+P</code> 打开命令面板搜索 “Swap Pane”。</p></section><section><h3>搜索与查找<a href="#搜索与查找"><span>#</span></a></h3><ul>
<li><code>Ctrl + Shift + F</code> — 打开搜索框</li>
<li><code>Ctrl + Shift + D</code> — 重复搜索匹配项（在搜索结果中向下跳转）</li>
</ul></section><section><h3>外观<a href="#外观"><span>#</span></a></h3><ul>
<li><code>F11</code> — 全屏切换</li>
<li><code>Ctrl + Shift + ,</code> — 打开设置</li>
<li><code>Ctrl + Shift + P</code> — 打开命令面板</li>
<li><code>Alt + Enter</code> — 全屏切换</li>
</ul></section></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/7/</id>
      <title type="text">Codex 接入 DeepSeek</title>
      <published>2026-09-08T00:00:00.000Z</published>
      <updated>2026-09-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/7/"/>
      <summary type="text">让 Codex 走 DeepSeek 的接口，绕开官方额度和网络限制。</summary>
      <content type="html"><![CDATA[<section><h2>将 DeepSeek 配置为模型提供方<a href="#将-deepseek-配置为模型提供方"><span>#</span></a></h2><p>DeepSeek 官方提供了两种接入方式，推荐优先使用方式一。</p><section><h3>方式一：一键配置脚本（推荐）<a href="#方式一一键配置脚本推荐"><span>#</span></a></h3><p>macOS / Linux，在终端执行：</p><p>bash &lt;(curl -fsSL <a href="https://cdn.deepseek.com/api-docs/codex-deepseek-setup.sh" target="_blank">https://cdn.deepseek.com/api-docs/codex-deepseek-setup.sh</a>)</p><p>Windows，在 PowerShell 中执行：</p><p>irm <a href="https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.ps1" target="_blank">https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.ps1</a> | iex</p><p>运行后按菜单提示选择要使用的模型，首次运行会要求输入你的 API Key。</p><p>我们第一次运行，选择 1 选项 修改 Codex 配置，使用 deepseek-v4-flash 模型：</p><p></p><figure><img alt="|700x171" loading="lazy" width="1738" height="424" src="/_astro/codex-deepseek-1.DbGGqCfO_BburX.webp" /><figcaption>|700x171</figcaption></figure><p></p><p>后期我们要恢复默认配置，也可以执行这个脚本，并选择 3 来恢复。</p><p>接下来会提示 API key 输入，如果已经在环境变量中配置过会使用环境变量 DEEPSEEK_API_KEY 提供的 API key，跳过询问：</p><p></p><figure><img alt="|700x374" loading="lazy" width="2038" height="1090" src="/_astro/codex-deepseek-2.DSU8ooIu_Z1nvTuK.webp" /><figcaption>|700x374</figcaption></figure><p></p><p>之后重新 ChatGPT，就可以看到 DeepSeek 的模型了：</p><p></p><figure><img alt="|700x405" loading="lazy" width="2050" height="1186" src="/_astro/codex-deepseek-3.CzqpaHJ1_ZNUdrW.webp" /><figcaption>|700x405</figcaption></figure><p></p><p>这个脚本会自动完成以下工作：</p><ul>
<li>
<p><strong>备份现有配置</strong>：把 ~/.codex/config.toml 备份到 ~/.codex/backup-deepseek/，方便随时还原。</p>
</li>
<li>
<p><strong>写入模型目录 ~/.codex/models.json</strong>：向 Codex 声明 DeepSeek 模型的元数据（上下文窗口长度、支持的推理强度档位、工具调用格式等），使 Codex 能像调用内置模型一样调用 DeepSeek。</p>
</li>
<li>
<p><strong>修改 ~/.codex/config.toml</strong>：只改写必要字段（见下文字段说明），新增 [model_providers.deepseek] 配置段，原有的 MCP 服务器、项目信任级别等配置都会保留，若发现有冲突字段会自动删除并打印删除原因。</p>
</li>
<li>
<p><strong>语法校验</strong>：写入前会先校验 config.toml / models.json 的合法性，校验不通过则中止，不会破坏原有文件。</p>
</li>
</ul><p>之后随时可以再次运行该脚本，用来切换模型，或者恢复到安装前的默认配置（菜单里的第 3 项）。</p></section></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/25/</id>
      <title type="text">Git 常用配置与仓库管理</title>
      <published>2026-09-05T00:00:00.000Z</published>
      <updated>2026-09-05T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/25/"/>
      <summary type="text">从初始化到远程仓库，一份自用的 Git 配置与命令笔记。</summary>
      <content type="html"><![CDATA[<section><h2>Git 初始化<a href="#git-初始化"><span>#</span></a></h2><ol>
<li>
<p>初始化身份</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>git</span><span> </span><span>config</span><span> </span><span>--global</span><span> </span><span>user.name</span><span> </span><span>"dongyue"</span></div></div><div><div><div>2</div></div><div><span>git</span><span> </span><span>config</span><span> </span><span>--global</span><span> </span><span>user.email</span><span> </span><span>"2436847447@qq.com"</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div>
</li>
<li>
<p>新版的 Git 默认分支名是 <code>master</code>，但 GitHub 和 GitLab 已经改用 <code>main</code>，建议统一：</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>git</span><span> </span><span>config</span><span> </span><span>--global</span><span> </span><span>init.defaultBranch</span><span> </span><span>main</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div>
</li>
<li>
<p>也可以将当前分支名从 master 改为 main：</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>git</span><span> </span><span>branch</span><span> </span><span>-m</span><span> </span><span>main</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div>
</li>
<li>
<p>用 SSH 方式连接 GitHub/GitLab 可以免密推送：</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>ssh-keygen</span><span> </span><span>-t</span><span> </span><span>ed25519</span><span> </span><span>-C</span><span> </span><span>"2436847447@qq.com"</span></div></div><div><div><div>2</div></div><div><span>cat</span><span> </span><span>~/.ssh/id_ed25519.pub</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div>
</li>
</ol></section>
<section><h2>Git 仓库<a href="#git-仓库"><span>#</span></a></h2><ol>
<li>
<p>初始化</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>git</span><span> </span><span>init</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div>
</li>
<li>
<p>添加远程仓库</p>
<div><figure><figcaption><span></span><span>Terminal window</span></figcaption><pre><code><div><div><div>1</div></div><div><span>git</span><span> </span><span>remote</span><span> </span><span>-v</span><span>                         </span><span># 查看远程仓库列表</span></div></div><div><div><div>2</div></div><div><span>git</span><span> </span><span>remote</span><span> </span><span>add</span><span> </span><span>origin</span><span> </span><span>&lt;地址&gt;</span><span>           </span><span># 添加远程仓库</span></div></div><div><div><div>3</div></div><div><span>git</span><span> </span><span>remote</span><span> </span><span>set-url</span><span> </span><span>origin</span><span> </span><span>&lt;新地址&gt;</span><span>     </span><span># 修改远程地址</span></div></div><div><div><div>4</div></div><div><span>git</span><span> </span><span>remote</span><span> </span><span>rm</span><span> </span><span>origin</span><span>                  </span><span># 删除远程关联</span></div></div></code></pre><div><div></div><div></div></div><div></div></figure></div>
<p>直接编辑 <code>.git/config</code> 文件这是最直接的方法。你可以手动编辑项目根目录下的 <code>.git/config</code> 文件，为同一个远程仓库名（remote）配置多个 <code>url</code>：</p>
<div><figure><figcaption></figcaption><pre><code><div><div><div>1</div></div><div><span>[remote "all"]</span></div></div><div><div><div>2</div></div><div><span>    </span><span>url</span><span><span> </span><span>=</span><span> git@github.com:user/repo.git</span></span></div></div><div><div><div>3</div></div><div><span>    </span><span>url</span><span><span> </span><span>=</span><span> git@gitee.com:user/repo.git</span></span></div></div></code></pre><div><div></div><div></div></div></figure></div>
</li>
</ol></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/24/</id>
      <title type="text">CC BY-SA 4.0 协议</title>
      <published>2026-08-08T00:00:00.000Z</published>
      <updated>2026-08-08T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/24/"/>
      <summary type="text">CC BY-SA 4.0 允许什么、要求什么，一页说清楚，包括它和 CC BY-NC 的区别。</summary>
      <content type="html"><![CDATA[<p>CC BY-SA 4.0（署名-相同方式共享 4.0 国际许可协议）是最常见的开放内容许可之一，博客文章、维基内容大量采用它。名字里的两个词就是全部约束：<strong>BY</strong> 要署名，<strong>SA</strong> 要同样方式共享。</p>
<section><h2>你可以做什么<a href="#你可以做什么"><span>#</span></a></h2><ul>
<li><strong>复制与分发</strong>：原文转载、打印、打包进资料，都允许</li>
<li><strong>改编</strong>：翻译、删改、合并进自己的作品</li>
<li><strong>商业使用</strong>：允许，不需要额外授权（这是它和 <code>NC</code> 系列最大的区别）</li>
<li>以上都<strong>不需要</strong>事先联系作者</li>
</ul></section>
<section><h2>你必须做什么<a href="#你必须做什么"><span>#</span></a></h2><ul>
<li><strong>署名（BY）</strong>：标注原作者、作品名称，并给出协议链接。不能暗示作者为你或你的用法背书</li>
<li><strong>相同方式共享（SA）</strong>：你的改编作品<strong>也必须使用 CC BY-SA 4.0 或兼容协议</strong>发布，不能改成一个更封闭的许可（比如”保留所有权利”或 CC BY-NC）</li>
<li><strong>标明改动</strong>：如果做过修改，要说明改了什么</li>
</ul></section>
<section><h2>它不包含什么<a href="#它不包含什么"><span>#</span></a></h2><ul>
<li>不提供任何担保，作者不对使用后果负责</li>
<li>不授予商标权和专利权</li>
<li>不覆盖被许可作品里可能存在的第三方素材（那些素材有自己的版权）</li>
</ul></section>
<section><h2>一句话判断<a href="#一句话判断"><span>#</span></a></h2><blockquote><p>只要你的用途是<strong>开放</strong>的，这个协议几乎不设限；一旦你想把改编结果<strong>闭源或商业独占</strong>，就不能用 CC BY-SA 的素材。</p></blockquote></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/23/</id>
      <title type="text">魔方公式字母含义</title>
      <published>2026-08-05T00:00:00.000Z</published>
      <updated>2026-08-05T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/23/"/>
      <summary type="text">R、U、F 这些魔方公式字母分别代表哪一层、往哪个方向转。</summary>
      <content type="html"><![CDATA[<section><h2>字母含义<a href="#字母含义"><span>#</span></a></h2>

<table><thead><tr><th>字母</th><th>含义</th></tr></thead><tbody><tr><td>U</td><td>Up → 顶层</td></tr><tr><td>F</td><td>Front → 前层</td></tr><tr><td>R</td><td>Right → 右层</td></tr><tr><td>D</td><td>Down → 底层</td></tr><tr><td>B</td><td>Back → 后层</td></tr><tr><td>L</td><td>Left → 左层</td></tr><tr><td>M</td><td>LR 的中层</td></tr><tr><td>E</td><td>UD 的中层</td></tr><tr><td>S</td><td>FB 的中层</td></tr></tbody></table></section>
<section><h2>顺逆时针<a href="#顺逆时针"><span>#</span></a></h2><ul>
<li>单个大写字母：该层顺时针旋转 90°</li>
<li>单个大写字母带 <code>'</code> 符号：该层逆时针旋转 90°</li>
<li>小写字母：同时转动两层</li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/22/</id>
      <title type="text">opencode 切换思考模式与模型</title>
      <published>2026-08-01T00:00:00.000Z</published>
      <updated>2026-08-01T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/22/"/>
      <summary type="text">在 opencode 里切换思考模式和模型的方法与配置位置。</summary>
      <content type="html"><![CDATA[<section><h2>切换思考模式<a href="#切换思考模式"><span>#</span></a></h2><ul>
<li><strong>使用 Slash 命令</strong>：在输入框中输入 <strong><code>/thinking</code></strong> 并发送，即可切换思考块的显示或隐藏。</li>
<li><strong>使用快捷键</strong>：按 <strong><code>Ctrl+T</code></strong> 可以快速切换当前模型变体，部分变体可能专门用于启用或禁用思考功能。</li>
<li><strong>通过命令面板</strong>：按 <code>Ctrl+P</code> 打开命令面板，搜索 “think” 并选择 “Show thinking”。</li>
</ul></section>
<section><h2>切换模型<a href="#切换模型"><span>#</span></a></h2><ul>
<li><strong>使用 <code>/models</code> 命令</strong>：在对话输入框中直接输入 <strong><code>/models</code></strong> 并回车，同样可以列出所有可用模型供你选择。</li>
<li><strong>打开模型列表</strong>：使用快捷键 <strong><code>Ctrl+X m</code></strong>，会弹出一个列表，你可以从中选择想用的模型。</li>
<li><strong>快速轮换模型</strong>：按下 <strong><code>F2</code></strong> 键可以在你最近使用过的模型中向前循环切换，<strong><code>Shift+F2</code></strong> 则向后循环切换。</li>
</ul></section>]]></content>
    </entry>
    <entry>
      <id>https://dongyue.org/posts/21/</id>
      <title type="text">如何预防 AI 投毒</title>
      <published>2026-06-20T00:00:00.000Z</published>
      <updated>2026-06-20T00:00:00.000Z</updated>
      <author><name>冬月</name></author>
      <link rel="alternate" href="https://dongyue.org/posts/21/"/>
      <summary type="text">训练数据和提示词被污染的常见手法，以及日常使用时的防范思路。</summary>
      <content type="html"><![CDATA[<section><h2>什么是 AI 投毒<a href="#什么是-ai-投毒"><span>#</span></a></h2><p>AI 投毒是指利用 AI 上网查找资料时，灰产在审核力度低的网站发布虚假信息，导致 AI 获取到错误信息并传播给用户。</p></section>
<section><h2>预防策略<a href="#预防策略"><span>#</span></a></h2><section><h3>1. 限制信息源可信度<a href="#1-限制信息源可信度"><span>#</span></a></h3><p>查询资料或对比产品时，<strong>必须让 AI 从知名度高、信息可信度高的网站获取数据</strong>，禁止引用任何自媒体账号的观点。</p><p><strong>⚠️ Warning：关键原则</strong> 信息来源的权威性直接决定了 AI 回答的可靠性。</p></section><section><h3>2. 要求原始数据溯源<a href="#2-要求原始数据溯源"><span>#</span></a></h3><p>让 AI 查找数据时，追加指令：</p><blockquote><p>请列出产品的原始数据出处，并分析是否存在 <strong>CEO 优化</strong> 的痕迹，标出异常信息源。</p></blockquote></section><section><h3>3. 多 AI 交叉验证<a href="#3-多-ai-交叉验证"><span>#</span></a></h3><p>利用多个 AI 平台对比同一问题的回答。如果某个 AI 的回答内容与其他平台明显不同且充满营销套路，那么这条信息源就可能是被投毒了。</p></section></section>
<section><h2>总结<a href="#总结"><span>#</span></a></h2>

<table><thead><tr><th>策略</th><th>核心操作</th></tr></thead><tbody><tr><td>限制源</td><td>只允许高权威网站</td></tr><tr><td>验证源</td><td>要求原始出处 + 异常标记</td></tr><tr><td>对比源</td><td>多 AI 交叉验证一致性</td></tr></tbody></table></section>
<section><h2>相关笔记<a href="#相关笔记"><span>#</span></a></h2><ul>
<li>AI MOC</li>
</ul></section>]]></content>
    </entry>
</feed>
