<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>September的个人空间</title><link>https://blog.september.win/</link><description>Recent content on September的个人空间</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.september.win/index.xml" rel="self" type="application/rss+xml"/><item><title>国家公园不只是远方的风景</title><link>https://blog.september.win/p/national-parks-are-more-than-scenery/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/national-parks-are-more-than-scenery/</guid><description>&lt;h1 id="国家公园不只是远方的风景"&gt;国家公园不只是远方的风景
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;目标受众：喜欢旅行、自然风光、户外生活，但对国家公园保护价值了解不深的普通公众，尤其是年轻人和亲子家庭。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="优胜美地半圆顶风景" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" height="768" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/national-parks-are-more-than-scenery/images/yosemite-half-dome.jpg" srcset="https://blog.september.win/p/national-parks-are-more-than-scenery/images/yosemite-half-dome_hu_34655498f6503e5b.jpg 800w, https://blog.september.win/p/national-parks-are-more-than-scenery/images/yosemite-half-dome.jpg 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;如果你在城市里待久了，可能会对几件事格外敏感：&lt;/p&gt;
&lt;p&gt;地铁里的拥挤，手机里的红点，楼下永远停不下来的喇叭声，还有早上醒来时那一点点“我想逃去山里”的冲动。&lt;/p&gt;
&lt;p&gt;于是我们向往国家公园。&lt;/p&gt;
&lt;p&gt;向往雪山、森林、湖泊、峡谷；向往一条没有红绿灯的小路；向往风吹过树梢时，不需要开降噪耳机的安静。&lt;/p&gt;
&lt;p&gt;但国家公园的价值，远远不只是“适合拍照”“适合打卡”“适合发朋友圈”。&lt;/p&gt;
&lt;p&gt;它更像是地球给自己留的一间恢复室，也是人类留给未来的一封绿色情书。&lt;/p&gt;
&lt;h2 id="这里不是风景背景板而是生命真正的家"&gt;这里不是风景背景板，而是生命真正的家
&lt;/h2&gt;&lt;p&gt;&lt;img alt="张家界国家森林公园" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" height="2736" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/national-parks-are-more-than-scenery/images/zhangjiajie.jpg" srcset="https://blog.september.win/p/national-parks-are-more-than-scenery/images/zhangjiajie_hu_9a2d8a278d2c8f6b.jpg 800w, https://blog.september.win/p/national-parks-are-more-than-scenery/images/zhangjiajie_hu_b1688f0ad6577379.jpg 1600w, https://blog.september.win/p/national-parks-are-more-than-scenery/images/zhangjiajie_hu_4c58d8aceb7342b1.jpg 2400w, https://blog.september.win/p/national-parks-are-more-than-scenery/images/zhangjiajie.jpg 3648w" width="3648"&gt;&lt;/p&gt;
&lt;p&gt;我们去国家公园时，看到的是山、树、河流和偶尔出现的动物。&lt;/p&gt;
&lt;p&gt;但对野生动物来说，那里不是景点，而是家。&lt;/p&gt;
&lt;p&gt;一片森林，可能是鸟类筑巢的地方；一条河流，可能是鱼群洄游的路线；一块看似普通的草地，可能正藏着无数昆虫、种子和微生物的生命网络。&lt;/p&gt;
&lt;p&gt;国家公园最重要的意义之一，就是把这些地方从“可以被随意消耗的资源”变成“必须被认真守护的家园”。&lt;/p&gt;
&lt;p&gt;人类很擅长修路、建楼、开发景区，也很擅长在地图上画出新的边界。&lt;/p&gt;
&lt;p&gt;但自然需要的，有时候恰恰是少一点打扰，多一点完整。&lt;/p&gt;
&lt;h2 id="它保护的其实也包括我们"&gt;它保护的其实也包括我们
&lt;/h2&gt;&lt;p&gt;&lt;img alt="大峡谷国家公园" class="gallery-image" data-flex-basis="160px" data-flex-grow="66" height="3072" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/national-parks-are-more-than-scenery/images/grand-canyon.jpg" srcset="https://blog.september.win/p/national-parks-are-more-than-scenery/images/grand-canyon_hu_17cef5934a4405c7.jpg 800w, https://blog.september.win/p/national-parks-are-more-than-scenery/images/grand-canyon_hu_27a25790c0c6d7b5.jpg 1600w, https://blog.september.win/p/national-parks-are-more-than-scenery/images/grand-canyon.jpg 2048w" width="2048"&gt;&lt;/p&gt;
&lt;p&gt;很多人以为保护国家公园，是在保护远方的动物和植物。&lt;/p&gt;
&lt;p&gt;其实，它也在保护我们自己。&lt;/p&gt;
&lt;p&gt;森林可以涵养水源、净化空气；湿地可以调节洪水、储存碳；草原和山地生态系统可以维持气候稳定，减少水土流失。&lt;/p&gt;
&lt;p&gt;换句话说，国家公园不是城市生活的反面。&lt;/p&gt;
&lt;p&gt;它是城市生活能够继续下去的底层系统之一。&lt;/p&gt;
&lt;p&gt;你今天喝到的一杯水，呼吸到的一口空气，夏天少一点极端高温的可能性，都和远方那些安静运转的自然系统有关。&lt;/p&gt;
&lt;p&gt;它们不发通知，不上热搜，不会在深夜给你弹窗提醒：&lt;/p&gt;
&lt;p&gt;“您好，今日已为您净化空气、储存水源、稳定生态，谢谢使用。”&lt;/p&gt;
&lt;p&gt;但它们一直在工作。&lt;/p&gt;
&lt;h2 id="国家公园也是一间没有围墙的课堂"&gt;国家公园也是一间没有围墙的课堂
&lt;/h2&gt;&lt;p&gt;真正走进自然，人会变得谦虚。&lt;/p&gt;
&lt;p&gt;站在峡谷边，你会知道时间不是只有日历上的一天一天；&lt;/p&gt;
&lt;p&gt;看见一棵古树，你会意识到自己的忙碌可能只是它生命里很短的一阵风；&lt;/p&gt;
&lt;p&gt;遇见野生动物，你也会明白：喜欢，不等于靠近；好奇，不等于打扰。&lt;/p&gt;
&lt;p&gt;国家公园教给我们的，不只是地理、生物和环保知识。&lt;/p&gt;
&lt;p&gt;它还教我们如何与世界保持距离感，如何尊重边界，如何承认人类并不是自然的主人。&lt;/p&gt;
&lt;p&gt;这门课没有考试，但每个人都在交答卷。&lt;/p&gt;
&lt;h2 id="喜欢它就别只带走照片"&gt;喜欢它，就别只带走照片
&lt;/h2&gt;&lt;p&gt;去国家公园旅行，最好的纪念品不是石头、花朵、树枝，也不是偷偷投喂动物后拍下的“亲密合影”。&lt;/p&gt;
&lt;p&gt;最好的纪念品，是你离开之后，它仍然像你来之前一样完整。&lt;/p&gt;
&lt;p&gt;我们可以做的事情并不复杂：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不乱扔垃圾，把自己带来的东西带走。&lt;/li&gt;
&lt;li&gt;不投喂野生动物，别让它们学会依赖人类。&lt;/li&gt;
&lt;li&gt;不采摘植物，不带走石头、种子或自然遗物。&lt;/li&gt;
&lt;li&gt;不越过步道和警示线，把“不能去”当成一种保护。&lt;/li&gt;
&lt;li&gt;不制造过度噪音，把安静还给森林、湖泊和其他游客。&lt;/li&gt;
&lt;li&gt;支持自然教育、生态保护和负责任的旅行方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;环保不一定要从很宏大的口号开始。&lt;/p&gt;
&lt;p&gt;有时候，它就是一次不乱扔垃圾，一次不投喂动物，一次把脚步停在警戒线外。&lt;/p&gt;
&lt;h2 id="把国家公园留给明天"&gt;把国家公园留给明天
&lt;/h2&gt;&lt;p&gt;我们以为走进国家公园，是为了逃离城市。&lt;/p&gt;
&lt;p&gt;后来才发现，那些森林、湖泊、山脉和动物，并不是远方的装饰。&lt;/p&gt;
&lt;p&gt;它们在安静地保护空气、水源、气候和生命的多样性。&lt;/p&gt;
&lt;p&gt;它们也在提醒我们：有些美好，不该只属于今天。&lt;/p&gt;
&lt;p&gt;国家公园的价值，不只在于我们能不能去看它。&lt;/p&gt;
&lt;p&gt;更在于很多年以后，仍然有人可以看见清澈的河流、完整的森林、自由生活的野生动物，和一个没有被我们透支完的地球。&lt;/p&gt;
&lt;p&gt;所以，下次走进国家公园时，请轻一点。&lt;/p&gt;
&lt;p&gt;轻一点说话，轻一点行走，轻一点索取。&lt;/p&gt;
&lt;p&gt;因为我们不是自然的主人。&lt;/p&gt;
&lt;p&gt;我们只是刚好路过，也刚好有责任守护它的人。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="互动区"&gt;互动区
&lt;/h2&gt;&lt;p&gt;如果只能推荐一个国家公园给朋友，你会选哪里？&lt;/p&gt;
&lt;p&gt;你最想守护的自然风景，又是什么？&lt;/p&gt;
&lt;p&gt;欢迎在评论区写下你的答案。&lt;/p&gt;
&lt;h2 id="配图来源与署名"&gt;配图来源与署名
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Yosemite Half Dome：Jon Sullivan，Public Domain，via Wikimedia Commons。&lt;/li&gt;
&lt;li&gt;Grand Canyon National Park：National Park Service Digital Image Archives，Public Domain，via Wikimedia Commons。&lt;/li&gt;
&lt;li&gt;Zhangjiajie National Forest Park：Kuruman，CC BY 2.0，via Wikimedia Commons。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Git 与 GitHub 核心概念入门笔记</title><link>https://blog.september.win/p/git-github-core-concepts/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/git-github-core-concepts/</guid><description>&lt;p&gt;这篇是把一份 Git 与 GitHub 的长笔记重新整理成博客版。原笔记覆盖了从安装配置、初始化仓库，到分支协作、Pull Request、Cherry-pick、Stash、Rebase 等常用操作。&lt;/p&gt;
&lt;p&gt;如果只想记住一句话：Git 负责记录代码历史，GitHub 负责把仓库放到网上协作。前者是版本控制工具，后者是代码托管和协作平台。&lt;/p&gt;
&lt;h2 id="git-和-github-是什么"&gt;Git 和 GitHub 是什么
&lt;/h2&gt;&lt;p&gt;Git 是一个版本控制工具。它解决的问题是：文件改来改去以后，怎么知道每次改了什么、谁改的、什么时候改的，以及怎么回到之前的状态。&lt;/p&gt;
&lt;p&gt;GitHub 是基于 Git 的代码托管平台。它把本地 Git 仓库放到云端，让别人可以浏览、下载、协作、提 Issue、提交 Pull Request。&lt;/p&gt;
&lt;p&gt;可以简单理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Git：本地版本管理系统&lt;/li&gt;
&lt;li&gt;GitHub：远程仓库和协作平台&lt;/li&gt;
&lt;li&gt;Repository：一个项目仓库&lt;/li&gt;
&lt;li&gt;Commit：一次历史快照&lt;/li&gt;
&lt;li&gt;Branch：一条开发线&lt;/li&gt;
&lt;li&gt;Pull Request：请求别人合并你的改动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Git 不依赖 GitHub 也能用，但多人协作和开源项目通常会搭配 GitHub 一起使用。&lt;/p&gt;
&lt;h2 id="准备工作"&gt;准备工作
&lt;/h2&gt;&lt;p&gt;最基础的环境一般包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;一个 GitHub 账号&lt;/li&gt;
&lt;li&gt;可选：Codex、Claude Code 这类 AI coding agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装 Git 后，可以用下面命令确认：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新电脑第一次使用 Git，建议先配置用户名和邮箱：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;你的名字&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;你的邮箱&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这两个信息会写进每次提交记录里，用来标识这次 Commit 是谁提交的。&lt;/p&gt;
&lt;h2 id="初始化仓库"&gt;初始化仓库
&lt;/h2&gt;&lt;p&gt;把一个普通文件夹变成 Git 仓库，可以执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行后，文件夹里会出现一个隐藏目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.git/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个目录保存了 Git 的全部版本信息。一般不要手动改它。删除 &lt;code&gt;.git/&lt;/code&gt;，就相当于取消这个文件夹的 Git 管理。&lt;/p&gt;
&lt;p&gt;在 VS Code 里，也可以通过 Source Control 面板点击 &lt;code&gt;Initialize Repository&lt;/code&gt; 完成初始化。&lt;/p&gt;
&lt;h2 id="gitignore-忽略文件"&gt;.gitignore 忽略文件
&lt;/h2&gt;&lt;p&gt;并不是项目里的所有文件都应该提交。&lt;/p&gt;
&lt;p&gt;常见需要忽略的内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;：可能保存密钥、Token、数据库密码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;node_modules/&lt;/code&gt;：依赖包体积大，可以通过 &lt;code&gt;npm install&lt;/code&gt; 重新安装&lt;/li&gt;
&lt;li&gt;构建产物：例如 &lt;code&gt;dist/&lt;/code&gt;、&lt;code&gt;build/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;日志和缓存文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以在仓库根目录创建 &lt;code&gt;.gitignore&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;node_modules/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dist/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原则是：源码、配置模板、文档应该提交；机器生成的临时文件、依赖目录、隐私密钥不要提交。&lt;/p&gt;
&lt;h2 id="commit-是一次快照"&gt;Commit 是一次快照
&lt;/h2&gt;&lt;p&gt;Commit 可以理解为给项目拍了一张快照。&lt;/p&gt;
&lt;p&gt;一次完整的提交流程通常是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;说明这次改了什么&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt;：看当前有哪些文件被修改&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git add&lt;/code&gt;：把改动放进暂存区&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit&lt;/code&gt;：把暂存区内容保存成一次历史记录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提交信息不要写成“修改”“更新”这种空话。更好的写法是描述这次改动的意图，比如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Add prompt guide category filter&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Fix homepage sidebar link&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Translate RenPy interpolation guide&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以后回看历史时，Commit Message 是最快的索引。&lt;/p&gt;
&lt;h2 id="工作区暂存区本地仓库远程仓库"&gt;工作区、暂存区、本地仓库、远程仓库
&lt;/h2&gt;&lt;p&gt;理解 Git 最重要的是理解几个区域。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;区域&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Working Directory&lt;/td&gt;
 &lt;td&gt;当前文件夹里正在编辑的文件&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Staging Area&lt;/td&gt;
 &lt;td&gt;准备提交的改动，也就是 &lt;code&gt;git add&lt;/code&gt; 后的区域&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Local Repository&lt;/td&gt;
 &lt;td&gt;本地保存的 Commit 历史&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Remote Repository&lt;/td&gt;
 &lt;td&gt;GitHub 上的远程仓库&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;常见命令对应关系：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add &lt;span class="c1"&gt;# 工作区 -&amp;gt; 暂存区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit &lt;span class="c1"&gt;# 暂存区 -&amp;gt; 本地仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push &lt;span class="c1"&gt;# 本地仓库 -&amp;gt; 远程仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull &lt;span class="c1"&gt;# 远程仓库 -&amp;gt; 本地仓库并合并&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;很多 Git 问题，本质上是在问：这个改动现在在哪个区域？&lt;/p&gt;
