<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ArsLinear</title><description>Like Birds_</description><link>https://arslinear.com/</link><language>zh_CN</language><item><title>本站域名已更新</title><link>https://arslinear.com/posts/%E6%9C%AC%E7%AB%99%E5%9F%9F%E5%90%8D%E5%B7%B2%E6%9B%B4%E6%96%B0/</link><guid isPermaLink="true">https://arslinear.com/posts/%E6%9C%AC%E7%AB%99%E5%9F%9F%E5%90%8D%E5%B7%B2%E6%9B%B4%E6%96%B0/</guid><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://img.arslinear.com/posts/1780587020/%E6%9C%AC%E7%AB%99%E5%9F%9F%E5%90%8D%E5%B7%B2%E6%9B%B4%E6%8D%A2%E4%B8%BAarslinear.com_ba-style@logo.bluearchive.cc.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;本站域名已由原先的enamht.site更新为arslinear.com。原域名相关一切链接均相应废除。&lt;/p&gt;
&lt;p&gt;新链接目前看应该会较为稳定的运营下去（毕竟好不容易搞到一个.com域名）。&lt;/p&gt;
&lt;p&gt;本站联系邮箱已更新为&lt;a href=&quot;mailto:hiarslinear.com&quot;&gt;hi@arslinear.com&lt;/a&gt;。&lt;/p&gt;
</content:encoded></item><item><title>AI辅助的日程管理</title><link>https://arslinear.com/posts/ai%E8%BE%85%E5%8A%A9%E7%9A%84%E6%97%A5%E7%A8%8B%E7%AE%A1%E7%90%86/</link><guid isPermaLink="true">https://arslinear.com/posts/ai%E8%BE%85%E5%8A%A9%E7%9A%84%E6%97%A5%E7%A8%8B%E7%AE%A1%E7%90%86/</guid><description>自建日程解析服务。可以调用大语言模型对日程/通知信息进行清洗，返回结构化数据以便于输入电子日历。 </description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;有的时候学校会下发各种各样的通知，尤其是各种时间节点、各种任务，纷繁复杂。这个时候使用日程管理软件会方便不少，比如iOS原生的日历、提醒事项，Microsoft的To Do、Outlook日历等等。有的时候有些通知不太重要，看一眼就忘了，等到ddl的时候才发现居然还有这个东西。所以，有没有什么方法可以直接让程序读取通知自动导入到日历、提醒事项这类软件里呢？&lt;/p&gt;
&lt;p&gt;其实是有的，比如Apple Intelligence。但是一方面Apple Intelligence这玩意在国内八字还没一撇，另一方面对于一些不支持Apple Intelligence的设备来说这玩意就根本指望不上了。此外，Apple Intelligence所使用的模型是闭源模型，对于有些人（虽然我也不知道哪些人会真的担心这个，但是万一呢？）来说挺在意自己的隐私，不愿意把自己的日程完全交给闭源模型，所以自己建一个日程解析的API还是挺有必要的。&lt;/p&gt;
&lt;p&gt;所以不废话，直接上仓库：&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;ArsLinear/reminderapi&quot;}&lt;/p&gt;
&lt;h2&gt;仓库内容&lt;/h2&gt;
&lt;p&gt;这个仓库基本上是一个自建API服务，你可以输入一段通知、公告、或者其他任何什么东西，程序会通过调用LLM对你的数据进行清洗，返回一个结构化的json。你可以对这一串json进行处理将其转化为适合导入到你的日历程序或者待办程序的结构。&lt;/p&gt;
&lt;p&gt;仓库详细内容可以看&lt;a href=&quot;https://github.com/ArsLinear/reminderapi/blob/main/README.md&quot;&gt;项目README&lt;/a&gt;。在这里就不多赘述了。本项目推荐模型：&lt;code&gt;deepseek-v4-flash&lt;/code&gt;。相关使用模型、提示词、最大返回items上限以及返回结构均可以自行修改。&lt;/p&gt;
&lt;h2&gt;使用方法&lt;/h2&gt;
&lt;p&gt;最佳实践是一个服务端和一个终端。服务端运行API服务，终端运行程序或者快捷指令。&lt;/p&gt;
&lt;h3&gt;服务端设置&lt;/h3&gt;
&lt;p&gt;服务端的配置可以看&lt;a href=&quot;https://github.com/ArsLinear/reminderapi/blob/main/README.md&quot;&gt;项目README&lt;/a&gt;，在此不过多赘述。对于家庭服务器或者小树莓派，推荐使用CF tunnel或者Tailscale实现外网访问。&lt;/p&gt;
&lt;h3&gt;终端设置&lt;/h3&gt;
&lt;p&gt;我使用的终端是iPhone。使用iOS自带的快捷指令可以快速且合法地编写一个调用API直接生成日程或待办事项的小程序。&lt;/p&gt;
&lt;p&gt;这里是一个可以开箱即用的&lt;a href=&quot;https://www.icloud.com/shortcuts/db3750307e4f4d2fbb8431191cb1ae53&quot;&gt;快捷指令&lt;/a&gt;。使用该快捷指令前，需要自行替换部署API的URL。&lt;/p&gt;
&lt;p&gt;如果对实现方法好奇的话，具体实现方法如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;询问输入
    ↓
