<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/feed.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>祈愿博客</title><description>记录技术、写作与日常灵感。</description><link>https://qiyuan.icu</link><language>en</language><item><title>祈愿博客模板：一个开箱即用的全功能 Astro 博客 + 资源站方案</title><link>https://qiyuan.icu/en/post/qiyuan-blog-template</link><guid isPermaLink="false">en:qiyuan-blog-template</guid><description>祈愿博客模板（qiyuan-blog-template）是基于 Astro 5 + EdgeOne Makers 的开源博客 / 技术资源站模板，内置 RAG AI 助手、临时邮箱、自建评论、公开网盘、文章朗读等能力，全部依赖均可在免费额度内永久运行。</description><pubDate>Tue, 14 Jul 2026 02:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;项目已开源（仓库名：qiyuan-blog-template）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;qiyuan-blog-template&lt;a href=&quot;#qiyuan-blog-template&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt; &lt;strong&gt;带 AI 问答的 Astro 全功能博客模板&lt;/strong&gt; — 内置 RAG 站内问答、文章朗读、评论、网盘、短链与资源站，EdgeOne Makers 部署，开箱即用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.qiyuan.icu&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Demo-%E5%9C%A8%E7%BA%BF%E4%BD%93%E9%AA%8C-blue?style=flat-square&quot; alt=&quot;Demo&quot; loading=&quot;lazy&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;./LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-MIT-green.svg&quot; alt=&quot;License: MIT&quot; loading=&quot;lazy&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;基于 &lt;a href=&quot;https://astro.build&quot;&gt;Astro&lt;/a&gt; 深度定制的个人博客与技术资源站模板（衍生自 &lt;a href=&quot;https://github.com/koharu-org/koharu&quot;&gt;Koharu&lt;/a&gt; 主题），在线示例：&lt;a href=&quot;https://www.qiyuan.icu&quot;&gt;https://www.qiyuan.icu&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;功能页面截图&lt;a href=&quot;#功能页面截图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;祈愿博客首页截图&lt;/figcaption&gt;&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;上图为**示例站（qiyuan.icu，已开启全部可选功能）**首页：顶部 Hero 视频区、作者卡片、文章列表、站内 AI 助手浮窗、导航栏的资源/网盘/短链入口等。模板默认关闭这些可选功能，克隆后按需开启。&lt;/p&gt;
&lt;/blockquote&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;figure&gt;&lt;img /&gt;&lt;figcaption&gt;歌单页面&lt;/figcaption&gt;&lt;/figure&gt;&lt;/td&gt;&lt;td&gt;&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;临时邮箱&lt;/figcaption&gt;&lt;/figure&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&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;figure&gt;&lt;img /&gt;&lt;figcaption&gt;网盘&lt;/figcaption&gt;&lt;/figure&gt;&lt;/td&gt;&lt;td&gt;&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;资源站&lt;/figcaption&gt;&lt;/figure&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;本仓库 &lt;strong&gt;&lt;code&gt;qiyuan-blog-template&lt;/code&gt;&lt;/strong&gt; 是一个&lt;strong&gt;博客模板&lt;/strong&gt;：在 GitHub 仓库页面点击 &lt;strong&gt;Use this template&lt;/strong&gt; 即可一键创建你自己的博客仓库，再按需修改 &lt;code&gt;config/site.yaml&lt;/code&gt;、填充文章、配置环境变量后部署。部署优先推荐国内友好的 &lt;strong&gt;EdgeOne Makers&lt;/strong&gt;，详见下方「作为模板使用」（资源站为独立子项目，需单独部署，见「资源站搭建教程」）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;永久免费说明&lt;a href=&quot;#永久免费说明&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;本模板的全部功能（含评论、站内 AI 助手、资源站、临时邮箱、文章朗读、短链、网盘）在对应服务商的免费额度内均可永久免费使用，不强制任何付费。&lt;/strong&gt; 下表列出每个功能所依赖的外部服务及其当前免费额度（数据核实于 2026-07，以各厂商官网为准）：&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;站点托管 + 全部 API（RAG / 临时邮箱 / 评论 / 上传 / MCP / 统计）&lt;/td&gt;&lt;td&gt;EdgeOne Makers&lt;/td&gt;&lt;td&gt;边缘函数 300 万次/月、云函数 100 万次/月、KV / Blob 各 1 GB、构建 500 次/月、自定义域名 200 个、免费 SSL；网站加速流量/请求在限免阶段不限量（免费版不含视频/大文件分发加速，本站视频与网盘文件经 R2 直传，不消耗该加速额度）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;站内 AI 助手 · 博客文章向量库&lt;/td&gt;&lt;td&gt;Neon（Postgres + pgvector）&lt;/td&gt;&lt;td&gt;永久免费：0.5 GB 存储/项目、100 CU-小时/月、100 个项目、5 GB 出站/月（空闲自动缩容）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;站内 AI 助手 · 资源站向量库&lt;/td&gt;&lt;td&gt;Supabase&lt;/td&gt;&lt;td&gt;永久免费：500 MB 数据库、1 GB 文件存储、5 GB 带宽/月、5 万 MAU、API 请求不限量（空闲 7 天暂停）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;站内 AI 助手 · 嵌入 / 重排&lt;/td&gt;&lt;td&gt;硅基流动 bge-m3 / bge-reranker&lt;/td&gt;&lt;td&gt;永久免费、中国大陆直连、1000 RPM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;站内 AI 助手 · 生成模型&lt;/td&gt;&lt;td&gt;智谱 GLM-4.7-Flash（首选兜底）&lt;/td&gt;&lt;td&gt;永久免费（200K 上下文）；ModelScope Llama-3.3-70B 每日 2000 次免费；商汤 deepseek-v4-flash 公测免费（每 5 小时数百次调用）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;评论存储&lt;/td&gt;&lt;td&gt;Cloudflare KV&lt;/td&gt;&lt;td&gt;10 万读/天、1000 写/天、1000 删/天、1 GB 存储&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;评论图 / 文章朗读音频 / 网盘对象&lt;/td&gt;&lt;td&gt;Cloudflare R2&lt;/td&gt;&lt;td&gt;10 GB 存储/月、100 万 Class A 操作、1000 万 Class B 操作/月、出站流量免费&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;评论图 / 网盘上传 Worker&lt;/td&gt;&lt;td&gt;Cloudflare Workers&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;Cloudflare D1 + Email Routing + Turnstile&lt;/td&gt;&lt;td&gt;D1 5 GB 存储 / 500 万行读/天；Email Routing 免费；Turnstile 免费无限&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;短链存储&lt;/td&gt;&lt;td&gt;Cloudflare KV&lt;/td&gt;&lt;td&gt;与评论共用同一命名空间额度（键前缀 &lt;code&gt;short:&lt;/code&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;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;永久免费档&lt;/strong&gt;（长期有效）：Neon、Supabase、Cloudflare（Workers/KV/R2/D1/Email Routing/Turnstile）、硅基流动嵌入/重排、智谱 GLM-4.7-Flash。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;当前限时免费 / 公测&lt;/strong&gt;：EdgeOne Makers 加速流量处于限免阶段；商汤 sensenova（deepseek-v4-flash）为免费公测，额度与政策可能随公测结束调整——但模板已内置&lt;strong&gt;多生成平台兜底&lt;/strong&gt;（智谱 GLM-4.7-Flash 永久免费、ModelScope 每日 2000 次免费），任一平台变动都不会让 AI 助手失效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文章朗读音频在本地预生成&lt;/strong&gt;（Edge TTS，走微软免费语音端点，无需密钥、无费用），生成后仅占用 Cloudflare R2 的存储额度。&lt;/li&gt;
&lt;li&gt;只要使用量不超出上表各档额度，整套博客（含全部可选功能）即可&lt;strong&gt;零成本永久运行&lt;/strong&gt;；仅在超出免费额度后才需按量付费（如 Supabase 扩容、Cloudflare 超出请求数、Neon 升级计算等）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2&gt; 作为模板使用&lt;a href=&quot;#-作为模板使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;进入本仓库 &lt;strong&gt;&lt;code&gt;qiyuan-blog-template&lt;/code&gt;&lt;/strong&gt; 页面，点击 &lt;strong&gt;Use this template → Create a new repository&lt;/strong&gt;，填写你的新仓库名（可任意命名）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git clone&lt;/code&gt; 到本地，&lt;code&gt;npm install&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;复制 &lt;code&gt;.env.example&lt;/code&gt; 为 &lt;code&gt;.env&lt;/code&gt;，按需填写各功能的环境变量（不填则对应功能自动关闭）。&lt;/li&gt;
&lt;li&gt;编辑 &lt;code&gt;config/site.yaml&lt;/code&gt;：改 &lt;code&gt;site.title&lt;/code&gt; / &lt;code&gt;url&lt;/code&gt; / &lt;code&gt;avatar&lt;/code&gt; / &lt;code&gt;social&lt;/code&gt; 为你自己的信息。&lt;/li&gt;
&lt;li&gt;删除 &lt;code&gt;src/content/blog/welcome.md&lt;/code&gt;，放入你自己的 &lt;code&gt;.md&lt;/code&gt; 文章。&lt;/li&gt;
&lt;li&gt;部署到 EdgeOne Makers（或其它 Astro 兼容平台），在平台的环境变量中配置与 &lt;code&gt;.env&lt;/code&gt; 相同的键值。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;可选功能默认关闭&lt;a href=&quot;#可选功能默认关闭&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;为保持模板开箱即用的纯净度，&lt;strong&gt;以下可选功能默认全部关闭&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;/td&gt;&lt;td&gt;&lt;code&gt;comment.provider&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;none&lt;/code&gt;（关闭）&lt;/td&gt;&lt;td&gt;改为 &lt;code&gt;giscus&lt;/code&gt; / &lt;code&gt;waline&lt;/code&gt; / &lt;code&gt;twikoo&lt;/code&gt; / &lt;code&gt;custom&lt;/code&gt; 并填对应配置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;站内 AI 助手（RAG）&lt;/td&gt;&lt;td&gt;&lt;code&gt;rag.enabled&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&lt;td&gt;设为 &lt;code&gt;true&lt;/code&gt;，并配置 &lt;code&gt;SILICONFLOW_API_KEY&lt;/code&gt; / &lt;code&gt;NEON_SERVERLESS_URL&lt;/code&gt; 等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;资源站&lt;/td&gt;&lt;td&gt;&lt;code&gt;resources.enabled&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&lt;td&gt;设为 &lt;code&gt;true&lt;/code&gt;，并单独部署 &lt;code&gt;resource-site/&lt;/code&gt;（见「资源站搭建教程」）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;临时邮箱&lt;/td&gt;&lt;td&gt;&lt;code&gt;tempMail.enabled&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&lt;td&gt;设为 &lt;code&gt;true&lt;/code&gt;，并在 Cloudflare 部署收信 Worker + D1 + Email Routing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;文章朗读&lt;/td&gt;&lt;td&gt;文章 frontmatter &lt;code&gt;audio: true&lt;/code&gt;&lt;/td&gt;&lt;td&gt;不设置即关闭&lt;/td&gt;&lt;td&gt;在文章顶部加 &lt;code&gt;audio: true&lt;/code&gt;，并配置 &lt;code&gt;SILICONFLOW_API_KEY&lt;/code&gt; + R2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;网盘&lt;/td&gt;&lt;td&gt;导航项 &lt;code&gt;enabled&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&lt;td&gt;导航项改为 &lt;code&gt;enabled: true&lt;/code&gt; + 部署 &lt;code&gt;/api/drive/*&lt;/code&gt;（R2/S3 + KV）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;短链&lt;/td&gt;&lt;td&gt;导航项 &lt;code&gt;enabled&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&lt;td&gt;导航项改为 &lt;code&gt;enabled: true&lt;/code&gt; + 部署 &lt;code&gt;/api/shorten/*&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;说明：评论 / 临时邮箱 / 文章朗读属「零依赖或轻依赖」，配好即用；站内 AI 助手 / 资源站 / 网盘 / 短链 依赖边缘函数与外部服务（Neon / Supabase / R2 / Cloudflare），需在部署平台配置对应环境变量。各功能的完整配置见下方「功能特性」与各 &lt;code&gt;docs/*.md&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt; 开发工具：右键样式编辑器（仅本地 &lt;code&gt;astro dev&lt;/code&gt;）&lt;a href=&quot;#-开发工具右键样式编辑器仅本地-astro-dev&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本地 &lt;code&gt;astro dev&lt;/code&gt; 运行时&lt;strong&gt;直接定死右键可用&lt;/strong&gt;，无需开关：在页面任意位置&lt;strong&gt;右键&lt;/strong&gt;即弹出样式编辑器，边看边调。面板内&lt;strong&gt;不使用任何表情符号&lt;/strong&gt;，图标一律为内联 SVG；所有可调属性均标注&lt;strong&gt;中文 / 日文 / 英文&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;：元素面板顶部「上传图片 / 画像 / Image」按钮（SVG 图标），支持 &lt;strong&gt;图片 / GIF / 视频&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;右键 &lt;strong&gt;&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;&lt;/strong&gt;（如头图、精选分类图）→ 直接替换其 &lt;code&gt;src&lt;/code&gt;；若右键的是包裹图片的容器，会自动定位其中的 &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 一并替换。&lt;/li&gt;
&lt;li&gt;右键&lt;strong&gt;带背景图的元素&lt;/strong&gt;（如背景图区域）→ 替换其 &lt;code&gt;background-image&lt;/code&gt;；上传&lt;strong&gt;视频&lt;/strong&gt;则注入一个绝对定位的 &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; 覆盖层作为动态背景。&lt;/li&gt;
&lt;li&gt;内容以 base64 / blob 注入，&lt;strong&gt;刷新后还原&lt;/strong&gt;（开发期调试用，不写盘）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主题变量&lt;/strong&gt;：按当前「亮色 / 暗色」分别编辑全局 CSS 变量（SVG 太阳 / 月亮 图标切换）。变量以&lt;strong&gt;自然语言说明&lt;/strong&gt;呈现（如「页面背景色 / ページ背景 / Page background」），技术变量名仅作小号代码注记。改动注入 &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; 并持久化到 &lt;code&gt;localStorage&lt;/code&gt;，刷新后保留；「复制 CSS」可导出，「重置」恢复默认。&lt;/li&gt;
&lt;li&gt;面板&lt;strong&gt;不显示滚动条&lt;/strong&gt;（已隐藏，主题变量区改双列网格压缩高度）；点击面板外空白处自动关闭；面板配色&lt;strong&gt;使用博客主题变量&lt;/strong&gt;，自动跟随亮/暗主题。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ 该功能&lt;strong&gt;仅在 &lt;code&gt;import.meta.env.DEV&lt;/code&gt; 下挂载&lt;/strong&gt;（&lt;code&gt;src/layouts/Layout.astro&lt;/code&gt; 中以 &lt;code&gt;{import.meta.env.DEV &amp;amp;&amp;amp; &amp;lt;StyleEditor /&amp;gt;}&lt;/code&gt; 包裹，&lt;code&gt;src/components/dev/StyleEditor.tsx&lt;/code&gt; 组件内亦有兜底守卫）。&lt;code&gt;astro build&lt;/code&gt; 时被自动 tree-shake，&lt;strong&gt;不进入生产产物&lt;/strong&gt;，对线上访客零影响。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;安全响应头&lt;a href=&quot;#安全响应头&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;两个边缘函数（&lt;code&gt;edge-functions/api/[[default]].js&lt;/code&gt; 与 &lt;code&gt;resource-site/edge-functions/api/[[default]].js&lt;/code&gt;）已为&lt;strong&gt;所有 API 响应&lt;/strong&gt;统一注入安全头（经 &lt;code&gt;getCorsHeaders()&lt;/code&gt; spread，一处覆盖全部 JSON / 流式 / 代理响应）：&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;code&gt;X-Content-Type-Options&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;nosniff&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Referrer-Policy&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;strict-origin-when-cross-origin&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;X-Frame-Options&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;SAMEORIGIN&lt;/code&gt;（非 &lt;code&gt;DENY&lt;/code&gt;，保证网盘内联预览的同站 &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt; 不被阻断）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Permissions-Policy&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;camera=(), microphone=(), geolocation=()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Strict-Transport-Security&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;max-age=63072000; includeSubDomains&lt;/code&gt;（未上 preload 列表，不加 &lt;code&gt;preload&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;静态资源&lt;/strong&gt;（HTML / JS / CSS / 字体 / 图片）的安全头需在 &lt;strong&gt;EdgeOne 控制台 → 站点加速 → 配置 → HTTP 响应头（修改响应头）&lt;/strong&gt; 中按文件后缀统一添加上述同样的头（CDN 缓存层注入，被缓存的资源也带安全头）。CSP 暂未启用（站内有 AdSense 与内联脚本，需单独审计）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可选加固&lt;/strong&gt;：在 &lt;strong&gt;EdgeOne 控制台 → 安全防护 → 速率限制&lt;/strong&gt; 给写入类接口配「客户端 IP 60s 内 ≥1 次 → 拦截 429」，覆盖 &lt;code&gt;POST /api/comment-image&lt;/code&gt;、&lt;code&gt;POST /api/drive/upload-init&lt;/code&gt;、&lt;code&gt;POST /api/temp-mail/address&lt;/code&gt;，防滥发。EdgeOne 边缘直接判真实客户端 IP（&lt;code&gt;EO-Connecting-IP&lt;/code&gt;），不会因 CDN 聚合误伤全体用户。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;技术栈&lt;a href=&quot;#技术栈&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Astro 5&lt;/strong&gt;（SSG）+ 定制主题，支持中文 / English / 日本語 三语（&lt;code&gt;[lang]/&lt;/code&gt; 镜像路由）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署平台：EdgeOne Makers&lt;/strong&gt;（腾讯云边缘函数 / 云函数）。站点 &lt;code&gt;qiyuan.icu&lt;/code&gt; 跑在边缘，全文搜索用 Pagefind。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;边缘运行时&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;edge-functions/api/[[default]].js&lt;/code&gt; —— EdgeOne 边缘函数单体，承载 RAG 聊天、临时邮箱、评论、上传、MCP、统计等全部 API。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cloud-functions/&lt;/code&gt; —— Makers 云函数（如博客图床上传 &lt;code&gt;api/images/upload&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外部依赖&lt;/strong&gt;：Neon（Postgres + pgvector，博客文章向量库）、Supabase（资源站向量库）、硅基流动（bge-m3 / bge-reranker 嵌入重排）、商汤 sensenova + ModelScope + 智谱（生成模型）、Cloudflare（KV 评论存储 + R2 评论图 + 临时邮箱 Worker/D1）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;功能特性&lt;a href=&quot;#功能特性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;博客文章&lt;/strong&gt;：Markdown/MDX，封面图，目录，Pagefind 站内搜索；支持按语言切换。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;站内 AI 助手（RAG）「就这篇文章问 AI」&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;检索：博客文章（Neon + pgvector &lt;code&gt;rag_posts&lt;/code&gt; 余弦检索）+ 资源站（Supabase &lt;code&gt;products&lt;/code&gt; &lt;strong&gt;混合检索&lt;/strong&gt;：向量 + 词法 &lt;code&gt;ilike&lt;/code&gt;，RRF 融合），各取候选经重排后送入上下文。&lt;/li&gt;
&lt;li&gt;嵌入 &lt;code&gt;BAAI/bge-m3&lt;/code&gt;、重排 &lt;code&gt;BAAI/bge-reranker-v2-m3&lt;/code&gt;（均经硅基流动，免费）。&lt;/li&gt;
&lt;li&gt;生成：&lt;strong&gt;首选商汤 sensenova &lt;code&gt;deepseek-v4-flash&lt;/code&gt;（多密钥轮询、关闭思考模式）&lt;/strong&gt;，兜底 ModelScope / 智谱 GLM / 硅基流动 DeepSeek。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用的大模型平台&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;硅基流动（SiliconFlow）&lt;/strong&gt;：嵌入 &lt;code&gt;BAAI/bge-m3&lt;/code&gt; + 重排 &lt;code&gt;BAAI/bge-reranker-v2-m3&lt;/code&gt;（免费），并作生成最终兜底（DeepSeek）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;商汤 sensenova&lt;/strong&gt;：生成首选，模型 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;（多密钥轮询、关闭思考模式）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ModelScope 魔搭&lt;/strong&gt;：生成兜底，&lt;code&gt;Llama-3.3-70B&lt;/code&gt;（国内直连免费）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智谱 GLM&lt;/strong&gt;：生成兜底，&lt;code&gt;GLM-4.7-Flash&lt;/code&gt;（永久免费、国内直连）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;性能优化：&lt;strong&gt;Neon 预热&lt;/strong&gt;（请求内 &lt;code&gt;SELECT 1&lt;/code&gt; 与嵌入并发，消除 scale-to-zero 冷启动）、&lt;strong&gt;问题向量缓存&lt;/strong&gt;（LRU 5 条，相同问题跳过重复嵌入调用）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;临时邮箱&lt;/strong&gt; &lt;code&gt;qiyuanmail.cc.cd&lt;/code&gt;：Cloudflare Email Routing → Worker → D1（&lt;code&gt;temp_addresses&lt;/code&gt; / &lt;code&gt;temp_messages&lt;/code&gt;）；Turnstile 人机验证；前端支持收件箱、自动刷新、HTML 邮件渲染（链接新标签打开）。
&lt;ul&gt;
&lt;li&gt;⚠️ 收信 Worker + D1 + Email Routing 需在 &lt;strong&gt;Cloudflare 控制台&lt;/strong&gt;自行部署（代码见 &lt;code&gt;cloudflare/&lt;/code&gt;）；本仓库的边缘函数只负责 UI 与读信/生成地址。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评论系统&lt;/strong&gt;：评论存 &lt;strong&gt;Cloudflare KV&lt;/strong&gt;，图片存 &lt;strong&gt;Cloudflare R2&lt;/strong&gt;（经上传 Worker 直写，无需 S3 密钥）；&lt;code&gt;config/site.yaml&lt;/code&gt; 中 &lt;code&gt;comment.provider&lt;/code&gt; 默认 &lt;code&gt;none&lt;/code&gt;（可选 &lt;code&gt;custom&lt;/code&gt; / &lt;code&gt;giscus&lt;/code&gt; / &lt;code&gt;waline&lt;/code&gt; / &lt;code&gt;twikoo&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R2 独立图床&lt;/strong&gt;：评论图走 &lt;code&gt;r2.qiyuan.icu&lt;/code&gt;（国内经 EdgeOne 边缘回源 Cloudflare，浏览器全程只碰腾讯网络）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文章朗读（Edge TTS 预生成音频）&lt;/strong&gt;：文章 frontmatter 加 &lt;code&gt;audio: true&lt;/code&gt; 即生成中文朗读 mp3。流程为&lt;strong&gt;发布前本地&lt;/strong&gt;用 Edge TTS 合成 → 上传 Cloudflare R2（&lt;code&gt;audio/&amp;lt;slug&amp;gt;.mp3&lt;/code&gt;，经 &lt;code&gt;r2.qiyuan.icu&lt;/code&gt; CDN）→ 前端播放器点击播放（&lt;strong&gt;非&lt;/strong&gt;运行时实时合成，体验更稳）。清单 &lt;code&gt;src/assets/audio-manifest.json&lt;/code&gt; 记录每篇 &lt;code&gt;slug →&lt;/code&gt;，文章页据此显示播放器。
&lt;ul&gt;
&lt;li&gt;音频 URL 自动带缓存破坏参数 &lt;code&gt;?v=&amp;lt;mp3 内容 sha256 前 12 位&amp;gt;&lt;/code&gt;：R2/EdgeOne 对未知 query 参数按同一对象返回，但浏览器/CDN 以完整 URL 作缓存键，故音频内容更新后 URL 必变、强制重新拉取，避免旧 mp3 被长期缓存（R2 默认 &lt;code&gt;Cache-Control: max-age=604800&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;生成：&lt;code&gt;npm run generate:audio&lt;/code&gt;（增量，内容+音色哈希命中则跳过）；&lt;code&gt;-- --force&lt;/code&gt; 全量重生成；&lt;code&gt;-- --local&lt;/code&gt; 强制落本地 &lt;code&gt;public/audio/&lt;/code&gt;。增量缓存存 &lt;code&gt;.cache/audio-cache.json&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;短链（Short URL）&lt;/strong&gt;：把长链接缩短成 &lt;code&gt;{origin}/api/s/&amp;lt;slug&amp;gt;&lt;/code&gt;。存储于 Cloudflare KV（与评论同命名空间，前缀 &lt;code&gt;short:&lt;/code&gt;）；支持自定义短码（3–32 位字母数字 &lt;code&gt;_-&lt;/code&gt;）或自动生成 6 位随机码；仅接受 &lt;code&gt;http/https&lt;/code&gt; 目标；访问 &lt;code&gt;/api/s/&amp;lt;slug&amp;gt;&lt;/code&gt; 即 302 跳转到原链接，不存在返回 404。需配置 &lt;code&gt;CF_KV_*&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;公开网盘（Netdisk）&lt;/strong&gt; &lt;code&gt;/drive&lt;/code&gt;：浏览器经 S3 presigned PUT 直传 Cloudflare R2，文件元数据存 Cloudflare KV；单文件默认上限 500MB（&lt;code&gt;DRIVE_MAX_BYTES&lt;/code&gt; 可覆盖）。提供上传初始化 &lt;code&gt;/api/drive/upload-init&lt;/code&gt;、完成回调 &lt;code&gt;/api/drive/upload-complete&lt;/code&gt;、列表 &lt;code&gt;/api/drive/list&lt;/code&gt;、分享页元数据 &lt;code&gt;/api/drive/meta/:token&lt;/code&gt;。&lt;strong&gt;文件 24 小时后自动删除&lt;/strong&gt;（KV &lt;code&gt;expirationTtl&lt;/code&gt;，&lt;code&gt;DRIVE_TTL_HOURS&lt;/code&gt; 可改时长），需配合 Cloudflare 控制台 R2 桶 Lifecycle 规则（前缀 &lt;code&gt;drive/&lt;/code&gt;）才能真正清理对象。需配置 &lt;code&gt;R2_*&lt;/code&gt; 与 &lt;code&gt;CF_KV_*&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;本地开发&lt;a href=&quot;#本地开发&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; dev&lt;/span&gt;&lt;span&gt;      # http://localhost:4321&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; build&lt;/span&gt;&lt;span&gt;    # 构建到 dist/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; preview&lt;/span&gt;&lt;span&gt;  # 预览构建结果&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;需要 &lt;strong&gt;Node.js 18.17.1+&lt;/strong&gt;（推荐 20+）与 npm 9+。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;RAG 相关脚本（可选，CI/部署时通常自动跑）：&lt;code&gt;npm run index:neon&lt;/code&gt;（文章向量）、&lt;code&gt;npm run index:resources&lt;/code&gt;（资源向量回填）、&lt;code&gt;npm run generate:summaries&lt;/code&gt; 等。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;文章朗读音频需&lt;strong&gt;本地预生成&lt;/strong&gt;：&lt;code&gt;npm run generate:audio&lt;/code&gt; 合成并上传 R2 后，须提交 &lt;code&gt;src/assets/audio-manifest.json&lt;/code&gt;（部署只读取清单、不生成音频）。新增或编辑 &lt;code&gt;audio: true&lt;/code&gt; 文章后务必重跑本命令。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;环境变量（EdgeOne 控制台）&lt;a href=&quot;#环境变量edgeone-控制台&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;边缘函数通过环境变量注入密钥，本仓库代码&lt;strong&gt;不包含任何密钥&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;RAG 必需&lt;a href=&quot;#rag-必需&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;SILICONFLOW_API_KEY&lt;/code&gt;&lt;/td&gt;&lt;td&gt;嵌入(bge-m3)/重排(bge-reranker) 必需；文本生成也复用它作最后兜底&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;NEON_SERVERLESS_URL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;博客文章向量库 &lt;code&gt;rag_posts&lt;/code&gt;（pgvector）连接串，必需&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;SUPABASE_URL&lt;/code&gt; / &lt;code&gt;SUPABASE_SERVICE_KEY&lt;/code&gt;&lt;/td&gt;&lt;td&gt;资源站向量库 &lt;code&gt;products&lt;/code&gt; 连接信息，必需&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;生成模型（首选 + 兜底）&lt;a href=&quot;#生成模型首选--兜底&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;SENSENOVA_API_KEYS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;生成首选&lt;/strong&gt;；多把密钥用逗号/换行分隔，按顺序轮询，全部失败才顺延下一个平台；模型固定 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;，思考模式已强制关闭&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;MODELSCOPE_API_KEY&lt;/code&gt;&lt;/td&gt;&lt;td&gt;可选兜底，ModelScope 魔搭 &lt;code&gt;Llama-3.3-70B&lt;/code&gt;（国内直连免费）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ZHIPU_API_KEY&lt;/code&gt;&lt;/td&gt;&lt;td&gt;可选兜底，智谱 &lt;code&gt;GLM-4.7-Flash&lt;/code&gt;（永久免费、国内直连）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;评论 / R2 图床&lt;a href=&quot;#评论--r2-图床&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;CF_KV_NAMESPACE_ID&lt;/code&gt; / &lt;code&gt;CF_KV_API_TOKEN&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Cloudflare KV（&lt;strong&gt;评论 + 短链&lt;/strong&gt;存储），必需（否则评论/短链接口 503）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;CF_ACCOUNT_ID&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Cloudflare 账户 ID（R2 / KV 共用，默认已知可不改）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;UPLOAD_WORKER_URL&lt;/code&gt; / &lt;code&gt;UPLOAD_WORKER_KEY&lt;/code&gt;&lt;/td&gt;&lt;td&gt;上传 Worker（R2 绑定直写评论图，优先于 S3 直传）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;R2_ACCOUNT_ID&lt;/code&gt; / &lt;code&gt;R2_ACCESS_KEY_ID&lt;/code&gt; / &lt;code&gt;R2_SECRET_ACCESS_KEY&lt;/code&gt; / &lt;code&gt;R2_BUCKET&lt;/code&gt; / &lt;code&gt;R2_PUBLIC_URL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章朗读&lt;strong&gt;音频&lt;/strong&gt;与&lt;strong&gt;网盘&lt;/strong&gt;上传 R2 所用的 S3 凭据（评论图已改走上传 Worker，但音频与网盘仍走 S3 直传）；缺省则音频落本地 &lt;code&gt;public/audio/&lt;/code&gt;、网盘不可用&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;网盘 / 短链&lt;a href=&quot;#网盘--短链&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;DRIVE_TTL_HOURS&lt;/code&gt;&lt;/td&gt;&lt;td&gt;网盘文件存活时长（小时），默认 &lt;code&gt;24&lt;/code&gt;；到期由 KV &lt;code&gt;expirationTtl&lt;/code&gt; 自动标记失效，并需配合 R2 桶 Lifecycle 规则（前缀 &lt;code&gt;drive/&lt;/code&gt;）真正删除对象&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;DRIVE_MAX_BYTES&lt;/code&gt;&lt;/td&gt;&lt;td&gt;网盘单文件大小上限（字节），默认 &lt;code&gt;524288000&lt;/code&gt;（500MB）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;短链复用上方 &lt;code&gt;CF_KV_*&lt;/code&gt;；网盘复用上方 &lt;code&gt;R2_*&lt;/code&gt; 与 &lt;code&gt;CF_KV_*&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;临时邮箱&lt;a href=&quot;#临时邮箱&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;TEMP_MAIL_D1_ID&lt;/code&gt;&lt;/td&gt;&lt;td&gt;D1 数据库 ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;CF_D1_API_TOKEN&lt;/code&gt;&lt;/td&gt;&lt;td&gt;D1 读写 Token（含 D1&lt;div&gt;&lt;/div&gt; 权限）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;TURNSTILE_SECRET&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Turnstile 私密密钥（注意：不是站点密钥）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;TEMP_MAIL_DOMAIN&lt;/code&gt;&lt;/td&gt;&lt;td&gt;可选，默认 &lt;code&gt;qiyuanmail.cc.cd&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;资源站（可选）&lt;a href=&quot;#资源站可选&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;code&gt;JWT_SECRET&lt;/code&gt;&lt;/td&gt;&lt;td&gt;资源站用户登录 JWT 签名密钥（&lt;strong&gt;必填&lt;/strong&gt;，否则 &lt;code&gt;/api/auth/*&lt;/code&gt; 报错）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PUBLISH_KEY&lt;/code&gt;&lt;/td&gt;&lt;td&gt;MCP 发布与图片上传密钥（同时用于 &lt;code&gt;/api/publish&lt;/code&gt; 与 &lt;code&gt;/api/images/upload&lt;/code&gt;），可选&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PUBLIC_BASE_URL&lt;/code&gt;&lt;/td&gt;&lt;td&gt;公开站点基址，如 &lt;code&gt;https://www.qiyuan.icu&lt;/code&gt;，用于生成分享 / SEO 链接&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;strong&gt;引用&lt;/strong&gt;它的数据。完整步骤见下方「资源站搭建教程」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;资源站搭建教程&lt;a href=&quot;#资源站搭建教程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&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;strong&gt;单独的 EdgeOne 项目&lt;/strong&gt;，源码在本仓库的 &lt;a href=&quot;./resource-site/&quot;&gt;&lt;code&gt;resource-site/&lt;/code&gt;&lt;/a&gt; 子目录，拥有自己的边缘函数、Supabase 数据库与（可选）前端页面，需&lt;strong&gt;单独部署&lt;/strong&gt;、绑定自己的域名（如 &lt;code&gt;resources.qiyuan.icu&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;博客&lt;/strong&gt;：通过共用同一套 Supabase 数据库 + &lt;code&gt;RESOURCES_API_PROXY&lt;/code&gt; 指向资源站域名来&lt;strong&gt;引用&lt;/strong&gt;资源数据，在内置「资源」页（&lt;code&gt;/resources&lt;/code&gt;）中展示、搜索、获取网盘链接。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说：&lt;strong&gt;先把 &lt;code&gt;resource-site/&lt;/code&gt; 当作独立项目部署好，博客再指过去。&lt;/strong&gt; 二者可共用同一个 Supabase 项目，也可各自独立。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;架构&lt;a href=&quot;#架构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;                    ┌──────────────────── 资源站（独立部署，resource-site/）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;浏览器               │   EdgeOne 项目 A（域名如 resources.qiyuan.icu）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; ├─ 资源站站点 ──────┤     ├─ edge-functions/api/[[default]].js（认证/商品/评论/图片/MCP）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; │                  │     └─ Supabase（users / products / reviews / orders；product-images 桶）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; │                  └────────────────────&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; │&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt; └─ 博客「资源」页 ──→ EdgeOne 项目 B（博客，本仓库根目录）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        /resources        └─ /api 经 RESOURCES_API_PROXY 引用资源站，或直连同一套 Supabase 读取 products&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;一、部署资源站（独立项目）&lt;a href=&quot;#一部署资源站独立项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;源码见 &lt;a href=&quot;./resource-site/&quot;&gt;&lt;code&gt;resource-site/&lt;/code&gt;&lt;/a&gt;，详细文档见 &lt;a href=&quot;./resource-site/README.md&quot;&gt;&lt;code&gt;resource-site/README.md&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;建库与 RLS&lt;/strong&gt;：在 Supabase SQL Editor 依次执行：
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;./resource-site/database/schema.sql&quot;&gt;&lt;code&gt;resource-site/database/schema.sql&lt;/code&gt;&lt;/a&gt;（建表：&lt;code&gt;users&lt;/code&gt; / &lt;code&gt;products&lt;/code&gt; / &lt;code&gt;reviews&lt;/code&gt; / &lt;code&gt;orders&lt;/code&gt; / &lt;code&gt;quark_orders&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./resource-site/database/rls_policies.sql&quot;&gt;&lt;code&gt;resource-site/database/rls_policies.sql&lt;/code&gt;&lt;/a&gt;（RLS：&lt;code&gt;users&lt;/code&gt; 对 anon 完全不可见，商品匿名只读上架）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建 Storage 桶&lt;/strong&gt;：创建 &lt;code&gt;product-images&lt;/code&gt; 桶并设为公开（或经 &lt;code&gt;/api/images/*&lt;/code&gt; 代理）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单独部署 &lt;code&gt;resource-site/&lt;/code&gt;&lt;/strong&gt;：将该目录作为独立 EdgeOne 项目部署（边缘函数 + 可选静态前端），并在其控制台配置环境变量：
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;SUPABASE_URL=https://your-project.supabase.co&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;SUPABASE_SERVICE_KEY=eyJ...      # 服务端密钥&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;JWT_SECRET=***                    # 资源站登录 JWT 签名密钥（必填）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;前端页面（&lt;code&gt;public/*.html&lt;/code&gt;）未随模板附带，可自行编写或从原站取用；仅需 API 时可只部署边缘函数。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;二、让博客引用资源站&lt;a href=&quot;#二让博客引用资源站&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;数据层&lt;/strong&gt;：博客与资源站&lt;strong&gt;共用同一套 Supabase&lt;/strong&gt;。如需 RAG 语义搜索，在 Supabase 执行 &lt;a href=&quot;./database/products_embedding.sql&quot;&gt;&lt;code&gt;database/products_embedding.sql&lt;/code&gt;&lt;/a&gt; 为 &lt;code&gt;products&lt;/code&gt; 加向量列；分类多语言可选执行 &lt;a href=&quot;./database/resource_category_i18n.sql&quot;&gt;&lt;code&gt;database/resource_category_i18n.sql&lt;/code&gt;&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置指向&lt;/strong&gt;：博客侧设置 &lt;code&gt;RESOURCES_API_PROXY&lt;/code&gt; 指向资源站域名（如 &lt;code&gt;https://resources.qiyuan.icu&lt;/code&gt;），本地开发时 &lt;code&gt;npm run dev&lt;/code&gt; 会据此代理 &lt;code&gt;/api&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开启资源页&lt;/strong&gt;：&lt;code&gt;config/site.yaml&lt;/code&gt; 中 &lt;code&gt;resources.enabled: true&lt;/code&gt;（默认已开），按需改 &lt;code&gt;label&lt;/code&gt; / &lt;code&gt;icon&lt;/code&gt; / &lt;code&gt;ownerUserId&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署博客&lt;/strong&gt;：推送到 Git，EdgeOne Makers 自动构建并发布。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;验证&lt;a href=&quot;#验证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 对资源站域名验证&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; https://resources.your-domain.com/api/categories&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &quot;https://resources.your-domain.com/api/products?limit=2&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;返回 JSON 即说明资源站已正常工作。管理后台可注册账号、发布商品（密码需同时包含大写 + 小写 + 数字 + 符号）。&lt;/p&gt;
&lt;h3&gt;更多文档&lt;a href=&quot;#更多文档&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;./resource-site/README.md&quot;&gt;资源站独立部署说明&lt;/a&gt; 与 &lt;a href=&quot;./resource-site/docs/DEPLOYMENT.md&quot;&gt;部署指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./resource-site/docs/API.md&quot;&gt;资源站 API 接口&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./resource-site/docs/DATABASE.md&quot;&gt;资源站数据库结构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./docs/resources-deployment.md&quot;&gt;博客侧资源引用配置（详细）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./docs/ai-resources-publisher-prompt.md&quot;&gt;AI 资源发布提示词&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;站点配置&lt;a href=&quot;#站点配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;主配置在 &lt;code&gt;config/site.yaml&lt;/code&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;code&gt;site.title&lt;/code&gt; / &lt;code&gt;site.subtitle&lt;/code&gt;&lt;/td&gt;&lt;td&gt;站点标题与副标题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;site.name&lt;/code&gt; / &lt;code&gt;site.author&lt;/code&gt;&lt;/td&gt;&lt;td&gt;作者名称&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;site.avatar&lt;/code&gt;&lt;/td&gt;&lt;td&gt;头像路径（当前 &lt;code&gt;/img/avatar.svg&lt;/code&gt;，可换 &lt;code&gt;.jpg&lt;/code&gt;/&lt;code&gt;.webp&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;site.url&lt;/code&gt;&lt;/td&gt;&lt;td&gt;站点 URL，用于 RSS 与 SEO&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;site.startYear&lt;/code&gt;&lt;/td&gt;&lt;td&gt;建站年份&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;tempMail.domain&lt;/code&gt;&lt;/td&gt;&lt;td&gt;临时邮箱域名（默认 &lt;code&gt;qiyuanmail.cc.cd&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;turnstileSiteKey&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Turnstile 站点密钥（公开，用于前端渲染验证框）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;comment.provider&lt;/code&gt;&lt;/td&gt;&lt;td&gt;评论提供商，默认 &lt;code&gt;none&lt;/code&gt;（可选 &lt;code&gt;custom&lt;/code&gt; / &lt;code&gt;giscus&lt;/code&gt; / &lt;code&gt;waline&lt;/code&gt; / &lt;code&gt;twikoo&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;替换头像：将图片放到 &lt;code&gt;public/img/avatar.svg&lt;/code&gt;（或同名 &lt;code&gt;.jpg&lt;/code&gt;/&lt;code&gt;.webp&lt;/code&gt;），并同步更新 &lt;code&gt;public/favicon.ico&lt;/code&gt;（favicon 由头像生成）。&lt;/p&gt;
&lt;h2&gt;如何添加文章&lt;a href=&quot;#如何添加文章&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;code&gt;src/content/blog/&lt;/code&gt; 新建 Markdown/MDX 文件，如 &lt;code&gt;my-post.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在文件顶部写 frontmatter：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;title: 我的文章标题&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;description: 一句话摘要&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pubDate: 2026-06-05&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;heroImage: ./cover.png   # 可选，封面放同级或子目录&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;categories:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  -&lt;/span&gt;&lt;span&gt; 笔记&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;tags:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  -&lt;/span&gt;&lt;span&gt; 标签一&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;audio: true        # 可选：设为 true 即生成该篇文章的 Edge TTS 中文朗读音频（详见上方「文章朗读」）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;---&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;正文内容写在这里…&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;封面图规则：
&lt;ul&gt;
&lt;li&gt;与文章同目录：&lt;code&gt;heroImage: ./cover.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在子目录：&lt;code&gt;heroImage: ./my-post/cover.png&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;保存后本地 &lt;code&gt;npm run dev&lt;/code&gt; 预览，或 &lt;code&gt;npm run build&lt;/code&gt; 构建。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;pubDate&lt;/code&gt; / &lt;code&gt;heroImage&lt;/code&gt; 会自动映射为 &lt;code&gt;date&lt;/code&gt; / &lt;code&gt;cover&lt;/code&gt;，与 &lt;code&gt;src/content.config.ts&lt;/code&gt; 中的 schema 对齐。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;修改图片后建议运行 &lt;code&gt;npm run generate:lqips&lt;/code&gt; 更新占位渐变。&lt;/p&gt;
&lt;h2&gt;目录结构&lt;a href=&quot;#目录结构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&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;code&gt;config/site.yaml&lt;/code&gt;&lt;/td&gt;&lt;td&gt;站点主配置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;src/pages/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;页面路由（含 &lt;code&gt;[lang]/&lt;/code&gt; 多语言镜像）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;src/content/blog/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章集合（Markdown/MDX）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;src/components/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;UI 组件（含 &lt;code&gt;tempmail/&lt;/code&gt;、&lt;code&gt;chat/&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;src/layouts/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;页面布局&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;edge-functions/api/[[default]].js&lt;/code&gt;&lt;/td&gt;&lt;td&gt;EdgeOne 边缘函数：RAG 聊天 / 临时邮箱 / 评论 / 上传 / MCP / 统计&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;cloud-functions/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Makers 云函数（博客图床上传等）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;cloudflare/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;临时邮箱收信 Worker、D1 schema、wrangler 配置（需自行部署到 Cloudflare）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;public/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;静态资源（favicon、图片、字体等）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scripts/generate-audio.mjs&lt;/code&gt;&lt;/td&gt;&lt;td&gt;文章朗读音频生成（Edge TTS → R2/CDN，产出 &lt;code&gt;src/assets/audio-manifest.json&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;src/assets/audio-manifest.json&lt;/code&gt;&lt;/td&gt;&lt;td&gt;音频清单：&lt;code&gt;slug → { url, voice, chars, bytes, generatedAt }&lt;/code&gt;，&lt;code&gt;url&lt;/code&gt; 带 &lt;code&gt;?v=&amp;lt;哈希&amp;gt;&lt;/code&gt; 缓存破坏&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;部署&lt;a href=&quot;#部署&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;推送到 Git 后由 &lt;strong&gt;EdgeOne Makers&lt;/strong&gt; 自动构建（&lt;code&gt;npm run build&lt;/code&gt;）并发布，边缘函数随仓库部署。&lt;strong&gt;部署前需在 EdgeOne 控制台填好上面对应的环境变量&lt;/strong&gt;（尤其 &lt;code&gt;SILICONFLOW_API_KEY&lt;/code&gt; / &lt;code&gt;NEON_SERVERLESS_URL&lt;/code&gt; / &lt;code&gt;SUPABASE_*&lt;/code&gt; / &lt;code&gt;SENSENOVA_API_KEYS&lt;/code&gt; / &lt;code&gt;CF_KV_*&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;临时邮箱功能另需在 &lt;strong&gt;Cloudflare 控制台&lt;/strong&gt;完成：部署 &lt;code&gt;cloudflare/&lt;/code&gt; 下的收信 Worker、建 D1 表、配置 Email Routing catch-all → Worker、配置 Turnstile。详见各文件内注释。&lt;/p&gt;
&lt;h2&gt;许可证&lt;a href=&quot;#许可证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本项目以 &lt;strong&gt;MIT 许可证&lt;/strong&gt; 开源（详见 &lt;a href=&quot;./LICENSE&quot;&gt;LICENSE&lt;/a&gt;）。你可以自由 fork、修改、部署为自己的博客，只需保留版权与许可证声明；商业用途亦可，风险自负。&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:博客模板</category><category>tag:Astro</category><category>tag:EdgeOne</category><category>tag:开源项目</category></item><item><title>零成本建站：免费获取永久二级域名并一键托管 Cloudflare 详尽指南</title><link>https://qiyuan.icu/en/post/free-domain-cloudflare</link><guid isPermaLink="false">en:free-domain-cloudflare</guid><description>利用 DNS 壳免费获取 10 年有效二级域名，并一键托管至 Cloudflare，实现零成本无限衍生子域名解析。</description><pubDate>Mon, 13 Jul 2026 08:10:00 GMT</pubDate><content:encoded>&lt;p&gt;在个人建站、网络服务测试、学习 Linux 运维或是搭建个人测试节点的场景下，购买正规的顶级域名（如 &lt;code&gt;.com&lt;/code&gt;）往往是一笔不必要的开销。许多人在寻找免费域名的过程中，经常遇到需要绑定海外 VISA 信用卡验证、或者是平台被封禁无法访问的情况。&lt;/p&gt;
&lt;p&gt;本文将为你详细剖析如何利用国内网络圈非常老牌、稳定的免费二级域名分发平台 —— &lt;strong&gt;DNS 壳 (my.dnshe.com)&lt;/strong&gt;，白嫖 3 个长达 10 年有效（或支持长期免费续约）的二级域名，并将其一键托管到大名鼎鼎的 Cloudflare 平台，实现零成本无限衍生子域名解析。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一、 准备工作与平台直达&lt;a href=&quot;#一-准备工作与平台直达&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在正式开始操作之前，请确保你已经准备好以下工具、账号以及直达链接：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;电子邮箱：&lt;/strong&gt; 建议准备一个常用的电子邮箱。为了提高效率，平台支持 Google 账号授权快捷登录。如果使用国内的 QQ 邮箱、网易邮箱，也完全支持常规输入注册。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;免费域名注册平台：&lt;/strong&gt; &lt;strong&gt;&lt;a href=&quot;https://my.dnshe.com&quot;&gt;DNS 壳官网直达 (my.dnshe.com)&lt;/a&gt;&lt;/strong&gt;。这是目前少数不需要绑定信用卡、仅凭邮箱即可直接获取免费域名的稳定平台。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;域名解析托管平台：&lt;/strong&gt; &lt;strong&gt;&lt;a href=&quot;https://www.cloudflare.com/&quot;&gt;Cloudflare 官网直达 (cloudflare.com)&lt;/a&gt;&lt;/strong&gt;。用于接管后续的域名 DNS 解析，并免费提供全球 CDN 加速、免费 SSL 安全证书以及基础防 DDOS 攻击保护。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;二、 第一阶段：注册并获取免费域名&lt;a href=&quot;#二-第一阶段注册并获取免费域名&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;早期的免费域名申请非常简单（例如曾经大火的 Freenom 平台），但随着政策收紧和滥用加剧，大量平台已经彻底关闭。目前 &lt;strong&gt;DNS 壳&lt;/strong&gt; 依然处于仅需邮箱验证即可免费获取域名的红利期，以下是详细的申请步骤。&lt;/p&gt;
&lt;h3&gt;1. 账号注册与登录&lt;a href=&quot;#1-账号注册与登录&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;使用浏览器打开 &lt;strong&gt;&lt;a href=&quot;https://my.dnshe.com&quot;&gt;DNS 壳 (my.dnshe.com)&lt;/a&gt;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;为了省去接收邮件验证码、设置复杂密码等繁琐步骤，&lt;strong&gt;强烈推荐在登录页直接点击 Google 账号图标进行快捷授权登录&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;如果你选择常规注册，则需要按提示依次填入自定义用户名、你的常用电子邮箱，点击发送验证码。登录你的邮箱查收并将验证码填回网页，最后设置一个安全的密码即可完成。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 免费域名的申请与后缀甄别&lt;a href=&quot;#2-免费域名的申请与后缀甄别&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;登录成功进入后台控制面板后，在左侧导航栏或主页明显位置找到并点击 &lt;strong&gt;“免费域名”&lt;/strong&gt; 选项。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;配额限制：&lt;/strong&gt; 该平台以前允许单个账号最多注册 5 个免费域名，随着资源收紧，当前每个账号&lt;strong&gt;最多只能注册 3 个&lt;/strong&gt;免费域名。虽然数量有所减少，但对于个人测试和日常折腾而言，3 个名额已经完全够用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;后缀与有效期选择：&lt;/strong&gt; 平台目前提供多种不同的二级域名后缀（例如 &lt;code&gt;.cc&lt;/code&gt;、&lt;code&gt;.cn&lt;/code&gt;、&lt;code&gt;.cd&lt;/code&gt; 等）。不同的后缀，其免费时效和规则有所不同：&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;10年有效期后缀：&lt;/strong&gt; 视频中博主重点演示了某点C后缀。这类后缀在成功注册后，系统会直接分配长达 &lt;strong&gt;10年&lt;/strong&gt; 的免费使用权（在后台可以直接看到到期时间为 2036 年），属于必抢的优质后缀。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;1年期续约后缀：&lt;/strong&gt; 另一部分后缀（如 &lt;code&gt;.cd&lt;/code&gt; 后缀）首次申请只给 &lt;strong&gt;1年&lt;/strong&gt; 有效期。但无需担心，平台制定了极其良心的续期规则：&lt;strong&gt;支持提前 185 天免费续约&lt;/strong&gt;。这意味着只要你在到期前半年的任意时间，登录平台点击一下续期，就可以实现变相的“永久免费”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注册操作：&lt;/strong&gt; 在域名前缀输入框内输入你想要的主体名称。系统会自动检测该前缀是否被他人占用。只要显示该域名可注册，点击 &lt;strong&gt;“注册”&lt;/strong&gt; 按钮，该域名便会瞬间绑定到你的账户下。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;避坑指南（重要）：&lt;/strong&gt;
在选择二级域名后缀时，请避开带有 &lt;code&gt;.com&lt;/code&gt; 结尾的二级后缀。因为 Cloudflare 为了防止黑产和滥用，&lt;strong&gt;目前部分特定二级后缀域名不支持直接托管到 Cloudflare (CF)&lt;/strong&gt;，在 CF 添加时会报错提示无法识别。请优先选择平台提供的 &lt;code&gt;.cc&lt;/code&gt;、&lt;code&gt;.biz&lt;/code&gt;、&lt;code&gt;.org&lt;/code&gt; 等其他原生二级后缀，这些可以完美通过 Cloudflare 的验证。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;三、 第二阶段：一键托管至 Cloudflare (CF)&lt;a href=&quot;#三-第二阶段一键托管至-cloudflare-cf&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;成功获取到免费的二级域名后，原平台自带的解析面板通常存在解析生效慢、功能单一的问题。为了获得极速的 DNS 生效体验，并白嫖免费的 SSL 证书（自动实现网页 https 绿色安全锁）和防攻击保护，我们需要将域名的解析权彻底移交给 Cloudflare。&lt;/p&gt;
&lt;h3&gt;1. 在 Cloudflare 中添加站点&lt;a href=&quot;#1-在-cloudflare-中添加站点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;打开并登录你的 &lt;strong&gt;&lt;a href=&quot;https://www.cloudflare.com/&quot;&gt;Cloudflare 账号&lt;/a&gt;&lt;/strong&gt;，进入控制面板，点击右上角的 &lt;strong&gt;“添加站点” (Add a Site)&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;将你在上一阶段从 &lt;strong&gt;DNS 壳&lt;/strong&gt; 申请到的完整二级域名（包含前缀和后缀，例如 &lt;code&gt;mytest.dnshe.cc&lt;/code&gt;）完整复制并粘贴到输入框中，点击 &lt;strong&gt;“继续”&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 选择免费方案&lt;a href=&quot;#2-选择免费方案&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;页面会跳转到付费方案选择页（包含专业版、商业版等选项）。直接下滑到页面最底部，找到并选择 &lt;strong&gt;“免费” (Free) 计划（0美元/月）&lt;/strong&gt;，然后点击确认。&lt;/li&gt;
&lt;li&gt;Cloudflare 会自动开始扫描该域名现有的 DNS 记录。扫描完成后，不需要做任何修改，直接点击前往下一步。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3. 修改域名服务器 (DNS Name Servers)&lt;a href=&quot;#3-修改域名服务器-dns-name-servers&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;此时，Cloudflare 会在页面上显眼地列出两条其专属的 &lt;strong&gt;名称服务器 (Name Servers)&lt;/strong&gt; 地址（例如：&lt;code&gt;dash.cloudflare.com&lt;/code&gt; 提供的两个官方 ns 记录）。点击旁边的复制按钮。&lt;/li&gt;
&lt;li&gt;重新返回 &lt;strong&gt;&lt;a href=&quot;https://my.dnshe.com&quot;&gt;DNS 壳 (my.dnshe.com)&lt;/a&gt;&lt;/strong&gt; 后台，在已购域名列表中找到你刚刚申请的那个域名，点击进入 &lt;strong&gt;“域名管理”&lt;/strong&gt; 或 &lt;strong&gt;“DNS 服务”&lt;/strong&gt; 设置面板。&lt;/li&gt;
&lt;li&gt;将原平台默认自带的 DNS 服务器地址全部删除，然后将你刚刚从 Cloudflare 复制的那两行新地址粘贴进去，保存修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4. 等待托管彻底激活&lt;a href=&quot;#4-等待托管彻底激活&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;修改完成后，回到 Cloudflare 页面，点击底部的 &lt;strong&gt;“我已更改名称服务器”&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;平台会提示正在验证中。由于二级域名的 DNS 刷新速度极快，通常在几分钟内、甚至几秒钟内即可完成同步。&lt;/li&gt;
&lt;li&gt;当看到 Cloudflare 后台该域名的状态从“待处理”变为 &lt;strong&gt;“活动中” (Active)&lt;/strong&gt;，且你绑定的邮箱收到 Cloudflare 发来的激活成功邮件时，即代表域名托管彻底成功。此后，你可以完全关闭 DNS 壳网站，所有的解析操作都在 Cloudflare 进行。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;四、 核心技术科普：什么是一级、二级、三级域名？&lt;a href=&quot;#四-核心技术科普什么是一级二级三级域名&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;许多刚接触网络建站的新手，经常分不清域名的层级关系。理清这个概念，能帮你把白嫖到的域名发挥出成倍的价值：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;一级域名（顶级域名）：&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;也就是我们在阿里云、腾讯云或 Namecheap 等注册商处，花钱购买的常规正规域名，形如 &lt;code&gt;baidu.com&lt;/code&gt;、&lt;code&gt;google.com&lt;/code&gt;。它的特点是点（&lt;code&gt;.&lt;/code&gt;）前面只有一段自定义的主体名称。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;二级域名：&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;在一级域名的前面再加一个自定义的前缀，中间用点隔开。例如 &lt;code&gt;mail.google.com&lt;/code&gt; 或 &lt;code&gt;pan.baidu.com&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;我们在 &lt;strong&gt;DNS 壳&lt;/strong&gt; 免费白嫖到的，本质上就是该平台所拥有的顶级域名下的&lt;strong&gt;二级域名&lt;/strong&gt;（如 &lt;code&gt;yourname.dnshe.cc&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;三级域名的“无限套娃”（核心价值所在）：&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;许多人存在误区，以为免费拿到一个二级域名后，就只能用来绑定一个网站或搭建一个服务。其实不然。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只要你把这个二级域名成功托管到了 Cloudflare，你就拥有了该域名向下的“绝对控制权”。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;你可以在 Cloudflare 的 DNS 解析面板中，点击“添加记录”，任意添加新的 A 记录、AAAA 记录或 CNAME 记录。比如你添加一个前缀叫 &lt;code&gt;blog&lt;/code&gt;，那么你就创造了一个属于你自己的三级域名：&lt;code&gt;blog.yourname.dnshe.cc&lt;/code&gt;。如果你再加一个前缀叫 &lt;code&gt;vpn&lt;/code&gt;，就会生成 &lt;code&gt;vpn.yourname.dnshe.cc&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结论：&lt;/strong&gt; 依靠 Cloudflare 的强大功能，你白嫖到的这 1 个二级域名，可以衍生出&lt;strong&gt;无限多个三级域名、四级域名&lt;/strong&gt;。你可以用不同的前缀去分别绑定博客、挂载个人网盘、搭建查 IP 的小工具、或者是做各类临时网络实验，实现真正的零成本、多用途、无限套娃。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;五、 总结与商业建议&lt;a href=&quot;#五-总结与商业建议&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;完美适用场景：&lt;/strong&gt; 这种通过 &lt;strong&gt;DNS 壳&lt;/strong&gt; 申请并托管到 &lt;strong&gt;Cloudflare&lt;/strong&gt; 的免费二级域名，具备极高的稳定性和极快的解析速度。非常适合技术爱好者用于折腾服务器测试、学习前端建站、临时网络实验或者搭建一些非公开的个人私有服务，是不折不扣的省钱利器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;商业正规化建议：&lt;/strong&gt; 尽管这种域名可以通过续约机制做到长期使用，但必须明确，域名的最终所有权仍然归属于分发平台。如果你计划搭建的是面向大众的商业网站、正规公司官网、核心电商系统或是打算长期运营的个人品牌博客，依然强烈建议前往正规注册商处购买一个专属的 &lt;code&gt;.com&lt;/code&gt; 顶级域名（目前一年费用仅需 50-60 元左右）。只有这样，在网站的安全稳定性、SEO 搜索引擎排名以及品牌保护上，才具有最坚实的法律与技术保障。&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>category:教程</category><category>tag:Cloudflare</category><category>tag:域名</category><category>tag:建站</category><category>tag:免费资源</category><category>tag:DNS</category></item><item><title>vue-effort-slider 教程：带 WebGL 火焰拖尾的 Vue 3 滑块组件</title><link>https://qiyuan.icu/en/post/vue-effort-slider</link><guid isPermaLink="false">en:vue-effort-slider</guid><description>手把手用 vue-effort-slider 实现一个受 Claude Code 启发的 Vue 3 滑块组件：实时 WebGL 火焰拖尾、平滑吸附动画、10+ 主题色可配、v-model 双向绑定。</description><pubDate>Sat, 11 Jul 2026 18:10:00 GMT</pubDate><content:encoded>&lt;h1&gt;vue-effort-slider 教程：带 WebGL 火焰拖尾的 Vue 3 滑块组件&lt;a href=&quot;#vue-effort-slider-教程带-webgl-火焰拖尾的-vue-3-滑块组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2&gt;这是什么&lt;a href=&quot;#这是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;vue-effort-slider&lt;/code&gt; 是一个&lt;strong&gt;高度可定制&lt;/strong&gt;的 Vue 3 滑块组件，最大特点是带&lt;strong&gt;实时 WebGL 火焰拖尾特效&lt;/strong&gt;——灵感来自 Claude Code 的 effort slider。当滑块拖到阈值（默认满值）时，会激活 GPU 加速的火焰拖尾；同时具备平滑的「吸附到刻度」动画、动态配色以及零运行时依赖。&lt;/p&gt;
&lt;p&gt;简单说，它把一个普通的 &lt;code&gt;0–100&lt;/code&gt; 滑块，做成了一个有科技感、可随手调外观的 AI「思考深度」选择器。&lt;/p&gt;
&lt;h2&gt;效果预览&lt;a href=&quot;#效果预览&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;拉到最大档位时的火焰拖尾效果：&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Max 档位的火焰拖尾效果&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;常规拖动的实时演示（动图）：&lt;/p&gt;
&lt;img src=&quot;/images/vue-effort-slider/slider.webp&quot; alt=&quot;vue-effort-slider 拖动演示&quot; /&gt;
&lt;h2&gt;核心特性&lt;a href=&quot;#核心特性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WebGL2 火焰拖尾&lt;/strong&gt;：滑块达到阈值时激活 GPU 实时渲染的火焰效果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;吸附刻度动画&lt;/strong&gt;：以 cubic ease-out 平滑吸附到最近的 25% 档位。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完全可主题化&lt;/strong&gt;：10+ 颜色属性，可定制滑块、拖尾、轨道、标签、辉光等每个视觉元素。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;v-model 支持&lt;/strong&gt;：标准 Vue 双向绑定（&lt;code&gt;modelValue&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;圆角裁切（Squircle）&lt;/strong&gt;：卡片与轨道采用 Apple 风格超椭圆裁切路径。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;响应式&lt;/strong&gt;：宽度接受像素值或 CSS 字符串（如 &lt;code&gt;&apos;100%&apos;&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;帮助气泡&lt;/strong&gt;：内置帮助图标 + teleport tooltip。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;轻量&lt;/strong&gt;：零运行时依赖，仅需 Vue 3 作为 peerDependency。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;安装&lt;a href=&quot;#安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; vue-effort-slider&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;快速开始&lt;a href=&quot;#快速开始&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;从零创建项目&lt;a href=&quot;#从零创建项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 1. 创建项目&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; create&lt;/span&gt;&lt;span&gt; vite@latest&lt;/span&gt;&lt;span&gt; my-slider&lt;/span&gt;&lt;span&gt; --&lt;/span&gt;&lt;span&gt; --template&lt;/span&gt;&lt;span&gt; vue&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; my-slider&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; vue-effort-slider&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改 &lt;code&gt;src/App.vue&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; setup&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { ref } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { EffortSlider } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/style.css&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; value&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;EffortSlider&lt;/span&gt;&lt;span&gt; v-model&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;value&quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;color:#71717a;text-align:center;margin-top:16px&quot;&lt;/span&gt;&lt;span&gt;&amp;gt;Current value: {{ value }}&amp;lt;/&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 2. 运行&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开 &lt;code&gt;http://localhost:5173&lt;/code&gt;，即可看到带火焰拖尾的滑块。&lt;/p&gt;
&lt;h3&gt;全局注册&lt;a href=&quot;#全局注册&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;// main.js&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { createApp } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; App &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;./App.vue&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; VueEffortSlider &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/style.css&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; app&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; createApp&lt;/span&gt;&lt;span&gt;(App)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;app.&lt;/span&gt;&lt;span&gt;use&lt;/span&gt;&lt;span&gt;(VueEffortSlider)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;app.&lt;/span&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;#app&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;EffortSlider&lt;/span&gt;&lt;span&gt; v-model&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;value&quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; setup&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { ref } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; value&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;局部引入&lt;a href=&quot;#局部引入&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;EffortSlider&lt;/span&gt;&lt;span&gt; v-model&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;value&quot;&lt;/span&gt;&lt;span&gt; label&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;思考深度&quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; setup&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { ref } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { EffortSlider } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/style.css&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; value&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;子模块按需引入（Tree-shaking）&lt;a href=&quot;#子模块按需引入tree-shaking&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;// 完整组件&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { EffortSlider } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/style.css&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// 仅组件&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { EffortSlider } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/EffortSlider&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// 单独引入 composable&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { useSliderState } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/useSliderState&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { useWebglFire } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/useWebglFire&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// 或批量从 composables 引入&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { useSliderState, useWebglFire } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/composables&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// 仅着色器（GLSL 源字符串）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { VERT, FRAG_SIM, FRAG_BLUR, FRAG_COMP } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/shaders&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;独立火焰 Canvas&lt;a href=&quot;#独立火焰-canvas&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用 &lt;code&gt;useWebglFire&lt;/code&gt; 可以把火焰拖尾效果加到任意 canvas 上：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;canvas&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;canvasRef&quot;&lt;/span&gt;&lt;span&gt; width&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;400&quot;&lt;/span&gt;&lt;span&gt; height&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;60&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;width:400px;height:60px;border-radius:10px;background:#0c0c0c&quot;&lt;/span&gt;&lt;span&gt; /&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt; setup&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { ref } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { useWebglFire } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;vue-effort-slider/useWebglFire&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; canvasRef&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; sliderValue&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; isActive&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ref&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;useWebglFire&lt;/span&gt;&lt;span&gt;(canvasRef, sliderValue, isActive, () &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; &apos;#a857f7&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;script&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;在线配置面板&lt;a href=&quot;#在线配置面板&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;组件配套一个在线配置面板 &lt;strong&gt;&lt;a href=&quot;https://slider.qiyuan.icu&quot;&gt;slider.qiyuan.icu&lt;/a&gt;&lt;/strong&gt;，可以实时调整每个 prop、预览火焰拖尾效果，并一键复制生成的代码（动图）：&lt;/p&gt;
&lt;img src=&quot;/images/vue-effort-slider/slider_27c_site_opt.webp&quot; alt=&quot;vue-effort-slider 实时配置面板&quot; /&gt;
&lt;p&gt;想直接上手调参，打开 &lt;a href=&quot;https://slider.qiyuan.icu&quot;&gt;slider.qiyuan.icu&lt;/a&gt; 即可。&lt;/p&gt;
&lt;h2&gt;Props&lt;a href=&quot;#props&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;基础 Props&lt;a href=&quot;#基础-props&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;







































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Prop&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;code&gt;modelValue&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Number&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;75&lt;/code&gt;&lt;/td&gt;&lt;td&gt;当前值，支持 &lt;code&gt;v-model&lt;/code&gt;，范围 &lt;code&gt;0&lt;/code&gt;–&lt;code&gt;100&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;width&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String | Number&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;376&lt;/code&gt;&lt;/td&gt;&lt;td&gt;组件宽度，像素数字或 CSS 字符串（如 &lt;code&gt;&apos;100%&apos;&lt;/code&gt;）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;label&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;Slider&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;顶部标签文字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;threshold&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Number&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;100&lt;/code&gt;&lt;/td&gt;&lt;td&gt;激活 WebGL 火焰效果的阈值，设 &lt;code&gt;100&lt;/code&gt; 即仅满值激活&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scaleLabels&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String[]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;[&apos;Faster&apos;, &apos;Smarter&apos;]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;轨道两端的刻度标签&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;statusLabels&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Object&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;{ level1:&apos;Minimal&apos;, level2:&apos;Low&apos;, level3:&apos;Medium&apos;, level4:&apos;High&apos;, level5:&apos;Max&apos; }&lt;/code&gt;&lt;/td&gt;&lt;td&gt;5 档状态文字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;background&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#000000&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;卡片背景色（任意 CSS 颜色）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;borderRadius&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String | Number&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td&gt;卡片圆角（像素）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;showHelp&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Boolean&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否显示帮助图标&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;helpText&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;Drag the slider to adjust AI thinking depth&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;点击帮助图标弹出的提示内容&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;颜色 Props&lt;a href=&quot;#颜色-props&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;所有颜色属性均接受任意合法 CSS 颜色值（hex / rgb / hsl 等）。&lt;/p&gt;







































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Prop&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;code&gt;labelColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#b0b0c7&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;顶部标签文字颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;statusColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#a1a1aa&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;未达阈值时的状态文字颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;activeColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#c084fc&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;达阈值时状态文字颜色（带辉光）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;highlightColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#c084fc&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;达阈值时滑块辉光颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;scaleLabelColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#b0b0b8&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;端点标签颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;helpIconColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#a1a1aa&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;帮助图标颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;trailColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#a857f7&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;WebGL 火焰拖尾颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;thumbColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#ffffff&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;滑块拖柄颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;trackColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#0c0c0c&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;轨道背景色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;dotColor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&apos;#494950&apos;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;轨道上 5 个装饰圆点颜色&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Events&lt;a href=&quot;#events&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&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;update:modelValue&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Number&lt;/code&gt;&lt;/td&gt;&lt;td&gt;拖动过程中持续触发，供 &lt;code&gt;v-model&lt;/code&gt; 使用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;change&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;Number&lt;/code&gt;&lt;/td&gt;&lt;td&gt;拖动结束、吸附动画完成后触发一次，参数为最终吸附值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;help&lt;/code&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;</content:encoded><category>category:笔记</category><category>tag:Vue3</category><category>tag:滑块组件</category><category>tag:WebGL</category><category>tag:前端组件</category><category>tag:火焰特效</category></item><item><title>RAG 超级教程：从原理到实战，用向量+重排模型搭出又准又省钱的 AI 问答</title><link>https://qiyuan.icu/en/post/rag-tutorial-siliconflow</link><guid isPermaLink="false">en:rag-tutorial-siliconflow</guid><description>一篇讲透 RAG 的长文：什么是 RAG、为什么需要它、工作流程、核心组件、与微调的区别、如何搭建与优化、常见开源方案、真实应用场景与误区，并以本博客「就这篇文章问 AI」为例走完一次完整问答。配套硅基流动两个免费模型 BAAI/bge-m3（嵌入）与 BAAI/bge-reranker-v2-m3（重排）。</description><pubDate>Fri, 10 Jul 2026 04:50:00 GMT</pubDate><content:encoded>&lt;p&gt;你有没有过这种冲动：网站有几百篇文章，想做一个「站内 AI 助手」，于是把&lt;strong&gt;全部文章正文&lt;/strong&gt;拼进 system prompt，再问问题？&lt;/p&gt;
&lt;p&gt;我最初也是这么干的。直到账单出来、回答开始胡说八道、长文章直接超出上下文窗口——才意识到这是条弯路。&lt;/p&gt;
&lt;p&gt;这篇教程把 RAG（Retrieval-Augmented Generation，检索增强生成）讲透：&lt;strong&gt;为什么不要「全塞进 prompt」，正确的姿势是什么，怎么用硅基流动免费的两个模型（嵌入 &lt;code&gt;BAAI/bge-m3&lt;/code&gt; + 重排 &lt;code&gt;BAAI/bge-reranker-v2-m3&lt;/code&gt;）搭出又准又省钱的问答系统。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;想白嫖这两个免费模型，可以用这个注册链接：&lt;a href=&quot;https://cloud.siliconflow.cn/i/MBwLMSrY&quot;&gt;https://cloud.siliconflow.cn/i/MBwLMSrY&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一、什么是 RAG（Why）&lt;a href=&quot;#一什么是-ragwhy&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;RAG = Retrieval-Augmented Generation（检索增强生成）&lt;/strong&gt;：在让大模型生成答案之前，先&lt;strong&gt;从外部知识库里检索出最相关的资料&lt;/strong&gt;，把这些资料连同问题一起交给大模型，让它「带着资料」回答。&lt;/p&gt;
&lt;p&gt;它的核心思想一句话：&lt;strong&gt;让模型「现查现答」，而不是指望它把全世界的 knowledge 都背在参数里。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;为什么会出现 RAG？&lt;a href=&quot;#为什么会出现-rag&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;大模型本身有几个天生的天花板：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;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;：哪怕有 200K 上下文，也装不下整个知识库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会一本正经地胡说（幻觉 / Hallucination）&lt;/strong&gt;：资料里没有的内容，它也会编得头头是道。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2020 年 Meta 等提出的 &lt;em&gt;Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/em&gt; 论文，就是为了让模型在回答时「先查资料」，从而缓解上述问题。后来随着向量数据库和 embedding 模型成熟，RAG 成了落地 LLM 应用最主流的范式。&lt;/p&gt;
&lt;h3&gt;它解决了什么问题 / 与传统大模型回答的区别&lt;a href=&quot;#它解决了什么问题--与传统大模型回答的区别&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;RAG 增强回答&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;实时检索的外部资料&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;能检索到&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;有资料约束，显著降低&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;一句话：&lt;strong&gt;传统大模型是「凭记忆考试」，RAG 是「开卷考试」。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二、为什么需要 RAG&lt;a href=&quot;#二为什么需要-rag&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;重点说痛点，这恰恰是 RAG 存在的理由：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;大模型知识会过时&lt;/strong&gt;：2024 年的模型答不了 2026 年的新政策、新 API。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;容易产生幻觉（Hallucination）&lt;/strong&gt;：没有资料时，模型会自信地编造事实、链接、数字。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无法直接访问企业私有数据&lt;/strong&gt;：内部 Wiki、合同、工单，模型根本不知道。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt 太长，Token 成本高&lt;/strong&gt;：把全站文章塞进 prompt，每次提问都重发几百万 token。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无法引用资料来源&lt;/strong&gt;：用户无法核实「这句话到底出自哪里」，不信任。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;RAG 把「记忆」和「查资料」解耦——模型负责推理和表达，知识存放在外面随时可更新。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、RAG 的工作流程&lt;a href=&quot;#三rag-的工作流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一张流程图就能说清：&lt;/p&gt;
&lt;pre&gt;flowchart LR
  Q[用户问题] --&amp;gt; E[Embedding 向量化]
  E --&amp;gt; V[(Vector Database 向量库)]
  V --&amp;gt; R[Retriever 检索 Top-K]
  R --&amp;gt; RR[Reranker 重排 可选]
  RR --&amp;gt; L[LLM 生成答案]&lt;/pre&gt;
&lt;p&gt;放到文字里就是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;用户问题&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Embedding（向量化：把问题变成向量）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Vector Database（向量数据库里存着所有资料的向量）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Retriever（检索：找出和问题向量最相似的若干段）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Reranker（重排，可选：对召回结果按真实相关性重新打分）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;LLM（带着最相关的资料生成答案）&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;每一步的作用：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Embedding&lt;/strong&gt;：把自然语言变成一串数字（向量），让「语义相似」可以被「数学距离」衡量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vector Database&lt;/strong&gt;：存放所有资料的向量，支持「按向量找最近邻」的高效检索。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retriever&lt;/strong&gt;：用问题的向量去库里做最近邻搜索，粗筛出候选（如 15 段）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reranker&lt;/strong&gt;：把「问题 + 每个候选」拼起来重新打分，精排出真正最相关的（如 5 段）。&lt;strong&gt;这是质量的关键一步。&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM&lt;/strong&gt;：只消费 top-N 资料，生成带出处的答案。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;四、RAG 的核心组件&lt;a href=&quot;#四rag-的核心组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1. Embedding（嵌入模型）&lt;a href=&quot;#1-embedding嵌入模型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;把文本映射成固定维度的稠密向量。维度常见的有 768 / 1024 / 1536。中文场景首选 &lt;strong&gt;BAAI/bge-m3&lt;/strong&gt;（1024 维，中英文都强），在硅基流动上&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;strong&gt;向量就是一串数字，代表一段文本在「语义空间」里的坐标。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;想象一张地图：每篇文章、每句话都是一个点，语义相近的句子在地图上离得近，不相关的离得远。但文字本身没法直接算「距离」，所以嵌入模型把它变成一串定长的数字，比如 1024 维的 &lt;code&gt;[0.12, -0.03, 0.87, …]&lt;/code&gt;。这串数字就是那句话的「坐标」。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;维度越高，能表达的语义越细腻（1024 维比 384 维装得下更多细微差别）。&lt;/li&gt;
&lt;li&gt;「语义相似」≈「向量距离近」：用&lt;strong&gt;余弦相似度&lt;/strong&gt;（两个向量夹角的余弦）衡量，越接近 1 越相关，越接近 0 越不相关。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;大模型「读」的是向量吗？——这是个常见误解&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是。要把两件事分清楚：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;向量只用来「检索」&lt;/strong&gt;：检索阶段，系统把问题也变成向量，去向量库里找「离得最近」的几个文本片段。这一步全是数学计算（算距离、排序），大模型不参与。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;真正喂给大模型的是「原文」&lt;/strong&gt;：检索完成后，系统把对应的&lt;strong&gt;原始文本片段&lt;/strong&gt;（注意，不是那串数字）拼进 prompt，大模型读的是这些文字，再据此生成答案。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;所以更准确的说法是：&lt;strong&gt;向量负责「找得准」，大模型负责「读得懂」。&lt;/strong&gt; 向量是给检索器用的「地址」，不是给大模型读的「内容」。也是因为这个分工，RAG 才能用很便宜的模型就答得准——大模型看到的只是精挑细选出来的几段文字。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2. Chunk（文本切分）&lt;a href=&quot;#2-chunk文本切分&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;把长文档切成小段（chunk）。RAG 的检索粒度是 chunk，不是整篇文档。切得太粗→召回不精准；太细→语义被切碎。常见甜区是 &lt;strong&gt;300~500 字&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;3. Vector Database（向量数据库）&lt;a href=&quot;#3-vector-database向量数据库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;专门存向量、支持 ANN（近似最近邻）检索的数据库。可选 Qdrant / Milvus / Chroma / FAISS，或直接在 Postgres 里用 &lt;strong&gt;pgvector&lt;/strong&gt; 扩展（本博客用的就是它）。&lt;/p&gt;
&lt;h3&gt;4. Retriever（检索器）&lt;a href=&quot;#4-retriever检索器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;负责「问题向量 → 候选 chunk」的粗筛。核心是余弦相似度 / 内积 / 欧氏距离。&lt;/p&gt;
&lt;h3&gt;5. Reranker（重排模型）&lt;a href=&quot;#5-reranker重排模型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Cross-Encoder 结构，比单纯余弦准得多。把 &lt;code&gt;query + 候选&lt;/code&gt; 一起喂进去打分。&lt;strong&gt;BAAI/bge-reranker-v2-m3&lt;/strong&gt; 在硅基流动上同样&lt;strong&gt;免费&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;6. LLM（生成模型）&lt;a href=&quot;#6-llm生成模型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;最后消费 top-N 资料生成答案。因为只看到几段，所以&lt;strong&gt;可以用更便宜的模型&lt;/strong&gt;，成本骤降。&lt;/p&gt;
&lt;p&gt;它们如何配合：&lt;strong&gt;嵌入模型&lt;/strong&gt;负责「入库」和「查」时的向量化；&lt;strong&gt;向量库+检索器&lt;/strong&gt;负责粗筛；&lt;strong&gt;重排模型&lt;/strong&gt;负责精排；&lt;strong&gt;LLM&lt;/strong&gt; 负责表达。前三者决定「找得准」，最后一个决定「答得好」。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、RAG 的优势&lt;a href=&quot;#五rag-的优势&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&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;strong&gt;知识实时更新&lt;/strong&gt;：往库里加新文档即可，不用动模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;降低 Token 消耗&lt;/strong&gt;：只送 top-N 段（几千 token），不是全库。&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;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;六、RAG 与微调（Fine-tuning）的区别&lt;a href=&quot;#六rag-与微调fine-tuning的区别&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&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;RAG&lt;/th&gt;&lt;th&gt;微调（Fine-tuning）&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;慢（需重新训练）&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;不支持，需重训&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;让模型学会某种「能力 / 风格」&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;strong&gt;「RAG + 微调」组合&lt;/strong&gt;——用 RAG 提供最新、可溯源的知识，用微调让模型掌握特定的表达风格或任务格式。不是二选一。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;七、如何搭建一个 RAG&lt;a href=&quot;#七如何搭建一个-rag&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;完整流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;准备文档&lt;/strong&gt;：博客文章、PDF、Wiki、工单等原始资料。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文本切分（Chunk）&lt;/strong&gt;：按语义切成 300~500 字的小段。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Embedding&lt;/strong&gt;：用 bge-m3 把每段变成向量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;写入向量数据库&lt;/strong&gt;：&lt;code&gt;chunk + 向量 + 元数据&lt;/code&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;：问题向量化后，在库里召回 Top-15。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重排（可选但推荐）&lt;/strong&gt;：用 bge-reranker 重排，取 Top-5。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;交给 LLM 回答&lt;/strong&gt;：把 Top-5 拼进 prompt，生成答案并附来源。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;八、常见开源方案（生态一览）&lt;a href=&quot;#八常见开源方案生态一览&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;框架&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LangChain（最流行，组件多）&lt;/li&gt;
&lt;li&gt;LlamaIndex（数据接入与索引见长）&lt;/li&gt;
&lt;li&gt;Haystack（企业级 pipeline）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Embedding 模型&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BGE（&lt;code&gt;BAAI/bge-m3&lt;/code&gt; 等，中英文强，硅基流动免费）&lt;/li&gt;
&lt;li&gt;Jina Embeddings&lt;/li&gt;
&lt;li&gt;Nomic Embed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;向量数据库&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qdrant（Go 写，性能好，易部署）&lt;/li&gt;
&lt;li&gt;Milvus（大规模分布式）&lt;/li&gt;
&lt;li&gt;Chroma（轻量，开发友好）&lt;/li&gt;
&lt;li&gt;FAISS（Meta 的向量检索库，常作底层引擎）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Reranker&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BGE Reranker（&lt;code&gt;BAAI/bge-reranker-v2-m3&lt;/code&gt;，免费）&lt;/li&gt;
&lt;li&gt;Jina Reranker&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;九、如何优化 RAG（最容易忽略、却最有价值）&lt;a href=&quot;#九如何优化-rag最容易忽略却最有价值&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Chunk 大小怎么选&lt;/strong&gt;：300~500 字是常见甜区；超长文档可先按标题/段落结构切。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chunk 是否需要重叠（Overlap）&lt;/strong&gt;：建议留 10%~20% 重叠，避免一句话被切断导致语义丢失。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid Search（混合检索）&lt;/strong&gt;：向量检索（语义）+ 关键词检索（BM25 / 全文索引）融合（RRF），召回率明显更高。本博客资源站就是「向量 + ilike 词法」双路 RRF 融合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata Filter（元数据过滤）&lt;/strong&gt;：先按时间、分类、作者过滤，再检索，能大幅降噪（比如只搜「2026 年的教程」）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top-K 如何设置&lt;/strong&gt;：召回 15~20、重排后取 5，是稳妥起点；太长反而引入噪声。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;是否需要 Reranker&lt;/strong&gt;：几乎总是「需要」——它能把余弦召回的误排纠正回来，质量提升肉眼可见。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;如何降低 Token 成本&lt;/strong&gt;：只送重排后的 Top-5；生成模型选便宜的；嵌入/重排用免费模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;如何提高召回率&lt;/strong&gt;：混合检索 + 元数据过滤 + 合理 chunk + overlap + 重排，四管齐下。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;十、RAG 的应用场景（适合什么场景）&lt;a href=&quot;#十rag-的应用场景适合什么场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;企业知识库&lt;/strong&gt;：员工问制度、流程、产品文档。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 客服&lt;/strong&gt;：检索历史工单与 FAQ，给出准确答复。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PDF 问答&lt;/strong&gt;：上传合同 / 论文 / 手册，直接问内容。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 文档助手&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;strong&gt;教育平台&lt;/strong&gt;：按教材章节答疑、出练习题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;博客问答&lt;/strong&gt;：就像本博客的「就这篇文章问 AI」——读者对某一篇提问，模型只基于该文作答。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;十一、常见误区&lt;a href=&quot;#十一常见误区&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RAG ≠ 微调&lt;/strong&gt;：一个补知识，一个学能力，别混为一谈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG 不会让模型变聪明&lt;/strong&gt;：它只是给资料，模型本身能力不变。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG 不是数据库&lt;/strong&gt;：它是「检索 + 生成」的范式，底层才用数据库。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG 不是搜索引擎&lt;/strong&gt;：它最终要生成自然语言答案，不是返回链接列表。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RAG 不一定比微调更适合所有场景&lt;/strong&gt;：要模型「学会新能力/新风格」还是得微调。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reranker 不是必须的&lt;/strong&gt;：但加了通常显著更好，属于「可选但强烈推荐」。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chunk 越大不一定越好&lt;/strong&gt;：过大反而稀释相关性、浪费 token。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;十二、实战案例：本博客的「就这篇文章问 AI」&lt;a href=&quot;#十二实战案例本博客的就这篇文章问-ai&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;以这个博客为例，真实架构是：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Markdown 文章（知识库）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ 自动切分（按段落 / 标题）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ bge-m3 生成 Embedding&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ 存入向量库（本博客用 Postgres + pgvector；你也可以用 Qdrant）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;用户提问&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ bge-m3 向量化问题&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ 向量库召回相关文章片段（Top-15）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ bge-reranker-v2-m3 重排（Top-5）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   ↓ 调用硅基流动的 DeepSeek（或更便宜的免费模型）生成答案&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;一次完整的问答流程&lt;/strong&gt;（伪代码，可直接落地）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;// ① 索引阶段（写文章时跑一次）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; chunks&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; splitByHeading&lt;/span&gt;&lt;span&gt;(markdownText);          &lt;/span&gt;&lt;span&gt;// 自动切分&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; vectors&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; embed&lt;/span&gt;&lt;span&gt;(chunks);                  &lt;/span&gt;&lt;span&gt;// bge-m3 向量化&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; db.&lt;/span&gt;&lt;span&gt;insert&lt;/span&gt;&lt;span&gt;(chunks.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; ({ content: c, embedding: vectors[i] })));&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// ② 提问阶段&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; queryVec&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; embed&lt;/span&gt;&lt;span&gt;([question]))[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;];        &lt;/span&gt;&lt;span&gt;// 问题向量化&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; candidates&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; db.&lt;/span&gt;&lt;span&gt;search&lt;/span&gt;&lt;span&gt;(queryVec, &lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;);     &lt;/span&gt;&lt;span&gt;// 向量库召回 Top-15&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; ranked&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; rerank&lt;/span&gt;&lt;span&gt;(question, candidates, &lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;span&gt;// bge-reranker 重排取 Top-5&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; context&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; ranked.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt; =&amp;gt;&lt;/span&gt;&lt;span&gt; candidates[r.index]).&lt;/span&gt;&lt;span&gt;join&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;\n\n&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// ③ 生成（只送 5 段，便宜又准）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; answer&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; chatWithLLM&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;请根据以下资料回答，并标注来源：&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;context&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;问题：${&lt;/span&gt;&lt;span&gt;question&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;嵌入与重排调用硅基流动的免费模型：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; SF_KEY&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; process.env.&lt;/span&gt;&lt;span&gt;SILICONFLOW_API_KEY&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// 嵌入：BAAI/bge-m3（免费，1024 维）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; function&lt;/span&gt;&lt;span&gt; embed&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;texts&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;[])&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; Promise&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;number&lt;/span&gt;&lt;span&gt;[][]&amp;gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; fetch&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;https://api.siliconflow.cn/v1/embeddings&apos;&lt;/span&gt;&lt;span&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    method: &lt;/span&gt;&lt;span&gt;&apos;POST&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    headers: { &lt;/span&gt;&lt;span&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span&gt;, Authorization: &lt;/span&gt;&lt;span&gt;`Bearer ${&lt;/span&gt;&lt;span&gt;SF_KEY&lt;/span&gt;&lt;span&gt;}`&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    body: &lt;/span&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;stringify&lt;/span&gt;&lt;span&gt;({ model: &lt;/span&gt;&lt;span&gt;&apos;BAAI/bge-m3&apos;&lt;/span&gt;&lt;span&gt;, input: texts, encoding_format: &lt;/span&gt;&lt;span&gt;&apos;float&apos;&lt;/span&gt;&lt;span&gt; }),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; j&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; r.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; j.data.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; any&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; d.embedding &lt;/span&gt;&lt;span&gt;as&lt;/span&gt;&lt;span&gt; number&lt;/span&gt;&lt;span&gt;[]);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;// 重排：BAAI/bge-reranker-v2-m3（免费）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; function&lt;/span&gt;&lt;span&gt; rerank&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;query&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;documents&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; string&lt;/span&gt;&lt;span&gt;[], &lt;/span&gt;&lt;span&gt;topN&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; r&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; fetch&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;https://api.siliconflow.cn/v1/rerank&apos;&lt;/span&gt;&lt;span&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    method: &lt;/span&gt;&lt;span&gt;&apos;POST&apos;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    headers: { &lt;/span&gt;&lt;span&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&apos;application/json&apos;&lt;/span&gt;&lt;span&gt;, Authorization: &lt;/span&gt;&lt;span&gt;`Bearer ${&lt;/span&gt;&lt;span&gt;SF_KEY&lt;/span&gt;&lt;span&gt;}`&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    body: &lt;/span&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;stringify&lt;/span&gt;&lt;span&gt;({ model: &lt;/span&gt;&lt;span&gt;&apos;BAAI/bge-reranker-v2-m3&apos;&lt;/span&gt;&lt;span&gt;, query, documents, top_n: topN }),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; r.&lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;span&gt;()).results; &lt;/span&gt;&lt;span&gt;// [{ index, relevance_score }] 已按分数排序&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;完整 SQL（pgvector 建表 + 余弦召回）和成本对比，见我另一篇短文；核心结论：&lt;strong&gt;嵌入 + 重排都免费，生成模型只看 Top-5（约 3000 token），比「全塞 prompt」省 99%+。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2&gt;小结&lt;a href=&quot;#小结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;RAG 的精髓就一句话：&lt;strong&gt;知识放向量库，提问时只送最相关的几段给大模型。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;嵌入用 &lt;code&gt;BAAI/bge-m3&lt;/code&gt;（免费）&lt;/li&gt;
&lt;li&gt;重排用 &lt;code&gt;BAAI/bge-reranker-v2-m3&lt;/code&gt;（免费）&lt;/li&gt;
&lt;li&gt;向量库用 pgvector / Qdrant&lt;/li&gt;
&lt;li&gt;生成模型只看 Top-5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;照这个结构搭，你的 AI 问答会&lt;strong&gt;更准、更快、便宜一个数量级&lt;/strong&gt;。想白嫖这两个免费模型，注册链接：&lt;a href=&quot;https://cloud.siliconflow.cn/i/MBwLMSrY&quot;&gt;https://cloud.siliconflow.cn/i/MBwLMSrY&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文代码可直接复用——事实上这个博客自己的「就这篇文章问 AI」功能，跑的就是同一套管线。&lt;/p&gt;</content:encoded><category>category:教程</category><category>tag:RAG</category><category>tag:硅基流动</category><category>tag:向量模型</category><category>tag:重排模型</category><category>tag:AI</category></item><item><title>Roogoo 虚拟卡开卡教程 2026：0 开卡费、费率说明与 ChatGPT 订阅实测</title><link>https://qiyuan.icu/en/post/roogoo-virtual-card-tutorial-2026</link><guid isPermaLink="false">en:roogoo-virtual-card-tutorial-2026</guid><description>整理 2026 年 Roogoo 虚拟卡的注册、实名认证、开卡、充值和 ChatGPT/Claude 订阅流程，并统一使用邀请码 zd9kgv 对应注册链接。</description><pubDate>Sun, 05 Jul 2026 04:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2026 年如果你还在找一张能拿来订阅 ChatGPT、Claude、Gemini，或者做日常跨境消费的 U 卡，Roogoo 依然算是比较热门的一类方案。它的逻辑不复杂，本质上就是你先注册账号、完成实名认证、充值 USDT、申请虚拟卡，然后再把这张卡拿去做海外线上支付。&lt;/p&gt;
&lt;p&gt;很多人真正卡住的地方，不是“有没有入口”，而是下面这些问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Roogoo 到底是什么卡，和普通虚拟信用卡有什么区别&lt;/li&gt;
&lt;li&gt;首张卡是不是真的 0 开卡费，后面还有哪些费用&lt;/li&gt;
&lt;li&gt;三张卡应该怎么选，哪张适合 ChatGPT 和 Claude&lt;/li&gt;
&lt;li&gt;注册、KYC、充值、开卡到底按什么顺序走&lt;/li&gt;
&lt;li&gt;明明开卡了，为什么绑卡时还是被拒&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇文章就按这条线把流程重新梳理一遍，并把文中注册链接统一改成下面这个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
  &lt;a href=&quot;https://wap.roogoo.money/register?inviteCode=zd9kgv&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;img src=&quot;https://wap.roogoo.money/icons/icon-1024.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; /&gt;
          &lt;span&gt;wap.roogoo.money&lt;/span&gt;
        &lt;/div&gt;
        &lt;h3&gt;Roogoo - 无边界支付服务平台&lt;/h3&gt;
        &lt;p&gt;Roogoo 是一个无边界支付服务平台。Roogoo 卡片打造全球Web3消费引擎,充值加密货币,可畅享全球无国界支付。Roogoo 为我们的商家和开发人员提供了许多产品，来接受来自客户的加密资产支付，以及通过批量接口向你的客户付款。智能拦截伪造的、被行业拉黑的USDT等加密资产，体验无与伦比的收款和付款的便捷与安全。&lt;/p&gt;
        &lt;div&gt;
          &lt;span&gt;https://wap.roogoo.money/register?inviteCode=zd9kgv&lt;/span&gt;
           
        &lt;/div&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;邀请码：&lt;code&gt;zd9kgv&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;先给结论：Roogoo 值不值得开&lt;a href=&quot;#先给结论roogoo-值不值得开&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果你想要的是一张自己能掌控、能做海外订阅和跨境支付的虚拟卡，Roogoo 还是值得看的，尤其适合下面这几类人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想订阅 ChatGPT Plus、Claude Pro、Gemini Advanced 这类海外 AI 服务&lt;/li&gt;
&lt;li&gt;没有海外银行卡，但能接受实名认证和 USDT 充值&lt;/li&gt;
&lt;li&gt;想自己控制卡内余额，不想每次都找别人代充&lt;/li&gt;
&lt;li&gt;想把 AI 订阅、海淘、小额跨境消费放到同一张卡上管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太适合的人也很明确：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不想实名&lt;/li&gt;
&lt;li&gt;希望永久 0 成本、0 手续费&lt;/li&gt;
&lt;li&gt;完全不想碰 USDT、链上转账或买币流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从实用角度看，Roogoo 的核心优势不是“绝对便宜”，而是“流程相对清楚、开卡门槛相对可控、适合 AI 订阅场景”。对于很多没有海外信用卡的人来说，它比直接用国内银行卡去碰运气要现实得多。&lt;/p&gt;
&lt;h2&gt;2026 实测信息速览&lt;a href=&quot;#2026-实测信息速览&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&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;常见活动为 0 开卡费&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;开卡首充&lt;/td&gt;&lt;td&gt;通常 10 USD 起&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;新用户权益&lt;/td&gt;&lt;td&gt;常见为新用户 0 费率、开卡返现 1 USD&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;充值方式&lt;/td&gt;&lt;td&gt;以 USDT 为主&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;卡组织&lt;/td&gt;&lt;td&gt;常见为 Visa / Mastercard&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;适合场景&lt;/td&gt;&lt;td&gt;ChatGPT、Claude、Gemini、海淘、跨境消费&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;p&gt;注册链接统一使用这一条：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
  &lt;a href=&quot;https://wap.roogoo.money/register?inviteCode=zd9kgv&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;img src=&quot;https://wap.roogoo.money/icons/icon-1024.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; /&gt;
          &lt;span&gt;wap.roogoo.money&lt;/span&gt;
        &lt;/div&gt;
        &lt;h3&gt;Roogoo - 无边界支付服务平台&lt;/h3&gt;
        &lt;p&gt;Roogoo 是一个无边界支付服务平台。Roogoo 卡片打造全球Web3消费引擎,充值加密货币,可畅享全球无国界支付。Roogoo 为我们的商家和开发人员提供了许多产品，来接受来自客户的加密资产支付，以及通过批量接口向你的客户付款。智能拦截伪造的、被行业拉黑的USDT等加密资产，体验无与伦比的收款和付款的便捷与安全。&lt;/p&gt;
        &lt;div&gt;
          &lt;span&gt;https://wap.roogoo.money/register?inviteCode=zd9kgv&lt;/span&gt;
           
        &lt;/div&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Roogoo 是什么？和普通虚拟卡有什么区别&lt;a href=&quot;#roogoo-是什么和普通虚拟卡有什么区别&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Roogoo 本质上是一个支持加密货币充值，再向用户发放虚拟卡的平台。你往平台里充值 USDT，平台给你一张可用于线上支付的 Visa 或 Mastercard 虚拟卡，再用这张卡去绑定海外服务。&lt;/p&gt;
&lt;p&gt;它和很多人理解中的“银行虚拟信用卡”不是一回事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;传统银行虚拟卡更依赖本地银行账户、地区限制和发卡审核&lt;/li&gt;
&lt;li&gt;U 卡平台更偏向“充值后消费”的模式，适合没有海外信用卡的人&lt;/li&gt;
&lt;li&gt;在 OpenAI、Anthropic、海外 SaaS 等场景里，U 卡成功率通常会比普通国内银行卡高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说，Roogoo 这类平台不是替代银行卡的万能工具，而是给“海外线上支付”提供一条更现实的路径。&lt;/p&gt;
&lt;h2&gt;Roogoo 靠不靠谱？安全吗？&lt;a href=&quot;#roogoo-靠不靠谱安全吗&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;判断这类平台值不值得用，不要只盯着宣传页里的“0 开卡费”，更要看下面几件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;是否要求实名认证&lt;/li&gt;
&lt;li&gt;是否有相对明确的合规信息披露&lt;/li&gt;
&lt;li&gt;是否能看到真实的卡种、费率和使用规则&lt;/li&gt;
&lt;li&gt;是否有真实用户在常见场景里成功消费&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Roogoo 至少不是那种“什么都不要、随便开卡”的野路子平台。对支付类产品来说，愿意做 KYC、愿意要求邮箱验证、愿意展示卡种和费用规则，反而更像是一个长期运营的平台。&lt;/p&gt;
&lt;p&gt;但要说“绝对安全”，那也不现实。虚拟卡平台本来就有行业变化、费率调整和风控收紧的风险，所以更稳妥的用法一直只有一句话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;用多少充多少，不把它当存钱账户。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Roogoo 适合谁？三张卡怎么选&lt;a href=&quot;#roogoo-适合谁三张卡怎么选&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;很多人不是不会注册，而是卡种一开始就选错了，后面再怎么换 IP、改地址也可能白折腾。&lt;/p&gt;
&lt;p&gt;比较常见的理解是这样：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尊享卡：更偏 AI 订阅和日常跨境支付&lt;/li&gt;
&lt;li&gt;无界卡：更偏普通消费、大额差旅或通用消费&lt;/li&gt;
&lt;li&gt;乐享卡：也适合线上订阅和日常国际消费&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的核心目标是订阅 ChatGPT、Claude、Gemini 这类服务，优先看尊享卡或乐享卡会更稳。&lt;/p&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;/td&gt;&lt;td&gt;MasterCard&lt;/td&gt;&lt;td&gt;Visa&lt;/td&gt;&lt;td&gt;Visa&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;常见定位&lt;/td&gt;&lt;td&gt;AI 订阅 + 日常消费&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;常见活动下 0 USD&lt;/td&gt;&lt;td&gt;常见活动下 0 USD&lt;/td&gt;&lt;td&gt;常见活动下 0 USD&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;开卡首充&lt;/td&gt;&lt;td&gt;10 USD 起&lt;/td&gt;&lt;td&gt;10 USD 起&lt;/td&gt;&lt;td&gt;10 USD 起&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;交易费&lt;/td&gt;&lt;td&gt;常见约 1%&lt;/td&gt;&lt;td&gt;常见约 0.8%&lt;/td&gt;&lt;td&gt;常见约 1%&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;Apple Pay / Google Pay / 支付宝&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;OpenAI / Claude / AI 订阅&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;/p&gt;
&lt;ul&gt;
&lt;li&gt;上表只是整理常见信息，最终以你注册后的页面为准&lt;/li&gt;
&lt;li&gt;费率、卡种支持范围、活动权益都可能动态调整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只想记最简单的选卡逻辑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;订阅 ChatGPT / Claude：先看尊享卡或乐享卡&lt;/li&gt;
&lt;li&gt;普通跨境消费：再考虑无界卡&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;开卡前要准备什么&lt;a href=&quot;#开卡前要准备什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;很多人看教程只关心“点哪里注册”，但真正顺不顺，主要看准备是否到位。正式开卡前，建议先准备这四样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一个能稳定接收验证码的邮箱&lt;/li&gt;
&lt;li&gt;身份证、护照等实名认证材料&lt;/li&gt;
&lt;li&gt;一笔用于开卡首充的 USDT&lt;/li&gt;
&lt;li&gt;后续订阅海外服务时要用的网络环境和账单地址方案&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只是临时看看页面，注册账号问题不大；但只要你准备真正开卡，就别跳过 KYC，也别等到最后一步才想“USDT 从哪来”。&lt;/p&gt;
&lt;h2&gt;Roogoo 入口、邀请码和使用方式&lt;a href=&quot;#roogoo-入口邀请码和使用方式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本文统一使用这个链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
  &lt;a href=&quot;https://wap.roogoo.money/register?inviteCode=zd9kgv&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;img src=&quot;https://wap.roogoo.money/icons/icon-1024.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; /&gt;
          &lt;span&gt;wap.roogoo.money&lt;/span&gt;
        &lt;/div&gt;
        &lt;h3&gt;Roogoo - 无边界支付服务平台&lt;/h3&gt;
        &lt;p&gt;Roogoo 是一个无边界支付服务平台。Roogoo 卡片打造全球Web3消费引擎,充值加密货币,可畅享全球无国界支付。Roogoo 为我们的商家和开发人员提供了许多产品，来接受来自客户的加密资产支付，以及通过批量接口向你的客户付款。智能拦截伪造的、被行业拉黑的USDT等加密资产，体验无与伦比的收款和付款的便捷与安全。&lt;/p&gt;
        &lt;div&gt;
          &lt;span&gt;https://wap.roogoo.money/register?inviteCode=zd9kgv&lt;/span&gt;
           
        &lt;/div&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;邀请码：&lt;code&gt;zd9kgv&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果页面已经自动带出邀请码，就不要手改，直接保持 &lt;code&gt;zd9kgv&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;从使用方式看，Roogoo 通常支持网页或 H5 入口完成注册和大部分操作，不一定必须先安装 App。实名认证时，可能会按页面要求调用手机相机或扫码验证，跟着流程一步步来就行。&lt;/p&gt;
&lt;h2&gt;USDT 从哪来？首次充多少更合适&lt;a href=&quot;#usdt-从哪来首次充多少更合适&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Roogoo 这类平台的充值逻辑一般都是先拿到 USDT，再转入平台钱包。对第一次接触的人来说，这里最容易踩坑的不是“平台难用”，而是链和币种没对上。&lt;/p&gt;
&lt;p&gt;首次充值，建议至少考虑下面三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认平台支持的币种是不是 USDT&lt;/li&gt;
&lt;li&gt;确认当前支持的链路是不是你准备走的那条链&lt;/li&gt;
&lt;li&gt;第一次尽量先做小额测试，再走正式金额&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;虽然很多时候开卡首充门槛是 10 USD，但如果你后面马上还要订阅 ChatGPT Plus，建议不要只卡最低值。因为很多订阅场景会有预授权、小额验证或税费波动，卡里多留一点更稳。&lt;/p&gt;
&lt;p&gt;比较保守的思路是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只想开卡看看：按最低要求走&lt;/li&gt;
&lt;li&gt;准备马上绑 AI 订阅：预留大于月费的缓冲金额&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Roogoo 虚拟卡开卡教程：6 步走完&lt;a href=&quot;#roogoo-虚拟卡开卡教程6-步走完&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;整体流程其实很清楚：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注册 -&amp;gt; 实名 -&amp;gt; 充值 -&amp;gt; 选卡 -&amp;gt; 审核 -&amp;gt; 消费&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面按实际顺序拆开说。&lt;/p&gt;
&lt;h3&gt;步骤 1：注册 Roogoo 账号&lt;a href=&quot;#步骤-1注册-roogoo-账号&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;先打开链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
  &lt;a href=&quot;https://wap.roogoo.money/register?inviteCode=zd9kgv&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;img src=&quot;https://wap.roogoo.money/icons/icon-1024.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; /&gt;
          &lt;span&gt;wap.roogoo.money&lt;/span&gt;
        &lt;/div&gt;
        &lt;h3&gt;Roogoo - 无边界支付服务平台&lt;/h3&gt;
        &lt;p&gt;Roogoo 是一个无边界支付服务平台。Roogoo 卡片打造全球Web3消费引擎,充值加密货币,可畅享全球无国界支付。Roogoo 为我们的商家和开发人员提供了许多产品，来接受来自客户的加密资产支付，以及通过批量接口向你的客户付款。智能拦截伪造的、被行业拉黑的USDT等加密资产，体验无与伦比的收款和付款的便捷与安全。&lt;/p&gt;
        &lt;div&gt;
          &lt;span&gt;https://wap.roogoo.money/register?inviteCode=zd9kgv&lt;/span&gt;
           
        &lt;/div&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后按页面提示填写邮箱、验证码和密码完成注册。注册阶段本身不复杂，关键是别把“注册成功”误以为“已经能直接消费”。&lt;/p&gt;
&lt;p&gt;真正会影响能不能开卡的，是后面的实名、充值和卡种选择。&lt;/p&gt;
&lt;h3&gt;步骤 2：完成实名认证&lt;a href=&quot;#步骤-2完成实名认证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;注册完成后，优先去把实名认证做完。通常需要上传证件并做人脸验证。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Roogoo 实名认证流程示意&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;很多人会对 KYC 有抗拒，但对这类支付产品来说，愿意做实名认证反而比完全不认证的平台更正常。你后面如果要查看卡号、长期使用或者处理风控问题，实名都是基础。&lt;/p&gt;
&lt;p&gt;一般建议：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;证件照片尽量清晰&lt;/li&gt;
&lt;li&gt;姓名、出生日期等信息按真实资料填写&lt;/li&gt;
&lt;li&gt;网络环境保持稳定，别一会儿切来切去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以少走很多回头路。&lt;/p&gt;
&lt;h3&gt;步骤 3：充值 USDT&lt;a href=&quot;#步骤-3充值-usdt&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;KYC 完成后，再去处理充值。这里最重要的不是“充多少”，而是下面三项必须核对清楚：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;币种&lt;/li&gt;
&lt;li&gt;链路&lt;/li&gt;
&lt;li&gt;到账状态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第一次转入时，最稳妥的方法一直都是先小额测试。只要网络选错、链选错或者币种没核对清楚，后面就不是“麻烦一点”的问题，而可能是直接无法找回。&lt;/p&gt;
&lt;h3&gt;步骤 4：选择卡种并开卡&lt;a href=&quot;#步骤-4选择卡种并开卡&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;充值到位后，进入开卡页，看当前卡种和活动说明。很多人最关心的“0 开卡费”“新用户 0 费率”“开卡返现 1 USD”一般都会在这一步看到。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Roogoo 开卡福利与活动页示意&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;如果你的目标是 AI 订阅，优先看尊享卡或乐享卡，不要只为了表面费率低一点，就直接选到不适合 OpenAI / Claude 的卡种。&lt;/p&gt;
&lt;h3&gt;步骤 5：提交资料并等待审核&lt;a href=&quot;#步骤-5提交资料并等待审核&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;选好卡种之后，按页面要求提交资料并等待审核。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Roogoo 开卡审核页示意&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;这一步的关键不是“快不快”，而是信息尽量保持真实、完整、前后一致。很多支付类审核被卡住，往往不是系统故障，而是资料逻辑对不上。&lt;/p&gt;
&lt;h3&gt;步骤 6：查看卡号并试消费&lt;a href=&quot;#步骤-6查看卡号并试消费&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;审核通过后，就能看到卡片页面，卡内通常也会显示对应余额。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Roogoo 卡片页面示意&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;查看卡号、有效期和 CVV 时，通常还需要邮箱验证码确认：&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Roogoo 查看 CVV 时的邮箱验证示意&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;这一块一定注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把完整卡号和 CVV 发到聊天工具&lt;/li&gt;
&lt;li&gt;不要在录屏、直播、监控明显的环境里查看&lt;/li&gt;
&lt;li&gt;不要把虚拟卡截图长期存在随手可见的位置&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;用 Roogoo 订阅 ChatGPT、Claude、Gemini&lt;a href=&quot;#用-roogoo-订阅-chatgptclaudegemini&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这部分才是大多数人真正关心的重点。&lt;/p&gt;
&lt;p&gt;很多人会搜索“Roogoo 能不能绑 GPT”“Roogoo 能不能绑 Claude”，其实答案从来都不是单纯的“能”或“不能”，而是要看下面四件事是不是一起满足：&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;h3&gt;ChatGPT Plus&lt;a href=&quot;#chatgpt-plus&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果你要订阅 ChatGPT Plus，建议先把这些准备好：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;适合 AI 订阅的卡种&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;很多失败并不是卡本身不行，而是验证扣款、地址信息或支付环境出了问题。尤其是在 Stripe 这类风控比较严格的支付环境里，卡、IP、账单信息和历史行为会一起影响结果。&lt;/p&gt;
&lt;h3&gt;Claude Pro / Gemini Advanced&lt;a href=&quot;#claude-pro--gemini-advanced&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Claude Pro 和 Gemini Advanced 的思路也类似。你同样要先保证卡种适合、余额够用、支付环境稳定。&lt;/p&gt;
&lt;p&gt;如果你已经在 ChatGPT 上踩过坑，到了 Claude 或 Gemini 这边也不要急着一直重试。因为连续触发支付失败，有时候会让后续成功率更低。&lt;/p&gt;
&lt;h3&gt;订阅前自检清单&lt;a href=&quot;#订阅前自检清单&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;正式支付之前，建议你自己对照下面这张清单过一遍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否使用了尊享卡或乐享卡&lt;/li&gt;
&lt;li&gt;卡里余额是否覆盖月费加验证扣款&lt;/li&gt;
&lt;li&gt;账单地址和邮编是否合理&lt;/li&gt;
&lt;li&gt;当前网络出口是否稳定&lt;/li&gt;
&lt;li&gt;最近是否已经连续失败很多次&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;绑卡失败 / 支付被拒怎么办&lt;a href=&quot;#绑卡失败--支付被拒怎么办&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;很多人看到 &lt;code&gt;Your card has been declined&lt;/code&gt; 就以为卡废了，其实未必。常见原因通常是下面这些：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;卡种选错&lt;/li&gt;
&lt;li&gt;卡内余额不足&lt;/li&gt;
&lt;li&gt;账单地址或邮编填写不合理&lt;/li&gt;
&lt;li&gt;当前网络环境异常&lt;/li&gt;
&lt;li&gt;商户风控触发&lt;/li&gt;
&lt;li&gt;连续多次失败后进入更严格审核&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;比较实用的排查顺序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先确认是不是用了尊享卡或乐享卡&lt;/li&gt;
&lt;li&gt;再确认卡里余额是否覆盖月费和预授权&lt;/li&gt;
&lt;li&gt;再检查账单地址和邮编&lt;/li&gt;
&lt;li&gt;最后再排查网络出口和风控问题&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果已经连续失败三次以上，别一直硬刷，停一段时间后再试，通常更稳。&lt;/p&gt;
&lt;h2&gt;常见费用怎么理解&lt;a href=&quot;#常见费用怎么理解&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;很多人只看“0 开卡费”，但真实使用成本不只这一项。真正应该关注的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首张卡是不是免费&lt;/li&gt;
&lt;li&gt;第二张卡是否收费&lt;/li&gt;
&lt;li&gt;普通交易费是多少&lt;/li&gt;
&lt;li&gt;非美元区消费是否有跨境费&lt;/li&gt;
&lt;li&gt;小额授权是否有额外费用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以正确理解应该是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;首张卡有机会做到低门槛开卡，但后续真实成本还是要看你选的卡种和消费场景。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你只是偶尔订阅一次 AI 服务，成本感知可能没那么强；如果你准备长期拿来做订阅、海淘、跨境消费，费率结构就必须提前看清楚。&lt;/p&gt;
&lt;h2&gt;安全使用建议&lt;a href=&quot;#安全使用建议&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Roogoo 这类虚拟卡最怕的不是“不会注册”，而是“卡开出来以后用得太随意”。比较稳妥的习惯有这几条：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用多少充多少，不长期囤大额余额&lt;/li&gt;
&lt;li&gt;首次充值先小额测试&lt;/li&gt;
&lt;li&gt;订阅前确认卡种、余额和账单信息&lt;/li&gt;
&lt;li&gt;连续拒付时先停下来排查，不要无脑反复提交&lt;/li&gt;
&lt;li&gt;涉及卡号和 CVV 时，避免录屏、群聊和公开环境&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你把它当支付工具用，风险会低很多；你如果把它当长期余额账户去放钱，那就不是它最适合的用法了。&lt;/p&gt;
&lt;h2&gt;总结：现在开 Roogoo 还来得及吗&lt;a href=&quot;#总结现在开-roogoo-还来得及吗&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果你的需求是自己搞定 AI 订阅和海外线上支付，那现在开 Roogoo 依然不算晚。它不是什么“无敌神卡”，但在没有海外银行卡的前提下，确实是一条相对现实的路。&lt;/p&gt;
&lt;p&gt;把全文压缩成一句话就是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注册 Roogoo 账号 -&amp;gt; 完成 KYC -&amp;gt; 充值 USDT -&amp;gt; 选尊享卡或乐享卡 -&amp;gt; 开卡 -&amp;gt; 再去绑 ChatGPT / Claude / Gemini。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本文统一使用的入口如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
  &lt;a href=&quot;https://wap.roogoo.money/register?inviteCode=zd9kgv&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;img src=&quot;https://wap.roogoo.money/icons/icon-1024.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; /&gt;
          &lt;span&gt;wap.roogoo.money&lt;/span&gt;
        &lt;/div&gt;
        &lt;h3&gt;Roogoo - 无边界支付服务平台&lt;/h3&gt;
        &lt;p&gt;Roogoo 是一个无边界支付服务平台。Roogoo 卡片打造全球Web3消费引擎,充值加密货币,可畅享全球无国界支付。Roogoo 为我们的商家和开发人员提供了许多产品，来接受来自客户的加密资产支付，以及通过批量接口向你的客户付款。智能拦截伪造的、被行业拉黑的USDT等加密资产，体验无与伦比的收款和付款的便捷与安全。&lt;/p&gt;
        &lt;div&gt;
          &lt;span&gt;https://wap.roogoo.money/register?inviteCode=zd9kgv&lt;/span&gt;
           
        &lt;/div&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;邀请码：&lt;code&gt;zd9kgv&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;常见问题 FAQ&lt;a href=&quot;#常见问题-faq&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Q1：Roogoo 官网、App、H5 入口怎么选？&lt;a href=&quot;#q1roogoo-官网apph5-入口怎么选&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;直接从本文注册链接进入即可。多数情况下，网页或 H5 就足够完成注册和主要操作，不一定必须先安装 App。具体页面入口以平台实时显示为准。&lt;/p&gt;
&lt;h3&gt;Q2：邀请码必须填吗？&lt;a href=&quot;#q2邀请码必须填吗&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果页面已经自动带出邀请码，保持 &lt;code&gt;zd9kgv&lt;/code&gt; 即可，不要手改。本文统一使用的注册链接是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;
  &lt;a href=&quot;https://wap.roogoo.money/register?inviteCode=zd9kgv&quot; target=&quot;_blank&quot;&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;div&gt;
          &lt;img src=&quot;https://wap.roogoo.money/icons/icon-1024.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; /&gt;
          &lt;span&gt;wap.roogoo.money&lt;/span&gt;
        &lt;/div&gt;
        &lt;h3&gt;Roogoo - 无边界支付服务平台&lt;/h3&gt;
        &lt;p&gt;Roogoo 是一个无边界支付服务平台。Roogoo 卡片打造全球Web3消费引擎,充值加密货币,可畅享全球无国界支付。Roogoo 为我们的商家和开发人员提供了许多产品，来接受来自客户的加密资产支付，以及通过批量接口向你的客户付款。智能拦截伪造的、被行业拉黑的USDT等加密资产，体验无与伦比的收款和付款的便捷与安全。&lt;/p&gt;
        &lt;div&gt;
          &lt;span&gt;https://wap.roogoo.money/register?inviteCode=zd9kgv&lt;/span&gt;
           
        &lt;/div&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Q3：KYC 一般多久通过？&lt;a href=&quot;#q3kyc-一般多久通过&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这件事没有绝对固定时间，通常和资料清晰度、当时风控压力、系统审核速度有关。资料真实、清晰、前后一致，通常会更顺。&lt;/p&gt;
&lt;h3&gt;Q4：USDT 充值多久到账？&lt;a href=&quot;#q4usdt-充值多久到账&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;主要看你走的链路、链上拥堵情况和平台入账速度。第一次一定建议先小额测试，不要一上来就直接大额转。&lt;/p&gt;
&lt;h3&gt;Q5：首张卡真的 0 开卡费吗？&lt;a href=&quot;#q5首张卡真的-0-开卡费吗&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;很多时候会有首张卡 0 开卡费的活动，但活动是否存在、具体针对哪张卡、持续多久，都要以你看到的页面为准。&lt;/p&gt;
&lt;h3&gt;Q6：新用户 0 费率是什么？&lt;a href=&quot;#q6新用户-0-费率是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;通常是新用户活动的一部分，但适用时间、适用范围和卡种限制都可能调整，最好以平台实时活动页为准。&lt;/p&gt;
&lt;h3&gt;Q7：开卡返现 1 USD 怎么拿？&lt;a href=&quot;#q7开卡返现-1-usd-怎么拿&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一般也是活动权益的一部分。核心思路不是死记“必返”，而是先看你当前页面有没有这个活动，再按平台要求完成对应步骤。&lt;/p&gt;
&lt;h3&gt;Q8：哪张卡适合订 ChatGPT？&lt;a href=&quot;#q8哪张卡适合订-chatgpt&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;优先看尊享卡或乐享卡。无界卡更偏普通消费，不建议拿它作为 OpenAI / Claude 订阅的首选。&lt;/p&gt;
&lt;h3&gt;Q9：不想 KYC，有没有办法？&lt;a href=&quot;#q9不想-kyc有没有办法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;不建议为了省 KYC 去找来路不明的平台。对支付类产品来说，完全不实名反而往往更危险。&lt;/p&gt;
&lt;h3&gt;Q10：Roogoo 会不会跑路？&lt;a href=&quot;#q10roogoo-会不会跑路&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;没有任何支付平台可以承诺“绝对不会出问题”。对用户来说，更现实的风控方式不是去赌平台永远稳定，而是控制卡内余额、不要大额长期沉淀。&lt;/p&gt;
&lt;h3&gt;Q11：和其他 U 卡相比怎么选？&lt;a href=&quot;#q11和其他-u-卡相比怎么选&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;核心还是看你的目标。如果你是为了 AI 订阅，优先找对 OpenAI、Claude 这类场景更友好的卡种；如果你是普通跨境消费，则更关注费率、通用性和日常支付体验。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;说明：本文是流程整理和经验汇总，不构成投资建议，也不构成开卡成功、审核通过或收益结果承诺。平台活动、费率、支持币种、卡种和审核要求都可能变动，具体以 Roogoo 页面实时展示为准。&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>category:笔记</category><category>tag:Roogoo</category><category>tag:虚拟卡</category><category>tag:ChatGPT订阅</category><category>tag:Claude订阅</category><category>tag:Gemini订阅</category><category>tag:zd9kgv</category></item><item><title>快手转抖音半年：社区氛围对创作者心态的影响</title><link>https://qiyuan.icu/en/post/kuaishou-vs-douyin</link><guid isPermaLink="false">en:kuaishou-vs-douyin</guid><description>从快手转到抖音后，我的创作心态和内容质量都发生了变化。聊聊两个平台社区氛围的差异。</description><pubDate>Thu, 11 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;做自媒体这两年，我先后在快手和抖音都待过。最近从快手转到抖音，说实话，精神状态好了不少。这篇文章聊聊我的真实感受。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;快手评论区：一个让人窒息的地方&lt;a href=&quot;#快手评论区一个让人窒息的地方&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在快手做内容的那段时间，最让我头疼的不是流量，而是评论区。&lt;/p&gt;
&lt;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;第二，对创作者极不友好。&lt;/strong&gt; 我之前发了一个工具项目作品，本来是分享给需要的人用。结果评论区一堆人喷我——“装什么&quot;&quot;收费的吧&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;a href=&quot;#抖音评论区同一个作品两个世界&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;转到抖音之后，最让我震惊的是同一条视频在两个平台的反馈差距。&lt;/p&gt;
&lt;p&gt;还是那个工具项目作品，发到抖音之后，评论区画风完全不一样——&lt;strong&gt;全是求项目地址的&lt;/strong&gt;。“大佬这个在哪下载&quot;&quot;求链接&quot;&quot;怎么获取”。没有人骂你，大家都在讨论怎么用、好不好用、有没有类似推荐。&lt;/p&gt;
&lt;p&gt;一条视频发出去，更多的是”学到了&quot;&quot;谢谢分享&quot;&quot;已收藏”这类正向互动。&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;strong&gt;第二，用户基数大，噪音被稀释。&lt;/strong&gt; 抖音的日活比快手高很多，评论区的”噪音”被大量正常用户稀释了。&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;a href=&quot;#两个平台的本质区别&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;核心差异在于&lt;strong&gt;用户画像&lt;/strong&gt;和&lt;strong&gt;算法逻辑&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;/ul&gt;
&lt;p&gt;简单来说，快手像是一个小圈子，互相看不顺眼；抖音像是一个大广场，人多但彼此尊重。&lt;/p&gt;
&lt;h2&gt;给想转平台的朋友&lt;a href=&quot;#给想转平台的朋友&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先试试水&lt;/strong&gt;——同样的内容在两个平台各发几条，看反馈&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;strong&gt;心态最重要&lt;/strong&gt;——如果一个平台让你不开心，换一个没什么损失&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;做自媒体是场持久战，选一个让自己舒服的平台，才能坚持下去。&lt;/p&gt;</content:encoded><category>category:随笔</category><category>tag:抖音</category><category>tag:快手</category><category>tag:创作者心态</category><category>tag:自媒体</category></item><item><title>Claude最新模型深度测评：Fable 5、Opus 4.8全面对比，谁才是最强AI？</title><link>https://qiyuan.icu/en/post/claude-benchmark</link><guid isPermaLink="false">en:claude-benchmark</guid><description>Claude最新模型Fable 5和Opus 4.8的详细测评，包含benchmark分数对比、实际使用场景分析、与GPT-5.5/Gemini等模型的全面对比</description><pubDate>Wed, 10 Jun 2026 06:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic最近一个月连续发布了两个重磅模型：5月28日的Claude Opus 4.8和6月9日的Claude Fable 5。作为一个每天都在用AI写代码、做研究的人，我第一时间体验了这两个模型。&lt;/p&gt;
&lt;p&gt;今天这篇文章，我会从benchmark数据、实际使用体验、性价比三个维度，详细对比目前市面上的主流AI模型，帮你找到最适合自己的那个。&lt;/p&gt;
&lt;h2&gt;一、模型基本信息&lt;a href=&quot;#一模型基本信息&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;先看一张表，了解这几个模型的基本参数：&lt;/p&gt;






















































&lt;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;th&gt;定价（/1M tokens）&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Claude Fable 5&lt;/td&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td&gt;2026-06-09&lt;/td&gt;&lt;td&gt;1M&lt;/td&gt;&lt;td&gt;$8.20&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td&gt;2026-05-28&lt;/td&gt;&lt;td&gt;1M&lt;/td&gt;&lt;td&gt;$4.10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Opus 4.7&lt;/td&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td&gt;2026-04&lt;/td&gt;&lt;td&gt;1M&lt;/td&gt;&lt;td&gt;$4.10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPT-5.5&lt;/td&gt;&lt;td&gt;OpenAI&lt;/td&gt;&lt;td&gt;2026-05&lt;/td&gt;&lt;td&gt;922K&lt;/td&gt;&lt;td&gt;$4.35&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;&lt;td&gt;Google&lt;/td&gt;&lt;td&gt;2026-05&lt;/td&gt;&lt;td&gt;1M&lt;/td&gt;&lt;td&gt;$1.74&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Qwen3.7 Max&lt;/td&gt;&lt;td&gt;阿里巴巴&lt;/td&gt;&lt;td&gt;2026-05&lt;/td&gt;&lt;td&gt;1M&lt;/td&gt;&lt;td&gt;$1.43&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;几个关键点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Fable 5和Opus 4.8都支持100万token上下文，GPT-5.5是92.2万&lt;/li&gt;
&lt;li&gt;Claude的定价比GPT-5.5便宜一点（Opus 4.8是&lt;span&gt;&lt;span&gt;4.10vsGPT−5.5的4.10 vs GPT-5.5的&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;4.10&lt;/span&gt;&lt;span&gt;v&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;GP&lt;/span&gt;&lt;span&gt;T&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;5.5&lt;/span&gt;&lt;span&gt;的&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;4.35）&lt;/li&gt;
&lt;li&gt;国产模型（Qwen3.7）价格只有Claude的三分之一&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;二、Benchmark分数对比&lt;a href=&quot;#二benchmark分数对比&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我从Artificial Analysis拿到了最新的排行榜数据（2026年6月）：&lt;/p&gt;
&lt;h3&gt;智能指数排名（满分越高越好）&lt;a href=&quot;#智能指数排名满分越高越好&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;速度（tokens/s）&lt;/th&gt;&lt;th&gt;首token延迟（s）&lt;/th&gt;&lt;th&gt;总响应时间（s）&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;Claude Fable 5&lt;/td&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;107.99&lt;/td&gt;&lt;td&gt;116.28&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;61&lt;/td&gt;&lt;td&gt;61&lt;/td&gt;&lt;td&gt;61.26&lt;/td&gt;&lt;td&gt;69.46&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;GPT-5.5 (xhigh)&lt;/td&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;94.25&lt;/td&gt;&lt;td&gt;104.30&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;GPT-5.5 (high)&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;49&lt;/td&gt;&lt;td&gt;31.12&lt;/td&gt;&lt;td&gt;41.31&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Claude Opus 4.7&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;23.25&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;112&lt;/td&gt;&lt;td&gt;22.34&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Qwen3.7 Max&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;153&lt;/td&gt;&lt;td&gt;2.65&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;解读&lt;a href=&quot;#解读&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Fable 5是目前最强的AI模型&lt;/strong&gt;，智能指数65，比第二名Opus 4.8高了4分。但代价是价格贵了一倍（&lt;span&gt;&lt;span&gt;8.20vs8.20 vs &lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;8.20&lt;/span&gt;&lt;span&gt;v&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;4.10），而且延迟很高（108秒才出第一个token）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Opus 4.8性价比最高&lt;/strong&gt;，智能指数61，只比Fable 5低4分，但价格只有它的一半。而且延迟低很多（61秒 vs 108秒）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GPT-5.5和Opus 4.8接近&lt;/strong&gt;，xhigh版本60分，high版本59分。但GPT-5.5的速度更慢（50 tokens/s vs 61 tokens/s）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;国产模型进步明显&lt;/strong&gt;，Qwen3.7 Max智能指数57，和Opus 4.7持平，但速度快了3倍（153 vs 45 tokens/s），价格只有1/3。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;三、实际使用场景对比&lt;a href=&quot;#三实际使用场景对比&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;光看benchmark不够，我用这几个模型做了实际测试。&lt;/p&gt;
&lt;h3&gt;场景1：写代码&lt;a href=&quot;#场景1写代码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我让每个模型写一个Python爬虫，抓取豆瓣电影Top250并保存为CSV。&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;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;td&gt;中等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Fable 5&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;td&gt;慢&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPT-5.5 (high)&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;中等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Qwen3.7 Max&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;快&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：Claude在代码方面确实更强，Opus 4.8和Fable 5写的代码更规范，错误处理更完善。GPT-5.5也不差，但偶尔会有一些小问题。Qwen3.7速度快，适合快速原型。&lt;/p&gt;
&lt;h3&gt;场景2：长文档分析&lt;a href=&quot;#场景2长文档分析&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我上传了一份50页的PDF论文，让模型总结核心观点。&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;能否处理100页+&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Claude Fable 5&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPT-5.5&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：Claude的长文档处理能力确实强，尤其是Fable 5，能抓住论文的核心逻辑。GPT-5.5也不错，但有时候会遗漏一些细节。&lt;/p&gt;
&lt;h3&gt;场景3：创意写作&lt;a href=&quot;#场景3创意写作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我让模型写一篇关于”AI与未来教育”的短文。&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;GPT-5.5&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Fable 5&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Qwen3.7 Max&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：GPT-5.5在创意和文笔方面确实更好，写出来的文章更流畅、更有感染力。Claude则更注重逻辑性和深度。&lt;/p&gt;
&lt;h3&gt;场景4：多轮对话&lt;a href=&quot;#场景4多轮对话&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我模拟了一个10轮的技术问答对话，测试模型的记忆能力和一致性。&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;Claude Fable 5&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;td&gt;9.5/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;td&gt;9/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPT-5.5&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;8.5/10&lt;/td&gt;&lt;td&gt;✓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Qwen3.7 Max&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;8/10&lt;/td&gt;&lt;td&gt;部分&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：Claude在多轮对话中表现最好，能很好地记住前面的上下文，回答保持一致。GPT-5.5偶尔会”忘记”前面说过的内容。&lt;/p&gt;
&lt;h2&gt;四、性价比分析&lt;a href=&quot;#四性价比分析&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这是很多人关心的问题：花同样的钱，哪个模型最值？&lt;/p&gt;
&lt;h3&gt;按智能指数/价格计算&lt;a href=&quot;#按智能指数价格计算&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;价格（/1M tokens）&lt;/th&gt;&lt;th&gt;智能/价格比&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Qwen3.7 Max&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;$1.43&lt;/td&gt;&lt;td&gt;39.9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gemini 3.1 Pro&lt;/td&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;$1.74&lt;/td&gt;&lt;td&gt;32.8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Opus 4.8&lt;/td&gt;&lt;td&gt;61&lt;/td&gt;&lt;td&gt;$4.10&lt;/td&gt;&lt;td&gt;14.9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GPT-5.5 (high)&lt;/td&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;$4.35&lt;/td&gt;&lt;td&gt;13.6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Claude Fable 5&lt;/td&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;$8.20&lt;/td&gt;&lt;td&gt;7.9&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;ul&gt;
&lt;li&gt;&lt;strong&gt;性价比之王&lt;/strong&gt;：Qwen3.7 Max，智能/价格比最高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最强但最贵&lt;/strong&gt;：Claude Fable 5，适合对质量要求极高的场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最佳平衡&lt;/strong&gt;：Claude Opus 4.8，性能强，价格适中&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;五、我的推荐&lt;a href=&quot;#五我的推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;根据不同使用场景，我的建议是：&lt;/p&gt;
&lt;h3&gt;日常编码和任务&lt;a href=&quot;#日常编码和任务&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;首选：Claude Opus 4.8&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;理由：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码能力强，一次通过率高&lt;/li&gt;
&lt;li&gt;价格合理（$4.10/1M tokens）&lt;/li&gt;
&lt;li&gt;100万token上下文，够用&lt;/li&gt;
&lt;li&gt;延迟可接受（61秒）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;复杂推理和研究&lt;a href=&quot;#复杂推理和研究&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;首选：Claude Fable 5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;理由：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;智能指数最高（65分）&lt;/li&gt;
&lt;li&gt;长文档处理能力最强&lt;/li&gt;
&lt;li&gt;多轮对话最稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缺点是贵（$8.20/1M tokens），延迟高（108秒），适合不赶时间的深度研究。&lt;/p&gt;
&lt;h3&gt;创意写作和内容创作&lt;a href=&quot;#创意写作和内容创作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;首选：GPT-5.5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;理由：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文笔最好，写出来的文章更流畅&lt;/li&gt;
&lt;li&gt;创意能力强&lt;/li&gt;
&lt;li&gt;价格和Opus 4.8差不多&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;预算有限&lt;a href=&quot;#预算有限&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;首选：Qwen3.7 Max&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;理由：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;价格只有Claude的1/3&lt;/li&gt;
&lt;li&gt;智能指数57，日常够用&lt;/li&gt;
&lt;li&gt;速度快（153 tokens/s）&lt;/li&gt;
&lt;li&gt;100万token上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;六、总结&lt;a href=&quot;#六总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;2026年的AI模型市场，Claude确实领先了一步。Fable 5目前是最强的AI模型，Opus 4.8是性价比最高的选择。GPT-5.5在创意方面依然有优势，国产模型则在价格和速度上更有竞争力。&lt;/p&gt;
&lt;p&gt;我的日常配置是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;主力模型&lt;/strong&gt;：Claude Opus 4.8（编码、分析、对话）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深度研究&lt;/strong&gt;：Claude Fable 5（论文分析、复杂推理）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创意写作&lt;/strong&gt;：GPT-5.5（写文章、头脑风暴）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速任务&lt;/strong&gt;：Qwen3.7 Max（简单问答、快速原型）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;没有最好的模型，只有最适合的模型。根据你的需求和预算选择就好。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;数据来源：Artificial Analysis LLM Leaderboard (2026年6月10日)&lt;/em&gt;
&lt;em&gt;测评时间：2026年6月10日&lt;/em&gt;&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:AI模型</category><category>tag:Claude</category><category>tag:模型测评</category></item><item><title>大学生应该如何开始学习Python</title><link>https://qiyuan.icu/en/post/python-beginner</link><guid isPermaLink="false">en:python-beginner</guid><description>从零开始学Python的完整路线，适合完全没有编程基础的大学生，包含环境搭建、基础语法、实战项目和学习资源推荐。</description><pubDate>Wed, 10 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章写给还在犹豫要不要学Python的大学生。&lt;/p&gt;
&lt;p&gt;我自己也是从零开始学的，走过不少弯路。这篇把我觉得最实用的部分整理出来，帮你少踩坑、快速上手。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;为什么大学生应该学Python&lt;a href=&quot;#为什么大学生应该学python&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;先说结论：&lt;strong&gt;Python是目前最适合非计算机专业学生入门的编程语言&lt;/strong&gt;，没有之一。&lt;/p&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;数据分析、自动化、AI、Web都能做&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;不管什么专业，会Python都是加分项&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;你可能是文科生、商科生、艺术生——没关系，Python不需要你有数学基础，也不需要你懂计算机原理。&lt;strong&gt;会打字就能开始学。&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第一步：搭建环境（30分钟搞定）&lt;a href=&quot;#第一步搭建环境30分钟搞定&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;很多人卡在这一步，其实没那么复杂。&lt;/p&gt;
&lt;h3&gt;Windows 用户&lt;a href=&quot;#windows-用户&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&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;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Python 3.12.10&lt;/td&gt;&lt;td&gt;推荐&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://repo.huaweicloud.com/python/3.12.10/python-3.12.10-amd64.exe&quot;&gt;下载&lt;/a&gt;（26MB）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python 3.11.9&lt;/td&gt;&lt;td&gt;稳定版&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://repo.huaweicloud.com/python/3.11.9/python-3.11.9-amd64.exe&quot;&gt;下载&lt;/a&gt;（26MB）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python 3.10.11&lt;/td&gt;&lt;td&gt;推荐&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://repo.huaweicloud.com/python/3.10.11/python-3.10.11-amd64.exe&quot;&gt;下载&lt;/a&gt;（28MB）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;下载完成后双击安装，&lt;strong&gt;一定要勾选 “Add Python to PATH”&lt;/strong&gt;（很多人漏了这步），然后点 &lt;strong&gt;Install Now&lt;/strong&gt;，等一两分钟就装好了。&lt;/p&gt;
&lt;h3&gt;Mac 用户&lt;a href=&quot;#mac-用户&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Mac自带Python，但版本比较旧。建议：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先装Homestock（Mac的包管理器），打开终端输入：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/bin/bash&lt;/span&gt;&lt;span&gt; -c&lt;/span&gt;&lt;span&gt; &quot;$(&lt;/span&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; -fsSL&lt;/span&gt;&lt;span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;装好后输入：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;brew&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;搞定。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;验证安装&lt;a href=&quot;#验证安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;打开终端（Windows叫”命令提示符”或”PowerShell”），输入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果显示 &lt;code&gt;Python 3.12.x&lt;/code&gt;，说明安装成功。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第二步：选一个代码编辑器&lt;a href=&quot;#第二步选一个代码编辑器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;别用记事本写代码，效率太低。推荐两个：&lt;/p&gt;




















&lt;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;VS Code&lt;/td&gt;&lt;td&gt;免费、轻量、插件丰富&lt;/td&gt;&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PyCharm&lt;/td&gt;&lt;td&gt;专业Python IDE，功能强大&lt;/td&gt;&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;新手直接选VS Code&lt;/strong&gt;，理由：免费、启动快、社区资源多。&lt;/p&gt;
&lt;p&gt;安装VS Code后，装一个Python扩展：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开VS Code&lt;/li&gt;
&lt;li&gt;点左侧扩展图标（或按 &lt;code&gt;Ctrl+Shift+X&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;搜索 &lt;code&gt;Python&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装微软官方的那个（下载量最多的）&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;第三步：学习基础语法（2-4周）&lt;a href=&quot;#第三步学习基础语法2-4周&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;别一上来就啃书，直接动手写代码。以下是最核心的内容，按顺序学：&lt;/p&gt;
&lt;h3&gt;3.1 变量和数据类型&lt;a href=&quot;#31-变量和数据类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 变量赋值&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;name &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;violet&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;age &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 20&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;score &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 95.5&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;is_student &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 打印&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;我叫&quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; name)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;我今年&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;age&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;岁&quot;&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;span&gt;# f-string格式化，最常用&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.2 条件判断&lt;a href=&quot;#32-条件判断&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;score &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 85&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 90&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;优秀&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;elif&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 80&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;良好&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;elif&lt;/span&gt;&lt;span&gt; score &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 60&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;及格&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;不及格&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.3 循环&lt;a href=&quot;#33-循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# for循环：遍历列表&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;fruits &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;苹果&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;香蕉&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;橘子&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; fruit &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; fruits:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(fruit)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# while循环：重复执行&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;while&lt;/span&gt;&lt;span&gt; count &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;第&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;count &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1}&lt;/span&gt;&lt;span&gt;次&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    count &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.4 函数&lt;a href=&quot;#34-函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; greet&lt;/span&gt;&lt;span&gt;(name):&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &quot;&quot;&quot;打招呼的函数&quot;&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    return&lt;/span&gt;&lt;span&gt; f&lt;/span&gt;&lt;span&gt;&quot;你好，&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;！&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;message &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; greet(&lt;/span&gt;&lt;span&gt;&quot;violet&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(message)  &lt;/span&gt;&lt;span&gt;# 输出：你好，violet！&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.5 列表和字典&lt;a href=&quot;#35-列表和字典&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 列表：有序集合&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;students &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;小明&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;小红&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;小刚&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;students.append(&lt;/span&gt;&lt;span&gt;&quot;小李&quot;&lt;/span&gt;&lt;span&gt;)  &lt;/span&gt;&lt;span&gt;# 添加元素&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(students[&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;])  &lt;/span&gt;&lt;span&gt;# 访问第一个元素&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 字典：键值对&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;student &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;小明&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &quot;age&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    &quot;major&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;计算机&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(student[&lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;])  &lt;/span&gt;&lt;span&gt;# 输出：小明&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这5个掌握了，Python基础就差不多了。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第四步：做项目（最重要的一步）&lt;a href=&quot;#第四步做项目最重要的一步&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;光看教程不写项目，等于没学。以下是从易到难的项目推荐：&lt;/p&gt;
&lt;h3&gt;入门项目&lt;a href=&quot;#入门项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 计算器&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;def&lt;/span&gt;&lt;span&gt; calculator&lt;/span&gt;&lt;span&gt;():&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;简单计算器&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    num1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; float&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;输入第一个数：&quot;&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    op &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; input&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;输入运算符(+,-,*,/)：&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    num2 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; float&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;输入第二个数：&quot;&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    if&lt;/span&gt;&lt;span&gt; op &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &quot;+&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;结果：&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;num1 &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; num2&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    elif&lt;/span&gt;&lt;span&gt; op &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &quot;-&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;结果：&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;num1 &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; num2&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    elif&lt;/span&gt;&lt;span&gt; op &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &quot;*&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;结果：&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;num1 &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; num2&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    elif&lt;/span&gt;&lt;span&gt; op &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &quot;/&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; num2 &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;结果：&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;num1 &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; num2&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        else&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;错误：除数不能为0&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    else&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;不支持的运算符&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;calculator()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. 猜数字游戏&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; random&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;target &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; random.randint(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;guess_count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;猜数字游戏！我想了一个1-100之间的数字。&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;while&lt;/span&gt;&lt;span&gt; True&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    guess &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;你的猜测：&quot;&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    guess_count &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    if&lt;/span&gt;&lt;span&gt; guess &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; target:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;太小了&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    elif&lt;/span&gt;&lt;span&gt; guess &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; target:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;太大了&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    else&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;恭喜！猜对了！你用了&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;guess_count&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;次。&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        break&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. 批量重命名文件&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; os&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 把当前目录所有.txt文件加上前缀&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;folder &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;./documents&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;prefix &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;2026_&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; filename &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; os.listdir(folder):&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    if&lt;/span&gt;&lt;span&gt; filename.endswith(&lt;/span&gt;&lt;span&gt;&quot;.txt&quot;&lt;/span&gt;&lt;span&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        new_name &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; prefix &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; filename&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        os.rename(&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            os.path.join(folder, filename),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            os.path.join(folder, new_name)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        )&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;f&lt;/span&gt;&lt;span&gt;&quot;已重命名：&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;filename&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; → &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;new_name&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;进阶项目&lt;a href=&quot;#进阶项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;爬取豆瓣电影Top250&lt;/td&gt;&lt;td&gt;requests + BeautifulSoup&lt;/td&gt;&lt;td&gt;⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;生成词云图&lt;/td&gt;&lt;td&gt;wordcloud + jieba&lt;/td&gt;&lt;td&gt;⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;自动发送邮件&lt;/td&gt;&lt;td&gt;smtplib&lt;/td&gt;&lt;td&gt;⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;简单网站&lt;/td&gt;&lt;td&gt;Flask框架&lt;/td&gt;&lt;td&gt;⭐⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;数据分析图表&lt;/td&gt;&lt;td&gt;pandas + matplotlib&lt;/td&gt;&lt;td&gt;⭐⭐⭐&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;第五步：选一个方向深入&lt;a href=&quot;#第五步选一个方向深入&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Python能做的事情很多，选一个你感兴趣的方向深耕：&lt;/p&gt;
&lt;h3&gt;数据分析（最热门）&lt;a href=&quot;#数据分析最热门&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;适合：商科、经济、统计、社科类学生&lt;/p&gt;
&lt;p&gt;学习路线：Python基础 → pandas → matplotlib → seaborn → 机器学习入门&lt;/p&gt;
&lt;p&gt;推荐项目：分析自己的消费记录、分析电影数据、做可视化报表&lt;/p&gt;
&lt;h3&gt;自动化办公&lt;a href=&quot;#自动化办公&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;适合：所有专业&lt;/p&gt;
&lt;p&gt;学习路线：Python基础 → openpyxl(Excel) → python-docx(Word) → 自动化脚本&lt;/p&gt;
&lt;p&gt;实用场景：批量处理Excel、自动整理文件、定时发送邮件&lt;/p&gt;
&lt;h3&gt;爬虫&lt;a href=&quot;#爬虫&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;适合：新闻传播、市场营销、调研类学生&lt;/p&gt;
&lt;p&gt;学习路线：Python基础 → requests → BeautifulSoup → Scrapy&lt;/p&gt;
&lt;p&gt;实用场景：爬取招聘数据、舆情监控、竞品分析&lt;/p&gt;
&lt;h3&gt;Web开发&lt;a href=&quot;#web开发&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;适合：计算机、信息类学生&lt;/p&gt;
&lt;p&gt;学习路线：Python基础 → Flask/Django → 数据库 → 前端基础&lt;/p&gt;
&lt;p&gt;实用场景：做个人博客、小型管理系统&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;学习资源推荐&lt;a href=&quot;#学习资源推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;免费教程&lt;a href=&quot;#免费教程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;a href=&quot;https://www.runoob.com/python3/python3-tutorial.html&quot;&gt;菜鸟教程-Python&lt;/a&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;a href=&quot;https://www.liaoxuefeng.com/wiki/1016959663602400&quot;&gt;廖雪峰Python教程&lt;/a&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;a href=&quot;https://docs.python.org/zh-cn/3/tutorial/&quot;&gt;Python官方教程&lt;/a&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;B站搜”Python教程”&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;h3&gt;书籍推荐&lt;a href=&quot;#书籍推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;《Python编程：从入门到实践》&lt;/strong&gt; — 最适合新手的一本，有项目实战&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;《笨办法学Python 3》&lt;/strong&gt; — 适合完全零基础，手把手教你敲代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;《利用Python进行数据分析》&lt;/strong&gt; — 数据分析方向必读&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;练习平台&lt;a href=&quot;#练习平台&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;a href=&quot;https://www.nowcoder.com/&quot;&gt;牛客网&lt;/a&gt;&lt;/td&gt;&lt;td&gt;中文刷题，适合找工作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://leetcode.cn/&quot;&gt;LeetCode&lt;/a&gt;&lt;/td&gt;&lt;td&gt;算法练习，面试必备&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://www.kaggle.com/&quot;&gt;Kaggle&lt;/a&gt;&lt;/td&gt;&lt;td&gt;数据科学实战&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;常见问题&lt;a href=&quot;#常见问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q：我完全没基础，能学会吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;能。Python是最友好的入门语言，很多非计算机专业的人都在学。关键是坚持每天写代码，哪怕只有30分钟。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：要不要报培训班？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不建议。网上的免费资源完全够用，培训班教你的一般网上都有。把钱省下来买本好书或者吃顿好的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：学多久能找到工作？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;看方向和深度。如果只是想加分项，学2-3个月基础够了。如果想转行做开发，至少需要半年到一年的系统学习。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：Python和Java/C++先学哪个？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先学Python。语法简单、反馈快、成就感强。等有了编程思维，再学其他语言会容易很多。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：每天要学多久？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;建议每天至少30分钟-1小时。重要的不是时长，是&lt;strong&gt;每天都写代码&lt;/strong&gt;。断断续续学三天忘两天，不如每天学半小时。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;我的建议&lt;a href=&quot;#我的建议&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;先跑起来再说&lt;/strong&gt;。别纠结用什么编辑器、看什么教程，先写一个 &lt;code&gt;print(&quot;Hello World&quot;)&lt;/code&gt;，看到输出的那一刻，你就入门了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;做项目比看教程重要100倍&lt;/strong&gt;。看完基础语法就开始做项目，遇到不会的再查，这是最高效的学习方式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;别怕报错&lt;/strong&gt;。报错信息是你最好的老师，读懂报错信息比读懂教程更有用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;找一个学习伙伴&lt;/strong&gt;。一个人学容易放弃，找同学一起学，互相监督，效率翻倍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;记录学习过程&lt;/strong&gt;。写博客或者笔记，既能巩固知识，以后回头看也特别有成就感。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Python不难，难的是开始。&lt;strong&gt;现在就打开终端，输入 &lt;code&gt;python&lt;/code&gt;，开始你的第一步。&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:Python</category><category>tag:学习指南</category><category>tag:大学生编程</category></item><item><title>新手Vibe Coding指南：如何做出美观、功能完善且安全的项目</title><link>https://qiyuan.icu/en/post/vibe-coding-guide</link><guid isPermaLink="false">en:vibe-coding-guide</guid><description>从零开始用AI辅助编程时，怎么避免做出又丑又危险的半成品？这篇文章聊聊新手最容易踩的坑和实用的解决思路。</description><pubDate>Mon, 08 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Vibe Coding这个词最近很火。简单说就是：&lt;strong&gt;告诉AI你想做什么，让它帮你写代码&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;听起来很美好，但实际操作起来，新手往往会遇到三个问题：界面丑、功能残、安全差。最后做出来的东西，自己都不好意思拿给别人看。&lt;/p&gt;
&lt;p&gt;这篇文章聊聊怎么避免这些问题。&lt;/p&gt;
&lt;h2&gt;什么是Vibe Coding&lt;a href=&quot;#什么是vibe-coding&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;先澄清一下：Vibe Coding不是”让AI完全替你写”，而是&lt;strong&gt;你定方向，AI执行，你再调整&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你不需要精通每一种编程语言，但你需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能描述清楚你想要什么&lt;/li&gt;
&lt;li&gt;能判断AI给的方案好不好&lt;/li&gt;
&lt;li&gt;知道哪些地方必须自己把关&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三点是底线。没了它们，你只是在”碰运气”，不是在”vibe”。&lt;/p&gt;
&lt;h2&gt;美观：别让AI自由发挥&lt;a href=&quot;#美观别让ai自由发挥&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI写前端最大的问题不是代码跑不起来，而是&lt;strong&gt;跑起来之后长一个样&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;居中大标题、三张卡片、蓝紫渐变——不管做什么项目，AI总能给你整出这套。原因是：这是训练数据里最常见的”安全选择”。&lt;/p&gt;
&lt;h3&gt;怎么破&lt;a href=&quot;#怎么破&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 给参考，不给描述&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;别说”帮我做一个好看的landing page”，而是说”参考linear.app的风格，做一个工具介绍页”。有具体参考，AI的产出会靠谱很多。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 约束设计规则&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在项目里加一个设计规范文件，告诉AI：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;字体用什么（比如Inter、Noto Sans SC）&lt;/li&gt;
&lt;li&gt;主色用什么（别让AI自己选，它大概率选蓝紫）&lt;/li&gt;
&lt;li&gt;间距用什么体系（8px、12px、16px这种）&lt;/li&gt;
&lt;li&gt;不要用什么（比如不要渐变背景、不要卡片堆叠）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 分步骤来&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先让AI出结构，你确认布局OK，再让它填内容和样式。一步到位的结果通常不好看，因为AI会在每个地方都”加料”。&lt;/p&gt;
&lt;h2&gt;功能：先跑通再完善&lt;a href=&quot;#功能先跑通再完善&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;新手常犯的错误：上来就想做一个功能完整的大项目。结果是——什么都写了，什么都不能用。&lt;/p&gt;
&lt;h3&gt;正确的节奏&lt;a href=&quot;#正确的节奏&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;第一步：最小可用版本&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先做一个只有核心功能的版本。比如你要做一个笔记应用，第一版只做”创建笔记”和”查看笔记”就够了。别急着加搜索、标签、导入导出。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二步：逐个功能迭代&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每加一个功能，先测试，确认没问题再加下一个。AI写的代码经常有隐性bug，你一次性让它写十个功能，debug的时候会怀疑人生。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三步：处理边界情况&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI不会主动考虑这些：&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;strong&gt;每个功能都靠谱&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;和AI协作的技巧&lt;a href=&quot;#和ai协作的技巧&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&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;/ul&gt;
&lt;h2&gt;安全：最容易被忽略的部分&lt;a href=&quot;#安全最容易被忽略的部分&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AI写代码有个致命问题：&lt;strong&gt;它不关心安全&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它会把密码写死在代码里，会忽略输入校验，会用最不安全的方式存储数据。不是因为它故意的，而是训练数据里安全代码的比例太低。&lt;/p&gt;
&lt;h3&gt;新手必须注意的几件事&lt;a href=&quot;#新手必须注意的几件事&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 永远不要把密钥写在代码里&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 错误示范&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;API_KEY&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; &quot;sk-1234567890&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 正确做法&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;API_KEY&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; process.env.API_KEY&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;用环境变量，或者配置文件（但配置文件不要提交到Git）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 输入必须校验&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不管用户输入什么，都要检查。邮箱格式对不对、密码长度够不够、数字是不是数字——这些AI不会自动帮你做。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 数据库存储要加密&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;密码不能明文存储，用bcrypt或argon2。用户敏感信息要加密。这些AI通常不会主动处理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 依赖要定期检查&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm audit&lt;/code&gt;、&lt;code&gt;pip audit&lt;/code&gt;这些命令要养成习惯。AI引入的依赖可能有已知漏洞。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 别信AI说的”这段代码很安全”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;让它审计自己的代码，它经常说”没问题”。换个角度问：“这段代码有哪些潜在的安全风险？“它会给你更多有用的回答。&lt;/p&gt;
&lt;h2&gt;一些实用建议&lt;a href=&quot;#一些实用建议&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. 学会看报错信息&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不需要完全看懂，但要学会找到关键信息：哪一行、什么错误、什么类型。这是和AI高效协作的基础。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 用版本控制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Git不是给专业人士用的，是给所有人的。每次改动前commit一下，出问题能回退。AI改坏代码是常事，没版本控制就只能重来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 不要一次信任太多&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI说”这段代码没问题”，你自己跑一下试试。AI说”这个方案最好”，你搜一下有没有更好的。&lt;strong&gt;AI是工具，不是专家&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 先学概念，再用AI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不需要精通语法，但要理解基本概念：什么是API、什么是数据库、什么是前端后端。有了这些基础，你才能判断AI的方案合不合理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 从小项目开始&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;别上来就做SaaS产品。先做一个个人工具、一个简单的网站、一个小应用。积累经验后再挑战复杂项目。&lt;/p&gt;
&lt;h2&gt;最后&lt;a href=&quot;#最后&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Vibe Coding降低了编程的门槛，但没有降低做好软件的标准。&lt;/p&gt;
&lt;p&gt;美观、功能、安全——这三件事AI帮不了你太多，最终还是要靠你的判断。好消息是，你不需要成为专家才能做出好东西。你需要的是：&lt;strong&gt;知道什么是好的，然后让AI帮你实现&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这就是Vibe Coding的正确打开方式。&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:Vibe Coding</category><category>tag:AI编程</category><category>tag:新手指南</category></item><item><title>Taste Skill：让AI写前端时少一点模板味</title><link>https://qiyuan.icu/en/post/taste-skill</link><guid isPermaLink="false">en:taste-skill</guid><description>一组面向AI编码Agent的SKILL.md文件，把字体、间距、配色、动效这些审美规则写成可复用指令，减少AI生成&apos;模板味界面&apos;的概率。</description><pubDate>Sun, 07 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;用AI写前端最大的痛点是什么？不是代码跑不起来，而是&lt;strong&gt;跑起来之后长得一模一样&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;居中大标题、三张卡片、蓝紫渐变、纯黑背景——不管你是做SaaS官网还是个人博客，AI总能给你整出一套”AI味”十足的界面。好看吗？不难看。有辨识度吗？完全没有。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Taste Skill&lt;/strong&gt;就是为了解决这个问题。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;前端AI审美外挂：Taste Skill&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;它是什么&lt;a href=&quot;#它是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Taste Skill不是组件库，也不是UI框架。它是一组SKILL.md文件，专门给Cursor、Claude Code、Codex、Gemini CLI、Lovable、OpenCode这些AI编码工具用。&lt;/p&gt;
&lt;p&gt;核心思路很简单：&lt;strong&gt;在AI开始写代码之前，先把”什么是好界面”的规则告诉它&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;仓库里有几个关键文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;taste-skill/SKILL.md&lt;/code&gt; — 通用审美规则&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-tasteskill/SKILL.md&lt;/code&gt; — 更强调布局变化和GSAP动效&lt;/li&gt;
&lt;li&gt;&lt;code&gt;redesign-skill/SKILL.md&lt;/code&gt; — 专门改造已有项目&lt;/li&gt;
&lt;li&gt;&lt;code&gt;image-to-code-skill/SKILL.md&lt;/code&gt; — 先生成参考图，再写代码&lt;/li&gt;
&lt;li&gt;&lt;code&gt;imagegen-frontend-web/SKILL.md&lt;/code&gt; — 网页端参考图生成&lt;/li&gt;
&lt;li&gt;&lt;code&gt;imagegen-frontend-mobile/SKILL.md&lt;/code&gt; — 移动端参考图生成&lt;/li&gt;
&lt;li&gt;&lt;code&gt;brandkit/SKILL.md&lt;/code&gt; — 品牌风格探索&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;它怎么约束AI&lt;a href=&quot;#它怎么约束ai&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;不是靠prompt，而是靠&lt;strong&gt;规则文件&lt;/strong&gt;。举几个例子：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;字体和间距&lt;/strong&gt;：明确指定字体族、容器宽度、栅格系统，不让AI随便用默认值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;反模板规则&lt;/strong&gt;：避免默认紫蓝渐变、三列卡片、纯黑背景——这些是AI最爱用的”安全选择”。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Taste Skill 追求的效果：更强的版式、留白、视觉层级&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;上面这张图就是Taste Skill追求的效果——不堆卡片，用留白和层级让信息自然流动。左边是AI默认会生成的”安全界面”，右边是加上审美约束后的产出。区别一眼就能看出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;状态补齐&lt;/strong&gt;：loading、empty、error、hover、active，该有的状态一个不能少。很多AI写的界面，鼠标放上去没有任何反馈，就是因为缺了hover状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;动画规范&lt;/strong&gt;：用&lt;code&gt;transform&lt;/code&gt;和&lt;code&gt;opacity&lt;/code&gt;做动画，避免性能差的布局动画（比如直接改&lt;code&gt;width&lt;/code&gt;、&lt;code&gt;height&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;依赖检查&lt;/strong&gt;：先检查&lt;code&gt;package.json&lt;/code&gt;，不要凭空import不存在的依赖。&lt;/p&gt;
&lt;h2&gt;背后的研究&lt;a href=&quot;#背后的研究&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;项目里有个&lt;code&gt;research/&lt;/code&gt;目录，整理了2025年的一些受控实验。结论挺有意思的：&lt;strong&gt;在复杂多要求的提示下，模型经常漏掉必需章节、格式约束和长度要求&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是AI偷懒，而是上下文太长时，注意力会被分散。Taste Skill的output-skill就是针对这类问题，把”完整输出、不要占位、不要跳段”写进规则。&lt;/p&gt;
&lt;p&gt;要注意的是，这些是项目内整理的背景资料，不是独立的基准测试排行榜。写项目介绍时，把它当成&lt;strong&gt;设计依据&lt;/strong&gt;更准确。&lt;/p&gt;
&lt;h2&gt;怎么用&lt;a href=&quot;#怎么用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;夸克网盘打包了全部 SKILL.md 文件和使用教程文档，一次性下载即可：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pan.quark.cn/s/1c2af45bac10?pwd=G1T4&quot;&gt;夸克网盘下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载后解压，里面有所有 skill 文件和使用教程，按需放到项目里就行。&lt;/p&gt;
&lt;figure&gt;&lt;img /&gt;&lt;figcaption&gt;Taste Skill 工作流&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;实际用起来什么感觉&lt;a href=&quot;#实际用起来什么感觉&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我拿它试了几个场景：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景一：给一个工具站做Landing Page&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以前用Cursor直接写，出来的一定是”居中大标题+三个feature卡片+底部CTA”。用了taste-skill之后，AI会主动做一些布局变化，比如左对齐标题、用不对称网格、加一些微妙的背景纹理。不敢说惊艳，但至少不像模板了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景二：改造一个后台管理界面&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用redesign-skill扫描了一个挺粗糙的管理后台，它列出了字体不统一、按钮缺少hover状态、空状态没有设计等问题，然后逐个修复。没有重写项目，只是在现有基础上打磨。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景三：移动端多屏流程&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用imagegen-frontend-mobile生成参考图，再让Codex对照实现。比纯文字描述要精准得多，因为”参考图长这样”比”用现代化设计风格”具体多了。&lt;/p&gt;
&lt;h2&gt;适合谁&lt;a href=&quot;#适合谁&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用AI写前端的开发者&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;：多人用AI写前端时，确保风格一致&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;改造已有项目&lt;/strong&gt;：不想重写，只想提升质感&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;不适合谁&lt;a href=&quot;#不适合谁&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;不用AI写前端的人——这东西没有手动使用的场景&lt;/li&gt;
&lt;li&gt;对设计有极高要求的项目——它能帮你从60分到80分，但从80到90还是得靠人&lt;/li&gt;
&lt;li&gt;一次塞太多Skill——不同项目选一个最贴近任务的就够了&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;几点注意&lt;a href=&quot;#几点注意&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Beta阶段&lt;/strong&gt;：官网标注”Beta testing right now”，团队落地建议先小范围试用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不是设计师替代品&lt;/strong&gt;：它解决的是”生成前的设计约束”，不替代设计判断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;参考图只出图不写代码&lt;/strong&gt;：imagegen类Skill只负责生成视觉参考，代码实现是另外的流程&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图像驱动更稳&lt;/strong&gt;：先固定视觉目标，再让AI写代码，比直接写要可控&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;最后&lt;a href=&quot;#最后&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Taste Skill值得关注的地方，不是”让AI页面变高级”这句口号，而是&lt;strong&gt;把审美问题拆成了工程规则&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;字体怎么选、卡片什么时候该少用、动效怎么避免卡顿、按钮和表单状态要不要补齐——这些原本靠经验判断的细节，被写进了SKILL.md。对经常用Codex、Cursor、Claude Code做前端的人来说，它更像一套可携带的UI审稿规则。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/Leonxlnx/taste-skill&quot;&gt;https://github.com/Leonxlnx/taste-skill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你也在为AI写的前端”模板味”头疼，可以试试。&lt;/p&gt;</content:encoded><category>category:笔记</category><category>category:资源</category><category>tag:Taste Skill</category><category>tag:前端审美</category><category>tag:AI微调指令</category></item><item><title>Windows 安装 Claude Code 完整教程：从 Node.js 开始</title><link>https://qiyuan.icu/en/post/claude-code-windows</link><guid isPermaLink="false">en:claude-code-windows</guid><description>Windows 系统下安装 Claude Code 的完整步骤，从 Node.js 安装到配置 API，一步步带你搞定。</description><pubDate>Sat, 06 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;之前写过 Claude Code 接 MiMo 和 DeepSeek API 的配置方法，但没写安装过程。这篇从零开始，Windows 下装 Claude Code 的完整流程，适合没用过 Node.js 的人。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第一步：安装 Node.js&lt;a href=&quot;#第一步安装-nodejs&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code 是 Node.js 应用，所以第一步是装 Node.js。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载安装包：&lt;a href=&quot;https://nodejs.org/dist/v24.16.0/node-v24.16.0-x64.msi&quot;&gt;node-v24.16.0-x64.msi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;双击运行，一路点 Next，保持默认设置&lt;/li&gt;
&lt;li&gt;安装完成后重启终端（PowerShell 或 CMD）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;验证安装是否成功：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;node&lt;/span&gt;&lt;span&gt; -v&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 输出类似 v22.x.x 就说明装好了&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; -v&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 输出类似 10.x.x&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Node.js 18 及以上版本都支持 Claude Code，建议装最新的 LTS 版。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第二步：安装 Claude Code&lt;a href=&quot;#第二步安装-claude-code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;打开 PowerShell，执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; -g&lt;/span&gt;&lt;span&gt; @anthropic-ai/claude-code&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;-g&lt;/code&gt; 表示全局安装，装完后任何目录都能用 &lt;code&gt;claude&lt;/code&gt; 命令。&lt;/p&gt;
&lt;p&gt;验证安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;claude&lt;/span&gt;&lt;span&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果输出版本号就说明装好了。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;第三步：配置 API&lt;a href=&quot;#第三步配置-api&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code 默认走 Anthropic 官方 API。如果你有自己的 Anthropic Key，直接跳到第四步。&lt;/p&gt;
&lt;p&gt;如果你想用第三方 API（更便宜），可以参考之前写的两篇文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/claude-code-mimo&quot;&gt;Claude Code 配置 MiMo API&lt;/a&gt; — 小米 MiMo 模型，按量付费或 Token Plan&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/deepseek-claude-code&quot;&gt;Claude Code 配置 DeepSeek API&lt;/a&gt; — DeepSeek API，支持 Web Search&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;第四步：启动 Claude Code&lt;a href=&quot;#第四步启动-claude-code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在你的项目目录下打开终端，输入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;claude&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;首次启动会让你登录 Anthropic 账号或者配置 API Key。配置好之后就能直接用了。&lt;/p&gt;
&lt;p&gt;Claude Code 会自动读取当前目录的代码，你可以用自然语言让它帮你写代码、改 bug、加功能。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;常见问题&lt;a href=&quot;#常见问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q：npm install 报错 permission denied&lt;/strong&gt;
用管理员权限运行 PowerShell，或者用 &lt;code&gt;npx&lt;/code&gt; 临时执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; @anthropic-ai/claude-code&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Q：claude 命令找不到&lt;/strong&gt;
重启终端试试。如果还不行，检查 Node.js 安装是否成功（&lt;code&gt;node -v&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：连接 API 超时&lt;/strong&gt;
检查 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 是否正确，确认网络能访问到 API 地址。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;以上就是 Windows 下安装 Claude Code 的全部步骤。装好之后可以看看我之前写的 &lt;a href=&quot;/blog/claude-code-mimo&quot;&gt;Claude Code 配置 MiMo API&lt;/a&gt; 和 &lt;a href=&quot;/blog/deepseek-claude-code&quot;&gt;DeepSeek API 用法&lt;/a&gt;，了解怎么接第三方 API。&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:Windows配置</category><category>tag:Claude Code</category><category>tag:Node.js</category></item><item><title>明天高考，写给每一位即将走进考场的你</title><link>https://qiyuan.icu/en/post/gaokao-2026</link><guid isPermaLink="false">en:gaokao-2026</guid><description>高考前夜的一些心里话，给所有明天上战场的学子。</description><pubDate>Fri, 05 Jun 2026 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;明天就是高考了。&lt;/p&gt;
&lt;p&gt;写这篇文章的时候是6月6号凌晨，距离明天早上开考还有一天多。如果你正在刷手机看到这篇，希望你能放下手机，好好睡一觉。&lt;/p&gt;
&lt;h2&gt;你已经准备了很久&lt;a href=&quot;#你已经准备了很久&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;从高三开学到现在，整整九个月。做过的卷子摞起来比人高，用完的笔芯能装满一个抽屉。那些早起晚睡的日子，那些错题本上反复标记的题型，那些崩溃过又重新拿起课本的瞬间——都不会白费。&lt;/p&gt;
&lt;p&gt;你现在站在终点线前，该做的都已经做了。&lt;/p&gt;
&lt;h2&gt;考前最后几件事&lt;a href=&quot;#考前最后几件事&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. 早点睡&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;别熬夜看手机，别反复翻错题本。大脑需要休息，睡眠是最后的”复习”。今晚睡好了，明天考场上脑子才转得动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 检查好东西&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;准考证、身份证、2B铅笔、黑色签字笔、橡皮、尺子。最好用一个透明文件袋装好，放在门口显眼的位置。每年都有忘带准考证的，别当那个幸运儿。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 吃好早饭&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;明天早上正常吃，别空腹也别吃太撑。清淡为主，鸡蛋、牛奶、面包就够了。别喝太多水，考试中间上厕所很耽误时间。&lt;/p&gt;
&lt;h2&gt;考场上的心态&lt;a href=&quot;#考场上的心态&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;遇到不会的题，先跳过。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是最重要的策略。一道题卡住超过3分钟，果断标记跳过，先做会做的。把能拿的分先拿到手，回头再啃硬骨头。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;别和别人比进度。&lt;/strong&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;h2&gt;关于结果&lt;a href=&quot;#关于结果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我知道现在说什么”别紧张&quot;&quot;尽力就好”你可能听不进去。该紧张还是会紧张，这很正常。&lt;/p&gt;
&lt;p&gt;但我想说的是——高考很重要，但它不是终点，也不是唯一的路。它只是人生众多岔路口中的一个。考得好，前面有好的风景；考得不理想，也有别的路可以走。&lt;/p&gt;
&lt;p&gt;十二年后回过头看，你会发现高考只是漫长人生中的一个节点。真正定义你的，不是那几天的分数，而是你一路走来的坚持和成长。&lt;/p&gt;
&lt;h2&gt;最后&lt;a href=&quot;#最后&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;明天走进考场的时候，深呼吸，告诉自己：我准备好了。&lt;/p&gt;
&lt;p&gt;你不是一个人在战斗。全国一千多万考生和你一起，你的老师、父母、朋友都在为你加油。&lt;/p&gt;
&lt;p&gt;去吧，好好发挥。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;祝所有2026年高考学子，金榜题名，前程似锦。&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>category:随笔</category><category>tag:高考</category><category>tag:人生感悟</category><category>tag:寄语</category></item><item><title>Ship Safe：一行命令扫描AI项目所有安全漏洞</title><link>https://qiyuan.icu/en/post/ship-safe</link><guid isPermaLink="false">en:ship-safe</guid><description>23个安全Agent并行扫描，覆盖Prompt注入、MCP投毒、供应链攻击等80+漏洞类型，npm一键安装即用。</description><pubDate>Fri, 05 Jun 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;用AI写代码越来越方便，但安全问题也越来越隐蔽。你用Cursor生成的代码可能藏着SQL注入，你的MCP配置可能被投毒，你的CLAUDE.md里可能有人埋了恶意指令。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ship Safe&lt;/strong&gt;就是解决这个问题的——一行命令扫描你整个项目，找出所有安全漏洞。&lt;/p&gt;
&lt;h2&gt;它是什么&lt;a href=&quot;#它是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ship Safe是一个开源的AI安全扫描工具，23个安全Agent并行工作，覆盖80多种攻击类型。不需要注册，不需要API Key，离线也能用。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; ship-safe&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一行命令，直接开扫。&lt;/p&gt;
&lt;h2&gt;能检测什么&lt;a href=&quot;#能检测什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;代码漏洞：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL/NoSQL注入、命令注入、XSS&lt;/li&gt;
&lt;li&gt;JWT缺陷（alg&lt;div&gt;&lt;/div&gt;、弱密钥）&lt;/li&gt;
&lt;li&gt;CSRF、OAuth配置错误、TLS绕过&lt;/li&gt;
&lt;li&gt;SSRF（服务端请求伪造）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;AI/LLM特有漏洞：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompt注入（OWASP LLM Top 10）&lt;/li&gt;
&lt;li&gt;MCP工具投毒、Agent劫持&lt;/li&gt;
&lt;li&gt;RAG上下文注入、文档投毒&lt;/li&gt;
&lt;li&gt;系统提示词泄露&lt;/li&gt;
&lt;li&gt;Agent内存投毒（隐藏Unicode载荷）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;供应链安全：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;依赖混淆、Typosquatting&lt;/li&gt;
&lt;li&gt;可疑安装脚本&lt;/li&gt;
&lt;li&gt;Docker/Terraform/K8s配置错误&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;其他：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;硬编码密钥（含Git历史）&lt;/li&gt;
&lt;li&gt;CI/CD流水线投毒&lt;/li&gt;
&lt;li&gt;PII合规检查（身份证号、银行卡等）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;实际跑一下&lt;a href=&quot;#实际跑一下&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我在自己的Astro博客项目上跑了一下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;Security Score: 84.6/100 B — Minor issues to review&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;Category Breakdown&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;────────────────────────────────────────────────&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✔  Secrets                clean                     +0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✔  Code Vulnerabilities   clean                     +0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✘  Dependencies           4 issue(s)                -13 pts&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✔  Auth &amp;amp; Access Control  clean                     +0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✔  Configuration          clean                     +0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✘  Supply Chain           2 issue(s)                -2.4 pts&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✔  API Security           clean                     +0&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;✔  AI/LLM Security        clean                     +0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4个依赖CVE，2个供应链问题。代码本身没问题。&lt;/p&gt;
&lt;h2&gt;23个安全Agent&lt;a href=&quot;#23个安全agent&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;每个Agent专门负责一类漏洞，并行扫描，自动跳过不相关的项目：&lt;/p&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Agent&lt;/th&gt;&lt;th&gt;检测内容&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;InjectionTester&lt;/td&gt;&lt;td&gt;SQL注入、命令注入、XSS、路径遍历&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AuthBypassAgent&lt;/td&gt;&lt;td&gt;JWT缺陷、CSRF、OAuth错误&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SSRFProber&lt;/td&gt;&lt;td&gt;服务端请求伪造&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SupplyChainAudit&lt;/td&gt;&lt;td&gt;依赖混淆、可疑安装脚本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ConfigAuditor&lt;/td&gt;&lt;td&gt;Docker/K8s/Terraform配置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LLMRedTeam&lt;/td&gt;&lt;td&gt;Prompt注入、系统提示泄露&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MCPSecurityAgent&lt;/td&gt;&lt;td&gt;MCP工具投毒、输入验证&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AgenticSecurityAgent&lt;/td&gt;&lt;td&gt;Agent劫持、权限提升&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RAGSecurityAgent&lt;/td&gt;&lt;td&gt;上下文注入、文档投毒&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;MemoryPoisoningAgent&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;还有13个&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;用法&lt;a href=&quot;#用法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 交互式扫描&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; ship-safe&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 完整审计&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; ship-safe&lt;/span&gt;&lt;span&gt; audit&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 只看分数&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; ship-safe&lt;/span&gt;&lt;span&gt; score&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# AI自动修复&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; ship-safe&lt;/span&gt;&lt;span&gt; agent&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# CI/CD集成&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; ship-safe&lt;/span&gt;&lt;span&gt; ci&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt; --threshold&lt;/span&gt;&lt;span&gt; 80&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;适合谁&lt;a href=&quot;#适合谁&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;用AI写代码的开发者（Cursor、Copilot、Claude Code用户）&lt;/li&gt;
&lt;li&gt;做AI Agent开发的团队&lt;/li&gt;
&lt;li&gt;用MCP集成外部工具的项目&lt;/li&gt;
&lt;li&gt;需要做安全审计的开源项目&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/asamassekou10/ship-safe&quot;&gt;https://github.com/asamassekou10/ship-safe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;721星，MIT协议，&lt;code&gt;npx ship-safe&lt;/code&gt;一行命令就能用。不管你用什么AI写代码，跑一遍总没坏处。&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:安全漏洞扫描</category><category>tag:AI项目安全</category><category>tag:开源项目</category></item><item><title>Paperclip：管理AI Agent团队的开源平台</title><link>https://qiyuan.icu/en/post/paperclip</link><guid isPermaLink="false">en:paperclip</guid><description>Paperclip 开源AI Agent编排平台，像管理公司一样管理AI团队，支持多Agent协作、预算控制、任务追踪。</description><pubDate>Sun, 31 May 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;用 AI Agent 做项目的时候，最大的问题不是单个 Agent 能不能干活，而是怎么管理一群 Agent。你同时开了 20 个 Claude Code 终端，每个在做不同的事，根本不知道谁在干什么。Paperclip 解决的就是这个问题。&lt;/p&gt;
&lt;h2&gt;Paperclip 是什么&lt;a href=&quot;#paperclip-是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;像管理公司一样管理 AI Agent 团队&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它是一个开源的 Node.js 服务器 + React 界面，用来编排和管理多个 AI Agent。你可以给 Agent 分配角色（CEO、CTO、工程师、设计师），设定目标和预算，然后从一个仪表盘监控所有 Agent 的工作。&lt;/p&gt;
&lt;p&gt;GitHub 6.9 万星，MIT 协议。&lt;/p&gt;
&lt;h2&gt;核心功能&lt;a href=&quot;#核心功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1. 任意 Agent 都能接入&lt;a href=&quot;#1-任意-agent-都能接入&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持 OpenClaw、Claude Code、Codex、Cursor、Bash、HTTP 等各种 Agent。只要能接收心跳信号，就能被管理。&lt;/p&gt;
&lt;p&gt;“如果它能接收心跳，它就被雇用了。“&lt;/p&gt;
&lt;h3&gt;2. 组织架构&lt;a href=&quot;#2-组织架构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;给 Agent 设定角色和汇报关系。有 CEO、CTO、工程师、设计师、市场人员——每个 Agent 都有自己的职位和职责描述。&lt;/p&gt;
&lt;h3&gt;3. 目标对齐&lt;a href=&quot;#3-目标对齐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;每个任务都追溯到公司目标。Agent 知道自己在做什么，也知道为什么要做。&lt;/p&gt;
&lt;h3&gt;4. 预算控制&lt;a href=&quot;#4-预算控制&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;每个 Agent 有月度预算上限。一旦达到限额就停止，不会产生意外费用。这点对于用 API 计费的 Agent 特别重要。&lt;/p&gt;
&lt;h3&gt;5. 心跳机制&lt;a href=&quot;#5-心跳机制&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Agent 按照预设时间表醒来，检查工作状态，然后执行任务。任务分配沿着组织架构上下流动。&lt;/p&gt;
&lt;h3&gt;6. 工单系统&lt;a href=&quot;#6-工单系统&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;每个对话都有记录，每个决策都有解释。完整的工具调用追踪和不可篡改的审计日志。&lt;/p&gt;
&lt;h3&gt;7. 多公司管理&lt;a href=&quot;#7-多公司管理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一个部署可以管理多个”公司”，数据完全隔离。一个控制面板管理你的整个 Agent 组合。&lt;/p&gt;
&lt;h3&gt;8. 移动端支持&lt;a href=&quot;#8-移动端支持&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;可以从手机上监控和管理你的 Agent 团队。&lt;/p&gt;
&lt;h2&gt;安装使用&lt;a href=&quot;#安装使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;最简单的方式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; paperclipai&lt;/span&gt;&lt;span&gt; onboard&lt;/span&gt;&lt;span&gt; --yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会启动本地回环模式，最快上手。如果需要局域网访问：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; paperclipai&lt;/span&gt;&lt;span&gt; onboard&lt;/span&gt;&lt;span&gt; --yes&lt;/span&gt;&lt;span&gt; --bind&lt;/span&gt;&lt;span&gt; lan&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;手动安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; clone&lt;/span&gt;&lt;span&gt; https://github.com/paperclipai/paperclip.git&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; paperclip&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pnpm&lt;/span&gt;&lt;span&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动后访问 &lt;code&gt;http://localhost:3100&lt;/code&gt;。内嵌 PostgreSQL 数据库，不需要额外配置。&lt;/p&gt;
&lt;p&gt;需要 Node.js 20+ 和 pnpm 9.15+。&lt;/p&gt;
&lt;h2&gt;使用场景&lt;a href=&quot;#使用场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;多 Agent 项目管理&lt;a href=&quot;#多-agent-项目管理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;同时运行多个 AI Agent 做不同任务，从一个界面统一管理。不用在 20 个终端之间来回切换。&lt;/p&gt;
&lt;h3&gt;自动化业务流程&lt;a href=&quot;#自动化业务流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;设定目标和角色，让 Agent 团队自动协作完成复杂任务。比如一个 Agent 负责写代码，一个负责测试，一个负责部署。&lt;/p&gt;
&lt;h3&gt;成本监控&lt;a href=&quot;#成本监控&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;实时查看每个 Agent 的 API 消费，设置预算上限，避免意外支出。&lt;/p&gt;
&lt;h3&gt;团队协作&lt;a href=&quot;#团队协作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;多人共享一个 Paperclip 实例，各自管理自己的 Agent 团队。&lt;/p&gt;
&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Paperclip 把 AI Agent 管理从”开一堆终端”升级到了”管理一个虚拟公司”。如果你同时用多个 AI 工具做项目，或者想让 Agent 自动化协作，这个工具值得认真看看。&lt;/p&gt;
&lt;p&gt;GitHub：&lt;a href=&quot;https://github.com/paperclipai/paperclip&quot;&gt;github.com/paperclipai/paperclip&lt;/a&gt;&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:Agent团队</category><category>tag:管理平台</category><category>tag:开源项目</category></item><item><title>Odysseus：自托管AI工作空间，ChatGPT和Claude的开源替代</title><link>https://qiyuan.icu/en/post/odysseus</link><guid isPermaLink="false">en:odysseus</guid><description>Odysseus 自托管AI工作平台，支持多模型聊天、AI代理、深度研究、文档编辑、邮件和日历，完全开源。</description><pubDate>Sat, 30 May 2026 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;想自己搭一个 ChatGPT 那样的 AI 助手平台，但不想把数据交给第三方？Odysseus 就是干这个的。&lt;/p&gt;
&lt;h2&gt;Odysseus 是什么&lt;a href=&quot;#odysseus-是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;自托管的 AI 工作空间&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它是一个开源平台，可以在你自己的服务器上运行，提供类似 ChatGPT 和 Claude 的体验，但数据完全在你手里。&lt;/p&gt;
&lt;p&gt;GitHub 5.3 万星，MIT 协议。&lt;/p&gt;
&lt;h2&gt;核心功能&lt;a href=&quot;#核心功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1. AI 聊天&lt;a href=&quot;#1-ai-聊天&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持多种大语言模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI（GPT-4）&lt;/li&gt;
&lt;li&gt;Anthropic（Claude）&lt;/li&gt;
&lt;li&gt;Google AI（Gemini）&lt;/li&gt;
&lt;li&gt;Ollama（本地模型）&lt;/li&gt;
&lt;li&gt;任何 OpenAI 兼容的 API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以同时配置多个模型，随时切换。&lt;/p&gt;
&lt;h3&gt;2. AI Agent&lt;a href=&quot;#2-ai-agent&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;不只是聊天，还能让 AI 自己执行任务。支持任务分解、工具调用、网页浏览、代码执行等能力。&lt;/p&gt;
&lt;h3&gt;3. 深度研究&lt;a href=&quot;#3-深度研究&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;AI 驱动的研究功能，可以多步骤收集信息、阅读文献、生成研究报告。支持引文管理和事实核查。&lt;/p&gt;
&lt;h3&gt;4. 文档编辑&lt;a href=&quot;#4-文档编辑&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;内置文档编辑器，AI 可以辅助你写文档、做笔记。支持 Markdown、HTML、CSV 等格式。&lt;/p&gt;
&lt;h3&gt;5. 邮件管理&lt;a href=&quot;#5-邮件管理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;集成 IMAP/SMTP，AI 可以帮你：&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;h3&gt;6. 日历&lt;a href=&quot;#6-日历&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持 CalDAV 同步，可以和 Nextcloud、Radicale 等日历服务对接。AI 可以帮你安排日程、检测冲突。&lt;/p&gt;
&lt;h3&gt;7. 记忆和技能&lt;a href=&quot;#7-记忆和技能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;AI 有持久记忆和技能系统，用得越久越了解你的工作习惯。&lt;/p&gt;
&lt;h2&gt;安装部署&lt;a href=&quot;#安装部署&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;最简单的方式是 Docker：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; clone&lt;/span&gt;&lt;span&gt; https://github.com/tj-actions/odysseus.git&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; odysseus&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;docker-compose&lt;/span&gt;&lt;span&gt; up&lt;/span&gt;&lt;span&gt; -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后打开 &lt;code&gt;http://localhost:3000&lt;/code&gt; 就能用了。&lt;/p&gt;
&lt;p&gt;手动安装需要 Node.js 18+ 和 PostgreSQL：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; .env.example&lt;/span&gt;&lt;span&gt; .env&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; prisma&lt;/span&gt;&lt;span&gt; generate&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; prisma&lt;/span&gt;&lt;span&gt; db&lt;/span&gt;&lt;span&gt; push&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;技术栈&lt;a href=&quot;#技术栈&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Next.js 14 + TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS + shadcn/ui&lt;/li&gt;
&lt;li&gt;Prisma ORM（PostgreSQL/SQLite）&lt;/li&gt;
&lt;li&gt;Vercel AI SDK&lt;/li&gt;
&lt;li&gt;Docker 部署&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;适用场景&lt;a href=&quot;#适用场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;个人 AI 助手&lt;/strong&gt; — 搭建自己的 ChatGPT，数据完全私有&lt;/li&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;/ul&gt;
&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Odysseus 是目前功能最全的自托管 AI 工作空间。聊天、代理、研究、文档、邮件、日历，基本上你能想到的 AI 应用场景它都覆盖了。如果你想要一个完全属于自己的 AI 助手平台，这个值得认真考虑。&lt;/p&gt;
&lt;p&gt;GitHub：&lt;a href=&quot;https://github.com/tj-actions/odysseus&quot;&gt;github.com/tj-actions/odysseus&lt;/a&gt;&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:AI工作空间</category><category>tag:自托管</category><category>tag:开源项目</category></item><item><title>Open Design：开源版 Claude Design，本地运行的设计工具</title><link>https://qiyuan.icu/en/post/open-design</link><guid isPermaLink="false">en:open-design</guid><description>Open Design 开源设计工具，Claude Design 的本地替代品，支持150+设计系统和261个插件，完全免费。</description><pubDate>Sat, 30 May 2026 01:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Anthropic 的 Claude Design 很好用，但它是闭源的，数据要上传到云端。Open Design 提供了一个开源替代方案——功能类似，但完全本地运行。&lt;/p&gt;
&lt;h2&gt;Open Design 是什么&lt;a href=&quot;#open-design-是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;开源的 Claude Design 替代品&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它是一个本地运行的设计工具，界面和功能对标 Claude Design，但代码完全开源，数据不离开你的电脑。&lt;/p&gt;
&lt;p&gt;GitHub 5.9 万星，Apache 2.0 协议。&lt;/p&gt;
&lt;h2&gt;核心功能&lt;a href=&quot;#核心功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1. 本地运行&lt;a href=&quot;#1-本地运行&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;所有处理都在本地完成，不需要联网，数据不会上传到任何服务器。对于处理敏感设计稿的团队来说，这是关键优势。&lt;/p&gt;
&lt;h3&gt;2. 150+ 设计系统&lt;a href=&quot;#2-150-设计系统&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;内置了 150 多个设计系统，包括常见的 UI 框架和组件库。不需要从零开始，直接在现有设计系统基础上工作。&lt;/p&gt;
&lt;h3&gt;3. 261 个插件&lt;a href=&quot;#3-261-个插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;插件生态丰富，覆盖各种设计场景。从图标生成到动效设计，基本都能找到对应的插件。&lt;/p&gt;
&lt;h3&gt;4. 21 个编码代理&lt;a href=&quot;#4-21-个编码代理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持 21 个编码代理，可以直接把设计稿转换成代码。设计完直接出前端代码，省去了设计到开发的沟通成本。&lt;/p&gt;
&lt;h3&gt;5. 14 个媒体提供商&lt;a href=&quot;#5-14-个媒体提供商&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持多种媒体资源来源，可以直接在设计中使用各种素材。&lt;/p&gt;
&lt;h2&gt;安装使用&lt;a href=&quot;#安装使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;下载地址：&lt;a href=&quot;https://open-design.ai&quot;&gt;open-design.ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;支持 macOS、Windows、Linux，下载后直接安装。首次启动可以选择内置的 Model Router，不需要额外配置 API key。&lt;/p&gt;
&lt;h2&gt;和 Claude Design 对比&lt;a href=&quot;#和-claude-design-对比&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Design 是 Anthropic 的官方产品，功能强大但需要联网，数据在云端处理。Open Design 功能对标，但完全本地运行，开源免费。&lt;/p&gt;
&lt;p&gt;如果你在意数据隐私，或者需要在没有网络的环境下工作，Open Design 是目前最好的替代方案。&lt;/p&gt;
&lt;h2&gt;适用场景&lt;a href=&quot;#适用场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UI/UX 设计&lt;/strong&gt; — 和 Claude Design 类似的使用体验&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;strong&gt;团队协作&lt;/strong&gt; — 开源方案更容易定制和集成&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Open Design 是目前最成熟的开源设计工具之一。如果你在用 Claude Design 但介意数据隐私，或者想要一个完全可控的设计工具，可以试试这个。&lt;/p&gt;
&lt;p&gt;GitHub：&lt;a href=&quot;https://github.com/nexu-io/open-design&quot;&gt;github.com/nexu-io/open-design&lt;/a&gt;&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:设计工具</category><category>tag:Claude Design</category><category>tag:开源项目</category></item><item><title>MemPalace：开源AI记忆系统，让AI记住你说过的每一句话</title><link>https://qiyuan.icu/en/post/mempalace</link><guid isPermaLink="false">en:mempalace</guid><description>MemPalace 本地优先的AI记忆系统，LongMemEval基准测试96.6%召回率，零API调用，支持Claude Code等工具。</description><pubDate>Fri, 29 May 2026 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;用AI写代码或者做项目的时候，最烦的就是它”失忆”。上一个对话里讨论的方案，新开一个窗口就全忘了。MemPalace 解决的就是这个问题。&lt;/p&gt;
&lt;h2&gt;MemPalace 是什么&lt;a href=&quot;#mempalace-是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;让AI拥有持久记忆的开源系统&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它是本地优先的，所有数据存在你自己的设备上，不依赖云服务。在 LongMemEval 基准测试中达到了 96.6% 的 R@5 召回率，而且零 API 调用。&lt;/p&gt;
&lt;p&gt;GitHub 5.3 万星，MIT 协议。&lt;/p&gt;
&lt;h2&gt;核心功能&lt;a href=&quot;#核心功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1. 本地优先&lt;a href=&quot;#1-本地优先&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;所有记忆数据存在本地，不需要上传到任何云服务。对于在意隐私的人来说，这是最重要的特性。&lt;/p&gt;
&lt;h3&gt;2. 逐字存储&lt;a href=&quot;#2-逐字存储&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;不是向量化后的近似存储，而是逐字存储原始内容。这意味着你之前说过的话、写过的代码，都是原样保存，不会因为向量化而丢失细节。&lt;/p&gt;
&lt;h3&gt;3. 高召回率&lt;a href=&quot;#3-高召回率&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;LongMemEval 基准测试 96.6% 的 R@5 召回率，意味着你问它之前聊过的内容，它几乎都能准确找到。&lt;/p&gt;
&lt;h3&gt;4. 可插拔后端&lt;a href=&quot;#4-可插拔后端&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;支持多种存储后端，可以根据自己的需求选择。&lt;/p&gt;
&lt;h3&gt;5. 和 Claude Code 集成&lt;a href=&quot;#5-和-claude-code-集成&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;专门为 Claude Code 等 AI 编程工具设计了集成方案。Claude Code 的会话默认 30 天过期，MemPalace 可以帮你保留关键信息。&lt;/p&gt;
&lt;h2&gt;安装使用&lt;a href=&quot;#安装使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; mempalace&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装后按照文档配置存储路径和后端，就可以开始使用了。&lt;/p&gt;
&lt;h2&gt;适用场景&lt;a href=&quot;#适用场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;AI 编程助手记忆&lt;a href=&quot;#ai-编程助手记忆&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用 Claude Code 或 Cursor 写代码的时候，MemPalace 可以记住你之前的讨论、决策和代码片段。新会话里直接问”之前那个函数怎么写的”，它能准确回答。&lt;/p&gt;
&lt;h3&gt;长期项目管理&lt;a href=&quot;#长期项目管理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一个项目做几个月，中间的讨论和决策很容易丢失。MemPalace 帮你保存所有上下文，随时可以回溯。&lt;/p&gt;
&lt;h3&gt;知识积累&lt;a href=&quot;#知识积累&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;把日常的学习笔记、想法、代码片段都存进去，慢慢形成一个个人知识库。&lt;/p&gt;
&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;MemPalace 解决的是 AI 工具最大的痛点之一——失忆。本地存储、高召回率、和主流 AI 工具集成，对于经常用 AI 写代码的人来说值得试试。&lt;/p&gt;
&lt;p&gt;GitHub：&lt;a href=&quot;https://github.com/MemPalace/mempalace&quot;&gt;github.com/MemPalace/mempalace&lt;/a&gt;&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:AI记忆系统</category><category>tag:开源工具</category><category>tag:Agent</category></item><item><title>CloakBrowser：绕过 Cloudflare 的开源隐身浏览器</title><link>https://qiyuan.icu/en/post/cloak-browser</link><guid isPermaLink="false">en:cloak-browser</guid><description>CloakBrowser 一款从 Chromium C++ 源码层面修改指纹的开源隐身浏览器，通过 30+ 反爬检测，pip install 即用。</description><pubDate>Fri, 29 May 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;做爬虫或者自动化的人最头疼的就是反爬检测。Cloudflare Turnstile、reCAPTCHA、FingerprintJS……普通浏览器或者 Selenium/Puppeteer 裸跑，分分钟被拦。CloakBrowser 解决的就是这个问题。&lt;/p&gt;
&lt;h2&gt;CloakBrowser 是什么&lt;a href=&quot;#cloakbrowser-是什么&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一句话：&lt;strong&gt;从 Chromium C++ 源码层面修改指纹的隐身浏览器&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;不是 JS 注入，不是配置补丁，而是直接改 Chromium 的源码。反爬系统检测到的就是一个正常浏览器——因为它本质上就是。&lt;/p&gt;
&lt;p&gt;开源，MIT 协议，GitHub 2.4 万星。&lt;/p&gt;
&lt;h2&gt;核心能力&lt;a href=&quot;#核心能力&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;1. 58 个 C++ 源码级补丁&lt;a href=&quot;#1-58-个-c-源码级补丁&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;覆盖了几乎所有指纹检测点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Canvas 指纹&lt;/li&gt;
&lt;li&gt;WebGL 指纹&lt;/li&gt;
&lt;li&gt;音频指纹&lt;/li&gt;
&lt;li&gt;字体列表&lt;/li&gt;
&lt;li&gt;GPU 信息&lt;/li&gt;
&lt;li&gt;屏幕参数&lt;/li&gt;
&lt;li&gt;WebRTC 泄露&lt;/li&gt;
&lt;li&gt;网络时序&lt;/li&gt;
&lt;li&gt;自动化信号（CDP 检测）&lt;/li&gt;
&lt;li&gt;输入行为模拟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些修改是在浏览器编译层面做的，不是运行时注入 JS，所以检测网站根本发现不了。&lt;/p&gt;
&lt;h3&gt;2. 通过 30+ 反爬检测&lt;a href=&quot;#2-通过-30-反爬检测&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;官方测试通过的检测网站包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Turnstile&lt;/strong&gt; — 直接通过&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FingerprintJS&lt;/strong&gt; — 无法识别&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BrowserScan&lt;/strong&gt; — 通过&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;reCAPTCHA v3&lt;/strong&gt; — 评分 0.9（人类级别）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实测效果确实不错，Cloudflare 的 5 秒验证页基本秒过。&lt;/p&gt;
&lt;h3&gt;3. 人类行为模拟&lt;a href=&quot;#3-人类行为模拟&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;开启 &lt;code&gt;humanize=True&lt;/code&gt; 后：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;鼠标移动轨迹像真人（不是直线）&lt;/li&gt;
&lt;li&gt;键盘输入有自然的间隔&lt;/li&gt;
&lt;li&gt;滚动行为模拟人类习惯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这对行为检测类的反爬系统很有效。&lt;/p&gt;
&lt;h3&gt;4. 和 Playwright/Puppeteer 完美兼容&lt;a href=&quot;#4-和-playwrightpuppeteer-完美兼容&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;API 完全兼容，换一行 import 就行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 之前&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; playwright.sync_api &lt;/span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; sync_playwright&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pw &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; sync_playwright().start()&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;browser &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; pw.chromium.launch()&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 现在&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; cloakbrowser &lt;/span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; launch&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;browser &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; launch()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;JavaScript 也一样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { launch } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &apos;cloakbrowser&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; browser&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; launch&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你之前写的 Playwright 代码几乎不用改。&lt;/p&gt;
&lt;h3&gt;5. 自带配置文件管理器&lt;a href=&quot;#5-自带配置文件管理器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;CloakBrowser 还有一个 &lt;strong&gt;Browser Profile Manager&lt;/strong&gt;，可以自托管：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; -p&lt;/span&gt;&lt;span&gt; 8080:8080&lt;/span&gt;&lt;span&gt; -v&lt;/span&gt;&lt;span&gt; cloakprofiles:/data&lt;/span&gt;&lt;span&gt; cloakhq/cloakbrowser-manager&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;打开 &lt;code&gt;localhost:8080&lt;/code&gt; 就能创建不同的浏览器配置文件，每个文件有独立的指纹和代理。类似于 Multilogin、GoLogin，但免费开源。&lt;/p&gt;
&lt;h2&gt;安装&lt;a href=&quot;#安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; cloakbrowser&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 或者&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; cloakbrowser&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;首次运行会自动下载 Chromium 二进制文件（约 200MB），之后缓存在本地。&lt;/p&gt;
&lt;p&gt;Docker 也可以直接用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;docker&lt;/span&gt;&lt;span&gt; run&lt;/span&gt;&lt;span&gt; --rm&lt;/span&gt;&lt;span&gt; cloakhq/cloakbrowser&lt;/span&gt;&lt;span&gt; cloaktest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;实际使用场景&lt;a href=&quot;#实际使用场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;爬虫绕过反爬&lt;a href=&quot;#爬虫绕过反爬&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;最直接的用途。很多网站上了 Cloudflare 或者类似防护，用 requests 或者普通 Selenium 根本过不去。CloakBrowser 直接绕过，省去大量对抗时间。&lt;/p&gt;
&lt;h3&gt;自动化测试&lt;a href=&quot;#自动化测试&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;有些网站的反爬系统会误杀自动化测试。用 CloakBrowser 跑测试用例，既能正常测试，又不会被拦。&lt;/p&gt;
&lt;h3&gt;数据采集&lt;a href=&quot;#数据采集&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;需要从有反爬保护的网站采集数据时，CloakBrowser 是目前最省心的方案之一。&lt;/p&gt;
&lt;h2&gt;使用建议&lt;a href=&quot;#使用建议&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;配合住宅代理使用。&lt;/strong&gt; 指纹再好，IP 是机房的也会被拦。住宅代理 + CloakBrowser 是最佳组合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开启 humanize 模式。&lt;/strong&gt; 除非你确定目标网站不检测行为，否则建议始终开启。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要频繁切换指纹。&lt;/strong&gt; 和正常使用一样，一个 session 用一个指纹，别来回切换。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关注更新。&lt;/strong&gt; 反爬系统一直在升级，CloakBrowser 也在持续更新补丁，保持最新版本很重要。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;CloakBrowser 是目前开源反检测浏览器里质量最高的一个。C++ 源码级的修改让它在对抗反爬系统时有天然优势，加上和 Playwright/Puppeteer 的兼容性，迁移成本极低。&lt;/p&gt;
&lt;p&gt;如果你受够了和 Cloudflare 斗智斗勇，可以试试这个。免费开源，没有不用的理由。&lt;/p&gt;
&lt;p&gt;GitHub：&lt;a href=&quot;https://github.com/CloakHQ/CloakBrowser&quot;&gt;github.com/CloakHQ/CloakBrowser&lt;/a&gt;&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:隐身浏览器</category><category>tag:Cloudflare</category><category>tag:开源项目</category></item><item><title>Headroom：让AI Agent省60-95% Token的开源压缩工具</title><link>https://qiyuan.icu/en/post/headroom</link><guid isPermaLink="false">en:headroom</guid><description>一个本地运行的上下文压缩层，能在不损失准确率的前提下大幅削减AI Agent的Token消耗。支持Claude Code、Codex、Cursor等主流编程助手。</description><pubDate>Thu, 28 May 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近在用Claude Code的时候发现一个问题——跑几个复杂任务下来，Token消耗快得吓人。尤其是那种需要读大量文件、搜索代码库的场景，一轮对话下来几万Token就没了。&lt;/p&gt;
&lt;p&gt;后来找到了&lt;strong&gt;Headroom&lt;/strong&gt;这个项目，试了一下确实有效果。&lt;/p&gt;
&lt;h2&gt;它是做什么的&lt;a href=&quot;#它是做什么的&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;简单说，Headroom是一个&lt;strong&gt;上下文压缩层&lt;/strong&gt;。它在你的AI Agent和LLM之间加了一层，把要发送的内容先压缩一遍再送给模型。&lt;/p&gt;
&lt;p&gt;核心卖点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;省Token&lt;/strong&gt;：官方数据是60-95%的削减&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不影响准确率&lt;/strong&gt;：在GSM8K、TruthfulQA等基准测试上，压缩后准确率基本不变&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;/ul&gt;
&lt;h2&gt;实际效果&lt;a href=&quot;#实际效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;官方给出的测试数据：&lt;/p&gt;



































&lt;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;代码搜索（100条结果）&lt;/td&gt;&lt;td&gt;17,765 tokens&lt;/td&gt;&lt;td&gt;1,408 tokens&lt;/td&gt;&lt;td&gt;92%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SRE故障排查&lt;/td&gt;&lt;td&gt;65,694 tokens&lt;/td&gt;&lt;td&gt;5,118 tokens&lt;/td&gt;&lt;td&gt;92%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GitHub Issue分类&lt;/td&gt;&lt;td&gt;54,174 tokens&lt;/td&gt;&lt;td&gt;14,761 tokens&lt;/td&gt;&lt;td&gt;73%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;代码库探索&lt;/td&gt;&lt;td&gt;78,502 tokens&lt;/td&gt;&lt;td&gt;41,254 tokens&lt;/td&gt;&lt;td&gt;47%&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;我在自己项目里试了一下，大概能省50-70%左右，没有官方说的那么夸张，但确实能省不少。&lt;/p&gt;
&lt;h2&gt;怎么用&lt;a href=&quot;#怎么用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;最简单的方式是一行命令包裹你的Agent：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 安装&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; &quot;headroom-ai[all]&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 包裹Claude Code&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;headroom&lt;/span&gt;&lt;span&gt; wrap&lt;/span&gt;&lt;span&gt; claude&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 包裹Codex&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;headroom&lt;/span&gt;&lt;span&gt; wrap&lt;/span&gt;&lt;span&gt; codex&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 或者用代理模式（零代码改动）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;headroom&lt;/span&gt;&lt;span&gt; proxy&lt;/span&gt;&lt;span&gt; --port&lt;/span&gt;&lt;span&gt; 8787&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;代理模式最方便——它启动一个本地代理服务器，你的Agent配置指向这个代理就行，不用改任何代码。&lt;/p&gt;
&lt;h2&gt;支持哪些Agent&lt;a href=&quot;#支持哪些agent&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Agent&lt;/th&gt;&lt;th&gt;支持方式&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Claude Code&lt;/td&gt;&lt;td&gt;&lt;code&gt;headroom wrap claude&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Codex&lt;/td&gt;&lt;td&gt;&lt;code&gt;headroom wrap codex&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cursor&lt;/td&gt;&lt;td&gt;打印配置，粘贴一次即可&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aider&lt;/td&gt;&lt;td&gt;启动代理+启动&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Copilot CLI&lt;/td&gt;&lt;td&gt;启动代理+启动&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;基本上主流的编程AI助手都支持。&lt;/p&gt;
&lt;h2&gt;几个亮点&lt;a href=&quot;#几个亮点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. 跨Agent记忆共享&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你同时用Claude Code和Codex，Headroom可以在它们之间共享压缩后的上下文，避免重复处理相同内容。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. &lt;code&gt;headroom learn&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个功能挺有意思——它会分析你失败的会话，找出问题所在，然后自动写入&lt;code&gt;CLAUDE.md&lt;/code&gt;或&lt;code&gt;AGENTS.md&lt;/code&gt;，相当于让Agent自己总结经验教训。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 内容感知压缩&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是简单的截断或删减，而是根据内容类型选择不同的压缩算法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSON数据 → SmartCrusher&lt;/li&gt;
&lt;li&gt;代码 → CodeCompressor（AST感知）&lt;/li&gt;
&lt;li&gt;文本 → Kompress-base（专门训练的模型）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;适合谁用&lt;a href=&quot;#适合谁用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;每天用AI编程助手，Token消耗大的开发者&lt;/li&gt;
&lt;li&gt;同时用多个Agent，想要统一管理的团队&lt;/li&gt;
&lt;li&gt;对数据隐私有要求，不想把代码发到外部服务的人&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;不适合谁用&lt;a href=&quot;#不适合谁用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;只用单一Agent，且用量不大&lt;/li&gt;
&lt;li&gt;沙箱环境，没法跑本地进程&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;https://github.com/chopratejas/headroom&quot;&gt;https://github.com/chopratejas/headroom&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1.4万星，Apache 2.0协议，Python和TypeScript都支持。如果你也在为Token费用头疼，可以试试。&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:Token压缩</category><category>tag:AI Agent</category><category>tag:开源项目</category></item><item><title>Python 安装教程：Windows 安装配置 + pip 国内镜像加速</title><link>https://qiyuan.icu/en/post/python-install</link><guid isPermaLink="false">en:python-install</guid><description>从下载到配置 pip 国内源加速的完整流程，附 Python 3.8-3.12 Windows 安装包合集网盘下载。</description><pubDate>Thu, 28 May 2026 01:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章把自己装 Python 的流程整理了一遍，包括 Windows 安装、环境变量配置、pip 换国内源加速下载。底部附了 Python 3.8 到 3.12 Windows 安装包合集的夸克网盘链接，一个文件夹全包，不需要翻墙也不用到处找。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Windows 安装 Python&lt;a href=&quot;#windows-安装-python&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;下载安装包&lt;a href=&quot;#下载安装包&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;夸克网盘打包了 Python 3.8 到 3.12 全部 Windows 64 位安装包，一个链接全下完（国内高速，无需翻墙）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;所有安装包同步自 python.org 官方，MD5 一致。下载后在文件夹里选你需要的版本安装即可。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如果不知道选哪个，直接选 &lt;strong&gt;3.10&lt;/strong&gt; 或 &lt;strong&gt;3.12&lt;/strong&gt;，覆盖绝大多数使用场景。&lt;/p&gt;
&lt;/blockquote&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;Python 3.8.10&lt;/td&gt;&lt;td&gt;兼容老项目&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python 3.9.13&lt;/td&gt;&lt;td&gt;稳定版&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python 3.10.11&lt;/td&gt;&lt;td&gt;推荐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python 3.11.9&lt;/td&gt;&lt;td&gt;性能提升&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Python 3.12.10&lt;/td&gt;&lt;td&gt;推荐&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;a href=&quot;https://pan.quark.cn/s/af778207f5ae?pwd=zGzx&quot;&gt;夸克网盘下载（3.8-3.12 合集）&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;校验文件完整性&lt;a href=&quot;#校验文件完整性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;下载完成后建议校验哈希值，确保文件完整无损坏。所有安装包同步自 python.org 官方，MD5 一致。&lt;/p&gt;
&lt;p&gt;MD5：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 3.8.10&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;62cf1a12a5276b0259e8761d4cf4fe42&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.9.13&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;e7062b85c3624af82079794729618eca&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.10.11&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;a55e9c1e6421c84a4bd8b4be41492f51&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.11.9&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;e8dcd502e34932eebcaf1be056d5cbcd&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.12.10&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;5eddb0b6f12c852725de071ae681dde4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SHA256：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;# 3.8.10&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;7628244cb53408b50639d2c1287c659f4e29d3dfdb9084b11aed5870c0c6a48a&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.9.13&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;fb3d0466f3754752ca7fd838a09ffe53375ff2c981279fd4bc23a005458f7f5d&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.10.11&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;d8dede5005564b408ba50317108b765ed9c3c510342a598f9fd42681cbe0648b&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.11.9&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;5ee42c4eee1e6b4464bb23722f90b45303f79442df63083f05322f1785f5fdde&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;# 3.12.10&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;67b5635e80ea51072b87941312d00ec8927c4db9ba18938f7ad2d27b328b95fb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;校验命令&lt;a href=&quot;#校验命令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Windows 下打开 cmd，进入下载目录，执行以下命令（以 3.12 为例）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;certutil&lt;/span&gt;&lt;span&gt; -hashfile&lt;/span&gt;&lt;span&gt; python-3.12.10-amd64.exe&lt;/span&gt;&lt;span&gt; MD5&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;certutil&lt;/span&gt;&lt;span&gt; -hashfile&lt;/span&gt;&lt;span&gt; python-3.12.10-amd64.exe&lt;/span&gt;&lt;span&gt; SHA256&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其他版本把文件名替换即可，格式为 &lt;code&gt;certutil -hashfile python-版本号-amd64.exe MD5&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;安装步骤&lt;a href=&quot;#安装步骤&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;双击下载好的 &lt;code&gt;.exe&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第一个页面一定要勾选 “Add Python to PATH”&lt;/strong&gt;（底部那个复选框），然后点 “Install Now”&lt;/li&gt;
&lt;li&gt;等进度条走完，点 “Close”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果安装时忘了勾选 PATH，有两个补救办法：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方法一：重新安装&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;卸载后重新运行安装包，这次记得勾选。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方法二：手动加环境变量&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;右键「此电脑」→ 属性 → 高级系统设置 → 环境变量&lt;/li&gt;
&lt;li&gt;在「系统变量」里找到 &lt;code&gt;Path&lt;/code&gt;，双击编辑&lt;/li&gt;
&lt;li&gt;新建两条，分别填入：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;C:\Users\你的用户名\AppData\Local\Programs\Python\Python310\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;C:\Users\你的用户名\AppData\Local\Programs\Python\Python310\Scripts\&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;确定保存，&lt;strong&gt;重新打开&lt;/strong&gt; cmd 或 PowerShell&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;验证安装&lt;a href=&quot;#验证安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;打开 cmd 或 PowerShell，输入：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; --version&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看到版本号就说明装好了。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;pip 换国内镜像加速&lt;a href=&quot;#pip-换国内镜像加速&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;默认的 pip 源在国外，国内下载包经常特别慢，甚至超时。换一下源就好了。&lt;/p&gt;
&lt;p&gt;不换源的话大概会遇到这种报错：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;ERROR:&lt;/span&gt;&lt;span&gt; Could&lt;/span&gt;&lt;span&gt; not&lt;/span&gt;&lt;span&gt; find&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt; version&lt;/span&gt;&lt;span&gt; that&lt;/span&gt;&lt;span&gt; satisfies&lt;/span&gt;&lt;span&gt; the&lt;/span&gt;&lt;span&gt; requirement&lt;/span&gt;&lt;span&gt; requests&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;ERROR:&lt;/span&gt;&lt;span&gt; No&lt;/span&gt;&lt;span&gt; matching&lt;/span&gt;&lt;span&gt; distribution&lt;/span&gt;&lt;span&gt; found&lt;/span&gt;&lt;span&gt; for&lt;/span&gt;&lt;span&gt; requests&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;WARNING:&lt;/span&gt;&lt;span&gt; Retrying&lt;/span&gt;&lt;span&gt; (Retry(total=4, &lt;/span&gt;&lt;span&gt;connect=None,&lt;/span&gt;&lt;span&gt; read=None,&lt;/span&gt;&lt;span&gt; redirect=None,&lt;/span&gt;&lt;span&gt; status=None&lt;/span&gt;&lt;span&gt;)) after connection broken by &lt;/span&gt;&lt;span&gt;&apos;ConnectTimeoutError(&amp;lt;pip._vendor.urllib3.connection.HTTPSConnection object at 0x...&amp;gt;, &apos;&lt;/span&gt;&lt;span&gt;Connection to pypi.org timed out. (&lt;/span&gt;&lt;span&gt;connect&lt;/span&gt;&lt;span&gt; timeout=&lt;/span&gt;&lt;span&gt;15.0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&apos;)&apos;&lt;/span&gt;&lt;span&gt;: /simple/requests/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;临时使用&lt;a href=&quot;#临时使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;每次安装时加 &lt;code&gt;-i&lt;/code&gt; 参数指定源：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; requests&lt;/span&gt;&lt;span&gt; -i&lt;/span&gt;&lt;span&gt; https://mirrors.aliyun.com/pypi/simple/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;永久生效（推荐）&lt;a href=&quot;#永久生效推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一条命令搞定，以后所有 &lt;code&gt;pip install&lt;/code&gt; 都走国内源。选一个你喜欢的，复制粘贴运行即可：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阿里云（推荐）&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.index-url&lt;/span&gt;&lt;span&gt; https://mirrors.aliyun.com/pypi/simple/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.trusted-host&lt;/span&gt;&lt;span&gt; mirrors.aliyun.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;清华&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.index-url&lt;/span&gt;&lt;span&gt; https://pypi.tuna.tsinghua.edu.cn/simple/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.trusted-host&lt;/span&gt;&lt;span&gt; pypi.tuna.tsinghua.edu.cn&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;腾讯&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.index-url&lt;/span&gt;&lt;span&gt; https://mirrors.cloud.tencent.com/pypi/simple/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.trusted-host&lt;/span&gt;&lt;span&gt; mirrors.cloud.tencent.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;中科大&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.index-url&lt;/span&gt;&lt;span&gt; https://pypi.mirrors.ustc.edu.cn/simple/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; set&lt;/span&gt;&lt;span&gt; global.trusted-host&lt;/span&gt;&lt;span&gt; pypi.mirrors.ustc.edu.cn&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;四个都行，随便选一个。我个人习惯用阿里云，比较稳定。&lt;/p&gt;
&lt;h3&gt;验证是否生效&lt;a href=&quot;#验证是否生效&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;pip&lt;/span&gt;&lt;span&gt; config&lt;/span&gt;&lt;span&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看到 &lt;code&gt;index-url&lt;/code&gt; 指向你设置的镜像地址就对了。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;常见问题&lt;a href=&quot;#常见问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Q：python 和 python3 命令有什么区别？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Windows 上一般只有 &lt;code&gt;python&lt;/code&gt;，Linux/Mac 上可能两个都有。装好之后用 &lt;code&gt;python --version&lt;/code&gt; 确认就行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：装多个版本会冲突吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Windows 上可以装多个版本，但默认只有一个在 PATH 里。需要切换的话用 &lt;code&gt;py -3.10&lt;/code&gt; 这样的命令指定版本（py launcher 会自动装上）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：pip install 报错 “Could not find a version that satisfies the requirement”？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;大概率是源的问题，先确认换源成功了（&lt;code&gt;pip config list&lt;/code&gt;）。如果换了源还是不行，可能是这个包本身不支持你的 Python 版本，试试升级 Python。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q：需要虚拟环境吗？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;做项目的话建议用。一个项目一个环境，依赖互不干扰：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; -m&lt;/span&gt;&lt;span&gt; venv&lt;/span&gt;&lt;span&gt; myenv&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;myenv\Scripts\activate&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;激活后命令行前面会出现 &lt;code&gt;(myenv)&lt;/code&gt;，之后 &lt;code&gt;pip install&lt;/code&gt; 的包只装在这个环境里。&lt;/p&gt;</content:encoded><category>category:笔记</category><category>tag:Python安装</category><category>tag:Windows环境</category><category>tag:pip加速</category></item></channel></rss>