<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>小海博客</title><description>记录与分享</description><link>https://www.violet27chen.com/</link><language>zh_CN</language><item><title>用仓颉解决两道数组题：计数与最少会议室</title><link>https://www.violet27chen.com/posts/indexjiejue-in-cangjie/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/indexjiejue-in-cangjie/</guid><description>用仓颉做两道题——数组下标当桶统计数字出现次数、差分数组求最少会议室数，并对照 Python 写法说明为什么换了实现思路</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;两道题的迁移记录：统计一串数字里每个数字出现的次数，以及给定若干会议区间求最少需要几间会议室。Python 里用字典和动态列表就够了；换到仓颉后卡在三处——字典还没用熟、字符不能直接转 &lt;code&gt;Int64&lt;/code&gt;、数组没有 &lt;code&gt;remove&lt;/code&gt; 和 &lt;code&gt;append&lt;/code&gt;，于是改成「数组下标当桶」和「差分数组」两条路线。两个关键结论：字符 &lt;code&gt;&apos;0&apos;&lt;/code&gt; 的码点是 48，减 48 才是真正的数值；用「开始 +1、结束 −1」的差分数组，可以完全绕开对列表的动态增删。&lt;/p&gt;
&lt;h2&gt;前置条件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;能编译运行仓颉代码的环境（用 &lt;code&gt;getStdIn()&lt;/code&gt; 读标准输入需要 &lt;code&gt;import std.env.*&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;Python 3，用来对照两种写法的差异&lt;/li&gt;
&lt;li&gt;了解数组遍历，以及字符要先转成编码值（整数码点）这件事&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;统计每个数字出现的次数&lt;/h2&gt;
&lt;p&gt;Python 里最直接的办法是字典，取不到就当 0：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 字典解决统计数字问题
num = input()
count = {}
for i in num:
    count[i] = count.get(i, 0) + 1
