<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Cloudflare - EchoPing&#39;s Blog</title>
        <link>/tags/cloudflare/</link>
        <description>最新内容 - Cloudflare - EchoPing&#39;s Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 18 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="/tags/cloudflare/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Tiku-cfw：基于 Cloudflare Worker 的 AI 题库服务</title>
            <link>/projects/tiku-cfw/</link>
            <pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate>
            <guid>/projects/tiku-cfw/</guid>
            <description>&lt;p&gt;Tiku-cfw 是一个部署在 Cloudflare Workers 上的 AI 题库服务。它兼容 &lt;a class=&#34;link&#34; href=&#34;https://docs.ocsjs.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;OCS 网课助手&lt;/a&gt; 的 AnswererWrapper 规范，接收来自 OCS 脚本的搜题请求，先查本地缓存（D1 数据库），命中则直接返回；未命中则调用 AI 模型获取答案，并自动将结果写入缓存。&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;核心思路：用 AI 模型做题，用缓存省钱。同一道题只消耗一次 Token，之后所有请求都走缓存，响应速度极快。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;为什么做这个&#34;&gt;为什么做这个&#xA;&lt;/h2&gt;&lt;p&gt;OCS 网课助手需要对接题库才能自动答题，但公共题库覆盖率有限，自建题库又需要服务器和运维。Tiku-cfw 利用 Cloudflare Workers 的免费额度和 D1 数据库，实现了零成本、零运维的 AI 题库方案。&lt;/p&gt;&#xA;&lt;p&gt;AI 模型负责&amp;quot;做题&amp;quot;，D1 负责&amp;quot;记住答案&amp;quot;。第一次遇到新题时调用模型（稍慢），之后同一道题直接走缓存秒回。题目经过归一化处理后做精确哈希匹配，缓存永不过期。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;核心特性&#34;&gt;核心特性&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;OCS 兼容&lt;/strong&gt;：完全遵循 AnswererWrapper 规范，在 OCS 脚本中填入配置即可使用，无需额外适配。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;AI 多渠道调度&lt;/strong&gt;：支持文本模型和视觉模型两类渠道，按权重调度、最少使用优先轮询，渠道故障自动禁用降级。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;智能缓存&lt;/strong&gt;：题目归一化后精确匹配，命中即返回，永不过期。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;图片题目支持&lt;/strong&gt;：包含图片的题目自动路由到视觉模型渠道处理。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Web 管理面板&lt;/strong&gt;：仪表盘统计、题库管理、API Key 管理、AI 渠道配置、搜索日志，一应俱全。支持深色/浅色主题。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;零成本部署&lt;/strong&gt;：Cloudflare Workers 免费额度 + D1 免费额度 + GitHub Actions 自动部署，不花一分钱。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;技术栈&#34;&gt;技术栈&#xA;&lt;/h2&gt;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;层级&lt;/th&gt;&#xA;          &lt;th&gt;技术&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;运行时&lt;/td&gt;&#xA;          &lt;td&gt;Cloudflare Workers&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;数据库&lt;/td&gt;&#xA;          &lt;td&gt;D1（SQLite）&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;AI 接口&lt;/td&gt;&#xA;          &lt;td&gt;OpenAI 兼容 API&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;后端语言&lt;/td&gt;&#xA;          &lt;td&gt;TypeScript&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;前端&lt;/td&gt;&#xA;          &lt;td&gt;Tailwind CSS + 原生 JS SPA&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;部署&lt;/td&gt;&#xA;          &lt;td&gt;GitHub Actions → Cloudflare Workers&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;工作流程&#34;&gt;工作流程&#xA;&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OCS 脚本发起搜题请求&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → Worker 接收，归一化题目文本&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → 计算哈希，查询 D1 缓存&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → 命中 → 直接返回答案（毫秒级）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → 未命中 → 选择 AI 渠道（按权重 + 最少使用）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           → 有图片？路由到视觉模型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           → 调用模型获取答案&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           → 写入 D1 缓存&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           → 返回答案&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;渠道调度策略：多渠道按权重分配请求，同渠道内多 Key 轮询，优先使用调用次数最少的 Key。某渠道连续失败后自动禁用，避免浪费请求。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;部署与使用&#34;&gt;部署与使用&#xA;&lt;/h2&gt;&lt;p&gt;项目推荐通过 GitHub Actions 自动部署，全程在浏览器中操作，无需安装任何命令行工具。大致流程：Fork 仓库 → 创建 D1 数据库 → 配置 GitHub Secrets → 运行迁移 → 推送触发部署。&lt;/p&gt;&#xA;&lt;p&gt;也支持命令行部署（wrangler）和本地开发调试。&lt;/p&gt;&#xA;&lt;p&gt;部署完成后，在管理面板中配置 AI 渠道和 API Key，复制 OCS 配置 JSON 粘贴到网课助手脚本中即可开始使用。&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;详细的分步部署指南、API 文档、管理面板使用说明都在仓库 README 中。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;项目地址&#34;&gt;项目地址&#xA;&lt;/h2&gt;&lt;p&gt;GitHub：&lt;a class=&#34;link&#34; href=&#34;https://github.com/EchoPing07/Tiku-cfw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/EchoPing07/Tiku-cfw&lt;/a&gt;&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