设定变量：原始输入
    ↓
URL：https://your-domain.example.com/parse
    ↓
获取 URL 内容
    方法：POST
    请求体：文件
    文件：原始输入
    头部：
      Content-Type = text/plain; charset=utf-8
    ↓
从 URL 的内容获取字典
    ↓
设定变量：解析结果
    ↓
读取 need_confirm / question / items
    ↓
如果 need_confirm 为 true
    显示 question
    停止快捷指令
否则
    重复处理 items
        type = reminder → 添加新提醒事项
        type = calendar → 添加新日程
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;实现效果&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://img.arslinear.com/posts/1779199051/image-20260519215731448.png&quot; alt=&quot;image-20260519215731448&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如图，一个复杂的通知，包括各种无效信息，若干个不同时间的日程，只需要一次复制输入输入框即可成功导入待办事项与日历。&lt;/p&gt;
&lt;h2&gt;改进&lt;/h2&gt;
&lt;p&gt;虽然基本实现了上面所说的，程序读取通知自动导入到日历、提醒事项这类软件里，但是每次都要复制还是太麻烦了，如果进一步优化可以直接截图读取相关信息，或者直接读取剪贴板。&lt;/p&gt;
&lt;p&gt;另外，自定义提醒时间也挺重要的，尤其是对于一些比较长期的规划来说。此外，对于一些不是很清楚的提示，快捷指令会询问所需要的信息，但是却不会进一步优化。这个可能对于快捷指令来说实现较为困难，如果能做成一个App或者轻应用就会方便得多了。&lt;/p&gt;
</content:encoded></item><item><title>有限长度Warburg阻抗的数学表达</title><link>https://arslinear.com/posts/%E6%9C%89%E9%99%90%E9%95%BF%E5%BA%A6warburg%E9%98%BB%E6%8A%97%E7%9A%84%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE/</link><guid isPermaLink="true">https://arslinear.com/posts/%E6%9C%89%E9%99%90%E9%95%BF%E5%BA%A6warburg%E9%98%BB%E6%8A%97%E7%9A%84%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE/</guid><description>一种稍微好理解一点的Warburg阻抗表达式推导方法，绝对不会难于Butler-Volmer方程的推导。</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;有限长度Warburg阻抗的数学表&lt;/h1&gt;
&lt;h2&gt;传质与扩散&lt;/h2&gt;
&lt;p&gt;Warburg阻抗元件是使用等效电路（ECM）拟合解析电化学交流阻抗谱（EIS）时，用于描述Nyquist图低频部分中45°斜线行为的一类电化学元件。当然，出现45°斜线行为不一定代表是Warburg阻抗，具体Warburg阻抗的指认在此不做过多展开。&lt;/p&gt;
&lt;p&gt;Waburg阻抗一般用于描述传质过程。一般来说，传质可以用Nernst-Planc方程描述：
$$
J_i=-D_i\nabla c_i-\frac{z_iF}{RT}D_ic_i\nabla \phi+c_iv_i
$$
其中，$J_i$代表传质通量，$D_i$代表扩散系数，$c_i$是物种浓度，$z_i$是物种电荷数，$\phi$是电势。其中$-D_i\nabla c_i$项是扩散项，$-\frac{z_iF}{RT}D_ic_i\nabla \phi$是电迁项，$c_iv_i$是对流项。如果在无对流，含有大量支持电解质的情况下，那么传质方程就会退化为仅描述扩散的Fick第一定律：
$$
J_i(x)=-D_i\nabla c_i(x)
$$
除此之外，对于扩散还有Fick第二定律：
$$
\frac{{\rm d}c_i}{{\rm d}t}=-D_i\frac{{\rm d}^2c_i}{{\rm d}x^2}
$$
该公式用来描述扩散与时间的关系。&lt;/p&gt;
&lt;h2&gt;Warburg阻抗元件的数学表达&lt;/h2&gt;
&lt;p&gt;Warburg阻抗本质上是一个阻抗响应。所以实际上Warburg阻抗可以表示为：
$$
Z_W=\frac{\tilde{E}}{\tilde{j}}
$$
其中$\tilde{E}$和$\tilde{j}$分别为电势与电流的复振幅。单独求解这个式子非常困难。我们希望通过我们所知道的关系去推导出这个Warburg阻抗的解析式。&lt;/p&gt;
&lt;p&gt;首先，在传质控制过程中，电势与表面浓度，或者说活度存在一定关系，所谓“浓差极化”就是这么来的。这个关系可以通过Nernst方程描述：
$$
E=E^\ominus-\frac{RT}{nF}\ln\prod_{i=1} a_{i,s}^{\gamma_i}
$$
我们考虑单一物种传质的情况，那么对这个式子求微分可以得到：
$$
\frac{\partial E}{\partial a_i}=\frac{\gamma_iRT}{nFa_{i,s}}
$$
但是这个式子是电极电势对表面活度的关系，不是我们所关心的复振幅，所以我们要转换成复振幅的形式。我们可以将活度与电极电势写作：
$$
a_i(t)=a_{i,0}+\operatorname{Re}\left(\tilde{a}_i e^{\mathrm{i}\omega t}\right)
$$&lt;/p&gt;
&lt;p&gt;$$
E(t)=E_0+\operatorname{Re}\left(\tilde{E} e^{\mathrm{i}\omega t}\right)
$$&lt;/p&gt;
&lt;p&gt;幸运的是，由于EIS振幅小，可以在平衡态做一阶线性化：
$$
E(t)\approx E_0+
\left(\frac{\partial E}{\partial a_i}\right)&lt;em&gt;0
\left[a_i(t)-a&lt;/em&gt;{i,0}\right]
$$
所以复振幅之间满足：
$$
\tilde{E}=
\left(\frac{\partial E}{\partial a_i}\right)_0
\tilde{a}&lt;em&gt;i
$$
这样，
$$
\frac{\tilde{E}}{\tilde{a_i}}=\frac{\partial E}{\partial a_i}=\frac{\gamma_iRT}{nFa&lt;/em&gt;{i,s}}
$$
下面我们要求的就是$\tilde{a_i}/\tilde{j}$。这个式子依然不好求。我们可以通过表面通量架起表面活度与电流之间的桥梁。&lt;/p&gt;
&lt;p&gt;最简单的是电流与表面通量之间的关系，由于法拉第定律：
$$
j_i=nFAJ_i
$$
所以很自然的：
$$
\frac{\tilde{J_i}}{\tilde{j_i}}=\frac{1}{nFA}
$$
那么，最终的问题就落到求$\tilde{a_i}/\tilde{J_i}$的关系上了。&lt;/p&gt;
&lt;h3&gt;两种边界条件的导出&lt;/h3&gt;
&lt;p&gt;回顾上面的式子。活度可以写成
$$
a_i(x)=a_{i,0}(x)+\tilde{a_i}(x)\exp(i\omega t)
$$
由于牵扯到时间$t$，所以这个时候我们可以用Fick第二定律。带入Fick第二定律后得到
$$
i\omega \tilde{a_i}(x)=-D_i\frac{\partial^2 \tilde{a}_i(x)}{\partial x^2}
$$
这个式子是一个二阶常微分方程。其通解为：
$$
\tilde{a_i}(x)=C_1e^{\lambda x}+C_2e^{-\lambda x}
$$
其中，$\lambda=\sqrt{i\omega/D_i}$。确定常数还需要边界条件。通过边界条件可以将扩散分成两种情况。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]&lt;/p&gt;
&lt;p&gt;对于二阶线性常系数齐次常微分方程
$$
y&apos;&apos;+\lambda y=0
$$&lt;/p&gt;
&lt;p&gt;设其解具有指数形式
$$
y=e^{rx}
$$&lt;/p&gt;
&lt;p&gt;则有
$$
y&apos;=re^{rx}
$$&lt;/p&gt;
&lt;p&gt;$$
y&apos;&apos;=r^2e^{rx}
$$&lt;/p&gt;
&lt;p&gt;将其代入原方程，得到
$$
r^2e^{rx}+\lambda e^{rx}=0
$$&lt;/p&gt;
&lt;p&gt;即
$$
\left(r^2+\lambda\right)e^{rx}=0
$$&lt;/p&gt;
&lt;p&gt;由于
$$
e^{rx}\neq 0
$$&lt;/p&gt;
&lt;p&gt;因此有
$$
r^2+\lambda=0
$$&lt;/p&gt;
&lt;p&gt;这称为该微分方程的特征方程。由此可得
$$
r^2=-\lambda
$$&lt;/p&gt;
&lt;p&gt;所以
$$
r=\pm\sqrt{-\lambda}
$$&lt;/p&gt;
&lt;p&gt;因此，方程的通解为
$$
y=C_1e^{\sqrt{-\lambda}x}+C_2e^{-\sqrt{-\lambda}x}
$$&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;半无限扩散&lt;/h3&gt;
&lt;p&gt;所谓半无限扩散，就是$\lim_{x\rightarrow \infty}\tilde{a_i}(x)=0$。通俗意义上讲，就是施加的扰动传达不到无限远的位置。当然，这个假设非常的理想。不过这个假设会很大程度上简化数学推导的过程，我们先用这个假设看看能导出什么样的结果吧。&lt;/p&gt;
&lt;p&gt;将通解带入边界条件。由于$x\rightarrow \infty$时，$C_1e^{\lambda x}$发散，因此显然$C_1$为0。这样
$$
\tilde{a_i}(x)=Ce^{-\lambda x}
$$
另一个边界条件是$x=0$时，复振幅为表面复振幅：
$$
\tilde{a_i}(x)=\tilde{a_{i}}(0)e^{-\lambda x}
$$
这个式子看上去就简单多了！既然已经指导了活度的一维分布，那么只需要带入Fick第一定律：
$$
\tilde{J}_i(x)=-D_i\frac{\partial \tilde{a_i}(x)}{\partial x}=-\lambda \tilde{a_i}(0) e^{-\lambda x}=-\lambda\tilde{a_i}(x)
$$
这样我们成功推导出了：
$$
\frac{\tilde{J}_i}{\tilde{a}_i}=-\lambda
$$
以上的式子并未区分表面活度与体相活度，是因为$\tilde{J_i}/\tilde{a_i}$始终是一个定值。因此界面的$\tilde{J_i}/\tilde{a_i}$肯定也等于$-\lambda$。&lt;/p&gt;
&lt;p&gt;我们把上面所有公式合并在一起：
$$
Z_W=\frac{\tilde{E}}{\tilde{a_{i,s}}}\cdot\frac{\tilde{a_{i,s}}}{\tilde{J_i}}\cdot\frac{\tilde{J_i}}{\tilde{j_i}}=\frac{\gamma_iRT}{nFa_{i,s}}\cdot\frac{1}{-\lambda}\cdot\frac{1}{nFA}
$$
整理得
$$
Z_W=\frac{RT}{n^2F^2A\sqrt{2D_i}a_{i,s}}\cdot\frac{1-i}{\sqrt\omega}
$$
令把前面一大串常数设为$\sigma$就可以得到：
$$
Z_W=\sigma\cdot\frac{1-i}{\sqrt\omega}
$$
这个公式说明，$Z_W$在Nyquist图表现为一条45°的斜线。这与我们的前面的说法是一致的。&lt;/p&gt;
&lt;h3&gt;有限长度扩散&lt;/h3&gt;
&lt;p&gt;所谓有限长度扩散，就是在$\lim_{x\rightarrow L}\tilde{a_i}(x)=0$。像是旋转圆盘电极这种具有有效扩散层厚度的，都属于有限长度扩散。所以有限长度扩散更贴近实际情况。&lt;/p&gt;
&lt;p&gt;我们将通解带入边界条件：
$$
\tilde{a_i}(x)\big|&lt;em&gt;{x=L}=C_1e^{\lambda L}+C_2e^{-\lambda L}=0
$$
所以可以把$C_2$表示为：
$$
C_2=-C_1e^{2\lambda L}
$$
代回：
$$
\tilde{a}&lt;em&gt;i(x)=C_1e^{\lambda x}-C_1e^{2\lambda L-\lambda x}=2C_1e^{\lambda L}\sinh[\lambda(x-L)]
$$
那么依然是Fick第一定律：
$$
\tilde{J_i}=-D_i\frac{\partial \tilde{a}&lt;em&gt;i(x)}{\partial x}=-2C_1D_i\lambda e^{\lambda L}\cosh[\lambda(x-L)]
$$
所以
$$
\frac{\tilde{a}&lt;em&gt;i(x)}{\tilde{J_i}(x)}=\frac{1}{D_i\lambda}\cdot\tanh[\lambda(x-L)]
$$
这回这个分式就不是一个固定的常数了！所以我们要取这个分式在表面的值，也就是$x=0$：
$$
\left.\frac{\tilde{a}&lt;em&gt;i(x)}{\tilde{J_i}(x)}\right|&lt;/em&gt;{x=0}=\left.\frac{1}{D_i\lambda}\cdot\tanh[\lambda(x-L)]\right|&lt;/em&gt;{x=0}=\frac{\tanh\lambda L}{D_i\lambda}
$$
现在只需要把$\lambda$代进来。
$$
\left.\frac{\tilde{a}&lt;em&gt;i(x)}{\tilde{J_i}(x)}\right|&lt;/em&gt;{x=0}=\frac{\tanh{\sqrt{i\omega/D_i}}L}{D_i\sqrt{i\omega/D_i}}
$$
这个式子看上去很复杂，没关系。我们定义扩散特征时间：$\tau=L^2/D_i$。则可以化简为：
$$
\left.\frac{\tilde{a}&lt;em&gt;i(x)}{\tilde{J_i}(x)}\right|&lt;/em&gt;{x=0}=\frac{L}{D_i}\cdot\frac{\tanh\sqrt{i\omega\tau}}{\sqrt{i\omega\tau}}
$$
我们把上面的式子综合在一起：
$$
Z_W=\frac{\tilde{E}}{\tilde{a&lt;/em&gt;{i,s}}}\cdot\frac{\tilde{a&lt;/em&gt;{i,s}}}{\tilde{J_i}}\cdot\frac{\tilde{J_i}}{\tilde{j_i}}=\frac{\gamma_iRT}{nFa&lt;/em&gt;{i,s}}\cdot\frac{L}{D_i}\cdot\frac{\tanh\sqrt{i\omega\tau}}{\sqrt{i\omega\tau}}\cdot\frac{1}{nFA}=\frac{\gamma_iRTL}{n^2F^2D_iAa_{i,s}}\cdot\frac{\tanh\sqrt{i\omega\tau}}{\sqrt{i\omega\tau}}
$$
前面的系数具有非常明确的物理意义，那就是传质电阻：
$$
R_{\rm mt}=\frac{\partial \eta_{\rm mt}}{\partial j}=\frac{\gamma_iRTL}{n^2F^2D_iAa_{i,s}}
$$
所以
$$
Z_W=R_{\rm mt}\cdot\frac{\tanh\sqrt{i\omega\tau}}{\sqrt{i\omega\tau}}
$$
这就是有限长度Warburg阻抗的数学表达式。&lt;/p&gt;
</content:encoded></item><item><title>在Zotero里设置ACS的短引用格式</title><link>https://arslinear.com/posts/%E5%9C%A8zotero%E9%87%8C%E8%AE%BE%E7%BD%AEacs%E7%9A%84%E7%9F%AD%E5%BC%95%E7%94%A8%E6%A0%BC%E5%BC%8F/</link><guid isPermaLink="true">https://arslinear.com/posts/%E5%9C%A8zotero%E9%87%8C%E8%AE%BE%E7%BD%AEacs%E7%9A%84%E7%9F%AD%E5%BC%95%E7%94%A8%E6%A0%BC%E5%BC%8F/</guid><description>自己写了一个ACS的短引用格式。</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;在Zotero里设置ACS的短引用格式&lt;/h1&gt;
&lt;p&gt;有的时候做PPT需要添加引用文献，一个个手打比较麻烦。使用&lt;code&gt;Ctrl+Shift+C&lt;/code&gt;可以比较方便的复制引文。但是所复制的往往是完整格式。PPT里的格式还需要重新调整。这里给一个基于ACS调整的短引用格式。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;ArsLinear/zotero-citation&quot;}&lt;/p&gt;
&lt;h2&gt;格式简介&lt;/h2&gt;
&lt;p&gt;该格式基于ACS Guide 2022 revision改编而来。具体格式举例：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Li, Q. et al. &lt;em&gt;J. Am. Chem. Soc.&lt;/em&gt; &lt;strong&gt;2024&lt;/strong&gt;, &lt;em&gt;146&lt;/em&gt; (49), 33587–33594.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;作者：只显示第一作者。使用姓, 名的组合。其他作者以et al.形式省略；&lt;/li&gt;
&lt;li&gt;刊名：斜体缩写。具体缩写需要编辑Zotero刊名简称，可以使用Zotero的插件Linter一键设置所有刊名简称；&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;::github{repo=&quot;northword/zotero-format-metadata&quot;}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;年份：正体，加粗；&lt;/li&gt;
&lt;li&gt;卷次与期号：卷次使用斜体，期号在卷次之后用括号括明；&lt;/li&gt;
&lt;li&gt;页码：页码之间使用“–”连接。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;/p&gt;
&lt;p&gt;如果需要修改或者生成自己需要的引用格式样式，可以在&lt;a href=&quot;https://editor.citationstyles.org/about/&quot;&gt;Visual CSL Editor&lt;/a&gt;中修改与导出。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;使用方法&lt;/h2&gt;
&lt;p&gt;在Github页面下载&lt;a href=&quot;https://github.com/ArsLinear/zotero-citation/blob/main/acs-guide-2022-revision-short-ver.csl&quot;&gt;acs-guide-2022-revision-short-ver.csl&lt;/a&gt;。在Zotero设置中找到引用、样式管理器。将下载好的格式“从文件添加”导入即可。出现了ACS Guide 2022 revision short ver.就是导入成功了。某些浏览器下载后可能会直接导入。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.arslinear.com/posts/1776586673/image-20260419161753478.png&quot; alt=&quot;导入&quot; /&gt;&lt;/p&gt;
&lt;p&gt;设置短引用只需要在设置的“导出”内将条目格式设置为ACS Guide 2022 revision short ver.即可开始使用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img.arslinear.com/posts/1776586785/image-20260419161944980.png&quot; alt=&quot;设置&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>在Arch Linux上安装博通BCM4360网卡驱动</title><link>https://arslinear.com/posts/%E5%9C%A8arch_linux%E4%B8%8A%E5%AE%89%E8%A3%85%E5%8D%9A%E9%80%9Abcm4360%E7%BD%91%E5%8D%A1%E9%A9%B1%E5%8A%A8/</link><guid isPermaLink="true">https://arslinear.com/posts/%E5%9C%A8arch_linux%E4%B8%8A%E5%AE%89%E8%A3%85%E5%8D%9A%E9%80%9Abcm4360%E7%BD%91%E5%8D%A1%E9%A9%B1%E5%8A%A8/</guid><description>博通BCM4360网卡驱动在最小化Linux下的安装流程。</description><pubDate>Sat, 20 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;在Arch Linux上安装博通BCM4360网卡驱动&lt;/h1&gt;
&lt;p&gt;最近想在2015款MacBook Air上安装Debian 13，但是无论如何也没办法连上网。后来发现这台机器用的网卡是Broadcom臭名昭著的BCM4360，只能用闭源驱动broadcom-wl。正好也想试试Arch Linux，因此本文就在Arch Linux下安装这个网卡的驱动。本文并不保证操作过程中一定正确不出问题，详细内容请参考&lt;a href=&quot;https://wiki.archlinux.org.cn/title/Broadcom_wireless#broadcom-wl&quot;&gt;Broadcom 无线 - ArchWiki &lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;准备&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;/p&gt;
&lt;p&gt;相比于最小化安装的Debian 13，Arch Linux的好处就是在live环境可以联网，并且往系统里面直接安装软件。所以，如果是Debian的最小化安装，有可能需要另一台能联网的电脑，并用它来下载非自由固件，然后用U盘拷过去安装。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;可能需要准备：安装Arch Linux的所有设备（例如写入Arch Linux镜像的U盘），一部有足够流量的手机（在这里使用的是iPhone），一根数据线以连接电脑和手机。&lt;/p&gt;
&lt;h2&gt;安装Arch Linux&lt;/h2&gt;
&lt;p&gt;安装Arch Linux的过程在此不做赘述。如果有需要可以参考&lt;a href=&quot;https://arch.icekylin.online/&quot;&gt;archlinux 简明指南&lt;/a&gt;、&lt;a href=&quot;https://github.com/SHORiN-KiWATA/ShorinArchExperience-ArchlinuxGuide/wiki/%E5%AE%89%E8%A3%85ArchLinux&quot;&gt;安装ArchLinux&lt;/a&gt;与&lt;a href=&quot;https://wiki.archlinux.org.cn/title/Installation_guide&quot;&gt;安装指南 - ArchWiki &lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;由于Arch Linux没有BCM4360的驱动，因此无法通过无线网进行安装。因此可以使用手机进行有线网连接。以iOS 26为例，打开设置 &amp;gt; 个人热点 &amp;gt; 允许其他人加入后，打开蜂窝网络，将手机用数据线连接电脑，在手机上选择“信任”后，输入密码，即可实现有线连接。使用&lt;code&gt;ip a&lt;/code&gt;或&lt;code&gt;ping baidu.com&lt;/code&gt;来检验网络连接。&lt;/p&gt;
&lt;p&gt;对于iPhone，在安装完成之后要在live环境下安装&lt;code&gt;ifuse&lt;/code&gt;包。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacstrap -S /mnt infuse
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;由于新系统中没有&lt;code&gt;infuse&lt;/code&gt;包，除非在live环境下完成无线网的配置，否则为了保证在新系统中能够正常联网，有必要提前安装该依赖。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;/p&gt;
&lt;p&gt;没有用过Android设备进行有线网连接，但是根据&lt;a href=&quot;https://wiki.archlinux.org.cn/title/Broadcom_wireless#broadcom-wl&quot;&gt;Broadcom 无线 - ArchWiki &lt;/a&gt;的说法，Android设备有线网共享似乎不需要额外的依赖。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;安装驱动&lt;/h2&gt;
&lt;p&gt;Arch Linux正常安装完成之后，就可以安装网卡驱动了。&lt;/p&gt;
&lt;p&gt;首先确认网卡确实为BCM4360。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lspci -vnn | grep -i broadcom
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果为BCM4360，此时应该没有&lt;strong&gt;无线&lt;/strong&gt;接口。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip link show
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;此时端口名称应该是没有以“wl”开头的接口。&lt;/p&gt;
&lt;p&gt;BCM4360网卡使用的是broadcom-wl驱动。这种驱动有两种变体：broadcom-wl与broadcom-wl-dkms。本文使用dkms变体。&lt;/p&gt;
&lt;h3&gt;安装yay&lt;/h3&gt;
&lt;p&gt;由于broadcom-wl是不开源的，因此只能通过AUR获取。本文采用&lt;code&gt;yay&lt;/code&gt;进行安装。首先添加archlinuxcn源。打开pacman配置文件。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo vim /etc/pacman.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在文件底部写入任意一个镜像源。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch # 清华大学开源软件镜像站
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch # 哈尔滨工业大学开源镜像站
Server = https://repo.huaweicloud.com/archlinuxcn/$arch # 华为开源镜像站
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确保网络连接正常。更新源并安装签名与yay。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -Sy
sudo pacman -S archlinuxcn-keyring 
sudo pacman -S yay
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装驱动&lt;/h3&gt;
&lt;p&gt;安装网卡驱动与必要的依赖。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo pacman -S dkms linux-headers broadcom-wl-dkms
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有问题，这一步完成后驱动应该已经安装完成。&lt;/p&gt;
&lt;h3&gt;加载驱动&lt;/h3&gt;
&lt;p&gt;为了防止broadcom-wl驱动与其他驱动冲突，先卸载其他的驱动。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo modprobe -r b43 b43legacy ssb bcma #可以查看所有网卡驱动后卸载
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]&lt;/p&gt;
&lt;p&gt;如果觉得可能是冲突的问题，还可以将其他驱动屏蔽。编辑配置文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /etc/modprobe.d/blacklist.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;屏蔽有可能会出现冲突的驱动，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;blacklist b43
blacklist b43legacy
blacklist ssb
blacklist bcma
blacklist wl
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;现在可以加载新驱动了。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo modprobe wl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一般来说我们希望开机自动加载驱动，因此我们添加wl到配置文件中。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;wl&quot; &amp;gt; /etc/modules-load.d/wl.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;检查驱动&lt;/h3&gt;
&lt;p&gt;检查模块是否正确加载。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;lsmod | grep wl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果出现&lt;code&gt;wl&lt;/code&gt;，说明模块已经正确加载。&lt;/p&gt;
&lt;p&gt;检查无线网口。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip link show
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果这个时候多出一个无线接口，那么说明驱动已经正确加载了。可以使用&lt;code&gt;nmcli&lt;/code&gt;工具进行网络连接。如果暂时不能联网，可以尝试重启。&lt;/p&gt;
</content:encoded></item><item><title>部署一个自己的QQ机器人</title><link>https://arslinear.com/posts/%E9%83%A8%E7%BD%B2%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84qq%E6%9C%BA%E5%99%A8%E4%BA%BA/</link><guid isPermaLink="true">https://arslinear.com/posts/%E9%83%A8%E7%BD%B2%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E7%9A%84qq%E6%9C%BA%E5%99%A8%E4%BA%BA/</guid><description>本案例记录了在Debian 12服务器上，使用NapCat部署QQ机器人的方法。在此基础上可以方便地添加机器人功能，比如舞萌查分、AI聊天，以及Koishi、NoneBot应用市场里所提供的各种插件功能。</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;由于服务器迁移，本文图片存在遗失。但不影响文字部分的阅读。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本案例记录了部署QQ机器人的过程，可以将你闲置的QQ账号调教成一个机器人供群友使用。&lt;/p&gt;
&lt;p&gt;本案例使用了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;云服务器：本案例中云服务器配置为2核2G，系统为Debian 12；&lt;/li&gt;
&lt;li&gt;本地计算机：本案例中本地计算机的系统为Windows 11。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;服务器系统基础配置&lt;/h3&gt;
&lt;h4&gt;安装OpenSSH组件&lt;/h4&gt;
&lt;p&gt;本案例所使用的本地计算机系统为Windows 11，下面所需要的部分指令需要用到OpenSSH相关组件。Windows 10和11一般是默认安装了OpenSSH客户端，如果需要检查可以打开“设置” → “系统” → “可选功能”，确保已安装OpenSSH客户端。&lt;/p&gt;
&lt;h4&gt;创建新用户并使用密钥登录&lt;/h4&gt;
&lt;p&gt;本案例采用的是Debian 12。首先，在云服务器中使用以下命令更新软件源。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接着，使用以下命令创建一个新的普通用户。注意，尽量&lt;strong&gt;避免&lt;/strong&gt;使用&lt;code&gt;root&lt;/code&gt;用户操作，这非常不安全。本案例后续的操作都将基于新普通用户进行。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adduser newuser #新建用户newuser
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;系统会提示你为该用户设置密码并填写一些可选信息（可以直接按回车跳过）。这个密码用于 &lt;code&gt;sudo&lt;/code&gt; 提权和备用登录方式，请务必设置一个强密码并记住它。&lt;/p&gt;
&lt;p&gt;如果你希望这个普通用户能够执行管理员命令，需要将其添加到 &lt;code&gt;sudo&lt;/code&gt; 组。由于本案例后续需要用到&lt;code&gt;sudo&lt;/code&gt;命令，建议加入&lt;code&gt;sudo&lt;/code&gt;组。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;usermod -aG sudo newuser
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;设置 SSH 目录&lt;/h4&gt;
&lt;p&gt;切换用户为新用户。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;su - newuser
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建&lt;code&gt;.ssh&lt;/code&gt;目录并设置&lt;code&gt;700&lt;/code&gt;权限。&lt;code&gt;700&lt;/code&gt;权限意味着只有文件所有者具有读写执行权限。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ~/.ssh
chmod 700 ~/.ssh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建 &lt;code&gt;authorized_keys&lt;/code&gt; 文件并设置&lt;code&gt;600&lt;/code&gt;权限。&lt;code&gt;600&lt;/code&gt;权限意味着只有文件所有者具有读写权限。这将是公钥的存储位置。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;生成 SSH 密钥对&lt;/h4&gt;
&lt;p&gt;SSH密钥对是在&lt;strong&gt;本地计算机&lt;/strong&gt;生成的。这里采用Ed25519算法生成SSH密钥。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh-keygen -t ed25519
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;系统会提示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enter file in which to save the key：密钥保存的位置。建议采用默认位置；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter passphrase (empty for no passphrase)：为私钥设置一个密码，即使私钥被盗也无法直接使用；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter same passphrase again：确认密码。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完成后，将在SSH密钥目录下创建两个文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id_ed25519&lt;/code&gt;：私钥，保存在本地，不可泄漏。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;id_ed25519.pub&lt;/code&gt;：公钥，上传到服务器。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;将公钥上传到服务器&lt;/h4&gt;
&lt;p&gt;有多种方法可以将公钥上传至服务器。最好的方法是采用&lt;code&gt;ssh-copy-id&lt;/code&gt;方法上传。在&lt;strong&gt;本地&lt;/strong&gt;运行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh-copy-id -i ~/.ssh/id_ed25519.pub newuser@your_server_ip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;就可以上传成功了。&lt;/p&gt;
&lt;p&gt;但是，由于本案例所使用的PowerShell不支持&lt;code&gt;ssh-copy-id&lt;/code&gt;，这里采用手动复制的方法上传。&lt;/p&gt;
&lt;p&gt;在&lt;strong&gt;本地计算机&lt;/strong&gt;上，查看公钥内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在服务器&lt;code&gt;root&lt;/code&gt;会话中，使用&lt;code&gt;echo&lt;/code&gt;命令导入公钥：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;粘贴你复制的公钥内容&quot; &amp;gt;&amp;gt; /home/newuser/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用以下命令测试登录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh newuser@your_server_ip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果没有设置密钥密码，直接登录说明配置成功。如果设置了密钥密码，在确认密码后成功登录，同样配置成功。&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;禁用密码登录&lt;/strong&gt;与root直接登录&lt;/h4&gt;
&lt;p&gt;在&lt;strong&gt;服务器&lt;/strong&gt;上，以 root 身份编辑 SSH 服务器配置文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到并修改以下行，确保它们如下所示：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 禁止 root 用户直接 SSH 登录
PermitRootLogin no