&lt;h2 id="撤销操作discardresetrevert"&gt;撤销操作：Discard、Reset、Revert
&lt;/h2&gt;&lt;p&gt;Git 里有好几种“后悔药”，但它们适用场景不同。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;操作&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;th&gt;适合场景&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Discard&lt;/td&gt;
 &lt;td&gt;丢掉工作区未提交的改动&lt;/td&gt;
 &lt;td&gt;文件改坏了，还没 commit&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Reset&lt;/td&gt;
 &lt;td&gt;把分支指针退回某个历史状态&lt;/td&gt;
 &lt;td&gt;本地历史需要重写，通常适合未推送的提交&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Revert&lt;/td&gt;
 &lt;td&gt;生成一个反向提交来撤销旧提交&lt;/td&gt;
 &lt;td&gt;已经推送或多人协作时更安全&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;新手最容易混淆 &lt;code&gt;reset&lt;/code&gt; 和 &lt;code&gt;revert&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;简单规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自己本地还没推送的提交，可以考虑 &lt;code&gt;reset&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;已经推送到远程、别人可能基于它继续开发的提交，优先用 &lt;code&gt;revert&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;revert&lt;/code&gt; 不会删除历史，而是新增一条“抵消旧改动”的提交，所以更适合团队协作。&lt;/p&gt;
