<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Ricardo 的博客</title><link>/posts/</link><description>Recent content in Posts on Ricardo 的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 31 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>搭建 AI-Nagi 的过程</title><link>/posts/ai-nagi-setup/</link><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate><guid>/posts/ai-nagi-setup/</guid><description>&lt;p&gt;作者：晚空秋&lt;/p&gt;&#10;&lt;p&gt;在红岩网校看到「卷娘」这个 AI 形象时，第一反应是好奇：它是怎么来的？背后接了什么东西？能不能自己也做一个？&lt;/p&gt;&#10;&lt;p&gt;顺着这个问题问下去，发现原理并不神秘——一个 QQ 协议端负责收发消息，一个机器人框架负责接大模型，中间用 WebSocket 连起来。于是就有了下面这个属于我自己的 QQ AI：&lt;strong&gt;Nagi&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;这篇记录整个搭建过程，包括踩过的坑。&lt;/p&gt;&#10;&lt;h2 id="一需要准备什么"&gt;&#10; 一、需要准备什么&#10; &lt;a class="heading-link" href="#%e4%b8%80%e9%9c%80%e8%a6%81%e5%87%86%e5%a4%87%e4%bb%80%e4%b9%88"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;组件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;作用&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;说明&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;QQ 小号&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;给 AI 一个身份&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;强烈建议用小号，原因见下&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;NapCat&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;QQ 协议端&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;让程序能像人一样收发 QQ 消息&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;AstrBot Launcher&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;图形化安装器 + 进程管家&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;本身不含 AI 能力，只负责把 AstrBot 装起来、跑起来&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;AstrBot&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;机器人主体&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;接大模型、管人格、装插件&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;大模型 API Key&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;提供“智能”&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;要花钱&lt;/strong&gt;，按 token 计费&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="关于风险先说清楚"&gt;&#10; 关于风险，先说清楚&#10; &lt;a class="heading-link" href="#%e5%85%b3%e4%ba%8e%e9%a3%8e%e9%99%a9%e5%85%88%e8%af%b4%e6%b8%85%e6%a5%9a"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;NapCat 并不是腾讯官方提供的接口，它的做法是&lt;strong&gt;注入进程接管 QQ 客户端&lt;/strong&gt;。这本质上违反了《QQ 软件许可协议》，存在被判定为异常登录、甚至封号的可能。&lt;/p&gt;&#10;&lt;p&gt;所以：&lt;strong&gt;一定用小号&lt;/strong&gt;。真被封了也不心疼，主号不要冒险。&lt;/p&gt;&#10;&lt;h3 id="关于成本"&gt;&#10; 关于成本&#10; &lt;a class="heading-link" href="#%e5%85%b3%e4%ba%8e%e6%88%90%e6%9c%ac"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h3&gt;&#10;&lt;p&gt;这套东西不是免费的。AI 每回复一次都在消耗 token，你可以理解为「每说一句话都在花钱」。日常聊天花费很小，但如果拉进群、被频繁 @，账单会肉眼可见地涨。&lt;/p&gt;</description></item><item><title>修改hosts快速连接GitHub</title><link>/posts/modify-hosts-for-github/</link><pubDate>Sat, 31 Oct 2026 00:00:00 +0000</pubDate><guid>/posts/modify-hosts-for-github/</guid><description>&lt;p&gt;GitHub 打开慢或者干脆打不开，多半是域名被解析到了一个不可用的 IP。手动把域名绑到一个能通的 IP 上，就能绕过这个问题。&lt;/p&gt;&#10;&lt;p&gt;整个过程五步，十分钟内能做完。&lt;/p&gt;&#10;&lt;h2 id="第一步拿到可用的-ip"&gt;&#10; 第一步：拿到可用的 IP&#10; &lt;a class="heading-link" href="#%e7%ac%ac%e4%b8%80%e6%ad%a5%e6%8b%bf%e5%88%b0%e5%8f%af%e7%94%a8%e7%9a%84-ip"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;打开 cmd 窗口，输入：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cmd" data-lang="cmd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping github.com&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;按回车，会看到类似这样的输出：&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="/images/ping-github.png" alt="ping github.com 的输出，方括号里就是 IP"&gt;&lt;/p&gt;&#10;&lt;p&gt;方括号 &lt;code&gt;[]&lt;/code&gt; 里那一串数字就是 IP 地址，比如 &lt;code&gt;20.205.243.166&lt;/code&gt;。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;如果这里显示&amp;quot;请求超时&amp;quot;或&amp;quot;找不到主机&amp;quot;，说明当前网络连 ping 都不通，改 hosts 也没用，得换网络环境或用代理。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="第二步复制-ip-地址"&gt;&#10; 第二步：复制 IP 地址&#10; &lt;a class="heading-link" href="#%e7%ac%ac%e4%ba%8c%e6%ad%a5%e5%a4%8d%e5%88%b6-ip-%e5%9c%b0%e5%9d%80"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;把方括号里的 IP 复制下来，比如 &lt;code&gt;20.205.243.166&lt;/code&gt;。&lt;/p&gt;&#10;&lt;p&gt;只复制 IP 本身，后面的 &lt;code&gt;时间=100ms TTL=109&lt;/code&gt; 不要带上。&lt;/p&gt;&#10;&lt;h2 id="第三步以管理员身份运行记事本"&gt;&#10; 第三步：以管理员身份运行记事本&#10; &lt;a class="heading-link" href="#%e7%ac%ac%e4%b8%89%e6%ad%a5%e4%bb%a5%e7%ae%a1%e7%90%86%e5%91%98%e8%ba%ab%e4%bb%bd%e8%bf%90%e8%a1%8c%e8%ae%b0%e4%ba%8b%e6%9c%ac"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;在任务栏搜索框里输入 &lt;code&gt;记事本&lt;/code&gt;，右键选择 &lt;strong&gt;以管理员身份运行&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;这一步不能省。hosts 是系统文件，普通权限打开会保存失败。&lt;/p&gt;&#10;&lt;h2 id="第四步找到-hosts-文件"&gt;&#10; 第四步：找到 hosts 文件&#10; &lt;a class="heading-link" href="#%e7%ac%ac%e5%9b%9b%e6%ad%a5%e6%89%be%e5%88%b0-hosts-%e6%96%87%e4%bb%b6"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;在记事本左上角点 &lt;strong&gt;文件 → 打开&lt;/strong&gt;，地址栏进入：&lt;/p&gt;</description></item></channel></rss>