for j in sorted(count.keys()):
    print(f&quot;{j}:{count[j]}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;仓颉的字典我还没用熟，于是换成数组下标当“桶”：数字本身就是下标，槽位里放出现次数。先在 Python 里把思路验证一遍：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 列表解决统计数字问题
num = input()
count = [0] * 10
for i in num:
    count[int(i)] += 1
for j in range(10):
    if count[j] == 0:
        continue
    else:
        print(f&quot;{j}:{count[j]}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;两种写法输出一致：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0BUANTU1UOXQIAC1ddBVUCWlYHU1YNFVMCTFxeUBVJSlhBHB4IBVVLAVUHHQBaBUpICFE&quot; alt=&quot;Pasted image 20261002005655.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;迁移到仓颉时卡了一下：它不会把字符自动转成 &lt;code&gt;Int64&lt;/code&gt;，强制转换还会报错。查资料后知道字符要先转成它的编码值（整数码点），逐个试出来 &lt;code&gt;&apos;0&apos;&lt;/code&gt; 的码点是 48，所以当前字符减 48 再转 &lt;code&gt;Int64&lt;/code&gt;，就是它在数组里的正确下标。照 Python 版的思路写出来：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 数组解决统计数字问题
import std.env.*
main(){
    let input = getStdIn().readln().getOrThrow()
    var count = Array&amp;lt;Int64&amp;gt;(10, repeat: 0)
    for(i in input where i&amp;gt;=48 &amp;amp;&amp;amp; i&amp;lt;=57){
        let num = Int64(i - 48)
        count[num] += 1
    }
    for (i in 0..=9 where count[i] != 0) {
        println(&quot;${i}:${count[i]}&quot;)
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVYWgBeUVYGAFJRC1MABANSVQdZCwNcFARTSF0LUxUTQlxPHUhbVwRLAVQOHQBTC0pICFE&quot; alt=&quot;Pasted image 20261002011014.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;顺带一提，&lt;code&gt;where i&amp;gt;=48 &amp;amp;&amp;amp; i&amp;lt;=57&lt;/code&gt; 这一段把非数字字符过滤掉了，输入里混了别的字符也不会越界或报错。&lt;/p&gt;
&lt;h2&gt;求最少会议室数&lt;/h2&gt;
&lt;p&gt;先说原本的思路：维护一个「正在占用的会议室结束时间」列表。来一场新会议时，如果它的开始时间不早于列表里最早的结束时间，说明那间会议室已经空出来、可以复用，就把这个最早的结束时间删掉；否则新开一间。列表最终的长度就是最少会议室数。Python 版：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;meeting_times = [(0, 600), (200, 700), (650, 1200)]
end_times = []
for start, end in meeting_times:
    if end_times:
        min_end_time = min(end_times)
        if start &amp;gt;= min_end_time:
            end_times.remove(min_end_time)
    end_times.append(end)
print(len(end_times))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUPAFBTBAQGXAdQUAdcUVABVwxQAlRcE1YCSQhdA0tFF1lOHRgKWwJLAFgOHQJTHRRWAQ&quot; alt=&quot;Pasted image 20261002013651.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;问题在于仓颉的数组既没有 &lt;code&gt;remove&lt;/code&gt; 也没有 &lt;code&gt;append&lt;/code&gt;，这条路走不通。于是改用差分数组：先扫一遍拿到最晚的结束时间，建一个长度为「最晚结束时间 + 1」的数组，在每个会议的开始位置 +1、结束位置 −1，最后从头到尾累加，累加过程中的峰值就是同时进行的会议数上限，也就是最少需要的会议室数。Python 验证：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;meeting_times = [(0, 600), (200, 700), (650, 1200)]
last_end_time = 0
for start, end in meeting_times:
    last_end_time = max(last_end_time, end)
# 长度加 1 是因为下标从 0 开始：最大键值是 1200，不加 1 的话最大下标只有 1199，写到 1200 会越界
changes = [0] * (last_end_time + 1)
for start, end in meeting_times:
    changes[start] += 1
    changes[end] -= 1
occupied = 0
rooms = 0
for change in changes:
    occupied += change
    rooms = max(rooms, occupied)
print(f&quot;最少需要的会议室: {rooms}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhoNAFcHAlNRVlVTClUMBw9SV1BZA1YIEgVRHQsIVU4TEVcbHR4BWgJLAFgFHQJQHRRWAQ&quot; alt=&quot;Pasted image 20261002015348.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;同样思路的仓颉版：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;main(){
    let t = [(0, 600),(200,700),(650,1200)]
    var lastEnd = 0
    for((start,end) in t){
        lastEnd = max(lastEnd, end)
    }
    let changes = Array&amp;lt;Int64&amp;gt;(lastEnd + 1, repeat: 0)
    for ((begin, end) in t) {
        changes[begin] += 1
        changes[end] -= 1
    }
    var occupied = 0
    var rooms = 0
    for (change in changes) {
        occupied += change
        rooms = max(rooms, occupied)
    }
    println(&quot;最少需要的会议室:${rooms}&quot;)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行结果：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4PUlVeAVIPUAdXVwYPAAZRAAVRVwAMRQdUGgsPXxpJSlgeSBkBVgNLAVcDHQZUHRRWAQ&quot; alt=&quot;Pasted image 20261002015954.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;我在实现时卡住的地方&lt;/h2&gt;
&lt;h3&gt;仓颉里字符为什么不能直接转 Int64？&lt;/h3&gt;
&lt;p&gt;仓颉不会像 Python 的 &lt;code&gt;int()&lt;/code&gt; 那样把字符自动当数字。字符要先拿到它的编码值（整数码点），而 &lt;code&gt;&apos;0&apos;&lt;/code&gt; 的码点不是 0 而是 48，所以必须减 48 才是真正的数值。直接 &lt;code&gt;Int64(i)&lt;/code&gt; 拿到的是码点，不是数字本身。&lt;/p&gt;
&lt;h3&gt;差分数组怎么就等价于原来的增删列表？&lt;/h3&gt;
&lt;p&gt;差分数组把「复用会议室」变成了计数：开始 +1 表示占用一间，结束 −1 表示释放一间。从头累加得到的是「当前时刻正在进行几场会议」，这个累加值的峰值就是同时进行的上限，也就是至少要准备的会议室数。原来靠 &lt;code&gt;remove&lt;/code&gt; / &lt;code&gt;append&lt;/code&gt; 维持的那个列表长度，本质上就是这个峰值，所以两者结果一致；而差分数组只需要按下标改值，不需要动态增删。&lt;/p&gt;
&lt;h3&gt;数组长度为什么要「最晚结束时间 + 1」？&lt;/h3&gt;
&lt;p&gt;下标从 0 开始，要能访问到 &lt;code&gt;last_end_time&lt;/code&gt; 这个位置，长度就得是 &lt;code&gt;last_end_time + 1&lt;/code&gt;。用 &lt;code&gt;(0,600),(200,700),(650,1200)&lt;/code&gt; 这组数据举例，最晚结束时间是 1200，长度必须是 1201，否则写入 &lt;code&gt;changes[1200]&lt;/code&gt; 会越界。&lt;/p&gt;
&lt;h3&gt;差分数组适合什么场景？&lt;/h3&gt;
&lt;p&gt;适合数值范围已知、只对静态数据做区间加减、最后统一求前缀和的场景。代价是要先知道取值范围的上界（这里取最晚结束时间），并额外开一个等长的数组；如果时间跨度很大而会议数量很少，改成把时间点排序后再扫描会更省内存。&lt;/p&gt;
</content:encoded></item><item><title>华为仓颉学习笔记</title><link>https://www.violet27chen.com/posts/post-1790795388500/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/post-1790795388500/</guid><description>记录我学习华为仓颉时的零散实验、语法疑问和后续待验证内容。笔记以个人学习过程为主，不替代官方文档</description><pubDate>Wed, 30 Sep 2026 19:09:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一篇持续更新的索引。目前内容还很少，先把已经验证过的练习和仍待确认的问题分开记录，避免把未完成的结论写成教程。&lt;/p&gt;
&lt;p&gt;https://www.violet27chen.com/archive/?category=%E4%BB%93%E9%A2%89%E7%BC%96%E7%A8%8B&lt;/p&gt;
</content:encoded></item><item><title>我的第一个仓颉程序：运行过程与 Python 写法对照</title><link>https://www.violet27chen.com/posts/first-my-cangjie/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/first-my-cangjie/</guid><description>用 cjpm run 跑通第一个仓颉程序，记录仓颉与 Python 的写法差异——0..10 对应 range(10)，过滤条件从循环体里的 if 挪到了 for 头的 where</description><pubDate>Wed, 30 Sep 2026 18:29:00 GMT</pubDate><content:encoded>&lt;p&gt;用 cjpm run 跑通了第一个仓颉程序。它做的事很简单：打印 0 到 9 里的奇数。仓颉和 Python 的逻辑完全一样，差别全在写法上——范围写成 &lt;code&gt;0..10&lt;/code&gt;（对应 Python 的 &lt;code&gt;range(10)&lt;/code&gt;），而过滤条件从循环体里的 &lt;code&gt;if&lt;/code&gt; 挪到了 &lt;code&gt;for&lt;/code&gt; 头的 &lt;code&gt;where&lt;/code&gt;。下面是两次跑通的过程，以及两种写法的逐项对比。&lt;/p&gt;
&lt;h2&gt;前置条件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;装好仓颉 SDK，&lt;code&gt;cjpm&lt;/code&gt; 命令可用&lt;/li&gt;
&lt;li&gt;Python 3，用来对照两种写法的差异&lt;/li&gt;
&lt;li&gt;知道基本的 &lt;code&gt;for&lt;/code&gt; 循环和取模运算（&lt;code&gt;%&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;第一个程序&lt;/h2&gt;
&lt;p&gt;把代码存成项目根目录下的 &lt;code&gt;main.cj&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;main() {
    for (i in 0..10 where i % 2 == 1) {
        println(i)
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在项目根目录下敲 &lt;code&gt;cjpm run&lt;/code&gt;，终端输出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1
3
5
7
9
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;和 Python 写法的差异&lt;/h2&gt;
&lt;p&gt;同样的逻辑用 Python 写是这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for i in range(10):
    if i % 2 == 1:
        print(i)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;两段代码干的事完全一样，但结构差异一眼就能看出来：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;对比项&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;th&gt;仓颉&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;遍历范围&lt;/td&gt;
&lt;td&gt;&lt;code&gt;range(10)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0..10&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;过滤条件位置&lt;/td&gt;
&lt;td&gt;循环体里的 &lt;code&gt;if&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;for&lt;/code&gt; 头里的 &lt;code&gt;where&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;读法&lt;/td&gt;
&lt;td&gt;先遍历 0 到 9，再筛掉偶数&lt;/td&gt;
&lt;td&gt;遍历 0 到 9 中满足 &lt;code&gt;i % 2 == 1&lt;/code&gt; 的&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;0..10&lt;/code&gt; 对应 &lt;code&gt;range(10)&lt;/code&gt;，都是左闭右开。区别在过滤条件的位置：Python 的 &lt;code&gt;if&lt;/code&gt; 缩进在循环体里，仓颉的 &lt;code&gt;where&lt;/code&gt; 挂在 &lt;code&gt;for&lt;/code&gt; 的括号里。后者把范围和条件压在一行，少一层缩进，意图更直接。&lt;/p&gt;
&lt;h2&gt;紧凑写法对比&lt;/h2&gt;
&lt;p&gt;Python 里想写得紧凑点可以用生成器表达式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for i in (x for x in range(10) if x % 2 == 1):
    print(i)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;输出一样，但 &lt;code&gt;(x for x in ...)&lt;/code&gt; 这层壳比 &lt;code&gt;where&lt;/code&gt; 重。Python 日常还是写 &lt;code&gt;if&lt;/code&gt; 居多，仓颉等于把这个常见模式收进了语法本身。&lt;/p&gt;
&lt;p&gt;第一个程序就跑通了一个 &lt;code&gt;for&lt;/code&gt; + &lt;code&gt;where&lt;/code&gt;，最直接的感受是仓颉把 Python 里靠缩进和习惯表达的东西做成了关键字：&lt;code&gt;where&lt;/code&gt; 进 &lt;code&gt;for&lt;/code&gt; 头，少写一层 &lt;code&gt;if&lt;/code&gt;，读起来反而更清楚。&lt;/p&gt;
&lt;h2&gt;我实际遇到的几个问题&lt;/h2&gt;
&lt;h3&gt;仓颉的 0..10 是左闭右开吗？&lt;/h3&gt;
&lt;p&gt;是。&lt;code&gt;0..10&lt;/code&gt; 对应 Python 的 &lt;code&gt;range(10)&lt;/code&gt;，包含 0 不包含 10，实际遍历的是 0 到 9。如果要包含右端点，要写成 &lt;code&gt;0..=10&lt;/code&gt;（等价于 &lt;code&gt;range(11)&lt;/code&gt;），例如 &lt;code&gt;for (i in 0..=9)&lt;/code&gt; 会遍历到 9。&lt;/p&gt;
&lt;h3&gt;where 能等价于 Python 的 if 吗？&lt;/h3&gt;
&lt;p&gt;在遍历过滤这个场景下等价：两者都是「遍历时跳过不满足条件的元素」，逻辑上都是对每次迭代做一次判断。差别只在写法位置和多出来的那层缩进。&lt;code&gt;where&lt;/code&gt; 后面要加多个条件，继续用 &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; 连就行，比如 &lt;code&gt;for (i in input where i &amp;gt;= 48 &amp;amp;&amp;amp; i &amp;lt;= 57)&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;第一个程序要怎么跑起来？&lt;/h3&gt;
&lt;p&gt;把代码存成项目根目录下的 &lt;code&gt;main.cj&lt;/code&gt;，然后在项目根目录执行 &lt;code&gt;cjpm run&lt;/code&gt;。前提是仓颉 SDK 装好、&lt;code&gt;cjpm&lt;/code&gt; 命令可用；这个例子没有外部依赖，直接跑就行。&lt;/p&gt;
</content:encoded></item><item><title>用 52FRP 让异地好友加入 Minecraft：配置记录与安全提醒</title><link>https://www.violet27chen.com/posts/minecraft-frp-remote-lan/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/minecraft-frp-remote-lan/</guid><description>记录用 52FRP 将本机 Minecraft Java 版房间映射到公网的过程，包含实名认证、TCP 隧道、frpc、SRV 记录和连不上时的排查。费用与免费额度以平台当前页面为准</description><pubDate>Mon, 28 Sep 2026 06:10:00 GMT</pubDate><content:encoded>&lt;p&gt;异地联机有多种方案，内网穿透的优点是不用单独租游戏服务器，代价是主机电脑必须一直开着，并且连接质量取决于本地网络和中继节点。本文记录我用 52FRP 配置 Java 版 TCP 隧道的过程；实名认证费用、返还和免费流量请以当前平台页面为准，不把“零成本”当成固定承诺。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;本文以 &lt;strong&gt;Java 版&lt;/strong&gt;为例。开始前请确认：你和好友的游戏版本（含模组/整合包）完全一致，且你的电脑在联机期间要一直开着、不休眠。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一、注册并登录 52FRP&lt;/h2&gt;
&lt;p&gt;打开注册链接：&lt;a href=&quot;https://frp.v27c.link/52frp&quot;&gt;https://frp.v27c.link/52frp&lt;/a&gt;，注册完成后登录，控制台长这样：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhoJUgECB1UFUQlRBFcJBw9SWwUEBlRYEwRWT18JUxsUSgseGBUJUQxLA1kEXElVBVIWFlhX&quot; alt=&quot;Pasted image 20260928133801.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;二、先完成实名认证（1 元，一次性）&lt;/h2&gt;
&lt;p&gt;国内的内网穿透服务都要实名，52FRP 也一样：&lt;strong&gt;没认证的话隧道建不了、节点也连不上&lt;/strong&gt;，所以这一步得放在领免费额度前面做。&lt;/p&gt;
&lt;p&gt;入口在控制台的&lt;strong&gt;用户中心 / 账号设置&lt;/strong&gt;（一般在右上角头像下拉里），填姓名 + 身份证号提交即可：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;认证需要支付 &lt;strong&gt;1 元&lt;/strong&gt;的身份核验费用，&lt;strong&gt;一次性&lt;/strong&gt;收取，提交后一般几分钟内就能通过&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;认证成功后会返还 2 元余额&lt;/strong&gt;，等于倒赚 1 元，可以留着抵扣按量流量（约 0.1 元 / GB，够跑 20GB）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;这 1 元是核验费，不是服务费：认证通过后，接下来兑换的免费流量和免费节点照常使用，不会另外扣钱，返的 2 元余额也一直在账户里。具体金额和入口以 52FRP 页面当前显示为准。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;三、先领免费额度&lt;/h2&gt;
&lt;p&gt;左侧进入 &lt;strong&gt;套餐商城 → 充值码兑换&lt;/strong&gt;，这里有两个官方放出的免费兑换码，按需各兑一次即可：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不限流量套餐码&lt;/strong&gt;：&lt;code&gt;www52frpcom666&lt;/code&gt;，30 天不限流量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;免费服务流量码&lt;/strong&gt;：&lt;code&gt;www52frpcom777&lt;/code&gt;，1000GB 流量包&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlfAgdeUAQCAFJaUFEMB1ACVQEEAAMMTwcEGVpaBEkRS18eThoKVVZLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928134112.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;兑换成功后回到套餐页面，能看到有效期和剩余流量已经生效：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkLVgQAVgcGBlBaClReAwAIBVNYBQcMElQPTlBaA0wWEFhMSUsIV1FLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928134307.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;联机本身耗流量很少，普通两人到四五人联机，1000GB 流量包通常用不完；人多或长期开服再考虑按量付费（约 0.1 元 / GB）或按月购买。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;四、先在本地把 MC 房间开起来&lt;/h2&gt;
&lt;p&gt;创建隧道时要填「本地端口」，而这个端口是 MC 给你的，所以&lt;strong&gt;先开游戏，再建隧道&lt;/strong&gt;，顺序别反了。&lt;/p&gt;
&lt;p&gt;进入单人世界，打开游戏菜单，选择 &lt;strong&gt;对局域网开放&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh1bAVdQUwdSUwMAAlJeVVVVW1NYBFcMEwAAHgxZUk4TRVcaSxxfUgJLClQBHQRTAUpICFE&quot; alt=&quot;Pasted image 20260928134942.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接着会让你填端口号，&lt;strong&gt;随便填一个并记牢&lt;/strong&gt;，比如 &lt;code&gt;25565&lt;/code&gt;；上面的「对其他玩家的设置」（是否允许作弊、游戏模式等）按自己喜好选：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVklYUlYDU1IDUFRQUQBdBQEABlQDVl1dRgtSGlFfVEgWFF8cSBpdWwVLClQBHQRTAUpICFE&quot; alt=&quot;Pasted image 20260928135120.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;确定之后，聊天栏会出现一行提示，说明你的局域网房间已经在&lt;strong&gt;你填的那个端口&lt;/strong&gt;上跑起来了。这个窗口先别关。&lt;/p&gt;
&lt;h2&gt;五、创建穿透隧道&lt;/h2&gt;
&lt;p&gt;回到 52FRP，进入 &lt;strong&gt;内网穿透 → 创建隧道&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhoAAgQHUwJTVlRXClcMUw8IW1cCBl0LFFRST1oMXhUTRF1PSUwJUQBLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928134445.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;目前免费可用的是下面这两个节点，其余节点需要充值（按量付费约 0.1 元 / GB，也可以按月购买）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxbAQFTAlFWBAUGUVxcAwZSAgUEA1JdEgQBSVxdU09GR10bTkgLVAFLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928134602.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择刚兑换到的&lt;strong&gt;免费香港节点&lt;/strong&gt;（离得近、延迟相对低）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhdVABVAQQHXVJSBgYNXgQAUVcFBwAJQQEPHg9dUB1BS15ISh8PU1ZLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928134749.png&quot; /&gt;&lt;/p&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;strong&gt;隧道类型&lt;/strong&gt;：选 &lt;strong&gt;TCP&lt;/strong&gt;（Java 版联机走 TCP）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地地址&lt;/strong&gt;：保持默认（127.0.0.1）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地端口&lt;/strong&gt;：填上一步 MC 里填的那个端口号，比如 &lt;code&gt;25565&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;远程端口&lt;/strong&gt;：点一下「随机」即可&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh5aVVJVVFVTAAkEClENUVNTUwQAAgNdEFNRT1tZBEwSQllJShsLVgZLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928135249.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;确认无误后点&lt;strong&gt;完成创建&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;六、复制配置文件&lt;/h2&gt;
&lt;p&gt;点击左侧 &lt;strong&gt;配置文件&lt;/strong&gt;，隧道类型里只勾选刚创建好的那一条隧道（&lt;strong&gt;不要多选&lt;/strong&gt;），右边生成的就是待会儿要用的配置内容，点复制存好：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgMVARRUFMEBgRUUlEOAFVUUwJXAFBaQAMEH15VUxVCQgxPHEwAAgJLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928135454.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;七、下载并配置 frp 客户端&lt;/h2&gt;
&lt;p&gt;下载 frp 工具：&lt;a href=&quot;https://pan.quark.cn/s/92afdac31781?pwd=vSFr&quot;&gt;https://pan.quark.cn/s/92afdac31781?pwd=vSFr&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载到本地并解压&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAIHBRhWTB9fEURIUQ5aSkQSXwtZAkUfV1EHV1ZcFAUDGlldAkkSRF0cHx8KAgFVVgRSVVAECgIWFlhX&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAIHBRhWTB9fEURIUQ5aSkQSXwtZAkUfV1BVAAQPRwdUGQ9eVUtISl4dGhtfAFUAUAJRUgAABV0WFlhX&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用记事本（或任意文本编辑器）打开解压出来的 &lt;code&gt;frpc.toml&lt;/code&gt;，把第六步复制的配置内容整个粘进去，保存&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUIAQNTB1MPUglRC1IIVwEBVg1UAlVdFAcFGAoOX0tAQlwcG0lYUgRLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928140039.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkxbBQBRAVQHAwEEVgYKUlIEUVMCUAEOEgEETFxfURxDQ1dNTRVaWwVLA1UFXUlUB1QWFlhX&quot; alt=&quot;Pasted image 20260928140126.png&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;双击&lt;strong&gt;一键运行&lt;/strong&gt;启动客户端&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAIHBRhWTB9fEURIUQ5aSkQSXwtZAkUfVQcHU1AMR1EHSV9bU0kWRFsbSUwKVwRUVwIPUQlQUVEWFlhX&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;启动成功的标志：终端里&lt;strong&gt;全是蓝色文字、没有其他颜色&lt;/strong&gt;（红色通常意味着报错，多半是配置粘错或本地端口填错）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhbAQRQAlYAVgBbVQUBUQcEBQ0EAwdfQQAEHA8IA0lBFwoeQExdWgxLA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260928140241.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;八、把地址发给好友&lt;/h2&gt;
&lt;p&gt;回到 52FRP 的 &lt;strong&gt;隧道管理&lt;/strong&gt;，复制这里的&lt;strong&gt;远程地址&lt;/strong&gt;，然后发给好友。&lt;/p&gt;
&lt;p&gt;远程地址长得像这样，中间有一个冒号分成两段：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;141.11.148.184:22593
①              ②
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;① 远程 IP&lt;/strong&gt;：52FRP 节点的公网入口，好友要连到这台机器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;② 远程端口&lt;/strong&gt;：节点上分给你的那个端口，用来把数据转发到你本地的 MC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;复制时&lt;strong&gt;两段都要带上&lt;/strong&gt;，只粘前半段是连不进来的。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtdAAFRBAUHUAUDV1MMBAYJVgdVVlRcRgMAFVwPAklGFlpPSE5dVQRLA1kBUUlbB10WFlhX&quot; alt=&quot;Pasted image 20260928140438.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;好友在 MC 里进 &lt;strong&gt;多人游戏 → 添加服务器&lt;/strong&gt;（或直接连接），把这段地址粘进去，就能进你的房间了：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0KUQQAB1QABAEDUFQNU1BVAgcABAYMRFYFTltbBUwTR1geQB9bUwRLClQBHQRTAUpICFE&quot; alt=&quot;Pasted image 20260928140623.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;觉得这串「远程 IP + 冒号 + 远程端口」不好记、端口一变还得挨个通知？可以看第九步（可选），用域名 + SRV 记录让好友只输域名就能进。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;联机结束后，记得关掉那个黑色终端窗口，隧道就断开了。&lt;/p&gt;
&lt;h2&gt;九、（可选）不想记端口？用一个域名代替（SRV 记录）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;这一步是&lt;strong&gt;可选的&lt;/strong&gt;。到第八步为止，好友已经能用远程地址进你的房间了；这一步只是把「远程 IP + 冒号 + 远程端口」简化成只填域名，不想要可以跳过，直接去看常见问题。另外它需要你自己有一个域名（或用免费域名），比前面多花几分钟。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;隧道重建后远程端口可能会变，好友就得改一遍地址。更省事的做法是&lt;strong&gt;给这个地址挂一个域名&lt;/strong&gt;：好友永远只填域名，端口交给 DNS 的 &lt;strong&gt;SRV 记录&lt;/strong&gt;去翻译。&lt;/p&gt;
&lt;p&gt;原理就两句话：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A 记录&lt;/strong&gt;负责「域名 → 远程 IP」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SRV 记录&lt;/strong&gt;负责「端口 → 远程端口」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对应到第八步那个地址：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;名字&lt;/th&gt;
&lt;th&gt;例子 &lt;code&gt;141.11.148.184:22593&lt;/code&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;&lt;strong&gt;远程 IP&lt;/strong&gt;（①）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;141.11.148.184&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A 记录（或 CNAME）的&lt;strong&gt;记录值&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;远程端口&lt;/strong&gt;（②）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;22593&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SRV 记录的&lt;strong&gt;端口&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你的远程地址前面不是 IP 而是一串域名，那就把它当成「远程主机」看待，第 2 步改用 CNAME 即可，其它不变。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;准备一个域名&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;随便一个便宜的 &lt;code&gt;.top&lt;/code&gt; / &lt;code&gt;.xyz&lt;/code&gt; 一年也就十来块；不想花钱可以用免费域名（&lt;code&gt;eu.org&lt;/code&gt;、&lt;code&gt;dynv6.net&lt;/code&gt;、&lt;code&gt;afraid.org&lt;/code&gt;）。&lt;strong&gt;注意要挑支持 SRV 记录的&lt;/strong&gt;，把 DNS 托管到 Cloudflare 是免费且支持 SRV 的稳妥选择。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;解析远程 IP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;到 DNS 解析面板加一条记录，主机记录填 &lt;code&gt;mc&lt;/code&gt;，记录值填&lt;strong&gt;远程 IP&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;远程 IP 是一串数字 → 类型选 &lt;strong&gt;A&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;远程 IP 本身是个域名 → 类型选 &lt;strong&gt;CNAME&lt;/strong&gt;（末尾要不要加点，按面板要求来）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVYAgJQAlZRVQNaAQdcBwdUUwZWBAQLRQAHGF5dVhRHSlgcTxUKBgNLA1QEUUlQB1EWFlhX&quot; alt=&quot;Pasted image 20260929005401.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;代理状态保持**「仅 DNS」**，别开橙色云（CDN 代理）：开了之后 SRV 查询和 MC 直连都会出问题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;解析远程端口（SRV）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;再加一条 SRV 记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主机记录：&lt;code&gt;_minecraft._tcp.mc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;服务 &lt;code&gt;_minecraft&lt;/code&gt;、协议 &lt;code&gt;_tcp&lt;/code&gt;（面板分开填就照这个填）&lt;/li&gt;
&lt;li&gt;优先级 &lt;code&gt;0&lt;/code&gt;、权重 &lt;code&gt;5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;端口：&lt;strong&gt;远程端口&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;目标：&lt;code&gt;mc.example.com&lt;/code&gt;（也就是第 2 步解析好的那个主机名）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgIBgVSClBTVFJQBwENVFJWB1BXVwFfFwNTHwpUVxwUQl4dSBxaAAxLA1QCV0lQBFEWFlhX&quot; alt=&quot;Pasted image 20260929005402.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;国内面板通常把这几项写成一行记录值：&lt;code&gt;0 5 35565 mc.example.com&lt;/code&gt;（端口换成你自己的远程端口）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;端口变了只要改这一条 SRV 的端口号即可，好友那边填的域名完全不用动——这才是这套方案的真正价值。另外 &lt;strong&gt;基岩版不支持 SRV&lt;/strong&gt;，这套只对 Java 版有效。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;等生效并测试&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DNS 生效通常几分钟，最多等半小时。可以在命令行验证：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nslookup -q=srv _minecraft._tcp.mc.example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;能查到 SRV 记录后，好友在 MC 里直接填 &lt;code&gt;mc.example.com&lt;/code&gt; 就能进房间，不用带端口。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;常见问题&lt;/h2&gt;
&lt;h3&gt;一定要实名认证吗&lt;/h3&gt;
&lt;p&gt;要。国内的内网穿透服务都要求实名，52FRP 未认证时建不了隧道、连不上节点。核验费用 1 元、一次性收取，&lt;strong&gt;认证通过后还会返还 2 元余额&lt;/strong&gt;，等于倒赚 1 元，之后兑换的免费流量和免费节点照常用，不会额外扣费。&lt;/p&gt;
&lt;h3&gt;好友提示连不上，先查这几项&lt;/h3&gt;
&lt;p&gt;按顺序排查：① 你电脑上 frpc 的终端窗口是否还开着、有没有报错；② 发给好友的地址里&lt;strong&gt;远程 IP 和远程端口是不是都复制了&lt;/strong&gt;（只粘了前半段进不去）；③ MC 里「对局域网开放」是否还在生效（重新开放会换端口，需要同步改隧道）；④ 你和好友的游戏版本、模组是否完全一致。&lt;/p&gt;
&lt;h3&gt;用了域名，好友还是进不去怎么办&lt;/h3&gt;
&lt;p&gt;先用 &lt;code&gt;nslookup -q=srv _minecraft._tcp.mc.example.com&lt;/code&gt; 确认 SRV 记录有没有生效；再检查三条：SRV 里的&lt;strong&gt;目标主机名自己要能解析&lt;/strong&gt;（也就是第 2 步的 A 记录得先通）、端口填的是&lt;strong&gt;远程端口&lt;/strong&gt;不是本地端口、你的 DNS 服务商是否支持 SRV 记录（不支持就换 Cloudflare）。&lt;/p&gt;
&lt;h3&gt;我把电脑关了，好友还能进吗&lt;/h3&gt;
&lt;p&gt;不能。这套方案的主机就是你自己的电脑，frpc 窗口关掉、电脑关机或休眠，隧道就断了，好友立刻掉线。想 24 小时在线得另租服务器。&lt;/p&gt;
&lt;h3&gt;免费额度够几个人玩&lt;/h3&gt;
&lt;p&gt;够用。普通 2–5 人联机，1000GB 流量包基本用不完；不限流量套餐码有效期 30 天，到期后重新兑换或改用按量付费（约 0.1 元 / GB）即可。&lt;/p&gt;
&lt;h3&gt;玩的是基岩版（手机 / Win10 版）怎么办&lt;/h3&gt;
&lt;p&gt;本文是 Java 版的 TCP 隧道。基岩版走的是 UDP，创建隧道时&lt;strong&gt;隧道类型要选 UDP&lt;/strong&gt;，本地端口填游戏里提示的那个（基岩版默认是 19132），其余步骤相同。基岩版不支持 SRV 记录，第九步对它无效。&lt;/p&gt;
&lt;h3&gt;延迟高、卡顿怎么缓解&lt;/h3&gt;
&lt;p&gt;优先选离双方最近的免费节点（香港节点对南方用户通常更稳）；其次让主机电脑性能好一点、把视频设置里的视距调低；如果跨运营商严重，可以让主机开手机热点试一次定位是不是宽带的问题。&lt;/p&gt;
&lt;h3&gt;把端口暴露到公网安全吗&lt;/h3&gt;
&lt;p&gt;只要地址不外传，陌生人扫到的概率很低，但&lt;strong&gt;不建议把地址发到公开社群&lt;/strong&gt;。建议：不用时就关掉 frpc、存档定期备份。房间开着期间任何人拿到地址都能进来。&lt;/p&gt;
&lt;h2&gt;安全与维护&lt;/h2&gt;
&lt;p&gt;只把游戏端口提供给可信好友，定期更换或撤销不用的隧道，不要在同一台机器上暴露管理面板。公网地址会被扫描，游戏服务端也应开启白名单并使用正版身份验证。&lt;/p&gt;
&lt;p&gt;整套流程其实就三件事：&lt;strong&gt;游戏里开局域网拿到端口 → 52FRP 建一条指向这个端口的隧道 → 本地跑 frpc&lt;/strong&gt;。跑通一次之后，下次联机只要改一下本地端口、重新启动 frpc 就行，一分钟的事。愿意多折腾几分钟的话，再配一个域名和 SRV 记录，连端口都不用记了（这一步可选）。&lt;/p&gt;
&lt;p&gt;如果你在哪个步骤卡住了，欢迎在评论区贴报错截图，或者来 &lt;a href=&quot;https://www.violet27chen.com/qq&quot;&gt;QQ 群聊&lt;/a&gt;里直接问。&lt;/p&gt;
</content:encoded></item><item><title>27c.site 发布：我做的 AI 建站工具与实际限制</title><link>https://www.violet27chen.com/posts/27c-site-launch/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/27c-site-launch/</guid><description>介绍我做的 27c.site：用自然语言生成并发布静态网站。文章包含使用流程、适合的场景、实现思路和当前限制，不把它包装成适合所有项目的方案</description><pubDate>Mon, 07 Sep 2026 10:35:00 GMT</pubDate><content:encoded>&lt;h1&gt;27c.site 发布：我做的 AI 建站工具与实际限制&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;一句话介绍：把想法告诉 Cursor、Trae、WorkBuddy 这类&lt;strong&gt;能运行命令&lt;/strong&gt;的 AI，它会自己写代码、生成配图、把网站发布上线，最后交给你一个能直接访问的网址。你不需要买服务器、不需要配域名解析、不需要碰任何部署后台。平台地址 &lt;a href=&quot;https://27c.site&quot;&gt;27c.site&lt;/a&gt;（备用 &lt;a href=&quot;https://27ai.cloud&quot;&gt;27ai.cloud&lt;/a&gt;）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;它解决的是哪一类问题&lt;/h2&gt;
&lt;p&gt;想发一个东西——给朋友做的工具页、自己作品的展示页、一个活动报名页、一个知识合集——页面本身半小时就能搞定，但接下来呢？&lt;/p&gt;
&lt;p&gt;买虚拟主机、开 VPS、配 FTP、研究域名解析、等 SSL 证书……等你终于把网站传上去，折腾了两小时，最初的热情早就没了。&lt;/p&gt;
&lt;p&gt;或者你试过让 AI 帮你写页面——写得又快又好。然后呢？AI 把代码递给你，剩下上传、部署、绑定域名全是你的事。&lt;strong&gt;它写了，但发不出去。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;27c.site 就是为了补上这最后一步：让 AI 不只是帮你写网站，还能自己把它发上线。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsPBgVeUFcCU1BbAFZcUVMFUgYAAgEPTlMFTFEIBEwTS1keQR8MBlZLA1UDVUlbA1QWFlhX&quot; alt=&quot;01-home-hero.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;怎么用：复制一段话，说一个想法&lt;/h2&gt;
&lt;p&gt;整个过程就两步。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一步&lt;/strong&gt;，把下面这段话发给你的 AI（建议用 Cursor、Trae、WorkBuddy 这类能跑命令的工具，豆包这类 AI 应用开&lt;strong&gt;专家模式&lt;/strong&gt;也行；普通聊天模式一般不行）：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 27c.site 上创建账号并部署我的网站。你可以是独立 AI 应用，也可以是 AI 编程工具里的 AI；请使用 27c-site MCP 工具完成全部流程。如果当前客户端无法安装 MCP，就读取服务器指令并使用 HTTP API 继续，不要把技术限制推回给我。请写好网站代码，生成需要的图片并一键发布；完成后告诉我线上地址。创建账号后请明确提醒我牢记平台用户名和密码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8JAgcFBQIGVFIEB1YLBFRVAVdSUFdfTwsPGlwJAh9EEFtMTRsBBwRLA1UDVUlbA1QWFlhX&quot; alt=&quot;02-getting-started.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二步&lt;/strong&gt;，用你自己的话描述想要什么网站。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;做一个赛博朋克风格的产品落地页，要有炫的交互效果&quot;&lt;/li&gt;
&lt;li&gt;&quot;给我的手作店做一个展示页，放商品图片和店铺地址&quot;&lt;/li&gt;
&lt;li&gt;&quot;做一个活动报名页，能填名字和手机号&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后就可以去倒杯水了。回来的时候，AI 会告诉你一个类似 &lt;code&gt;your-name.27c.site&lt;/code&gt; 的网址，点开就是已经上线的网站。&lt;/p&gt;
&lt;p&gt;中间发生了什么你不用管——AI 自己注册账号、写页面、做配图、完成发布。你唯一要做的一件事：&lt;strong&gt;记好 AI 帮你注册的账号密码&lt;/strong&gt;（它会被要求主动提醒你）。平台不收邮箱，密码忘了没有任何办法找回，这是刻意的安全设计。&lt;/p&gt;
&lt;p&gt;不知道从哪开始？首页放了几个现成的示例需求（赛博浪客、灵韵、哨兵 AI……），点一下复制，发给 AI 就能复现一个完整页面，适合先感受一下流程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsKUgdfAwVTXFAAUgYJAAUAWwxUA1AKF1FWSFkJVElDEAoaSU5fWwFLA1UDVUlVB1YWFlhX&quot; alt=&quot;03-examples.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这个&quot;赛博浪客&quot;示例我自己实测过一遍：提示词是在手机上发给&lt;strong&gt;豆包&lt;/strong&gt;的（专家模式），它自己注册账号、写页面、生成配图，几分钟后页面就上线了。下面就是它交出来的作业：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8IVAwHAgQPVAdTAwEBUA8IW1MEBwYJFVYBG19VUB9CE18ZTB8KAFdLA1gGV0lbC1EWDEZX&quot; alt=&quot;07-example-result.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;聊天窗口里能看到完整交付过程——线上地址、部署 ID、文件清单一次给齐：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8IVwRQVwUBB1dWUgULB1AIWlFVV1wNTwIGGA0OUhwWSlobTh1dV1BLA1gGXElTA1YBSEZeBA&quot; alt=&quot;08-doubao-complete.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;它能做到什么&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;给网站一个像样的网址。&lt;/strong&gt; 注册时选一个好记的子域名，比如 &lt;code&gt;my-shop.27c.site&lt;/code&gt;，发给谁都能直接打开。也可以绑定自己的域名。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;表单是真的能用。&lt;/strong&gt; 这是纯静态页面最难办的事：&quot;别人给我留言/报名/下单怎么办？&quot;不用你搭后端——网站需要什么，AI 就会开启对应的功能。留言板、报名表、评论、投票、预约，说出来就行，填的内容会真正存下来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;改坏了能撤回。&lt;/strong&gt; 每次修改都会留一份完整的历史，保留最近 50 次。AI 把首页改崩了？跟它说&quot;回滚到上一个版本&quot;，一下就回来了。大胆试错。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;图片、视频都能放。&lt;/strong&gt; 不只是网页，作品图、视频、文档这些大文件也有专门的通道，做作品集完全够用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;手机上也好看。&lt;/strong&gt; 生成的页面默认适配手机和电脑，全球节点加速，访问速度不挑地区。&lt;/p&gt;
&lt;h2&gt;适合拿来做些什么&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;那些&quot;太小了不值得正经部署&quot;的项目&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&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;li&gt;活动、聚会的&lt;strong&gt;报名页&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;给朋友、家人做的小东西——生日页、纪念页&lt;/li&gt;
&lt;li&gt;小生意的&lt;strong&gt;展示页&lt;/strong&gt;，带留言和商品目录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要写技术博客、要精细的 SEO 和评论系统，那还是传统的博客框架更合适；27c.site 的定位是让&quot;随便做个东西发出去&quot;这件事变得跟说一句话一样轻。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0PB1JTBwRSAAQHBlIMUlRTVFNRUVcBQAtRSV4PURVFRw1MTBxaVwdLA1UDVUlbA1QWFlhX&quot; alt=&quot;04-examples-cards.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;底下是什么&lt;/h2&gt;
&lt;p&gt;给好奇的同学两句话版本：整个平台跑在 Cloudflare 的全球网络上，你的网站文件存在离访客最近的节点，打开速度快；每份文件都有历史版本；网站需要记忆功能时接的是 Neon 的 Postgres 数据库。平台&lt;strong&gt;免费&lt;/strong&gt;，页面没有广告、没有第三方追踪脚本。&lt;/p&gt;
&lt;p&gt;整个项目也已经开源（MIT 协议）：&lt;a href=&quot;https://github.com/idea-internet/idea_internet&quot;&gt;github.com/idea-internet/idea_internet&lt;/a&gt;（另有 Gitee 镜像）。代码放出来，一方面欢迎懂行的同学来审，另一方面你给 AI 的每一步操作，背后发生了什么都是透明的。&lt;/p&gt;
&lt;h2&gt;目前不适合什么&lt;/h2&gt;
&lt;p&gt;27c.site 更适合原型、活动页和个人展示，不适合直接承载支付、用户隐私或复杂后端业务。AI 生成的代码和图片仍需要人工检查，发布前应确认内容版权、表单数据去向、依赖安全和域名归属。&lt;/p&gt;
&lt;p&gt;过去做网站，门槛在&quot;写代码&quot;；后来 AI 把这个门槛拆了，门槛变成了&quot;部署上线&quot;。27c.site 想把最后这道门槛也拆掉——&lt;strong&gt;你只管说想法，剩下的交给 AI&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果你手头正好有个小页面想发，或者单纯好奇&quot;跟 AI 说句话就能上线一个网站&quot;是什么体验，欢迎来 &lt;a href=&quot;https://27c.site&quot;&gt;27c.site&lt;/a&gt; 试试。用得开心或不爽，都欢迎在评论区聊聊，或者去仓库提 issue。&lt;/p&gt;
</content:encoded></item><item><title>基元律动 68 元新用户额度记录：领取、使用与限制</title><link>https://www.violet27chen.com/posts/tokenrhythm-free-68-credit/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/tokenrhythm-free-68-credit/</guid><description>基元律动（TokenRhythm）新用户福利实测：注册即领 10 元，安装 OpenSquilla 客户端再解锁 58 元，合计 68 元免费额度。三步搞定，API Key 可直接用于 Claude Code、Codex、Trae，也能在 OpenSquilla 里直接 AI 编程</description><pubDate>Sat, 29 Aug 2026 01:42:00 GMT</pubDate><content:encoded>&lt;p&gt;最近发现一个对 AI 编程用户很友好的福利活动：&lt;/p&gt;
&lt;p&gt;基元律动（TokenRhythm）新用户注册就送 &lt;strong&gt;10 元&lt;/strong&gt;额度，再安装 OpenSquilla 客户端并绑定 API Key，还能解锁剩下的 &lt;strong&gt;58 元&lt;/strong&gt;，合计 &lt;strong&gt;68 元&lt;/strong&gt;免费额度。&lt;/p&gt;
&lt;p&gt;这个额度可以直接当 API 余额用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 OpenSquilla 客户端里直接进行 AI 编程&lt;/li&gt;
&lt;li&gt;也可以把 API Key 填到 Claude Code、Codex、Trae 等第三方客户端使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面记录我实际走过的领取流程。额度、活动入口和可用范围都可能调整，操作前先以平台页面显示为准；文中“免费”不代表后续调用不会产生费用。&lt;/p&gt;
&lt;h1&gt;第一步：注册基元律动，领取 10 元额度&lt;/h1&gt;
&lt;p&gt;打开注册页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ai.v27c.link/tokenrhythm&quot;&gt;https://ai.v27c.link/tokenrhythm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;输入手机号，获取短信验证码即可登录。没注册过的手机号会自动创建账号，不需要单独走注册流程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwAVAQHUVlTBgAEVQcKUAcIV1EHBlNaFwAFFQpZAU8SFw4cHR0LAQ1LA1gGXElbA1EWFlhX&quot; alt=&quot;Pasted image 20260829092410.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;登录成功后，账户里会先到账 &lt;strong&gt;10 元&lt;/strong&gt;额度。&lt;/p&gt;
&lt;h1&gt;第二步：下载 OpenSquilla 客户端&lt;/h1&gt;
&lt;p&gt;想要解锁剩下的 58 元，需要下载 OpenSquilla 客户端：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ai.v27c.link/opensquilla&quot;&gt;https://ai.v27c.link/opensquilla&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8ABQ0CUAMEUAZTUAYOUFQIBgYFVwNbRAUHH1AOVh1CEV8cGEsKVQVLA1gFVUlbA1MWFlhX&quot; alt=&quot;Pasted image 20260829092718.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;OpenSquilla 是一个开源的桌面端 AI Agent 客户端，智能路由、持久记忆、安全沙箱这些能力都内置了，拿到 API Key 就能开箱即用。&lt;/p&gt;
&lt;p&gt;安装并打开 OpenSquilla，首次启动会要求你输入一个基元律动的 API Key。&lt;/p&gt;
&lt;h1&gt;第三步：创建 API Key&lt;/h1&gt;
&lt;p&gt;登录基元律动控制台，进入 API Key 管理页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tokenrhythm.studio/account/keys&quot;&gt;https://tokenrhythm.studio/account/keys&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击右上角的&lt;strong&gt;新建 API Key&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxaVABRC1RSAQAAAFdZA1NSUQYEBlIATlFVGQgIBhhGQVocQEwLBQJLA1gFVUlbB1AWFlhX&quot; alt=&quot;Pasted image 20260829092857.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;创建完成后，复制生成的 Key，接下来要用它完成绑定。&lt;/p&gt;
&lt;p&gt;顺便说一下，这个页面也给出了外部调用的信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Base URL：https://tokenrhythm.studio/v1
Chat 接口：/chat/completions
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;也就是说它兼容 OpenAI 风格的 API，后面接入第三方客户端时直接照着填就行。&lt;/p&gt;
&lt;h1&gt;第四步：绑定 API Key，解锁全部额度&lt;/h1&gt;
&lt;p&gt;把刚才复制的 API Key 粘贴到 OpenSquilla 首次启动时的输入框中，完成绑定。&lt;/p&gt;
&lt;p&gt;然后回到基元律动的「我的账户」页面：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tokenrhythm.studio/account/account&quot;&gt;https://tokenrhythm.studio/account/account&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;就能看到赠送额度已经全部到账：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhcBwwAVAQPBlVUAlEPVVcAAQAFBVVYFAdTH10IUBoSRQkdGk4LUgZLA1gFVUlbB1MWFlhX&quot; alt=&quot;Pasted image 20260829093021.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在这个页面可以随时查看额度的使用情况：实际可用总额、已到账赠送额度、累计调用次数、累计成本，都一目了然。&lt;/p&gt;
&lt;h1&gt;第五步：开始使用&lt;/h1&gt;
&lt;p&gt;额度到账之后，有两种用法。&lt;/p&gt;
&lt;h2&gt;方式一：在第三方客户端中使用&lt;/h2&gt;
&lt;p&gt;拿到 API Key 后，可以直接填到这些客户端里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;Trae&lt;/li&gt;
&lt;li&gt;其他支持自定义 OpenAI 兼容接口的客户端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;填入时使用上面提到的 Base URL 和 API Key 即可。&lt;/p&gt;
&lt;h2&gt;方式二：在 OpenSquilla 客户端中直接 AI 编程&lt;/h2&gt;
&lt;p&gt;如果不想折腾配置，也可以直接在 OpenSquilla 里用。&lt;/p&gt;
&lt;p&gt;打开 OpenSquilla，点击左下角的&lt;strong&gt;设置&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4IBlBSAlRWXVIBA10MVARVVVBRAAFcF1cPH1pdVhoSQVdMH0tfAQ1LA1IDUklaCl0WFlhX&quot; alt=&quot;Pasted image 20260829093342.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在设置中进入&lt;strong&gt;模型路由&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8NWwFVBQMOAwMEAVwPBwIEWgYEAlANQQFWSAxeXkhBQV1MTBsLAAdLA1IDUElaClEWFlhX&quot; alt=&quot;Pasted image 20260829093405.png&quot; /&gt;&lt;/p&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;strong&gt;智能模型路由&lt;/strong&gt;：按省 Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;固定模型&lt;/strong&gt;：稳定可控&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;选好模式后，把候选模型逐个配置好即可，每个路由下都可以单独配置模型。像 glm-5.3、glm-5.3-flash、qwen3.8-max、seed-2.1-turbo 这些模型都在候选列表里。&lt;/p&gt;
&lt;p&gt;配置完成之后，就可以直接在输入框里分配任务，开始 AI 编程了。&lt;/p&gt;
&lt;h1&gt;使用前的几个提醒&lt;/h1&gt;
&lt;p&gt;这是一项平台活动，不是长期固定权益。注册前先看清有效期、适用模型和扣费规则；API Key 不要发到群聊、截图或公开仓库。本文没有收取平台费用，也不保证每个账号都能获得相同额度。&lt;/p&gt;
&lt;p&gt;整个流程下来大概 5 分钟：注册 → 装客户端 → 建 Key → 绑定，68 元额度就到手了。&lt;/p&gt;
&lt;p&gt;对想尝试 AI 编程但还没充值的小伙伴来说，这个额度足够完成不少日常任务，感兴趣的可以趁活动还在赶紧去领一下。&lt;/p&gt;
</content:encoded></item><item><title>Windows 启动 DeepSeek Harness：安装、配置与常见问题</title><link>https://www.violet27chen.com/posts/deepseek-harness-install-tutorial/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/deepseek-harness-install-tutorial/</guid><description>记录在 Windows 上安装 Node.js、启动 DeepSeek Harness 和配置 DeepSeek API Key 的过程，同时说明本地端口、工作目录和费用风险</description><pubDate>Wed, 19 Aug 2026 04:00:00 GMT</pubDate><content:encoded>&lt;p&gt;DeepSeek Harness 是 DeepSeek 提供的本地开发工具，可以在 Windows 电脑上启动一个本地 Web 界面，用于调用模型。&lt;/p&gt;
&lt;p&gt;本文以 Windows 为例，记录从安装 Node.js 到启动 DeepSeek Harness 的过程。程序在本地运行，不代表模型调用免费；需要准备 API Key，并确认它的权限、余额和有效期。&lt;/p&gt;
&lt;h2&gt;一、准备工作&lt;/h2&gt;
&lt;p&gt;开始之前，请准备以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一台 Windows 电脑；&lt;/li&gt;
&lt;li&gt;稳定的网络连接；&lt;/li&gt;
&lt;li&gt;一个 DeepSeek 开放平台账号；&lt;/li&gt;
&lt;li&gt;一个可用的 DeepSeek API Key。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;API Key 可以在 &lt;a href=&quot;https://platform.deepseek.com/api_keys&quot;&gt;DeepSeek 开放平台&lt;/a&gt; 创建。API Key 相当于账号凭证，请不要发布到文章、截图、代码仓库或聊天记录中。&lt;/p&gt;
&lt;h2&gt;二、安装 Node.js&lt;/h2&gt;
&lt;p&gt;DeepSeek Harness 依赖 Node.js 运行，因此需要先完成 Node.js 安装。&lt;/p&gt;
&lt;h3&gt;1. 下载 Node.js&lt;/h3&gt;
&lt;p&gt;打开 &lt;a href=&quot;https://nodejs.org/zh-cn/download&quot;&gt;Node.js 中文官网&lt;/a&gt;，选择 Windows Installer（&lt;code&gt;.msi&lt;/code&gt;）安装程序下载。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwMBw0CBFVVU1AHUgAOVgIEBwEHUVcIQAEBH1FYBRhDSwwaG0gABgFLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260819112458.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 开始安装&lt;/h3&gt;
&lt;p&gt;双击下载好的 MSI 安装程序，按照安装向导操作。&lt;/p&gt;
&lt;p&gt;第一步直接点击 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhbUgwFA1lUBgZSA1dbXgVRVQIDUF1aR1RWT1xaXxVEFFZIH0kBUAdLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112551.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;阅读许可协议后，勾选同意选项，然后点击 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksNBwYDAABUXFUBBgcNUQ5SAQMFVwZcFwcCHFkPVBQRQV9IHUwBAQFLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112625.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 选择安装路径&lt;/h3&gt;
&lt;p&gt;如果 C 盘空间充足，建议直接使用默认安装路径并点击 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果需要安装到其他磁盘，也可以在这里修改路径。不过修改路径后，需要确认 Node.js 的安装目录已经加入系统环境变量 &lt;code&gt;Path&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8LBwACBFMEBwhbAVIBUQQEBQVYUwRaTwZSHlxYARlEFgwaSUsOU1JLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112757.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;后续步骤保持默认设置，直接点击 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVklfB1FeClUDBggGCwddUFIDVVRUBlwOF1YBHQ9ZAhlBQV9MTxlbBgdLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112827.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装工具选项通常不需要额外勾选，继续点击 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhdUQIAAVFTBldUAQFdAwVSUgVRU1ZaF1BVHFwOVE4URlZLSU5cVANLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112853.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击 &lt;strong&gt;Install&lt;/strong&gt; 开始安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUNVlZUAVNVXFVVClQKXgcAUgZWUFwLRAFSSA1bXhVJEwlLThlYUVZLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112909.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果系统弹出管理员权限确认窗口，请点击允许。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVktdUQMFUAJSAQIGUFxcUQEFAgxUAlUNTlMCH1gJXk4VR1xNGB8LAVZLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112941.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;等待安装完成，最后点击 &lt;strong&gt;Finish&lt;/strong&gt; 退出安装向导。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhaBQcHAQUEAANaA11bVlUJAQZYVAFfEgNTGFxfVxRFFgscQBoJVgZLBlgCHQJaBEpICFE&quot; alt=&quot;Pasted image 20260819112957.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;三、配置环境变量&lt;/h2&gt;
&lt;p&gt;如果 Node.js 使用的是默认安装路径，安装程序通常会自动配置环境变量，可以直接跳过本节。&lt;/p&gt;
&lt;p&gt;如果你将 Node.js 安装到了 D 盘或 C 盘中的其他目录，则需要手动检查并配置 &lt;code&gt;Path&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;1. 打开环境变量设置&lt;/h3&gt;
&lt;p&gt;在 Windows 搜索框中搜索“编辑系统环境变量”，打开对应设置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwBVFAFBgICXVJWVgcMUQECW1YDAVwMFVECSFFdXhQSQF5OShxdUlFLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260819113209.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击 &lt;strong&gt;环境变量&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsNBVFRUVMFXAlSBlEMB1AJWlFRBwMJRQcCGlwMX05ERwtBSRRaVwxLBlYOHQRbC0pICFE&quot; alt=&quot;Pasted image 20260819113235.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 添加 Node.js 路径&lt;/h3&gt;
&lt;p&gt;在“系统变量”区域找到 &lt;code&gt;Path&lt;/code&gt;，双击打开编辑窗口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk4NVVVSAgBVVgYGC1wMBVQBUQNRVFNdQFBTHgsMARxGS1ZMSBUNV1dLBFAPHQdXCkpICFE&quot; alt=&quot;Pasted image 20260819113330.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击 &lt;strong&gt;新建&lt;/strong&gt;，添加 Node.js 的安装目录，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;D:\Program Files\nodejs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请以你电脑上的实际安装路径为准，不要直接照抄示例路径。&lt;/p&gt;
&lt;p&gt;点击 &lt;strong&gt;确定&lt;/strong&gt; 保存所有设置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVktaAAdTBQADAAhUVVQKAAAHVwdSAFZYFVFSFVhfAhlGEVtITksKAQ1LB1MAHQRUAEpICFE&quot; alt=&quot;Pasted image 20260819113556.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 验证 Node.js 是否安装成功&lt;/h3&gt;
&lt;p&gt;按下 &lt;code&gt;Win + R&lt;/code&gt;，输入 &lt;code&gt;cmd&lt;/code&gt;，然后按回车打开命令提示符。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQJBQ0DV1QFAFQEBwBdVg8GV1cABQcOQQEDG1gLBk8TR15ATh0IVQdLAVgOHQNRA0pICFE&quot; alt=&quot;Pasted image 20260819113815.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在命令提示符中执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果能够正常显示 Node.js 版本号，说明 Node.js 已安装成功，环境变量也配置正确。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgNAVFTVAcGBgBUCl0PAlAJVlEEAwcLQlNWFAtbXxVGFF8ZGBRaUFJLA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260819113939.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;四、启动 DeepSeek Harness&lt;/h2&gt;
&lt;h3&gt;1. 获取官方启动命令&lt;/h3&gt;
&lt;p&gt;打开 &lt;a href=&quot;https://www.deepseek.com/harness/&quot;&gt;DeepSeek Harness&lt;/a&gt;，复制页面提供的一键使用命令。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkPVlJeUVQHAwkDB1ALUQMCBQNQVlwBRFcHHQgLAU8SSwscHxRaB1BLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260819112304.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;将命令粘贴到刚才打开的命令提示符窗口中。安装过程中如果出现询问，按照提示输入 &lt;code&gt;y&lt;/code&gt; 确认。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0IUwZSClIDBwhVBVcBVAFRUANRAQAIEAICSQ9eBRUSRVhKSBsBWlFLA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260819114048.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;等待命令执行完成。根据网络情况，这一步可能需要一段时间。&lt;/p&gt;
&lt;p&gt;当命令提示符中出现本地 HTTP 地址时，说明 Harness 已经启动成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkKWwIHV1RRVQgGBAEJAgMGVAFRCgMKEARUSQpcVx9JRVocGBVdUgVLA1AGVElUAVIWFlhX&quot; alt=&quot;Pasted image 20260819114634.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 打开本地 Web 界面&lt;/h3&gt;
&lt;p&gt;在命令提示符中按住鼠标左键，选中完整地址，注意不要漏掉最后的端口号。本文截图中的端口是 &lt;code&gt;3080&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;选中后点击鼠标右键，Windows 会自动复制选中的地址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhYBVBRVlhRVVJVVlMBU1cGWwdYBAcIFQAFH1AOUUtBRgwcHB0AWwBLA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260819114806.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;打开浏览器，访问：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://127.0.0.1:3080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果终端输出的端口不是 &lt;code&gt;3080&lt;/code&gt;，请以终端中显示的实际端口为准。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxdBwACVFkBB1AABVAJX1UGBVEDA1BaFwUEH1hUAkhIFF9AT04NVwFLBFEDHQBQBUpICFE&quot; alt=&quot;Pasted image 20260819114844.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;五、配置 DeepSeek API Key&lt;/h2&gt;
&lt;p&gt;首次打开 Web 界面时，页面会出现使用许可或配置提示，按照页面提示同意并继续即可。&lt;/p&gt;
&lt;p&gt;随后页面会要求填写 API Key。打开 &lt;a href=&quot;https://platform.deepseek.com/api_keys&quot;&gt;DeepSeek API Keys 页面&lt;/a&gt;，创建或复制一个可用的 API Key，粘贴到 Harness 的配置页面中。&lt;/p&gt;
&lt;p&gt;API Key 只应填写在本地工具的配置页面中，不要将它提交到 GitHub 或公开发布。&lt;/p&gt;
&lt;h2&gt;六、选择工作目录&lt;/h2&gt;
&lt;p&gt;完成 API Key 配置后，选择一个工作目录。建议选择专门用于代码项目的文件夹，避免直接选择整个系统盘或包含大量无关文件的目录。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQNUQFeClkHV1NQUVxbUAcFWlRRAwFdF1ZRFAgIBhgUE1pBTB0OUVdLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260819115246.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择工作目录后，根据自己的需求选择模型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQNUQFeClkHV1NQUVxbUAcFWlRRAwFdF1ZRFAgIBhgUE1pBTB0OUVdLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260819115250.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;七、测试对话功能&lt;/h2&gt;
&lt;p&gt;完成配置后，尝试发送一条简单消息。如果模型能够正常回复，说明 Node.js、Harness 和 API Key 都配置成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVktfVQxSBlBSB1cDAlQJVwMEUFYEUAZfQgAEHFpZUh9GEFlITB8PAg1LA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260819115410.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;八、可选：全局安装 DeepSeek Shell&lt;/h2&gt;
&lt;p&gt;官方一键启动命令通常比较长。如果希望以后直接使用简短命令启动，可以将 DeepSeek Shell 全局安装到系统中。&lt;/p&gt;
&lt;p&gt;在命令提示符中执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @deepseek-ai/dsh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;等待安装完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwJAFFWVldRVAhTVQAKVwEAVgMHV1wIEFMOFFpcBE8URlsdSBkNBw1LA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260819120411.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装完成后，执行下面的命令启动 Web 界面：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dsh web
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以后启动 DeepSeek Harness 时，直接执行 &lt;code&gt;dsh web&lt;/code&gt; 即可，不需要再次粘贴完整的一键使用命令。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwIAlEDAwJSBglaAwEOBA8IUlYAVAQKEAUGGQhZUUtAQg1IHxwNVA1LA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260819120357.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;九、常见问题&lt;/h2&gt;
&lt;h3&gt;1. 执行 &lt;code&gt;node -v&lt;/code&gt; 没有显示版本号&lt;/h3&gt;
&lt;p&gt;通常是 Node.js 没有安装成功，或者安装目录没有加入 &lt;code&gt;Path&lt;/code&gt;。可以重新打开一个命令提示符窗口，再次执行命令；如果仍然无效，请检查环境变量中的 Node.js 路径是否正确。&lt;/p&gt;
&lt;h3&gt;2. 浏览器无法打开本地地址&lt;/h3&gt;
&lt;p&gt;请确认命令提示符窗口仍在运行，并检查地址中的端口号是否与终端显示的一致。关闭命令提示符窗口后，本地 Harness 服务也会停止。&lt;/p&gt;
&lt;h3&gt;3. API Key 无法使用&lt;/h3&gt;
&lt;p&gt;请确认 API Key 没有多余的空格或换行，并检查 DeepSeek 开放平台账号是否有可用余额或调用权限。API Key 失效时，应在开放平台重新创建并替换。&lt;/p&gt;
&lt;h2&gt;使用前的边界&lt;/h2&gt;
&lt;p&gt;通过以上步骤，你就可以在 Windows 上完成 DeepSeek Harness 的安装和配置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 Node.js；&lt;/li&gt;
&lt;li&gt;检查环境变量；&lt;/li&gt;
&lt;li&gt;使用官方命令启动 Harness；&lt;/li&gt;
&lt;li&gt;打开本地 Web 界面；&lt;/li&gt;
&lt;li&gt;配置 DeepSeek API Key；&lt;/li&gt;
&lt;li&gt;选择工作目录并测试对话；&lt;/li&gt;
&lt;li&gt;按需全局安装 &lt;code&gt;dsh&lt;/code&gt; 命令。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只是偶尔使用，直接运行官方命令即可；经常使用再考虑全局安装 &lt;code&gt;@deepseek-ai/dsh&lt;/code&gt;。API Key 应保存在本机环境变量或受保护的配置中，不要放进文章截图、公开仓库或聊天记录。&lt;/p&gt;
</content:encoded></item><item><title>我把 Agent AI 接到微信的过程：部署步骤、费用与限制</title><link>https://www.violet27chen.com/posts/connect-agent-ai-to-wechat-for-free/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/connect-agent-ai-to-wechat-for-free/</guid><description>通过 AgentScope 免费部署 QwenPaw，并将 AI 接入微信。本文介绍从平台注册、GitHub 绑定、微信扫码登录，到自定义 DeepSeek 模型的完整操作流程</description><pubDate>Tue, 18 Aug 2026 04:15:00 GMT</pubDate><content:encoded>&lt;p&gt;想在微信里直接使用一个 AI 助手，不想自己购买服务器、配置运行环境，也不想从头部署复杂项目，可以试试 AgentScope 提供的 QwenPaw。&lt;/p&gt;
&lt;p&gt;我用 AgentScope 部署 QwenPaw，并把它接入微信。下面按实际操作顺序记录关键页面，同时把免费额度、账号权限和隐私风险写清楚。平台页面可能改版，截图只用于定位入口，不应当当作永久不变的界面说明。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注册 AgentScope 平台；&lt;/li&gt;
&lt;li&gt;绑定 GitHub 账号；&lt;/li&gt;
&lt;li&gt;一键部署 QwenPaw；&lt;/li&gt;
&lt;li&gt;在微信中扫码登录；&lt;/li&gt;
&lt;li&gt;按需配置自己的模型供应商。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;平台当前提供的部分 AI 模型标注为免费，但通常会有调用次数、并发量或稳定性方面的限制。如果对使用稳定性有要求，建议配置自己的模型 API。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;AgentScope 平台简介（官方背景）&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AgentScope 是由阿里通义实验室出品的开源智能体开发平台&lt;/strong&gt;，为官方正规 AI 开发工具，具备企业级稳定性与安全性，并非第三方小众工具。&lt;/p&gt;
&lt;p&gt;平台主打 &lt;strong&gt;零服务器、免运维、低代码一键部署 AI Agent&lt;/strong&gt;，专为快速搭建各类智能体应用设计。内置通义千问全系模型，同时全面兼容 DeepSeek、OpenAI 等主流大模型API，支持多渠道分发，可快速将AI智能体接入微信、网页等场景。&lt;/p&gt;
&lt;p&gt;本次教程用到的 &lt;strong&gt;QwenPaw&lt;/strong&gt;，是 AgentScope 官方适配的专属微信AI助手模板，专为微信生态接入优化，部署流程安全合规、轻量化无门槛，普通用户无需开发基础即可快速落地可用的微信AI对话助手。&lt;/p&gt;
&lt;h2&gt;一、注册 AgentScope&lt;/h2&gt;
&lt;p&gt;首先打开 AgentScope 平台并完成注册。&lt;/p&gt;
&lt;p&gt;进入平台后，如果界面显示为英文，可以点击头像旁边的语言按钮，切换为中文。
&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVbUQxTClIAUwdaAlRaV1dRWlQFUFUNEgIGG1AMVE9JQF4dSkkIWgxLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818114245.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;二、绑定 GitHub 账号&lt;/h2&gt;
&lt;p&gt;点击右上角头像，进入&lt;strong&gt;个人设置&lt;/strong&gt;，找到 GitHub 账号绑定选项。&lt;/p&gt;
&lt;p&gt;点击绑定后，按照页面提示登录 GitHub 并完成授权。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwBVgMDBAQEVQEAVQdeBVIEUw0ACl1fFwFRHwtfAx1EQAsaG0kAAg1LA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818114509.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;绑定 GitHub 的主要作用是关联部署项目和代码权限。完成绑定后，才能继续使用一键部署功能。&lt;/p&gt;
&lt;h2&gt;三、一键部署 QwenPaw&lt;/h2&gt;
&lt;p&gt;返回平台首页，在导航栏中找到 &lt;strong&gt;QwenPaw&lt;/strong&gt;，点击&lt;strong&gt;一键部署&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;部署完成后，页面会显示部署结果。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0IBwNSClYEBAhaAQVcVgBSV1RUVlNaFAdUT1BZUU5FEVxPHBwLBgdLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818114717.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;随后进入聊天界面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkldAgYDAAQHVQFQAVJbAw8BW1ACVwEKT1MOH1pdAxQVEFxIHRQJWldLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818114813.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;四、连接微信&lt;/h2&gt;
&lt;p&gt;在聊天界面的左侧找到&lt;strong&gt;频道&lt;/strong&gt;，然后选择微信相关功能。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4IUldXV1gCBgRVAwFcXgEIUVZXB1BfRFQETgwLVh1GE1ZBSRgKVwxLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818114921.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;打开微信卡片后，点击&lt;strong&gt;获取登录二维码&lt;/strong&gt;，使用微信扫描二维码，按照提示完成绑定。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwPBVFWUwUPBAdaBQUOUFAAVwQFBwBfFwUOHg9fAxkWSltJGxQBUgxLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818115022.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;绑定成功后，就可以在微信中与 Agent AI 对话了。&lt;/p&gt;
&lt;p&gt;页面中可能默认开启以下信息展示选项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显示工具调用信息；&lt;/li&gt;
&lt;li&gt;显示工具结果信息；&lt;/li&gt;
&lt;li&gt;显示思考过程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些选项可以帮助你了解 AI 正在执行的操作，但也会让聊天内容变得比较冗长。如果只想查看最终回答，可以根据需要关闭它们。&lt;/p&gt;
&lt;h2&gt;五、关于平台免费模型&lt;/h2&gt;
&lt;p&gt;目前平台中的部分模型标注为免费，但免费模型通常会受到调用额度、并发限制或服务稳定性的影响。&lt;/p&gt;
&lt;p&gt;在实际使用中，如果出现响应较慢、连接中断或暂时无法调用等情况，通常与免费模型的资源限制有关。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgNVVZXUQcAAQFTUgcLVg4CWwBUUAAIRlECTg8OV0hEQ1tNTU8PWwBLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818115121.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果只是体验功能，直接使用平台提供的免费模型即可。如果希望长期稳定使用，可以继续配置自己的模型供应商。&lt;/p&gt;
&lt;h2&gt;六、配置自定义模型供应商&lt;/h2&gt;
&lt;p&gt;以 DeepSeek 为例，下面介绍如何将自己的模型 API 接入 AgentScope。&lt;/p&gt;
&lt;h3&gt;1. 进入模型设置&lt;/h3&gt;
&lt;p&gt;在左侧菜单中向下滚动，找到&lt;strong&gt;模型&lt;/strong&gt;，点击进入模型配置页面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQJVFVVUwMAAAZQBABZVAAFVQ1SBlUOQwQPGwsLVEgSEQxKHB1fUQJLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818115337.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 选择本地与自定义&lt;/h3&gt;
&lt;p&gt;在模型配置页面中选择&lt;strong&gt;本地＆自定义&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0NAAMDBlcEBgdVUgZdVFUJAAwFUAYJEAEGGAwLVRlIF1xIHUlaU1dLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818115358.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 添加 DeepSeek 提供商&lt;/h3&gt;
&lt;p&gt;点击&lt;strong&gt;添加提供商&lt;/strong&gt;，按照下面的信息填写：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置项&lt;/th&gt;
&lt;th&gt;填写内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;提供商名称&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DeepSeek&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base URL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;接口类型&lt;/td&gt;
&lt;td&gt;OpenAI 兼容 Chat Completions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;填写完成后，点击创建。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksPAFAAVAJUBgFXBFwMBA4EB1dTAVQJFwJRSV0LBBhAQllIS0kJB1BLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818115811.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4. 创建 DeepSeek API Key&lt;/h3&gt;
&lt;p&gt;打开 DeepSeek 开放平台的 API Keys 页面：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://platform.deepseek.com/api_keys
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;登录后创建一个新的 API Key。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8MWgcDAlZSV1BaUFQMUwZVUgRQUFBfFAtRGg1ZXx5FQ11MGx8MBlJLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818115949.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;API Key 通常只会完整显示一次。创建后请立即保存，并且不要把它发布到公开仓库、文章截图或聊天群中。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;此外，使用 API 前需要确认 DeepSeek 开放平台账户中有可用余额。具体价格和计费方式请以官方页面为准。&lt;/p&gt;
&lt;h3&gt;5. 填写 API Key&lt;/h3&gt;
&lt;p&gt;返回 AgentScope 的模型配置页面，将刚刚创建的 API Key 填入对应位置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9dV1ZeAVdWV1MBAF1cUVIIUA1YUFFbQgcFHFwIBh9BQFpNTEldUgxLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818120122.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6. 选择模型&lt;/h3&gt;
&lt;p&gt;保存 API Key 后，打开模型配置，选择要使用的 DeepSeek 模型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8IUwBTVFFSUFcEVlUBB1AAUwdRAFEOEwYAFFxbVxsWFl1KSRkKVAJLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260818120206.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;保存配置后，新的模型就会应用到 QwenPaw 的对话中。&lt;/p&gt;
&lt;h2&gt;七、开始使用&lt;/h2&gt;
&lt;p&gt;到这里，AgentScope、QwenPaw 和微信已经完成连接。你可以直接在微信中向 Agent AI 发送消息，也可以根据需要切换平台免费模型或自己的模型供应商。&lt;/p&gt;
&lt;p&gt;在微信中发送下面的命令，可以查看当前所有可用模型：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/model list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4LUQBSB1UAUlAEBl0AUQ9VV1cAC1FYTwEPHlhaUR0TQFdOHU5cWwVLA1QOU0laA1YWFlhX&quot; alt=&quot;Pasted image 20260818122652.png&quot; /&gt;
切换模型的命令格式为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/model &amp;lt;provider_id&amp;gt;:&amp;lt;model_id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如，切换到前面添加的 DeepSeek 模型：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/model deepseek:deepseek-v4-flash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkxdUVFTAwcGBAcEBlNeBAYJVQYFUQNfFVMHG1BaVxoSQFoeQR4PVwRLB1QCHQBbBkpICFE&quot; alt=&quot;Pasted image 20260818122716.png&quot; /&gt;
其中，&lt;code&gt;provider_id&lt;/code&gt; 和 &lt;code&gt;model_id&lt;/code&gt; 必须以你在 AgentScope 中实际配置的值为准。如果提供商名称或模型 ID 不同，请替换为 &lt;code&gt;/model list&lt;/code&gt; 返回的对应名称。&lt;/p&gt;
&lt;p&gt;如果只是想快速体验，使用平台提供的免费模型即可；如果需要更稳定的响应和更明确的用量控制，建议使用自己的 API Key，并定期检查 API 用量和账单。&lt;/p&gt;
&lt;h2&gt;使用前先看这三点&lt;/h2&gt;
&lt;p&gt;平台是否继续提供免费资源、可用模型和微信接入能力，需要以当前控制台为准。接入后，聊天内容会经过相关平台和模型服务商；不要把密码、身份证号、客户资料等敏感信息交给机器人。若使用自定义模型，还要单独承担 API 调用费用。&lt;/p&gt;
&lt;p&gt;整个配置流程可以概括为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;注册 AgentScope
      ↓
绑定 GitHub 账号
      ↓
一键部署 QwenPaw
      ↓
获取微信登录二维码并扫码绑定
      ↓
使用平台免费模型，或配置自己的 DeepSeek API
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这种方式适合想快速体验微信 AI 助手的用户。它不需要自行准备服务器，部署过程也比较简单；如果后续需要更高的稳定性、更多模型或更精细的权限控制，可以再考虑自行部署或使用付费服务。&lt;/p&gt;
</content:encoded></item><item><title>Cloudflare Worker QQ AI 聊天助手部署记录：配置、费用与排错</title><link>https://www.violet27chen.com/posts/cloudflare-worker-qq-ai/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/cloudflare-worker-qq-ai/</guid><description>记录从 Fork 仓库到部署 Cloudflare Worker、配置 KV 和 QQ 回调的完整过程，并说明模型调用费用、密钥保护和常见故障</description><pubDate>Thu, 13 Aug 2026 11:54:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇记录我用 &lt;strong&gt;Cloudflare Worker + 腾讯 QQ 机器人 + DeepSeek 大模型&lt;/strong&gt; 部署 QQ 助手的过程。Worker 不需要本地电脑常开，但模型 API、平台配额和 QQ 机器人服务仍可能产生费用或受限；能否长期运行要以当前套餐和接口规则为准。&lt;/p&gt;
&lt;p&gt;仓库已经提供了主要代码，但仍需要处理密钥、KV 绑定和回调地址，不能把它理解成完全无配置的“点几下”。&lt;/p&gt;
&lt;h2&gt;开始前你需要准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一个 Cloudflare 账号（免费版就够，去 &lt;a href=&quot;https://www.cloudflare.com/&quot;&gt;cloudflare.com&lt;/a&gt; 注册）&lt;/li&gt;
&lt;li&gt;一个已完成实名的 QQ 账号（创建 QQ 机器人要求实名）&lt;/li&gt;
&lt;li&gt;一个大模型 API Key（本教程以 DeepSeek 为例，去 &lt;a href=&quot;https://platform.deepseek.com/&quot;&gt;platform.deepseek.com&lt;/a&gt; 注册后复制 API Key；你也可以换成任意 OpenAI 兼容的接口）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;准备好了就开工。&lt;/p&gt;
&lt;h2&gt;第一步：Fork 仓库并部署到 Cloudflare&lt;/h2&gt;
&lt;p&gt;打开项目仓库：&lt;a href=&quot;https://github.com/violet27chen/qqbot-cloud&quot;&gt;https://github.com/violet27chen/qqbot-cloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwJUVADVAcABgUBUVJdVg8DUlBSUQNaTgsHGl8LUxhDFloZSx5fUANLA1gGXUlbA1MWFlhX&quot; alt=&quot;Pasted image 20260813191839.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击右上角的 &lt;strong&gt;Fork&lt;/strong&gt;，把仓库复制到你的 GitHub 账号下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVcAAVXUVUPAQZVC1cIBFUDAFBSUwcBQ1ACGFhUUhQWEFZNTBhdUgNLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192028.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下来要把这个项目部署成 Cloudflare Worker。进入 Cloudflare 控制台，选择「创建 Worker 应用程序」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0NAgdQVlUAXFJbUFIBVAdRW1EEVgdfRlECGA1eXxVAEVoaGE9dAAxLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192216.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择「连接 GitHub」，授权 Cloudflare 访问你的仓库。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsMBgJRUFlTXQJUVVUNBQJVAg1TUF1dTgQFG1oPUR1EEAoZHxVaWgdLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192231.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;授权完成后，按钮会变成绿色，再次点击它。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkNAVVVVFQHAAMGCwEJBA4GUA1UVgBcR1AEHlFaARtIEA0aThoPWlJLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192310.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkKAQYECwVSXAcBAFABBwEFAANXAVNfEwBSTw0MBBtGF14aHR5dAgVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192322.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在列表里选择刚才 Fork 的项目，点击 &lt;strong&gt;Next&lt;/strong&gt; 进入下一步，然后直接点 &lt;strong&gt;Deploy&lt;/strong&gt; 完成部署。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhaWgMCAFADBlADBgUBU1AFAQwCCwFbFFAOHllVAx0TQ1lBTh0MBwBLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192401.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第二步：创建 KV 命名空间并绑定到 Worker&lt;/h2&gt;
&lt;p&gt;Worker 需要一个 KV 存储空间来记住你和 AI 的对话上下文。我们先去创建它：点右上角的「创建」，新建一个 KV 命名空间。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsJVAdWCgJWUgVWUAAPB1IDUQdZUAcMTgECFVxYXxRCFl9OSUkPUQJLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192512.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;命名空间名称填写 &lt;code&gt;CHAT_HISTORY&lt;/code&gt;，然后点击 &lt;strong&gt;Create&lt;/strong&gt; 创建。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhdUAAFAVQPAFMBV10KVgUHBQQFBQQMRlRTG1pbVE5DRVZAH0wKAlVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192614.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;创建好后回到刚才部署的 Worker，点右上角「添加绑定」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh5dWwxQVlYFXANUVgIAU1VTU1NZC1IKEwEDGFwLVEtFRV1IGxkKV1VLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192708.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;绑定类型选择「KV 命名空间」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh5aUQAAV1kOB1MDVgYAAlcAVQcAVFJdQgQHS1tdVU5JQw5OT0sOVQxLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192724.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;第一个输入框填变量名 &lt;code&gt;CHAT_HISTORY&lt;/code&gt;，第二个下拉框选择刚才创建的 &lt;code&gt;CHAT_HISTORY&lt;/code&gt; 命名空间，保存。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkKUgQHBlkDAFVWBlRbVlQAVg1WBVUJQwVRH1gOUUhIQ1lPTk4PBlVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813192743.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第三步：创建 QQ 机器人并获取密钥&lt;/h2&gt;
&lt;p&gt;打开 QQ 开放平台 &lt;a href=&quot;https://q.qq.com/&quot;&gt;https://q.qq.com/&lt;/a&gt;，登录并完成实名认证，然后点击「创建或管理我的机器人」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4JV1UCBFMGUwNaVlcLB1RRBQxQBlxdFwAOHwsLARlAF18dGkkNWldLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813193225.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;填写一个你喜欢的机器人名称。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh1bUFEEUFgAVQBTAVIKVgUAUgFRAVdaFAZWSQpaAhhEE1ZMSRlcVAdLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813193322.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接入方式选择「其他机器人服务」，然后点击「查看密钥信息」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlYU1ACVldTUVNaAV1cVwABVQBQUAQAEgtWGVkLAxVDQ10bGBwIUARLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813193437.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;复制这里的 &lt;strong&gt;AppID&lt;/strong&gt; 和 &lt;strong&gt;AppSecret&lt;/strong&gt;，待会儿要填到 Cloudflare Worker 里。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4MWgxTClJTXAhWV1ALB1dVAVECA1BaFwMOHw1dVkhDSglLShxaVlZLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813193711.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第四步：在 Worker 中配置环境变量&lt;/h2&gt;
&lt;p&gt;回到 Cloudflare Worker，添加环境变量。先添加 QQ 相关的两项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;变量名 &lt;code&gt;QQ_APP_ID&lt;/code&gt;，值填刚才复制的 AppID&lt;/li&gt;
&lt;li&gt;变量名 &lt;code&gt;QQ_CLIENT_SECRET&lt;/code&gt;，值填刚才复制的 AppSecret&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意变量名&lt;strong&gt;必须一字不差&lt;/strong&gt;，否则 Worker 读不到对应的值。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4MWgxTClJTXAhWV1ALB1dVAVECA1BaFwMOHw1dVkhDSglLShxaVlZLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813193711.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;继续添加大模型相关的环境变量，正确填写你的 LLM 信息（通常是 &lt;code&gt;LLM_BASE_URL&lt;/code&gt;、&lt;code&gt;LLM_API_KEY&lt;/code&gt;、&lt;code&gt;LLM_MODEL&lt;/code&gt; 三项，分别对应接口地址、API Key 和模型名）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8AVQwCUwUHUVMABwYBUlAABwNQAVxdTwVUTgxcXxQTSgoaQEsIWwVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813193820.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;填写完成后，Cloudflare 通常会&lt;strong&gt;自动重新部署&lt;/strong&gt;让配置生效，稍等片刻即可。&lt;/p&gt;
&lt;h2&gt;第五步：开启生产环境访问并配置 QQ 回调&lt;/h2&gt;
&lt;p&gt;在 Worker 页面点击「域 / Domains」，把生产环境的访问打开，拿到你的 Worker 地址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtaBlcEAwAFA1cGVVFaVAcCVgJQAF1dFwZTFVxaUBVGFwtAGBsPWgRLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194013.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;复制弹出的第一个链接（也就是你的 &lt;code&gt;*.workers.dev&lt;/code&gt; 地址），然后前往 QQ 机器人后台 &lt;a href=&quot;https://q.qq.com/qqbot/dashboard/&quot;&gt;https://q.qq.com/qqbot/dashboard/&lt;/a&gt;，选择刚才创建的机器人。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhpfAQJXClFSVgZTV10PXlVRAAFYAlwJRQYEGFxcVUtIRFlBThsNUABLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194148.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;进入「开发设置 → 事件订阅与回调地址」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRaU1JRAFdUBwJSBgdZA1RUBwJQUVZaQwADHAxeAx4SQ1dMTUtbWlVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194244.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;把接入方式改为 &lt;strong&gt;Webhook&lt;/strong&gt;，并勾选 &lt;strong&gt;C2C 消息事件&lt;/strong&gt;（也就是你和机器人的私聊消息）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkPUAcDVlgCAAhRAAFaAFRTVwwABQMOQlMESQtfU08VQApJTR5aUVBLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194331.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击「设置回调地址」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksIBw1fVgUFB1QHA1QLXgZSW1FQVgQLQVdRHQteVh0TF1lNHB8LVldLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194359.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在回调地址里粘贴刚才复制的 Worker 链接，格式是：前面加上 &lt;code&gt;https://&lt;/code&gt;，后面加上 &lt;code&gt;/qq-webhook&lt;/code&gt;。例如：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;https://你的worker.workers.dev/qq-webhook&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUMWlBRBVVUAwYGAFQLVFMCU1QAV1MITlQHG1xUVRkWQVpBT04OBgFLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194546.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击确定，到此全部配置完成！&lt;/p&gt;
&lt;h2&gt;为什么必须先在 Worker 配好环境变量，再去 QQ 设置回调&lt;/h2&gt;
&lt;p&gt;有些同学会先把回调地址填好、再去 Worker 加密钥，结果 QQ 一直提示「签名校验不通过」。原因在这里：&lt;/p&gt;
&lt;p&gt;QQ 的 Webhook 在设置回调地址时，会&lt;strong&gt;立刻&lt;/strong&gt;发一个验证请求过来，要求 Worker 用机器人的密钥算出一个签名并返回。如果此时 Worker 里还没填 &lt;code&gt;QQ_CLIENT_SECRET&lt;/code&gt;，它根本算不出正确的签名，验证自然失败。&lt;/p&gt;
&lt;p&gt;所以&lt;strong&gt;正确顺序是：先在 Worker 里把 &lt;code&gt;QQ_APP_ID&lt;/code&gt; 和 &lt;code&gt;QQ_CLIENT_SECRET&lt;/code&gt; 配好并部署生效，再去 QQ 后台填回调地址&lt;/strong&gt;。这样 QQ 来验证时，Worker 已经能用正确的密钥生成签名，一次通过。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0BVlECVAcOVglRBFwNUFJWAlNXAgQKQVRWG1EMVEwRQ1hPGhwKVgBLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260813194756.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;部署后的边界&lt;/h2&gt;
&lt;p&gt;上线后先用测试群验证消息回调、错误处理和额度消耗。不要把 API Key 写进前端、截图或公开仓库；如果机器人会接收私人聊天内容，还应在使用前说明数据会经过哪些服务。&lt;/p&gt;
&lt;p&gt;配置完成后，去 QQ 私聊你的机器人，发一句话试试，它就会调用大模型给你回复了。对话上下文存在 Cloudflare KV 里，多轮聊天也能接得住。&lt;/p&gt;
&lt;p&gt;如果你之后想用自己的域名访问（而不是 &lt;code&gt;*.workers.dev&lt;/code&gt;），可以在 Cloudflare 给这个 Worker 绑定一个自定义域；要更稳地跑在生产环境，也可以按项目 README 的说明走「Dashboard 部署」。部署中有任何问题，欢迎在评论区留言，或去 GitHub 仓库提 Issue。&lt;/p&gt;
</content:encoded></item><item><title>不买服务器，也能拥有自己的图片转换平台！开源工具纯 API + 极简说明页，EdgeOne 一键 / Cloudflare 手动部署</title><link>https://www.violet27chen.com/posts/imagestream-api/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/imagestream-api/</guid><description>不想为压缩几张图去租服务器？这个开源项目让你把图片转换平台部署到 Cloudflare 或 EdgeOne 边缘函数上——免费、零运维，纯 HTTP API + 极简说明页，URL 即服务</description><pubDate>Mon, 10 Aug 2026 13:30:00 GMT</pubDate><content:encoded>&lt;p&gt;做博客、做产品官网，或者只是想给自己图库加一层压缩，传统做法要么开台服务器跑压缩脚本，要么用第三方图床（隐私和费用都是问题）。&lt;/p&gt;
&lt;p&gt;如果你只是想要一个「改一下图片 URL 就能实时压缩 / 缩放 / 转格式」的工具，其实&lt;strong&gt;完全不用买服务器&lt;/strong&gt;——把开源项目 &lt;a href=&quot;https://github.com/violet27chen/edgeimg&quot;&gt;EdgeImg&lt;/a&gt; 部署到 Cloudflare 或 EdgeOne 的边缘函数上就行：免费额度够个人用，零运维，URL 本身就是 API。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwOB1ACV1JTBFIAAwAJBFcHBQZXV1AOEFRVFQ0PVBRBQQpNHRkKBVBLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811142156.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;一、它到底是什么&lt;/h2&gt;
&lt;p&gt;EdgeImg 是一个&lt;strong&gt;类 Cloudflare Images 的按需图片变换服务&lt;/strong&gt;。你不用把图片上传到任何平台，只要把图放到它指定的目录（或任意公网可访问地址），然后通过&lt;strong&gt;改写 URL 参数&lt;/strong&gt;就能实时拿到压缩 / 缩放 / 转格式后的图，结果还会被边缘节点缓存。&lt;/p&gt;
&lt;p&gt;它只有一种形态：&lt;strong&gt;纯 API + 极简说明页&lt;/strong&gt;。也就是说，它&lt;strong&gt;不是&lt;/strong&gt;一个「网页里拖拽图片压缩」的面板，而是一个部署在你自己域名下的 HTTP 接口——浏览器打开根域名会看到一个自动列出用法的说明页，但真正的用法，是把接口塞进 &lt;code&gt;&amp;lt;img src&amp;gt;&lt;/code&gt; 或你自己的脚本里。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为什么强调「纯 API」？因为很多人一听到「图片压缩工具」就以为是网页拖拽面板。EdgeImg 故意去掉了前端 UI，只留接口：这样最轻、最稳、最好嵌。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;核心就一句：&lt;strong&gt;图片地址 + 参数 = 变换后的图片&lt;/strong&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 把 sample.png 缩到宽 400、质量 70、转 webp
https://你的域名/image/width=400,quality=70,format=webp/sample.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明页上的示例链接是相对路径，打开后会&lt;strong&gt;自动套用你当前的域名&lt;/strong&gt;，所以你不用手动替换——这也是为什么下面测试时直接点链接就能看到效果。&lt;/p&gt;
&lt;h2&gt;二、EdgeOne Makers 一键部署（最省事）&lt;/h2&gt;
&lt;p&gt;EdgeOne 是腾讯云的边缘函数平台，对国内访问和备案更友好，而且&lt;strong&gt;官方提供一键部署按钮&lt;/strong&gt;，点一下就完事。&lt;/p&gt;
&lt;p&gt;打开 GitHub 项目主页，点击 README 里的 &lt;strong&gt;Deploy to EdgeOne Makers&lt;/strong&gt; 按钮：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkNUwJfAgQOXFUGUlVaUQdUAgUHA1IPFVZWHlhZUhlHRFweGxQMVwFLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144048.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;会自动跳转到腾讯云 EdgeOne 控制台，点击「立即创建」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkMUQwCCwQDBgEEVlwNXw9RB1RXAFZYTgcBHghUUUsRE18ZTRhdAldLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144138.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;稍等片刻，部署成功：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQKAA1WBFQOBAIHClcJUVUFVQFZC1JYEgtRGAoOXxhGEAxPQB0OAgZLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144201.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;绑定自定义域名（可选但推荐）&lt;/h3&gt;
&lt;p&gt;进入「域名管理」，添加自定义域名：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkKBQVRBVBWVAkAAgBeUwUHUAIEAl1bFFcOHVsMA04SR1xNHE8PUwRLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144241.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;输入你自己的域名：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhULWlEAVwcAUVIAV1FbBVcABw1ZA1UIQQEDGlgIVEtFFllPGBhbBwRLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144322.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;控制台会给你一条 CNAME 记录，把它加到你域名服务商（如阿里云、DNSPod、Cloudflare 等）的解析里即可。&lt;/p&gt;
&lt;p&gt;随后配置 HTTPS。点击 HTTPS 配置按钮，选择「边缘 HTTPS 证书」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk4KVgdSB1QEUFJTBAVcX1IAVAVQAVMPQVQCHFFeAxkUFA5AQRUOVFVLC1cHHQlUA0pICFE&quot; alt=&quot;Pasted image 20260811144603.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择申请免费证书，自动验证，保持即可（腾讯云会送一张边缘证书，HTTPS 自动生效，无需自己买）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;环境变量 &lt;code&gt;ALLOWED_URL_HOSTS&lt;/code&gt;&lt;/strong&gt;：EdgeOne 部署时会让你填这个变量。它限制「通过 &lt;code&gt;?url=&lt;/code&gt; 抓取公网图片」时允许的来源域名。&lt;strong&gt;留空 = 不限制&lt;/strong&gt;（任何公网图都能转）；填了就只放行名单内域名（逗号分隔，如 &lt;code&gt;cdn.example.com,images.example.com&lt;/code&gt;）。如果你只用自带图库（&lt;code&gt;/image/&amp;lt;参数&amp;gt;/&amp;lt;文件名&amp;gt;&lt;/code&gt;），这个变量留空也没关系。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;三、Cloudflare Pages 手动部署&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ 注意：Cloudflare &lt;strong&gt;已经取消了一键部署按钮&lt;/strong&gt;——现在那个按钮只能部署 Worker，还会强制把仓库 fork 到你账号，跟本项目的 Pages 形态不兼容。所以 Cloudflare 这边走&lt;strong&gt;手动连接 Git&lt;/strong&gt;，步骤也不多。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;先在 GitHub 把项目 fork 到自己的账号：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk5aUFIABVQOXFcHBgIBAFcIBQdWU11YQgsPH1BVA0xAFwscTxgIWgJLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144734.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在 Cloudflare 打开 &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt;，点击「创建应用程序」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhcAQFVB1kAVFVbUFRbBFIABwVRUAcIQQUET1pfX0lFFA4bQRRYBgRLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144914.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择「部署 Pages」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhpdUQUDCwcFAAhSVwELVVJSUgNVAlMIQlQDHAxcBBlFFwlBHRRaWwNLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811144932.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择「导入现有 Git 存储库」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgJVFBWCgBWAwBXAwEBBQ9WAAxXA1YLQAcEG1ldVhtDQAlJTRkPUlZLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145023.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选刚刚 fork 的项目：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUNBg1WBwMCUlVQC11bVFRVVFBWCgdaEFZVT1FaBklEFgtATkgKBQVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145051.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;构建命令填 &lt;code&gt;npm run build&lt;/code&gt;，构建输出位置填 &lt;code&gt;build&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9fU1deBQdUUVIDBAELVQdVBlMEB1QNEwFWHlBYAx8SSg0ZS05cW1dLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145243.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击「保存并部署」，等所有步骤显示 ✅ 即可：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhaBlBfAARWVARRBFwNBAdWUAYHV1APEgJTSFgMX04UQF0dTx8KAlFLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145421.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点左上角返回，进入「自定义域名」：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlfUgVSBVEFB1cHBAcNX1ICVVNRU1RaEgoGHVELUxxFFAocSRtdVlFLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145453.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;设置一个自定义域名（前提是这个域名已经在 Cloudflare 托管）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVcUQJfAAMFAwhSA10MVQdWVlZXA1YMEwRWH19ZUBxBSg1LHxkLW1JLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145508.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0JVANVUFNSBFVUBQUAUwFRVgEAC1cPQwMBSQxUAxwURg1OGxgABlVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260811145545.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;到此部署成功。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;环境变量 &lt;code&gt;ALLOWED_URL_HOSTS&lt;/code&gt;&lt;/strong&gt;：在 Cloudflare 控制台 → 你的 Pages 项目 → Settings → Environment variables 里添加。作用同上：留空 = 不限制 &lt;code&gt;?url=&lt;/code&gt; 远程抓取；填值 = 只允许名单内域名。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;四、两种平台怎么选&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;EdgeOne Makers&lt;/th&gt;
&lt;th&gt;Cloudflare Pages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;部署方式&lt;/td&gt;
&lt;td&gt;一键按钮&lt;/td&gt;
&lt;td&gt;手动连接 Git&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;底层引擎&lt;/td&gt;
&lt;td&gt;sharp（libvips）&lt;/td&gt;
&lt;td&gt;Cloudflare 原生图片缩放&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;国内访问&lt;/td&gt;
&lt;td&gt;友好（腾讯云节点）&lt;/td&gt;
&lt;td&gt;一般（看区域）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;自定义域名 + 证书&lt;/td&gt;
&lt;td&gt;控制台一键申请免费证书&lt;/td&gt;
&lt;td&gt;需域名托管在 Cloudflare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;免费额度&lt;/td&gt;
&lt;td&gt;个人够用&lt;/td&gt;
&lt;td&gt;个人够用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;适合谁&lt;/td&gt;
&lt;td&gt;国内用户、要中文控制台&lt;/td&gt;
&lt;td&gt;已有 Cloudflare 账号、海外流量&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两者 &lt;strong&gt;API 完全一致&lt;/strong&gt;，随时可以换平台，代码一行都不用改。&lt;/p&gt;
&lt;h2&gt;五、实战测试：1.5 MB → 87 KB&lt;/h2&gt;
&lt;p&gt;部署完，直接拿项目自带的示例图测一下。&lt;/p&gt;
&lt;p&gt;先打开原始图片链接，下载下来看体积：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk4PVANSCwAHB1JXUVNbUVIIAQwCBlMIEFZUG1hZARUSQl9MS05fWgRLA1gFVUlTA1cKSEZeBA&quot; alt=&quot;Pasted image 20260811145959.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;再打开「自动转换链接」——也就是在 URL 里加上 &lt;code&gt;format=auto&lt;/code&gt; 参数：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0IVQFWAQNWBgEEBAUJUgBWUgxWB1JaFFNWGgoIVEhCFlhPHxwOBQRLA1gFVUlTA1cKSEZeBA&quot; alt=&quot;Pasted image 20260811150207.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;下载转换后的图，查看大小：&lt;strong&gt;87.1 KB&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQKVFAFVgRVVwQAUgABBQEIUVEHBFQLEgdVFVlbUUhBQllBGBUBVQNLBlYHHQdXAkpICFE&quot; alt=&quot;Pasted image 20260811150323.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;原始图多大？&lt;strong&gt;1.5 MB&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVYVAUCVwcEXAIDVQUMUVdTUAcCAlANEwtWTlBUBk5IRg4aGxgIUwxLBlYHHQdXAkpICFE&quot; alt=&quot;Pasted image 20260811150353.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;从 1.5 MB 压到 87 KB，&lt;strong&gt;体积只剩约 6%&lt;/strong&gt;，而且肉眼看画质并没有明显模糊——在保证观感的前提下大幅减少体积，对网页加载速度提升非常明显。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 原始图（1.5 MB）
https://你的域名/images/sample.png

# 变换后（87 KB）
https://你的域名/image/width=800,quality=70,format=webp/sample.png
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;六、更多 API 玩法&lt;/h2&gt;
&lt;p&gt;「URL 即 API」意味着所有变换都写在路径里，逗号分隔：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GET /image/&amp;lt;选项&amp;gt;/&amp;lt;路径&amp;gt;            # 转换自带图库里的图（images/ 下）
GET /image/&amp;lt;选项&amp;gt;?url=&amp;lt;公网图&amp;gt;      # 转换任意公网图片
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;常用参数：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;参数&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;示例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;width&lt;/code&gt; / &lt;code&gt;height&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;目标宽高（px），只写一边则等比缩放&lt;/td&gt;
&lt;td&gt;&lt;code&gt;width=400&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;quality&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;有损压缩质量 1–100&lt;/td&gt;
&lt;td&gt;&lt;code&gt;quality=70&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;输出格式：&lt;code&gt;webp&lt;/code&gt; / &lt;code&gt;avif&lt;/code&gt; / &lt;code&gt;jpeg&lt;/code&gt; / &lt;code&gt;png&lt;/code&gt;（省略则按浏览器自动协商）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;format=webp&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;填充方式：&lt;code&gt;cover&lt;/code&gt; / &lt;code&gt;contain&lt;/code&gt; / &lt;code&gt;scale-down&lt;/code&gt; 等&lt;/td&gt;
&lt;td&gt;&lt;code&gt;fit=cover&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fit=cover&lt;/code&gt; + &lt;code&gt;width&lt;/code&gt; + &lt;code&gt;height&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;裁出固定尺寸缩略图&lt;/td&gt;
&lt;td&gt;&lt;code&gt;width=200,height=200,fit=cover&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;?url=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;直接转换公网图片&lt;/td&gt;
&lt;td&gt;&lt;code&gt;?url=https://cdn.example.com/a.png&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;几个实用例子：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 1) 生成固定 200x200 头像缩略图（居中裁剪）
https://你的域名/image/width=200,height=200,fit=cover,format=webp/sample.png

# 2) 把一张公网图转成 avif（体积最小）
https://你的域名/image/width=1200,format=avif?url=https://cdn.example.com/photo.jpg

# 3) 响应式图片：交给浏览器自动选格式（Accept 头协商）
https://你的域名/image/width=800,quality=75/sample.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;甚至可以直接塞进 HTML，做响应式图片：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;img src=&quot;https://你的域名/image/width=800,quality=75,format=webp/sample.png&quot;
     srcset=&quot;https://你的域名/image/width=400,format=webp/sample.png 400w,
             https://你的域名/image/width=800,format=webp/sample.png 800w,
             https://你的域名/image/width=1600,format=webp/sample.png 1600w&quot;
     alt=&quot;示例图&quot; loading=&quot;lazy&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;七、适合用在哪&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;博客 / 官网配图&lt;/strong&gt;：写完文章直接贴原始图，用 URL 参数实时压成 webp，加载飞快。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图床增强&lt;/strong&gt;：给自己网盘 / 图床加一层实时变换，要缩略图、要转格式都不用预先处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;响应式前端&lt;/strong&gt;：配合 &lt;code&gt;srcset&lt;/code&gt; 按设备给不同尺寸，省流量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;批量历史图优化&lt;/strong&gt;：老图库不用一张张重压，访问时按需转换并缓存。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最关键的收益：&lt;strong&gt;不再需要打开网页一个个手动拖拽图片去压缩下载&lt;/strong&gt;，所有压缩都在请求时自动完成，省一大笔时间。&lt;/p&gt;
&lt;h2&gt;八、限制、安全与适用场景&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;EdgeImg 部署在你自己的域名下，图片不经过任何第三方图床，&lt;strong&gt;隐私可控&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;自带 &lt;strong&gt;SSRF 防护&lt;/strong&gt;：&lt;code&gt;?url=&lt;/code&gt; 只允许 http/https，会拦截 &lt;code&gt;localhost&lt;/code&gt;、内网地址，避免被人拿来打内网。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;?url=&lt;/code&gt; 还能用 &lt;code&gt;ALLOWED_URL_HOSTS&lt;/code&gt; 进一步锁死只允许指定图床，防止被当公开代理滥用。&lt;/li&gt;
&lt;li&gt;变换结果带长缓存头，边缘节点命中后几乎零计算。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个项目适合个人工具、低频转换和小型站点，不适合把它当作无限量图片处理服务。部署前要确认平台的请求、函数执行时间和流量限制；公网接口也建议增加来源限制、限流，并避免让它处理敏感图片。EdgeOne 与 Cloudflare 的免费政策会变化，页面显示的配额应当作为最终依据。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/violet27chen/edgeimg&quot;&gt;EdgeImg&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>2026 年建站还要买虚拟主机吗？先看项目需求</title><link>https://www.violet27chen.com/posts/virtual-host-modern-web-2026/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/virtual-host-modern-web-2026/</guid><description>虚拟主机真的要退出历史舞台了吗？2026年，新项目还应该从购买服务器开始吗？从 WordPress、PHP 到 Serverless 和边缘计算，这场关于未来Web架构的讨论正在展开</description><pubDate>Sun, 09 Aug 2026 08:39:00 GMT</pubDate><content:encoded>&lt;p&gt;先说结论：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2026年，虚拟主机不会死，但它正在从&quot;建站默认答案&quot;变成&quot;特定场景答案&quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你正在维护一个运行多年的 WordPress 网站，继续使用虚拟主机完全合理。&lt;/p&gt;
&lt;p&gt;但如果今天让一个开发者搭建新的互联网产品——博客、工具站、SaaS、小程序后台或 AI 应用，他大概率不会第一时间购买虚拟主机。&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web开发的游戏规则已经变了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去我们买服务器，是因为网站必须依赖服务器。&lt;/p&gt;
&lt;p&gt;现在很多情况下：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;网站并不需要你拥有一台服务器。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;曾经的网站：买一台服务器，然后慢慢折腾&lt;/h2&gt;
&lt;p&gt;过去十几年，搭建一个网站基本是一条固定路线：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;购买虚拟主机或者 VPS&lt;/li&gt;
&lt;li&gt;安装运行环境&lt;/li&gt;
&lt;li&gt;配置 Web 服务器&lt;/li&gt;
&lt;li&gt;部署数据库&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;p&gt;WordPress、Discuz、ThinkPHP、DedeCMS 等大量项目，都建立在这个体系之上。&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;hr /&gt;
&lt;h2&gt;2026 年的开发者，为什么少了一些服务器维护&lt;/h2&gt;
&lt;p&gt;因为很多事情已经不值得自己承担了。&lt;/p&gt;
&lt;p&gt;过去开发者经常需要关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHP 版本管理&lt;/li&gt;
&lt;li&gt;Apache / Nginx 配置&lt;/li&gt;
&lt;li&gt;数据库优化&lt;/li&gt;
&lt;li&gt;SSL 证书续签&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;strong&gt;基础设施问题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;而基础设施，正在被云平台接管。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;新时代的网站，不一定需要传统服务器&lt;/h2&gt;
&lt;p&gt;2026 年的 Web 架构正在发生变化。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;过去&lt;/th&gt;
&lt;th&gt;现在&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;一台服务器 + 一个数据库&lt;/td&gt;
&lt;td&gt;全球分发 + 边缘计算 + 云数据服务&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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; — 需要交互时触发边缘函数（Edge Functions）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据按需连接&lt;/strong&gt; — 通过 API 访问云数据库&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;整个过程，不需要开发者维护一台长期运行的服务器。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;最大的变化：从&quot;拥有服务器&quot;到&quot;使用服务&quot;&lt;/h2&gt;
&lt;h3&gt;过去&lt;/h3&gt;
&lt;p&gt;开发者需要&lt;strong&gt;购买资源&lt;/strong&gt;——买主机、买带宽、买存储。&lt;/p&gt;
&lt;h3&gt;现在&lt;/h3&gt;
&lt;p&gt;开发者更多是在&lt;strong&gt;组合服务&lt;/strong&gt;——像搭积木一样拼出完整的应用。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;层级&lt;/th&gt;
&lt;th&gt;可选方案&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;前端托管&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloudflare Pages、EdgeOne Pages、Vercel、Netlify&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;动态逻辑&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloudflare Workers、EdgeOne Functions、Vercel Functions、AWS Lambda&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;数据存储&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supabase、Neon、Turso、各类云数据库服务&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;开发者关注产品，平台负责运行。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;那么，虚拟主机是不是过时了？&lt;/h2&gt;
&lt;p&gt;这里可能会产生争议。&lt;/p&gt;
&lt;p&gt;我的答案：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不是。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;虚拟主机依然有价值，但它已经不是所有项目的最佳起点。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;✅ 场景一：WordPress 生态&lt;/h3&gt;
&lt;p&gt;WordPress 依然是全球最成熟的网站系统之一。如果你的需求是：&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;h3&gt;✅ 场景二：已经稳定运行的网站&lt;/h3&gt;
&lt;p&gt;一个运行多年的企业网站，如果现在访问正常、业务稳定，为了追求所谓&quot;先进架构&quot;而重构，可能反而增加风险。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;稳定，本身就是价值。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;✅ 场景三：简单需求和固定预算&lt;/h3&gt;
&lt;p&gt;如果网站每天只有几百次访问，没有复杂交互，没有实时业务，那么一年几百元的虚拟主机，依然可能是最合理的选择。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;但新项目继续默认选择虚拟主机，正在成为少数&lt;/h2&gt;
&lt;p&gt;如果今天一个开发者想做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 工具网站&lt;/li&gt;
&lt;li&gt;SaaS 产品&lt;/li&gt;
&lt;li&gt;在线应用&lt;/li&gt;
&lt;li&gt;全球化博客&lt;/li&gt;
&lt;li&gt;Web 服务 API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他的第一反应越来越可能不是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;s&gt;&quot;购买一个 PHP 空间。&quot;&lt;/s&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;而是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&quot;创建一个代码仓库，然后直接部署。&quot;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;原因很简单——现代开发流程已经改变：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;代码提交 → 自动构建 → 自动部署 → 全球分发
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这比传统 FTP 上传文件的方式，更符合现代软件工程模式。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;AI 正在进一步推动这种变化&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;过去需要的角色&lt;/th&gt;
&lt;th&gt;AI 可以辅助的部分&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;前端开发&lt;/td&gt;
&lt;td&gt;生成页面组件、样式布局&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;后端开发&lt;/td&gt;
&lt;td&gt;生成 API 接口、数据结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;运维人员&lt;/td&gt;
&lt;td&gt;生成部署配置、CI/CD 脚本&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;开发者越来越像&lt;strong&gt;产品设计者&lt;/strong&gt;，而不是服务器管理员。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;未来几年，虚拟主机的位置在哪里？&lt;/h2&gt;
&lt;p&gt;虚拟主机不会消失，但它会从&quot;默认答案&quot;变成&quot;专业场景答案&quot;。&lt;/p&gt;
&lt;h3&gt;虚拟主机更适合 👇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;WordPress 网站&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;h3&gt;新一代项目更多采用 👇&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;静态托管（Static Hosting）&lt;/li&gt;
&lt;li&gt;Serverless 函数计算&lt;/li&gt;
&lt;li&gt;Edge Computing 边缘计算&lt;/li&gt;
&lt;li&gt;云数据库即服务&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;建站选型速查表：先看需求，再选平台&lt;/h2&gt;
&lt;p&gt;本文讨论的是新建的个人站点和小型 Web 项目，不是对所有虚拟主机的否定。需要数据库、长期运行进程、固定版本环境或可迁移性的项目，仍然可能更适合 VPS；Serverless 也有供应商锁定、冷启动、配额和调试成本。选型时把这些代价一起算进去，比追逐“最新架构”更重要。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;需求类型&lt;/th&gt;
&lt;th&gt;推荐方案&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WordPress 博客&lt;/td&gt;
&lt;td&gt;虚拟主机&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;企业展示网站&lt;/td&gt;
&lt;td&gt;虚拟主机 或 静态托管&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;个人技术博客&lt;/td&gt;
&lt;td&gt;Cloudflare Pages / Vercel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 工具网站&lt;/td&gt;
&lt;td&gt;Serverless 架构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;全球用户产品&lt;/td&gt;
&lt;td&gt;边缘计算架构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;国内用户项目&lt;/td&gt;
&lt;td&gt;EdgeOne 等国内方案&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;旧系统维护&lt;/td&gt;
&lt;td&gt;保持现状&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;2026年的互联网开发者，还会不会把购买虚拟主机作为第一个动作呢？&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>Cloudflare Wallets：公告梳理、技术判断与我保留的疑问</title><link>https://www.violet27chen.com/posts/cloudflare-wallets/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/cloudflare-wallets/</guid><description>梳理 Cloudflare Wallets 公告，区分官方信息与个人判断，并讨论智能体身份、支付权限、托管风险和开发者可能遇到的限制</description><pubDate>Wed, 05 Aug 2026 09:40:00 GMT</pubDate><content:encoded>&lt;h1&gt;Cloudflare Wallets：公告梳理与个人判断&lt;/h1&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4LBgdTAAMHVAYGBFNeBw4FUQRXUFcIRVBVGVlUU0hHSlYaGE4JUgNLA1gOXElTAlYNSEZeBA&quot; alt=&quot;cloudflare-wallets-hero.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;说明：本文&lt;strong&gt;前半部分&lt;/strong&gt;是对 Cloudflare 官方博客公告（2026-08-04 &lt;em&gt;Announcing Cloudflare Wallets&lt;/em&gt;）的中文梳理；&lt;strong&gt;后半部分&lt;/strong&gt;是我作为一个天天跟 Agent、Cloudflare、支付打交道的开发者的个人解读与几点疑虑。如果你只想要事实，看前半；如果你也写 Agent，建议直接跳到「技术拆解」和「我的疑虑」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;官方公告说了什么&lt;/h2&gt;
&lt;p&gt;今天，AI 智能体想要尝试一个新 API 仍然困难重重。它们往往要先闯过为人类而非智能体设计的登录页、联系人工去绑定支付方式、生成 API Key，然后才搞得清该怎么调用。这套流程对智能体极不友好，原因有两个：&lt;strong&gt;智能体没有一个稳定的身份去注册 API，也缺乏原生的付费手段。&lt;/strong&gt; 因为缺少这两样东西，它们常常在接入软件这一步就卡住，限制了&quot;智能体电商&quot;（agentic commerce）的发展——很多任务它们直接放弃，把注册、绑卡、生成 Key 这些事又踢回给人类。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，Cloudflare 打造了 &lt;strong&gt;Wallets&lt;/strong&gt;。即日起，你可以为自己的账号 &lt;a href=&quot;https://cloudflare.pay&quot;&gt;认领一个 Wallet 句柄&lt;/a&gt;，它会提供一个唯一的用户名，帮助你在与商家交互时建立更清晰的身份。很快，你就能配置并使用 Wallet 来为 API 和内容付费。&lt;/p&gt;
&lt;h3&gt;为什么需要钱包：背景&lt;/h3&gt;
&lt;p&gt;本月初，Cloudflare 发布了 &lt;a href=&quot;https://blog.cloudflare.com/monetization-gateway/&quot;&gt;Monetization Gateway&lt;/a&gt;，帮助客户通过网站和应用赚钱。它将支持使用 &lt;a href=&quot;https://www.x402.org/&quot;&gt;x402 协议&lt;/a&gt; 进行微支付——支付可以直接附着在 HTTP 请求上，覆盖从 AI 推理、数据到内容的各种用途。想在 Monetization Gateway 或其它 &lt;a href=&quot;https://developers.cloudflare.com/agents/tools/payments/x402/&quot;&gt;兼容 x402 的端点&lt;/a&gt; 上收付费用，你就需要一个钱包。&lt;/p&gt;
&lt;p&gt;Cloudflare Wallets 让你可以存储稳定币、购买服务，并在整个 Web 上收款。每个拥有钱包的账号，还能为它的智能体创建 &lt;strong&gt;虚拟钱包（Virtual Wallet）&lt;/strong&gt;，让智能体去购买 API、MCP 工具、内容等等。你可以为虚拟钱包定义护栏（如额度上限、白名单、单笔最大交易额），让智能体在你的账户内安全地花钱。&lt;/p&gt;
&lt;h3&gt;两种钱包：账户钱包与虚拟钱包&lt;/h3&gt;
&lt;p&gt;Cloudflare Wallets 分为两类：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9cWlIECwcAAFJUV1QOUgJSUQ0CU1YBEAQBGwxfUhpIQVxNQEtYV1ZLA1gOXElTBlEPSEZeBA&quot; alt=&quot;cloudflare-wallets-diagram.png&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;账户钱包（Account Wallet）&lt;/strong&gt;：面向人类——Cloudflare 账号的拥有者。可以充值、把消费额度委派给由智能体管理的虚拟钱包，并在需要时提现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;虚拟钱包（Virtual Wallet）&lt;/strong&gt;：面向智能体，通过 API Key 运作。智能体按自身权限消费，最大支出受账户钱包拥有者设定的上限约束。这让智能体能在无需人工反复审批的情况下替用户行事，又限制了它超支的可能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;自由探索的权力&lt;/h3&gt;
&lt;p&gt;虚拟钱包最妙的地方在于：它让智能体得以做自己最擅长的事——去探索几十甚至上百个服务，为某个具体场景找出最好的那一个。通过 x402 的稳定币微支付，智能体无需注册账号就能试用一个 API，几乎零摩擦地测试新选项。支出上限看似束缚，却反直觉地给了智能体更多自由：一个只掌握 10 美元的智能体，你操心它的花费远少于它掌握 1000 美元时；而试用一个 API 往往只花几分钱，10 美元足够它试遍并评估大量选项。&lt;/p&gt;
&lt;h3&gt;不止于支付：给智能体一个稳定身份&lt;/h3&gt;
&lt;p&gt;让人类把&quot;购买/出售服务&quot;的权限委派给智能体只是起点。但这种委派对商家并不总是显眼——一个智能体来到你的网站，你可能对它作为&quot;用户&quot;几乎一无所知。归属感缺失挑战了许多传统 Web 商业模式：给人类一周免费试用很容易，却很难把同样优惠给到一个没有稳定身份、且一个人能随手拉起几十个智能体的&quot;存在&quot;。&lt;/p&gt;
&lt;p&gt;Cloudflare 的解法是把钱包通过 &lt;a href=&quot;https://cloudflare.pay/&quot;&gt;cloudflare.pay&lt;/a&gt; 关联到账号。cloudflare.pay 让智能体可以选择性地亮明身份——因为身份是账号的委派。一个研究型智能体可以住在 &lt;code&gt;research.example.cloudflare.pay&lt;/code&gt;，让商家知道它是某家组织派来的。是否声明身份完全可选；是否优先与&quot;已知智能体&quot;交易，也由商家决定。&lt;/p&gt;
&lt;h3&gt;智能体标识也该是人类可读的&lt;/h3&gt;
&lt;p&gt;Cloudflare 认为，对待智能体的思路会像对待 VPN 一样：一个未标识的身份并不天然不可信，但它需要更多地自证清白——这也正是 Turnstile、Bot Management 在做的事。身份原语将建立在此前工作之上：Web Bot Auth 已允许智能体通过密钥对注册身份；贴到 Wallet 上的 ID 则让这个密钥对变得人类可读。这类似于 DNS 里 URL 与 IP 地址的配对——不给难读的密钥对配一个人类可读标识。随着 x402 基金会推动身份标准演进，Cloudflare 表示会主动采纳。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;我的解读：这东西到底新在哪&lt;/h2&gt;
&lt;p&gt;上面是官方叙事，下面说点我自己的判断。&lt;/p&gt;
&lt;h3&gt;1）为什么是现在，为什么是 Cloudflare&lt;/h3&gt;
&lt;p&gt;&quot;智能体电商&quot;不是新词，但 2025–2026 明显升温。x402 最早是 Coinbase 提的——把 HTTP 402「Payment Required」状态码 resurrection 一下，让&quot;付费&quot;能塞进请求头。Cloudflare 现在把它产品化，位置选得很准：&lt;strong&gt;它手里攥着 Web 流量的入口&lt;/strong&gt;（CDN、Workers 边缘计算、Bot Management），天然适合在&quot;请求这一层&quot;插入支付与身份。换句话说，别人做支付要在应用层接入，Cloudflare 直接在请求层做文章。&lt;/p&gt;
&lt;p&gt;对写 Agent 的开发者而言，痛点真实：你的 Agent 调一个 API，要么你提前注册拿 key，要么走 OAuth——都&quot;反机器&quot;。x402 的思路是 Agent 带钱（稳定币）直接调，服务端验钱放货，这是真正的&quot;机器对机器商务（M2M commerce）&quot;。&lt;/p&gt;
&lt;h3&gt;2）技术拆解：双钱包模型不新，组合很巧&lt;/h3&gt;
&lt;p&gt;把&quot;账户钱包 + 虚拟钱包 + 限额护栏&quot;拆开看，其实没有新密码学，它本质是三个成熟概念的拼装：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;企业信用卡 / 母卡子卡模型&lt;/strong&gt;：主卡（人类）设规则、充值，子卡（智能体）在额度内刷。虚拟钱包就是&quot;发给 Agent 的子卡&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能合约钱包的 spending limit&lt;/strong&gt;：像 Safe{Wallet}、ERC-4337 账户抽象里早就有的&quot;每日限额、白名单、单笔上限&quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP 头内支付&lt;/strong&gt;：x402 让单次 API 调用自带微支付，不需要月费账户、不需要预注册。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正新的是&lt;strong&gt;把&quot;委托消费 + 限额 + 机器原生支付&quot;打包成一个开箱即用的托管产品&lt;/strong&gt;。传统 API 经济是&quot;注册 → 拿 key → 月付/计量后付&quot;，x402 是&quot;调用即付费&quot;。前者对机器极不友好，后者天然机器原生。这才是它和 Stripe、传统 API Key 计费拉开差距的地方。&lt;/p&gt;
&lt;h3&gt;3）横向对比：它和现有方案差在哪&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;传统 API 计费（Stripe 等）&lt;/th&gt;
&lt;th&gt;自托管加密钱包&lt;/th&gt;
&lt;th&gt;Cloudflare Wallets&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;注册门槛&lt;/td&gt;
&lt;td&gt;需人工注册 + KYC&lt;/td&gt;
&lt;td&gt;需自管私钥&lt;/td&gt;
&lt;td&gt;绑定 Cloudflare 账号，认领句柄即可&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;支付触发&lt;/td&gt;
&lt;td&gt;月付 / 计量后付&lt;/td&gt;
&lt;td&gt;手动 / 合约调用&lt;/td&gt;
&lt;td&gt;HTTP 头内 x402 微支付，&lt;strong&gt;调用即付&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;机器友好度&lt;/td&gt;
&lt;td&gt;差（为人类设计）&lt;/td&gt;
&lt;td&gt;中（需自己接）&lt;/td&gt;
&lt;td&gt;原生友好（为 Agent 设计）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;限额护栏&lt;/td&gt;
&lt;td&gt;自己写逻辑&lt;/td&gt;
&lt;td&gt;靠智能合约&lt;/td&gt;
&lt;td&gt;虚拟钱包限额 / 白名单 / 单笔上限，开箱即用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;资金托管&lt;/td&gt;
&lt;td&gt;服务商&lt;/td&gt;
&lt;td&gt;自己&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare 托管&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;地区合规&lt;/td&gt;
&lt;td&gt;全球（受制裁区除外）&lt;/td&gt;
&lt;td&gt;看公链&lt;/td&gt;
&lt;td&gt;受地区限制，稳定币入金仅部分地区&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话总结：&lt;strong&gt;传统方案&quot;反机器但合规成熟&quot;，自托管&quot;去中心化但要自己扛&quot;，Cloudflare 方案&quot;机器原生且省心，但把你去中心化的念想也一起托管了&quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;4）身份层 cloudflare.pay：一把双刃剑&lt;/h3&gt;
&lt;p&gt;官方把&quot;给 Agent 稳定身份&quot;讲得像普惠，但反过来想——这等于把你的 Agent 身份、支付、甚至身份校验（Web Bot Auth）&lt;strong&gt;全都收进 Cloudflare 一家&lt;/strong&gt;。好处是商家能区分&quot;已知组织派来的 Agent&quot;和&quot;匿名 bot&quot;，从而愿意给真实优惠和额度；坏处是开发者被进一步锁进 Cloudflare 生态。VPN 的类比方向对但略牵强：未标识 ≠ 不可信，但要多证明——这套逻辑和 Cloudflare 既有的 Turnstile / Bot Management 一脉相承，它们本来就想分清人和 bot。&lt;/p&gt;
&lt;p&gt;我的态度：&lt;strong&gt;身份可选声明是加分项，但默认绑定 Cloudflare 账号是锁生态的钩子&lt;/strong&gt;，用之前想清楚迁移成本。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;我的几点疑虑（冷静看待）&lt;/h2&gt;
&lt;p&gt;说了好话，也得泼几盆冷水。作为会认真评估要不要用的开发者，我卡在以下几个点：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;① 稳定币出入金，对国内开发者基本是&quot;看看就好&quot;&lt;/strong&gt;
Cloudflare 明说入金/出金&quot;在支持地区&quot;提供，稳定币自助充值也仅对&quot;符合条件的用户&quot;。中国大陆几乎肯定不在首批。这意味着：你作为国内开发者，今天没法合规地往里充美元稳定币，钱包对你就是个空壳。除非走合规稳定币通道或海外实体，否则这块短期和你无关。&lt;strong&gt;这是最硬的一条现实约束。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;② 中心化托管，是省心也是风险&lt;/strong&gt;
钱在 Cloudflare 手里，不是你的自托管钱包。对&quot;Web3 去中心化&quot;叙事是退步，对不想管私钥的普通用户是省心。但反过来——Cloudflare 一旦冻结账号、出技术故障、或被监管要求冻结资产，你的 Agent 的&quot;钱&quot;和&quot;身份&quot;会一起停摆。托管的代价就是这句话：&lt;strong&gt;你的钥匙在别人手里。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;③ 鸡生蛋：生态 adoption 才是最不确定的环节&lt;/strong&gt;
没有足够商家接受 x402，钱包再好也没用；没有足够 Agent 花钱，商家不愿接。Cloudflare 聪明地同时推 Monetization Gateway（卖家侧）和 Wallets（买家侧）来做双向启动，但&quot;让一大批网站愿意收 x402&quot;本身是个销售 + 网络效应问题，不是产品能单方面解决的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;④ 现在仍偏&quot;愿景声明&quot;&lt;/strong&gt;
虚拟钱包、稳定币充值、cloudflare.pay 身份，很多还是&quot;即将推出 / 仅部分地区&quot;。公告本身更像&quot;占坑 + 拉生态&quot;的动员，而不是&quot;今天就可用&quot;的 GA。真要评估，得等虚拟钱包正式可用、且有一批真实商家跑通 x402 之后再算。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;结语：值得观察，但还不到 All in 的时候&lt;/h2&gt;
&lt;p&gt;本文的事实部分以公告发布时的资料为准，后半是个人解读，不构成投资、支付或安全建议。真正采用前，还需要确认地区可用性、资产托管方式、密钥恢复、费用、合规责任和退出路径。&lt;/p&gt;
&lt;p&gt;我的总体判断：&lt;strong&gt;Cloudflare 在&quot;Agent 基础设施&quot;上又落了一子&lt;/strong&gt;——CDN + Workers + Bot Management + 身份 + 支付，一步步把 Agent 跑起来要的零件凑齐。对海外开发者，这是真利好：以后你的 Agent 真能带着稳定币去&quot;逛&quot;一堆 API，试用成本从&quot;注册一整套&quot;降到&quot;几分钱一次&quot;。&lt;/p&gt;
&lt;p&gt;但对国内开发者，我的建议是&lt;strong&gt;先围观&lt;/strong&gt;：受稳定币合规所限，短期用不上核心支付能力；等虚拟钱包和 x402 商家生态真正起来，再评估要不要为它把身份和支付都押到 Cloudflare 上。&lt;/p&gt;
&lt;p&gt;如果你也在写 Agent、也在想&quot;怎么让我的 Agent 自己付钱调 API&quot;，欢迎在评论区聊聊你的方案——毕竟 x402 这条路，现在还是早期。&lt;/p&gt;
</content:encoded></item><item><title>如何使用腾讯云免费部署博客网站</title><link>https://www.violet27chen.com/posts/edgeone-deploy/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/edgeone-deploy/</guid><description>记录用腾讯云 EdgeOne Pages 搭配 Gitee 部署静态博客的过程，包含 DNS、构建配置、自定义域名和免费套餐的实际限制</description><pubDate>Wed, 05 Aug 2026 04:48:00 GMT</pubDate><content:encoded>&lt;h1&gt;腾讯云 EdgeOne Pages 部署博客：过程与限制&lt;/h1&gt;
&lt;p&gt;我用腾讯云 EdgeOne Pages 和 Gitee 部署了一个静态博客。下面记录从领取套餐到绑定域名的过程，重点放在容易出错的 DNS、构建命令和仓库权限上。免费套餐的额度和规则可能调整，部署前请再核对控制台说明；域名本身也可能产生费用。&lt;/p&gt;
&lt;h2&gt;前置准备&lt;/h2&gt;
&lt;p&gt;在开始之前，请先准备好以下三样东西：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;一个域名&lt;/strong&gt;：可以是已经在腾讯云/阿里云买的，也可以是免费的子域名。后面需要把它接入 EdgeOne。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;腾讯云账号&lt;/strong&gt;：需要完成实名认证（个人认证即可，几分钟通过）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gitee 账号&lt;/strong&gt;：同样需要实名认证，用于托管博客代码仓库。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;[!note] 为什么选 EdgeOne Pages？
EdgeOne 是腾讯云的全球边缘加速网络，免费套餐每月提供 10GB 流量和 100 万次请求，对个人博客绰绰有余。它自带 CDN 加速、自动 HTTPS、Git 触发自动部署，体验比不少付费方案还顺手。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一、领取 EdgeOne 免费套餐&lt;/h2&gt;
&lt;p&gt;首先打开腾讯云 EdgeOne 免费套餐领取界面，登录一下自己的腾讯云账号并完成实名认证即可领取：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.tencent.com/act/pro/eo-freeplan&quot;&gt;https://cloud.tencent.com/act/pro/eo-freeplan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgMUQVQClRUBFQDAAANBQIDUwJRA1cIQVdUGQgPVBgVF1ZKQUsMUFZLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805122541.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;领取后，免费套餐会在你的账号下激活，有效期为一年，到期前会提示续领（同样免费）。这一步不会产生任何费用，放心领取。&lt;/p&gt;
&lt;h2&gt;二、新建站点并配置 DNS&lt;/h2&gt;
&lt;p&gt;随后打开腾讯云 EdgeOne 控制台：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://console.cloud.tencent.com/edgeone/zones&quot;&gt;https://console.cloud.tencent.com/edgeone/zones&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;strong&gt;新建站点&lt;/strong&gt;，进入添加站点界面，输入自己的域名并配置好相应的 DNS 记录即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9dAAxVUFVWBwJXBFUPBwMFUlNWUVJcElBUG1tYBRRFF1lPGxRfVQBLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805122954.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里有几个关键点需要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;接入方式&lt;/strong&gt;：如果你的域名是在腾讯云 DNSPod 管理的，可以直接选「NS 接入」，把域名的 NS 记录改到 EdgeOne 提供的地址；如果只想托管某个子域（比如 &lt;code&gt;blog.example.com&lt;/code&gt;），可以选「CNAME 接入」，更灵活。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加速区域&lt;/strong&gt;：免费套餐通常选「全球（不含中国大陆）」即可，后续在 Pages 部署时还会再选一次。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS 记录&lt;/strong&gt;：按控制台提示，到你的域名注册商那里把 NS 或 CNAME 改成 EdgeOne 给出的值，DNS 生效一般需要几分钟到几十分钟不等，耐心等待。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;[!tip] 域名解析没生效怎么办？
配置完 DNS 后控制台会显示「生效中」，状态变绿即代表生效。如果超过半小时还没生效，检查一下 NS 记录是否复制完整、有没有多余的空格或末尾的点。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;三、Fork 博客模板仓库&lt;/h2&gt;
&lt;p&gt;博客需要一个现成的代码仓库。我准备了一个开箱即用的模板，打开 Gitee 博客模板仓库（需要注册并实名认证登录）：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gitee.com/violet27chen/qiyuan-blog-template&quot;&gt;https://gitee.com/violet27chen/qiyuan-blog-template&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击右上角的 &lt;strong&gt;Fork&lt;/strong&gt;，把模板复制一份到你自己的 Gitee 账号下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwOBVAEAlEPXAVTAgYMB1RUUVRVUAEJRwUCFVlYA09ES1ZNTx8KWlJLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805123226.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fork 之后，你就拥有了一个属于自己的博客仓库，后续所有内容修改、文章发布都在你自己的仓库里进行，不影响原始模板。Fork 完成后建议把仓库改成「公开」状态，方便 EdgeOne 拉取。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!note] 模板里有什么？
模板基于 Astro 构建，已经配置好文章页布局、评论区、目录、暗黑模式等常用功能。你只需要往 &lt;code&gt;src/content/posts/&lt;/code&gt; 目录里加 Markdown 文件就能发文章，无需懂代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;四、在 EdgeOne Pages 创建项目&lt;/h2&gt;
&lt;p&gt;随后返回腾讯云，点击&lt;strong&gt;创建项目&lt;/strong&gt;，导入 git 仓库：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://console.cloud.tencent.com/edgeone/makers&quot;&gt;https://console.cloud.tencent.com/edgeone/makers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8OUQJeVlcFVwJVUQcOA1cAV1MEUAALRwUESFAPUBhIEFZNHUsLUgdLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805123357.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;EdgeOne Pages 是 EdgeOne 的静态站点托管功能，类似 Vercel / Cloudflare Pages，支持 Git 仓库推送后自动构建部署。第一次使用会要求授权 Gitee 账号，按提示授权即可。&lt;/p&gt;
&lt;h2&gt;五、选择 Gitee 平台与仓库&lt;/h2&gt;
&lt;p&gt;选择 &lt;strong&gt;Gitee 平台&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgAVVVQUwIEVQlTUgUMUgZUB1FRB1cMRgZUHltdBhwSSw5LHR1dWgxLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805123433.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;授权后，EdgeOne 会拉取你 Gitee 账号下的所有仓库列表。找到刚才 fork 的博客模板仓库，点击一下选中它：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkNVAZQUQQBAAJVClddX1JRU1BXB1cJFAUAGQhaAh5EE1ccGhsNUAVLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805123501.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;六、配置部署并开始&lt;/h2&gt;
&lt;p&gt;等待加载完成，页面会自动识别出框架类型和构建命令。这里需要确认两个关键配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;构建命令&lt;/strong&gt;：模板已预置，一般保持默认（通常是 &lt;code&gt;npm run build&lt;/code&gt; 或 &lt;code&gt;pnpm build&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出目录&lt;/strong&gt;：Astro 项目默认输出到 &lt;code&gt;dist&lt;/code&gt;，保持默认即可。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;加速区域选择「不包含中国大陆节点」&lt;/strong&gt;（免费套餐限制），然后点击&lt;strong&gt;开始部署&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhldBQAHBVACBggBAldZB1JUAA1ZAQZYRlRSGF4IUhoUE11KHBtYUQNLA1gFVUlbAlUWFlhX&quot; alt=&quot;Pasted image 20260805123541.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!warning] 为什么不能选中国大陆节点？
免费套餐不包含中国大陆边缘节点，选了会导致部署失败或产生费用。如果你的博客主要面向海外或你不在意国内访问速度，海外节点完全够用；后续若需要国内加速，可以升级付费套餐。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;部署过程通常需要 1-3 分钟，EdgeOne 会自动拉取代码、安装依赖、执行构建、发布到边缘节点。期间不需要任何手动操作，喝杯水的功夫就完成了。&lt;/p&gt;
&lt;h2&gt;七、预览部署结果&lt;/h2&gt;
&lt;p&gt;部署完成，点右上角的&lt;strong&gt;预览&lt;/strong&gt;即可查看：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtYBgRWAFMCAAZbB1ABBVRTBVBTBwFdFQFWSAsPVRtFR1xIHBlcVlVLA1gFVUlTA1cJSEZeBA&quot; alt=&quot;Pasted image 20260805124023.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时会打开一个 EdgeOne 自动分配的临时预览地址，你的博客已经成功跑起来了：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8BAgReB1gHUgcHBVUKVVdUVwFYAVVfRgcOGlsJAxRHQ1lMHxlfAg1LA1gFVUlbA1wWFlhX&quot; alt=&quot;Pasted image 20260805124146.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;八、绑定自定义域名&lt;/h2&gt;
&lt;p&gt;默认的预览地址是限时的，需要绑定域名才能永久访问。&lt;/p&gt;
&lt;p&gt;点击&lt;strong&gt;域名管理&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8LVgMFBVFUUgABAgUBUAMEUQYHUwcKQldRTFFfBB9AEVobHB0OAA1LA1gFVUlTA1cJSEZeBA&quot; alt=&quot;Pasted image 20260805124235.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;strong&gt;添加自定义域名&lt;/strong&gt;，输入你在第一步接入 EdgeOne 的域名（或子域名），按提示添加 CNAME 记录指向 EdgeOne 给出的地址，等待证书签发完成：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk5YAVdWVlYEUgJQBAIABw8CAlMFA1IATwoHSVgPVR1CQlgeQU4LAgxLA1gFVUlTA1cJSEZeBA&quot; alt=&quot;Pasted image 20260805124258.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;绑定成功后，EdgeOne 会自动为你的域名申请并续期 HTTPS 证书，访问 &lt;code&gt;https://你的域名&lt;/code&gt; 即可永久访问博客，浏览器地址栏还会显示安全小锁标志。&lt;/p&gt;
&lt;h2&gt;上线后的检查&lt;/h2&gt;
&lt;p&gt;发布后建议分别检查首页、文章页、图片、HTTPS 和下一次 Git 推送是否能触发构建。免费托管解决的是静态文件发布，不等于提供数据库、后端接口或无限流量。&lt;/p&gt;
&lt;p&gt;至此，你已经拥有了一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用免费套餐托管静态文件，并获得 CDN 加速和 HTTPS；具体配额以当前控制台为准&lt;/li&gt;
&lt;li&gt;推送文章 Markdown 到 Gitee 就能自动构建上线的发布流程&lt;/li&gt;
&lt;li&gt;全球可访问的边缘节点加速&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后续要发新文章，只需在自己的 Gitee 仓库 &lt;code&gt;src/content/posts/&lt;/code&gt; 下新建一个 &lt;code&gt;.md&lt;/code&gt; 文件，提交后 EdgeOne 会自动重新部署，几分钟后新文章就出现在网站上了。祝你写博愉快！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!tip] 进阶玩法
如果你想用 Obsidian 写文章一键同步到博客，可以参考我的另一篇文章《我改造了一个 Obsidian 插件：写完文章，一键同步到自己的博客》，实现本地写作、自动发布的闭环。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>VMware 安装 CentOS 7 记录：虚拟机配置、网络与兼容性</title><link>https://www.violet27chen.com/posts/vmware-install-centos7/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/vmware-install-centos7/</guid><description>记录在 VMware 中安装 CentOS 7 的完整步骤，包含虚拟机参数、GNOME 桌面、网络和 yum 源配置，并说明系统版本的维护风险</description><pubDate>Mon, 03 Aug 2026 05:09:00 GMT</pubDate><content:encoded>&lt;h2&gt;一、开始之前：我们要做什么&lt;/h2&gt;
&lt;p&gt;简单说，&lt;strong&gt;虚拟机（Virtual Machine）&lt;/strong&gt; 就是用软件在一台电脑里「模拟」出另一台电脑。你可以在里面装任意操作系统，随便折腾、搞坏了删掉重来，完全不影响你原来的 Windows。&lt;/p&gt;
&lt;p&gt;本教程要做的三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 &lt;strong&gt;VMware Workstation&lt;/strong&gt;（一款常用的虚拟机软件）；&lt;/li&gt;
&lt;li&gt;下载 &lt;strong&gt;CentOS 7&lt;/strong&gt; 的系统安装镜像（一个 &lt;code&gt;.iso&lt;/code&gt; 文件）；&lt;/li&gt;
&lt;li&gt;在 VMware 里创建虚拟机，并把 CentOS 7 装进去，最终得到一个能开机、能上网、能装软件的 Linux 桌面环境。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;硬件准备（建议）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内存 4GB 以上（装桌面版 CentOS 建议给虚拟机分 2GB）；&lt;/li&gt;
&lt;li&gt;硬盘剩余空间 20GB 以上（系统 + 镜像文件较大）；&lt;/li&gt;
&lt;li&gt;CPU 支持虚拟化（Intel VT-x / AMD-V，近几年电脑基本都支持，BIOS 里一般是默认开启的）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果准备好了，就往下走。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二、安装 VMware Workstation&lt;/h2&gt;
&lt;h3&gt;2.1 下载 VMware&lt;/h3&gt;
&lt;p&gt;先下载 VMware Workstation 的安装包。夸克网盘链接：&lt;a href=&quot;https://pan.quark.cn/s/5ad91784f3aa?pwd=CgqS&quot;&gt;VMware 下载&lt;/a&gt;（提取码 &lt;code&gt;CgqS&lt;/code&gt;）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;小贴士：VMware 有 Workstation Pro（专业版）和 Player（精简版）之分，本教程用 Pro 版，功能更全。下载到的是试用版也没关系，个人学习足够。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2.2 开始安装&lt;/h3&gt;
&lt;p&gt;打开下载好的安装包，会看到安装向导首页，直接点「下一步」即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkIV1FXVwIDXAJXBFFbBw8GUAVZBFEBFVMESVELUk9DFldPTBoKAANLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082641.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;勾选「我接受许可协议中的条款」，然后点「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhoNWlYDAwUGXQcHUAYOAgBVAFYDBAAIEFcPSF4MURtIFAxKSxwBB1VLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082726.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下来是「安装位置」设置，&lt;strong&gt;兼容性的选项保持默认，不用改&lt;/strong&gt;，直接「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkIVAVVB1hTBgNRUQdeX1MIAARVVlNfRQpTTghbBBlDF1ZOTBUJUgZLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082754.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装路径这一项&lt;strong&gt;建议改一下&lt;/strong&gt;：默认装在 C 盘，最好改到一个空间充足、你自己好找的位置（比如 &lt;code&gt;D:\VMware&lt;/code&gt;）。注意路径里&lt;strong&gt;不要有中文和空格&lt;/strong&gt;，避免后续出奇奇怪怪的报错。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQNVgYCUAUHUFdaAgBdVwdRAgRYVAMORlMBTFoIUxkUQA5PSxRbUgRLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082850.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;「用户体验设置」这两个勾选框保持默认（或按自己喜好），直接「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsBAQYEAVIPVVRTBlQJUwEGVQdTC1cAQgYEGwpdBE4US1YdQU4PVFVLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082919.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;「快捷方式」配置保持默认，点「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8MUVEDCgADUgFaUgYKUQQCU1RQC1NbRgIHGF5UVkkTFglKSkwOWgZLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082934.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;到这里确认一下安装信息，没问题就点「安装」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9bBQVfAgBRVAlUVwEOUAADVwQEUVZcRwRRHAwMAhVHQFobTk5fVVFLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804082955.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安装过程需要一两分钟，等进度条走完，最后点「完成」即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk9aWlAAA1VSXQJQAFcMVAIDU1ZXCgQLFVNWSQ1fUB5BQl5LHR0IVANLBlgCHQJbAUpICFE&quot; alt=&quot;Pasted image 20260804083214.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、下载 CentOS 7 系统镜像&lt;/h2&gt;
&lt;h3&gt;3.1 为什么要装 CentOS 7&lt;/h3&gt;
&lt;p&gt;CentOS 是基于 Red Hat Enterprise Linux（RHEL）的免费社区版，长期是服务器领域的「国民级」系统，大量运维、开发、教学资料都以它为基础。虽然 CentOS 7 官方支持已经结束，但它&lt;strong&gt;极其稳定、资料最多、最适合入门学习&lt;/strong&gt;，所以本教程仍选它。&lt;/p&gt;
&lt;p&gt;我们要下载的是 &lt;strong&gt;CentOS 7.9（2009）&lt;/strong&gt;——这是 CentOS 7 的最后一个版本。&lt;/p&gt;
&lt;h3&gt;3.2 从中科大镜像站下载&lt;/h3&gt;
&lt;p&gt;官方源早已下线，推荐从国内镜像站下载，速度快很多。中科大镜像站直达：&lt;a href=&quot;https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso&quot;&gt;CentOS-7-x86_64-DVD-2009.iso&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksBBlBSU1AEBggHUgUPUFIJBVRXUAFdEgdUSFEIU05GRV4cTBsKBwZLAVcHHQBUAkpICFE&quot; alt=&quot;Pasted image 20260804083811.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这个 DVD 版镜像大约 &lt;strong&gt;4.4GB&lt;/strong&gt;，文件比较大，请耐心等它下载完。&lt;/p&gt;
&lt;p&gt;下载完成后，&lt;strong&gt;把文件移动到一个好记的位置&lt;/strong&gt;，比如专门建一个 &lt;code&gt;D:\ISO&lt;/code&gt; 文件夹放它。&lt;strong&gt;重点：这个路径必须全英文、不要有中文和空格&lt;/strong&gt;，否则后面 VMware 挂载镜像时可能识别异常。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxYAgUHBgVRVwRUAF0IBAZVVwJUCgBcRgBVT18LBk5FF1oeQUgKUlVLA1AFVklUAVEWFlhX&quot; alt=&quot;Pasted image 20260804084056.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;四、在 VMware 里创建虚拟机&lt;/h2&gt;
&lt;h3&gt;4.1 打开 VMware&lt;/h3&gt;
&lt;p&gt;回到桌面，找到 VMware 图标，双击打开。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9fVAJRU1cOUQlVBVAKXw5SBQZUAFFbQgRTHFpYBBVEE1ZKH0gOUVJLA1gFVUlTA1wISEZeBA&quot; alt=&quot;Pasted image 20260804084149.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;第一次打开可能会弹出「软件更新」提示，我们暂时用不到，直接选「跳过此版本 / 以后提醒我」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksAVg0HUFAFXQcHUFAMVgMBWgZYC1MIRFFSTg8OXk4TQAsdQRlaVgVLA1UDVUlVBlcWFlhX&quot; alt=&quot;Pasted image 20260804084247.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4.2 新建虚拟机向导&lt;/h3&gt;
&lt;p&gt;在主界面点「创建新的虚拟机」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgPB1UDAARUUAZQV1IOVw5RWgJWBVYMQAJVHgsMXx4WQQ5LHUwAWlFLA1UDVUlVBlcWFlhX&quot; alt=&quot;Pasted image 20260804084312.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;类型选择「&lt;strong&gt;典型（推荐）&lt;/strong&gt;」，然后「下一步」。典型模式会帮我们自动配置大部分参数，新手最省心。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8KAgQAVgVUBFJQAlEMBwcCVlcHBl0JQVRTTwxfAxQSQQ5NTE4OUABLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804084338.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;「安装客户机操作系统」这一步，&lt;strong&gt;请选择「稍后安装操作系统」&lt;/strong&gt;（不要选上面的「安装程序光盘映像文件」）。原因：我们先把虚拟机框架建好，等会儿再手动挂上 ISO 镜像，这样流程更清晰可控。选好后「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk9cVABTU1cPXQIDVVAJUQQEAQRYCgdcRQVRFV0MUxsVRVpJGksIUQFLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804084459.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;客户机操作系统选「&lt;strong&gt;Linux&lt;/strong&gt;」，然后点击「版本」下方的下拉框，用滚轮往上找，选中 &lt;strong&gt;CentOS 7 64 位&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkNV1dXA1QHAQFWAQcAXg8IVAFWUAYARQcDGl8PVhtEQFZPTE5cBlJLBlgAHQdUCkpICFE&quot; alt=&quot;Pasted image 20260804084709.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkOVwUACwADAAMGVQYNVwZUUVFQV1ZdRlYHH1kIUR5CRg0dQR1cUgNLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804084724.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;给虚拟机起个名字（随便取，默认也行），下面的「位置」选一个你自己能记住的文件夹——&lt;strong&gt;建议单独建一个文件夹放这台虚拟机，不要放默认路径&lt;/strong&gt;，方便以后管理。选好「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgOBQ0FU1cPBFdbV1ALVgACVlAABwcNElcAGQxYUEgTEVsbT0wKVAdLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804084850.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;「指定磁盘容量」保持默认 20GB 即可；下面「虚拟磁盘拆分成多个文件」和「存储为单个文件」二选一，&lt;strong&gt;建议选「将虚拟磁盘存储为单个文件」&lt;/strong&gt;（性能略好、便于整体移动备份）。「下一步」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkxcUlBTU1VUAAYDAAAMB1dRAgAHVFQMTwYBGQoLBRwTSg1ITB5YUVVLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804084932.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;来到「已准备好创建虚拟机」界面，先别急着点完成，我们要挂载镜像，所以点「&lt;strong&gt;自定义硬件&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8KBwEEB1cGV1dQBFxbVQUBBVRXA1QORwcESwxVVhVBEQpAHBxdVgVLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804085004.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在硬件列表里选「&lt;strong&gt;新 CD/DVD (IDE)&lt;/strong&gt;」，右侧选择「使用 ISO 映像文件」，点「浏览」，&lt;strong&gt;找到刚才放好的 CentOS 7 镜像文件，选中后点打开&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwBAQBeUFMGVghVVVwJBQMJWgIFBwNbRgABGVsIUR8SRQoaT0wOUQNLBVIGHQZVCkpICFE&quot; alt=&quot;Pasted image 20260804085350.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkBAlVQVgICXANVAlEIVgQHBVBZAldYRAsATl8JVxpDEAlOShgAUA1LC1UBHQRRAEpICFE&quot; alt=&quot;Pasted image 20260804085402.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwAUQJWVFkGBgNaBVRcUlJRAgUEBFQJFwYCHwpaXhQSRA1PG0hfWgBLBVIGHQZVCkpICFE&quot; alt=&quot;Pasted image 20260804085411.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;挂载好之后点「关闭」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0LWwVVVFNWVQNXAVVbVVJVU1NWBlZaEFEFTFhVAxpFQlZKHExdUFZLBVIGHQZVCkpICFE&quot; alt=&quot;Pasted image 20260804085433.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;回到「已准备好创建虚拟机」界面，现在点「完成」，虚拟机就创建好了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhpYAQwDAFhRBFQAAAUAAgNSVgZSUVJdQFMCSVlZVxwWRFlLTU9fBgxLBlgOHQVRAEpICFE&quot; alt=&quot;Pasted image 20260804085505.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4.3 开机！&lt;/h3&gt;
&lt;p&gt;在虚拟机列表里选中它，点「&lt;strong&gt;开启此虚拟机&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVcVFdRUQcOUAgBBVReUQACVw1XVFELTwIAG1pbBhVFF1scG0haU1FLA1UDVUlVBlcWFlhX&quot; alt=&quot;Pasted image 20260804085527.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;期间如果 VMware 弹出任何询问或提示（比如「可移动设备」「增强键盘驱动」之类），&lt;strong&gt;一律点「确定 / 是」即可&lt;/strong&gt;，不影响安装。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;五、安装 CentOS 7 系统&lt;/h2&gt;
&lt;h3&gt;5.1 启动安装程序&lt;/h3&gt;
&lt;p&gt;开机后会进入一个黑底白字的启动菜单，这就是系统的安装引导界面，直接按 &lt;strong&gt;回车（Enter）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsBVFZRAwQEVVBTC1ENAg5VBQxXVFcBFVBRTgoOVBUWQgtPS0lfBwxLClUDHQRbBkpICFE&quot; alt=&quot;Pasted image 20260804085805.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接着会加载一阵子（有进度条），等它跑到 100% 后，就进入了图形化的安装向导界面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhoKUwdSUAMCXQlWClUJBwZTBVFXBFEBE1ZTS1paAU9HFw5BS0gJAQJLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804085915.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.2 设置语言&lt;/h3&gt;
&lt;p&gt;在左侧语言列表往下翻，找到「中文」，右侧选「简体中文（中国）」，然后点「继续」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9bAVEABABTB1QEUABeVVVVBQFVUVUIRwVUGl1YBRlEQwsaHE9bBlJLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804085950.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.3 软件选择：安装 GNOME 桌面&lt;/h3&gt;
&lt;p&gt;安装信息摘要界面里，点开「&lt;strong&gt;软件选择&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhYAVAEC1kOXQgEV1QAUFRUVlNYBwFdF1RRGg1bBktHE18dSR5YAAJLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090026.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在「基本环境」里选「&lt;strong&gt;GNOME 桌面&lt;/strong&gt;」。这样装完就是带图形界面的 Linux，新手用起来更友好（如果只想要纯命令行系统，可以选「最小安装」，但本教程面向新手，推荐带桌面）。选好后点「完成」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkAUFJVV1RRAQJVCwEMBFBSVlNXCgNdFAFRSApYVE9JSlhATh4LAFJLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090108.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：「完成」按钮在窗口&lt;strong&gt;左上角&lt;/strong&gt;，别点错了（CentOS 的安装界面里很多确认按钮都在左上角，后面会反复遇到）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkIAgYHV1MGU1MEAFEBXgZRU1YEUVVcQwoHTA9aURwUEQtBTEldW1JLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090142.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.4 安装位置&lt;/h3&gt;
&lt;p&gt;往下滑，找到「&lt;strong&gt;安装位置&lt;/strong&gt;」，点进去看一眼。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlYUQwAUVJRVgdRCgVcB1UBUw1WBAYJQQNTTltVUB8TS14eSxVfVQZLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090217.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这里&lt;strong&gt;什么都不用改&lt;/strong&gt;——CentOS 会自动帮我们分区。进来看一眼确认无误，直接点左上角「完成」就行（新手不建议手动分区，容易翻车）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksNUldWBgICVFNRVQUMVwQAUFACBVUIF1RTGFgIVElBRl4ZShlcWwVLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090251.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.5 开启网络（很重要！）&lt;/h3&gt;
&lt;p&gt;选择「&lt;strong&gt;网络和主机名&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8IUwFWBldVVQUHUlEJVgQCB1ZXUFZYTgAEH1FfVktAFlpMHR4LVlJLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090325.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;把右上角的「以太网」开关&lt;strong&gt;打开&lt;/strong&gt;（变成「已连接」），这样虚拟机才有网。然后点左上角「完成」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkBBQUEVAJSUgRVVVReU1UFUwxTUVMPQwMGHQpYA0hGEwsZGx0LBVVLA1EHUUlVBFcWFlhX&quot; alt=&quot;Pasted image 20260804090415.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ 这一步非常关键！很多人装完发现上不了网，就是忘了开以太网。虚拟机里的「以太网」相当于一块虚拟网卡，由 VMware 提供，不开就断网。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;5.6 开始安装&lt;/h3&gt;
&lt;p&gt;回到安装信息摘要，确认软件、安装位置、网络都 OK 后，点右下角「&lt;strong&gt;开始安装&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsJVlEAAVAHAwJbUFcJXlQGBwICBwRfRwEOFQhbU0hGFlpKGBgIVlFLA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804090450.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.7 设置 ROOT 密码&lt;/h3&gt;
&lt;p&gt;安装过程中会让我们设置账户。先点「&lt;strong&gt;ROOT 密码&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwJVgQCBgdSVlMEUVwAVA8GVFQCAANYRQYCGVhaBBVJRlhPGB5bAAZLA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804090632.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;ROOT（超级管理员）相当于 Windows 里的 Administrator，拥有系统最高权限——大家平时听过的「安卓 Root」就是获取最高权限的意思。在这里给 root 设一个&lt;strong&gt;你自己能记住的密码&lt;/strong&gt;，然后点左上角「完成」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVktfUw0FAFcABAEDBwAMVQIGBlBXVgMJFQYDFVBcURhDFFlOGxhYAQBLA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804090718.png&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;提示：如果密码太简单（比如太短、太常见），CentOS 会要求你点两次「完成」才让过，这是它在警告你密码强度低，照做即可。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;5.8 创建普通用户&lt;/h3&gt;
&lt;p&gt;再点「&lt;strong&gt;创建用户&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsBVVZWAwRSAVRQBQIPVVVTU1AEBlZYFAAES1hZUU9FEFdAGx4OBwFLA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804090826.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;「全名（显示名称）」和「用户名」&lt;strong&gt;尽量保持一致&lt;/strong&gt;（比如都填 &lt;code&gt;violet&lt;/code&gt;），密码设一个好记的。日常使用建议用这个普通用户登录，比直接用 root 更安全。设好后双击左上角「完成」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8KAQQAAVVTVVABCl0ABQ8FUVcHBV1dQQtWS1BfAUhHEF1PShkMAA1LA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804090939.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5.9 等待安装完成并重启&lt;/h3&gt;
&lt;p&gt;返回配置界面，安装还在进行中，等它走完（进度条 + 底部「正在安装」字样消失）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUNUwcFUFIOVAkHVQIAUlJRAQxVB1cLRAoGGltbARhAQlpJSRpaAAVLA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804091041.png&quot; /&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;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4BWwxSV1gBVVVVAFYKV1QGUgBUAFNdRAAHS1oOUh8RQVkbTUkJU1VLA1EFUElVBlcWFlhX&quot; alt=&quot;Pasted image 20260804091347.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、首次启动与初始配置&lt;/h2&gt;
&lt;h3&gt;6.1 选择启动项&lt;/h3&gt;
&lt;p&gt;重启后可能会再次进入一个启动菜单，选中第一个，直接按 &lt;strong&gt;回车&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgLVgdXAVQCBgYEUVEPV1NWUgIEB1VcQVZWHFoPU09GF1cdTk4BUQZLC1MDHQRVAEpICFE&quot; alt=&quot;Pasted image 20260804091426.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6.2 接受许可证&lt;/h3&gt;
&lt;p&gt;进入「初始设置」界面，先选「&lt;strong&gt;许可信息&lt;/strong&gt; / 接受许可证」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9dVAVWVwcBUFBRC1MOUlcAVQBZAQFbTwAPG1hcAkhBFwobQR8NWw1LA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091542.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;勾选「我同意许可协议」，点左上角「完成」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4BUgUCVAIDBggHBwUAVVQBWgRYVABdEwUEGV5dAkhCQQ4aGxpYAQJLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091613.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;然后点「&lt;strong&gt;完成配置&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk4NBQJTBVUPXAdSUQcJAlNRUFBQBVVbQlRVSV5YUh4WFAsdT0sIVFJLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091653.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6.3 登录系统&lt;/h3&gt;
&lt;p&gt;登录有两种方式：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式一：用刚才创建的普通账号登录&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0JVlFUUwBVVgNRBlIMBwUCBgwHUQELTlYHSFEJUhxEFlxIHx4MVwRLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091731.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;点击你的用户名，输入密码即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk9cAgZfA1APUVBUVlFdBwRWUVFXBwdcEgsAFQwIVh9BEFZAQUhcAlZLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091759.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方式二：用 root 管理员登录&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你想直接用最高权限账号，点「&lt;strong&gt;未列出？&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkLAgIEVAUOBlUEBAdbX1RRW1NTB1daElNVH1oIUUxJFlpOSksNV1FLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091851.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;用户名输入 &lt;code&gt;root&lt;/code&gt;（&lt;strong&gt;一定要小写&lt;/strong&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4BAVEDBAdRVQNQVwABBABRBVdZVwFdQwtVFFpZXhhAE1lIGkkABwNLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804091916.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;再输入 root 的密码。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQJWgdSC1UGB1IBVV0BBwQJVQBXVFdYTwUDH1lZAktBRVwZQBUPBlBLA1UPUUlbB1UWFlhX&quot; alt=&quot;Pasted image 20260804092015.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6.4 初次进入桌面的向导&lt;/h3&gt;
&lt;p&gt;登录后会进入欢迎界面，语言选「中文」，然后一路点右上角的「&lt;strong&gt;前进&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVbUwBeUFYPXAkEBl0OVFUBAAdWUwFYFAADHwtVBRtEEA0aQUsNBgVLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092120.png&quot; /&gt;
&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtbUFBQC1dRVgdQVwIJVFUDAQZWVldYTlcHTgxeBhpAS1kbTxsJUQRLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092147.png&quot; /&gt;
&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxYBQFfC1ACVAhQAQUIUAZTAgdZB1EITgBWGVFeUxVAFA1OTklbUlFLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092157.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;「连接在线账号」这步用不到，点右上角「&lt;strong&gt;跳过&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgBVwBVUVIHAFQBAFYIUQcGVVZQUwEPTgEOHgtUAhVFS1pMSRkLVFZLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092222.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最后点「&lt;strong&gt;开始使用 CentOS Linux&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxbVQNfUVBUXVBTA1BZUAcGBlFSVARcQVNVHAhZUR8WE1ZMTx0KU1VLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092258.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如果弹出「设置」向导，直接点右上角「&lt;strong&gt;关闭&lt;/strong&gt;」即可，不影响使用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhcV1YHCwJVUFRRB1QAAgIGVAxVAgMAEgFUSVsIUx5GEFZATBoMB1JLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092336.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;恭喜，你现在拥有了一个能用的 CentOS 7 桌面系统！🎉&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、（可选）配置国内 yum 源&lt;/h2&gt;
&lt;p&gt;系统虽然装好了，但 CentOS 7 官方的软件源（yum 源）已经下线。如果不配置，以后用 &lt;code&gt;yum install&lt;/code&gt; 装软件会各种报错。所以我们把源换成国内镜像（中科大），这一步&lt;strong&gt;前提是你得用 root 账号&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;7.1 打开终端&lt;/h3&gt;
&lt;p&gt;点左上角「&lt;strong&gt;应用程序&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVYUQVfUVUHXFNWBlJeVQdRVwxVC1NfTlEPFVxcXhtCQFtLQUkBVwRLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092549.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;依次选「系统工具」→「&lt;strong&gt;终端&lt;/strong&gt;」。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlcVwYABVEHUlVVBAJcBA4CAgNZBlUORVYHFFoJAxhCQF5BTx4NVgVLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092624.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;7.2 切换到 root（如果你还没用 root 登录）&lt;/h3&gt;
&lt;p&gt;打开终端后，看命令行 &lt;code&gt;@&lt;/code&gt; 符号前面的名字：如果不是 &lt;code&gt;root&lt;/code&gt; 而是你的普通用户名，就需要先提权。执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;su
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后输入 root 的密码。&lt;strong&gt;注意：输入密码时屏幕不会显示任何字符，这是正常的&lt;/strong&gt;，输完直接按回车即可切换到 root。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgOUVFWBQIDUQhWBlMBUlRVUQZZVFFbFwoHFQ9YAx1ES1pBSEgNVwxLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804093333.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;（如果开头已经是 &lt;code&gt;root@...&lt;/code&gt;，跳过这一步。）&lt;/p&gt;
&lt;h3&gt;7.3 写入国内 yum 源配置&lt;/h3&gt;
&lt;p&gt;把下面这一整段复制粘贴进终端（一次性粘贴，CentOS 会自动写入配置文件）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /etc/yum.repos.d/CentOS-Base.repo &amp;lt;&amp;lt;&apos;EOF&apos;
[base]
name=CentOS-7 - Base
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/os/$basearch/
enabled=1
gpgcheck=0

[updates]
name=CentOS-7 - Updates
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/updates/$basearch/
enabled=1
gpgcheck=0

[extras]
name=CentOS-7 - Extras
baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos/7/extras/$basearch/
enabled=1
gpgcheck=0
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8JVFBTBwAOVAQHUVEOB1dUWlRZVAAMFQFUGQxdVUwTRF9OH0gKWwdLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804092918.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;粘贴完按一次 &lt;strong&gt;回车&lt;/strong&gt;，让 &lt;code&gt;EOF&lt;/code&gt; 收尾、命令生效。&lt;/p&gt;
&lt;h3&gt;7.4 刷新软件缓存&lt;/h3&gt;
&lt;p&gt;接着依次执行下面两条命令，重建本地软件缓存：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yum clean all
yum makecache
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRdUwYEB1cEVAEDAFNdAAJUVgxQVlBfR1NWFVlfUk8RQV4cTkgBAVBLA1UPUUlaC1cWFlhX&quot; alt=&quot;Pasted image 20260804093034.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看到没有报错、正常拉取完缓存，就说明 yum 源配置成功。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;八、安装完成后的检查&lt;/h2&gt;
&lt;p&gt;CentOS 7 已经进入生命周期末期，不建议把它作为新生产环境的默认系统。本文更适合学习旧项目、复现实验环境或维护已有系统；新项目应优先选择仍受支持的发行版，并在虚拟机中使用快照和非 root 账号进行测试。&lt;/p&gt;
&lt;p&gt;到此为止，你已经完成了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 安装 VMware 虚拟机软件&lt;/li&gt;
&lt;li&gt;✅ 下载并挂载 CentOS 7 镜像&lt;/li&gt;
&lt;li&gt;✅ 创建虚拟机并装好 CentOS 7（带 GNOME 桌面）&lt;/li&gt;
&lt;li&gt;✅ 配好网络和国内 yum 源&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;接下来就可以愉快地在 Linux 里折腾了：学学基础命令（&lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;cd&lt;/code&gt;、&lt;code&gt;pwd&lt;/code&gt;、&lt;code&gt;mkdir&lt;/code&gt;）、试着用 &lt;code&gt;yum install&lt;/code&gt; 装个软件、或者搭一个小小的 Web 服务。踩坑别怕，虚拟机里随便造，搞坏了大不了删了重来。&lt;/p&gt;
&lt;p&gt;如果这篇教程帮到了你，欢迎在下方评论区告诉我；有任何卡住的地方，也欢迎留言，我会尽量回复。&lt;/p&gt;
</content:encoded></item><item><title>Windows 安装 Claude Code 记录：Git、Node.js、登录与费用</title><link>https://www.violet27chen.com/posts/claude-code-install-tutorial-windows/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/claude-code-install-tutorial-windows/</guid><description>记录 Windows 上安装 Git、Node.js 和 Claude Code 的步骤，并区分官方账号登录与第三方 API 配置，补充权限、费用和安全注意事项</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Windows 安装 Claude Code：我的配置记录&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;本文记录在 Windows 上安装 &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude Code&lt;/a&gt; 时遇到的环境准备、登录和权限问题。安装器的按钮可能变化，账号、地区、套餐和 API 费用也应以官方页面为准。第三方 API 只适合你明确知道服务来源和密钥流向时使用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claude Code 是 Anthropic 推出的&lt;strong&gt;终端里的 AI 编程助手&lt;/strong&gt;：你用它来读代码、改代码、跑命令、排查问题，就像身边坐了一个随时在线的资深工程师。它不是一个独立的大软件，而是运行在**终端（命令行）**里的一个工具，因此需要先准备好两个「地基」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;：Claude Code 靠它来做版本控制和代码操作；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt;：Claude Code 本身是用 JavaScript 写的，需要 Node.js 这个运行环境才能启动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;参考教程&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安装 Git 的截图和步骤说明，参考了 CSDN 李同学的《Git for Windows 详细安装教程》（链接：&lt;a href=&quot;https://blog.csdn.net/Little_Carter/article/details/155110165?sharetype=blog&amp;amp;shareId=155110165&amp;amp;sharerefer=APP&amp;amp;sharesource=chenfu123654&amp;amp;sharefrom=link&quot;&gt;原文链接&lt;/a&gt;），感谢原作者的整理&lt;/li&gt;
&lt;li&gt;安装 Node.js 的截图和步骤说明，参考了 CSDN 多加点辣也没关系的《npm 安装与配置教程》（链接：&lt;a href=&quot;https://blog.csdn.net/xhmico/article/details/159132633?sharetype=blog&amp;amp;shareId=159132633&amp;amp;sharerefer=APP&amp;amp;sharesource=chenfu123654&amp;amp;sharefrom=link&quot;&gt;原文链接&lt;/a&gt;），在此一并致谢。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面我们就按顺序装好这三样东西。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一、安装前的环境要求&lt;/h2&gt;
&lt;p&gt;在开始之前，先确认你的电脑满足以下条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 10 或 Windows 11（64 位）；&lt;/li&gt;
&lt;li&gt;有一个&lt;strong&gt;管理员账号&lt;/strong&gt;（安装软件时需要权限）；&lt;/li&gt;
&lt;li&gt;网络可以正常访问外网（部分步骤可能需要科学上网或国内镜像，文中会说明）；&lt;/li&gt;
&lt;li&gt;不需要任何编程基础，只需要会「双击」和「点 Next」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;整篇文章分三大步：&lt;strong&gt;装 Git → 装 Node.js → 装 Claude Code&lt;/strong&gt;。建议按顺序来，因为后一步依赖前一步。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二、第一步：安装 Git&lt;/h2&gt;
&lt;h3&gt;2.1 下载 Git for Windows&lt;/h3&gt;
&lt;p&gt;打开浏览器，访问 &lt;a href=&quot;https://git-scm.com/install/windows&quot;&gt;Git 官方下载页&lt;/a&gt;，页面通常会根据你的系统自动给出 Windows 版本的下载按钮。&lt;/p&gt;
&lt;p&gt;如果官网下载太慢，也可以用我准备的夸克网盘备用链接：&lt;a href=&quot;https://pan.quark.cn/s/c91c781c1479?pwd=KaFV&quot;&gt;夸克网盘（提取码 KaFV）&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;下载得到一个类似 &lt;code&gt;GitforWindows-x64-Setup.exe&lt;/code&gt; 的安装程序，记住它保存在哪个文件夹（一般是「下载」目录）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRdWlJRBVgFUVRRBgcLBw4HWgxVAFUNQwBUGgxfX0xEQ1geHUlaU1ZLA1MPVUlaAF0WFlhX&quot; alt=&quot;Pasted image 20260803221724.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2.2 开始安装&lt;/h3&gt;
&lt;p&gt;找到刚下载的安装程序，双击运行。下面每一步都配了截图，&lt;strong&gt;看不懂选项含义直接点 Next 用默认即可&lt;/strong&gt;，我在关键处会标「注意」。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（1）许可证&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先是 GNU 通用公共许可证，直接点 &lt;strong&gt;Next&lt;/strong&gt; 继续。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8AUAJWCwIOBghbUFBeAwUDUQ0CVlEOTwdUFFlUUhxHFl8eGB4JAQJLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803221408.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（2）选择安装位置&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;建议&lt;strong&gt;保持默认路径&lt;/strong&gt;（&lt;code&gt;C:\Program Files\Git&lt;/code&gt;），直接点 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：如果改到其他盘，后续配置环境变量会麻烦一点，新手不推荐改。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk5fBwVRAAQCVgJTUQcMUFUJWwNWVlFaTldVHFhbBhVCQVtLQEwBBVZLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222340.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（3）选择安装组件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;默认即可，直接点 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk9YVAADVAcDUwIHVgUOXw9TVFFUV1EAEAEHSQsLUUlEQl0cHUgNVwxLB1gBHQVUAkpICFE&quot; alt=&quot;Pasted image 20260803222415.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（4）开始菜单文件夹&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;直接点 &lt;strong&gt;Next&lt;/strong&gt; 用默认设置。&lt;/p&gt;
&lt;p&gt;![Couldn&apos;t upload file](Pasted image 20260803222509.png)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（5）选择默认编辑器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这里默认用 &lt;strong&gt;Vim&lt;/strong&gt; 作为 Git 的编辑器。直接点 &lt;strong&gt;Next&lt;/strong&gt; 即可。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;说明：Vim 是命令行里的一个老牌编辑器，平时你基本用不到它。选默认不会对你后续使用 Claude Code 有任何影响。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgMAQACBAcDUQgABwdeVlMDBQMDBVAAQlRTSQsMUkhES1sdTx0MAgxLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222534.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（6）调整初始分支名称&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;建议选择 &lt;strong&gt;&quot;Let Git decide&quot;&lt;/strong&gt;（让 Git 自己决定），然后点 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkIVAJSClABUgYGC1YAVQEEWwIAUVRfRldRTFkIVxUWSlpISEsPUQBLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222614.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（7）调整 PATH 环境变量&lt;/strong&gt; ⭐ 这一项比较重要&lt;/p&gt;
&lt;p&gt;推荐选择第二项：&lt;strong&gt;&quot;Git from the command line and also from 3rd-party software&quot;&lt;/strong&gt;。这样装完后，你可以在系统自带的 CMD、PowerShell 里直接输入 &lt;code&gt;git&lt;/code&gt; 命令。选好后点 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为什么要选第二项？第一项只能在某些特定终端里用 Git；第三项会把一堆 Unix 工具塞进系统 PATH，可能和其它软件冲突。第二项最省心。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4OAQxRAlkCUghVBFcOUVMAVlZTBlQNEAACSAsOVEkRRFxITUsLU1VLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222632.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（8）选择 HTTPS 后端&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用默认选项，点 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8BAQZVBwQAUFQEUQVbAAAJVAdZAVcMQwJVGVsJUhVEEw5ATkwIAgVLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222645.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（9）配置行尾符号转换&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选择 &lt;strong&gt;&quot;Checkout Windows-style, commit Unix-style line endings&quot;&lt;/strong&gt;（Windows 风格检出、Unix 风格提交），然后点 &lt;strong&gt;Next&lt;/strong&gt;。这是跨平台协作的标准配置，能避免不同系统换行符打架。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRdAQAABARVBlRRCwYIVldUAANZVAMNTwsHHg1ZUksTQgtKTU9dUVFLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222658.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（10）配置终端模拟器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选择 &lt;strong&gt;&quot;Use MinTTY&quot;&lt;/strong&gt;（使用 MinTTY 作为 Git Bash 的终端），点 &lt;strong&gt;Next&lt;/strong&gt;。MinTTY 比 Windows 默认控制台更好用、支持中文显示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhpYB1deBFYBUldVAF0KUQJWAAxUAFFfFQBUGF1dUBRDRwodThgLAgNLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222713.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（11）配置 git pull 的默认行为&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选择默认值即可，点 &lt;strong&gt;Next&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4IV1dVA1ACXVdUUQAJVwUJVgMAUV1fFwADFFhYBU9EQQxKQRkMVQ1LB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222725.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（12）选择凭证助手&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选择 &lt;strong&gt;&quot;Git Credential Manager Core&quot;&lt;/strong&gt;（凭证管理器），点 &lt;strong&gt;Next&lt;/strong&gt;。它会在你第一次输入账号密码后帮你记住，以后推送代码不用重复登录。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtcAVIDA1UAAQVQVVQJUQ4IWg0EAlUNQVAPFF1eVx1DQV9AGB9bVlZLB1gBHQVUAEpICFE&quot; alt=&quot;Pasted image 20260803222830.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（13）配置额外功能&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;勾选 &lt;strong&gt;&quot;Enable file system caching&quot;&lt;/strong&gt;（启用文件系统缓存，提速），以及 &lt;strong&gt;&quot;Enable symbolic links&quot;&lt;/strong&gt;（启用符号链接），然后点 &lt;strong&gt;Install&lt;/strong&gt; 开始安装。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxdBgdQAQcAUQMDVVMLX1dWVQBVBgFcRwNTGFpYAhlFRV5ISRlYAANLB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222850.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（14）等待安装完成&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;进度条走完就装好了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwMVQQAVAQCUQVSVl1aXgJSUQdSB1EAR1RTHA9VAkgWFlhOTB5dVA1LB1gPHQVUB0pICFE&quot; alt=&quot;Pasted image 20260803222906.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2.3 验证 Git 是否安装成功&lt;/h3&gt;
&lt;p&gt;按 &lt;code&gt;Win + R&lt;/code&gt; 键，输入 &lt;code&gt;cmd&lt;/code&gt; 打开命令提示符，输入下面命令检查版本：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果屏幕上打印出类似 &lt;code&gt;git version 2.xx.x.windows.1&lt;/code&gt; 的版本号，说明 Git 安装成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwMVAwHUQUBAAAEAgIIAgYCBwZSA1UIQlMDTg9dBBxFFgwaTh1YBlFLA1AGVklUAVIWFlhX&quot; alt=&quot;Pasted image 20260803222923.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、第二步：安装 Node.js&lt;/h2&gt;
&lt;p&gt;Claude Code 是基于 Node.js 运行的，所以必须先装好 Node.js（npm 会随它一起装好，后面装 Claude Code 要用到 npm）。&lt;/p&gt;
&lt;h3&gt;3.1 下载 Node.js（选 LTS 版本）&lt;/h3&gt;
&lt;p&gt;打开 &lt;a href=&quot;https://nodejs.org/en/download/&quot;&gt;Node.js 官网下载页&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhQBAlEAUAUDAVRUBAABUFUGAgcEAlQPTwdTTAtZXxVCQApJQEtcUwVLA1kAVUlbAlwWFlhX&quot; alt=&quot;Pasted image 20260803223812.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;一般来说点 &lt;strong&gt;LTS&lt;/strong&gt;（Long Term Support，长期支持版）下载，这是最稳定的版本，适合日常使用。根据你电脑系统选择：比如 Windows 64 位就点 &lt;strong&gt;Windows Installer (.msi)&lt;/strong&gt; 下的 &lt;strong&gt;64-bit&lt;/strong&gt; 开始下载。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRfAFJXVwAEUVBbBVcIAA8IWlFXVlxaRQsFTFhcX0hGQAodTxkIWw1LA1kOU0lbAVcWFlhX&quot; alt=&quot;Pasted image 20260803223916.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3.2 安装 Node.js&lt;/h3&gt;
&lt;p&gt;双击下载好的 &lt;code&gt;.msi&lt;/code&gt; 安装包，一路 &lt;strong&gt;Next&lt;/strong&gt; 到底，最后点 &lt;strong&gt;Finish&lt;/strong&gt; 完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksJUFcFBwRVUlAGB1QAVlNSU1QFV1MNQFBUFF8PBEtDE1pOTR8LVABLClkBHQRTB0pICFE&quot; alt=&quot;Pasted image 20260803223946.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk4PBQwEA1FTXQAHBlBZAAYEAg1TCl1YRFcEHFxeAhpGE1xKQUwAAgdLClECHQVbC0pICFE&quot; alt=&quot;Pasted image 20260803224000.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgIUFBVUVNSVQEEAl1cBFdUWlBTUFIITwIDTlBdBBQWFFxPHR9bUQBLA1AEU0lTBVcWFlhX&quot; alt=&quot;Pasted image 20260803224023.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3.3 验证 Node.js 与 npm&lt;/h3&gt;
&lt;p&gt;同样按 &lt;code&gt;Win + R&lt;/code&gt; → 输入 &lt;code&gt;cmd&lt;/code&gt; 打开命令行，分别执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;node -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果显示版本号（如 &lt;code&gt;v20.x.x&lt;/code&gt;），说明 Node.js 安装成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgIUFBVUVNSVQEEAl1cBFdUWlBTUFIITwIDTlBdBBQWFFxPHR9bUQBLA1AEU0lTBVcWFlhX&quot; alt=&quot;Pasted image 20260803224023.png&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;npm 是 Node.js 的包管理工具，安装 Node.js 时会自动带上。如果这里也能打印出版本号，说明 npm 也正常。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVbAlIHUwACBAZSClIJUg9RBQQEAFddRFBRHwoJA05JSl8dGxoNWgBLA1ADVklTBlMWFlhX&quot; alt=&quot;Pasted image 20260803224041.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;四、第三步：安装 Claude Code&lt;/h2&gt;
&lt;p&gt;前置的 Git 和 Node.js 都就绪后，就可以安装主角 Claude Code 了。&lt;/p&gt;
&lt;h3&gt;4.1 使用 npm 全局安装&lt;/h3&gt;
&lt;p&gt;确认 Node.js 可用后，在命令行执行下面这条命令（全局安装 Claude Code）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你的网络访问 npm 官方源很慢或失败，可以换成国内镜像源再装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4.2 验证安装&lt;/h3&gt;
&lt;p&gt;安装完成后，输入下面命令看是否能打印出版本号：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;claude --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只要显示出类似 &lt;code&gt;X.Y.Z&lt;/code&gt; 的版本号，就说明 Claude Code 安装成功。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsBUwFXUVQPAwEEVgYBXwMHBVdUBgMBFwUDT18LV0kSQAtATh4IU1VLAVQBHQBRA0pICFE&quot; alt=&quot;Pasted image 20260803224810.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4.3 启动并登录&lt;/h3&gt;
&lt;p&gt;直接输入命令启动 Claude Code：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;claude
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgBUQdTBAVWXVBVVwZbAlUJW1dZVlQLTgtSSA9cUE4TQApASB8KVFJLAVYOHQBWBkpICFE&quot; alt=&quot;Pasted image 20260803224925.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;第一次启动会有一系列初始化设置，&lt;strong&gt;一路按默认（回车 / 选默认项）即可&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgNBQMFC1gGXVNVAQcAVQMGWw0DAlVfFwJVFAgPVhkUFF8eGBsOAAxLA1EOUklXBV0WFlhX&quot; alt=&quot;Pasted image 20260803224946.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接着会要求你&lt;strong&gt;登录 Claude 官方账号&lt;/strong&gt;。如果你已经订阅了 Claude 的付费计划（Pro / Max），按提示在浏览器里完成授权登录即可开始使用。&lt;/p&gt;
&lt;h3&gt;4.4 没有官方账号？接入第三方 API&lt;/h3&gt;
&lt;p&gt;如果你没有 Claude 官方订阅，也可以用&lt;strong&gt;兼容 Anthropic Messages API 的第三方大模型服务&lt;/strong&gt;来驱动 Claude Code。做法是在环境变量里设置 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;（第三方接口地址）和 &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;（你的 API Key）， Claude Code 就会把请求转发到对应服务。&lt;/p&gt;
&lt;p&gt;各家服务的具体接入步骤官方都写好了，照着配就行，这里不再赘述：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://api-docs.deepseek.com/zh-cn/quick_start/agent_integrations/claude_code&quot;&gt;接入 Claude Code | DeepSeek API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://platform.kimi.com/docs/guide/claude-code-kimi&quot;&gt;接入 Claude Code | Kimi API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bigmodel.cn/cn/coding-plan/tool/claude&quot;&gt;接入 Claude Code | GLM API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://platform.minimaxi.com/docs/token-plan/claude-code&quot;&gt;接入 Claude Code | MiniMax API Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;五、常见问题（FAQ）&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q1：输入 &lt;code&gt;git&lt;/code&gt; / &lt;code&gt;node&lt;/code&gt; / &lt;code&gt;claude&lt;/code&gt; 提示「不是内部或外部命令」？&lt;/strong&gt;
多半是刚装完软件、当前命令行窗口还没刷新环境变量。解决办法：&lt;strong&gt;关掉命令行窗口重新打开一个&lt;/strong&gt;再试。如果还不行，回头检查安装时 Git 的 PATH 那一步有没有选对第二项。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q2：npm 安装 Claude Code 卡住或报网络错误？&lt;/strong&gt;
换成国内镜像源再装（见 4.1 的第二条命令）。如果还慢，可以挂代理后重试。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q3：提示 Node.js 版本太低？&lt;/strong&gt;
Claude Code 需要 Node.js 18 及以上。重新去官网下载安装最新的 &lt;strong&gt;LTS&lt;/strong&gt; 版本即可（见第三节）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q4：启动 &lt;code&gt;claude&lt;/code&gt; 后不知道怎么退出？&lt;/strong&gt;
在对话框里输入 &lt;code&gt;/exit&lt;/code&gt; 或按 &lt;code&gt;Ctrl + C&lt;/code&gt; 两次即可退出。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q5：用第三方 API 登录后还是连不上？&lt;/strong&gt;
通常是 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 或 &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; 填错，或该服务余额不足。对照对应服务商的官方接入文档逐项核对。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、安装后的安全检查&lt;/h2&gt;
&lt;p&gt;确认 &lt;code&gt;git&lt;/code&gt;、&lt;code&gt;node&lt;/code&gt; 和 Claude Code 能正常运行后，再把项目目录交给工具。不要在包含密码、私钥或客户资料的目录中直接运行未知命令，也不要把 API Key 提交到 Git 仓库。&lt;/p&gt;
&lt;p&gt;到这里，你已经完成了 &lt;strong&gt;Git + Node.js + Claude Code&lt;/strong&gt; 的完整安装，并成功启动。回顾一下全流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;装 Git（一路 Next，PATH 选第二项最关键）；&lt;/li&gt;
&lt;li&gt;装 Node.js（选 LTS，一路 Next）；&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;npm install -g&lt;/code&gt; 装 Claude Code，用 &lt;code&gt;claude&lt;/code&gt; 启动并登录；&lt;/li&gt;
&lt;li&gt;没有官方账号就用第三方 API（配两个环境变量）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;恭喜，你的终端里现在有了一个能陪你写代码、读代码、改 Bug 的 AI 搭档。接下来就可以在任意项目文件夹里输入 &lt;code&gt;claude&lt;/code&gt;，开始你的第一个 AI 辅助编程任务了。&lt;/p&gt;
</content:encoded></item><item><title>我改造 Obsidian 插件，把文章同步到自己的博客</title><link>https://www.violet27chen.com/posts/obsidian-sanity-blog-sync-plugin/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/obsidian-sanity-blog-sync-plugin/</guid><description>记录我基于开源项目二次开发 Obsidian 插件的过程，包含 Sanity 字段映射、图片上传、发布和回同步，以及目前仍存在的限制</description><pubDate>Sat, 01 Aug 2026 03:13:00 GMT</pubDate><content:encoded>&lt;p&gt;对于喜欢写博客的人来说，一个舒服的写作流程非常重要。&lt;/p&gt;
&lt;p&gt;很多技术作者都会选择 Obsidian 作为自己的知识管理和写作工具，因为它拥有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;本地 Markdown 存储&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不受平台限制的创作体验&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是，当文章需要发布到自己的博客时，传统流程依然比较繁琐：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;在 Obsidian 编写 Markdown&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复制文章内容&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;登录 CMS 后台&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;发布文章&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重复操作不仅浪费时间，也容易打断写作状态。&lt;/p&gt;
&lt;p&gt;所以，我基于开源项目 &lt;a href=&quot;https://github.com/drewlyton/sanity-obsidian-plugin?utm_source=chatgpt.com&quot;&gt;drewlyton/sanity-obsidian-plugin&lt;/a&gt; 进行了二次开发，并针对个人博客使用场景进行了改造。&lt;/p&gt;
&lt;p&gt;项目地址：
&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgBBwVVVlcEAAhSCwVdAAcJVlYFVFcBRAQEFFkPUx5FFFtKGEkKVQxLBFcOHQNUA0pICFE&quot; alt=&quot;Pasted image 20260801105416.png&quot; /&gt;
&lt;a href=&quot;https://github.com/violet27chen/sanity-obsidian-plugin?utm_source=chatgpt.com&quot;&gt;violet27chen/sanity-obsidian-plugin&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Sanity for Obsidian：打造 Obsidian、Sanity、博客三向同步工作流&lt;/h1&gt;
&lt;p&gt;这个插件的目标很简单：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Obsidian 中完成创作，一键同步到 Sanity，再自动展示到自己的博客。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;整体流程：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Obsidian
    ↓
发布同步
    ↓
Sanity CMS
    ↓
博客网站
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最终形成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;          Obsidian
             ↕
          Sanity
             ↕
            Blog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;三个环节互相连接。&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;在 Sanity 管理内容&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在博客网站展示文章&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;我为什么选择 Obsidian + Sanity&lt;/h1&gt;
&lt;h2&gt;Obsidian：专注写作&lt;/h2&gt;
&lt;p&gt;Obsidian 最大的优势就是 Markdown 和本地优先。&lt;/p&gt;
&lt;p&gt;文章始终保存在自己的设备中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: Astro 入门教程
slug: astro-guide
categories:
  - Astro
---

这里是文章正文。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以继续使用熟悉的 Markdown 语法，不需要适应复杂后台编辑器。&lt;/p&gt;
&lt;h2&gt;Sanity：负责内容管理&lt;/h2&gt;
&lt;p&gt;Sanity 是一个现代化 Headless CMS。&lt;/p&gt;
&lt;p&gt;它负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;API 提供&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多端内容分发&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;博客前端只需要读取 Sanity 数据即可展示。&lt;/p&gt;
&lt;h2&gt;Blog：负责最终展示&lt;/h2&gt;
&lt;p&gt;无论你的博客使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Astro&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Next.js&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nuxt&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他前端框架&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;都可以通过 Sanity 获取文章内容。&lt;/p&gt;
&lt;p&gt;这样：&lt;/p&gt;
&lt;p&gt;写作、管理、展示三个部分完全分离。&lt;/p&gt;
&lt;h1&gt;插件主要功能&lt;/h1&gt;
&lt;h2&gt;1. Obsidian 发布到 Sanity&lt;/h2&gt;
&lt;p&gt;在 Obsidian 写完文章后：&lt;/p&gt;
&lt;p&gt;点击：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Publish to Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;插件会自动：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;创建 Sanity 文档&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保存文档 ID&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不需要再次复制粘贴。&lt;/p&gt;
&lt;h2&gt;2. Sanity 同步回 Obsidian&lt;/h2&gt;
&lt;p&gt;除了发布，也支持拉取内容。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;p&gt;你在 Sanity 后台修改文章：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Sanity
 ↓
Obsidian
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以重新同步回来继续编辑。&lt;/p&gt;
&lt;h2&gt;3. 支持博客字段映射&lt;/h2&gt;
&lt;p&gt;不同博客结构不同。&lt;/p&gt;
&lt;p&gt;插件不会固定字段。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;p&gt;Sanity：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;title
slug
heroImage
categories
publishedAt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以映射为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;title       → title
slug.current → slug
heroImage   → cover
categories  → categories
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;产品站&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. 自动处理图片&lt;/h2&gt;
&lt;p&gt;写文章时：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![[cover.png]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![图片](image.png)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;发布时插件会自动处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;上传图片&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;转换为 Sanity Asset&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 CDN 地址&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不需要进入 CMS 后台重新上传。&lt;/p&gt;
&lt;h1&gt;安装与配置教程&lt;/h1&gt;
&lt;h2&gt;准备工作&lt;/h2&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;Sanity 项目&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个支持 Sanity 数据读取的博客&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有 Sanity 项目：&lt;/p&gt;
&lt;p&gt;前往：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.sanity.io/&quot;&gt;https://www.sanity.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;注册并创建项目。&lt;/p&gt;
&lt;h1&gt;第一步：安装 Obsidian 插件&lt;/h1&gt;
&lt;p&gt;目前插件还没有上架 Obsidian Community Plugins，需要手动安装。&lt;/p&gt;
&lt;h2&gt;方法一：BRAT 安装（推荐）&lt;/h2&gt;
&lt;h3&gt;1. 安装 BRAT&lt;/h3&gt;
&lt;p&gt;打开 Obsidian：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;设置
 → 第三方插件
 → 浏览社区插件
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkOVQNVAABTAABVAFUMX1cAAQIDVwYBFwUEFFoJVhRIRFscHUkNBwNLC1EHHQZSA0pICFE&quot; alt=&quot;Pasted image 20260801105839.png&quot; /&gt;
搜索：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;BRAT
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksKBwJXUFVSUlNXBFdbBwVUUA1RUV0PTgADGwxbVR5ASw1BSBRaAlBLA1AHVUlaA1QWFlhX&quot; alt=&quot;Pasted image 20260801105921.png&quot; /&gt;
安装并启用。&lt;/p&gt;
&lt;h3&gt;2. 添加插件仓库&lt;/h3&gt;
&lt;p&gt;进入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;设置
 → BRAT
 → Add Beta Plugin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgLAlEDAVlTUQMBBgUOUlIHAAQACgZbFwoAGQteVR5ESlhOTRUOAQFLC1EHHQZSA0pICFE&quot; alt=&quot;Pasted image 20260801110121.png&quot; /&gt;
填写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;violet27chen/sanity-obsidian-plugin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtdAVIAAlUOBFdQVVQOBVVSV1cDC1MBQwoBSFkJVh9FF1caTxVfUwBLC1EHHQZSA0pICFE&quot; alt=&quot;Pasted image 20260801110300.png&quot; /&gt;
等待安装完成。&lt;/p&gt;
&lt;h3&gt;3. 启用插件&lt;/h3&gt;
&lt;p&gt;进入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;设置
 → 第三方插件
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtdWwECVAcEAQhRUVJaBw4GUg1RUFEPFwVRG1kIXkgSEV5PHRwJVVdLC1EHHQZSA0pICFE&quot; alt=&quot;Pasted image 20260801110539.png&quot; /&gt;
开启即可。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;方法二：手动安装&lt;/h2&gt;
&lt;p&gt;进入你的 Obsidian Vault：&lt;/p&gt;
&lt;p&gt;找到：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.obsidian/plugins
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/violet27chen/sanity-obsidian-plugin.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.obsidian
 └── plugins
      └── sanity-obsidian-plugin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重新打开 Obsidian：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;设置
 → 第三方插件
 → 启用 Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;第二步：创建 Sanity API Token&lt;/h1&gt;
&lt;p&gt;进入 Sanity：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Project
 → API
 → Tokens
 → Add API Token
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;权限选择：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Editor
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不要选择：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Viewer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;因为发布文章需要写入权限。&lt;/p&gt;
&lt;p&gt;复制生成的 Token。&lt;/p&gt;
&lt;h1&gt;第三步：配置插件&lt;/h1&gt;
&lt;p&gt;进入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Obsidian
 → 设置
 → Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhldUlEEBlRRUFJTBAANXg8GUFEHUwcJRQsCTFEMVUxEEAtNQBkJVwBLC1EHHQZSA0pICFE&quot; alt=&quot;Pasted image 20260801110445.png&quot; /&gt;
填写：&lt;/p&gt;
&lt;h2&gt;API Token&lt;/h2&gt;
&lt;p&gt;输入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;xxxxxxxxxxxxxxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Project ID&lt;/h2&gt;
&lt;p&gt;进入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Sanity Dashboard
 → Project Settings
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;复制：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Project ID
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;abc12345
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Dataset&lt;/h2&gt;
&lt;p&gt;一般：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;production
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Type Name&lt;/h2&gt;
&lt;p&gt;填写你的文章类型。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;post
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果 Schema：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
 name:&quot;post&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里填写：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;post
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;第四步：配置文章字段&lt;/h1&gt;
&lt;p&gt;假设博客文章结构：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;post:

title
slug
body
cover
categories
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;插件设置：&lt;/p&gt;
&lt;p&gt;标题：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;title
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正文：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;body
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;文件名：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;slug.current
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;额外字段：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cover:cover

categories:categories
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Obsidian：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: 我的文章
slug: my-post
cover: image.png
categories:
 - 技术
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;同步到 Sanity：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
&quot;title&quot;:&quot;我的文章&quot;,
&quot;slug&quot;:{
 &quot;current&quot;:&quot;my-post&quot;
},
&quot;categories&quot;:[
 &quot;技术&quot;
]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;第五步：发布第一篇文章&lt;/h1&gt;
&lt;p&gt;创建 Markdown 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;我的第一篇博客.md
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: 我的第一篇博客
slug: first-blog
categories:
  - 教程
---

这是文章正文。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;插入图片：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![[cover.png]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开命令面板：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Ctrl + P
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;搜索：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;选择：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Publish to Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;完成后：&lt;/p&gt;
&lt;p&gt;插件会自动：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&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;保存 sanity_id&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完成同步&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;第六步：博客展示文章&lt;/h1&gt;
&lt;p&gt;完成同步后：&lt;/p&gt;
&lt;p&gt;博客读取 Sanity 数据。&lt;/p&gt;
&lt;p&gt;流程：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Obsidian
 ↓
Sanity
 ↓
Astro Blog
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以后：&lt;/p&gt;
&lt;p&gt;打开 Obsidian&lt;/p&gt;
&lt;p&gt;↓&lt;/p&gt;
&lt;p&gt;写文章&lt;/p&gt;
&lt;p&gt;↓&lt;/p&gt;
&lt;p&gt;点击发布&lt;/p&gt;
&lt;p&gt;↓&lt;/p&gt;
&lt;p&gt;博客更新&lt;/p&gt;
&lt;h1&gt;常见问题&lt;/h1&gt;
&lt;h2&gt;发布失败：403 insufficientPermissions&lt;/h2&gt;
&lt;p&gt;原因：&lt;/p&gt;
&lt;p&gt;Token 权限不足。&lt;/p&gt;
&lt;p&gt;解决：&lt;/p&gt;
&lt;p&gt;重新创建 Token：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Role:
Editor
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;图片没有上传&lt;/h2&gt;
&lt;p&gt;检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;图片路径是否正确&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;是否使用 Markdown 图片格式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Token 是否有上传权限&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;找不到插件&lt;/h2&gt;
&lt;p&gt;确认：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;设置
 → 第三方插件
 → Sanity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;已经开启。&lt;/p&gt;
&lt;h1&gt;为什么做这个项目？&lt;/h1&gt;
&lt;p&gt;我一直认为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;写作工具应该服务作者，而不是让作者适应后台系统。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Obsidian 擅长创作。&lt;/p&gt;
&lt;p&gt;Sanity 擅长管理。&lt;/p&gt;
&lt;p&gt;博客擅长展示。&lt;/p&gt;
&lt;p&gt;把三个工具连接起来，可以打造一个属于自己的现代化内容系统。&lt;/p&gt;
&lt;h1&gt;目前的限制与后续计划&lt;/h1&gt;
&lt;p&gt;这套流程依赖 Obsidian、插件、Sanity 和博客前端四个环节，任何一处字段或权限变化都可能导致发布失败。使用前请备份文章和图片；API Token 只授予必要权限，不要把真实 Token 写进示例或提交到仓库。&lt;/p&gt;
&lt;p&gt;未来会继续优化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&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;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;更完善的博客发布流程&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&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;Markdown&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sanity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Astro / Next.js 博客&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;欢迎体验这个项目。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/violet27chen/sanity-obsidian-plugin?utm_source=chatgpt.com&quot;&gt;violet27chen/sanity-obsidian-plugin&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>TinkMail 自定义域名邮箱配置记录：DNS、客户端与免费额度</title><link>https://www.violet27chen.com/posts/tinkmail-free-business-email/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/tinkmail-free-business-email/</guid><description>记录 TinkMail 自定义域名邮箱的注册、DNS 验证、成员创建和客户端收发配置，并说明免费额度、账号安全和服务变化风险</description><pubDate>Sat, 18 Jul 2026 06:46:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;目标读者：手里已经有一个域名（哪怕是免费的二级域名），想拥有 &lt;code&gt;you@yourdomain.com&lt;/code&gt; 这样的专业邮箱，但不想每年掏几百块买腾讯企业邮/Google Workspace。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;用 QQ 邮箱或 163 邮箱给客户、给招聘方、给合作伙伴发邮件，专业度总是差一口气。而市面上主流的企业邮箱服务，要么按人头收费，要么免费版早就停止注册了。&lt;/p&gt;
&lt;p&gt;这篇教程要介绍的 &lt;strong&gt;TinkMail&lt;/strong&gt;，目前正在做一个相当激进的推广活动：&lt;strong&gt;商业版 Business E1 套餐终身免费&lt;/strong&gt;。免费额度不是试用 30 天，而是&quot;只要你保持订阅状态不手动取消订阅就一直免费，不会产生任何账单&quot;。&lt;/p&gt;
&lt;p&gt;先看看这份免费额度到底有多少。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一、TinkMail 免费额度到底给了什么&lt;/h2&gt;
&lt;p&gt;TinkMail 是一家较新的邮件服务商，主打现代化界面和完整的开放协议支持。它的商业版分三档，官方文档给出的对比如下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;能力&lt;/th&gt;
&lt;th&gt;Business E1（限时免费）&lt;/th&gt;
&lt;th&gt;Business E2&lt;/th&gt;
&lt;th&gt;Business E3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;月费&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$10/人 → 现在 $0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$20/人&lt;/td&gt;
&lt;td&gt;$30/人&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;用户数&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5 个&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;50 个&lt;/td&gt;
&lt;td&gt;无限&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;自定义域名&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1 个&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2 个&lt;/td&gt;
&lt;td&gt;10 个&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;每用户存储&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100 GB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;500 GB&lt;/td&gt;
&lt;td&gt;无限&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IMAP / SMTP&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;网页版客户端&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;成员管理&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;权限控制&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;邮件组 / 别名&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;优先邮件支持&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;换算一下：E1 原价 $10/人/月 × 5 人 = &lt;strong&gt;每月 $50、每年 $600 的额度，现在是 0 元&lt;/strong&gt;。而且 500GB 总存储空间（5 × 100GB）在免费邮箱里属于相当夸张的水平。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;官方原文&lt;/strong&gt;：&lt;em&gt;&quot;Sign up for a Business plan now and receive a &apos;forever free subscription&apos; to our Business E1 plan.&quot;&lt;/em&gt;（现在注册商业版，即可获得 Business E1 套餐的&quot;永久免费订阅&quot;。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;两个需要提前知道的前提&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;必须有自己的域名。&lt;/strong&gt; 企业邮箱的本质就是&quot;用你自己的域名收发邮件&quot;，没有域名这件事无从谈起。如果你还没有，可以先去薅一个免费的二级域名（比如 KataBump 的 &lt;code&gt;.kdns.fr&lt;/code&gt;），只要能改 DNS 记录就行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;商业版目前处于 Beta 阶段。&lt;/strong&gt; 官方文档明确挂了 Beta 提示，建议不要把公司核心业务邮件直接迁上去。拿它做个人品牌邮箱、项目联系邮箱、注册专用邮箱，是非常划算的。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;二、准备材料&lt;/h2&gt;
&lt;p&gt;开始前请确认三样东西就位：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;材料&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;一个域名&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;且你能自由添加 DNS 记录（MX、TXT）。域名托管在 Cloudflare、阿里云、腾讯云、DNSPod 都可以&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;一个能收信的邮箱&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;用于注册和接收验证码，本文以 163 邮箱为例&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;一个邮件客户端&lt;/strong&gt;（可选）&lt;/td&gt;
&lt;td&gt;Outlook、Thunderbird、Apple Mail、手机自带邮件 App 均可&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;整个流程大致分五个阶段：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;目标&lt;/th&gt;
&lt;th&gt;耗时&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;注册商业版工作区并验证邮箱&lt;/td&gt;
&lt;td&gt;5 分钟&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;绑定自定义域名，配置 DNS 记录&lt;/td&gt;
&lt;td&gt;10 分钟 + 等待生效&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;创建企业邮箱成员账号&lt;/td&gt;
&lt;td&gt;2 分钟&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;登录 Webmail 并生成客户端密钥&lt;/td&gt;
&lt;td&gt;3 分钟&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;在邮件客户端配置收发&lt;/td&gt;
&lt;td&gt;5 分钟&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;其中&lt;strong&gt;只有第 2 步的 DNS 生效需要等待&lt;/strong&gt;，通常十几分钟，最长可能 48 小时。其余步骤都是几分钟的事。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、第一阶段：注册商业版工作区&lt;/h2&gt;
&lt;h3&gt;1. 打开商业版页面&lt;/h3&gt;
&lt;p&gt;访问官网：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://tinkmail.me/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意：&lt;strong&gt;不要直接注册普通个人邮箱账号&lt;/strong&gt;，那个是 &lt;code&gt;@tinkmail.me&lt;/code&gt; 后缀的免费邮箱，不能绑定自定义域名。我们要的是商业版（Business）。&lt;/p&gt;
&lt;p&gt;在首页找到商业版入口，或者直接访问 &lt;code&gt;https://tinkmail.me/business&lt;/code&gt;，在定价区域选择 &lt;strong&gt;Business E1&lt;/strong&gt; 套餐（标注为 Free 的那个）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4MVABRAgRUVgFTV1UIUQFUBVQCVwNaTwZRTFoLX0wTRwxMSB4PBQJLA1gGV0lbB1wWFlhX&quot; alt=&quot;TinkMail 商业版定价页面，Business E1 套餐标注为免费&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 创建工作区&lt;/h3&gt;
&lt;p&gt;点击 &lt;strong&gt;Create Workspace（创建工作区）&lt;/strong&gt; 进入注册流程。&lt;/p&gt;
&lt;p&gt;&quot;工作区&quot;可以理解为你的企业账户容器——一个工作区绑定一个域名，下面挂 5 个邮箱成员。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk5YVQVUC1AOVFRSAFcNAAYJUVNVBAEPFVMOSVFdAxwRFg5ATkxbBVJLA1gGV0lbB1wWFlhX&quot; alt=&quot;点击 Create Workspace 按钮创建工作区&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 填写注册信息&lt;/h3&gt;
&lt;p&gt;在 &lt;strong&gt;Create Your Business Workspace&lt;/strong&gt; 表单中填写工作区信息。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgMVFUDVFJVUQJbBlUPBQACUFNSUVEJQ1BTTg1YBktHRQtASB9cW1FLA1gGV0lbB1wWFlhX&quot; alt=&quot;填写工作区注册信息表单&quot; /&gt;&lt;/p&gt;
&lt;p&gt;填写时注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;管理员邮箱&lt;/strong&gt;：填一个你能正常收信的邮箱（163、QQ、Gmail 都行），后面要收验证码，也是你登录管理后台的账号；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作区名称&lt;/strong&gt;：随便起，比如公司名或个人品牌名，后期在后台可改；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码&lt;/strong&gt;：这是&lt;strong&gt;管理后台的登录密码&lt;/strong&gt;，请单独记录。注意它和后面要用的&quot;客户端密钥&quot;是两个完全不同的东西，这一点后面会重点强调。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 提交创建&lt;/h3&gt;
&lt;p&gt;信息填写完成后，点击页面下方的 &lt;strong&gt;Create Workspace&lt;/strong&gt; 按钮提交。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlbVAdXUQNSXQVbAwJZVQJRUgJZBQQMR1ZWS1sLBBxGQQ1AH0kJUVJLA1gGV0lbB1wWFlhX&quot; alt=&quot;点击下方 Create Workspace 按钮提交注册&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5. 登录工作区&lt;/h3&gt;
&lt;p&gt;创建成功后会自动跳转到登录页（sign-in）。用刚才填写的管理员邮箱和密码登录，点击 &lt;strong&gt;Goto Workspace Dashboard&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwMVwMHUwIDU1NXBVBdBVdUBlRUBwYKEAcBGlwIUxVDRQ5OTBhcUlBLA1gGV0lbB1wWFlhX&quot; alt=&quot;使用刚注册的账号密码登录工作区&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6. 验证管理员邮箱&lt;/h3&gt;
&lt;p&gt;首次登录会要求验证邮箱所有权，系统会向你的注册邮箱发送一封验证邮件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUBAFUFVFRSB1NRAwAMAwIGBgIEUQdcQQJTFQxdUB5AS1lIGk8IWlVLA1gGV0lbB1wWFlhX&quot; alt=&quot;系统提示需要验证管理员邮箱&quot; /&gt;&lt;/p&gt;
&lt;p&gt;去你的邮箱平台查收验证码，本文以 163 邮箱为例。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUMVw0CUAQOUQdbCgdcAlcBAQFZCwBYFwEOTggPVxtBEQtMHRRbBwRLA1gGV0lbB1wWFlhX&quot; alt=&quot;在 163 邮箱中收到 TinkMail 发来的验证码&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;收不到邮件？&lt;/strong&gt; 先翻一下垃圾邮件文件夹。国内邮箱对境外新域名的发信比较敏感，验证邮件被误判进垃圾箱是常见情况。如果 5 分钟还没到，回到页面点一次重新发送。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;7. 验证完成，功能解锁&lt;/h3&gt;
&lt;p&gt;验证通过后，Dashboard 上原本锁定的功能全部解锁，可以看到域名管理、成员管理等入口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVcB1BXAwRWBFBVC10BB1BVUFMHBwYARVNWTg8LX0xJQwxAQE9cUQJLA1gGV0lbB1wWFlhX&quot; alt=&quot;邮箱验证完成后，工作区功能全部解锁&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;四、第二阶段：绑定并验证自定义域名&lt;/h2&gt;
&lt;p&gt;这是整个教程&lt;strong&gt;最关键也最容易出错&lt;/strong&gt;的一步，请慢一点、仔细核对。&lt;/p&gt;
&lt;h3&gt;1. 进入域名设置&lt;/h3&gt;
&lt;p&gt;点击 Dashboard 下方的 &lt;strong&gt;Go to Domain Settings（前往域名设置）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk5cUwJSAQADVQMAUVMOAwBSVFBXUFELRwcOTlgOVBgWEA4ZSx1cUlJLA1gGV0lbB1wWFlhX&quot; alt=&quot;点击前往域名设置按钮&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 添加域名&lt;/h3&gt;
&lt;p&gt;输入你拥有的域名（例如 &lt;code&gt;yourdomain.com&lt;/code&gt;），点击 &lt;strong&gt;Add Domain&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;提交后页面会展开一组需要你去 DNS 服务商那边添加的记录，分为三类。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk4AVgcCAVZVXAMGCgFZVgFUWgdYUAZdE1BWS1wMU0kSQVZKGhRYVFJLA1gGV0lbB1wWFlhX&quot; alt=&quot;添加域名后展示需要配置的 DNS 记录&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 三类 DNS 记录分别是什么&lt;/h3&gt;
&lt;p&gt;很多人卡在这一步，是因为不理解这些记录各自的作用。花两分钟搞懂，排错会快很多：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;记录类别&lt;/th&gt;
&lt;th&gt;类型&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;不配的后果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Required DNS Records&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MX / TXT&lt;/td&gt;
&lt;td&gt;告诉全世界&quot;发给这个域名的邮件，投递到 TinkMail 的服务器&quot;，以及验证域名归属&lt;/td&gt;
&lt;td&gt;收不到任何邮件&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DKIM Records&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;TXT&lt;/td&gt;
&lt;td&gt;给你发出的每封邮件加数字签名，证明&quot;确实是这个域名发的，且中途没被篡改&quot;&lt;/td&gt;
&lt;td&gt;发出的邮件极易进垃圾箱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DMARC Record&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;TXT&lt;/td&gt;
&lt;td&gt;告诉收件方&quot;如果签名校验失败该怎么处理&quot;（放行/隔离/拒收）&lt;/td&gt;
&lt;td&gt;域名容易被伪造，信誉度低&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;简单说：&lt;strong&gt;MX 管收信，DKIM 管发信不进垃圾箱，DMARC 管防伪造。&lt;/strong&gt; 三个都配，邮件送达率才有保障。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：DKIM 记录默认是不显示的，需要&lt;strong&gt;先点击 &lt;code&gt;Add DKIM&lt;/code&gt; 按钮&lt;/strong&gt;，系统才会生成对应的密钥和记录值。很多人漏掉这一步，导致域名一直验证不通过。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;4. 在 DNS 服务商添加记录&lt;/h3&gt;
&lt;p&gt;以 Cloudflare 为例（阿里云、腾讯云 DNSPod 操作逻辑一致）：&lt;/p&gt;
&lt;p&gt;进入域名的 &lt;strong&gt;DNS → Records → Add record&lt;/strong&gt;，按控制台给出的值逐条添加。这里有几个高频踩坑点：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;坑 1：主机名/Name 字段会自动补域名后缀&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果 TinkMail 给的记录名是 &lt;code&gt;yourdomain.com&lt;/code&gt;（根域名），在 Cloudflare 里填 &lt;code&gt;@&lt;/code&gt;；如果给的是 &lt;code&gt;mail._domainkey.yourdomain.com&lt;/code&gt;，只需要填 &lt;code&gt;mail._domainkey&lt;/code&gt;，&lt;strong&gt;不要把域名再写一遍&lt;/strong&gt;，否则会变成 &lt;code&gt;mail._domainkey.yourdomain.com.yourdomain.com&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;坑 2：MX 记录不能开代理（小云朵）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cloudflare 的橙色云朵代理只对 A/CNAME 的 HTTP 流量生效。MX 记录本身没有代理选项，但如果你的邮件相关 A 记录（如 &lt;code&gt;mail.yourdomain.com&lt;/code&gt;）开了代理，会导致邮件服务异常。&lt;strong&gt;邮件相关记录一律设为 DNS only（灰色云朵）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;坑 3：TXT 记录的值必须完整复制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DKIM 的值是一长串 Base64 字符，中间不能有换行和多余空格。建议用控制台自带的复制按钮，不要手动框选。粘贴后检查开头是否为 &lt;code&gt;v=DKIM1;&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;坑 4：优先级（Priority）别忘填&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MX 记录有一个 Priority 字段，按控制台给的数字填（通常是 10）。填错不一定报错，但可能导致投递顺序异常。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;坑 5：TTL 保持自动&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不需要手动调，Auto 或 3600 都可以。TTL 只影响记录变更后的生效速度，不影响正确性。&lt;/p&gt;
&lt;h3&gt;5. 等待 DNS 生效&lt;/h3&gt;
&lt;p&gt;添加完所有记录后，回到 TinkMail 域名设置页面，点击刷新或验证按钮。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DNS 生效需要时间&lt;/strong&gt;：通常十几分钟内就能验证通过，全球完整传播最长需要 48 小时。这个等待是 DNS 协议本身的特性，不是平台的问题，耐心等就好。&lt;/p&gt;
&lt;p&gt;如果你想自己确认记录有没有生效，可以在本地跑一条命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 检查 MX 记录
nslookup -type=MX yourdomain.com 8.8.8.8

# 检查 DKIM 记录（把 mail._domainkey 换成控制台给你的实际名称）
nslookup -type=TXT mail._domainkey.yourdomain.com 8.8.8.8

# 检查 DMARC 记录
nslookup -type=TXT _dmarc.yourdomain.com 8.8.8.8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;指定 &lt;code&gt;8.8.8.8&lt;/code&gt; 是为了绕开本地运营商 DNS 缓存，看到的结果更接近全球真实状态。&lt;/p&gt;
&lt;h3&gt;6. 验证成功&lt;/h3&gt;
&lt;p&gt;当所有记录状态都变成绿色的 &lt;strong&gt;Active&lt;/strong&gt;，说明域名配置完成。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUBUgJVUFAABlNVVlVdXgcDAVFRAFBcFFAEH1gLUBoUFFkcHUsKBwxLA1gGV0lbB1wWFlhX&quot; alt=&quot;所有 DNS 记录验证通过，状态显示绿色 Active&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、第三阶段：创建企业邮箱账号&lt;/h2&gt;
&lt;p&gt;域名验证通过后，就可以开始创建邮箱账号了。在 TinkMail 里，每个邮箱账号对应一个&quot;团队成员（Member）&quot;。&lt;/p&gt;
&lt;h3&gt;1. 进入团队成员界面&lt;/h3&gt;
&lt;p&gt;在后台找到成员管理入口，点击添加成员。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhhcVgIDUVRVVVcDAVddXlIEAVBSBFcKTgcGTFpfBUgSQVpLSkgPAgJLA1gGV0lbB1wWFlhX&quot; alt=&quot;进入团队成员管理界面，点击添加成员&quot; /&gt;&lt;/p&gt;
&lt;p&gt;填写你想要的邮箱前缀，比如 &lt;code&gt;hello&lt;/code&gt;、&lt;code&gt;contact&lt;/code&gt;、&lt;code&gt;me&lt;/code&gt;，最终会生成 &lt;code&gt;hello@yourdomain.com&lt;/code&gt; 这样的地址。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;5 个名额怎么规划？&lt;/strong&gt; 免费版只有 5 个，建议这样分配：
&lt;code&gt;me@&lt;/code&gt; 或 &lt;code&gt;hi@&lt;/code&gt;（日常个人使用）、&lt;code&gt;contact@&lt;/code&gt; 或 &lt;code&gt;hello@&lt;/code&gt;（对外联系）、&lt;code&gt;admin@&lt;/code&gt;（各类平台注册）、&lt;code&gt;no-reply@&lt;/code&gt;（自动通知发信）、剩 1 个备用。&lt;strong&gt;先想好再建&lt;/strong&gt;，删了重建会浪费名额。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2. 保存成员密码&lt;/h3&gt;
&lt;p&gt;成员创建成功后，系统会&lt;strong&gt;生成一个密码并只显示这一次&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkIUVcAUFEPXANVAgBZVAIIBgZXVwdYRFMPGQ1ZUUxHRVgZTh4JUAZLA1gGV0lbB1wWFlhX&quot; alt=&quot;创建成员成功，系统显示该账号的密码&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ 务必立刻记录这个密码。&lt;/strong&gt; 它是该邮箱账号登录 Webmail 的凭据，页面关掉就看不到了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;六、第四阶段：登录 Webmail 并生成客户端密钥&lt;/h2&gt;
&lt;h3&gt;1. 打开 Webmail&lt;/h3&gt;
&lt;p&gt;点击页面右上角的 &lt;strong&gt;Webmail&lt;/strong&gt; 入口。&lt;/p&gt;
&lt;h3&gt;2. 用成员账号登录&lt;/h3&gt;
&lt;p&gt;注意：这里要用&lt;strong&gt;刚创建的成员邮箱和密码&lt;/strong&gt;登录，不是管理员账号。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlbAVBUVgAGBFcAUlIOAwcEVFQAAwZbQwcPTl4MUUtFE1keQRQLWwFLA1gGV0lbB1wWFlhX&quot; alt=&quot;使用新创建的企业邮箱账号登录 Webmail&quot; /&gt;&lt;/p&gt;
&lt;p&gt;登录成功后就能看到 Webmail 的界面了，收件箱、发件箱、草稿一应俱全。到这一步，你的企业邮箱其实已经能用了——只是只能在网页里用。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8IUwNUU1cDUVcEUVwJAgBUWwUEBANcRQcCH1wPAxpGEwpLHx4NVQFLA1gGV0lbB1wWFlhX&quot; alt=&quot;TinkMail Webmail 网页客户端界面&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 进入账号设置&lt;/h3&gt;
&lt;p&gt;想在 Outlook、手机邮件 App 里收发，还需要一个&lt;strong&gt;客户端密钥（Client Token）&lt;/strong&gt;。点击进入账号设置面板。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwPWgUCUFcABwJbCwBZBVIBAldRBldYRAZTHFpaAx9CRwkeSRULBgJLA1gGV0lbB1wWFlhX&quot; alt=&quot;进入 Webmail 的账号设置面板&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4. 创建客户端密钥&lt;/h3&gt;
&lt;p&gt;找到 &lt;strong&gt;Client Token&lt;/strong&gt; 相关选项，创建一个新的密钥。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVksNUFEFUVkOBwBRBlxcBANSVwRVAFQMQlYAFQ8PBk8RQFgbQB4OVA1LA1gGV0lbB1wWFlhX&quot; alt=&quot;在设置中创建客户端密钥 Client Token&quot; /&gt;&lt;/p&gt;
&lt;p&gt;生成后会得到一串密钥，&lt;strong&gt;同样只显示一次&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsNW1EABwUAUFdRUgJZVAADVwdTUVUNTgcPGl1bARpGRlgcHUsAV1BLA1gGV0lbB1wWFlhX&quot; alt=&quot;生成的客户端密钥，需要立即保存&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5. 搞清楚&quot;两个凭据&quot;的区别&lt;/h3&gt;
&lt;p&gt;到这里你手上已经有&lt;strong&gt;两串不同的东西&lt;/strong&gt;，这是整个教程最容易混淆的地方，官方文档也专门用警告框强调过：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;凭据&lt;/th&gt;
&lt;th&gt;从哪来&lt;/th&gt;
&lt;th&gt;用在哪&lt;/th&gt;
&lt;th&gt;用错的后果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;账号密码&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;创建成员时系统给的&lt;/td&gt;
&lt;td&gt;登录 &lt;strong&gt;Webmail 网页版&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;在客户端里填它 → 认证失败&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;客户端密钥（Client Token）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Webmail 设置里手动生成&lt;/td&gt;
&lt;td&gt;配置 &lt;strong&gt;IMAP / SMTP 客户端&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;拿它登网页 → 登不进去&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;官方原文&lt;/strong&gt;：&lt;em&gt;&quot;You must use a Client Token as your password when configuring email clients. Your account password will NOT work for IMAP or SMTP connections.&quot;&lt;/em&gt;（配置邮件客户端时必须使用客户端密钥作为密码，账号密码在 IMAP/SMTP 连接中无效。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;建议现在就把这两串凭据存进密码管理器&lt;/strong&gt;（Bitwarden、1Password、KeePass 均可），或者写进一个加密文件传到网盘。两者都只显示一次，丢了就得重新生成。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、第五阶段：在邮件客户端配置收发&lt;/h2&gt;
&lt;p&gt;下面以 Outlook 为例，Thunderbird、Apple Mail、手机自带邮件 App 的配置逻辑完全一样。&lt;/p&gt;
&lt;h3&gt;1. 添加账户&lt;/h3&gt;
&lt;p&gt;打开 Outlook，填入刚才创建好的企业邮箱地址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh0AWg1UAgRRBFNWUABeUwVWUQNZBQcAFAoCFA9YV0tEFAlAGBsAUQdLC1gOHQdVBkpICFE&quot; alt=&quot;在 Outlook 中输入企业邮箱地址&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 手动选择 IMAP&lt;/h3&gt;
&lt;p&gt;Outlook 的自动探测大概率认不出 TinkMail，需要手动指定。在提供商列表中选择 &lt;strong&gt;IMAP&lt;/strong&gt; 或&quot;自定义/其他&quot;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRYAVBXAlYBBgQDV1ZZAg8IVg1XBAALE1FTHF8PAh9IFlYaHR8NU1VLC1gOHQdVBkpICFE&quot; alt=&quot;在提供商列表中选择 IMAP&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 填写服务器参数&lt;/h3&gt;
&lt;p&gt;按官方文档，完整参数如下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项目&lt;/th&gt;
&lt;th&gt;收件（IMAP）&lt;/th&gt;
&lt;th&gt;发件（SMTP）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;服务器地址&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;imap.tinkmail.me&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;smtp.tinkmail.me&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;端口&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;993&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;465&lt;/code&gt; 或 &lt;code&gt;587&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;加密方式&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SSL/TLS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;SSL/TLS&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;用户名&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;完整邮箱地址&lt;/td&gt;
&lt;td&gt;完整邮箱地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;密码&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;客户端密钥&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;客户端密钥&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxcVgdWAVIDVAVaVVYNXwQJBwxUB1EMQQoFHVxZUB5HQFcdSUwIAQVLC1gOHQdVBkpICFE&quot; alt=&quot;在 Outlook 中填写 IMAP 和 SMTP 服务器参数&quot; /&gt;&lt;/p&gt;
&lt;p&gt;有三个细节必须强调：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;① 密码栏填的是客户端密钥，不是账号密码。&lt;/strong&gt; 这是&quot;认证失败&quot;最常见的原因，没有之一。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;② SMTP 端口 465 和 587 都可以，但都必须选 SSL/TLS。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一点和大多数邮件服务不同，值得单独说明：业界惯例里 587 端口通常配 STARTTLS，465 才配 SSL/TLS。但 TinkMail 官方文档明确写了——&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;You must check the SSL/TLS option for both IMAP &amp;amp; SMTP. We do not support non-SSL/TLS or STARTSSL/STARTTLS connections.&quot;&lt;/em&gt;（IMAP 和 SMTP 都必须勾选 SSL/TLS。我们不支持非加密连接，也不支持 STARTTLS。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;所以如果你的客户端在 587 端口下默认选了 STARTTLS，&lt;strong&gt;要手动改成 SSL/TLS&lt;/strong&gt;，否则连不上。如果客户端不让改，直接换 465 端口。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;③ 用户名要写完整邮箱地址&lt;/strong&gt;，比如 &lt;code&gt;hello@yourdomain.com&lt;/code&gt;，不能只写 &lt;code&gt;hello&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;4. 验证收发&lt;/h3&gt;
&lt;p&gt;配置完成后，客户端开始同步。能成功拉取到邮件列表，就说明 IMAP 通了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhbAVVTBFFWVgZQUABdUwAGAAZXUwFYFwcCTA1fVh9CQ1hJSBlYWg1LA1UFU0lVB1IWFlhX&quot; alt=&quot;Outlook 成功获取邮件，配置生效&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最后&lt;strong&gt;务必做一次双向测试&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用这个企业邮箱给你的 QQ/163 邮箱发一封（测 SMTP 发信）；&lt;/li&gt;
&lt;li&gt;用 QQ/163 邮箱回一封过来（测 MX 收信）；&lt;/li&gt;
&lt;li&gt;检查发出去的那封&lt;strong&gt;有没有进对方的垃圾箱&lt;/strong&gt;（测 DKIM/SPF 配置质量）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;三条都通过，才算真正配置完成。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;八、常见问题排查&lt;/h2&gt;
&lt;h3&gt;域名状态一直不变 Active&lt;/h3&gt;
&lt;p&gt;按这个顺序排查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DKIM 是否点了 &lt;code&gt;Add DKIM&lt;/code&gt;？&lt;/strong&gt; 不点不会生成记录，自然验证不过。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主机名是否重复了域名后缀？&lt;/strong&gt; 用上面的 &lt;code&gt;nslookup&lt;/code&gt; 命令查一下实际生效的记录名。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TXT 值有没有被截断？&lt;/strong&gt; 部分 DNS 面板对超长 TXT 有长度限制，需要拆分成多段字符串。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是不是刚加完就点验证？&lt;/strong&gt; 至少等 15 分钟再刷新。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;客户端提示&quot;认证失败 / Authentication Failed&quot;&lt;/h3&gt;
&lt;p&gt;99% 是密码填成了账号密码。回 Webmail 设置里生成客户端密钥，重新填。官方排错文档把这一条列在第一位。&lt;/p&gt;
&lt;h3&gt;客户端提示&quot;无法连接服务器&quot;&lt;/h3&gt;
&lt;p&gt;检查加密方式是不是选成了 STARTTLS 或&quot;无加密&quot;。TinkMail 只接受 SSL/TLS。另外部分公司网络/校园网会封禁 465、587、993 端口，换个网络试试。&lt;/p&gt;
&lt;h3&gt;发出去的邮件进了垃圾箱&lt;/h3&gt;
&lt;p&gt;说明 DKIM 或 DMARC 没配好，或者域名太新还没积累信誉。可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确认三类记录都是 Active；&lt;/li&gt;
&lt;li&gt;用 &lt;a href=&quot;https://www.mail-tester.com/&quot;&gt;mail-tester.com&lt;/a&gt; 发一封测试邮件，它会给出 10 分制评分和具体扣分原因；&lt;/li&gt;
&lt;li&gt;新域名前两周少量发信，逐步养信誉，不要一上来就群发。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5 个账号用完了还能加吗&lt;/h3&gt;
&lt;p&gt;不能，E1 上限就是 5 个用户、1 个域名。要更多只能升级付费套餐。所以前面才建议&lt;strong&gt;先规划再创建&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;这个免费真的是&quot;终身&quot;吗&lt;/h3&gt;
&lt;p&gt;官方表述是&quot;只要保持订阅活跃状态就永久免费&quot;。但要清醒看待：这是一家新服务商的推广策略，且商业版仍在 Beta。&lt;strong&gt;不建议把不可替代的重要邮件只存在这里&lt;/strong&gt;——重要邮件用客户端（IMAP）同步一份到本地，是成本最低的保险。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;九、安全建议&lt;/h2&gt;
&lt;p&gt;免费归免费，安全习惯不能省：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;建议&lt;/th&gt;
&lt;th&gt;原因&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;两串凭据存进密码管理器&lt;/td&gt;
&lt;td&gt;都只显示一次，丢失只能重置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;不同用途用不同成员账号&lt;/td&gt;
&lt;td&gt;一个账号出问题不牵连其他&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;定期轮换客户端密钥&lt;/td&gt;
&lt;td&gt;密钥泄露等于邮箱被完全接管&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;用 IMAP 客户端同步到本地&lt;/td&gt;
&lt;td&gt;服务商跑路/故障时你还有一份完整备份&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;别把它当唯一的账号找回邮箱&lt;/td&gt;
&lt;td&gt;Beta 服务不适合承载账号安全底座&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;十、免费方案的边界&lt;/h2&gt;
&lt;p&gt;“免费”和“终身”都应以注册时的官方条款为准，不要把它当成重要业务邮箱的唯一保障。正式使用前先确认导出能力、账号回收规则、垃圾邮件处理和客服渠道；管理员账号启用双重验证，成员密码和客户端密钥不要复用。&lt;/p&gt;
&lt;p&gt;回顾一下完整链路：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;注册 Business E1 工作区
        ↓
验证管理员邮箱
        ↓
绑定域名 → 配置 MX / DKIM / DMARC → 等待 Active
        ↓
创建成员账号（拿到密码）
        ↓
登录 Webmail → 生成客户端密钥（拿到 Token）
        ↓
客户端配置 IMAP 993 + SMTP 465/587（均 SSL/TLS，密码填 Token）
        ↓
双向收发测试通过
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;整套流程下来，你就有了 &lt;strong&gt;1 个自定义域名 + 5 个企业邮箱 + 500GB 总存储&lt;/strong&gt;，年成本 0 元。对个人开发者、独立创作者、小工作室来说，这是目前性价比相当高的一个选择。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;最后提醒&lt;/strong&gt;：这是&lt;strong&gt;限时推广活动&lt;/strong&gt;，官方明确写的是&quot;for a limited time&quot;。每个账号只有 1 次免费添加域名的机会、1 个域名下 5 个免费邮箱名额。想要的话建议尽早注册占位——活动一旦结束，同样的配置就是每年 $600。&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>如何将自己做的网站部署上线</title><link>https://www.violet27chen.com/posts/katabump-cloudflare-drop/</link><guid isPermaLink="true">https://www.violet27chen.com/posts/katabump-cloudflare-drop/</guid><description>记录把静态网页发布到公网的过程，包含 KataBump 域名、Cloudflare DNS 和 Drop 上传部署，并说明免费域名与静态托管的限制</description><pubDate>Sat, 04 Jul 2026 08:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;目标读者：已经用 AI（v0、ChatGPT、Claude、Windsurf 等）生成了一组网页文件，但不知道怎么把 &lt;code&gt;index.html&lt;/code&gt; 真正发布到互联网上，让别人可以通过域名访问。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;📺 &lt;strong&gt;视频教程同步上线哔哩哔哩&lt;/strong&gt;，配合图文食用更佳 👇&lt;/p&gt;
&lt;p&gt;&amp;lt;div style=&quot;max-width:760px;margin:12px 0;&quot;&amp;gt;&amp;lt;div style=&quot;position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:8px;&quot;&amp;gt;&amp;lt;iframe src=&quot;https://player.bilibili.com/player.html?bvid=BV1VXNi63EJJ&amp;amp;autoplay=0&quot; scrolling=&quot;no&quot; border=&quot;0&quot; frameborder=&quot;no&quot; framespacing=&quot;0&quot; allowfullscreen=&quot;true&quot; style=&quot;position:absolute;top:0;left:0;width:100%;height:100%;&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;视频链接：&lt;a href=&quot;https://b23.tv/kUBOrLl&quot;&gt;https://b23.tv/kUBOrLl&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一、部署前先确认网站类型&lt;/h2&gt;
&lt;p&gt;用 AI 写网站只是第一步。你最终得到的是一堆文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;my-website/
├── index.html
├── style.css
├── script.js
└── images/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这些文件现在还只躺在你的电脑里。别人想访问，需要三样东西同时就位：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;网站文件&lt;/strong&gt;：已经由 AI 生成好了；&lt;/li&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;ul&gt;
&lt;li&gt;&lt;strong&gt;KataBump&lt;/strong&gt;：免费获取一个二级域名（如 &lt;code&gt;yourname.kdns.fr&lt;/code&gt;）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Drop&lt;/strong&gt;：把本地文件夹拖拽/选择上传，直接生成一个可访问的网站；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare&lt;/strong&gt;：负责域名解析、HTTPS 证书和全球 CDN 加速。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;整个过程不需要信用卡、不需要购买服务器、不需要懂 Linux。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二、准备材料&lt;/h2&gt;
&lt;p&gt;开始前请确认：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一个可正常接收邮件的邮箱（用于注册 KataBump 和 Cloudflare）。&lt;/li&gt;
&lt;li&gt;一个由 AI 生成的&lt;strong&gt;静态网站文件夹&lt;/strong&gt;，根目录下必须有 &lt;code&gt;index.html&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;网络可以访问 &lt;code&gt;dashboard.katabump.com&lt;/code&gt; 和 &lt;code&gt;cloudflare.com&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;什么是&quot;静态网站&quot;？&lt;/h3&gt;
&lt;p&gt;静态网站指的是只包含 HTML、CSS、JavaScript、图片等前端文件，没有后端数据库、没有 Node.js/Python 服务。大多数 AI 生成的落地页、个人主页、作品集、博客模板都属于静态网站。&lt;/p&gt;
&lt;p&gt;如果你的 AI 工具输出的是一个 &lt;code&gt;.zip&lt;/code&gt; 压缩包，请先解压到电脑里，确保文件夹根目录有 &lt;code&gt;index.html&lt;/code&gt;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、整体流程一览&lt;/h2&gt;
&lt;p&gt;整个过程可以分成四大阶段：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;平台&lt;/th&gt;
&lt;th&gt;目标&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;KataBump&lt;/td&gt;
&lt;td&gt;免费获取一个域名&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;把域名托管到 Cloudflare，获取名称服务器地址&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;KataBump&lt;/td&gt;
&lt;td&gt;把 Cloudflare 名称服务器填回 KataBump&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Cloudflare Drop&lt;/td&gt;
&lt;td&gt;上传网站文件夹，部署并绑定自己的域名&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;下面按顺序详细说明每一步。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;四、第一阶段：在 KataBump 获取免费域名&lt;/h2&gt;
&lt;h3&gt;1. 打开 KataBump 并登录&lt;/h3&gt;
&lt;p&gt;访问官方控制台：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://dashboard.katabump.com/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你还没有账号，点击页面上的 &lt;strong&gt;&quot;Create an account&quot;&lt;/strong&gt; 用邮箱注册；如果已有账号，直接输入邮箱和密码登录。登录页面也支持 Discord 快捷登录。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhfWwUCU1UAAwBbB1ddUlAIUwZTAlENQFQEFV1eXhlEQw5KGh0NU1ZLA1gGV0lbB1wWFlhX&quot; alt=&quot;KataBump 登录页面，输入邮箱和密码后点击 Login 登录&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 进入&quot;我的域名&quot;&lt;/h3&gt;
&lt;p&gt;登录成功后，在左侧菜单点击 &lt;strong&gt;&quot;My Domains（我的域名）&quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwLVAMDVgACAwFQBQAMUlACAlZRU11bTwBUGFBeBEkVRl8bHEhfAlJLA1gGV0lbB1wWFlhX&quot; alt=&quot;KataBump 控制台左侧菜单高亮&amp;quot;我的域名&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 获取第一个域名&lt;/h3&gt;
&lt;p&gt;点击页面中的 &lt;strong&gt;&quot;Get my first domain（获取我的第一个域名）&quot;&lt;/strong&gt; 按钮。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh9dUABWBwcBBAQAAlAPUlIDAAIAVlQJF1ZWGAoJBhoTSlZBTB1YVwRLA1gGV0lbB1wWFlhX&quot; alt=&quot;页面中&amp;quot;获取我的第一个域名&amp;quot;按钮&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4. 填写域名信息&lt;/h3&gt;
&lt;p&gt;在域名输入框中填写你想要的的前缀，并选择可用的免费后缀。建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前缀只使用英文、数字或连字符，避免中文和特殊符号；&lt;/li&gt;
&lt;li&gt;选择 &lt;code&gt;.kdns.fr&lt;/code&gt; 等标记为 Free 的后缀；&lt;/li&gt;
&lt;li&gt;把最终得到的完整域名记下来，例如 &lt;code&gt;yourname.kdns.fr&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhkLBlJUVFgHAARVVwBcA1JTUFQFCgcMTgUPTF0LUUwURgtJTRgLVwRLA1gGV0lbB1wWFlhX&quot; alt=&quot;填写域名前缀并选择免费后缀，勾选服务条款后点击 Order the domain&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5. 获取成功&lt;/h3&gt;
&lt;p&gt;如果域名可用，你会看到绿色的成功提示，并进入域名管理页面。页面会显示你的完整域名、到期时间以及名称服务器配置入口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4PBwZXAlJTUgkEC1EMU1VUAAcFUQdaEAYGTlpUVR4VF1dISk9dUwxLA1gGV0lbB1wWFlhX&quot; alt=&quot;KataBump 域名创建成功页面，提示 Domain created&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;重要提示&lt;/strong&gt;：把完整域名（如 &lt;code&gt;yourname.kdns.fr&lt;/code&gt;）复制下来，接下来在 Cloudflare 添加域名时会用到。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;五、第二阶段：把域名托管到 Cloudflare&lt;/h2&gt;
&lt;p&gt;Cloudflare 是全球知名的 CDN 和 DNS 服务商，提供免费的域名解析、SSL 证书和 DDoS 基础防护。我们需要把刚拿到的免费域名&quot;托管&quot;到 Cloudflare，然后才能使用 Cloudflare Drop 部署并绑定自定义域名。&lt;/p&gt;
&lt;h3&gt;1. 登录 Cloudflare&lt;/h3&gt;
&lt;p&gt;访问：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://dash.cloudflare.com/login
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用邮箱注册或登录。如果已有账号，直接登录即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkgAAAEFVwVVVwcDUF0NVAcHAgVQClUNR1ZUSF4LBR5DRlkZTUwPUVFLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare 登录页面，输入邮箱后点击登录&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 添加站点&lt;/h3&gt;
&lt;p&gt;登录后，点击 &lt;strong&gt;&quot;添加站点&quot; / &quot;Add a site&quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;先点击 &lt;strong&gt;&quot;添加域&quot;&lt;/strong&gt; 按钮，进入添加域名的流程；在域名输入框中粘贴刚才从 KataBump 获得的完整域名，例如 &lt;code&gt;yourname.kdns.fr&lt;/code&gt;，然后点击继续。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkwOWgRfAlNSUgdSVV0AUQIFWlcAUFULQAFWTA9YUh5IEQkeTx4OUwdLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare 添加域名流程中的&amp;quot;添加域&amp;quot;按钮&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhRbUlFVA1RRUAMEA1FaAAcGAQJWBFVdQQZWGlxaVxxFRFwaTE4MWwZLA1gGV0lbB1wWFlhX&quot; alt=&quot;在 Cloudflare&amp;quot;连接您的域名&amp;quot;页面填写刚才获取的免费域名&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 选择免费计划&lt;/h3&gt;
&lt;p&gt;Cloudflare 会让你选择计划。直接选择 &lt;strong&gt;&quot;Free（免费）&quot;&lt;/strong&gt; 即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhgOAAReUFMPUgQDAVVaV1UJB1YCAARfRgNVSF9eBklDQQ0aTE8OBQFLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare 选择免费计划页面，选中 Free 后点击继续&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4. 继续激活&lt;/h3&gt;
&lt;p&gt;点击继续激活，进入名称服务器设置页面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkkNVgJWA1MFBAUGAVNdBQQABQEFAwAAEgZTHF8OBktHQltOHRwBBQFLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare 域名激活流程，点击&amp;quot;继续&amp;quot;前往下一步&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5. 获取 Cloudflare 名称服务器&lt;/h3&gt;
&lt;p&gt;Cloudflare 会分配两个名称服务器（Nameserver），例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ada.ns.cloudflare.com
greg.ns.cloudflare.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不同账号、不同域名分配到的服务器可能不同，请以页面显示为准。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh8MUlZRAVEHUVBRBAJeVQIDVwZSUANbFVYHTwhYAx4URVpNTRtfUg1LA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare 页面显示两个名称服务器地址，提示用户复制&quot; /&gt;&lt;/p&gt;
&lt;p&gt;把这两个地址复制下来，下一步要填回 KataBump。&lt;/p&gt;
&lt;h3&gt;6. 回到 KataBump 填写名称服务器&lt;/h3&gt;
&lt;p&gt;打开 KataBump 的域名管理页面，找到 &lt;strong&gt;Nameservers&lt;/strong&gt; 区域。&lt;/p&gt;
&lt;p&gt;把 Cloudflare 给你的两个名称服务器地址分别填入 NS1 和 NS2，然后点击 &lt;strong&gt;&quot;Save nameservers&quot;&lt;/strong&gt; 保存。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8JVQYEV1IGUgcBVVZcXlJTBwZWCgBdQlFRGwoJVx0TFAlOSRRYVFBLA1gGV0lbB1wWFlhX&quot; alt=&quot;在 KataBump 域名管理页的 Nameservers 区域填入 Cloudflare 名称服务器&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：名称服务器修改通常需要几分钟到几小时才能全球生效。如果 Cloudflare 马上提示未检测到更新，请耐心等待，不必反复修改。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;7. 在 Cloudflare 确认已更新&lt;/h3&gt;
&lt;p&gt;名称服务器生效后，回到 Cloudflare 的激活页面，点击 &lt;strong&gt;&quot;我已更新名称服务器&quot;&lt;/strong&gt; 按钮。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhtaUQRXUwUBVQcGUAIKVQZRV1YHBVcPRgdUSF8LBBVFS1waHx0BVVBLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare 激活页面提示&amp;quot;我已更新名称服务器&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Cloudflare 会检查你的域名。如果配置正确，域名状态会变为&quot;活跃（Active）&quot;。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、第三阶段：用 Cloudflare Drop 部署网站&lt;/h2&gt;
&lt;p&gt;Cloudflare Drop 是 Cloudflare 官方推出的静态网站上传工具，允许你直接把本地文件夹或 zip 包上传，即可生成一个可访问的网站。&lt;/p&gt;
&lt;h3&gt;1. 打开 Cloudflare Drop&lt;/h3&gt;
&lt;p&gt;访问：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://www.cloudflare.com/drop/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你会看到一个简洁的橙色拖拽上传页面，上面写着：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Drop a folder. Or a zip.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhVbUgYDUFIOXQkAAQIKVg9VWlMFUVwIFFEOHV5aXhkUQwlMHUgAWgZLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 首页，提示可以拖拽文件夹或 zip 包上传&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 选择上传方式&lt;/h3&gt;
&lt;p&gt;页面提供两个按钮：&lt;strong&gt;&quot;Browse folders&quot;&lt;/strong&gt; 和 &lt;strong&gt;&quot;Browse zip&quot;&lt;/strong&gt;。因为我们已经解压了网站文件夹，所以点击 &lt;strong&gt;&quot;Browse folders&quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk8AAgECBgQDAQIEV1FZX1AJU1EHBlVfT1BSHl8PUB1AFl9PTkhbWgdLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 页面，蓝色箭头指向&amp;quot;Browse folders&amp;quot;按钮&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 选择你的网站文件夹&lt;/h3&gt;
&lt;p&gt;在弹出的文件选择器中，找到并选中存放 AI 生成网站文件的文件夹。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;关键提醒&lt;/strong&gt;：一定要选择文件夹本身，而不是单个 &lt;code&gt;index.html&lt;/code&gt;。并且文件夹根目录必须包含 &lt;code&gt;index.html&lt;/code&gt;，否则部署后会报错或显示空白。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk5fUwxeB1YHAwBUV1NeVVIAVQRRAAMNQQNTS1lfXxsTSltPTkkAWgRLA1gGV0lTA1YASEZeBA&quot; alt=&quot;系统文件选择器，选中网站文件夹&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4. 等待上传&lt;/h3&gt;
&lt;p&gt;上传过程会显示进度。根据文件大小和网速，可能需要几秒到几分钟。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhsOBQAAB1VTUwlVCwdaUwABBQFSA1UATwcGSQ1fU0xDQ15LSR4PVARLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 上传进度界面，显示文件上传中&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5. 部署成功&lt;/h3&gt;
&lt;p&gt;上传完成后，Cloudflare 会自动部署并生成一个临时域名，例如 &lt;code&gt;xxxxx.pages.dev&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVkhbBQFTBVlSUVdUUQIJVgZWAgICBlwARlZRTggIAhQVF1pOT0kJU1dLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 部署成功页面，显示临时域名&quot; /&gt;&lt;/p&gt;
&lt;p&gt;此时你可以用临时域名先访问网站，但还没绑定自己的域名。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、第四阶段：认领站点并绑定自己的域名&lt;/h2&gt;
&lt;p&gt;为了让网站使用刚才在 KataBump 获取的免费域名，还需要把 Cloudflare Drop 站点认领到自己的 Cloudflare 账号，并添加自定义域名。&lt;/p&gt;
&lt;h3&gt;1. 点击 Claim 认领&lt;/h3&gt;
&lt;p&gt;部署成功后，点击页面上的 &lt;strong&gt;&quot;Claim&quot;&lt;/strong&gt; 按钮。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhxYUgMAAgVUAwlRVQUKUgJSWgNUClJaRQVUFVAMUk9FQltMSB4JAVBLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 部署成功页面，点击&amp;quot;Claim&amp;quot;按钮认领站点&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;2. 再次确认认领&lt;/h3&gt;
&lt;p&gt;系统会跳转到新页面，再次点击认领按钮完成确认。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVh4MAlBWAVMCAwJSBlBdXgBVVAEEAFYAElEHHgtaV0sWFFZATRRYUwNLA1gGV0lbB1wWFlhX&quot; alt=&quot;跳转后的认领页面，再次点击 Claim 按钮&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;3. 选择 Cloudflare 账号&lt;/h3&gt;
&lt;p&gt;选择你刚才登录的 Cloudflare 账号。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhwLWgdWC1cCBwdQAlIABQ9WBQQDC11aQQYATlsJBR9JQ1ocTRQBW1BLA1gGV0lbB1wWFlhX&quot; alt=&quot;选择把站点添加到哪个 Cloudflare 账号&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;4. 立即添加域名&lt;/h3&gt;
&lt;p&gt;认领成功后，进入 Cloudflare Drop 的网站管理界面。点击 &lt;strong&gt;&quot;立即添加域名&quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhpYB1BUV1AAA1RbVVALAFBVAAYAUVRYFFMPGg9aVxhEQwpKHR0KAA1LA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 网站管理页面，点击&amp;quot;立即添加域名&amp;quot;&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;5. 选择你的免费域名&lt;/h3&gt;
&lt;p&gt;在弹出的域名列表中，选择你之前在 KataBump 获取的域名。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhUBVgVeBVBUUFNSV1AKX1ADBw0CV1EKTwcHGAxYVRpHQwodThlbBwJLA1gGV0lbB1wWFlhX&quot; alt=&quot;域名选择弹窗，勾选刚才获取的免费域名&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;6. 确认域名添加成功&lt;/h3&gt;
&lt;p&gt;添加成功后，你会在&quot;网站管理&quot;页面看到自己的域名已经列在&quot;添加的域名&quot;区域。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVhlbWldSBAMFXAEGBlABVAAIWlEEAgBaQwAEHV4JBkhFEFodSh0MVlJLA1gGV0lbB1wWFlhX&quot; alt=&quot;Cloudflare Drop 网站管理页，域名已成功添加&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;7. 使用域名访问网站&lt;/h3&gt;
&lt;p&gt;现在打开浏览器，输入你的域名，例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://yourname.kdns.fr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果一切正常，你的 AI 网站就已经正式上线了！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/api/imgproxy?fmt=auto&amp;t=HkZDXRpXSAITFgFWCkxXCkAfHAhYSlgPUgNdFRkDC0IRRAoOQR1HXwYJEk4EGwAWVk9bVARVVFdWAwUGUVRdUVRVVVBTAwcBFAUBTF8JUhhHQFkbTRRYWw1LA1APXElWClcWFlhX&quot; alt=&quot;浏览器中使用自定义域名访问部署好的网站&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;八、常见问题与排查&lt;/h2&gt;
&lt;h3&gt;1. 域名访问显示&quot;站点未找到&quot;或 404&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;确认 Cloudflare Drop 已经成功部署，并且页面显示&quot;Deploy successful&quot;；&lt;/li&gt;
&lt;li&gt;确认域名已经添加到 Cloudflare Drop 站点；&lt;/li&gt;
&lt;li&gt;等待 5–10 分钟，让 DNS 全球生效；&lt;/li&gt;
&lt;li&gt;在 Cloudflare 域名概览页面确认域名状态为&quot;活跃（Active）&quot;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 域名打开后还是 Cloudflare 的默认页面&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;检查 KataBump 里的名称服务器是否确实改成了 Cloudflare 提供的两个地址；&lt;/li&gt;
&lt;li&gt;检查名称服务器保存后是否等待了足够的生效时间（最长 24 小时）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 上传后网站样式或图片丢失&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;检查 &lt;code&gt;index.html&lt;/code&gt; 中引用的 CSS/JS/图片路径是否正确；&lt;/li&gt;
&lt;li&gt;如果 AI 生成的是相对路径（如 &lt;code&gt;./style.css&lt;/code&gt;），通常没问题；&lt;/li&gt;
&lt;li&gt;如果是绝对路径（如 &lt;code&gt;/style.css&lt;/code&gt;），请确保文件实际存在，或改为相对路径。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 网站打开后空白&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;确认文件夹根目录有 &lt;code&gt;index.html&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;确认文件编码为 UTF-8；&lt;/li&gt;
&lt;li&gt;按 &lt;code&gt;F12&lt;/code&gt; 打开浏览器控制台，查看是否有 JavaScript 错误。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5. 如何更新已部署的网站？&lt;/h3&gt;
&lt;p&gt;Cloudflare Drop 目前不支持自动同步本地文件。当你修改了网站后，需要重新打包/选择文件夹，再次上传。上传成功后，原来的域名会自动指向最新版本。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;九、上线前后的检查&lt;/h2&gt;
&lt;p&gt;这套流程只适合静态文件，不能直接运行数据库、登录接口或服务端代码。免费域名可能有续期、稳定性和品牌信任问题；如果网站用于正式业务，建议使用自己购买的域名，并为表单、统计和第三方脚本单独检查隐私告知。&lt;/p&gt;
&lt;p&gt;通过本教程，你已经完成了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 KataBump 免费获取一个域名；&lt;/li&gt;
&lt;li&gt;把域名 DNS 托管到 Cloudflare；&lt;/li&gt;
&lt;li&gt;使用 Cloudflare Drop 上传并部署静态网站；&lt;/li&gt;
&lt;li&gt;把域名绑定到 Cloudflare Drop 站点；&lt;/li&gt;
&lt;li&gt;通过自定义域名访问上线的网站。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;整个过程不需要购买服务器、不需要配置 Nginx/Apache、不需要绑定信用卡。对于用 AI 快速生成网站的新手来说，这是目前最便宜的上线方案之一。&lt;/p&gt;
&lt;p&gt;如果你希望获得更长久的免费域名，也可以参考另一篇文章《零成本建站：免费获取永久二级域名并一键托管 Cloudflare 详尽指南》。&lt;/p&gt;
</content:encoded></item></channel></rss>