&lt;h2 id="branch-分支"&gt;Branch 分支
&lt;/h2&gt;&lt;p&gt;分支是另一条开发线。&lt;/p&gt;
&lt;p&gt;常见用法是：主分支保持稳定，新功能放到单独分支开发。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch -c feature/login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;开发完成后，再合并回主分支：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git merge feature/login
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分支的价值在于隔离风险。你可以在 &lt;code&gt;feature&lt;/code&gt; 分支上尝试新功能，不影响 &lt;code&gt;main&lt;/code&gt; 的稳定状态。&lt;/p&gt;
&lt;p&gt;如果使用 VS Code 或 GitHub Desktop，也可以通过界面创建、切换和删除分支。&lt;/p&gt;
&lt;h2 id="head-是什么"&gt;HEAD 是什么
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;HEAD&lt;/code&gt; 表示当前仓库指向哪一次提交。&lt;/p&gt;
&lt;p&gt;通常情况下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;main&lt;/code&gt; 分支上，&lt;code&gt;HEAD&lt;/code&gt; 指向 &lt;code&gt;main&lt;/code&gt; 的最新提交&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;feature&lt;/code&gt; 分支上，&lt;code&gt;HEAD&lt;/code&gt; 指向 &lt;code&gt;feature&lt;/code&gt; 的最新提交&lt;/li&gt;
&lt;li&gt;如果 checkout 到某个历史提交，可能进入 detached HEAD 状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Detached HEAD 可以用来看历史代码，但不适合直接长期开发。需要继续改的话，最好从这个状态创建一个新分支。&lt;/p&gt;
&lt;h2 id="worktree-工作树"&gt;Worktree 工作树
&lt;/h2&gt;&lt;p&gt;Worktree 可以让一个仓库同时拥有多个工作目录。&lt;/p&gt;
&lt;p&gt;它适合这种场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主目录保持当前任务&lt;/li&gt;
&lt;li&gt;另开一个目录修 bug&lt;/li&gt;
&lt;li&gt;再开一个目录试验新分支&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常用命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git worktree add ../project-feature feature-name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AI coding agent 很适合搭配 worktree：每个任务一个独立工作树，互相不干扰，完成后再合并。&lt;/p&gt;
&lt;h2 id="merge-conflict-合并冲突"&gt;Merge Conflict 合并冲突
&lt;/h2&gt;&lt;p&gt;当两个分支修改了同一个文件的同一部分，Git 不知道该保留谁，就会产生冲突。&lt;/p&gt;
&lt;p&gt;解决冲突不是“哪个按钮更高级”，而是人工判断最终文件应该长什么样。&lt;/p&gt;
&lt;p&gt;一般流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开冲突文件&lt;/li&gt;
&lt;li&gt;找到冲突标记&lt;/li&gt;
&lt;li&gt;保留正确内容&lt;/li&gt;
&lt;li&gt;删除冲突标记&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git add&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;冲突标记大概长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;当前分支内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;=======
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;另一个分支内容
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 VS Code 中可以选择保留当前、保留传入、两者都保留，但最终还是要确认合并后的代码是否合理。&lt;/p&gt;
&lt;h2 id="clonepushpull"&gt;Clone、Push、Pull
&lt;/h2&gt;&lt;p&gt;远程仓库最常用的三个动作是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone &amp;lt;url&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git pull
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;含义分别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;clone&lt;/code&gt;：把 GitHub 上的仓库复制到本地&lt;/li&gt;
&lt;li&gt;&lt;code&gt;push&lt;/code&gt;：把本地提交推送到 GitHub&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pull&lt;/code&gt;：把 GitHub 上的新提交拉到本地&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你先在 GitHub 创建仓库，再复制到本地，一般用 &lt;code&gt;clone&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你先在本地写了项目，再想传到 GitHub，就先 &lt;code&gt;git init&lt;/code&gt;、&lt;code&gt;commit&lt;/code&gt;，再添加远程仓库并 &lt;code&gt;push&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="github-页面常用功能"&gt;GitHub 页面常用功能
&lt;/h2&gt;&lt;p&gt;GitHub 不只是放代码的网盘，它还有很多协作功能。&lt;/p&gt;
&lt;p&gt;常用区域包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code：查看代码、下载 zip、复制 clone 地址&lt;/li&gt;
&lt;li&gt;Commit：查看提交历史&lt;/li&gt;
&lt;li&gt;README：项目介绍，一般是仓库首页最重要的说明&lt;/li&gt;
&lt;li&gt;Releases：发布版本和下载构建产物&lt;/li&gt;
&lt;li&gt;Issues：提 bug、需求、讨论&lt;/li&gt;
&lt;li&gt;Pull Requests：代码合并请求&lt;/li&gt;
&lt;li&gt;Actions：自动化构建、测试和部署&lt;/li&gt;
&lt;li&gt;Fork：把别人的项目复制一份到自己账号下&lt;/li&gt;
&lt;li&gt;Star：收藏项目，也能反映项目热度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快捷键也很实用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt;：搜索仓库内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t&lt;/code&gt;：快速找文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.&lt;/code&gt;：在浏览器打开网页版 VS Code&lt;/li&gt;
&lt;li&gt;&lt;code&gt;?&lt;/code&gt;：查看 GitHub 快捷键&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="fork-和-pull-request"&gt;Fork 和 Pull Request
&lt;/h2&gt;&lt;p&gt;开源协作通常不是直接改别人的仓库，而是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fork：把仓库复制到自己账号&lt;/li&gt;
&lt;li&gt;Clone：把自己的 fork 克隆到本地&lt;/li&gt;
&lt;li&gt;Branch：创建新分支修改&lt;/li&gt;
&lt;li&gt;Commit：提交改动&lt;/li&gt;
&lt;li&gt;Push：推送到自己的远程仓库&lt;/li&gt;
&lt;li&gt;Pull Request：请求原项目合并&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pull Request 不是单纯的“上传代码”，它也是讨论区。维护者可以 review 代码、提出修改意见，直到确认没问题再合并。&lt;/p&gt;
&lt;p&gt;如果你是项目协作者，仓库管理员也可以直接把你加成 collaborator。这样你可以直接 push 到仓库，但更推荐仍然通过分支和 PR 保持审查流程。&lt;/p&gt;
&lt;h2 id="cherry-pick-精选提交"&gt;Cherry-pick 精选提交
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cherry-pick&lt;/code&gt; 用来把某几个 Commit 单独拿到当前分支。&lt;/p&gt;
&lt;p&gt;例如 feature 分支有三次提交：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;A 修按钮
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;B 改文案
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C 加功能
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你只想把 &lt;code&gt;A&lt;/code&gt; 合到 main，不想要 &lt;code&gt;B&lt;/code&gt; 和 &lt;code&gt;C&lt;/code&gt;，就可以 cherry-pick &lt;code&gt;A&lt;/code&gt; 的 Commit ID。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git cherry-pick &amp;lt;commit-id&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它适合“只挑某个改动”的场景，不适合替代正常合并流程。&lt;/p&gt;
&lt;h2 id="stash-临时存储"&gt;Stash 临时存储
&lt;/h2&gt;&lt;p&gt;如果你正在改代码，突然需要切到另一个分支处理急事，但当前改动还不适合提交，可以用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git stash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它会把当前未提交改动临时收起来，让工作区恢复干净。&lt;/p&gt;
&lt;p&gt;回来以后再恢复：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git stash pop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Stash 适合临时切换任务，不应该长期当作保存代码的地方。真正有价值的进度还是应该 commit。&lt;/p&gt;
&lt;h2 id="rebase-变基"&gt;Rebase 变基
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rebase&lt;/code&gt; 可以把一个分支的提交“挪到”另一个分支最新提交之后，让历史更线性。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git switch feature
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git rebase main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;效果是：feature 分支像是基于最新 main 重新开发出来的一样。&lt;/p&gt;
&lt;p&gt;注意：rebase 会改写提交历史。&lt;br&gt;
如果这个分支已经推送并且别人也在用，随便 rebase 再强推会影响别人。所以它更适合个人分支、尚未公开协作的分支。&lt;/p&gt;
&lt;p&gt;简单规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自己一个人用的功能分支，可以 rebase&lt;/li&gt;
&lt;li&gt;多人共用的公共分支，谨慎 rebase&lt;/li&gt;
&lt;li&gt;主分支不要乱 rebase&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ai-时代更要懂-git"&gt;AI 时代更要懂 Git
&lt;/h2&gt;&lt;p&gt;现在很多代码可以交给 AI agent 写，但 Git 反而更重要。&lt;/p&gt;
&lt;p&gt;因为 AI 改代码很快，也可能一次改很多文件。如果没有 Git，你很难回答这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 到底改了哪些文件？&lt;/li&gt;
&lt;li&gt;哪次改动引入了问题？&lt;/li&gt;
&lt;li&gt;能不能只保留其中一部分？&lt;/li&gt;
&lt;li&gt;能不能回到 AI 修改前的状态？&lt;/li&gt;
&lt;li&gt;多个 AI 任务能不能并行？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 AI coding 的基础动作应该是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;一个任务 -&amp;gt; 一个分支或 worktree -&amp;gt; 小步 commit -&amp;gt; 审查 diff -&amp;gt; 再合并
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要让 AI 在一个长期混乱的工作区里连续改很多轮。每完成一个明确的小功能，就 commit 一次。这样即使后面改坏了，也能清楚地回退。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;Git 的核心不是背命令，而是理解版本流动：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;工作区 -&amp;gt; 暂存区 -&amp;gt; 本地仓库 -&amp;gt; 远程仓库
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;GitHub 的核心也不是“上传代码”，而是围绕仓库建立协作流程：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fork -&amp;gt; Branch -&amp;gt; Commit -&amp;gt; Push -&amp;gt; Pull Request -&amp;gt; Review -&amp;gt; Merge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;掌握这些概念后，命令只是操作方式。无论是在 VS Code 里点按钮，还是让 AI agent 执行命令，本质都是在移动文件状态、提交历史和分支指针。&lt;/p&gt;
&lt;p&gt;对新手来说，最值得先熟练的不是所有高级命令，而是这几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会看 &lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;会做小步 commit&lt;/li&gt;
&lt;li&gt;会写清楚提交信息&lt;/li&gt;
&lt;li&gt;会用分支隔离任务&lt;/li&gt;
&lt;li&gt;会区分 &lt;code&gt;discard&lt;/code&gt;、&lt;code&gt;reset&lt;/code&gt;、&lt;code&gt;revert&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;会把本地改动 push 到 GitHub&lt;/li&gt;
&lt;li&gt;会通过 Pull Request 协作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些掌握了，Git 和 GitHub 就不再是黑盒，而是你和 AI、队友、未来的自己协作时最可靠的底座。&lt;/p&gt;</description></item><item><title>把 Ren'Py 游戏翻译流程写成一个可复用 Skill</title><link>https://blog.september.win/p/renpy-game-translation-skill/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/renpy-game-translation-skill/</guid><description>&lt;p&gt;最近把一套 Ren&amp;rsquo;Py 游戏翻译流程整理成了一个 Codex Skill。它的作用不是“教 AI 怎么随便翻译几句文本”，而是把 Ren&amp;rsquo;Py 汉化里那些很容易被忽略的规则，变成一份可以反复执行的检查清单。&lt;/p&gt;
&lt;p&gt;Ren&amp;rsquo;Py 游戏翻译看起来很简单：找到文本，翻成中文，保存。但真正做起来会发现，问题经常不在“这句话怎么翻”，而在“这句话到底会不会被 Ren&amp;rsquo;Py 正确匹配、正确加载、正确显示”。&lt;/p&gt;
&lt;p&gt;所以这个 Skill 的核心思路是：不要把翻译当成纯文本替换，而要把它当成一个小型补丁工程。&lt;/p&gt;
&lt;h2 id="为什么要写成-skill"&gt;为什么要写成 Skill
&lt;/h2&gt;&lt;p&gt;单次翻译靠经验可以做完，但下一次换一个游戏，很多坑还会再踩一遍。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;old&lt;/code&gt; 字符串被改了一个空格，导致翻译完全匹配不上&lt;/li&gt;
&lt;li&gt;菜单选项带了文字标签或状态后缀，生成的翻译没有覆盖真实显示内容&lt;/li&gt;
&lt;li&gt;变量插值里的人名、阵营名仍然显示英文&lt;/li&gt;
&lt;li&gt;字体不支持中文，结果游戏里全是方块&lt;/li&gt;
&lt;li&gt;直接改原脚本，更新游戏后补丁很难迁移&lt;/li&gt;
&lt;li&gt;批量脚本写文件时编码错了，中文变成乱码或问号&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是“翻译水平”问题，而是流程问题。Skill 适合处理的正是这种流程：每次遇到 Ren&amp;rsquo;Py 项目，都按同一套顺序检查、修改和验证。&lt;/p&gt;
&lt;h2 id="工作区应该放在哪里"&gt;工作区应该放在哪里
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 翻译最重要的目录是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;game/tl/&amp;lt;language&amp;gt;/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Skill 里的第一条规则就是：优先在翻译目录里工作，能不改原始脚本就不改原始脚本。&lt;/p&gt;
&lt;p&gt;原因很现实。原脚本是游戏本体的一部分，直接改它虽然快，但后续更新、分发、回滚都会变麻烦。更稳的方式是把翻译、字体、界面覆盖、语言按钮、默认语言设置等内容尽量放进 &lt;code&gt;game/tl/&amp;lt;language&amp;gt;/&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这样做的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;删除语言文件夹就能恢复原版&lt;/li&gt;
&lt;li&gt;游戏更新时更容易迁移&lt;/li&gt;
&lt;li&gt;补丁边界清楚&lt;/li&gt;
&lt;li&gt;不容易误伤原游戏逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果原游戏没有 &lt;code&gt;.rpy&lt;/code&gt;，只有 &lt;code&gt;.rpyc&lt;/code&gt; 或资源包，那就先处理解包、反编译或生成翻译文件的问题，而不是直接乱改。&lt;/p&gt;
&lt;h2 id="oldnew-不能乱动"&gt;old/new 不能乱动
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 里常见的翻译形式有两种。&lt;/p&gt;
&lt;p&gt;一种是对话块：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;translate chinese start_abc123:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;这里写翻译后的台词&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;另一种是字符串表：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;translate chinese strings:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; old &amp;#34;Start&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; new &amp;#34;开始&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里最容易犯的错是改 &lt;code&gt;old&lt;/code&gt;。&lt;br&gt;
&lt;code&gt;old&lt;/code&gt; 不是给你润色的原文，它是 Ren&amp;rsquo;Py 用来匹配原始文本的钥匙。空格、标点、文本标签、大小写、换行都可能影响匹配。&lt;/p&gt;
&lt;p&gt;所以规则很简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;old 保持原样
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new 写翻译
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果一个 &lt;code&gt;old&lt;/code&gt; 看起来有点怪，比如带着 &lt;code&gt;{size=}&lt;/code&gt;、颜色标签、状态后缀，也不要顺手清理。真实运行时显示出来的字符串很可能就是这么匹配的。&lt;/p&gt;
&lt;h2 id="菜单和-ui-要单独查"&gt;菜单和 UI 要单独查
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 自动生成翻译文件很有用，但它不一定能覆盖所有运行时可见文本。&lt;/p&gt;
&lt;p&gt;除了对话，还要主动搜索这些位置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Character&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;textbutton&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tooltip&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;renpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;renpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;default&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;define&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;xxx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;menu&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;尤其是菜单选项。它们经常带条件、标签、样式或自定义 screen 处理。你在翻译文件里看到的 &lt;code&gt;old &amp;quot;Yes&amp;quot;&lt;/code&gt;，不一定覆盖了运行时真正显示的 &lt;code&gt;{color=#fff}Yes{/color}&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果某个选项死活不翻译，别先怀疑 Ren&amp;rsquo;Py。先把运行时原文和 &lt;code&gt;old&lt;/code&gt; 逐字节对一下，包括空格和标签。&lt;/p&gt;
&lt;h2 id="变量插值是隐藏大坑"&gt;变量插值是隐藏大坑
&lt;/h2&gt;&lt;p&gt;这次整理 Skill 时，最值得单独记下的是变量插值。&lt;/p&gt;
&lt;p&gt;Ren&amp;rsquo;Py 里常见写法是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Welcome to [tribe_name], [player_name].&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 &lt;code&gt;tribe_name&lt;/code&gt; 的值是 &lt;code&gt;&amp;quot;Wartribe&amp;quot;&lt;/code&gt;，即使你在字符串表里写了：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;old &amp;#34;Wartribe&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;new &amp;#34;战族&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最终显示时也不一定会自动变成中文。因为普通的 &lt;code&gt;[tribe_name]&lt;/code&gt; 插值只是把变量当前值拿出来显示，不会必然再走一遍翻译表。&lt;/p&gt;
&lt;p&gt;这种情况下要用翻译感知插值：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;欢迎来到 [tribe_name!t]，[player_name!t]。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果变量翻译后还需要继续插值，可以看情况用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;ti&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个坑很隐蔽，因为外面的句子已经翻译了，只有嵌进去的人名、地名、阵营名还保留英文。看起来像漏翻，其实是插值方式不对。&lt;/p&gt;
&lt;h2 id="高级补丁放-zzzrpy"&gt;高级补丁放 zzz.rpy
&lt;/h2&gt;&lt;p&gt;有些问题不是一句 &lt;code&gt;old/new&lt;/code&gt; 能解决的，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;添加语言切换按钮&lt;/li&gt;
&lt;li&gt;设置默认语言&lt;/li&gt;
&lt;li&gt;替换字体&lt;/li&gt;
&lt;li&gt;调整中文 UI 样式&lt;/li&gt;
&lt;li&gt;覆盖 screen&lt;/li&gt;
&lt;li&gt;修正少量源代码层面的文本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类内容可以放到翻译目录里的补丁文件，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;game/tl/chinese/zzz.rpy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见做法是加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;init offset = 1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;让补丁比原定义更晚加载。这样可以覆盖 screen、style、define 等内容，又不会直接动原文件。&lt;/p&gt;
&lt;p&gt;默认语言也要分清：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;define config.default_language = &amp;#34;chinese&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这更适合“首次启动默认中文”。&lt;br&gt;
如果用 &lt;code&gt;config.language&lt;/code&gt; 强行指定语言，就可能变成每次启动都锁死语言，不一定符合玩家预期。&lt;/p&gt;
&lt;h2 id="字体不是最后再想的事"&gt;字体不是最后再想的事
&lt;/h2&gt;&lt;p&gt;中文翻译里，字体问题经常到最后才暴露：文本已经翻好了，进游戏一看全是方块。&lt;/p&gt;
&lt;p&gt;Skill 里把字体和样式也放进检查范围。一般有几种处理方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;translate &amp;lt;language&amp;gt; style&lt;/code&gt; 里覆盖样式&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;translate &amp;lt;language&amp;gt; python&lt;/code&gt; 里设置 GUI 变量&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;game/tl/&amp;lt;language&amp;gt;/&lt;/code&gt; 下镜像放置字体资源&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;zzz.rpy&lt;/code&gt; 做语言限定的字体覆盖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键是尽量让字体修复只影响目标语言，不要全局改坏原版 UI。&lt;/p&gt;
&lt;h2 id="不要信任批量替换"&gt;不要信任批量替换
&lt;/h2&gt;&lt;p&gt;批量脚本很诱人，尤其是翻译量大的时候。但 Ren&amp;rsquo;Py 文件里有很多结构性内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;缩进&lt;/li&gt;
&lt;li&gt;引号&lt;/li&gt;
&lt;li&gt;转义符&lt;/li&gt;
&lt;li&gt;文本标签&lt;/li&gt;
&lt;li&gt;插值变量&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%&lt;/code&gt;、&lt;code&gt;\&lt;/code&gt;、&lt;code&gt;/&lt;/code&gt; 这类特殊符号&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果脚本没有严格按 UTF-8 读写，中文很容易变成乱码、问号或损坏标签。&lt;/p&gt;
&lt;p&gt;所以 Skill 里明确写了：在 Windows 上做批量编辑时，要使用明确的 UTF-8 读写方式。改完后要扫一遍：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;乱码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;???? 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;� 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;损坏的 {tag}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;损坏的 [variable]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;翻译文件不是普通 Markdown，不能只看文本大概对不对。&lt;/p&gt;
&lt;h2 id="验证要看三个文件"&gt;验证要看三个文件
&lt;/h2&gt;&lt;p&gt;改完之后，不要只打开一两句台词看看。至少要检查：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;errors.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;traceback.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;text_overflow.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它们分别对应不同问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;errors.txt&lt;/code&gt;：生成或启动阶段的问题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traceback.txt&lt;/code&gt;：运行时崩溃&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text_overflow.txt&lt;/code&gt;：文本溢出、排版放不下&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还要实际测试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主菜单&lt;/li&gt;
&lt;li&gt;设置界面&lt;/li&gt;
&lt;li&gt;语言切换&lt;/li&gt;
&lt;li&gt;存档读档&lt;/li&gt;
&lt;li&gt;代表性对话&lt;/li&gt;
&lt;li&gt;选项菜单&lt;/li&gt;
&lt;li&gt;字体显示&lt;/li&gt;
&lt;li&gt;被覆盖的 label 或 screen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ren&amp;rsquo;Py 翻译不是“文件能保存就完成”，而是“游戏运行时每条路径都能正确显示”。&lt;/p&gt;
&lt;h2 id="这个-skill-最有用的地方"&gt;这个 Skill 最有用的地方
&lt;/h2&gt;&lt;p&gt;我觉得它最有用的不是告诉 AI “请翻译成中文”，而是强迫 AI 先尊重 Ren&amp;rsquo;Py 的工程规则。&lt;/p&gt;
&lt;p&gt;它会提醒我：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要乱改 &lt;code&gt;old&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不要直接动原脚本&lt;/li&gt;
&lt;li&gt;不要忽略菜单和 UI&lt;/li&gt;
&lt;li&gt;不要忘记变量插值的 &lt;code&gt;!t&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不要把字体和排版当成收尾小事&lt;/li&gt;
&lt;li&gt;不要跳过运行验证&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比单纯提高翻译文风重要得多。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;Ren&amp;rsquo;Py 游戏汉化本质上不是文本替换，而是一套围绕运行时匹配、语言加载、界面覆盖和补丁分发的工程流程。&lt;/p&gt;
&lt;p&gt;把这套流程写成 Skill 之后，AI 就不只是“会翻译”，而是会按固定步骤处理项目结构、翻译文件、UI 字符串、变量插值、字体、补丁和验证。&lt;/p&gt;
&lt;p&gt;下一次再做 Ren&amp;rsquo;Py 游戏翻译时，就不用从零回忆哪些坑要避开。直接让 Skill 接管检查清单，人只需要把关翻译质量和最终体验。&lt;/p&gt;</description></item><item><title>NotebookLM 做 PPT 的正确打开方式：先搭结构，再分章生成</title><link>https://blog.september.win/p/notebooklm-antigravity-ppt-workflow/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/notebooklm-antigravity-ppt-workflow/</guid><description>&lt;p&gt;最近看了一个 NotebookLM + Antigravity 的进阶教程，里面有一个点很适合单独拎出来写：不要把 NotebookLM 当成“一键生成 PPT”的按钮，而是把它当成一个能理解资料、拆解结构、辅助生产的外脑。&lt;/p&gt;
&lt;p&gt;如果只是把一堆资料扔进去，然后直接让它生成 PPT，结果通常不会太理想。它会很快给你一份看起来完整的幻灯片，但页数有限、内容压缩严重，很多细节被省略。对于读书报告、课程展示、专题分享这种材料量比较大的任务来说，这种“一键生成”更像是摘要，不像是一份真正能拿去讲的 PPT。&lt;/p&gt;
&lt;p&gt;更好的做法，是把 PPT 制作拆成几个阶段。&lt;/p&gt;
&lt;h2 id="先让-notebooklm-搭大纲"&gt;先让 NotebookLM 搭大纲
&lt;/h2&gt;&lt;p&gt;第一步不要急着生成幻灯片，而是先让 NotebookLM 读完资料，输出一个完整大纲。&lt;/p&gt;
&lt;p&gt;这个大纲至少要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;整份 PPT 要分成几个章节&lt;/li&gt;
&lt;li&gt;每个章节负责讲什么&lt;/li&gt;
&lt;li&gt;每个章节大概需要几页&lt;/li&gt;
&lt;li&gt;每页承担什么信息&lt;/li&gt;
&lt;li&gt;整体的风格、语气和版式方向&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步的意义是先拿到全局地图。AI 最容易犯的错误，不是不会写，而是在没有全局规划时把复杂内容压扁。先要结构，再要页面，后面的结果会稳定很多。&lt;/p&gt;
&lt;h2 id="再按章节分批生成"&gt;再按章节分批生成
&lt;/h2&gt;&lt;p&gt;NotebookLM 直接生成 PPT 时会遇到页数和信息密度的限制。如果材料很多，可以把生成任务拆开。&lt;/p&gt;
&lt;p&gt;比如一份 60 页左右的专题 PPT，可以拆成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第 1 章：背景与问题&lt;/li&gt;
&lt;li&gt;第 2 章：核心概念&lt;/li&gt;
&lt;li&gt;第 3 章：案例或文本分析&lt;/li&gt;
&lt;li&gt;第 4 章：方法总结&lt;/li&gt;
&lt;li&gt;第 5 章：结论与延伸&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次只让它生成其中一章。这样做有两个好处：一是绕开单次生成页数太少的问题，二是每一章能写得更细，不会被强行压缩成几页概述。&lt;/p&gt;
&lt;h2 id="用固定提示词保持风格一致"&gt;用固定提示词保持风格一致
&lt;/h2&gt;&lt;p&gt;分章生成的问题也很明显：如果每次提示词不一样，最后合起来就会像几份不同 PPT 拼在一起。&lt;/p&gt;
&lt;p&gt;所以每次生成时，都应该复用同一套风格要求，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标题层级保持一致&lt;/li&gt;
&lt;li&gt;封面页、章节页和内容页的版式统一&lt;/li&gt;
&lt;li&gt;配色和字体气质统一&lt;/li&gt;
&lt;li&gt;每页信息密度接近&lt;/li&gt;
&lt;li&gt;图文比例一致&lt;/li&gt;
&lt;li&gt;不要突然切换成完全不同的设计风格&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这部分可以理解成给 AI 一份“设计规范”。它不一定能百分百遵守，但有规范总比每次自由发挥要可靠。&lt;/p&gt;
&lt;h2 id="最后人工合并和校对"&gt;最后人工合并和校对
&lt;/h2&gt;&lt;p&gt;AI 生成的内容不能直接当成最终稿。最后还要人工做一次整合。&lt;/p&gt;
&lt;p&gt;我会重点检查这些地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;章节之间有没有重复&lt;/li&gt;
&lt;li&gt;页面顺序是否顺畅&lt;/li&gt;
&lt;li&gt;每章开头和结尾是否能接上&lt;/li&gt;
&lt;li&gt;标题风格是否统一&lt;/li&gt;
&lt;li&gt;重点结论有没有被埋掉&lt;/li&gt;
&lt;li&gt;有没有看起来很漂亮但实际上没信息量的页面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一步很重要。AI 擅长把资料快速摊开，但最后的表达节奏还是要人来把关。PPT 不是资料堆叠，而是一次有顺序的讲述。&lt;/p&gt;
&lt;h2 id="antigravity-的作用"&gt;Antigravity 的作用
&lt;/h2&gt;&lt;p&gt;视频里另一个思路是把 NotebookLM 和 Antigravity 连起来，让一个工具负责理解资料，另一个工具负责操作、检索和自动化。&lt;/p&gt;
&lt;p&gt;这种组合的价值在于：NotebookLM 更像资料库和阅读助手，Antigravity 更像可以执行任务的工作台。前者负责理解，后者负责行动。比如让它自动搜索资料、构建笔记本、整理来源，再反过来指导 PPT 或项目开发。&lt;/p&gt;
&lt;p&gt;这其实是一个很有代表性的 AI 工作流变化：不是让一个工具包办全部，而是让多个 AI 工具各自做擅长的事。&lt;/p&gt;
&lt;h2 id="我自己的理解"&gt;我自己的理解
&lt;/h2&gt;&lt;p&gt;这套方法真正有用的地方，不在于“AI 可以帮我做 PPT”，而在于它把制作 PPT 的流程重新拆开了。&lt;/p&gt;
&lt;p&gt;传统做法是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;找资料 -&amp;gt; 整理资料 -&amp;gt; 写大纲 -&amp;gt; 做页面 -&amp;gt; 改格式
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一键生成的做法是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;塞资料 -&amp;gt; 生成 PPT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但更稳的 AI 工作流应该是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;塞资料 -&amp;gt; 生成结构 -&amp;gt; 分章生成 -&amp;gt; 统一风格 -&amp;gt; 人工整合
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这比一键生成多了几步，但每一步都更可控。尤其是材料量大、主题复杂、最后还要公开展示的时候，可控性比速度更重要。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;NotebookLM 不应该只被当成 PPT 生成器。它更适合当成资料理解器、结构规划器和内容初稿生成器。&lt;/p&gt;
&lt;p&gt;如果只是想快速做一份十几页的展示，一键生成当然够用。但如果想做一份真正能讲清楚问题的长 PPT，就应该先让它帮你搭结构，再分章生产，最后人工合并和润色。&lt;/p&gt;
&lt;p&gt;AI 做 PPT 的关键不是“少点几下鼠标”，而是把原本混乱的资料整理过程变成一个更清晰的工作流。它节省的不是最后排版那一点时间，而是从资料到表达之间最消耗脑力的那段路。&lt;/p&gt;</description></item><item><title>把旧手机变成私人学习资料网盘</title><link>https://blog.september.win/p/phone-alist-study-archive/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/phone-alist-study-archive/</guid><description>&lt;p&gt;之前博客已经跑在一台安卓手机上了。既然这台手机本来就 24 小时在线，那干脆再给它加一个更实用的功能：私人学习资料网盘。&lt;/p&gt;
&lt;p&gt;现在入口是：&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://drive.september.win" target="_blank" rel="noopener"
 &gt;September Archive&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;主要用来放课程 PPT、教材 PDF、作业资料、考试复习文档，还有一些平时从桌面和聊天记录里扒出来的学习文件。它不是公开资源站，更像是给自己准备的长期资料仓库。&lt;/p&gt;
&lt;h2 id="架构"&gt;架构
&lt;/h2&gt;&lt;p&gt;整体结构很简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;安卓手机 Termux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ Alist
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ /sdcard/StudyArchive
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ Cloudflare Tunnel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ drive.september.win
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;手机本地跑 Alist，资料实际存在 &lt;code&gt;/sdcard/StudyArchive&lt;/code&gt;。外部访问不直接暴露手机端口，而是通过 Cloudflare Tunnel 转发到公网域名。&lt;/p&gt;
&lt;p&gt;这样做的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不需要公网 IP&lt;/li&gt;
&lt;li&gt;不需要在路由器上开端口&lt;/li&gt;
&lt;li&gt;手机只主动连 Cloudflare&lt;/li&gt;
&lt;li&gt;网盘地址稳定&lt;/li&gt;
&lt;li&gt;和博客一样都挂在自己的域名下面&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安全"&gt;安全
&lt;/h2&gt;&lt;p&gt;这个网盘没有裸奔。&lt;/p&gt;
&lt;p&gt;外层用了 Cloudflare Access，访问 &lt;code&gt;drive.september.win&lt;/code&gt; 时会先要求邮箱验证码。通过之后才会进入 Alist 自己的登录页。&lt;/p&gt;
&lt;p&gt;也就是说现在是两层：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare Access
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; Alist 登录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; StudyArchive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Alist 的游客访问也关掉了，游客按钮也从页面里隐藏了。文件接口未登录时会返回 401。&lt;/p&gt;
&lt;p&gt;这点很重要，因为学习资料虽然不是什么商业机密，但里面可能混着作业、论文、准考证、课程名单之类的东西，不能随便暴露在公网。&lt;/p&gt;
&lt;h2 id="资料整理"&gt;资料整理
&lt;/h2&gt;&lt;p&gt;这次顺手把电脑里的学习资料整理了一遍。&lt;/p&gt;
&lt;p&gt;大致扫了这些地方：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;D:\
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;E:\
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Desktop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最后手动整理成几个分类：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Presentation
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;人智
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;党史课资料
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;分析化学
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;基础无机化学实验
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;新生研讨课
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;有机化学（生科，生技）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;生物
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;线代
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;职规赛
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;英美文学鉴赏
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;逻辑学
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;高等数学
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最后传到手机上一共大约 1.1GB，230 个文件。&lt;/p&gt;
&lt;h2 id="网页外观"&gt;网页外观
&lt;/h2&gt;&lt;p&gt;Alist 默认界面有点朴素，所以换了一套社区美化主题，又稍微改了一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;背景图使用博客同款背景&lt;/li&gt;
&lt;li&gt;favicon 和头像使用博客头像&lt;/li&gt;
&lt;li&gt;左上角改成 &lt;code&gt;September Archive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;加了一个上传入口&lt;/li&gt;
&lt;li&gt;友链页面也挂上了网盘入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在它看起来更像博客的一部分，而不是一个突兀的单独服务。&lt;/p&gt;
&lt;h2 id="上传方式"&gt;上传方式
&lt;/h2&gt;&lt;p&gt;目前上传有两种方式。&lt;/p&gt;
&lt;p&gt;一种是直接登录网页，在网盘里上传文件。&lt;/p&gt;
&lt;p&gt;另一种是本地先整理好文件夹，然后打包传到手机，再解压到：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/sdcard/StudyArchive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这次大批量传输的时候，普通 &lt;code&gt;scp&lt;/code&gt; 走 Cloudflare SSH 隧道太慢，所以最后用了临时下载隧道：电脑开一个本地 HTTP 服务，再用 Cloudflare quick tunnel 暴露给手机下载。下载完成后校验 SHA256，再在手机端解压。&lt;/p&gt;
&lt;p&gt;虽然过程有点绕，但对大文件比一堆小文件逐个 &lt;code&gt;scp&lt;/code&gt; 稳得多。&lt;/p&gt;
&lt;h2 id="为什么不用现成网盘"&gt;为什么不用现成网盘
&lt;/h2&gt;&lt;p&gt;不是不能用 OneDrive、百度网盘、阿里云盘这些服务，只是它们不太像“自己的资料库”。&lt;/p&gt;
&lt;p&gt;我想要的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;域名是自己的&lt;/li&gt;
&lt;li&gt;文件放在哪里自己知道&lt;/li&gt;
&lt;li&gt;目录结构自己控制&lt;/li&gt;
&lt;li&gt;上传下载没有额外客户端绑架&lt;/li&gt;
&lt;li&gt;可以和博客、服务器、自动化脚本继续联动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是自建服务最有意思的地方：它不一定更省事，但更可控。&lt;/p&gt;
&lt;h2 id="后续计划"&gt;后续计划
&lt;/h2&gt;&lt;p&gt;后面还可以继续加几件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WebDAV，同步 Obsidian 或 Zotero&lt;/li&gt;
&lt;li&gt;自动备份到另一台电脑或对象存储&lt;/li&gt;
&lt;li&gt;给 PDF 和文档做全文搜索&lt;/li&gt;
&lt;li&gt;做一个学习资料索引页&lt;/li&gt;
&lt;li&gt;按课程自动生成目录&lt;/li&gt;
&lt;li&gt;给重要资料加冷备份&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前第一版已经够用了。旧手机继续发光发热，博客和网盘都跑在上面，也算是一个小型个人资料中心了。&lt;/p&gt;</description></item><item><title>清理c盘用软件</title><link>https://blog.september.win/p/%E6%B8%85%E7%90%86c%E7%9B%98%E7%94%A8%E8%BD%AF%E4%BB%B6/</link><pubDate>Sun, 19 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/%E6%B8%85%E7%90%86c%E7%9B%98%E7%94%A8%E8%BD%AF%E4%BB%B6/</guid><description>&lt;p&gt;逮到一个很好用的C盘清理软件&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://privazer.com/zc/download.php&lt;/code&gt;&lt;/p&gt;</description></item><item><title>专为阿尔卡娜写的一篇博客</title><link>https://blog.september.win/p/dear-arcana/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/dear-arcana/</guid><description>



 



&lt;link rel="stylesheet" href="https://blog.september.win/spine/spine-player.css"&gt;
&lt;script src="https://blog.september.win/spine/spine-player.js"&gt;&lt;/script&gt;

&lt;div class="spine-container" style="width: 100%; display: flex; justify-content: center; margin: 2rem 0;"&gt;
 &lt;div id="spine-player-c583_00" style="width: 100%; max-width: 600px; height: 600px;"&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
document.addEventListener("DOMContentLoaded", function() {
 if (typeof spine === 'undefined') {
 console.error("Spine 引擎加载失败！");
 return;
 }
 
 var defaultAnim = "idle";
 var clickAnim = "action";
 
 
 var voicesStr = "\/audio\/arcana_voice_1.mp3, \/audio\/arcana_voice_2.mp3, \/audio\/arcana_voice_3.mp3";
 var voiceArray = voicesStr ? voicesStr.split(',').map(function(s) { return s.trim(); }).filter(function(s) { return s !== ""; }) : [];
 
 var currentAudio = null;

 new spine.SpinePlayer("spine-player-c583_00", {
 skelUrl: "/spine/c583/c583_00.skel",
 atlasUrl: "/spine/c583/c583_00.atlas",
 animation: defaultAnim,
 premultipliedAlpha: true,
 backgroundColor: "#00000000", 
 alpha: true,
 showControls: false,
 success: function(player) {
 
 if (clickAnim || voiceArray.length &gt; 0) {
 var canvas = document.getElementById("spine-player-c583_00").getElementsByTagName("canvas")[0];
 if (canvas) {
 canvas.style.cursor = "pointer"; 
 
 canvas.addEventListener("click", function() {
 
 if (voiceArray.length &gt; 0) {
 
 if (currentAudio) {
 currentAudio.pause();
 currentAudio.currentTime = 0;
 }
 
 var randomIndex = Math.floor(Math.random() * voiceArray.length);
 
 currentAudio = new Audio(voiceArray[randomIndex]);
 currentAudio.play();
 }

 
 if (clickAnim) {
 player.animationState.setAnimation(0, clickAnim, false);
 player.animationState.addAnimation(0, defaultAnim, true, 0);
 }
 });
 }
 }
 }
 });
});
&lt;/script&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;那无所畏惧，仿佛要将我整个吃掉的眼神。&lt;/div&gt;
 &lt;div class="chat-narration"&gt;即便如此，仍让人想守护的女孩。&lt;/div&gt;
 &lt;div class="chat-narration"&gt;时而撒娇，时而主动进攻的存在。&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="前言"&gt;前言
&lt;/h2&gt;&lt;p&gt;&lt;img alt="百分百进度" class="gallery-image" data-flex-basis="231px" data-flex-grow="96" height="1077" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/33_%E9%98%BF%E5%B0%94%E5%8D%A1%E5%A8%9C%E4%B8%8E%E7%88%B1%E5%9B%A0%E6%B4%BB%E5%8A%A8%E5%9B%BE.png" srcset="https://blog.september.win/p/dear-arcana/images/33_%E9%98%BF%E5%B0%94%E5%8D%A1%E5%A8%9C%E4%B8%8E%E7%88%B1%E5%9B%A0%E6%B4%BB%E5%8A%A8%E5%9B%BE_hu_83ed735339ef7486.png 800w, https://blog.september.win/p/dear-arcana/images/33_%E9%98%BF%E5%B0%94%E5%8D%A1%E5%A8%9C%E4%B8%8E%E7%88%B1%E5%9B%A0%E6%B4%BB%E5%8A%A8%E5%9B%BE.png 1041w" width="1041"&gt;&lt;/p&gt;
&lt;p&gt;在前前后后花费了近十个小时的时间，终于在更新前四个小时玩完了妮姬的这次活动。&lt;/p&gt;
&lt;p&gt;先评价一下本次活动吧，可以说是顶中顶，不亚于阿尔卡娜第一次活动带给我的惊喜，上一次阿尔卡娜的初登场活动承接了2.5周年失败的剧情，给玩家发了一波小甜饼，狠狠地挽救了一波妮姬的活动剧情的质量。而这一次又延续了上一个活动（E.H.的背景故事）的优质剧情，同时也承担了缺失的情人节活动的重任，着实令人惊喜。&lt;/p&gt;
&lt;p&gt;值得一提的是当初的提前解包泄露中出现了这样一张图片&lt;/p&gt;
&lt;p&gt;&lt;img alt="神秘蓝发婴儿" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/24_%E6%8A%B1%E7%9D%80%E5%A9%B4%E5%84%BF%E5%BE%AE%E7%AC%91.png" srcset="https://blog.september.win/p/dear-arcana/images/24_%E6%8A%B1%E7%9D%80%E5%A9%B4%E5%84%BF%E5%BE%AE%E7%AC%91_hu_37169b10dbfb93bd.png 800w, https://blog.september.win/p/dear-arcana/images/24_%E6%8A%B1%E7%9D%80%E5%A9%B4%E5%84%BF%E5%BE%AE%E7%AC%91_hu_e10b2c5dbcbad7ad.png 1600w, https://blog.september.win/p/dear-arcana/images/24_%E6%8A%B1%E7%9D%80%E5%A9%B4%E5%84%BF%E5%BE%AE%E7%AC%91.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;p&gt;一度被人猜测是否是第二位拥有指挥官子嗣的妮姬，以至于&lt;del&gt;某位红发女保安&lt;/del&gt;拉毗的本就脆弱的女主地位被动摇，不过显然这是官方的恶趣味，那个蓝发小孩只是路边的一个小孩。&lt;/p&gt;
&lt;h2 id="阿尔卡娜个人简介"&gt;阿尔卡娜个人简介
&lt;/h2&gt;&lt;p&gt;OK先来介绍一下这位蓝毛吧，她隶属于“极乐净土”企业，所在部队为“热销如潮”。表面上，阿尔卡娜的职责是管理方舟图书馆，实际负责管理禁书库部分机密信息。由于工作的问题，阿尔卡娜会定期清除一些记忆。&lt;/p&gt;
&lt;p&gt;作为副业，阿尔卡娜经营着一家小型塔罗牌占卜店。性格外向开朗，社交能力极强。她喜欢用一些跳脱的塔罗牌解读来捉弄人（尤其喜欢捉弄指挥官），但令人意外的是，她的实际占卜结果往往具有惊人的准确率，这点在这次的剧情中也有所体现。&lt;/p&gt;
&lt;p&gt;虽然在剧情的“强度”达到了前所未有的高度&lt;del&gt;足以比肩另一位蓝毛三号位充能辅助妮姬&lt;/del&gt;，但是她的实际强度却十分甚至九分高，其名为命运伴侣的异格在火系霰弹队中扮演了一块重要的拼图。&lt;/p&gt;
&lt;h2 id="部分台词欣赏"&gt;部分台词欣赏
&lt;/h2&gt;&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;差点忘了……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;学长怎么可以忘记！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不然您以为我是谁？？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;女朋友啊。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……啊？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;一击击沉阿尔卡娜后，我重新看起资料。&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;这样的女孩逗逗也不错&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;您是不是想说，「阿尔卡娜在那青春的中心每天都只顾着玩」，或者「说是这样说，其实你根本不喜欢待在教室里吧」！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;阿尔卡娜在那青春的中心每天都只顾着玩。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;啊啊啊啊！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;我轻轻松松地将冲过来的阿尔卡娜封印在怀里。&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;整个前哨基地谁人不识君&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-narration"&gt;阿尔卡娜抬起头来。她露出灿烂的笑容，托着下巴看我。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;是不是有人在觊觎学长？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;艾米：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;艾米：&lt;/b&gt;……对，而且还不少。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;你，你怎么知道……？&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;随时随地发糖&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;怎么了？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;你看起来很开心。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;当然开心。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;因为是跟喜欢的人一起做喜欢的事。&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;小吃醋也很可爱&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;我倒是很难想象你生气的样子。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我也是会生气的好吗？嗯……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;要是学长在我面前跟别的女生……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;跟别的女生……这样那样的话！我当然会生气啊！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……光想象就真的让我好火大喔！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不过，您要做也不是不行。前提是不要被我发现。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;被我抓到，你们两个就死定了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;如果对方是更凶的女生怎么办？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;你又不太会打架。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;你好漂亮。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……那个只是我随口说说而已。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不准笑！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;现在装哭又是什么啦？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……真是的。走了啦。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;唉，果然喜欢更多的那一方就是比较吃亏呢。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;被牵着走也只能认了～&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;明明就在乱翻牌子嘛&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……就这样？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不不不。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;总之先随手丢出来了，接下来就要看牌面硬凑出一套说法。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;来，您试试看。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;到这一步又换我来了？？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;嘿嘿，因为我现在也没什么头绪。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;这……&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;在女仆人数超过二位数和不知道多少次金币之战后&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;学长喜欢女仆也算是公开的秘密了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不对，是比较喜欢兔女郎吗？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……外面到底都在传什么谣言？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;正所谓无风不起浪，&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;好好反省一下您平时的行为吧。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不过，我两种都可以穿给您看就是了。&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;紧紧地抓住&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;锵～&lt;/div&gt;
 &lt;/div&gt; 
 &lt;div class="chat-narration"&gt;……她把只剩下「学长」两个字的便利贴拿给我看。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;这样就好了吧？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……啊啊！我清单里唯一剩下的就是学长耶！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;要是不小心弄丢就糟了，所以一定要牢牢抓住～&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;阿尔卡娜用力地和我十指交扣。&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;绚烂的烟火&lt;/b&gt;&lt;/div&gt; 
 &lt;div class="chat-narration"&gt;嘴唇分开后，阿尔卡娜钻进了我的怀里。我抱紧阿尔卡娜，抬头望着烟火。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我……从来没想过这辈子能看到这样的景象。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;真的真的……好开心。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;嗯，我也是。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……嘿嘿。&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;众目睽睽的告白&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;有话想对学长说！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;爱因：&lt;/b&gt;喔？什么啊～公开告白？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;是的！我觉得现在不说就来不及了！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;那我说了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……学长～！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;总是让我能够依靠、&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;总是把我放在心上、&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;还有总是爱着我的学长～&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;……阿尔卡娜称呼我「学长」，这平常是我们之间默认的情景演出。但是，现在……&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……这样的学长。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;让我所做的一切变得有意义。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;为我们顶着性命去战斗，&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;以及……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;把我世界的一半找回来的学长……！&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我真的真的……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……真的真的很喜欢您！！！&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;太受欢迎的男友&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;打扮华丽的女子：&lt;/b&gt;我想让这位哥哥给我买单。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;什么？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;什么？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;打扮华丽的女子：&lt;/b&gt;不是可以自己选吗？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;是……是没错……&lt;/div&gt; 
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;我和阿尔卡娜交换了眼神。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……学长。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;是。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我们明天不要开摊了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……什么？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;好。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;真乖～&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;太受欢迎的男友的女友的觉悟&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;唉……学长有什么好道歉的。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;交了一个太受欢迎的男朋友，本来就要有心理准备。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……不过这两天确实有点奇怪。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;简直像整人节目……&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;兔女郎装是惊喜&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……对。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;这几天一直有其他女生靠近学长身边，让我有点在意……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;所以想说要给您这、这种惊喜，&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;让您不会产生别的心思……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;阿尔卡娜拿起兔女郎装。&lt;/div&gt;
 &lt;div class="chat-narration"&gt;……虽然那的确是衣服，但尺寸小得有点夸张。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;是一时冲动买的，所以尺寸……太小……&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;我们结婚吧&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;你很漂亮。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;再来、再来。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;非常适合你。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;嘿嘿。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;再来、再来、再来。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;我们结婚吧。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;好。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;新娘阿尔卡娜，愿与学长结为伴侣。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;无论顺境逆境，都将永远爱您、尊重您。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;对您忠诚，尽到妻子应尽的责任。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;与您共组幸福的家庭。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……这样就回到平常的心情了吧？&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;呃，嗯。&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;反正老师已经完全被我迷住了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;呃，嗯。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;阿尔卡娜侧过身，靠在我身上。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……要小心别被发现呢。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;还是……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;阿尔卡娜在我耳边小声说道。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;要不要，故意让其他人发现？&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;日常工作&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;老师，啊～&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;躺在我腿上的阿尔卡娜，剥了橘子喂我吃。&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;还剩很多事情吗？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;今天会议把大部分的事情都定下来了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;不过最后决定的要决定好，该整理的也要整理好。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;也还要获得批准。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;啊啊，所以才说我帮不上忙喔？&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;在别的学校度过庆典中&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;那我是不是看起来像在Cosplay？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;阿尔卡娜摆了个奇怪的姿势。&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;其实我早就毕业很久了，根本不是学生。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;然后老师就是那个让女朋友穿制服Cosplay的坏男友。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我其实没有很喜欢，但穿起来又好像有点漂亮。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;然后看到男友很开心，自己也有点高兴。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;可是为了自尊心，又不能太高兴，是有点别扭的那种女友。&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;《坏结局》&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不要啦～就是老师啦～&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;妮姬跟指挥官的话，反而不能这样一起……吗……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;陪我啦……抱我～&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;想去女仆咖啡厅&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我超想去女仆咖啡厅的。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;是吗？&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;嗯嗯。其实本来没什么兴趣。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;不过知道老师喜欢女仆之后就稍微查了一下。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;感觉还挺有趣的，衣服也很可爱。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;呃，嗯……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;要我对老师「柔软滑顺，咪」吗？&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;div class="chat-box"&gt;
 &lt;div class="chat-narration"&gt;&lt;b&gt;今后也请多关照&lt;/b&gt;&lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我们回到指挥官和妮姬的身份之后，也要继续谈恋爱。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;因为我觉得这样太可惜了。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;我有很多原本想做的事情、未来想做的事情。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;原本想跟您一起加入摄影社。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;那之后我们就一起去参加摄影同好会。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;原本想每天帮您准备便当。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;那以后您午餐就一定只能吃阿尔卡娜牌便当。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……阿尔卡娜。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;嗯。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row right"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;我：&lt;/b&gt;今后也请多关照。&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="chat-row left"&gt;
 &lt;div class="chat-bubble"&gt;&lt;b&gt;阿尔卡娜：&lt;/b&gt;……嗯，我也喜欢您。&lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="部分游戏内cg欣赏"&gt;部分游戏内cg欣赏
&lt;/h2&gt;&lt;p&gt;&lt;img alt="看起来睡得很香" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/05_%E5%A4%95%E9%98%B3%E7%AA%97%E8%BE%B9%E8%AF%BB%E4%B9%A6%E5%AE%B3%E7%BE%9E.png" srcset="https://blog.september.win/p/dear-arcana/images/05_%E5%A4%95%E9%98%B3%E7%AA%97%E8%BE%B9%E8%AF%BB%E4%B9%A6%E5%AE%B3%E7%BE%9E_hu_17bfbdbed5c3b7fa.png 800w, https://blog.september.win/p/dear-arcana/images/05_%E5%A4%95%E9%98%B3%E7%AA%97%E8%BE%B9%E8%AF%BB%E4%B9%A6%E5%AE%B3%E7%BE%9E_hu_2abe63445c17d273.png 1600w, https://blog.september.win/p/dear-arcana/images/05_%E5%A4%95%E9%98%B3%E7%AA%97%E8%BE%B9%E8%AF%BB%E4%B9%A6%E5%AE%B3%E7%BE%9E.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="樱花下落的速度是…" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/01_%E6%A8%B1%E8%8A%B1%E9%95%BF%E6%A4%85%E5%AF%B9%E8%A7%86.png" srcset="https://blog.september.win/p/dear-arcana/images/01_%E6%A8%B1%E8%8A%B1%E9%95%BF%E6%A4%85%E5%AF%B9%E8%A7%86_hu_b35512a106009cd3.png 800w, https://blog.september.win/p/dear-arcana/images/01_%E6%A8%B1%E8%8A%B1%E9%95%BF%E6%A4%85%E5%AF%B9%E8%A7%86_hu_e5ef6a38a792f346.png 1600w, https://blog.september.win/p/dear-arcana/images/01_%E6%A8%B1%E8%8A%B1%E9%95%BF%E6%A4%85%E5%AF%B9%E8%A7%86.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="早上好" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/08_%E7%99%BD%E8%A1%AC%E8%A1%AB%E5%BA%8A%E4%B8%8A%E4%BE%A7%E8%BA%BA%E8%84%B8%E7%BA%A2.png" srcset="https://blog.september.win/p/dear-arcana/images/08_%E7%99%BD%E8%A1%AC%E8%A1%AB%E5%BA%8A%E4%B8%8A%E4%BE%A7%E8%BA%BA%E8%84%B8%E7%BA%A2_hu_95c4d7eb1784e30d.png 800w, https://blog.september.win/p/dear-arcana/images/08_%E7%99%BD%E8%A1%AC%E8%A1%AB%E5%BA%8A%E4%B8%8A%E4%BE%A7%E8%BA%BA%E8%84%B8%E7%BA%A2_hu_f4a38dcd6c0608df.png 1600w, https://blog.september.win/p/dear-arcana/images/08_%E7%99%BD%E8%A1%AC%E8%A1%AB%E5%BA%8A%E4%B8%8A%E4%BE%A7%E8%BA%BA%E8%84%B8%E7%BA%A2.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="嘻嘻" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/09_%E6%95%99%E5%AE%A4%E8%AF%BE%E6%A1%8C%E5%9D%90%E5%A7%BF%E5%BE%AE%E7%AC%91.png" srcset="https://blog.september.win/p/dear-arcana/images/09_%E6%95%99%E5%AE%A4%E8%AF%BE%E6%A1%8C%E5%9D%90%E5%A7%BF%E5%BE%AE%E7%AC%91_hu_f935f4682a8c99eb.png 800w, https://blog.september.win/p/dear-arcana/images/09_%E6%95%99%E5%AE%A4%E8%AF%BE%E6%A1%8C%E5%9D%90%E5%A7%BF%E5%BE%AE%E7%AC%91_hu_adbee9c21d3fb493.png 1600w, https://blog.september.win/p/dear-arcana/images/09_%E6%95%99%E5%AE%A4%E8%AF%BE%E6%A1%8C%E5%9D%90%E5%A7%BF%E5%BE%AE%E7%AC%91.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="老师,还要更进一步吗?" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/11_%E5%BA%8A%E4%B8%8A%E4%BB%B0%E8%BA%BA%E5%88%B6%E6%9C%8D%E5%AE%B3%E7%BE%9E.png" srcset="https://blog.september.win/p/dear-arcana/images/11_%E5%BA%8A%E4%B8%8A%E4%BB%B0%E8%BA%BA%E5%88%B6%E6%9C%8D%E5%AE%B3%E7%BE%9E_hu_3e43454aaf19419.png 800w, https://blog.september.win/p/dear-arcana/images/11_%E5%BA%8A%E4%B8%8A%E4%BB%B0%E8%BA%BA%E5%88%B6%E6%9C%8D%E5%AE%B3%E7%BE%9E_hu_bba47016b6ad8740.png 1600w, https://blog.september.win/p/dear-arcana/images/11_%E5%BA%8A%E4%B8%8A%E4%BB%B0%E8%BA%BA%E5%88%B6%E6%9C%8D%E5%AE%B3%E7%BE%9E.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="老师辛苦了" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/12_%E5%BA%8A%E8%BE%B9%E4%BF%AF%E8%A7%86%E8%84%B8%E7%BA%A2%E5%BE%AE%E7%AC%91.png" srcset="https://blog.september.win/p/dear-arcana/images/12_%E5%BA%8A%E8%BE%B9%E4%BF%AF%E8%A7%86%E8%84%B8%E7%BA%A2%E5%BE%AE%E7%AC%91_hu_5acc9e93e7c45709.png 800w, https://blog.september.win/p/dear-arcana/images/12_%E5%BA%8A%E8%BE%B9%E4%BF%AF%E8%A7%86%E8%84%B8%E7%BA%A2%E5%BE%AE%E7%AC%91_hu_e336e336921a6f0b.png 1600w, https://blog.september.win/p/dear-arcana/images/12_%E5%BA%8A%E8%BE%B9%E4%BF%AF%E8%A7%86%E8%84%B8%E7%BA%A2%E5%BE%AE%E7%AC%91.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="这也许是唯一能留在记忆里的方式" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/13_%E7%BA%AA%E5%BF%B5%E7%9B%B8%E5%86%8C%E4%B8%8E%E7%85%A7%E7%89%87.png" srcset="https://blog.september.win/p/dear-arcana/images/13_%E7%BA%AA%E5%BF%B5%E7%9B%B8%E5%86%8C%E4%B8%8E%E7%85%A7%E7%89%87_hu_40150713462eaf48.png 800w, https://blog.september.win/p/dear-arcana/images/13_%E7%BA%AA%E5%BF%B5%E7%9B%B8%E5%86%8C%E4%B8%8E%E7%85%A7%E7%89%87_hu_766e02530e811ffe.png 1600w, https://blog.september.win/p/dear-arcana/images/13_%E7%BA%AA%E5%BF%B5%E7%9B%B8%E5%86%8C%E4%B8%8E%E7%85%A7%E7%89%87.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="艾米的抓拍是好还是坏呢?" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/14_%E6%89%8B%E6%9C%BA%E7%9B%B8%E5%86%8C%E9%87%8C%E7%9A%84%E5%85%AC%E4%B8%BB%E6%8A%B1.png" srcset="https://blog.september.win/p/dear-arcana/images/14_%E6%89%8B%E6%9C%BA%E7%9B%B8%E5%86%8C%E9%87%8C%E7%9A%84%E5%85%AC%E4%B8%BB%E6%8A%B1_hu_197f4034a894b665.png 800w, https://blog.september.win/p/dear-arcana/images/14_%E6%89%8B%E6%9C%BA%E7%9B%B8%E5%86%8C%E9%87%8C%E7%9A%84%E5%85%AC%E4%B8%BB%E6%8A%B1_hu_87cd2f40626c0112.png 1600w, https://blog.september.win/p/dear-arcana/images/14_%E6%89%8B%E6%9C%BA%E7%9B%B8%E5%86%8C%E9%87%8C%E7%9A%84%E5%85%AC%E4%B8%BB%E6%8A%B1.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="唉,果然喜欢更多的那一方就是比较吃亏呢" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/15_%E5%A4%9C%E6%99%9A%E7%A7%8B%E5%8D%83%E5%BE%AE%E7%AC%91.png" srcset="https://blog.september.win/p/dear-arcana/images/15_%E5%A4%9C%E6%99%9A%E7%A7%8B%E5%8D%83%E5%BE%AE%E7%AC%91_hu_7d0dcb31a97b3863.png 800w, https://blog.september.win/p/dear-arcana/images/15_%E5%A4%9C%E6%99%9A%E7%A7%8B%E5%8D%83%E5%BE%AE%E7%AC%91_hu_6b2aed3fb8fc4ff1.png 1600w, https://blog.september.win/p/dear-arcana/images/15_%E5%A4%9C%E6%99%9A%E7%A7%8B%E5%8D%83%E5%BE%AE%E7%AC%91.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="我们结婚吧" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/18_%E6%96%B0%E5%A8%98%E6%8D%A7%E8%8A%B1%E5%BE%AE%E7%AC%91.png" srcset="https://blog.september.win/p/dear-arcana/images/18_%E6%96%B0%E5%A8%98%E6%8D%A7%E8%8A%B1%E5%BE%AE%E7%AC%91_hu_9f6712d2fdf246c6.png 800w, https://blog.september.win/p/dear-arcana/images/18_%E6%96%B0%E5%A8%98%E6%8D%A7%E8%8A%B1%E5%BE%AE%E7%AC%91_hu_7dee916d2953340b.png 1600w, https://blog.september.win/p/dear-arcana/images/18_%E6%96%B0%E5%A8%98%E6%8D%A7%E8%8A%B1%E5%BE%AE%E7%AC%91.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="走了啦" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/20_%E5%A4%9C%E8%B7%AF%E5%9B%9E%E5%A4%B4%E5%BE%AE%E7%AC%91.png" srcset="https://blog.september.win/p/dear-arcana/images/20_%E5%A4%9C%E8%B7%AF%E5%9B%9E%E5%A4%B4%E5%BE%AE%E7%AC%91_hu_f2f22345ccd9e35c.png 800w, https://blog.september.win/p/dear-arcana/images/20_%E5%A4%9C%E8%B7%AF%E5%9B%9E%E5%A4%B4%E5%BE%AE%E7%AC%91_hu_6458bcac879c4342.png 1600w, https://blog.september.win/p/dear-arcana/images/20_%E5%A4%9C%E8%B7%AF%E5%9B%9E%E5%A4%B4%E5%BE%AE%E7%AC%91.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="交了一个太受欢迎的男朋友,本来就要有心理准备" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/19_%E5%90%83%E9%86%8B%E6%97%81%E8%A7%82%E5%A4%9A%E4%BA%BA%E5%90%88%E5%BD%B1.png" srcset="https://blog.september.win/p/dear-arcana/images/19_%E5%90%83%E9%86%8B%E6%97%81%E8%A7%82%E5%A4%9A%E4%BA%BA%E5%90%88%E5%BD%B1_hu_f4c4b3c895745c8c.png 800w, https://blog.september.win/p/dear-arcana/images/19_%E5%90%83%E9%86%8B%E6%97%81%E8%A7%82%E5%A4%9A%E4%BA%BA%E5%90%88%E5%BD%B1_hu_b4cded7b52b18659.png 1600w, https://blog.september.win/p/dear-arcana/images/19_%E5%90%83%E9%86%8B%E6%97%81%E8%A7%82%E5%A4%9A%E4%BA%BA%E5%90%88%E5%BD%B1.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="是烟花秀欸" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/22_%E7%83%9F%E8%8A%B1%E4%B8%8B%E6%A1%A5%E4%B8%8A%E7%AB%99%E7%AB%8B.png" srcset="https://blog.september.win/p/dear-arcana/images/22_%E7%83%9F%E8%8A%B1%E4%B8%8B%E6%A1%A5%E4%B8%8A%E7%AB%99%E7%AB%8B_hu_5aa9c4d06dadda2b.png 800w, https://blog.september.win/p/dear-arcana/images/22_%E7%83%9F%E8%8A%B1%E4%B8%8B%E6%A1%A5%E4%B8%8A%E7%AB%99%E7%AB%8B_hu_74ef3801cee007aa.png 1600w, https://blog.september.win/p/dear-arcana/images/22_%E7%83%9F%E8%8A%B1%E4%B8%8B%E6%A1%A5%E4%B8%8A%E7%AB%99%E7%AB%8B.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="学长喜欢女仆也算是公开的秘密了" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/25_%E5%A5%B3%E4%BB%86%E8%A3%85%E6%AF%94%E5%BF%83.png" srcset="https://blog.september.win/p/dear-arcana/images/25_%E5%A5%B3%E4%BB%86%E8%A3%85%E6%AF%94%E5%BF%83_hu_690370e236eb6705.png 800w, https://blog.september.win/p/dear-arcana/images/25_%E5%A5%B3%E4%BB%86%E8%A3%85%E6%AF%94%E5%BF%83_hu_251ab5c34ae3a6f0.png 1600w, https://blog.september.win/p/dear-arcana/images/25_%E5%A5%B3%E4%BB%86%E8%A3%85%E6%AF%94%E5%BF%83.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="陪我啦……抱我～" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/26_%E9%85%92%E5%90%A7%E6%A1%8C%E8%BE%B9%E8%84%B8%E7%BA%A2%E5%92%AC%E6%89%8B.png" srcset="https://blog.september.win/p/dear-arcana/images/26_%E9%85%92%E5%90%A7%E6%A1%8C%E8%BE%B9%E8%84%B8%E7%BA%A2%E5%92%AC%E6%89%8B_hu_8d4aa1c96ee1d7d2.png 800w, https://blog.september.win/p/dear-arcana/images/26_%E9%85%92%E5%90%A7%E6%A1%8C%E8%BE%B9%E8%84%B8%E7%BA%A2%E5%92%AC%E6%89%8B_hu_381a93e4d4ac1f09.png 1600w, https://blog.september.win/p/dear-arcana/images/26_%E9%85%92%E5%90%A7%E6%A1%8C%E8%BE%B9%E8%84%B8%E7%BA%A2%E5%92%AC%E6%89%8B.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="隐藏结局!" class="gallery-image" data-flex-basis="240px" data-flex-grow="100" height="2048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.september.win/p/dear-arcana/images/27_%E7%BB%BF%E5%8F%91%E7%9C%BC%E9%95%9C%E5%8F%8C%E4%BA%BA%E4%BF%AF%E8%BA%AB.png" srcset="https://blog.september.win/p/dear-arcana/images/27_%E7%BB%BF%E5%8F%91%E7%9C%BC%E9%95%9C%E5%8F%8C%E4%BA%BA%E4%BF%AF%E8%BA%AB_hu_dfb805f03fd5223d.png 800w, https://blog.september.win/p/dear-arcana/images/27_%E7%BB%BF%E5%8F%91%E7%9C%BC%E9%95%9C%E5%8F%8C%E4%BA%BA%E4%BF%AF%E8%BA%AB_hu_a09aee8f6963e7d.png 1600w, https://blog.september.win/p/dear-arcana/images/27_%E7%BB%BF%E5%8F%91%E7%9C%BC%E9%95%9C%E5%8F%8C%E4%BA%BA%E4%BF%AF%E8%BA%AB.png 2048w" width="2048"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="22活动体验"&gt;2×2活动体验
&lt;/h2&gt;&lt;div class="bilibili-wrapper"&gt;
 &lt;iframe src="//player.bilibili.com/player.html?bvid=BV15WAFzmEZt&amp;page=1&amp;high_quality=1&amp;danmaku=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"&gt; &lt;/iframe&gt;
&lt;/div&gt;
&lt;a href="https://www.bilibili.com/video/BV15WAFzmEZt" target="_blank" class="bilibili-interactive-btn"&gt;
 🎮 本视频为互动剧情，点击前往 B 站体验完整分支界面 🚀
&lt;/a&gt;</description></item><item><title>Markdown 基本语法指北</title><link>https://blog.september.win/p/markdown-%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/markdown-%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</guid><description>&lt;p&gt;几乎所有现代的博客平台和静态网站生成器都完美支持 Markdown。它能让我们在纯文本环境下专注于内容创作，而无需被复杂的排版工具打断思路。&lt;/p&gt;
&lt;p&gt;以下是日常写作中最常用的 Markdown 基本语法。&lt;/p&gt;
&lt;h2 id="1-标题-headings"&gt;1. 标题 (Headings)
&lt;/h2&gt;&lt;p&gt;要在文档中创建标题，请在单词或短语前面添加井号 (&lt;code&gt;#&lt;/code&gt;)。&lt;code&gt;#&lt;/code&gt; 的数量代表了标题的级别。为了兼容性，请务必在 &lt;code&gt;#&lt;/code&gt; 和标题文字之间&lt;strong&gt;保留一个空格&lt;/strong&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# 一级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 二级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 三级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;#### 四级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;##### 五级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;###### 六级标题
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="2-段落与换行-paragraphs--line-breaks"&gt;2. 段落与换行 (Paragraphs &amp;amp; Line Breaks)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;段落：&lt;/strong&gt;
创建段落非常简单，只需要使用一或多个空白行将连续的文本分隔开即可。不要用空格（spaces）或制表符（tabs）缩进段落。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;换行：&lt;/strong&gt;
如果你想在段落内强行换行（创建 &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt;），请在这一行的末尾添加&lt;strong&gt;两个或多个空格&lt;/strong&gt;，然后按回车键。&lt;/p&gt;
&lt;h2 id="3-强调语法-emphasis"&gt;3. 强调语法 (Emphasis)
&lt;/h2&gt;&lt;p&gt;通过添加星号或下划线，可以轻松实现加粗和斜体效果。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;加粗&lt;/strong&gt;：在单词或短语的前后各添加两个星号或下划线。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;**加粗文本**&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__加粗文本__&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;斜体&lt;/strong&gt;：在单词或短语的前后各添加一个星号或下划线。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;*斜体文本*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_斜体文本_&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加粗斜体&lt;/strong&gt;：前后各添加三个星号或下划线。
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;***加粗且斜体的文本***&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-引用-blockquotes"&gt;4. 引用 (Blockquotes)
&lt;/h2&gt;&lt;p&gt;要在段落前添加块引用，请在段落的第一行或者每一行前面添加一个 &lt;code&gt;&amp;gt;&lt;/code&gt; 符号。引用不仅支持多段落，还可以嵌套其他 Markdown 元素。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;这是一段引用文本。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;&amp;gt; 这是一个嵌套的引用。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;&amp;gt; &lt;/span&gt;&lt;span class="ge"&gt;&amp;gt; 里面还可以使用 **加粗** 等其他语法。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="5-列表-lists"&gt;5. 列表 (Lists)
&lt;/h2&gt;&lt;p&gt;你可以将项目组织成有序列表或无序列表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;有序列表：&lt;/strong&gt;
在每个列表项前添加数字并紧跟一个英文句点。数字不必按数学顺序排列，但列表应当以数字 1 起始。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 第一项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 第二项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 第三项
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;无序列表：&lt;/strong&gt;
在每个列表项前添加破折号 (&lt;code&gt;-&lt;/code&gt;)、星号 (&lt;code&gt;*&lt;/code&gt;) 或加号 (&lt;code&gt;+&lt;/code&gt;)。建议统一使用 &lt;code&gt;-&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 苹果
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 橘子
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 香蕉
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="6-代码-code"&gt;6. 代码 (Code)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;行内代码：&lt;/strong&gt;
如果要把句子中的某个单词或短语标记为代码，请将其包裹在反引号 (&lt;code&gt; \&lt;/code&gt; `) 中。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;示例：使用 &lt;code&gt;print(&amp;quot;Hello World&amp;quot;)&lt;/code&gt; 来输出文本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;代码块：&lt;/strong&gt;
要创建多行代码块，请将代码包裹在三个反引号 (&lt;code&gt;```&lt;/code&gt;) 中。在第一排的反引号后面加上编程语言的名称，就可以实现代码高亮。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="7-分隔线-horizontal-rules"&gt;7. 分隔线 (Horizontal Rules)
&lt;/h2&gt;&lt;p&gt;要创建一条水平分隔线，请在单独一行上使用三个或多个星号 (&lt;code&gt;***&lt;/code&gt;)、破折号 (&lt;code&gt;---&lt;/code&gt;) 或下划线 (&lt;code&gt;___&lt;/code&gt;)，并且不能包含其他内容。&lt;/p&gt;
&lt;hr&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="8-链接-links"&gt;8. 链接 (Links)
&lt;/h2&gt;&lt;p&gt;链接文本放在中括号内，链接地址放在后面的括号内。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法：&lt;/strong&gt; &lt;code&gt;[超链接显示名](超链接地址 &amp;quot;可选的提示标题&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例：&lt;/strong&gt; 欢迎访问我的 &lt;a class="link" href="https://github.com/September6969/" title="点击访问 GitHub"
 target="_blank" rel="noopener"
 &gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果想直接显示网址并使其可点击，可以用尖括号将网址括起来：&lt;code&gt;&amp;lt;https://example.com&amp;gt;&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;示例：&lt;/strong&gt; &lt;a class="link" href="https://blog.september.win/" target="_blank" rel="noopener"
 &gt;https://blog.september.win/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="9-图片-images"&gt;9. 图片 (Images)
&lt;/h2&gt;&lt;p&gt;插入图片的语法和链接非常相似，只是前面多了一个感叹号 (&lt;code&gt;!&lt;/code&gt;)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法：&lt;/strong&gt; &lt;code&gt;![图片替代文字](图片链接地址 &amp;quot;可选的图片标题&amp;quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;![&lt;span class="nt"&gt;美丽的风景图&lt;/span&gt;](&lt;span class="na"&gt;https://markdown.com.cn/assets/img/philly-magic-garden.9c0b4415.jpg &amp;#34;Magic Gardens&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="美丽的风景图" class="gallery-image" data-flex-basis="320px" data-flex-grow="133" data-title-escaped="Magic Gardens" height="635" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://markdown.com.cn/assets/img/philly-magic-garden.9c0b4415.jpg" srcset="https://blog.september.win/philly-magic-garden.9c0b4415_6843228470022674623_hu_78d82337c1b49d1c.jpg 800w, https://markdown.com.cn/assets/img/philly-magic-garden.9c0b4415.jpg 847w" title="Magic Gardens" width="847"&gt;&lt;/p&gt;
&lt;h2 id="10-转义字符-escaping-characters"&gt;10. 转义字符 (Escaping Characters)
&lt;/h2&gt;&lt;p&gt;如果你需要显示原本用于格式化 Markdown 文档的字符（比如你不希望 &lt;code&gt;#&lt;/code&gt; 变成标题），可以在该字符前面添加反斜杠 (&lt;code&gt;\&lt;/code&gt;) 来转义。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\* 这不是一个无序列表项，而是一个普通的星号。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;掌握了以上基本语法，你就已经具备了使用 Markdown 撰写结构清晰、排版优雅的博客文章的能力。&lt;/p&gt;</description></item><item><title>Markdown 拓展语法指北</title><link>https://blog.september.win/p/markdown-%E6%8B%93%E5%B1%95%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/markdown-%E6%8B%93%E5%B1%95%E8%AF%AD%E6%B3%95%E6%8C%87%E5%8C%97/</guid><description>&lt;p&gt;掌握了基本语法后，Markdown 的扩展语法将为你打开新世界的大门。Markdown 官方标准（Basic Syntax）仅包含基础元素，但在实际应用中，许多解析器（如 GitHub Flavored Markdown, Hugo 等）支持更强大的扩展语法。掌握这些进阶技能，能让你轻松处理表格、代码高亮和任务清单。&lt;/p&gt;
&lt;h2 id="1-表格-tables"&gt;1. 表格 (Tables)
&lt;/h2&gt;&lt;p&gt;要在 Markdown 中创建表格，请使用管道符 &lt;code&gt;|&lt;/code&gt; 分隔各列，并使用三个或多个连字符 &lt;code&gt;---&lt;/code&gt; 创建表头和内容的分隔线。&lt;/p&gt;
&lt;h3 id="对齐方式"&gt;对齐方式
&lt;/h3&gt;&lt;p&gt;通过在分隔线行添加冒号 &lt;code&gt;:&lt;/code&gt;，可以控制列的对齐方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:---&lt;/code&gt;：左对齐（默认）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;---:&lt;/code&gt;：右对齐&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:---:&lt;/code&gt;：居中对齐&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 语法 | 说明 | 示例 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| :--- | :---: | ---: |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 表格 | 居中 | $10 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 扩展 | 左对齐 | $20 |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="2-围栏代码块-fenced-code-blocks"&gt;2. 围栏代码块 (Fenced Code Blocks)
&lt;/h2&gt;&lt;p&gt;扩展语法允许你使用三个反引号（```）或三个波浪号（~~~）来包裹多行代码。最强大的功能是支持&lt;strong&gt;语法高亮&lt;/strong&gt;，只需在开头反引号后指定语言名称（如 python, html, css 等）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;project&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;September&amp;#39;s Blog&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Learning Markdown&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="3-脚注-footnotes"&gt;3. 脚注 (Footnotes)
&lt;/h2&gt;&lt;p&gt;脚注用于对正文中的内容添加补充说明，而不会打断读者的阅读流。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：在词汇后面使用 &lt;code&gt;[^1]&lt;/code&gt;，然后在文档底部定义说明。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例&lt;/strong&gt;：这是一个使用了脚注的句子。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-标题-id-heading-ids"&gt;4. 标题 ID (Heading IDs)
&lt;/h2&gt;&lt;p&gt;部分解析器支持给标题指定唯一的 ID，方便在文章内部进行跳转（锚点链接）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;### 我的目标 {#goals}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="5-定义列表-definition-lists"&gt;5. 定义列表 (Definition Lists)
&lt;/h2&gt;&lt;p&gt;定义列表允许你列出术语及其对应的定义。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第一项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: 这是第一项的定义。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第二项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: 这是第二项的定义。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;: 这是第二项的另一个定义。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="6-删除线-strikethrough"&gt;6. 删除线 (Strikethrough)
&lt;/h2&gt;&lt;p&gt;在文字前后各添加两个波浪号 &lt;code&gt;~~&lt;/code&gt; 来表示已被删除或错误的信息。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;del&gt;这件衣服原价 99 元&lt;/del&gt;，现在只需 19 元。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="7-任务列表-task-lists"&gt;7. 任务列表 (Task Lists)
&lt;/h2&gt;&lt;p&gt;任务列表非常适合管理待办事项或项目进度。使用带有空格或 &lt;code&gt;x&lt;/code&gt; 的中括号 &lt;code&gt;[ ]&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; 完成基础语法学习
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; 掌握扩展语法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; 发布第一篇技术博客
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="8-使用-emoji-表情"&gt;8. 使用 Emoji 表情
&lt;/h2&gt;&lt;p&gt;在 Markdown 中添加表情有两种常见方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;直接从表情库复制并粘贴 Emoji 符号（如 🚀）。&lt;/li&gt;
&lt;li&gt;使用“短代码”（需解析器支持），例如输入 &lt;code&gt;:smile:&lt;/code&gt; 会被渲染成 😄。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="9-自动网址链接-automatic-url-linking"&gt;9. 自动网址链接 (Automatic URL Linking)
&lt;/h2&gt;&lt;p&gt;许多现代解析器会自动将纯文本形式的 URL（如 &lt;code&gt;https://google.com&lt;/code&gt;）直接转换为可点击的超链接，而无需额外添加中括号。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;通过灵活运用这些扩展语法，你的 Markdown 文档将不仅仅是文字，更是一个具备专业排版水准的数字化作品。&lt;/p&gt;
&lt;p&gt;这些扩展语法能显著提升你博客内容的专业度和丰富度。建议在使用前，先确认你所使用的博客主题或编辑器是否已完整开启这些功能支持。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;这是在文档末尾自动生成的补充说明。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>在安卓手机上搭建个人博客的赛博折腾记录</title><link>https://blog.september.win/p/android-hugo-blog-setup/</link><pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.september.win/p/android-hugo-blog-setup/</guid><description>&lt;p&gt;把一台安卓手机变成全天候运行的服务器，这里记录一下整个博客的底层架构、一键启动脚本以及日常编辑的工作流，作为个人记录用 Desuwa。&lt;/p&gt;
&lt;h2 id="1-核心底层架构搭建过程"&gt;1. 核心底层架构（搭建过程）
&lt;/h2&gt;&lt;p&gt;整个站点的运行不需要去购买云服务器，所有的计算和渲染都在手机里完成。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;运行环境&lt;/strong&gt;：安卓端安装 Termux，提供完整的 Linux 终端环境。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心引擎&lt;/strong&gt;：使用 Hugo 生成静态页面，并配置了功能齐全的 Stack 主题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外网穿透&lt;/strong&gt;：通过 Cloudflared 建立加密隧道。把本机的 8080 端口映射到公网域名，同时打通了 SSH 通道。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;云端编辑器&lt;/strong&gt;：在 Termux 内运行 &lt;code&gt;code-server&lt;/code&gt;，提供网页版的 VS Code 界面。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-自动化启动方案"&gt;2. 自动化启动方案
&lt;/h2&gt;&lt;p&gt;手机重启后，手动敲命令拉起服务效率太低。为了实现“一键复活”，配置了结合 &lt;code&gt;tmux&lt;/code&gt; 的自动化脚本。&lt;/p&gt;
&lt;p&gt;手机开机打开 Termux 后，直接执行以下代码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;termux-wake-lock
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sshd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tmux new-session -d -s blog &lt;span class="s2"&gt;&amp;#34;cloudflared tunnel run&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tmux new-window -t blog:1 &lt;span class="s2"&gt;&amp;#34;code-server --auth none --bind-addr 127.0.0.1:8443&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tmux new-window -t blog:2 &lt;span class="s2"&gt;&amp;#34;cd ~/myblog &amp;amp;&amp;amp; hugo server -D -p 8080&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tmux attach -t blog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这段脚本执行了以下操作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;获取唤醒锁，防止安卓杀后台。&lt;/li&gt;
&lt;li&gt;启动 SSH 服务，允许电脑远程接入。&lt;/li&gt;
&lt;li&gt;创建名为 &lt;code&gt;blog&lt;/code&gt; 的虚拟窗口，在后台并行三个任务：内网穿透、VS Code 服务、Hugo 本地实时预览。&lt;/li&gt;
&lt;li&gt;随时可以通过快捷键 &lt;code&gt;Ctrl+B&lt;/code&gt; 配合数字键 &lt;code&gt;0, 1, 2&lt;/code&gt; 切换查看不同服务的实时日志。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-跨端编辑流"&gt;3. 跨端编辑流
&lt;/h2&gt;&lt;p&gt;服务端跑通后，日常编辑不需要在手机屏幕上操作。&lt;/p&gt;
&lt;p&gt;在电脑端打开终端，执行端口转发：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ssh&lt;/span&gt; &lt;span class="n"&gt;-L&lt;/span&gt; &lt;span class="mf"&gt;8443&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;127.0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;8443&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接着，在电脑浏览器里打开 &lt;code&gt;http://localhost:8443/&lt;/code&gt;，即可接入完整的 VS Code 界面。工作流如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;敲击 &lt;code&gt;Ctrl + ~&lt;/code&gt; 呼出终端，使用 &lt;code&gt;hugo new post/文章名.md&lt;/code&gt; 创建新文章。&lt;/li&gt;
&lt;li&gt;直接在网页编辑器里撰写 Markdown 内容。&lt;/li&gt;
&lt;li&gt;按下 &lt;code&gt;Ctrl + S&lt;/code&gt; 保存，Hugo 会在毫秒级完成重新编译。&lt;/li&gt;
&lt;li&gt;刷新博客对应的公网页面，即可看到最新排版效果。&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>