<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>OLX的博客</title><description>OLX</description><link>https://blogs.olxc.art/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>V2.2.2</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年7月5日 08:23:55</lastBuildDate><item><title>测试</title><link>https://blogs.olxc.art/posts/blog/%E6%B5%8B%E8%AF%95/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/%E6%B5%8B%E8%AF%95/</guid><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;测试&lt;/p&gt;</content:encoded></item><item><title>测试2</title><link>https://blogs.olxc.art/posts/blog/cs222/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/cs222/</guid><description>测试</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;测试&lt;/p&gt;</content:encoded></item><item><title>有些人，注定只能做普通朋友，却偷偷改变了你一生</title><link>https://blogs.olxc.art/posts/wechat-night-songs/01-putong-pengyou/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/01-putong-pengyou/</guid><description>很多人听《普通朋友》的时候，听到的不是一段关系的结束，而是一种成年人的克制。明明心里还有位置，嘴上却只能说一句：我们只是普通朋友。</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;有些人，注定只能做普通朋友，却偷偷改变了你一生&lt;a href=&quot;#有些人注定只能做普通朋友却偷偷改变了你一生&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：也许从见你的第一面开始，就注定我们只能是普通朋友 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;白天的他，像一个标准的“e人”。&lt;/p&gt;&lt;p&gt;在人群里永远不冷场，会主动接话，会照顾别人的情绪，会开玩笑，会热情大方，会让所有人觉得他很好相处。&lt;/p&gt;&lt;p&gt;可一到晚上，他就像换了一个人。&lt;/p&gt;&lt;p&gt;白天那个开朗的人消失了，取而代之的，是一个敏感、多疑、容易失眠、容易反复想起旧事的“i人”。&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;/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;/p&gt;&lt;p&gt;没有争吵，没有告别，没有一句正式的结束。&lt;/p&gt;&lt;p&gt;只是那张照片发出去以后，对话框就安静了下来。&lt;/p&gt;&lt;p&gt;安静到后来，他每次点进去，都像在看一座废弃的城市。&lt;/p&gt;&lt;p&gt;作为“i人”的那一面，他很清醒。&lt;/p&gt;&lt;p&gt;他会告诉自己：&lt;/p&gt;&lt;p&gt;算了吧，忘记她吧。&lt;/p&gt;&lt;p&gt;你们只适合做普通朋友。&lt;/p&gt;&lt;p&gt;可作为“e人”的那一面，他又很不甘心。&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;/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;/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;/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;/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;/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;/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;/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;/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;他用“i人”的敏感，把所有细节拆开给我看。&lt;/p&gt;&lt;p&gt;而我用“e人”的方式陪着他，安慰他，开导他，告诉他别想太多。&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;/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;/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;/p&gt;&lt;hr /&gt;&lt;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Cloudflare Workers 部署 Cloudflare‑ImgBed 图床完整教程</title><link>https://blogs.olxc.art/posts/blog/img-bed/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/img-bed/</guid><description>搭建属于自己的图床</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Cloudflare Workers 部署 Cloudflare‑ImgBed 图床完整教程&lt;a href=&quot;#cloudflare-workers-部署-cloudflareimgbed-图床完整教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本文基于&lt;a href=&quot;https://cfbed.sanyue.de/deployment/worker.html&quot; target=&quot;_blank&quot;&gt;官方文档&lt;/a&gt;)，从零教你用 &lt;strong&gt;Cloudflare Workers&lt;/strong&gt; 部署专属图床，全程免费、无服务器、支持自动更新。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h2&gt;一、什么是图床？为什么选 Cloudflare‑ImgBed？&lt;a href=&quot;#一什么是图床为什么选-cloudflareimgbed&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 图床是什么&lt;a href=&quot;#1-图床是什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;图床 = 专门存放图片并生成&lt;strong&gt;可直接访问的 URL&lt;/strong&gt; 的服务，用于博客、公众号、文档、笔记，Markdown 等场景，解决图片统一托管、跨平台复用、链接长期有效问题。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 为什么选本方案&lt;a href=&quot;#2-为什么选本方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;零成本：Cloudflare 免费额度足够个人日常使用&lt;/li&gt;
&lt;li&gt;无服务器：不用买主机、不用配置环境&lt;/li&gt;
&lt;li&gt;全球加速：Cloudflare CDN 全球节点，访问快&lt;/li&gt;
&lt;li&gt;数据可控：自己部署、自己管理，不怕第三方图床跑路&lt;/li&gt;
&lt;li&gt;多存储：支持 R2、Telegram、D1/KV 数据库&lt;/li&gt;
&lt;li&gt;自动部署：GitHub Actions 一键部署 + 自动更新&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. Pages vs Workers（本教程选 Workers）&lt;a href=&quot;#3-pages-vs-workers本教程选-workers&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;可以做ip优选&lt;a href=&quot;#可以做ip优选&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、部署前期准备&lt;a href=&quot;#二部署前期准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;账号准备&lt;/strong&gt;
    - GitHub 账号（用于 Fork 项目、存 Secrets）
    - Cloudflare 账号（免费注册即可）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;必备信息&lt;/strong&gt;（后面会一步步拿）
    - Cloudflare Account ID
    - Cloudflare API Token（权限：编辑 Workers）
    - KV 或 D1 数据库 ID（二选一）
    - 可选：R2 存储桶名、Telegram 机器人信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工具&lt;/strong&gt;