# 允许公钥认证
PubkeyAuthentication yes

# 禁用密码登录
PasswordAuthentication no

# 确保允许使用授权密钥文件
AuthorizedKeysFile .ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在，再登录root就会提示&lt;code&gt; Permission denied (publickey).&lt;/code&gt;。同时也不能使用密码直接登录，保障服务器的安全。&lt;/p&gt;
&lt;h3&gt;1Panel面板管理软件&lt;/h3&gt;
&lt;p&gt;为了实现便捷且可视化的服务器管办理，本案例安装了Linux运维管理面板。可以采用1Panel、宝塔等面板。本案例采用了1Panel。&lt;/p&gt;
&lt;h4&gt;1Panel的安装与配置&lt;/h4&gt;
&lt;p&gt;由于1Panel的安装需要&lt;code&gt;sudo&lt;/code&gt;权限，因此我们使用以下命令进行安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo bash -c &quot;$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;选择默认的路径，并安装好Docker之后便进入1Panel的配置。依次配置端口、安全入口、用户名和密码，1Panel就会自动启动。当然，这些内容后续还可以在1Panel中修改。&lt;/p&gt;
&lt;p&gt;如果使用的是云服务器，在安全组中打开端口后，便可以在浏览器中访问服务器后台。&lt;/p&gt;
&lt;h4&gt;打开防火墙&lt;/h4&gt;
&lt;p&gt;Debian 12可能没有默认UFW防火墙，因此为了保障服务器安全，有必要安装并打开防火墙。&lt;/p&gt;
&lt;p&gt;使用以下命令安装UFW。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install ufw
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置默认策略。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw default deny incoming # 默认拒绝所有传入连接
sudo ufw default allow outgoing # 默认允许所有传出连接
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;允许必要的服务。本案例中只有&lt;code&gt;ssh&lt;/code&gt;和1Panel的服务是必须的。如果服务器还有web服务，那么也应该相应允许&lt;code&gt;http&lt;/code&gt;和&lt;code&gt;https&lt;/code&gt;服务。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw allow ssh # 允许 SSH 连接
sudo ufw allow 10010/tcp  # 1Panel（如果端口为10010）

sudo ufw allow http
sudo ufw allow https # 允许 HTTP 和 HTTPS
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;开启两步验证（可选）&lt;/h4&gt;
&lt;p&gt;如果你有2FA验证软件（如Google Authenticator、Microsoft Authenticator、1Password，iOS的“密码”等），可以设置1Panel的两步验证。在“面板设置” → “安全”中开启“两步验证”，扫描二维码后输入验证码便可开启。这样在登录后需要二次验证，防止暴力破解，进一步确保1Panel端口的安全。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/Cypressca/Pics@main/%E4%B8%A4%E6%AD%A5%E9%AA%8C%E8%AF%81.png&quot; alt=&quot;两步验证&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;安装Fail2ban（可选）&lt;/h4&gt;
&lt;p&gt;安装Faile2ban可以有效保护服务器以免遭受暴力攻击。&lt;/p&gt;
&lt;p&gt;安装Fail2ban。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Debian 12 及以上的版本需要手动安装 rsyslog。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install rsyslog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动 Fail2ban 服务并设置开机自启动。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl start fail2ban
sudo systemctl enable fail2ban
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完成后，也可以在1Panel面板的“工具箱” → “Fail2ban”中开启和设置Fail2ban。&lt;/p&gt;
&lt;h3&gt;QQ机器人部署与运行&lt;/h3&gt;
&lt;h4&gt;安装NapCat&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;由于近期出现了大规模针对基于NapCat的QQ机器人的攻击，这里&lt;strong&gt;不建议&lt;/strong&gt;使用NapCat进行QQ机器人部署。如果一定要使用NapCat，请不要使用NapCat WebUI，在公网暴露NapCat的端口。如果一定要使用WebUI，也请一定要设置强token以防止攻击。建议关闭WebUI并配置好防火墙、监听本地回环127.0.0.1。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;根据NapCat官方文档，可以采用以下命令一键安装NapCat：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -o \
napcat.sh \
https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh \
&amp;amp;&amp;amp; sudo bash napcat.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本案例采用&lt;code&gt;NapCat TUI-CLI&lt;/code&gt;工具。&lt;/p&gt;
&lt;p&gt;安装完成后首次登陆需要输入QQ号并扫码登陆。后续需要配置NapCat可以使用以下命令启动：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo napcat
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;安装Koishi&lt;/h4&gt;
&lt;p&gt;首先需要在1Panel的“应用商店”中，搜索“MySQL”，按照默认配置进行安装并启用。&lt;/p&gt;
&lt;p&gt;同样搜索“Koishi”，选择“端口外部访问”，安装并启用。&lt;/p&gt;
&lt;p&gt;这样在本机公网IP的&lt;code&gt;5140&lt;/code&gt;端口（默认端口）就可以配置Koishi了。&lt;/p&gt;
</content:encoded></item></channel></rss>