浏览器即可，无需本地环境、无需终端。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、完整部署步骤（按顺序做）&lt;a href=&quot;#三完整部署步骤按顺序做&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;一步：Fork 开源项目&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;打开官方项目：&lt;a href=&quot;https://github.com/MarSeventh/CloudFlare-ImgBed&quot; target=&quot;_blank&quot;&gt;CloudFlare ImgBed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;点右上角 &lt;strong&gt;Fork&lt;/strong&gt; → 选择你的 GitHub 账号 → 等待 Fork 完成。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;第二步：准备 Cloudflare 资源&lt;a href=&quot;#第二步准备-cloudflare-资源&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;2.1 获取 Account ID + API Token&lt;a href=&quot;#21-获取-account-id--api-token&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;登录 Cloudflare Dashboard&lt;/li&gt;
&lt;li&gt;右上角头像 → &lt;strong&gt;我的个人资料&lt;/strong&gt; → &lt;strong&gt;API 令牌&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建令牌&lt;/strong&gt; → 选模板 &lt;strong&gt;编辑 Cloudflare Workers&lt;/strong&gt; → 下一步 → &lt;strong&gt;创建令牌&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;复制并保存生成的 &lt;strong&gt;API Token&lt;/strong&gt;（只出现一次）&lt;/li&gt;
&lt;li&gt;返回 Dashboard 首页，右侧找到并复制 &lt;strong&gt;Account ID&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;2.2 创建数据库（KV 或 D1 二选一）&lt;a href=&quot;#22-创建数据库kv-或-d1-二选一&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;section&gt;&lt;h5&gt;方案 A：KV 数据库（读写更快）&lt;a href=&quot;#方案-akv-数据库读写更快&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;
&lt;li&gt;存储和数据库 → Workers KV → &lt;strong&gt;创建实例&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;名称填 &lt;code&gt;img_url&lt;/code&gt; → 创建&lt;/li&gt;
&lt;li&gt;复制 &lt;strong&gt;命名空间 ID&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h5&gt;方案 B：D1 数据库（免费额度更高）&lt;a href=&quot;#方案-bd1-数据库免费额度更高&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;&lt;ol&gt;
&lt;li&gt;存储和数据库 → D1 SQL 数据库 → &lt;strong&gt;创建数据库&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;名称填 &lt;code&gt;img_d1&lt;/code&gt; → 创建&lt;/li&gt;
&lt;li&gt;复制 &lt;strong&gt;数据库 ID&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;进入「控制台」执行项目提供的 &lt;code&gt;init.sql&lt;/code&gt; 初始化语句&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;2.3（可选）创建 R2 存储桶&lt;a href=&quot;#23可选创建-r2-存储桶&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;存储和数据库 → R2 对象存储 → &lt;strong&gt;创建存储桶&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;自定义名称，复制保存 &lt;strong&gt;存储桶名称&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第三步：配置 GitHub Secrets（关键）&lt;a href=&quot;#第三步配置-github-secrets关键&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;进入你 Fork 的仓库&lt;/li&gt;
&lt;li&gt;Settings → Secrets and variables → Actions → &lt;strong&gt;New repository secret&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;按表添加，&lt;strong&gt;必填项必须填&lt;/strong&gt;，二选一填一个即可&lt;/li&gt;
&lt;/ol&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Secret 名称&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;CLOUDFLARE_API_TOKEN&lt;/td&gt;&lt;td&gt;Cloudflare API 令牌&lt;/td&gt;&lt;td&gt;✅ 必填&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CLOUDFLARE_ACCOUNT_ID&lt;/td&gt;&lt;td&gt;Cloudflare 账户 ID&lt;/td&gt;&lt;td&gt;✅ 必填&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;KV_NAMESPACE_ID&lt;/td&gt;&lt;td&gt;KV 命名空间 ID&lt;/td&gt;&lt;td&gt;KV/D1 二选一&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;D1_DATABASE_ID&lt;/td&gt;&lt;td&gt;D1 数据库 ID&lt;/td&gt;&lt;td&gt;KV/D1 二选一&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;R2_BUCKET_NAME&lt;/td&gt;&lt;td&gt;R2 存储桶名&lt;/td&gt;&lt;td&gt;可选&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WORKER_NAME&lt;/td&gt;&lt;td&gt;Worker 名称（默认 cloudflare-imgbed）&lt;/td&gt;&lt;td&gt;可选&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WORKER_VARS&lt;/td&gt;&lt;td&gt;业务变量（JSON 格式，如 TG 配置）&lt;/td&gt;&lt;td&gt;可选&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;
&lt;li&gt;安全提醒：一律用 &lt;strong&gt;Secrets&lt;/strong&gt;，不要用 Variables（公开可见）。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;第四步：运行部署（手动 / 自动二选一）&lt;a href=&quot;#第四步运行部署手动--自动二选一&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;方式 1：手动触发部署&lt;a href=&quot;#方式-1手动触发部署&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;进入仓库 &lt;strong&gt;Actions&lt;/strong&gt; 页面&lt;/li&gt;
&lt;li&gt;左侧选择 &lt;strong&gt;Deploy to Cloudflare Workers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点 &lt;strong&gt;Run workflow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;分支选 main → 直接 &lt;strong&gt;Run workflow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;等待执行成功（约 1–3 分钟）&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;方式 2：开启自动部署（推荐）&lt;a href=&quot;#方式-2开启自动部署推荐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;Actions 页面找到 &lt;strong&gt;Upstream Sync&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点 &lt;strong&gt;Enable workflow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;以后上游更新 → 自动同步 main → 自动部署，全程不用管&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;四、部署成功 ; 访问使用&lt;a href=&quot;#四部署成功--访问使用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;访问地址：“&lt;/li&gt;
&lt;li&gt;部署后&lt;strong&gt;必须配置存储渠道&lt;/strong&gt;（R2/Telegram 等）才能上传图片，在后台管理面板配置即可。&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;五、后续更新维护&lt;a href=&quot;#五后续更新维护&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 自动更新（推荐）&lt;a href=&quot;#1-自动更新推荐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;保持 Upstream Sync 开启，上游更新自动同步并部署。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 手动更新&lt;a href=&quot;#2-手动更新&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;仓库点 &lt;strong&gt;Sync fork&lt;/strong&gt; 同步上游&lt;/li&gt;
&lt;li&gt;触发自动部署；或手动再跑一次 Deploy workflow。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;六、常见问题&lt;a href=&quot;#六常见问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;部署失败：检查 Secrets 是否填错、权限是否正确&lt;/li&gt;
&lt;li&gt;无法上传：未配置存储渠道，去后台绑定 R2 或 Telegram&lt;/li&gt;
&lt;li&gt;链接打不开：确认 Worker 已启用、名称与子域名拼写正确&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;七、总结&lt;a href=&quot;#七总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用 Cloudflare Workers 部署图床，&lt;strong&gt;全程免费、无服务器、10 分钟搞定&lt;/strong&gt;，适合个人长期稳定使用。按本文步骤：Fork → 拿 Cloudflare 信息 → 配 GitHub Secrets → 一键部署，即可拥有专属高速图床。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>我以为我们有以后，原来只是我一个人在计划</title><link>https://blogs.olxc.art/posts/wechat-night-songs/02-wo-yiwei-women-you-yihou/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/02-wo-yiwei-women-you-yihou/</guid><description>“是不是 一开始就没出现在你的计划里。”有时候，一句歌词最伤人的地方，不是它写得多苦。而是你听着听着，突然就安静了。</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;我以为我们有以后，原来只是我一个人在计划&lt;a href=&quot;#我以为我们有以后原来只是我一个人在计划&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：原来我一直没在你的计划里 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>爱情里最清醒的答案，藏在《达尔文》里</title><link>https://blogs.olxc.art/posts/wechat-night-songs/03-daerwen-aiqing-da-an/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/03-daerwen-aiqing-da-an/</guid><description>进化成更好的人——\\x0d\\x0a爱情从来不是单纯的浪漫和甜言蜜语，而是一场严苛而美丽的自我进化。</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;爱情里最清醒的答案，藏在《达尔文》里&lt;a href=&quot;#爱情里最清醒的答案藏在达尔文里&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：感情中也需要不断进化的两个人 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;时间也会筛选人。&lt;/p&gt;&lt;p&gt;但最后留下来的那个人，一定不是让你退化的人。&lt;/p&gt;&lt;p&gt;而是那个陪你一起，进化成更好的人。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>原来真正的偏爱，是你对别人都很好，却只对我不一样</title><link>https://blogs.olxc.art/posts/wechat-night-songs/04-zhenzheng-de-pianai/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/04-zhenzheng-de-pianai/</guid><description>张芸京的《偏爱》一响起来，最先冲出来的，不是温柔。而是一种很倔的坚定。</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;原来真正的偏爱，是你对别人都很好，却只对我不一样&lt;a href=&quot;#原来真正的偏爱是你对别人都很好却只对我不一样&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：茫茫人海，我只偏爱你一人 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;而是他对所有人都很好。&lt;/p&gt;&lt;p&gt;可唯独对你，格外不同。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Cloudflare IP优选</title><link>https://blogs.olxc.art/posts/blog/ip/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/ip/</guid><description>Cloudflare IP优选</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;一、Cloudflare IP优选&lt;a href=&quot;#一cloudflare-ip优选&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;步骤1：添加路由规则&lt;a href=&quot;#步骤1添加路由规则&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;登录Cloudflare账号，进入你绑定的Astro博客域名控制台（左侧导航栏选择对应域名）。&lt;/li&gt;
&lt;li&gt;找到左侧导航栏的&lt;strong&gt;路由（Rules）&lt;/strong&gt;，点击进入后选择「转换规则」或「路由」（按当前Cloudflare界面显示为准）。&lt;/li&gt;
&lt;li&gt;点击「添加路由」，进入路由配置页面。&lt;/li&gt;
&lt;li&gt;路由地址填写：&lt;code&gt;你的Astro域名/*&lt;/code&gt;（示例：&lt;code&gt;blog.xxx.com/*&lt;/code&gt;），含义是匹配Astro博客的所有页面（包括文章、静态资源），统一走优选节点。&lt;/li&gt;
&lt;li&gt;无需额外添加规则，直接保存并确认路由配置。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤2：配置DNS解析（关键步骤）&lt;a href=&quot;#步骤2配置dns解析关键步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;在Cloudflare域名控制台，找到左侧导航栏的&lt;strong&gt;DNS → 记录&lt;/strong&gt;，点击进入。&lt;/li&gt;
&lt;li&gt;点击「添加记录」，开始配置优选解析。&lt;/li&gt;
&lt;li&gt;记录类型：选择「A记录」或「CNAME」均可。&lt;/li&gt;
&lt;li&gt;名称：可自定义前缀（如cdn、speed、ip），用于标识优选节点（示例：&lt;code&gt;speed.xxx.com&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;目标：填写UP主提供的Cloudflare优选节点/地址（格式：任意文字或字母.cf.090227.xyz，直接复制粘贴，确保地址正确）。&lt;/li&gt;
&lt;li&gt;代理状态：&lt;strong&gt;必须关闭云朵图标（即关闭Cloudflare代理）&lt;/strong&gt;，否则优选无效。&lt;/li&gt;
&lt;li&gt;点击「保存」，完成优选解析记录添加。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤3：绑定Astro主域名到优选节点&lt;a href=&quot;#步骤3绑定astro主域名到优选节点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;再次点击「添加记录」，配置Astro主域名的解析。&lt;/li&gt;
&lt;li&gt;记录类型：与上一步一致（A记录/CNAME）。&lt;/li&gt;
&lt;li&gt;名称：填写Astro主域名前缀（如blog，即&lt;code&gt;blog.xxx.com&lt;/code&gt;，若为根域名则填写&lt;code&gt;@&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;目标：填写上一步创建的优选记录名称（示例：&lt;code&gt;speed.xxx.com&lt;/code&gt;），将主域名指向优选节点。&lt;/li&gt;
&lt;li&gt;代理状态：保持关闭（与上一步一致）。&lt;/li&gt;
&lt;li&gt;点击「保存」，等待1-3分钟解析生效，刷新Astro博客即可感受到访问速度提升。&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;原理：Astro博客主域名 → Cloudflare优选地址 → Cloudflare最优节点，自动选择国内延迟最低的IP，减少静态资源（Astro生成的HTML、CSS、图片）加载耗时。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;二、Astro博客Markdown文章编写与发布&lt;a href=&quot;#二astro博客markdown文章编写与发布&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Astro博客的文章均以Markdown格式编写，核心需遵循Astro的Frontmatter元数据规范，以下步骤完全适配Astro框架，新手可直接复刻。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1. 文章存放位置（Astro固定路径）&lt;a href=&quot;#1-文章存放位置astro固定路径&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;所有Markdown文章，需放在Astro项目源码的 &lt;code&gt;src/content/posts/&lt;/code&gt; 文件夹下（若没有posts文件夹，可手动创建，Astro默认读取该路径下的文章）。&lt;/li&gt;
&lt;li&gt;文章格式：必须是&lt;strong&gt;纯Markdown文件（后缀为.md）&lt;/strong&gt;，文件名建议用英文/拼音（如&lt;code&gt;astro-blog-guide.md&lt;/code&gt;），避免中文乱码。&lt;/li&gt;
&lt;li&gt;图片、附件等资源：统一放在 &lt;code&gt;src/content/posts/images/&lt;/code&gt; 或 &lt;code&gt;src/assets/&lt;/code&gt; 文件夹下（推荐前者，方便管理），引用时使用相对路径。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 文章必备元数据（Astro Frontmatter规范）&lt;a href=&quot;#2-文章必备元数据astro-frontmatter规范&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;每篇Markdown文章顶部，必须编写固定格式的Frontmatter元数据（用---包裹），适配Astro的文章渲染逻辑，示例如下（可直接复制修改）：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;文章标题（如：Astro博客部署全流程指南）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;date&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2026-05-03 19:00:00&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;文章简短描述（100字内，用于SEO和文章列表展示）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cover&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;/src/content/posts/images/cover.jpg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;Astro&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;静态博客&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;部署&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;categories&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;技术教程&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;draft&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;author&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;作者名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pubDate&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2026-05-03 19:00:00&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;元数据字段说明&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;title：文章标题，必填，将作为博客文章的标题展示。&lt;/li&gt;
&lt;li&gt;date：文章发布时间，格式为YYYY-MM-DD HH:MM，适配Astro时间渲染。&lt;/li&gt;
&lt;li&gt;description：文章简短描述，控制在100字内，用于SEO优化和博客文章列表展示。&lt;/li&gt;
&lt;li&gt;cover：文章封面图路径，可填写本地相对路径（需对应资源存放位置）或网络图片链接。&lt;/li&gt;
&lt;li&gt;tags：文章标签，用英文逗号分隔并包裹在中括号内，适配Astro标签功能，方便分类检索。&lt;/li&gt;
&lt;li&gt;categories：文章分类，可自定义，用于博客文章分类展示。&lt;/li&gt;
&lt;li&gt;draft：草稿状态，true为草稿（不显示在博客），false为正式发布（必填）。&lt;/li&gt;
&lt;li&gt;author：作者名，可选，适配Astro作者展示功能。&lt;/li&gt;
&lt;li&gt;pubDate：可选，与date一致即可，部分Astro主题需配置以正常显示发布时间。&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;Astro支持的Markdown功能（适配文章编写）
Astro完全支持标准Markdown语法，可正常使用标题（# ~ ######）、段落、列表（有序/无序）、代码块（```包裹）、链接、图片、引用（&amp;gt;）等功能，同时支持GFM扩展语法（如表格、任务列表），可满足日常文章编写需求，无需额外配置。&lt;/li&gt;
&lt;li&gt;推荐编辑器（适配Astro，二选一）&lt;/li&gt;
&lt;li&gt;VS Code（推荐，适配Astro开发）：原生支持Astro项目结构，可安装Markdown预览插件，实现语法高亮、实时预览，同时可编辑Astro项目代码，适合兼顾开发与写作的用户。&lt;/li&gt;
&lt;li&gt;Obsidian（OC，适合纯写作）：可视化编辑，实时预览Markdown效果，无需记忆语法，适合不想接触代码的新手；可将Obsidian的文章文件夹，与Astro项目的src/content/posts/文件夹关联，编写完成后直接同步，无需手动复制。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>真正有吸引力的必杀技，都赢在这两个字</title><link>https://blogs.olxc.art/posts/wechat-night-songs/05-xiyinli-bishaji/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/05-xiyinli-bishaji/</guid><description>耳机里响起《必杀技》的时候，我突然想到一个问题：在感情里，男生吸引一个女生，到底什么才算真正的“必杀技”？</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;真正有吸引力的必杀技，都赢在这两个字&lt;a href=&quot;#真正有吸引力的必杀技都赢在这两个字&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：真诚其实是最简单最动人的必杀技 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Firefly 博客搭建教程</title><link>https://blogs.olxc.art/posts/firefly-set/windows-firefly/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/firefly-set/windows-firefly/</guid><description>前置准备｜Windows 搭建 Firefly 必备环境全套安装</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Firefly 博客部署教程&lt;a href=&quot;#firefly-博客部署教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt; &lt;ul&gt;
&lt;li&gt;根据Firefly 官方文档，涵盖全流程操作，代码可直接复制，小白可按步完成，附关键避坑提示。
&lt;strong&gt;说明&lt;/strong&gt;：基于 Windows 系统；命令可直接执行。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第一篇：前置准备｜安装必备环境&lt;a href=&quot;#第一篇前置准备安装必备环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;一、前言&lt;a href=&quot;#一前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Firefly 是 Astro 静态博客主题，本文是作者的搭建笔记，为以后回溯搭建过程，为后续操作筑牢基础。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、必备软件清单&lt;a href=&quot;#二必备软件清单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/&quot; target=&quot;_blank&quot;&gt;Node.js&lt;/a&gt;：核心环境，&lt;strong&gt;版本 ≥22&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;pnpm&lt;/li&gt;
&lt;li&gt;Git：用于拉取源码、提交代码&lt;/li&gt;
&lt;li&gt;VS Code：推荐编辑器，用于修改配置、写文章&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、分步安装教程&lt;a href=&quot;#三分步安装教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 安装 Node.js&lt;a href=&quot;#1-安装-nodejs&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://nodejs.org/&quot; target=&quot;_blank&quot;&gt;https://nodejs.org/&lt;/a&gt;，下载 &lt;strong&gt;LTS 版&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777551551531_image.png&quot; alt=&quot;image.png|528&quot; /&gt;&lt;figcaption&gt;image.png|528&lt;/figcaption&gt;&lt;/figure&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777551944095_image.png&quot; alt=&quot;image.png|534&quot; /&gt;&lt;figcaption&gt;image.png|534&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;终端执行 &lt;code&gt;node -v&lt;/code&gt;、&lt;code&gt;npm -v&lt;/code&gt;，输出版本号即成功。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777696257686_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;strong&gt;注意&lt;/strong&gt;：安装后重启终端，无效则重启电脑。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 安装 pnpm&lt;a href=&quot;#2-安装-pnpm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;终端执行：&lt;code&gt;npm install -g pnpm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;执行 &lt;code&gt;pnpm -v&lt;/code&gt; 输出版本号即成功，权限不足用管理员终端。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777696287079_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：网络超时切换手机热点。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 安装 Git&lt;a href=&quot;#3-安装-git&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;1.访问 &lt;a href=&quot;https://git-scm.com/download/win&quot; target=&quot;_blank&quot;&gt;https://git-scm.com/download/win&lt;/a&gt;，下载最新版并默认安装。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777696402220_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;
2. 一直下一步就行了，全程默认安装。&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 安装 VS Code（可选）&lt;a href=&quot;#4-安装-vs-code可选&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;1.访问 &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot;&gt;https://code.visualstudio.com/&lt;/a&gt;，下载并安装，勾选“创建桌面快捷方式”和“将 Code 加入 PATH”。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777696460697_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;推荐安装中文插件。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.fqzlr.com/file/blog/wenzhang/1777696528164_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;四、常见环境问题排查&lt;a href=&quot;#四常见环境问题排查&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;node 命令无效 → 重新安装并勾选“Add to PATH”，重启终端/电脑。&lt;/li&gt;
&lt;li&gt;pnpm 权限不足 → 用管理员终端执行命令。&lt;/li&gt;
&lt;li&gt;git 无反应 → 重启电脑，无效则重装。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第二篇：源码托管｜Fork Firefly 官方仓库&lt;a href=&quot;#第二篇源码托管fork-firefly-官方仓库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;一、前言&lt;a href=&quot;#一前言-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过Fork官方仓库，获得自己的独立仓库，可自由修改内容、同步官方更新，后续推送代码到该仓库，Cloudflare会自动触发构建部署。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、前置准备&lt;a href=&quot;#二前置准备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;已完成第一篇环境安装（Node ≥22、pnpm、Git、VS Code）&lt;/li&gt;
&lt;li&gt;已注册并登录 &lt;a href=&quot;%5Bhttps://github.com/&quot;&gt;&lt;strong&gt;GitHub 账号&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、Fork 操作步骤（1分钟完成）&lt;a href=&quot;#三fork-操作步骤1分钟完成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开Firefly官方仓库：&lt;a href=&quot;https://github.com/CuteLeaf/Firefly&quot; target=&quot;_blank&quot;&gt;https://github.com/CuteLeaf/Firefly&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击页面右上角的「Fork」按钮（绿色/灰色，位置显眼）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;等待3-5秒，页面自动跳转，此时你已拥有「自己的Firefly仓库」（仓库地址：&lt;a href=&quot;https://github.com/%E4%BD%A0%E7%9A%84GitHub%E7%94%A8%E6%88%B7%E5%90%8D/Firefly%EF%BC%89%E3%80%82&quot; target=&quot;_blank&quot;&gt;https://github.com/你的GitHub用户名/Firefly）。&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;关键说明&lt;/strong&gt;：Fork后的仓库归你所有，修改内容不会影响官方仓库，后续可一键同步官方更新，适合长期维护。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第三篇：本地搭建｜克隆仓库 + 本地预览调试&lt;a href=&quot;#第三篇本地搭建克隆仓库--本地预览调试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;一、前言&lt;a href=&quot;#一前言-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;将你Fork后的仓库克隆到本地，安装依赖后启动本地服务，用于预览修改效果（仅本地查看，无需打包，推送代码后Cloudflare自动部署）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、前置准备&lt;a href=&quot;#二前置准备-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;已完成前两篇操作（环境安装、Fork仓库）&lt;/li&gt;
&lt;li&gt;新建空文件夹：路径&lt;strong&gt;无中文、无空格、无特殊字符&lt;/strong&gt;（示例：D:\blog）&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、分步操作教程&lt;a href=&quot;#三分步操作教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;四、克隆你自己的仓库到本地&lt;a href=&quot;#四克隆你自己的仓库到本地&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;进入 &lt;strong&gt;你的 Fork 仓库&lt;/strong&gt; 页面&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;Code&lt;/strong&gt; → 复制 &lt;strong&gt;HTTPS 地址&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;执行克隆（把地址换成你自己的）：
运行&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git clone https://github.com/你的用户名/Firefly.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;进入项目目录：&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd Firefly&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;2. 安装本地依赖（仅用于本地预览）&lt;a href=&quot;#2-安装本地依赖仅用于本地预览&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;安装依赖（用 pnpm）
运行&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm install&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 启动本地预览服务&lt;a href=&quot;#3-启动本地预览服务&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm dev&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;等待10-30秒，终端显示访问地址：    &lt;a href=&quot;http://localhost:4321&quot; target=&quot;_blank&quot;&gt;http://localhost:4321&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开浏览器输入该地址，看到Firefly默认首页，即本地搭建成功。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 本地简单调试&lt;a href=&quot;#4-本地简单调试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;修改配置 / 文章 → &lt;strong&gt;保存自动刷新&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;在项目根目录创建&lt;code&gt;wrangler.toml&lt;/code&gt;：  Cloudflare Workers部署需要&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;name = &quot;firefly&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;compatibility_date = &quot;YYYY-MM-DD&quot; # 更为今日&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[assets]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;directory = &quot;./dist&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[vars]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;NODE_VERSION = &quot;22&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;2.简单修改站点信息。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;停止服务：&lt;code&gt;Ctrl + C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;重新启动：&lt;code&gt;pnpm dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;本地仅用于预览，无需执行任何打包命令（Cloudflare会自动打包）。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;5. 本地开发完成后&lt;a href=&quot;#5-本地开发完成后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;1.先配置本地 Git 身份&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;打开电脑的&lt;strong&gt;终端（Mac/Linux）&lt;/strong&gt; 或 &lt;strong&gt;Git Bash/CMD（Windows）&lt;/strong&gt;，执行 2 条命令：&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 设置你的GitHub用户名（就是你GitHub主页的用户名）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git config --global user.name &quot;你的GitHub用户名&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 设置你的GitHub绑定邮箱（就是你注册GitHub用的邮箱）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git config --global user.email &quot;你的GitHub邮箱&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;检测是否成功&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git config --global user.name&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git config --global user.email&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;能显示出你填的信息，就说明绑定好了。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;2. 推送到 GitHub：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git add .&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git commit -m &quot;更新内容&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git push&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;第四篇：部署配置｜Cloudflare 关联GitHub自动构建&lt;a href=&quot;#第四篇部署配置cloudflare-关联github自动构建&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;一、前言&lt;a href=&quot;#一前言-3&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是核心部署步骤，关联你的GitHub仓库后，后续只要推送代码到GitHub，Cloudflare会自动执行「安装依赖→打包→上线」，全程无需手动操作。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、前置准备&lt;a href=&quot;#二前置准备-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;已完成前几篇操作（环境安装、Fork仓库、本地搭建，简单修改，上传到github）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已注册并登录Cloudflare账号（无账号可注册：&lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://dash.cloudflare.com/&lt;/a&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你的GitHub仓库已包含完整Firefly源码&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、分步配置教程&lt;a href=&quot;#三分步配置教程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 新建 Cloudflare Worker 应用&lt;a href=&quot;#1-新建-cloudflare-worker-应用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;登录 Cloudflare 控制台&lt;/strong&gt; 打开浏览器访问官方控制台：&lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot;&gt;https://dash.cloudflare.com/&lt;/a&gt;，输入账号密码完成登录。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;进入 Workers &amp;amp; Pages 页面&lt;/strong&gt; 登录后，在左侧菜单栏找到并点击 &lt;strong&gt;Workers 和 Pages&lt;/strong&gt;（英文对应：Workers &amp;amp; Pages），进入应用管理页面。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建应用程序&lt;/strong&gt; 在页面右上角，点击 &lt;strong&gt;创建应用程序&lt;/strong&gt;（英文对应：Create application），进入应用创建流程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关联 GitHub 代码仓库&lt;/strong&gt; 在创建页面中，选择 &lt;strong&gt;连接到 Git（Connect Git）&lt;/strong&gt;，然后选中 &lt;strong&gt;GitHub&lt;/strong&gt;，按照页面提示完成授权，允许 Cloudflare 访问你的 GitHub 账号。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;选择目标仓库&lt;/strong&gt; 授权完成后，系统会列出你的 GitHub 所有仓库，从中选中需要部署到 Cloudflare Worker 的代码仓库（如 Firefly 仓库）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置构建设置&lt;/strong&gt; ：&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build command&lt;/strong&gt;: &lt;code&gt;pnpm build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy command&lt;/strong&gt;: &lt;code&gt;npx wrangler deploy&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;发起首次部署&lt;/strong&gt; 配置完成后，点击页面底部的 &lt;strong&gt;部署（Deploy）&lt;/strong&gt;，启动首次自动部署流程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;等待自动构建完成&lt;/strong&gt; Cloudflare 会自动执行三个操作：拉取 GitHub 仓库代码 → 执行构建命令 → 将项目部署至 Workers 服务器，耐心等待即可。。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 验证自动部署是否成功&lt;a href=&quot;#2-验证自动部署是否成功&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;当构建状态显示“成功”后，点击 Worker 项目顶部的 &lt;strong&gt;临时域名&lt;/strong&gt;（格式为：&lt;code&gt;xxx.workers.dev&lt;/code&gt;）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开浏览器访问该临时域名，若页面展示效果与本地预览的博客首页完全一致，说明 Cloudflare Worker 与 GitHub 自动部署配置成功。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第五篇：绑定域名（Spaceship 平台域名适配）&lt;a href=&quot;#第五篇绑定域名spaceship-平台域名适配&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;完成 Cloudflare Worker 自动部署后，默认使用 &lt;code&gt;xxx.workers.dev&lt;/code&gt; 临时域名访问，为了提升专业性和记忆性，我们将你在 &lt;a href=&quot;https://www.spaceship.com/zh/auth/?returnUrl=/launchpad/&quot; target=&quot;_blank&quot;&gt;Spaceship 平台&lt;/a&gt; 注册的域名，绑定到 Worker 应用，全程适配博客框架，步骤清晰无冗余。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;一、绑定前准备（必做）&lt;a href=&quot;#一绑定前准备必做&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;确认域名状态&lt;/strong&gt;：登录 &lt;a href=&quot;https://www.spaceship.com/zh/auth/?returnUrl=/launchpad/&quot; target=&quot;_blank&quot;&gt;Spaceship 控制台&lt;/a&gt;，确认你的域名状态为“正常”，未被锁定、未过期，且已完成实名认证（若有要求），避免因域名异常导致绑定失败。&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;二、Step 1：在 Cloudflare 中添加自定义域名&lt;a href=&quot;#二step-1在-cloudflare-中添加自定义域名&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;登录 Cloudflare 控制台，进入之前创建的 Worker 项目主页（可通过左侧「Workers 和 Pages」找到对应项目）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在项目主页左侧导航栏，点击 &lt;strong&gt;触发器&lt;/strong&gt;（英文：Triggers）选项卡，找到「自定义域」模块，点击 &lt;strong&gt;添加自定义域&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在弹出的输入框中，填写你在 Spaceship 平台的域名（如 &lt;code&gt;yourdomain.com&lt;/code&gt; 或 &lt;code&gt;www.yourdomain.com&lt;/code&gt;），点击 &lt;strong&gt;添加&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;添加后，Cloudflare 会自动生成对应的 DNS 解析记录（CNAME 记录），记录下该 CNAME 记录的「目标值」（通常为你的 Worker 临时域名），后续需在 Spaceship 平台配置该解析。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;三、Step 2：在 Spaceship 平台配置 DNS 解析（核心步骤）&lt;a href=&quot;#三step-2在-spaceship-平台配置-dns-解析核心步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这一步是关键，需在你的域名所在平台（Spaceship）修改 DNS 解析，将域名指向 Cloudflare Worker，具体操作如下：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;登录 Spaceship 控制台&lt;/strong&gt;：打开浏览器，访问 &lt;a href=&quot;https://www.spaceship.com/zh/auth/?returnUrl=/launchpad/&quot; target=&quot;_blank&quot;&gt;https://www.spaceship.com/zh/auth/?returnUrl=%2Flaunchpad%2F&lt;/a&gt;，输入你的账号密码完成登录（若已登录可直接进入）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;进入域名管理页面&lt;/strong&gt;：登录后，点击顶部「Launchpad」（控制台），找到「Domain Manager」（域名管理）模块，在域名列表中找到你要绑定的域名，点击该域名进入详情页。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;进入 DNS 解析设置&lt;/strong&gt;：在域名详情页中，找到「DNS」选项（或「DNS 解析」「解析设置」），点击进入 DNS 解析配置页面，删除当前无关的解析记录（避免冲突）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;添加 CNAME 解析记录&lt;/strong&gt;：点击「添加记录」（或「新增解析」），按以下参数填写（适配 Cloudflare Worker 绑定）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;记录类型：选择 &lt;strong&gt;CNAME&lt;/strong&gt;（核心类型，用于将域名指向 Worker 临时域名，适配 IP 动态变化场景）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;主机记录：填写 &lt;code&gt;@&lt;/code&gt;（代表主域名，如 &lt;code&gt;yourdomain.com&lt;/code&gt;）或 &lt;code&gt;www&lt;/code&gt;（代表带 www 前缀的域名，如 &lt;code&gt;www.yourdomain.com&lt;/code&gt;，建议两者都添加）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;记录值：粘贴 Step 1 中 Cloudflare 生成的 CNAME 目标值（即 Worker 临时域名，如&lt;code&gt;xxx.workers.dev&lt;/code&gt;），确保填写无误；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TTL（缓存时间）：设置为 10~60 分钟（数值越小，解析生效越快，新手可直接默认）；&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击「保存」，完成 DNS 解析配置，此时 Spaceship 平台的域名解析已指向 Cloudflare Worker。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;四、Step 4：验证域名绑定是否成功&lt;a href=&quot;#四step-4验证域名绑定是否成功&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;DNS 解析生效时间通常为 10 分钟~24 小时（新域名生效较快，老域名可能需等待更久），可通过以下两种方式验证绑定结果：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;浏览器直接访问&lt;/strong&gt;：打开浏览器，输入你绑定的域名（如 &lt;code&gt;yourdomain.com&lt;/code&gt;），若能正常显示博客首页，且地址栏有 HTTPS 小锁标志，说明绑定成功；若提示“无法访问”，请耐心等待解析生效，或检查解析记录填写是否正确。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;在线工具查询&lt;/strong&gt;：使用 DNS 解析查询工具（如 DNSChecker.org），输入你的域名，查询 CNAME 记录，若查询结果与你配置的 Worker 临时域名一致，说明解析已生效，绑定成功。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;###五、域名绑定常见问题排查&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;解析配置后无法访问&lt;/strong&gt;：检查 Spaceship 平台的 CNAME 记录值是否与 Cloudflare 生成的目标值一致，TTL 设置是否过小，若无误，耐心等待解析生效（最长 24 小时）；同时确认 Cloudflare 中自定义域已添加成功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;浏览器提示“不安全”&lt;/strong&gt;：检查 Cloudflare 的 SSL/TLS 加密模式是否设置正确，证书是否已生效，若未生效，等待几分钟后刷新页面重试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;提示“域名已被占用”&lt;/strong&gt;：确认该域名未被其他 Cloudflare 项目绑定，若已绑定，先删除原有绑定，再重新添加。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;DNS 解析修改无效&lt;/strong&gt;：检查 Spaceship 平台的域名 DNS 服务器是否为默认服务器，若已修改为第三方 DNS，需先改回默认或同步解析记录至对应 DNS 服务器。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Git 使用教程  测试</title><link>https://blogs.olxc.art/posts/blog/git-use/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/git-use/</guid><description>git 使用教程及常用命令，自用</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Git 详细使用教程（命令行版，附命令作用解释）&lt;a href=&quot;#git-详细使用教程命令行版附命令作用解释&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Git 是目前最流行的分布式版本控制系统，核心作用是&lt;strong&gt;跟踪文件变化、管理代码版本&lt;/strong&gt;，支持多人协作开发，可随时回滚到历史版本，避免代码丢失或冲突。本教程全程使用命令行操作（Windows 用 Git Bash、Mac/Linux 用终端），从基础配置到高级用法，逐一讲解命令作用和实操场景，新手可直接跟着步骤练习。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;一、Git 前期准备（必做）&lt;a href=&quot;#一git-前期准备必做&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;1. 安装 Git&lt;a href=&quot;#1-安装-git&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先在本地安装 Git，安装完成后，打开命令行，输入以下命令验证是否安装成功：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--version&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：查看当前 Git 版本，若输出类似&lt;code&gt;git version 2\.43\.0&lt;/code&gt;，说明安装成功；若提示“命令不存在”，需重新安装 Git。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 初始配置（绑定身份，关键步骤）&lt;a href=&quot;#2-初始配置绑定身份关键步骤&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Git 每次提交代码时，会记录提交者的身份（用户名和邮箱），用于区分不同开发者，必须配置后才能正常提交代码。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 配置用户名（建议和 GitHub/GitLab 用户名一致）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user.name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;你的用户名&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 配置邮箱（建议和 GitHub/GitLab 绑定邮箱一致）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user.email&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;你的邮箱地址&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git config&lt;/code&gt;：Git 的配置命令，用于设置 Git 相关参数；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\-\-global&lt;/code&gt;：全局参数，意味着该配置在当前电脑所有 Git 项目中生效（若只想针对单个项目配置，去掉该参数，进入项目后再执行）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;user\.name&lt;/code&gt;/&lt;code&gt;user\.email&lt;/code&gt;：配置提交者的用户名和邮箱，后续所有提交记录都会显示该信息。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;验证配置是否成功：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--list&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：查看当前 Git 的所有配置，若能看到刚才设置的用户名和邮箱，即为配置成功。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;二、Git 核心概念（先理解，再操作）&lt;a href=&quot;#二git-核心概念先理解再操作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在使用命令前，先明确 3 个核心工作区域，避免操作混乱：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;工作区（Working Directory）&lt;/strong&gt;：就是你本地电脑上的项目文件夹，你直接修改的文件都在这个区域；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;暂存区（Stage/Index）&lt;/strong&gt;：临时存放你修改的文件，相当于“缓存区”，用于确认哪些修改需要提交到版本库；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;版本库（Repository）&lt;/strong&gt;：Git 真正保存版本的地方，存放所有提交记录，可随时回滚到任意历史版本（分为本地版本库和远程版本库，如 GitHub）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;核心流程：工作区修改 → 提交到暂存区 → 提交到本地版本库 → 推送到远程版本库（如 GitHub）。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;三、本地仓库操作（最基础，必练）&lt;a href=&quot;#三本地仓库操作最基础必练&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本地仓库是 Git 操作的基础，无需联网，可独立完成版本管理，适合个人开发或离线工作。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;1. 初始化本地仓库（创建新项目）&lt;a href=&quot;#1-初始化本地仓库创建新项目&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：新建一个项目，想要用 Git 管理版本（比如本地新建的文件夹，需要变成 Git 仓库）。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 进入你要管理的项目文件夹（先切换到目标路径）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;你的项目文件夹路径（如：cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/Users/xxx/Documents/MyProject）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 初始化 Git 仓库&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;init&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cd&lt;/code&gt;：切换目录命令，用于进入你要操作的项目文件夹（若路径错误，会提示“没有该文件或目录”）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git init&lt;/code&gt;：初始化 Git 仓库，执行后会在项目文件夹中生成一个隐藏的 &lt;code&gt;\.git&lt;/code&gt; 文件夹（该文件夹是 Git 版本库的核心，不要删除），此时项目就被 Git 管理起来了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;注意：每个项目只需初始化一次，初始化后，该文件夹就是 Git 仓库了。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 查看工作区状态（高频命令）&lt;a href=&quot;#2-查看工作区状态高频命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;无论做什么操作，建议先查看工作区状态，确认当前文件的修改情况，避免误操作。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;status&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：查看工作区、暂存区的文件状态，常见输出场景：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;未修改：提示 &lt;code&gt;nothing to commit, working tree clean&lt;/code&gt;（工作区干净，没有任何修改）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已修改但未提交到暂存区：文件名称显示为 &lt;code&gt;modified&lt;/code&gt;（红色）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已提交到暂存区但未提交到版本库：文件名称显示为 &lt;code&gt;staged&lt;/code&gt;（绿色）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 将修改的文件提交到暂存区&lt;a href=&quot;#3-将修改的文件提交到暂存区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：你在工作区修改了文件（如新增、修改、删除文件），需要先提交到暂存区，再准备提交到版本库。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式1：提交所有修改的文件（最常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式2：提交指定文件（适用于只提交部分修改）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;文件名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;index.html）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式3：提交指定文件夹下的所有文件&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;文件夹名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src/）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git add&lt;/code&gt;：将工作区的修改“暂存”起来，告诉 Git“这些修改我要提交到版本库，请先记录下来”；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\.&lt;/code&gt;：表示当前目录下所有修改的文件（包括新增、修改、删除），简化操作，无需逐个指定文件；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提交后，再执行&lt;code&gt;git status&lt;/code&gt;，会看到文件变成绿色，提示“changes to be committed”（暂存区有等待提交的内容）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 将暂存区的文件提交到本地版本库&lt;a href=&quot;#4-将暂存区的文件提交到本地版本库&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是 Git 版本管理的核心步骤，提交后，修改会被永久保存到本地版本库，生成一条新的版本记录。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;提交说明&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git commit&lt;/code&gt;：将暂存区的内容提交到本地版本库，完成一次版本更新；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\-m \&amp;amp;\#34;提交说明\&amp;amp;\#34;&lt;/code&gt;：必填参数，用于描述本次提交的内容（如“新增登录页面”“修复首页轮播bug”），建议说明清晰，方便后续查看历史记录时，快速知道该版本做了什么修改；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提交成功后，会提示类似 &lt;code&gt;1 file changed, 2 insertions\(\+\)&lt;/code&gt; 的信息，表示“1个文件被修改，新增了2行内容”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;注意：必须先执行 &lt;code&gt;git add&lt;/code&gt;，再执行 &lt;code&gt;git commit&lt;/code&gt;，否则会提示“没有可提交的内容”。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. 查看提交历史记录&lt;a href=&quot;#5-查看提交历史记录&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：查看之前的提交记录，包括提交者、提交时间、提交说明、版本号（用于回滚版本）。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式1：查看完整历史记录（详细）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式2：查看简洁历史记录（只显示版本号和提交说明，推荐）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--oneline&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式3：查看所有提交记录（包括回滚的记录）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reflog&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git log&lt;/code&gt;：显示所有提交记录，每条记录包含版本号（40位哈希值）、提交者、提交时间、提交说明；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\-\-oneline&lt;/code&gt;：简化输出，每条记录只显示前7位版本号和提交说明，更易查看；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git reflog&lt;/code&gt;：比 &lt;code&gt;git log&lt;/code&gt; 更全面，会记录所有操作（包括回滚、撤销提交），常用于找回误删的版本。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;6. 版本回滚（恢复到历史版本）&lt;a href=&quot;#6-版本回滚恢复到历史版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：修改出错、代码丢失，需要恢复到之前的某个稳定版本（核心操作，务必掌握）。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 第一步：查看历史版本，获取要回滚的版本号（前7位即可）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;log&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--oneline&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 第二步：回滚到指定版本（两种常用方式）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式1：彻底回滚，删除回滚版本之后的所有提交记录（谨慎使用，适合个人开发）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--hard&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;版本号（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--hard&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a1b2c3d）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式2：安全回滚，保留回滚版本之后的修改（推荐，适合多人协作）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;revert&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;版本号（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;revert&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a1b2c3d）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git reset \-\-hard 版本号&lt;/code&gt;：强制回滚到指定版本，工作区、暂存区的内容都会同步到该版本，之后的提交记录会被删除（无法恢复，谨慎使用）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git revert 版本号&lt;/code&gt;：不会删除任何提交记录，而是生成一条新的提交记录，将代码恢复到指定版本，后续的修改仍然保留（安全，多人协作时优先使用）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;版本号：通过 &lt;code&gt;git log \-\-oneline&lt;/code&gt; 获取，如 &lt;code&gt;a1b2c3d&lt;/code&gt;（前7位即可，Git 会自动识别）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;7. 撤销工作区的修改（未提交到暂存区）&lt;a href=&quot;#7-撤销工作区的修改未提交到暂存区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：在工作区修改了文件，但还没执行 &lt;code&gt;git add&lt;/code&gt;，想放弃修改，恢复到上一次提交后的状态。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 撤销单个文件的修改&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;文件名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;index.html）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 撤销所有工作区的修改（未 add 的）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：放弃工作区的所有未暂存修改，将文件恢复到最近一次 &lt;code&gt;git commit&lt;/code&gt; 或 &lt;code&gt;git add&lt;/code&gt; 后的状态（注意：撤销后，修改会彻底丢失，无法恢复）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;8. 撤销暂存区的修改（已 add 但未 commit）&lt;a href=&quot;#8-撤销暂存区的修改已-add-但未-commit&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：执行了 &lt;code&gt;git add&lt;/code&gt;，将修改提交到了暂存区，但还没执行 &lt;code&gt;git commit&lt;/code&gt;，想撤销暂存，重新修改。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HEAD&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;文件名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HEAD&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;index.html）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 撤销所有暂存区的修改&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;reset&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HEAD&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：将暂存区的修改撤销回工作区，此时文件状态会从“绿色（staged）”变回“红色（modified）”，之后可以重新修改、重新 add。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;四、远程仓库操作（多人协作必备）&lt;a href=&quot;#四远程仓库操作多人协作必备&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;远程仓库（如 GitHub、GitLab、Gitee）是用于多人共享代码的服务器，本地仓库的代码可以推送到远程，也可以从远程拉取别人的代码，实现协作开发。&lt;/p&gt;&lt;p&gt;前提：你已经有一个远程仓库（如在 GitHub 上创建了仓库），且本地 Git 已配置好远程仓库地址。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;1. 关联远程仓库（第一次绑定）&lt;a href=&quot;#1-关联远程仓库第一次绑定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：本地已有 Git 仓库，想要和远程仓库绑定，实现代码同步。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;远程仓库地址&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git remote&lt;/code&gt;：用于管理远程仓库的命令（如添加、删除、查看远程仓库）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;add&lt;/code&gt;：添加远程仓库；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;origin&lt;/code&gt;：远程仓库的别名（默认用 origin，可自定义，如 git remote add github 远程地址），后续操作远程仓库时，用别名即可，无需输入完整地址；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;远程仓库地址：从 GitHub/GitLab 复制，一般分为 HTTPS 和 SSH 两种（HTTPS 无需配置密钥，直接输入账号密码即可；SSH 需要配置密钥，无需每次输入账号密码，推荐长期使用）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;查看已关联的远程仓库：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;remote&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-v&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：查看当前本地仓库关联的所有远程仓库，输出会显示远程仓库的别名、地址，以及可进行的操作（fetch：拉取，push：推送）。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 从远程仓库拉取代码（同步别人的修改）&lt;a href=&quot;#2-从远程仓库拉取代码同步别人的修改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：多人协作时，别人将代码推送到了远程仓库，你需要将远程的最新代码拉取到本地，保持本地和远程同步。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式1：拉取远程默认分支（如 main/master）的最新代码（最常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main（或&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master，取决于远程仓库的默认分支名）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式2：拉取远程指定分支的代码&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git pull&lt;/code&gt;：等价于 &lt;code&gt;git fetch \+ git merge&lt;/code&gt;，即先从远程拉取最新代码到本地临时区域，再自动合并到当前本地分支；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;origin&lt;/code&gt;：远程仓库别名；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;main/master&lt;/code&gt;：远程仓库的默认分支（GitHub 现在默认分支是 main，旧版本是 master）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注意：拉取代码前，建议先执行 &lt;code&gt;git commit&lt;/code&gt;，将本地的修改提交到本地版本库，避免拉取时出现代码冲突。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 将本地代码推送到远程仓库（分享自己的修改）&lt;a href=&quot;#3-将本地代码推送到远程仓库分享自己的修改&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：你在本地完成了代码修改（已 commit 到本地版本库），想要将修改推送到远程仓库，让别人看到你的代码。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式1：推送本地默认分支到远程默认分支（第一次推送需加 -u）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 第一次推送（绑定本地分支和远程分支，后续可直接用 git push）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-u&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main（或&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 后续推送（已绑定分支，无需加 -u）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main（或&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;master）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 方式2：推送本地指定分支到远程指定分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;本地分支名:远程分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop:develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git push&lt;/code&gt;：将本地版本库的提交记录推送到远程仓库；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\-u&lt;/code&gt;：第一次推送时使用，用于绑定本地分支和远程分支（如本地 main 分支绑定远程 main 分支），后续推送时，直接输入 &lt;code&gt;git push&lt;/code&gt; 即可，无需指定别名和分支；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;推送失败常见原因：① 本地代码不是最新的（需先 &lt;code&gt;git pull&lt;/code&gt; 拉取远程最新代码，解决冲突后再推送）；② 没有远程仓库的权限（检查账号密码或 SSH 密钥配置）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 克隆远程仓库到本地（第一次下载）&lt;a href=&quot;#4-克隆远程仓库到本地第一次下载&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：本地没有该项目，直接从远程仓库下载完整的项目代码（包括所有版本记录）。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;远程仓库地址&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git clone&lt;/code&gt;：将远程仓库的所有内容（包括代码、版本记录、分支）完整下载到本地，自动创建项目文件夹，并初始化 Git 仓库；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;执行后，本地会自动关联该远程仓库（别名默认是 origin），无需再执行 &lt;code&gt;git remote add&lt;/code&gt;；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;示例：&lt;code&gt;git clone https://github\.com/用户名/项目名\.git&lt;/code&gt;（HTTPS 地址），或 &lt;code&gt;git clone git@github\.com:用户名/项目名\.git&lt;/code&gt;（SSH 地址）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. 查看远程分支&lt;a href=&quot;#5-查看远程分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 查看本地所有分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 查看远程所有分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 查看本地和远程所有分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git branch&lt;/code&gt;：查看本地已有的分支，当前所在分支会用 &lt;code&gt;\*&lt;/code&gt; 标记；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\-r&lt;/code&gt;：查看远程仓库的所有分支；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;\-a&lt;/code&gt;：查看本地和远程的所有分支（远程分支会显示为 &lt;code&gt;remotes/origin/分支名&lt;/code&gt;）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;6. 切换/创建分支（多人协作核心）&lt;a href=&quot;#6-切换创建分支多人协作核心&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;多人协作时，建议每人在自己的分支上开发，避免直接修改默认分支（main/master），开发完成后再合并到默认分支。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 创建新分支（并切换到该分支，最常用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 等价于以下两条命令：&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# git branch 分支名（创建分支）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# git checkout 分支名（切换到该分支）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 切换到已有的本地分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 3. 切换到远程分支（并创建本地对应分支）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;本地分支名&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin/远程分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin/develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用详解：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git checkout \-b 分支名&lt;/code&gt;：一次性完成“创建分支+切换分支”，高效便捷；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分支命名建议：按功能命名（如 &lt;code&gt;feature/login&lt;/code&gt;，表示登录功能分支）、按bug修复命名（如 &lt;code&gt;fix/banner\-bug&lt;/code&gt;），便于区分。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;7. 合并分支（将开发分支的代码合并到默认分支）&lt;a href=&quot;#7-合并分支将开发分支的代码合并到默认分支&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;适用于：在开发分支（如 develop）完成开发后，将代码合并到默认分支（如 main），让修改生效。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 先切换到要合并到的目标分支（如 main 分支）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;checkout&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 合并开发分支（如 develop 分支）到当前分支（main）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;merge&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;命令作用：将指定分支（如 develop）的所有修改，合并到当前所在的分支（如 main），合并后，main 分支就包含了 develop 分支的所有代码。&lt;/p&gt;&lt;p&gt;注意：合并时可能会出现&lt;strong&gt;代码冲突&lt;/strong&gt;（如两个人同时修改了同一个文件的同一行），此时需要手动解决冲突：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;执行 &lt;code&gt;git merge&lt;/code&gt; 后，Git 会提示“冲突文件”；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开冲突文件，找到标记冲突的地方（用 &lt;code&gt;\&amp;amp;lt;\&amp;amp;lt;\&amp;amp;lt;\&amp;amp;lt;\&amp;amp;lt;\&amp;amp;lt;\&amp;amp;lt;&lt;/code&gt;、&lt;code&gt;=======&lt;/code&gt;、&lt;code&gt;\&amp;amp;gt;\&amp;amp;gt;\&amp;amp;gt;\&amp;amp;gt;\&amp;amp;gt;\&amp;amp;gt;\&amp;amp;gt;&lt;/code&gt; 标记）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;修改冲突内容（保留需要的代码，删除冲突标记）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;执行 &lt;code&gt;git add \.&lt;/code&gt; 和 &lt;code&gt;git commit \-m \&amp;amp;\#34;解决合并冲突\&amp;amp;\#34;&lt;/code&gt;，完成合并。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;8. 删除分支（分支开发完成后）&lt;a href=&quot;#8-删除分支分支开发完成后&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 删除本地分支（分支已合并到主分支，可安全删除）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 强制删除本地分支（分支未合并，强行删除，谨慎使用）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-D&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 删除远程分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--delete&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支名（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--delete&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;命令作用：删除无用的分支，保持分支结构清晰，避免混乱。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;五、常用补充命令（高频实用）&lt;a href=&quot;#五常用补充命令高频实用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 1. 查看当前分支的提交差异（对比工作区和暂存区）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;diff&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 2. 查看暂存区和本地版本库的差异&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;diff&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--cached&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 3. 查看两个分支之间的差异&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;diff&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支1&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;分支2（如：git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;diff&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;develop）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 4. 暂存当前修改，切换到其他分支（临时切换分支，不提交当前修改）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; #&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;暂存当前修改&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; #&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;恢复暂存的修改（恢复后，暂存记录删除）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stash&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; #&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;查看所有暂存记录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 5. 重命名本地分支&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;旧分支名&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;新分支名&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 6. 更新远程分支列表（远程删除了分支，本地同步）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;fetch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--prune&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;每个命令的作用简要说明：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git diff&lt;/code&gt;：快速查看修改的具体内容（哪一行被修改、新增/删除了什么）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git stash&lt;/code&gt;：临时保存未提交的修改，常用于“正在开发一个功能，突然需要切换到其他分支修复bug”的场景；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;git fetch \-\-prune&lt;/code&gt;：同步远程分支的删除操作，避免本地显示已删除的远程分支。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;六、常见问题解决（新手必看）&lt;a href=&quot;#六常见问题解决新手必看&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;1. 拉取/推送代码时，提示“权限不足”&lt;a href=&quot;#1-拉取推送代码时提示权限不足&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;原因：未配置正确的账号密码或 SSH 密钥。&lt;/p&gt;&lt;p&gt;解决方法：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;若用 HTTPS 地址：重新输入正确的 GitHub/GitLab 账号密码；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若用 SSH 地址：配置 SSH 密钥（网上搜索“GitHub SSH 密钥配置”，按步骤操作即可，配置一次终身可用）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 合并分支时出现代码冲突&lt;a href=&quot;#2-合并分支时出现代码冲突&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;解决方法：按前面“合并分支”部分的步骤，手动修改冲突文件，删除冲突标记，保留需要的代码，再提交即可。&lt;/p&gt;&lt;p&gt;注意：冲突解决后，一定要仔细检查代码，确保没有误删有用的内容。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 误删本地代码/误回滚版本，如何恢复？&lt;a href=&quot;#3-误删本地代码误回滚版本如何恢复&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;解决方法：执行 &lt;code&gt;git reflog&lt;/code&gt;，查看所有操作记录，找到误删/误回滚前的版本号，再执行&lt;code&gt;git reset \-\-hard 版本号&lt;/code&gt;，即可恢复到该版本。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 推送代码时，提示“本地版本落后于远程版本”&lt;a href=&quot;#4-推送代码时提示本地版本落后于远程版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;原因：远程仓库有别人推送的最新代码，你的本地代码不是最新的，无法直接推送。&lt;/p&gt;&lt;p&gt;解决方法：先执行 &lt;code&gt;git pull&lt;/code&gt; 拉取远程最新代码，解决冲突后，再执行 &lt;code&gt;git push&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;七、总结（核心流程梳理）&lt;a href=&quot;#七总结核心流程梳理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Git 的核心操作围绕“本地仓库”和“远程仓库”展开，新手记住以下流程即可快速上手：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;前期准备：安装 Git → 配置用户名和邮箱；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;本地开发：初始化仓库（git init）→ 修改文件 → 提交到暂存区（git add .）→ 提交到本地版本库（git commit -m &amp;amp;#34;说明&amp;amp;#34;）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多人协作：克隆远程仓库（git clone）→ 拉取远程更新（git pull）→ 创建分支开发 → 推送分支到远程（git push）→ 合并分支；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;问题处理：版本回滚（git reset/git revert）、解决冲突、恢复误删代码（git reflog）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Git 命令看似多，但常用的只有十几个，多练习几次（比如新建一个测试项目，反复执行 add、commit、push、pull 等操作），就能熟练掌握。记住：所有命令的核心都是“跟踪版本、同步代码”，理解每个命令的作用，比死记硬背更重要。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Firefly 友链自助申请按钮添加</title><link>https://blogs.olxc.art/posts/blog/firefly-link-button/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/firefly-link-button/</guid><description>一步到位给 Firefly 主题添加两种友链自助申请入口：右上角申请按钮 + 友链页面文字超链接，复制即用。</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Firefly 友链自助申请按钮添加&lt;a href=&quot;#firefly-友链自助申请按钮添加&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;本篇教程适用于 &lt;strong&gt;Firefly Astro 主题&lt;/strong&gt;，不破坏原有布局、不影响任何功能，只修改两处代码，实现两种友链申请入口。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;右上角「自助申请友链」按钮&lt;/li&gt;
&lt;li&gt;友链页面内「自助申请友链」文字链接&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h2&gt;一、准备工作&lt;a href=&quot;#一准备工作&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;打开你的 Firefly 项目&lt;/li&gt;
&lt;li&gt;准备好你的 GitHub 友链申请地址&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://github.com/fqzlr/Firefly/issues/new?template=friend-request.yml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;全程只需要修改 &lt;strong&gt;2 个文件&lt;/strong&gt;，复制粘贴即可完成。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、添加右上角「自助申请友链」按钮&lt;a href=&quot;#二添加右上角自助申请友链按钮&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;修改文件&lt;a href=&quot;#修改文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;src/pages/friends.astro&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤 1：添加申请链接&lt;a href=&quot;#步骤-1添加申请链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在文件顶部的变量区域加入：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const friendApplyUrl = &quot;https://github.com/fqzlr/Firefly/issues/new?template=friend-request.yml&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;步骤 2：替换标题区域布局&lt;a href=&quot;#步骤-2替换标题区域布局&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;找到页面标题部分，替换成以下布局：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;flex flex-col gap-4 md:flex-row md:items-end md:justify-between&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;flex items-center gap-3 mb-3&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;h-8 w-8 rounded-lg bg-(--primary) flex items-center justify-center text-white&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Icon&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;material-symbols:group&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text-[1.5rem]&quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text-3xl font-bold text-neutral-900 dark:text-neutral-100&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text-base text-neutral-600 dark:text-neutral-400 leading-relaxed&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&amp;lt;!-- 自助申请友链按钮 --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;flex shrink-0 flex-col items-start gap-2 md:items-end&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;friendApplyUrl&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;noopener noreferrer&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;inline-flex items-center gap-2 rounded-lg bg-(--primary) px-4 py-2.5 text-sm font-medium text-white transition-all hover:opacity-90 hover:scale-[1.02] active:scale-[0.98]&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Icon&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;material-symbols:add-link-rounded&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text-lg&quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;自助申请友链&amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;text-xs text-neutral-500 dark:text-neutral-400 md:text-right&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;通过 GitHub Issue 提交，系统会自动校验回链并同步收录&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;完成效果&lt;a href=&quot;#完成效果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;✅ 右上角出现美观的申请按钮&lt;br /&gt;
✅ 适配明暗主题&lt;br /&gt;
✅ 点击直接跳转到友链申请表单&lt;br /&gt;
✅ 不破坏任何原有布局&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、添加友链页面内文字超链接&lt;a href=&quot;#三添加友链页面内文字超链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;修改文件&lt;a href=&quot;#修改文件-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;src/content/spec/friends.mdx&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;找到 Step 2 里的：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;font-semibold text-sm mb-1&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;自助申请友链&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;替换成 &lt;strong&gt;文字超链接样式&lt;/strong&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://github.com/fqzlr/Firefly/issues/new?template=friend-request.yml&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;   &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;font-semibold text-sm mb-1 inline-block text-(--primary) hover:underline&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;自助申请友链&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;完成效果&lt;a href=&quot;#完成效果-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;✅ 保持布局完全不变&lt;br /&gt;
✅ 文字变为主题色超链接&lt;br /&gt;
✅ 鼠标悬浮自动加下划线&lt;br /&gt;
✅ 点击即可跳转申请&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;四、最终效果&lt;a href=&quot;#四最终效果&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你的友链页面现在拥有：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;右上角申请按钮&lt;/strong&gt;（醒目、直观）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;步骤中的文字链接&lt;/strong&gt;（流程清晰、体验友好）&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;两者配合，访客可以非常方便地提交友链申请。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;五、常见问题&lt;a href=&quot;#五常见问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;1. 按钮文字看不见&lt;a href=&quot;#1-按钮文字看不见&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是 CSS 变量问题，可使用固定色值：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;class=&quot;... bg-blue-500 text-white ...&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 跳转 404&lt;a href=&quot;#2-跳转-404&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;检查用户名、仓库名、yml 模板文件名是否正确。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 样式错位&lt;a href=&quot;#3-样式错位&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;只替换教程里对应的代码块，不要改动其他结构。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;六、总结&lt;a href=&quot;#六总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;只需修改 2 个文件：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;src/pages/friends.astro&lt;/code&gt; → 右上角按钮&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src/content/spec/friends.mdx&lt;/code&gt; → 文字链接&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Firefly 友链自助申请自动化</title><link>https://blogs.olxc.art/posts/blog/friend-link-auto-apply-guide/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/friend-link-auto-apply-guide/</guid><description>从 Issue 表单、GitHub Actions、Playwright 校验，到自动写入 friendsConfig.ts、格式化、提交与回评，这篇文章完整拆解 Firefly 友链自助申请的实现原理、关键代码和落地步骤。</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;Firefly 友链自助申请自动化&lt;a href=&quot;#firefly-友链自助申请自动化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;原教程来自upxuu
&lt;a href=&quot;https://upxuu.com/posts/friend-link-system&quot; target=&quot;_blank&quot;&gt;https://upxuu.com/posts/friend-link-system&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;这篇文章把我这次在 Firefly 里落地的“友链自助申请”方案完整拆开讲一遍。&lt;/p&gt;&lt;p&gt;目标很简单：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;访客不需要私聊站长，直接在 GitHub 仓库里点一个 Issue 模板。&lt;/li&gt;
&lt;li&gt;填完网站名称、网站链接、友链页面 URL 等信息后，GitHub Actions 自动开始校验。&lt;/li&gt;
&lt;li&gt;系统会自动检查对方站点是否真的加了本站友链。&lt;/li&gt;
&lt;li&gt;校验通过后，自动把友链写入 &lt;code&gt;src/config/friendsConfig.ts&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;自动格式化、自动提交、自动推送，并在 Issue 里回评结果。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;如果你也想在自己的博客里做一套类似的“自助申请友链”系统，这篇文章可以直接照着抄。&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h2&gt;一、最终效果是什么&lt;a href=&quot;#一最终效果是什么&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这套方案上线后，整个流程会变成这样：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;用户打开 GitHub 仓库里的“申请友链” Issue 模板。&lt;/li&gt;
&lt;li&gt;填写以下信息：
&lt;ul&gt;
&lt;li&gt;网站名称&lt;/li&gt;
&lt;li&gt;网站链接&lt;/li&gt;
&lt;li&gt;友链页面 URL&lt;/li&gt;
&lt;li&gt;网站描述&lt;/li&gt;
&lt;li&gt;网站头像 URL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;用户提交 Issue。&lt;/li&gt;
&lt;li&gt;GitHub Actions 监听到 &lt;code&gt;issues.opened&lt;/code&gt; 事件后自动运行。&lt;/li&gt;
&lt;li&gt;工作流先给 Issue 打上“验证中”标签。&lt;/li&gt;
&lt;li&gt;脚本使用 Playwright 访问对方填写的友链页面。&lt;/li&gt;
&lt;li&gt;校验两件事：
&lt;ul&gt;
&lt;li&gt;这个页面能不能正常打开&lt;/li&gt;
&lt;li&gt;页面里有没有本站的回链&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;如果校验失败：
&lt;ul&gt;
&lt;li&gt;在 Issue 里自动评论失败原因&lt;/li&gt;
&lt;li&gt;给 Issue 打上 &lt;code&gt;needs-update&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;如果校验成功：
&lt;ul&gt;
&lt;li&gt;自动更新 &lt;code&gt;src/config/friendsConfig.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;自动运行 Biome 格式化&lt;/li&gt;
&lt;li&gt;自动提交到仓库&lt;/li&gt;
&lt;li&gt;自动推送到默认分支&lt;/li&gt;
&lt;li&gt;在 Issue 里评论“已添加成功”&lt;/li&gt;
&lt;li&gt;自动关闭 Issue&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;评论重新验证也支持：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;如果申请者后来修好了友链页面，只需要回复这个 Issue。&lt;/li&gt;
&lt;li&gt;Workflow 会监听 &lt;code&gt;issue_comment.created&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;但只有 &lt;strong&gt;Issue 作者本人&lt;/strong&gt; 的评论才会触发重新验证，避免别人乱刷。&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;二、这套系统的核心原理&lt;a href=&quot;#二这套系统的核心原理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这套自动化其实不是“一个脚本干完所有事”，而是四层拼起来的：&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;1. GitHub Issue 模板负责收集表单&lt;a href=&quot;#1-github-issue-模板负责收集表单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你不需要自己写前端表单，也不需要数据库。&lt;/p&gt;&lt;p&gt;GitHub 自带的 Issue Forms 就能帮你把申请信息收上来。&lt;br /&gt;
用户填完表单后，GitHub 会把内容渲染成一段结构化文本，放进 Issue body。&lt;/p&gt;&lt;p&gt;我们后面的脚本做的事情，本质上就是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;读取 &lt;code&gt;context.payload.issue.body&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;从里面解析出“网站名称 / 网站链接 / 友链页面 URL / 描述 / 头像”&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;所以第一层原理很朴素：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;GitHub Issue 不是单纯的“提问题”，它也可以被当成一个零后端表单系统。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. GitHub Actions 负责事件驱动&lt;a href=&quot;#2-github-actions-负责事件驱动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;第二层是 GitHub Actions。&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;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;on&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;issues&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;types&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;opened&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;reopened&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;issue_comment&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;types&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;created&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这意味着：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;新建 Issue 时自动跑一次&lt;/li&gt;
&lt;li&gt;重新打开 Issue 时自动跑一次&lt;/li&gt;
&lt;li&gt;在 Issue 下面评论时也会跑一次&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;但后面脚本里会再做一层筛选，只允许作者自己的评论触发重新验证。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. &lt;code&gt;actions/github-script&lt;/code&gt; 负责把 GitHub 上下文交给本地脚本&lt;a href=&quot;#3-actionsgithub-script-负责把-github-上下文交给本地脚本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;很多人会把全部逻辑都塞进 YAML 里的 &lt;code&gt;script: |&lt;/code&gt;，但这样很容易炸：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;YAML 缩进难维护&lt;/li&gt;
&lt;li&gt;JS 代码太长可读性差&lt;/li&gt;
&lt;li&gt;混入 &lt;code&gt;#&lt;/code&gt; 注释时容易直接变成语法错误&lt;/li&gt;
&lt;li&gt;编码和引号很容易出坑&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;所以这次的做法是：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Workflow 里只保留一个很短的入口。&lt;/li&gt;
&lt;li&gt;真实逻辑放到独立文件 &lt;code&gt;.github/scripts/process-friend-request.cjs&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;现在入口只有这一小段：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Process friend request&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;actions/github-script@v7&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;with&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;github-token&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const path = require(&apos;node:path&apos;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;const handler = require(path.join(process.env.GITHUB_WORKSPACE, &apos;.github/scripts/process-friend-request.cjs&apos;));&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;await handler({ github, context, core });&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这段代码只做一件事：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;把 &lt;code&gt;github&lt;/code&gt;、&lt;code&gt;context&lt;/code&gt; 这些 GitHub Runtime 对象传给仓库里的本地脚本。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;于是业务逻辑就从“YAML 内联脚本”变成了“普通 Node.js 文件”，维护体验会好很多。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. Playwright 负责做浏览器级校验&lt;a href=&quot;#4-playwright-负责做浏览器级校验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;为什么不用 &lt;code&gt;fetch&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;有些友链列表在真实 DOM 渲染后才出现&lt;/li&gt;
&lt;li&gt;只看 HTML 源码不一定能确认页面最终长什么样&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;所以这里用了 Playwright：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;chromium&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;require&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;playwright&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;校验逻辑分成两步：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;用浏览器打开对方提供的友链页面&lt;/li&gt;
&lt;li&gt;检查页面内容和页面上的所有链接里，是否出现本站域名或本站名称&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;也就是说它不是纯字符串比较，而是近似模拟了一个真实用户打开页面之后看到的结果。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;三、当前实现依赖哪些文件&lt;a href=&quot;#三当前实现依赖哪些文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你要在自己的项目里复刻这套系统，主要会改下面这些文件。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;1. &lt;code&gt;.github/ISSUE_TEMPLATE/friend-request.yml&lt;/code&gt;&lt;a href=&quot;#1-githubissue_templatefriend-requestyml&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;作用：定义“申请友链”表单。&lt;/p&gt;&lt;p&gt;这个文件负责告诉 GitHub：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;模板标题是什么&lt;/li&gt;
&lt;li&gt;默认标签是什么&lt;/li&gt;
&lt;li&gt;需要用户填写哪些字段&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;你至少要保留这些字段：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;网站名称&lt;/li&gt;
&lt;li&gt;网站链接&lt;/li&gt;
&lt;li&gt;友链页面 URL&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;描述和头像可以设为可选。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. &lt;code&gt;.github/workflows/friend-link-checker.yml&lt;/code&gt;&lt;a href=&quot;#2-githubworkflowsfriend-link-checkeryml&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;作用：定义自动化工作流。&lt;/p&gt;&lt;p&gt;它主要负责：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;监听 Issue / 评论事件&lt;/li&gt;
&lt;li&gt;安装 Node.js&lt;/li&gt;
&lt;li&gt;安装 pnpm&lt;/li&gt;
&lt;li&gt;安装项目依赖&lt;/li&gt;
&lt;li&gt;安装 Playwright Chromium&lt;/li&gt;
&lt;li&gt;调用处理脚本&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这个文件是系统的“总开关”。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. &lt;code&gt;.github/scripts/process-friend-request.cjs&lt;/code&gt;&lt;a href=&quot;#3-githubscriptsprocess-friend-requestcjs&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;作用：真正的核心业务逻辑。&lt;/p&gt;&lt;p&gt;它做了几乎所有关键工作：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;解析 Issue 内容&lt;/li&gt;
&lt;li&gt;校验 URL&lt;/li&gt;
&lt;li&gt;使用 Playwright 检查友链页&lt;/li&gt;
&lt;li&gt;解析现有 &lt;code&gt;friendsConfig.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;生成新的友链对象&lt;/li&gt;
&lt;li&gt;写回配置文件&lt;/li&gt;
&lt;li&gt;运行 Biome 格式化&lt;/li&gt;
&lt;li&gt;Git 提交与推送&lt;/li&gt;
&lt;li&gt;在 Issue 里评论成功/失败&lt;/li&gt;
&lt;li&gt;打标签和关闭 Issue&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;可以把它理解成这套系统的“应用层”。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. &lt;code&gt;src/config/friendsConfig.ts&lt;/code&gt;&lt;a href=&quot;#4-srcconfigfriendsconfigts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;作用：真正保存友链数据。&lt;/p&gt;&lt;p&gt;这个仓库不是写入 JSON，而是直接更新 TypeScript 配置文件里的数组：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;friendsConfig&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FriendLink&lt;/span&gt;&lt;span&gt;[] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;站点名&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;imgurl&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;头像地址&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;desc&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;描述&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;siteurl&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://example.com/&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;Blog&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;weight&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;enabled&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;issue_id&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;所以自动化脚本必须知道这个文件的格式，并按它的结构生成内容。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. &lt;code&gt;.github/workflows/biome.yml&lt;/code&gt;&lt;a href=&quot;#5-githubworkflowsbiomeyml&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;作用：保证自动写入后的文件仍然符合代码格式规范。&lt;/p&gt;&lt;p&gt;这一步非常重要，因为如果脚本写入的内容格式不稳定，CI 会红，自动化虽然成功写入了数据，但 PR / 提交质量检查会挂掉。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;四、完整执行链路&lt;a href=&quot;#四完整执行链路&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这里按一次“用户申请友链”的真实时间顺序讲。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 1 步：用户提交申请&lt;a href=&quot;#第-1-步用户提交申请&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;用户点击 GitHub Issue 模板，生成一条“友链申请” Issue。&lt;/p&gt;&lt;p&gt;Issue body 里会包含类似下面的结构：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;### 网站名称&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;My Blog&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;### 网站链接&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;### 友链页面 URL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com/friends&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;### 网站描述&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;记录技术与生活&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;### 网站头像 URL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://example.com/avatar.png&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这一步不需要额外后端，GitHub 自己就帮你把数据存下来了。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 2 步：Workflow 被触发&lt;a href=&quot;#第-2-步workflow-被触发&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;.github/workflows/friend-link-checker.yml&lt;/code&gt; 被触发。&lt;/p&gt;&lt;p&gt;它会在 Ubuntu Runner 上做这些准备工作：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;actions/checkout@v4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;actions/setup-node@v4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;uses&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;pnpm/action-setup@v4&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;pnpm install --frozen-lockfile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;pnpm exec playwright install --with-deps chromium&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这几步分别解决：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;拉代码&lt;/li&gt;
&lt;li&gt;提供 Node 环境&lt;/li&gt;
&lt;li&gt;提供 pnpm&lt;/li&gt;
&lt;li&gt;安装仓库依赖&lt;/li&gt;
&lt;li&gt;安装 Playwright 所需浏览器&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 3 步：脚本判断这是不是友链申请&lt;a href=&quot;#第-3-步脚本判断这是不是友链申请&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;process-friend-request.cjs&lt;/code&gt; 里，脚本首先读取：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;context.eventName&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;context.payload.action&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;context.payload.issue.body&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;然后判断：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;isFriendRequest&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;includes&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;### 网站名称&quot;&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;includes&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;### 网站链接&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果不是友链申请，直接跳过。&lt;/p&gt;&lt;p&gt;这样做的好处是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;这个 workflow 可以挂在 &lt;code&gt;issues&lt;/code&gt; 事件上&lt;/li&gt;
&lt;li&gt;但不会误处理其他普通 Issue&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 4 步：打“验证中”标签&lt;a href=&quot;#第-4-步打验证中标签&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果是新建或重新打开的 Issue，先打一个标签：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;github&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;rest&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;issues&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;addLabels&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;owner&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;repo&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;issue_number&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;issueNumber&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;labels&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;验证中&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这一步主要是用户体验优化。&lt;/p&gt;&lt;p&gt;访客一看标签，就知道系统已经开始处理，不需要站长人工回复“我看到了”。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 5 步：解析 Issue 表单&lt;a href=&quot;#第-5-步解析-issue-表单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;解析逻辑在 &lt;code&gt;parseIssueBody(body)&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;这个函数做了两件事：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;按 Markdown 标题识别字段&lt;/li&gt;
&lt;li&gt;容忍一些不同写法&lt;/li&gt;
&lt;/ol&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;ul&gt;
&lt;li&gt;模板稍微改字，不至于整套系统失效&lt;/li&gt;
&lt;li&gt;用户手动编辑 Issue 内容时，也更不容易把解析搞崩&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;解析结束后会得到一个统一结构：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;site_name&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;site_url&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;friend_page_url&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;site_desc&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;site_avatar&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;site_tag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 6 步：先校验 URL 合法性&lt;a href=&quot;#第-6-步先校验-url-合法性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在真正访问网站前，脚本先用 &lt;code&gt;new URL()&lt;/code&gt; 规范化地址：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;normalizeUrl&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;try&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;trim&lt;/span&gt;&lt;span&gt;()).&lt;/span&gt;&lt;span&gt;toString&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;} &lt;/span&gt;&lt;span&gt;catch&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果用户填了无效 URL，就直接回评，不继续往后跑。&lt;/p&gt;&lt;p&gt;这样能省掉很多无意义的浏览器启动和网络请求。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 7 步：用 Playwright 校验友链页面&lt;a href=&quot;#第-7-步用-playwright-校验友链页面&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;validateFriendPage(pageUrl)&lt;/code&gt; 是整个流程最关键的函数之一。&lt;/p&gt;&lt;p&gt;它主要做四件事：&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1. 启动无头 Chromium&lt;a href=&quot;#1-启动无头-chromium&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;browser&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chromium&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;launch&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;headless&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;--no-sandbox&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 打开用户提供的友链页&lt;a href=&quot;#2-打开用户提供的友链页&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;response&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;page&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;goto&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pageUrl&lt;/span&gt;&lt;span&gt;, {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;waitUntil&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;domcontentloaded&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;timeout&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;12000&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. 做失败重试&lt;a href=&quot;#3-做失败重试&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;脚本不是只试一次，而是会重试 3 次，中间等待 2 秒。&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;CDN 临时超时&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. 检查是否存在本站回链&lt;a href=&quot;#4-检查是否存在本站回链&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;脚本会同时抓：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;页面 HTML 内容&lt;/li&gt;
&lt;li&gt;页面所有 &lt;code&gt;a[href]&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;/ul&gt;&lt;p&gt;当前配置里是：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SITE_INFO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;fqzlr&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://fqzlr.com/&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;avatar&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;...&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;desc&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;...&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;于是脚本会重点寻找：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fqzlr.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fqzlr&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果没找到，就说明“对方站点没有把你的友链真正挂上去”，申请不会通过。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 8 步：失败时怎么处理&lt;a href=&quot;#第-8-步失败时怎么处理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果友链页打不开，或者没找到本站回链，脚本不会静默失败，而是自动在 Issue 里评论。&lt;/p&gt;&lt;p&gt;失败时会分成两类文案：&lt;/p&gt;&lt;section&gt;&lt;h3&gt;页面不可访问&lt;a href=&quot;#页面不可访问&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;会提示：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用户填写的友链页 URL&lt;/li&gt;
&lt;li&gt;实际访问后的 URL&lt;/li&gt;
&lt;li&gt;HTTP 状态码&lt;/li&gt;
&lt;li&gt;错误信息&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;页面可访问，但没找到本站友链&lt;a href=&quot;#页面可访问但没找到本站友链&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;会提示：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;没找到友链&lt;/li&gt;
&lt;li&gt;请先在对方站点添加本站信息&lt;/li&gt;
&lt;li&gt;附上本站名称、链接、头像、描述&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;同时还会给 Issue 打上：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;needs-update&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这样用户只要修完，再回评论，就能重新触发验证。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 9 步：通过后如何写入 &lt;code&gt;friendsConfig.ts&lt;/code&gt;&lt;a href=&quot;#第-9-步通过后如何写入-friendsconfigts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过验证后，系统会进入“写配置”阶段。&lt;/p&gt;&lt;p&gt;这一步主要由三个函数完成：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;parseFriendsConfig(content)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;renderFriend(friend, indent)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;updateFriendsConfig(repoRoot, data, issueId)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;为什么不是直接 &lt;code&gt;JSON.parse&lt;/code&gt;&lt;a href=&quot;#为什么不是直接-jsonparse&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;因为这个文件是 TypeScript，不是纯 JSON。&lt;/p&gt;&lt;p&gt;它长这样：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;friendsConfig&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FriendLink&lt;/span&gt;&lt;span&gt;[] &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;xxx&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;imgurl&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;xxx&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;desc&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;xxx&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;siteurl&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;xxx&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;Blog&quot;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;weight&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;enabled&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;issue_id&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;];&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;注意几点：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;属性名没加引号&lt;/li&gt;
&lt;li&gt;带类型标注&lt;/li&gt;
&lt;li&gt;可能带注释&lt;/li&gt;
&lt;li&gt;不是合法 JSON&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;所以脚本不能这样写：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;parse&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;match&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;]);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这也是之前自动化里一个会继续引发报错的坑。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;当前实现怎么做&lt;a href=&quot;#当前实现怎么做&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;现在的实现是：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;用正则先截出 &lt;code&gt;friendsConfig&lt;/code&gt; 数组主体&lt;/li&gt;
&lt;li&gt;再把每个对象块拆出来&lt;/li&gt;
&lt;li&gt;分别抽取：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;imgurl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;desc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;siteurl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weight&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;enabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;issue_id&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;构造成 JS 对象数组&lt;/li&gt;
&lt;li&gt;再渲染回 TypeScript 字面量&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;这是一种“结构感知但不依赖 TS AST”的轻量实现。&lt;/p&gt;&lt;p&gt;优点是简单、无额外编译依赖。&lt;br /&gt;
缺点是如果你未来把 &lt;code&gt;friendsConfig.ts&lt;/code&gt; 改成完全不同的格式，正则也得跟着改。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 10 步：新增还是覆盖，怎么判断&lt;a href=&quot;#第-10-步新增还是覆盖怎么判断&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;脚本会根据 &lt;code&gt;siteurl&lt;/code&gt; 判断这是不是已存在的友链：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;existingIndex&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;friends&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;findIndex&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;friend&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;trimTrailingSlash&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;friend&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;siteurl&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;===&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;normalizedUrl&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这里做了去尾斜杠处理：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://example.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://example.com/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;会被视为同一个站点。&lt;/p&gt;&lt;p&gt;如果已存在：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;覆盖旧项&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果不存在：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;push 新项&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这样可以避免重复添加同一个网站。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 11 步：为什么写完后还要再跑 Biome&lt;a href=&quot;#第-11-步为什么写完后还要再跑-biome&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是这次修复里非常关键的一步。&lt;/p&gt;&lt;p&gt;自动脚本虽然能写出结构正确的 TS，但不一定和仓库的 Biome 格式完全一致。&lt;br /&gt;
结果就是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;友链添加成功了&lt;/li&gt;
&lt;li&gt;但 &lt;code&gt;biome ci ./src&lt;/code&gt; 报 &lt;code&gt;File content differs from formatting output&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;为了解决这个问题，我在脚本里加了一层：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;formatFriendsConfig&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;repoRoot&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;它会调用仓库自己的 Biome 可执行文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;node_modules&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;bin&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;biome&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Terminal window&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;biome&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;format&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--write&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src/config/friendsConfig.ts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这样自动生成的提交就会和仓库 CI 的格式要求一致。&lt;/p&gt;&lt;p&gt;这是把“写入成功”升级成“写入成功且能过 CI”的关键。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 12 步：自动提交与推送&lt;a href=&quot;#第-12-步自动提交与推送&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通过验证并写入配置后，脚本会自动执行 Git 流程：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;github-actions[bot]&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;email&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;github-actions[bot]@users.noreply.github.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;&lt;span&gt;friendsConfig&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;ts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;&lt;span&gt;m&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;🤝 更新友链: 站点名&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;&lt;span&gt;rebase&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;default&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;origin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;HEAD&lt;/span&gt;&lt;span&gt;:&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;default-branch&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这里有两个值得注意的点。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1. 为什么先 &lt;code&gt;pull --rebase&lt;/code&gt;&lt;a href=&quot;#1-为什么先-pull---rebase&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;因为仓库有可能在 workflow 运行期间又被其他人提交了新内容。&lt;br /&gt;
如果直接 push，很容易出现：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;! [rejected] master -&amp;gt; master (fetch first)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;先 &lt;code&gt;pull --rebase&lt;/code&gt; 可以降低这种失败概率。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. 为什么不是强推&lt;a href=&quot;#2-为什么不是强推&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;自动化流程里不应该默认 &lt;code&gt;--force&lt;/code&gt;。&lt;br /&gt;
因为它是服务流程，不是人工兜底流程。强推会增加误覆盖风险。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 13 步：评论成功结果并关闭 Issue&lt;a href=&quot;#第-13-步评论成功结果并关闭-issue&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;自动提交成功后，脚本还会回到 GitHub 上收尾：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;评论“已成功添加友链”&lt;/li&gt;
&lt;li&gt;移除“验证中”&lt;/li&gt;
&lt;li&gt;移除 &lt;code&gt;needs-update&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;关闭 Issue&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;关闭时使用的是：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;github&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;rest&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;issues&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;update&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;owner&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;repo&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;issue_number&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;issueNumber&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;state&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;closed&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;state_reason&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;completed&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这里要注意：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;state&lt;/code&gt; 必须是 &lt;code&gt;&quot;closed&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不能写成 &lt;code&gt;&quot;completed&quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;completed&lt;/code&gt; 是 &lt;code&gt;state_reason&lt;/code&gt;，不是 &lt;code&gt;state&lt;/code&gt;&lt;/p&gt;&lt;p&gt;这也是这次修复里顺手纠正的一个 API 用法问题。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;五、这次真正需要改哪些代码&lt;a href=&quot;#五这次真正需要改哪些代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你也要照着搭一套，最少要改下面这些地方。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;1. 修改 Issue 模板&lt;a href=&quot;#1-修改-issue-模板&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.github/ISSUE_TEMPLATE/friend-request.yml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;你要根据自己的站点信息调整：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;模板标题&lt;/li&gt;
&lt;li&gt;默认标签&lt;/li&gt;
&lt;li&gt;表单字段&lt;/li&gt;
&lt;li&gt;“请先添加本站友链”的提示文案&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如果你站点不是博客，还可以加更多字段，比如：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;RSS 链接&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;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 修改站点常量&lt;a href=&quot;#2-修改站点常量&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;文件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.github/scripts/process-friend-request.cjs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重点修改这里：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SITE_INFO&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;fqzlr&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://fqzlr.com/&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;avatar&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;https://q1.qlogo.cn/g?b=qq&amp;amp;nk=20447289&amp;amp;s=640&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;desc&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;坐而言不如起而行.&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;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;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 修改友链数据文件路径&lt;a href=&quot;#3-修改友链数据文件路径&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你的友链配置不在当前路径，需要改这里：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FRIENDS_CONFIG_RELATIVE_PATH&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;src/config/friendsConfig.ts&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果你用的是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;friends.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data/friends.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src/content/friends.yaml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;那解析和写入逻辑也要跟着改。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 修改配置文件字段映射&lt;a href=&quot;#4-修改配置文件字段映射&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;当前脚本写入的是这个结构：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;imgurl&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;desc&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;siteurl&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;weight&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;enabled&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;issue_id&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果你的项目使用的是别的字段，比如：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;url&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;avatar&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;description&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;那就要同步调整：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;parseFriendsConfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;renderFriend&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;updateFriendsConfig&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这三个函数。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. 修改 Workflow 权限&lt;a href=&quot;#5-修改-workflow-权限&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;当前 workflow 需要：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;permissions&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;contents&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;write&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;issues&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;write&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;原因是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;contents: write&lt;/code&gt; 用来提交代码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;issues: write&lt;/code&gt; 用来评论、打标签、关闭 Issue&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;或者不能 push&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;6. 确保依赖安装方式和仓库一致&lt;a href=&quot;#6-确保依赖安装方式和仓库一致&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这次还修了一组很典型的 CI 坑。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;&lt;code&gt;pnpm/action-setup&lt;/code&gt; 版本冲突&lt;a href=&quot;#pnpmaction-setup-版本冲突&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;如果你的 &lt;code&gt;package.json&lt;/code&gt; 已经有：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;packageManager&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;pnpm@9.14.4&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;那么 workflow 里不要再写：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;with&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;version&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;否则会出现：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Multiple versions of pnpm specified&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Biome 命令找不到&lt;a href=&quot;#biome-命令找不到&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;不要依赖“全局有 biome 命令”。&lt;/p&gt;&lt;p&gt;更稳的方式是：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm install --frozen-lockfile&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pnpm exec biome ci ./src --reporter=github&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这样 CI 使用的一定是仓库锁定的 Biome 版本。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;六、为什么我把长逻辑挪出了 YAML&lt;a href=&quot;#六为什么我把长逻辑挪出了-yaml&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是这次改动里最值得保留的一个经验。&lt;/p&gt;&lt;p&gt;一开始如果把全部逻辑都写在：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;里面，会有这些真实问题：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;代码太长，维护困难&lt;/li&gt;
&lt;li&gt;YAML 和 JS 的双层语法混在一起，调试痛苦&lt;/li&gt;
&lt;li&gt;混入 &lt;code&gt;#&lt;/code&gt; 注释时会直接触发 &lt;code&gt;SyntaxError&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;编码、引号、缩进很容易造成“看起来没问题，运行就炸”&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;所以我最后采用的是：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Workflow 里只保留短入口&lt;/li&gt;
&lt;li&gt;真正逻辑写进 &lt;code&gt;.cjs&lt;/code&gt; 文件&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这也是我给所有 GitHub Actions 复杂逻辑的建议：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;YAML 负责调度，脚本文件负责业务。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;不要让 YAML 同时承担“编排器”和“应用层代码容器”的职责。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;七、这一套方案有哪些限制&lt;a href=&quot;#七这一套方案有哪些限制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这套实现已经够实用，但它不是没有边界。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;1. &lt;code&gt;friendsConfig.ts&lt;/code&gt; 解析依赖当前格式&lt;a href=&quot;#1-friendsconfigts-解析依赖当前格式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;现在是用正则和对象块拆分来处理 TS 配置。&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;/p&gt;&lt;p&gt;更稳的长期方案有两个：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;改成单独的 JSON / YAML 数据文件&lt;/li&gt;
&lt;li&gt;用 TypeScript AST 或 Babel AST 解析&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. Playwright 校验是“近似真实浏览器”，但不是 100% 万能&lt;a href=&quot;#2-playwright-校验是近似真实浏览器但不是-100-万能&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;比如：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;站点有地区限制&lt;/li&gt;
&lt;li&gt;站点会拦 GitHub Actions Runner IP&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;ul&gt;
&lt;li&gt;增加自定义等待策略&lt;/li&gt;
&lt;li&gt;支持指定 CSS 选择器&lt;/li&gt;
&lt;li&gt;支持截图附件&lt;/li&gt;
&lt;li&gt;把失败截图上传到 Issue 评论&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 自动 push 依赖仓库分支策略&lt;a href=&quot;#3-自动-push-依赖仓库分支策略&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你的默认分支启用了非常严格的限制，比如：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;不允许 GitHub Actions 写入&lt;/li&gt;
&lt;li&gt;必须走 PR 合并&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;ol&gt;
&lt;li&gt;自动创建分支&lt;/li&gt;
&lt;li&gt;自动提交到新分支&lt;/li&gt;
&lt;li&gt;自动开 PR&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;这样会更适合协作型仓库。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;八、如果你要从零搭建，推荐照这个顺序做&lt;a href=&quot;#八如果你要从零搭建推荐照这个顺序做&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你不是在改现有项目，而是从零上手，我推荐按下面顺序来。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 1 步：先确定友链数据存储格式&lt;a href=&quot;#第-1-步先确定友链数据存储格式&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先决定你最终要写入哪里：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;YAML&lt;/li&gt;
&lt;li&gt;TS 配置文件&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;这一步会直接决定后面脚本复杂度。&lt;/p&gt;&lt;p&gt;如果想最省事，我建议优先 JSON 或 YAML。&lt;br /&gt;
如果你已经有成熟的 TS 配置结构，也可以像 Firefly 这样继续沿用。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 2 步：先把 Issue 模板做好&lt;a href=&quot;#第-2-步先把-issue-模板做好&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;不要一上来就写脚本。&lt;br /&gt;
先确保用户提交的内容结构稳定。&lt;/p&gt;&lt;p&gt;因为自动化流程的第一输入，其实就是 Issue body。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 3 步：先做“只解析不写入”&lt;a href=&quot;#第-3-步先做只解析不写入&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;先写一个最小脚本，只做：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;读取 Issue 内容&lt;/li&gt;
&lt;li&gt;解析字段&lt;/li&gt;
&lt;li&gt;在日志里打印结果&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;这样先确认字段提取没问题，再往后接浏览器校验和写文件。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 4 步：接入 Playwright 校验&lt;a href=&quot;#第-4-步接入-playwright-校验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;等字段解析稳定后，再加：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;URL 检查&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;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;第 5 步：最后再接 Git 提交&lt;a href=&quot;#第-5-步最后再接-git-提交&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;真正危险的是自动提交阶段。&lt;br /&gt;
我建议把“解析”和“校验”完全确认稳定后，再开放：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;写文件&lt;/li&gt;
&lt;li&gt;git add&lt;/li&gt;
&lt;li&gt;git commit&lt;/li&gt;
&lt;li&gt;git push&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;否则一开始就自动 push，调试时很容易把仓库历史搞脏。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;九、这次踩过的坑，顺手给你避掉&lt;a href=&quot;#九这次踩过的坑顺手给你避掉&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这里把这次实际遇到的问题总结一下。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;1. &lt;code&gt;actions/github-script&lt;/code&gt; 里的 JS 不是 Shell&lt;a href=&quot;#1-actionsgithub-script-里的-js-不是-shell&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;script: |&lt;/code&gt; 里面只能写 JS，不能混进：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 注释&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;这种 Shell 风格注释。&lt;br /&gt;
否则会直接触发：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;SyntaxError: Invalid or unexpected token&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. TS 配置文件不能直接 &lt;code&gt;JSON.parse&lt;/code&gt;&lt;a href=&quot;#2-ts-配置文件不能直接-jsonparse&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;friendsConfig.ts&lt;/code&gt; 是 TypeScript 对象字面量，不是 JSON。&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;/ul&gt;&lt;p&gt;它就不可能直接被 &lt;code&gt;JSON.parse&lt;/code&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. 自动写入后的文件必须再格式化&lt;a href=&quot;#3-自动写入后的文件必须再格式化&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;脚本“能写进去”不等于“能过 CI”。&lt;/p&gt;&lt;p&gt;格式化是必须的，不是锦上添花。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. &lt;code&gt;pnpm/action-setup&lt;/code&gt; 和 &lt;code&gt;packageManager&lt;/code&gt; 不能双重声明版本&lt;a href=&quot;#4-pnpmaction-setup-和-packagemanager-不能双重声明版本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果 &lt;code&gt;package.json&lt;/code&gt; 已经写了：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;packageManager&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;pnpm@9.14.4&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;workflow 里就不要重复写 &lt;code&gt;version&lt;/code&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;5. Cloudflare 机器人会检查 &lt;code&gt;wrangler.jsonc&lt;/code&gt; 的 Worker 名称&lt;a href=&quot;#5-cloudflare-机器人会检查-wranglerjsonc-的-worker-名称&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你的项目名已经改成 &lt;code&gt;firefly&lt;/code&gt;，但 &lt;code&gt;wrangler.jsonc&lt;/code&gt; 里还是：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;fuwari&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;Cloudflare 的机器人 PR 会持续提醒你更新。&lt;/p&gt;&lt;p&gt;所以这次也顺手把：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;fuwari&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;改成了：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;firefly&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;十、我对这套方案的建议&lt;a href=&quot;#十我对这套方案的建议&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果你只是个人博客，这套方案已经够用，而且很优雅：&lt;/p&gt;&lt;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;它利用的其实都是 GitHub 现成能力：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Issue Forms&lt;/li&gt;
&lt;li&gt;Actions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;github-script&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;仓库写权限&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;再加上一个 Playwright，就能拼出相当完整的业务闭环。&lt;/p&gt;&lt;p&gt;如果你以后还想继续增强，我建议优先加这几项：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;失败时自动截图并贴到评论&lt;/li&gt;
&lt;li&gt;自动创建 PR，而不是直接推默认分支&lt;/li&gt;
&lt;li&gt;将友链数据迁移到单独的 JSON / YAML 文件&lt;/li&gt;
&lt;li&gt;支持白名单域名 / 黑名单域名&lt;/li&gt;
&lt;li&gt;支持自动去重、自动排序、自动补充默认头像&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;十一、本文对应的关键文件清单&lt;a href=&quot;#十一本文对应的关键文件清单&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;方便你对照仓库直接看：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.github/ISSUE_TEMPLATE/friend-request.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/friend-link-checker.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github/scripts/process-friend-request.cjs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src/config/friendsConfig.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.github/workflows/biome.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler.jsonc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;十二、结语&lt;a href=&quot;#十二结语&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这套“友链自助申请”方案本质上是把 GitHub 当成了一个轻量业务平台来用：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用 Issue 表单承接输入&lt;/li&gt;
&lt;li&gt;用 Actions 承接流程&lt;/li&gt;
&lt;li&gt;用脚本承接业务判断&lt;/li&gt;
&lt;li&gt;用仓库文件承接数据落地&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;没有后端，也能把流程做完整。&lt;br /&gt;
对个人博客和轻量站点来说，这种思路非常值。&lt;/p&gt;&lt;p&gt;如果你正在做自己的博客系统，或者想把原本人工处理的流程逐步自动化，我很推荐从这种“基于 Git 仓库自身能力”的方案开始搭。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>悬溺一响，他把真心说出口，她却轻轻放下了</title><link>https://blogs.olxc.art/posts/wechat-night-songs/06-xuanni-zhenxin/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/06-xuanni-zhenxin/</guid><description>喜欢一个人很容易，心动、靠近、暧昧，都可以叫喜欢。可真心去爱一个人很难，因为爱不是嘴上说说，而是记得、看见、行动，是把一个人放进生活里。</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;悬溺一响，他把真心说出口，她却轻轻放下了&lt;a href=&quot;#悬溺一响他把真心说出口她却轻轻放下了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：悬溺一响，纯爱登场 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;你的爱，刚好落在一个也愿意爱你的人心里。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>先说谎的人，后来连真心都像假的</title><link>https://blogs.olxc.art/posts/wechat-night-songs/07-xian-shuohuang-de-ren/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/07-xian-shuohuang-de-ren/</guid><description>“被爱的那个人是我，先说谎那个人是我。”后来她才明白，最痛的不是一个人不爱你。而是你曾经那么认真地相信过他。</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;先说谎的人，后来连真心都像假的&lt;a href=&quot;#先说谎的人后来连真心都像假的&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：在感情里先说谎的人，最后一定会输得一败涂地 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>明明就还爱，为啥最后还是散了</title><link>https://blogs.olxc.art/posts/wechat-night-songs/08-mingming-huan-ai/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/08-mingming-huan-ai/</guid><description>以前听周杰伦《明明就》，总觉得它写的是吃醋，是不甘，是一个人明明还在意，却偏偏说不出口。</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;明明就还爱，为啥最后还是散了&lt;a href=&quot;#明明就还爱为啥最后还是散了&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：明明就很喜欢，但最后还是走散了 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>那年夏天，我把《嗜好》唱给她听，却没敢说喜欢她</title><link>https://blogs.olxc.art/posts/wechat-night-songs/09-shihao-xiari/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/09-shihao-xiari/</guid><description>“治不好，想念你的嗜好，再多时光，都徒劳。”第一次听到《嗜好》这句歌词的时候，我突然想起一个男生。</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;那年夏天，我把《嗜好》唱给她听，却没敢说喜欢她&lt;a href=&quot;#那年夏天我把嗜好唱给她听却没敢说喜欢她&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：后来对你喜欢成为一种嗜好 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;原来你最遗憾的，不是她没有喜欢你。&lt;/p&gt;&lt;p&gt;而是你连让她知道的勇气，都没有给过自己。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>怎么使用obsidian 来编写 astro 博客</title><link>https://blogs.olxc.art/posts/blog/obsidian-astro/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/blog/obsidian-astro/</guid><description>本教程专为「Obsidian 撰写笔记」+「Astro Composer 插件转换笔记为 Astro 博客内容」+「Git 插件同步到 GitHub」的 workflow 设计，全程无需复杂命令行，纯 Obsidian 内操作（少量 GitHub 后台配置），适合新手快速上手，解决“Obsidian 写文→Astro 发布→GitHub 托管”的全流程同步问题。</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Obsidian + Astro Composer + Git 插件 同步 Astro 博客到 GitHub 完整教程&lt;/p&gt;
&lt;p&gt;前置前提（必做）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;已安装 Obsidian 客户端，且启用「第三方插件」（设置 → 第三方插件 → 关闭“安全模式”）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已创建 Astro 博客项目（本地需有 Astro 项目文件夹，可通过 &lt;code&gt;pnpm create astro@latest&lt;/code&gt; 快速创建，选择 blog 模板即可），并熟悉 Astro 项目的 &lt;code&gt;src/content&lt;/code&gt; 目录（用于存放博客文章）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已注册 GitHub 账号，且创建了用于托管 Astro 博客的仓库（建议仓库名与 Astro 博客项目名一致，若要部署 GitHub Pages，仓库名可设为 &lt;code&gt;用户名.github.io&lt;/code&gt;）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;已安装所需插件：Astro Composer（Obsidian 插件）、Git（Obsidian 插件，常用 Obsidian Git 或 Git Vault/Folder Sync，本教程以 Obsidian Git 为例，适配多数用户需求）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;section&gt;&lt;h2&gt;第一步：安装并配置 Astro Composer 插件（核心：Obsidian 笔记转 Astro 内容）&lt;a href=&quot;#第一步安装并配置-astro-composer-插件核心obsidian-笔记转-astro-内容&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Astro Composer 是 Obsidian 与 Astro 博客无缝衔接的关键插件，可自动将 Obsidian 笔记转换为 Astro 支持的 Markdown 格式（含自动处理链接、标准化属性、管理草稿等），目前该插件暂未上架 Obsidian 社区插件库，需通过 BRAT 插件安装或手动安装，推荐 BRAT 安装（更便捷，支持自动更新）。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1.1 安装 Astro Composer 插件&lt;a href=&quot;#11-安装-astro-composer-插件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;先安装 BRAT 插件：Obsidian 内 → 设置 → 第三方插件 → 浏览社区插件 → 搜索「BRAT」→ 安装并启用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;启用 BRAT 后，打开 BRAT 设置 → 点击「Add a beta plugin」→ 输入 Astro Composer 插件仓库地址（&lt;code&gt;https://github.com/astro-modular/astro-composer&lt;/code&gt;）→ 点击「Add Plugin」，等待安装完成后启用插件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.2 配置 Astro Composer 插件&lt;a href=&quot;#12-配置-astro-composer-插件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;配置核心目的：让插件知道「Obsidian 笔记存放位置」和「Astro 项目的内容目录位置」，实现笔记自动转换后同步到 Astro 项目中。&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开 Obsidian 设置 → 找到「Astro Composer」插件，进入配置页面。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://tu.682000.xyz/file/blog/wenzhang/1776517996753_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://tu.682000.xyz/file/blog/wenzhang/1776518008379_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://tu.682000.xyz/file/blog/wenzhang/1776518031103_image.png&quot; alt=&quot;image.png&quot; /&gt;&lt;figcaption&gt;image.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;核心配置项（必设）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Posts Folder：设置 Obsidian 中用于存放博客文章的文件夹（例如 &lt;code&gt;Blog/Posts&lt;/code&gt;），后续所有要发布的笔记都放在这个文件夹下。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Astro Content Path：设置本地 Astro 项目的&lt;code&gt;src/content&lt;/code&gt; 目录路径（例如 &lt;code&gt;D:/MyBlog/astro-blog/src/content&lt;/code&gt;），插件会自动将转换后的笔记同步到这个目录。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Link Base Path：设置链接基准路径，填写 Astro 博客的文章访问路径（例如 &lt;code&gt;/blog&lt;/code&gt;），插件会自动将 Obsidian 内部链接（ wikilinks 或 Markdown 内部链接）转换为 Astro 友好的链接格式，避免发布后链接失效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creation Mode：选择文章存储结构，推荐「Folder-based with index.md」（每个文章对应一个文件夹，内部包含 index.md 文件），适配多数 Astro 博客模板。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Draft Management：启用「Underscore Prefix」，插件会为草稿笔记添加下划线前缀（例如 &lt;code&gt;_my-draft.md&lt;/code&gt;），Astro 会自动隐藏这些草稿，避免误发布。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可选配置（优化体验）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Property Standardization：设置笔记属性模板（例如标题、日期、标签等），启用「Standardize Properties」命令，可自动为笔记添加缺失的属性，保持 Astro 文章格式统一。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rename Post Command：启用后，修改笔记的「title」属性，插件会自动将笔记文件名/文件夹名更新为 kebab-case 格式（例如“我的第一篇博客”→「my-first-blog」），适配 Astro 的路由规则。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置完成后，点击「Save Settings」，重启插件（Obsidian 重启或禁用再启用），确保配置生效。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>“求你别离开我”这句话，他到最后都没敢说</title><link>https://blogs.olxc.art/posts/wechat-night-songs/10-bie-likai-wo/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/wechat-night-songs/10-bie-likai-wo/</guid><description>“从不主动示弱。”听到这句的时候，我突然想起一个男生。他不是不爱她。相反，他很爱。可他这辈子最失败的地方，就是太会嘴硬。</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;“求你别离开我”这句话，他到最后都没敢说&lt;a href=&quot;#求你别离开我这句话他到最后都没敢说&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;音频：求你别离开我，后来也一直没说出口 / 春风不语人&lt;/p&gt;&lt;/blockquote&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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;p&gt;原文发布于微信公众号合集《每晚一首歌，聊点成年人不说的话》。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Simple Guides for Mizuki</title><link>https://blogs.olxc.art/posts/guide/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/guide/</guid><description>How to use this blog template.</description><pubDate>Mon, 01 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This blog template is built with &lt;a href=&quot;https://astro.build/&quot; target=&quot;_blank&quot;&gt;Astro&lt;/a&gt;. For the things that are not mentioned in this guide, you may find the answers in the &lt;a href=&quot;https://docs.astro.build/&quot; target=&quot;_blank&quot;&gt;Astro Docs&lt;/a&gt;.&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;Front-matter of Posts&lt;a href=&quot;#front-matter-of-posts&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;My First Blog Post&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2023-09-09&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;This is the first post of my new Astro blog.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;image&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;./cover.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tags&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;Foo&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;Bar&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;category&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Front-end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;draft&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attribute&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The title of the post.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The date the post was published.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;pinned&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Whether this post is pinned to the top of the post list.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;priority&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The priority of the pinned post. Smaller value means higher priority (0, 1, 2…).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;&lt;td&gt;A short description of the post. Displayed on index page.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The cover image path of the post.&lt;br /&gt;1. Start with &lt;code&gt;http://&lt;/code&gt; or &lt;code&gt;https://&lt;/code&gt;: Use web image&lt;br /&gt;2. Start with &lt;code&gt;/&lt;/code&gt;: For image in &lt;code&gt;public&lt;/code&gt; dir&lt;br /&gt;3. With none of the prefixes: Relative to the markdown file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The tags of the post.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The category of the post.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;licenseName&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The license name for the post content.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;author&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The author of the post.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;sourceLink&lt;/code&gt;&lt;/td&gt;&lt;td&gt;The source link or reference for the post content.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;&lt;td&gt;If this post is still a draft, which won’t be displayed.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Where to Place the Post Files&lt;a href=&quot;#where-to-place-the-post-files&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Your post files should be placed in &lt;code&gt;src/content/posts/&lt;/code&gt; directory. You can also create sub-directories to better organize your posts and assets.&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;src/content/posts/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── post-1.md&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── post-2/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;├── cover.webp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;└── index.md&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>Encrypted Post</title><link>https://blogs.olxc.art/posts/encrypted-post/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/encrypted-post/</guid><description>This is an article for testing the page encryption feature</description><pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate><content:encoded>本文已加密保护，请访问网站查看。</content:encoded></item><item><title>Include Video in the Posts</title><link>https://blogs.olxc.art/posts/video/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/video/</guid><description>This post demonstrates how to include embedded video in a blog post.</description><pubDate>Mon, 01 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just copy the embed code from YouTube or other platforms, and paste it in the markdown file.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Include Video in the Post&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;published&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2023-10-19&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;// ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;iframe width=&quot;100%&quot; height=&quot;468&quot; src=&quot;https://www.youtube.com/embed/5gIf0_xpFPI?si=N1WTorLKL0uwLsU_&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;section&gt;&lt;h2&gt;YouTube&lt;a href=&quot;#youtube&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Bilibili&lt;a href=&quot;#bilibili&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt; &lt;/section&gt;</content:encoded></item><item><title>MDX 格式文章示例</title><link>https://blogs.olxc.art/posts/mdx-example/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/mdx-example/</guid><description>这是一个 MDX 格式的示例文章，展示了如何在 Markdown 中使用 JSX。</description><pubDate>Fri, 02 Jan 1970 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Tip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/CuteLeaf/Firefly&quot; target=&quot;_blank&quot;&gt;Firefly&lt;/a&gt; 支持 &lt;code&gt;MDX&lt;/code&gt; 和 &lt;code&gt;Markdown&lt;/code&gt; 两种类型的文章，你可以在文章中混合使用两种格式，如果没有特别复杂内容和需求，推荐使用 Markdown 格式就够了。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h2&gt;Markdown 和 MDX 的区别&lt;a href=&quot;#markdown-和-mdx-的区别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Markdown (MD) 是一种轻量级标记语言，允许用户使用纯文本格式编写文档，然后将其转换为格式化的HTML。它因其简洁易用的语法而广受欢迎，特别适合编写文档和博客文章。&lt;/li&gt;
&lt;li&gt;MDX 是一种扩展了 Markdown 语法的格式，允许在 Markdown 文档中无缝地插入 JSX 代码。通过 MDX，用户可以在文档中嵌入 React 组件，从而实现更丰富的交互性和动态性。&lt;/li&gt;
&lt;/ul&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;特性&lt;/th&gt;&lt;th&gt;Markdown&lt;/th&gt;&lt;th&gt;MDX&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;基础语法&lt;/td&gt;&lt;td&gt;支持 (CommonMark)&lt;/td&gt;&lt;td&gt;支持 (CommonMark)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HTML 标签&lt;/td&gt;&lt;td&gt;支持&lt;/td&gt;&lt;td&gt;支持 (作为 JSX)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;组件导入&lt;/td&gt;&lt;td&gt;不支持&lt;/td&gt;&lt;td&gt;支持 (import)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;动态数据&lt;/td&gt;&lt;td&gt;不支持&lt;/td&gt;&lt;td&gt;支持 (JS 表达式)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;样式定制&lt;/td&gt;&lt;td&gt;有限 (class/style)&lt;/td&gt;&lt;td&gt;灵活 (className/CSS-in-JS)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;使用组件&lt;a href=&quot;#使用组件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是一个图标组件：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;import { Icon } from &apos;astro-icon/components&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;div class=&quot;flex items-center gap-2 my-4&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;Icon name=&quot;fa7-solid:rocket&quot; class=&quot;text-4xl text-red-500&quot; /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;span&amp;gt;火箭发射！&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;     &lt;span&gt;火箭发射！&lt;/span&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;使用 JSX&lt;a href=&quot;#使用-jsx&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;你也可以直接写 HTML/JSX：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;div className=&quot;p-4 bg-blue-100 dark:bg-blue-900 rounded-lg my-4&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;这是一个自定义样式的 div 块，使用了 Tailwind CSS 类。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;这是一个自定义样式的 div 块，使用了 Tailwind CSS 类。&lt;/p&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;简单的变量导出&lt;a href=&quot;#简单的变量导出&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export const year = new Date().getFullYear()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;今年是 {year} 年。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;今年是 2026 年。&lt;/p&gt;&lt;p&gt;更多信息，请查看 &lt;a href=&quot;https://mdxjs.com/&quot; target=&quot;_blank&quot;&gt;MDX 文档&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Markdown 扩展功能</title><link>https://blogs.olxc.art/posts/markdown-extended/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/markdown-extended/</guid><description>了解 Firefly 中的 Markdown 功能</description><pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;GitHub 仓库卡片&lt;a href=&quot;#github-仓库卡片&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;您可以添加链接到 GitHub 仓库的动态卡片，在页面加载时，仓库信息会从 GitHub API 获取。&lt;/p&gt;&lt;a href=&quot;https://github.com/CuteLeaf/Firefly&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;CuteLeaf&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;Firefly&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Waiting for api.github.com...&lt;/div&gt;&lt;div&gt;&lt;div&gt;00K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;div&gt;0K&lt;/div&gt;&lt;span&gt;Waiting...&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;&lt;p&gt;使用代码 &lt;code&gt;::github{repo=&quot;CuteLeaf/Firefly&quot;}&lt;/code&gt; 创建 GitHub 仓库卡片。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;::github{repo=&quot;CuteLeaf/Firefly&quot;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;提醒框(Admonitions)配置&lt;a href=&quot;#提醒框admonitions配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Firefly 采用了 &lt;a href=&quot;https://github.com/lin-stephanie/rehype-callouts&quot; target=&quot;_blank&quot;&gt;rehype-callouts&lt;/a&gt; 插件，支持了四种风格的提醒框主题：&lt;code&gt;GitHub&lt;/code&gt;、&lt;code&gt;Obsidian&lt;/code&gt;、&lt;code&gt;VitePress&lt;/code&gt; 和 &lt;code&gt;Docusaurus&lt;/code&gt;。您可以在 &lt;code&gt;src/config/siteConfig.ts&lt;/code&gt; 中进行配置：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;src/config/siteConfig.ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;siteConfig&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;SiteConfig&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;rehypeCallouts&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;// 选项: &quot;github&quot; | &quot;obsidian&quot; | &quot;vitepress&quot; | &quot;docusaurus&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;theme&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;github&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;注意：&lt;strong&gt;更改配置后需要重启开发服务器才能生效。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以下是各个主题支持的类型列表，每个主题风格和语法不同，可根据喜好选择。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1. GitHub 主题风格&lt;a href=&quot;#1-github-主题风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;这是 GitHub 官方支持的 5 种基本类型。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;GitHub&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1086&quot; src=&quot;/_astro/github.urcbElKG_Z1bC9wS.webp&quot; srcset=&quot;/_astro/github.urcbElKG_pVFO3.webp 640w, /_astro/github.urcbElKG_Zogsaw.webp 750w, /_astro/github.urcbElKG_Z1vPnOl.webp 828w, /_astro/github.urcbElKG_ZdNO71.webp 1080w, /_astro/github.urcbElKG_2lIC61.webp 1280w, /_astro/github.urcbElKG_Z2wFGcQ.webp 1668w, /_astro/github.urcbElKG_22xd9l.webp 2048w, /_astro/github.urcbElKG_Z1bC9wS.webp 2144w&quot; /&gt;&lt;figcaption&gt;GitHub&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;基本语法&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!NOTE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; NOTE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 突出显示用户应该考虑的信息。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!TIP&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; TIP&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 可选信息，帮助用户更成功。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!IMPORTANT&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; IMPORTANT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 用户成功所必需的关键信息。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!WARNING&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; WARNING&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 关键内容，需要立即注意。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!CAUTION&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; CAUTION&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 行动的负面潜在后果。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!NOTE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; 自定义标题&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 这是一个带有自定义标题的示例。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;2. Obsidian 主题风格&lt;a href=&quot;#2-obsidian-主题风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://obsidian.md/&quot; target=&quot;_blank&quot;&gt;Obsidian&lt;/a&gt; 风格支持非常丰富的类型和别名。&lt;/p&gt;
点击展开 Obsidian 语法列表&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!NOTE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; NOTE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 通用的笔记块。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!ABSTRACT&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; ABSTRACT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 文章的摘要。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!SUMMARY&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; SUMMARY&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 文章的总结（同 Abstract）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!TLDR&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; TLDR&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 太长不看（同 Abstract）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!INFO&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; INFO&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 提供额外信息。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!TODO&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; TODO&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 需要完成的事项。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!TIP&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; TIP&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 实用技巧或提示。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!HINT&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; HINT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 暗示（同 Tip）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!IMPORTANT&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; IMPORTANT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 重要信息（Obsidian 风格通常使用类似的图标）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!SUCCESS&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; SUCCESS&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 操作成功。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!CHECK&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; CHECK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 检查通过（同 Success）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!DONE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; DONE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 已完成（同 Success）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!QUESTION&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; QUESTION&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 提出问题。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!HELP&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; HELP&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 寻求帮助（同 Question）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!FAQ&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; FAQ&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 常见问题（同 Question）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!WARNING&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; WARNING&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 警告信息。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!CAUTION&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; CAUTION&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 注意事项（同 Warning）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!ATTENTION&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; ATTENTION&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 引起注意（同 Warning）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!FAILURE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; FAILURE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 操作失败。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;57&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;58&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!FAIL&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; FAIL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;59&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 失败（同 Failure）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;60&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;61&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!MISSING&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; MISSING&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;62&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 缺失内容（同 Failure）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;63&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;64&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!DANGER&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; DANGER&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;65&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 危险操作警告。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;66&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;67&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!ERROR&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; ERROR&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;68&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 错误信息（同 Danger）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;69&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;70&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!BUG&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; BUG&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;71&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 报告软件缺陷。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;72&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;73&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!EXAMPLE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; EXAMPLE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;74&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 展示一个例子。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;75&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;76&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!QUOTE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; QUOTE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;77&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 引用一段话。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;78&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;79&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!CITE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; CITE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;80&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 引证（同 Quote）。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;81&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;82&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!NOTE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; 自定义标题&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;83&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 这是一个带有自定义标题的示例。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Obsidian&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1320&quot; src=&quot;/_astro/obsidian.Cwb2iYzd_1I7Wom.webp&quot; srcset=&quot;/_astro/obsidian.Cwb2iYzd_Ef4jX.webp 640w, /_astro/obsidian.Cwb2iYzd_Z21Lznp.webp 750w, /_astro/obsidian.Cwb2iYzd_2fRye1.webp 828w, /_astro/obsidian.Cwb2iYzd_1T2EQt.webp 1080w, /_astro/obsidian.Cwb2iYzd_17K54.webp 1280w, /_astro/obsidian.Cwb2iYzd_14jgEg.webp 1668w, /_astro/obsidian.Cwb2iYzd_TyKGG.webp 2048w, /_astro/obsidian.Cwb2iYzd_1I7Wom.webp 2144w&quot; /&gt;&lt;figcaption&gt;Obsidian&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;3. VitePress 主题风格&lt;a href=&quot;#3-vitepress-主题风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://vitepress.dev/&quot; target=&quot;_blank&quot;&gt;VitePress&lt;/a&gt; 风格提供了一套现代化的、扁平的默认样式。目前仅包含与 GitHub 一致的 &lt;strong&gt;5 种&lt;/strong&gt; 基础类型。&lt;/p&gt;
点击展开 VitePress 语法列表&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!NOTE&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; NOTE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 对应 GitHub 的 Note。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!TIP&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; TIP&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 对应 GitHub 的 Tip。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!IMPORTANT&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; IMPORTANT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 对应 GitHub 的 Important。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!WARNING&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; WARNING&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 对应 GitHub 的 Warning。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!CAUTION&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; CAUTION&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 对应 GitHub 的 Caution。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;!TIP&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; 自定义标题&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; VitePress 风格同样支持自定义标题。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;VitePress&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1318&quot; src=&quot;/_astro/vitepress.D2YnjBWE_Z1rUl1H.webp&quot; srcset=&quot;/_astro/vitepress.D2YnjBWE_a8rfo.webp 640w, /_astro/vitepress.D2YnjBWE_1dRCyH.webp 750w, /_astro/vitepress.D2YnjBWE_25m85l.webp 828w, /_astro/vitepress.D2YnjBWE_ZhpWJ1.webp 1080w, /_astro/vitepress.D2YnjBWE_j03hn.webp 1280w, /_astro/vitepress.D2YnjBWE_Z1AHxbA.webp 1668w, /_astro/vitepress.D2YnjBWE_ZkwCfV.webp 2048w, /_astro/vitepress.D2YnjBWE_Z1rUl1H.webp 2144w&quot; /&gt;&lt;figcaption&gt;VitePress&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4. Docusaurus 主题风格&lt;a href=&quot;#4-docusaurus-主题风格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://docusaurus.io/docs/markdown-features/admonitions&quot; target=&quot;_blank&quot;&gt;Docusaurus&lt;/a&gt; 风格提供了一套现代化的提醒框样式，支持 5 种类型。&lt;/p&gt;
点击展开 Docusaurus 语法列表 &lt;p&gt;支持以下类型的提醒框：&lt;code&gt;note&lt;/code&gt; &lt;code&gt;tip&lt;/code&gt; &lt;code&gt;info&lt;/code&gt; &lt;code&gt;warning&lt;/code&gt; &lt;code&gt;danger&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::note&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;突出显示用户应该考虑的信息，即使在快速浏览时也是如此。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::tip&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;可选信息，帮助用户更成功。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::info&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;一般信息。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::warning&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;由于潜在风险需要用户立即注意的关键内容。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::danger&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;行动的负面潜在后果。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::tip&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;自定义标题&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;可选信息，帮助用户更成功。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;:::&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img alt=&quot;Docusaurus&quot; loading=&quot;lazy&quot; width=&quot;2158&quot; height=&quot;1394&quot; src=&quot;/_astro/docusaurus.Cu-On_k2_Zy4rHX.webp&quot; srcset=&quot;/_astro/docusaurus.Cu-On_k2_A3P6i.webp 640w, /_astro/docusaurus.Cu-On_k2_i1OyB.webp 750w, /_astro/docusaurus.Cu-On_k2_ZBrcF8.webp 828w, /_astro/docusaurus.Cu-On_k2_Z2pj9ID.webp 1080w, /_astro/docusaurus.Cu-On_k2_Z2emdPa.webp 1280w, /_astro/docusaurus.Cu-On_k2_1fGnf0.webp 1668w, /_astro/docusaurus.Cu-On_k2_slBNo.webp 2048w, /_astro/docusaurus.Cu-On_k2_Zy4rHX.webp 2158w&quot; /&gt;&lt;figcaption&gt;Docusaurus&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;剧透&lt;a href=&quot;#剧透&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;您可以为文本添加剧透。文本也支持 &lt;strong&gt;Markdown&lt;/strong&gt; 语法。&lt;/p&gt;&lt;p&gt;内容 被隐藏了 &lt;strong&gt;哈哈&lt;/strong&gt;！&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;内容 :spoiler[被隐藏了 &lt;/span&gt;&lt;span&gt;**哈哈**&lt;/span&gt;&lt;span&gt;]！&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;图片画廊网格 (Image Grid)&lt;a href=&quot;#图片画廊网格-image-grid&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;您可以使用 &lt;code&gt;[grid]&lt;/code&gt; 和 &lt;code&gt;[/grid]&lt;/code&gt; 标签将多张图片纵向并排展示。这对于展示照片画廊或对比图非常有用。系统会自动根据包裹在其中的图片数量（最多支持并排展示4张）以响应式网格进行布局。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;自动补齐图片高度：&lt;/strong&gt; 同一排中如果有高度、大小或者比例不一的图片，会像「九宫格画廊相册」一样自动撑满。较短或不协调的图片会自动使用 object-cover 进行完美中心裁剪补充视野。图片边框水平彻底对齐无缝隙，但被裁剪后，只有点击图片通过灯箱才能查看完整图片，所以建议尽量避免使用长宽比例不一致的图片在同一排中。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;图注恒定底端对齐：&lt;/strong&gt; 不论上面的图片长宽如何变化，在同一行的所有图像解释文字（图注）都会对标到一条完美的水平基线上了。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;img alt=&quot;示例图片一&quot; loading=&quot;lazy&quot; width=&quot;3328&quot; height=&quot;1872&quot; src=&quot;/_astro/firefly1.CZCuCN4V_1dgNYg.webp&quot; srcset=&quot;/_astro/firefly1.CZCuCN4V_Z1oImC9.webp 640w, /_astro/firefly1.CZCuCN4V_1i57aM.webp 750w, /_astro/firefly1.CZCuCN4V_3bOMV.webp 828w, /_astro/firefly1.CZCuCN4V_ZFy9e2.webp 1080w, /_astro/firefly1.CZCuCN4V_TW7id.webp 1280w, /_astro/firefly1.CZCuCN4V_GbVq.webp 1668w, /_astro/firefly1.CZCuCN4V_MiHUH.webp 2048w, /_astro/firefly1.CZCuCN4V_FJNnX.webp 2560w, /_astro/firefly1.CZCuCN4V_1dgNYg.webp 3328w&quot; /&gt;&lt;figcaption&gt;示例图片一&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure&gt;&lt;img alt=&quot;示例图片二&quot; loading=&quot;lazy&quot; width=&quot;4096&quot; height=&quot;2212&quot; src=&quot;/_astro/firefly2.dxmXG905_ZyJm5m.webp&quot; srcset=&quot;/_astro/firefly2.dxmXG905_VG1L6.webp 640w, /_astro/firefly2.dxmXG905_ZgGmKx.webp 750w, /_astro/firefly2.dxmXG905_Z2qDwK8.webp 828w, /_astro/firefly2.dxmXG905_Z1AO6EE.webp 1080w, /_astro/firefly2.dxmXG905_2m5ePB.webp 1280w, /_astro/firefly2.dxmXG905_mURyM.webp 1668w, /_astro/firefly2.dxmXG905_ZIlkOV.webp 2048w, /_astro/firefly2.dxmXG905_Z28Akm.webp 2560w, /_astro/firefly2.dxmXG905_ZyJm5m.webp 4096w&quot; /&gt;&lt;figcaption&gt;示例图片二&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure&gt;&lt;img alt=&quot;示例图片二&quot; loading=&quot;lazy&quot; width=&quot;3840&quot; height=&quot;2160&quot; src=&quot;/_astro/firefly3.CGzFXcxi_Z1Lz6q8.webp&quot; srcset=&quot;/_astro/firefly3.CGzFXcxi_ZmVxR3.webp 640w, /_astro/firefly3.CGzFXcxi_2jQUUS.webp 750w, /_astro/firefly3.CGzFXcxi_14XDy2.webp 828w, /_astro/firefly3.CGzFXcxi_Hxghp.webp 1080w, /_astro/firefly3.CGzFXcxi_2j3wNE.webp 1280w, /_astro/firefly3.CGzFXcxi_1oMBrR.webp 1668w, /_astro/firefly3.CGzFXcxi_2bp8r9.webp 2048w, /_astro/firefly3.CGzFXcxi_24QdTp.webp 2560w, /_astro/firefly3.CGzFXcxi_Z1Lz6q8.webp 3840w&quot; /&gt;&lt;figcaption&gt;示例图片二&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;基本语法&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;grid&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;![&lt;/span&gt;&lt;span&gt;示例图片一&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;./images/firefly1.avif&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;![&lt;/span&gt;&lt;span&gt;示例图片二&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;./images/firefly2.avif&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;![&lt;/span&gt;&lt;span&gt;示例图片二&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;./images/firefly3.avif&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;/grid&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;</content:encoded></item><item><title>Markdown Mermaid 图表</title><link>https://blogs.olxc.art/posts/markdown-mermaid/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/markdown-mermaid/</guid><description>一个包含 Mermaid 的 Markdown 博客文章简单示例。</description><pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Markdown 中 Mermaid 图表完整指南&lt;a href=&quot;#markdown-中-mermaid-图表完整指南&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文演示如何在 Markdown 文档中使用 Mermaid 创建各种复杂图表，包括流程图、时序图、甘特图、类图和状态图。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;流程图示例&lt;a href=&quot;#流程图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;流程图非常适合表示流程或算法步骤。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;graph TD
    A[开始] --&amp;gt; B{条件检查}
    B --&amp;gt;|是| C[处理步骤 1]
    B --&amp;gt;|否| D[处理步骤 2]
    C --&amp;gt; E[子过程]
    D --&amp;gt; E
    subgraph E [子过程详情]
        E1[子步骤 1] --&amp;gt; E2[子步骤 2]
        E2 --&amp;gt; E3[子步骤 3]
    end
    E --&amp;gt; F{另一个决策}
    F --&amp;gt;|选项 1| G[结果 1]
    F --&amp;gt;|选项 2| H[结果 2]
    F --&amp;gt;|选项 3| I[结果 3]
    G --&amp;gt; J[结束]
    H --&amp;gt; J
    I --&amp;gt; J&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;时序图示例&lt;a href=&quot;#时序图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;时序图显示对象之间随时间的交互。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;sequenceDiagram
    participant User as 用户
    participant WebApp as 网页应用
    participant Server as 服务器
    participant Database as 数据库

    User-&amp;gt;&amp;gt;WebApp: 提交登录请求
    WebApp-&amp;gt;&amp;gt;Server: 发送认证请求
    Server-&amp;gt;&amp;gt;Database: 查询用户凭据
    Database--&amp;gt;&amp;gt;Server: 返回用户数据
    Server--&amp;gt;&amp;gt;WebApp: 返回认证结果
    
    alt 认证成功
        WebApp-&amp;gt;&amp;gt;User: 显示欢迎页面
        WebApp-&amp;gt;&amp;gt;Server: 请求用户数据
        Server-&amp;gt;&amp;gt;Database: 获取用户偏好
        Database--&amp;gt;&amp;gt;Server: 返回偏好设置
        Server--&amp;gt;&amp;gt;WebApp: 返回用户数据
        WebApp-&amp;gt;&amp;gt;User: 加载个性化界面
    else 认证失败
        WebApp-&amp;gt;&amp;gt;User: 显示错误消息
        WebApp-&amp;gt;&amp;gt;User: 提示重新输入
    end&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;甘特图示例&lt;a href=&quot;#甘特图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;甘特图非常适合显示项目进度和时间线。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;gantt
    title 网站开发项目时间线
    dateFormat  YYYY-MM-DD
    axisFormat  %m/%d
    
    section 设计阶段
    需求分析      :a1, 2023-10-01, 7d
    UI设计                 :a2, after a1, 10d
    原型创建        :a3, after a2, 5d
    
    section 开发阶段
    前端开发      :b1, 2023-10-20, 15d
    后端开发       :b2, after a2, 18d
    数据库设计           :b3, after a1, 12d
    
    section 测试阶段
    单元测试              :c1, after b1, 8d
    集成测试       :c2, after b2, 10d
    用户验收测试   :c3, after c2, 7d
    
    section 部署
    生产环境部署     :d1, after c3, 3d
    发布                    :milestone, after d1, 0d&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;类图示例&lt;a href=&quot;#类图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;类图显示系统的静态结构，包括类、属性、方法及其关系。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;classDiagram
    class User {
        +String username
        +String password
        +String email
        +Boolean active
        +login()
        +logout()
        +updateProfile()
    }
    
    class Article {
        +String title
        +String content
        +Date publishDate
        +Boolean published
        +publish()
        +edit()
        +delete()
    }
    
    class Comment {
        +String content
        +Date commentDate
        +addComment()
        +deleteComment()
    }
    
    class Category {
        +String name
        +String description
        +addArticle()
        +removeArticle()
    }
    
    User &quot;1&quot; -- &quot;*&quot; Article : 写作
    User &quot;1&quot; -- &quot;*&quot; Comment : 发表
    Article &quot;1&quot; -- &quot;*&quot; Comment : 拥有
    Article &quot;1&quot; -- &quot;*&quot; Category : 属于&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;状态图示例&lt;a href=&quot;#状态图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;状态图显示对象在其生命周期中经历的状态序列。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;stateDiagram-v2
    [*] --&amp;gt; 草稿
    
    草稿 --&amp;gt; 审核中 : 提交
    审核中 --&amp;gt; 草稿 : 拒绝
    审核中 --&amp;gt; 已批准 : 批准
    已批准 --&amp;gt; 已发布 : 发布
    已发布 --&amp;gt; 已归档 : 归档
    已发布 --&amp;gt; 草稿 : 撤回
    
    state 已发布 {
        [*] --&amp;gt; 活跃
        活跃 --&amp;gt; 隐藏 : 临时隐藏
        隐藏 --&amp;gt; 活跃 : 恢复
        活跃 --&amp;gt; [*]
        隐藏 --&amp;gt; [*]
    }
    
    已归档 --&amp;gt; [*]&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;饼图示例&lt;a href=&quot;#饼图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;饼图非常适合显示比例和百分比数据。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;pie title 网站流量来源分析
    &quot;搜索引擎&quot; : 45.6
    &quot;直接访问&quot; : 30.1
    &quot;社交媒体&quot; : 15.3
    &quot;推荐链接&quot; : 6.4
    &quot;其他来源&quot; : 2.6&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Mermaid 是在 Markdown 文档中创建各种类型图表的强大工具。本文演示了如何使用流程图、时序图、甘特图、类图、状态图和饼图。这些图表可以帮助您更清晰地表达复杂的概念、流程和数据结构。&lt;/p&gt;&lt;p&gt;要使用 Mermaid，只需在代码块中指定 mermaid 语言，并使用简洁的文本语法描述图表。Mermaid 会自动将这些描述转换为美观的可视化图表。&lt;/p&gt;&lt;p&gt;尝试在您的下一篇技术博客文章或项目文档中使用 Mermaid 图表 - 它们将使您的内容更加专业且更易理解！&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Markdown PlantUML 图表</title><link>https://blogs.olxc.art/posts/markdown-plantuml/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/markdown-plantuml/</guid><description>用于验证 Firefly 中 PlantUML 插件渲染、主题切换与交互能力的示例文章。</description><pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;Markdown 中 PlantUML 图表指南&lt;a href=&quot;#markdown-中-plantuml-图表指南&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;PlantUML 是一种使用纯文本描述图表的工具。你只需要写一段结构化语法，就可以生成时序图、类图、用例图、活动图等常见工程图。&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;能和 Markdown 无缝结合，保持文档统一&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;在 Firefly 中，&lt;code&gt;plantuml&lt;/code&gt; 代码块会在构建阶段编码并生成服务器 SVG 地址，页面端再根据亮暗主题自动切换图源，并支持缩放、拖拽和全屏交互。&lt;/p&gt;&lt;p&gt;如果你想快速上手，可以记住这个最小模板：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
Alice -&amp;gt; Bob: Hello
Bob --&amp;gt; Alice: Hi
@enduml&quot; src=&quot;https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuNBCoKnELT2rKt3AJx9Iy4ZDoSdd0Z8LT852O3cWO2QNGsfU2b0r0000&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;活动图示例&lt;a href=&quot;#活动图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
start
:用户提交订单;
if (库存充足?) then (是)
	:冻结库存;
	:创建支付单;
	if (支付成功?) then (是)
		:生成发货单;
		:通知仓库拣货;
	else (否)
		:取消订单;
		:释放库存;
	endif
else (否)
	:提示缺货;
endif
stop
@enduml&quot; src=&quot;https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuG8pkAoUJrdnh6Fxi_u9JtOjUR5kqTFUgTPScMaA6aztJNwwTiRJrjONspRRQogKPAJcAMWycx5UaulJwcdRxkUx9qDKM8Fu7REVxjxrRChw9xjdW0tW19a0uJ_hcF2qQpwQ2Pn0Q-U3PFedljYo7AA5q-fbmwpdyvS-0Plyh7inK0Oed9fJd0fqpOHbO6rF-wSzszO1SoT8JtlNiodxu4v9pKl9JED2rcC5zDhp9RkUxza5DW-YeBWalu3B0SW61WG0&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;状态图示例&lt;a href=&quot;#状态图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
[*] --&amp;gt; 草稿

草稿 --&amp;gt; 待审核 : 提交
待审核 --&amp;gt; 草稿 : 驳回
待审核 --&amp;gt; 已发布 : 审核通过
已发布 --&amp;gt; 已归档 : 到期归档
已发布 --&amp;gt; 草稿 : 撤回修改

state 已发布 {
	[*] --&amp;gt; 可见
	可见 --&amp;gt; 隐藏 : 手动隐藏
	隐藏 --&amp;gt; 可见 : 恢复展示
}

已归档 --&amp;gt; [*]
@enduml&quot; src=&quot;https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuOhMYbNGrRLJUD7R-Np5VYuk20qMUhglzUcwXSyMx52mKdZMF-79hYLS22647g3iovMRdywUXoRxTFkcf_qJd-ve1Yg02BzicFLYVpiNGWAcRE-aPmiNWvHrR7WsPpw4YwOCRjUpIKk0TZtPl-xPb9rSN41_bAGYMLNDnGdpqTF-zI-MDt9nGcYmqCjP4rvCxmSPqjdzj6i5XCl52HL6Q0AfQ5pqT4dlqurJdo_PnLNBnOLm9aWPq0ukXzIy56080W00&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;用例图示例&lt;a href=&quot;#用例图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
left to right direction
actor 游客
actor 用户
actor 管理员

rectangle 博客系统 {
	usecase &amp;quot;浏览文章&amp;quot; as UC1
	usecase &amp;quot;搜索内容&amp;quot; as UC2
	usecase &amp;quot;发表评论&amp;quot; as UC3
	usecase &amp;quot;点赞收藏&amp;quot; as UC4
	usecase &amp;quot;审核评论&amp;quot; as UC5
	usec&quot; src=&quot;https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuSf9JIjHACbNACfCpoXHICaiIaqkoSpFuqfCBialKdYsOyVJTOkWdETJLZphs0xZh5luV4BRquapkBX0MXBpqdDI5PxspW8gVxvvz_FTynMgkJXBYrEJ4ujJ5PIURUr_iRpZsRJsvwiNA2aa5Yk4EXiYIq-OytpBegTjhK_NxOHA6o59F-sV-6BXYXVhMrwismMLDaQIVjwqyyNMUS-cR7inlHygROAiUzt2PmjseEWsHJNywOvc5AUPSTLoSK6yhg2hQmTsB0hNY0iI5d1P52wQh34gruGB7dHG4LCC4JCkXzIy563q0000&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;组件图示例&lt;a href=&quot;#组件图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
package &amp;quot;Firefly Site&amp;quot; {
	[Astro App] as App
	[Markdown Parser] as Parser
	[PlantUML Encoder] as Encoder
	[Theme Switcher] as Theme
	[Search Indexer] as Search
}

cloud &amp;quot;PlantUML Server&amp;quot; as &quot; src=&quot;https://www.plantuml.com/plantuml/svg/JL71IiGm43sRhnXwNxptiEmY2e8B2xKdyJ1DnZOqJMgIxYhYlpj9iyLJXlSUyzwR74947vV9Y1dbY3r1zQGzVPXlQ7Ia2dx4tTinHE_WEC_lW26zZ9tGZyfTBPpH1_APMKScpmPjR4yly6YbKuKjCzEl0qq4pLL7EHGoGqmrX5uEy6mLVHLgXSIl4DAuHK6rRM_8NyXNsReL2YDs6BZ1WxEHR8GcEa-PBeWG71vskts92ZNCQO2fj145JvAIbpMK9vYJBvyAEkFa6CHDaFUrhFFqkL2842xzPhHshI7ajg3OwDxeVc2LbvkgrAwXMxHH78e_GgSR_0zqgvMCa4Kkn20EP1Ld-WC0&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;部署图示例&lt;a href=&quot;#部署图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
node &amp;quot;User Device&amp;quot; {
	artifact &amp;quot;Browser&amp;quot;
}

node &amp;quot;CDN / Edge&amp;quot; {
	artifact &amp;quot;Static Assets&amp;quot;
}

node &amp;quot;Cloudflare Worker&amp;quot; {
	artifact &amp;quot;SSR Handler&amp;quot;
}

node &amp;quot;PlantUML Service&amp;quot; {
	artifact &amp;quot;SVG Re&quot; src=&quot;https://www.plantuml.com/plantuml/svg/RP6nRi9038RdtbDOsL7s3XKj83eKgBZIpYRdf87B7RKT6Ag-UqyHgaBI-Vy--xSy5KNMjl4cH4UGxOGOvdIk2yhWszobi2wnKCYUE5vIc9aVSsLdypNai73L4BMAMXVmA48gVS77rfKUcU0ZyZ4D6tXs2yyOdBzPy-enw6xr0fRudrxsVGbR2exuQZbKtACaSxC_K4AiHiPHoHNoqSLBW5aCIa4xz-zAc4mUXeV0FImNRt2Gl139wwOQuRt-2MRwQaaKJccvkGqxVDIWSz31AOgEPlVFJ619Mdo2gx5YR43EbPccD3to5m00&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;ER 图示例&lt;a href=&quot;#er-图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
entity User {
	*id : uuid &amp;lt;&amp;lt;PK&amp;gt;&amp;gt;
	--
	username : varchar
	email : varchar
	created_at : datetime
}

entity Post {
	*id : uuid &amp;lt;&amp;lt;PK&amp;gt;&amp;gt;
	--
	author_id : uuid &amp;lt;&amp;lt;FK&amp;gt;&amp;gt;
	title : varchar
	content : &quot; src=&quot;https://www.plantuml.com/plantuml/svg/VP7F2i8m3CRFpLFqBEm5XWn1yE9b5yyIry0AwphQr3zCtzquKHnkExLyNvDVldGJ6GCdrm2rRFcc3v62xa6jhD6vJacEzRhS5mMeB0ELn6xHaNXd35MD0HGvjCslK0L29dD45jN8bQqZUC27KVh82mnCNFjm_3LtWod5pOXS-PQbfqXCLmRLfLDZOxs0tdhdNXNpz4w6cs2_Wa_89szkN_nixc6fztkM-VuTFjUNO9dYoFdCbkjtemZ3sp-tnWWRQetysXC0&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;时序图示例（登录与刷新令牌）&lt;a href=&quot;#时序图示例登录与刷新令牌&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
autonumber
actor User as 用户
participant Web as 前端页面
participant API as 网关接口
participant Auth as 认证服务
database Redis as 会话缓存

用户 -&amp;gt; 前端页面 : 输入账号密码并提交
前端页面 -&amp;gt; 网关接口 : POST /login
网关接口 -&amp;gt; 认证服务 : &quot; src=&quot;https://www.plantuml.com/plantuml/svg/bPBBJW8n04Nt_OhkZKXSkZ2uT2Nn4PUc35KcmWoPTZw01SymWa6D60WFmHWDZ8aFee3-3EsKlx282mg9mMtlkTFJcmaGYYngnw80sTGqx5W8Mm1frBJW0S4MH0Hw5_SyqmDnoUcQ7aS6XOSuD4bOrl4UtN7ZTLnjAlbMSFkdEJndoMT-rcQ5MpMtQMG2Y6vBk0bUSLYk0SA8eX0Y6ExYi4ucyMXm8zogDoYnpZK0Km-ukgdS2pUW-2onP5kytB52ZxafhvvWxs-yK1nzj822okgiagm6T_RsuLhKFD4De4GIdPMJAAytnWzvbkvmfmkKJBApff9bgR8qWXO-jZ29757p51jpdKKNf6cOa2aCL-RAgjpY1kj-F_JAVJQyv9aYozK0yFbywYV5LvfNQb2UW-Lc-JLORfW_7xima1XskTFyvq3ywabvqLAZoDAet_AoUH30HbZ-wDy0&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;C4 风格容器图示例&lt;a href=&quot;#c4-风格容器图示例&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;img alt=&quot;@startuml
!includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

Person(user, &amp;quot;博客访客&amp;quot;, &amp;quot;阅读文章与搜索内容&amp;quot;)

System_Boundary(system, &amp;quot;Firefly Blog&amp;quot;) {
	Container(we&quot; src=&quot;https://www.plantuml.com/plantuml/svg/PL9TRn9157rsVyN8qn8j--AJJwNOhuIcXAKsFf5TTe2rmooPdIqbniJKKeq9bcYjZQr1i2PD6XU_6YiczSymm_8ldDb5fEdBPkwzvvvxxpaxwrA3KA-2b9isBY3FWXv1e4nfrRshQSIe9KesBNkcvq9IS325c2OAJaMh8WFBjXcNMiWsjTITcOnChQsajOhXKaX4AfyI7OQD8KbKvGWb0udhO5MItGOnrdp7_6xW_n7Vc8X7XusWzviVF1kUVHXSlEIju-6FBjjjCFzNBAueUbtGLl9pZeSjWzHLDun5tu9DO17LmHnoIh4uUAJScCnLQz0KY7LeWcIrAeSaNKeSS0lecn1HA3FyuXjllnvrpaVlksBie7yowByI0wTP7B8HhgphMR0U1h8pXHpFAYA3m77IbLbsiZDixVBZ9dlH6Pxr8lgWzvD_tRx2UizKnufAgkW5TEgGSAiLWsnOJWq33QoQ3s4XAXcbiCW-7xBjqubImVaExxTOuob_yuKt_Qkxkz0WXRBSFNo0PMp1BKcI4MH56rkX1dkjmUKHQqXE_l69q5sGF9veFhz5rN-Eoywnqq27P3EIOhZVvizRGB-_2DZHPT0vbOvb8Hfx7TaWh1wzzILyAPVBw08Y4M5jed0a5912HvPSWu-H_xKJFmtREuZKcEQSNCxRdu9UbpM-Z_RzeDUSnanT5KsEjfU7o0lIoGUhQxbyUduXbyykBoxbrBWo2x4bElu2&quot; loading=&quot;lazy&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;</content:encoded></item><item><title>Markdown 教程</title><link>https://blogs.olxc.art/posts/markdown-tutorial/</link><guid isPermaLink="true">https://blogs.olxc.art/posts/markdown-tutorial/</guid><description>一个简明的 Markdown 博客示例。</description><pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一个展示如何编写 Markdown 文件的示例。本文档汇总了核心语法与常见扩展（GFM）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#block-elements&quot;&gt;块级元素&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#paragraphs-and-line-breaks&quot;&gt;段落与换行&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#headers&quot;&gt;标题&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#blockquotes&quot;&gt;引用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#lists&quot;&gt;列表&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#code-blocks&quot;&gt;代码块&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#horizontal-rules&quot;&gt;分割线&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#table&quot;&gt;表格&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#span-elements&quot;&gt;内联元素&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#links&quot;&gt;链接&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#emphasis&quot;&gt;强调&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#code&quot;&gt;行内代码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#images&quot;&gt;图片&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#strikethrough&quot;&gt;删除线&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#miscellaneous&quot;&gt;杂项&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#automatic-links&quot;&gt;自动链接&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#backslash-escapes&quot;&gt;反斜杠转义&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#inline-html&quot;&gt;内联 HTML&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;块级元素&lt;a href=&quot;#块级元素&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;段落与换行&lt;a href=&quot;#段落与换行&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;段落&lt;a href=&quot;#段落&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;使用一个或多个空行分隔段落。（仅包含&lt;strong&gt;空格&lt;/strong&gt;或&lt;strong&gt;制表符&lt;/strong&gt;的行也视为空行。）&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This will be&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;inline.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is second paragraph.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;This will be
inline.&lt;/p&gt;&lt;p&gt;This is second paragraph.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;换行&lt;a href=&quot;#换行&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;在行末添加&lt;strong&gt;两个或更多空格&lt;/strong&gt;来产生换行。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This will be not&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;inline.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;This will be not&lt;br /&gt;
inline.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;标题&lt;a href=&quot;#标题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Markdown 支持两种标题样式：Setext 与 atx。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;Setext&lt;a href=&quot;#setext&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;使用&lt;strong&gt;等号 (=)&lt;/strong&gt; 表示 &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;、使用&lt;strong&gt;短横线 (-)&lt;/strong&gt; 表示 &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;，数量不限，作为“下划线”。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is an H1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;=============&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is an H2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-------------&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;This is an H1&lt;a href=&quot;#this-is-an-h1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;This is an H2&lt;a href=&quot;#this-is-an-h2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;hr /&gt;&lt;section&gt;&lt;h4&gt;atx&lt;a href=&quot;#atx&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;h4&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;h5&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;在行首使用 1-6 个&lt;strong&gt;井号 (#)&lt;/strong&gt;，对应 &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; 至 &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# This is an H1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;## This is an H2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;###### This is an H6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;This is an H1&lt;a href=&quot;#this-is-an-h1-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;This is an H2&lt;a href=&quot;#this-is-an-h2-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h6&gt;This is an H6&lt;a href=&quot;#this-is-an-h6&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h6&gt;&lt;hr /&gt;&lt;p&gt;可选：你可以在行尾“闭合” atx 标题。末尾的井号数量&lt;strong&gt;不必与&lt;/strong&gt;开头一致。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# This is an H1 #&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;## This is an H2 ##&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;### This is an H3 ######&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;This is an H1&lt;a href=&quot;#this-is-an-h1-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;This is an H2&lt;a href=&quot;#this-is-an-h2-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;This is an H3&lt;a href=&quot;#this-is-an-h3&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;引用&lt;a href=&quot;#引用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Markdown 使用邮件风格的 &lt;strong&gt;&amp;gt;&lt;/strong&gt; 作为引用符号。若手动换行并在每行前加 &amp;gt;，显示效果最佳。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; id sem consectetuer libero luctus adipiscing.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;blockquote&gt;&lt;p&gt;This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/p&gt;&lt;p&gt;Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;p&gt;Markdown 允许“偷懒”：在一个硬换行段落中，只在第一行前加 &amp;gt; 即可。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;id sem consectetuer libero luctus adipiscing.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;blockquote&gt;&lt;p&gt;This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;p&gt;引用可以嵌套（引用中的引用），通过增加 &amp;gt; 层级实现。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; This is the first level of quoting.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; &amp;gt; This is nested blockquote.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; Back to the first level.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;blockquote&gt;&lt;p&gt;This is the first level of quoting.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;This is nested blockquote.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Back to the first level.&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;p&gt;引用内可包含其他 Markdown 元素，包括标题、列表与代码块。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; ## This is a header.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 1.   This is the first list item.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; 2.   This is the second list item.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt; Here&apos;s some example code:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;gt;     return shell_exec(&quot;echo $input | $markdown_script&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;blockquote&gt;&lt;h2&gt;This is a header.&lt;a href=&quot;#this-is-a-header&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;This is the first list item.&lt;/li&gt;
&lt;li&gt;This is the second list item.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Here’s some example code:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;return shell_exec(&quot;echo $input | $markdown_script&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;列表&lt;a href=&quot;#列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Markdown 支持有序（数字）与无序（圆点）列表。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;无序列表&lt;a href=&quot;#无序列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;无序列表可使用 &lt;strong&gt;星号 (*)&lt;/strong&gt;、&lt;strong&gt;加号 (+)&lt;/strong&gt; 或 &lt;strong&gt;短横线 (-)&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*   Red&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*   Green&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*   Blue&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;ul&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;等价于：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;+   Red&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;+   Green&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;+   Blue&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-   Red&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-   Green&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-   Blue&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;有序列表&lt;a href=&quot;#有序列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;有序列表使用数字加英文句点：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1.  Bird&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;2.  McHale&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;3.  Parish&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;Bird&lt;/li&gt;
&lt;li&gt;McHale&lt;/li&gt;
&lt;li&gt;Parish&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;p&gt;注意：像下面这样可能会“意外触发”有序列表：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1986. What a great season.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;ol&gt;
&lt;li&gt;What a great season.&lt;/li&gt;
&lt;/ol&gt;&lt;hr /&gt;&lt;p&gt;你可以用&lt;strong&gt;反斜杠转义 (\)&lt;/strong&gt; 句点：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;1986\. What a great season.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;1986. What a great season.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;列表中的缩进内容&lt;a href=&quot;#列表中的缩进内容&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;section&gt;&lt;h5&gt;列表项里的引用&lt;a href=&quot;#列表项里的引用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;在列表项内放置引用，需要将 &amp;gt; 符号整体缩进：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*   A list item with a blockquote:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; This is a blockquote&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; inside a list item.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A list item with a blockquote:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;This is a blockquote
inside a list item.&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h5&gt;列表项里的代码块&lt;a href=&quot;#列表项里的代码块&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;在列表项内放置代码块，需要缩进两层——&lt;strong&gt;8 个空格&lt;/strong&gt;或&lt;strong&gt;两个 Tab&lt;/strong&gt;：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*   A list item with a code block:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;code goes here&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A list item with a code block:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;code goes here&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h5&gt;嵌套列表&lt;a href=&quot;#嵌套列表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* A&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* A1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;* A2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* B&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* C&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;ul&gt;
&lt;li&gt;A
&lt;ul&gt;
&lt;li&gt;A1&lt;/li&gt;
&lt;li&gt;A2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;B&lt;/li&gt;
&lt;li&gt;C&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;代码块&lt;a href=&quot;#代码块&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;将代码块中的每行缩进至少&lt;strong&gt;4 个空格&lt;/strong&gt;或&lt;strong&gt;1 个制表符&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is a normal paragraph:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;This is a code block.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;This is a normal paragraph:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is a code block.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;代码块会一直持续，直到遇到未缩进的行（或文末）。&lt;/p&gt;&lt;p&gt;在代码块内，&lt;strong&gt;与号 (&amp;amp;)&lt;/strong&gt; 和尖括号 &lt;strong&gt;(&amp;lt; &amp;gt;)&lt;/strong&gt; 会自动转为 HTML 实体。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;copy; 2004 Foo Corporation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;div class=&quot;footer&quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;amp;copy; 2004 Foo Corporation&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;下文的“围栏代码块”和“语法高亮”属于扩展语法，你也可以用它们来书写代码块。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;围栏代码块&lt;a href=&quot;#围栏代码块&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;使用成对的反引号围起来（如下所示），就不需要四空格缩进了。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Here&apos;s an example:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;```&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function test() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&quot;notice the blank line before this function?&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;```&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Here’s an example:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;function test() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;console.log(&quot;notice the blank line before this function?&quot;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;语法高亮&lt;a href=&quot;#语法高亮&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;在围栏代码块后添加可选的语言标识，即可启用语法高亮（参见支持语言列表）。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;```ruby&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;require &apos;redcarpet&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;markdown = Redcarpet.new(&quot;Hello World!&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;puts markdown.to_html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;```&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;require &lt;/span&gt;&lt;span&gt;&apos;redcarpet&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;markdown&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Redcarpet&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Hello World!&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;puts&lt;/span&gt;&lt;span&gt; markdown.&lt;/span&gt;&lt;span&gt;to_html&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;分割线（水平线）&lt;a href=&quot;#分割线水平线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;hr /&amp;gt;&lt;/code&gt;
一行中放置&lt;strong&gt;三个或以上的短横线 (-)、星号 (*) 或下划线 (_)&lt;/strong&gt;。符号之间允许有空格。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;* * *&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;***&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*****&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;- - -&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;___&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;表格&lt;a href=&quot;#表格&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;这是扩展语法。&lt;/p&gt;&lt;p&gt;用&lt;strong&gt;竖线 (|)&lt;/strong&gt; 分隔列，用&lt;strong&gt;短横线 (-)&lt;/strong&gt; 分隔表头，使用&lt;strong&gt;冒号 (:)&lt;/strong&gt; 指定对齐方式。&lt;/p&gt;&lt;p&gt;两侧的&lt;strong&gt;竖线 (|)&lt;/strong&gt; 与对齐可选。用于表头分隔时，每列至少需要 &lt;strong&gt;3 个短横线&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;| Left | Center | Right |&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;|:-----|:------:|------:|&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;|aaa   |bbb     |ccc    |&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;|ddd   |eee     |fff    |&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;A | B&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;---|---&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;123|456&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;A |B&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--|--&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;12|45&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Left&lt;/th&gt;&lt;th&gt;Center&lt;/th&gt;&lt;th&gt;Right&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;aaa&lt;/td&gt;&lt;td&gt;bbb&lt;/td&gt;&lt;td&gt;ccc&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ddd&lt;/td&gt;&lt;td&gt;eee&lt;/td&gt;&lt;td&gt;fff&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;












&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;A&lt;/th&gt;&lt;th&gt;B&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;123&lt;/td&gt;&lt;td&gt;456&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;












&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;A&lt;/th&gt;&lt;th&gt;B&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;内联元素&lt;a href=&quot;#内联元素&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;链接&lt;a href=&quot;#链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Markdown 支持两种链接样式：行内链接与引用式链接。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;行内链接&lt;a href=&quot;#行内链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;行内链接格式：&lt;code&gt;[文本](URL &quot;标题&quot;)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;标题可选。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is [an example](http://example.com/ &quot;Title&quot;) inline link.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[This link](http://example.net/) has no title attribute.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot; target=&quot;_blank&quot;&gt;an example&lt;/a&gt; inline link.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://example.net/&quot; target=&quot;_blank&quot;&gt;This link&lt;/a&gt; has no title attribute.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;如果引用同一站点的本地资源，可以使用相对路径：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;See my [About](/about/) page for details.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;See my &lt;a href=&quot;/about/&quot;&gt;About&lt;/a&gt; page for details.&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;引用式链接&lt;a href=&quot;#引用式链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;可以预定义链接引用。定义格式：&lt;code&gt;[id]: URL &quot;标题&quot;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;标题同样可选。引用时使用：&lt;code&gt;[文本][id]&lt;/code&gt;&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[id]: http://example.com/  &quot;Optional Title Here&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is [an example][id] reference-style link.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;This is &lt;a href=&quot;http://example.com/&quot; target=&quot;_blank&quot;&gt;an example&lt;/a&gt; reference-style link.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;说明：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;方括号中包含链接标识（&lt;strong&gt;不区分大小写&lt;/strong&gt;，可在左侧缩进最多三格空格）；&lt;/li&gt;
&lt;li&gt;随后是冒号；&lt;/li&gt;
&lt;li&gt;再跟一个或多个空格（或 tab）；&lt;/li&gt;
&lt;li&gt;然后是链接 URL；&lt;/li&gt;
&lt;li&gt;URL 可选地用尖括号包裹；&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;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[foo]: http://example.com/  &quot;Optional Title Here&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[foo]: http://example.com/  &apos;Optional Title Here&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[foo]: http://example.com/  (Optional Title Here)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[foo]: &amp;lt;http://example.com/&amp;gt;  &quot;Optional Title Here&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果使用空的方括号，则链接文本本身会作为名称。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[Google]: http://google.com/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[Google][]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://google.com/&quot; target=&quot;_blank&quot;&gt;Google&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;强调&lt;a href=&quot;#强调&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt;，&lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Markdown 使用 &lt;strong&gt;星号 (*)&lt;/strong&gt; 或 &lt;strong&gt;下划线 (_)&lt;/strong&gt; 表示强调。&lt;strong&gt;一个分隔符&lt;/strong&gt;对应 &lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt;；&lt;strong&gt;两个分隔符&lt;/strong&gt;对应 &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*single asterisks*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_single underscores_&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;**double asterisks**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;__double underscores__&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;em&gt;single asterisks&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;single underscores&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;double asterisks&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;double underscores&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;但如果两侧有空格，则会被视作普通字符而非强调语法。&lt;/p&gt;&lt;p&gt;你可以使用反斜杠进行转义：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;\*this text is surrounded by literal asterisks\*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;*this text is surrounded by literal asterisks*&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;行内代码&lt;a href=&quot;#行内代码&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;用&lt;strong&gt;反引号 (`)&lt;/strong&gt; 包裹。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Use the `printf()` function.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;若行内代码中需要包含反引号字符，可使用&lt;strong&gt;多重反引号&lt;/strong&gt;作为定界符：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;``There is a literal backtick (`) here.``&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;行内代码两侧的定界符允许包含空格（开头一个、结尾一个），方便在代码起始或结尾放置反引号字符：&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;A single backtick in a code span: `` ` ``&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;A backtick-delimited string in a code span: `` `foo` ``&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;图片&lt;a href=&quot;#图片&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;img /&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Markdown 的图片语法与链接类似，支持行内与引用两种方式。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;行内图片&lt;a href=&quot;#行内图片&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;行内图片语法：&lt;code&gt;![替代文本](URL &quot;标题&quot;)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;标题可选。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;![Alt text](/path/to/img.jpg)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;![Alt text](/path/to/img.jpg &quot;Optional title&quot;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp&quot; alt=&quot;Alt text&quot; /&gt;&lt;figcaption&gt;Alt text&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp&quot; alt=&quot;Alt text&quot; title=&quot;Optional title&quot; /&gt;&lt;figcaption&gt;Alt text&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&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;再接圆括号，内含图片 URL/路径，及可选的标题（引号包裹）。&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;引用式图片&lt;a href=&quot;#引用式图片&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;引用式图片语法：&lt;code&gt;![替代文本][id]&lt;/code&gt;&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp  &quot;Optional title attribute&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;![Alt text][img id]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp&quot; alt=&quot;Alt text&quot; title=&quot;Optional title attribute&quot; /&gt;&lt;figcaption&gt;Alt text&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;删除线&lt;a href=&quot;#删除线&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;HTML 标签：&lt;code&gt;&amp;lt;del&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;这是扩展语法。&lt;/p&gt;&lt;p&gt;GFM 增加了删除线语法。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;~~Mistaken text.~~&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;Mistaken text.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;杂项&lt;a href=&quot;#杂项&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;自动链接&lt;a href=&quot;#自动链接&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Markdown 支持一种便捷写法来创建“自动链接”（URL 与邮箱地址）：只需用尖括号将其包住即可。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;http://example.com/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;address@example.com&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://example.com/&quot; target=&quot;_blank&quot;&gt;http://example.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;#&quot;&gt;address@example.com&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;GFM 会自动识别标准 URL 并转换为链接。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;https://github.com/emn178/markdown&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/emn178/markdown&quot; target=&quot;_blank&quot;&gt;https://github.com/emn178/markdown&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;反斜杠转义&lt;a href=&quot;#反斜杠转义&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Markdown 允许使用反斜杠来转义那些本用于 Markdown 语法的特殊字符，使其按字面显示。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;\*literal asterisks\*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;*literal asterisks*&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;以下字符可通过反斜杠转义以按字面量输出：&lt;/p&gt;&lt;p&gt;Code:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;\   backslash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;`   backtick&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;*   asterisk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_   underscore&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{}  curly braces&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[]  square brackets&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;()  parentheses&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;#   hash mark&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;+   plus sign&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-   minus sign (hyphen)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.   dot&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;!   exclamation mark&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;内联 HTML&lt;a href=&quot;#内联-html&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;对于 Markdown 语法未覆盖的标记，直接使用原生 HTML 即可。无需特别声明从 Markdown 切换到 HTML，直接写标签就行。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is a regular paragraph.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;table&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;td&amp;gt;Foo&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;This is another regular paragraph.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;This is a regular paragraph.&lt;/p&gt;&lt;table&gt;
    &lt;tbody&gt;&lt;tr&gt;
        &lt;td&gt;Foo&lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;This is another regular paragraph.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;请注意：在&lt;strong&gt;块级 HTML 标签&lt;/strong&gt;内不会处理 Markdown 语法。&lt;/p&gt;&lt;p&gt;与块级标签不同，在&lt;strong&gt;行内级标签&lt;/strong&gt;内会处理 Markdown 语法。&lt;/p&gt;&lt;p&gt;代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;span&amp;gt;**Work**&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;**No Work**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;预览：&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;span&gt;&lt;strong&gt;Work&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;
  **No Work**
&lt;/div&gt;
***&lt;/section&gt;&lt;/section&gt;</content:encoded></item></channel></rss>