@@ -45,24 +45,9 @@ sequenceDiagram
4545文件位置:/scripts/ingest.py
4646
4747* ** 环境依赖** :requests, python-frontmatter (需生成 requirements.txt)
48- * ** 鉴权配置** :脚本需读取环境变量 CLOUDFLARE\_ ACCOUNT\_ ID 和 CLOUDFLARE\_ API\_ TOKEN(注意:CF\_ 前缀已弃用,需使用 CLOUDFLARE\_ 前缀)。
49- * ** 处理逻辑** :
50- 1 . ** 解析 Frontmatter** :遍历 content/posts/\* .md,提取 title, date, url (slug)。
51- 2 . ** 文本切片 (Chunking)** :
52- * 清洗 Markdown 符号 (去除图片、粗体标记等)。
53- * 长度控制:约 500 字符/chunk,重叠 50 字符。
54- 3 . ** 生成确定性 ID (关键)** :
55- * ** ID 生成规则** :md5(full\_ url \+ chunk\_ index)。
56- * ** 目的** :实现幂等性。如果文章内容未变,重新运行脚本时,生成的向量 ID 不变,Cloudflare 会执行 Upsert (覆盖) 而不是 Insert (新增),防止数据库产生重复脏数据。
57- 4 . ** 向量化与存储** :
58- * 调用 Cloudflare Workers AI REST API 生成向量。
59- * 调用 Vectorize REST API 批量上传 (ndjson 格式)。
60- * ** Metadata 设计** :
61- {
62- "url": "/posts/my-k8s-article/",
63- "title": "K8s 学习笔记",
64- "text": "Kubernetes 是一个容器编排平台..."
65- }
48+ * ** 鉴权配置** :脚本需读取环境变量 CLOUDFLARE\_ ACCOUNT\_ ID 和 CLOUDFLARE\_ API\_ TOKEN。
49+ * ** 状态管理** :使用 ` .ingest_state.json ` 记录文件哈希,实现增量更新。
50+ * ** 自动化** :通过 GitHub Actions (` .github/workflows/rag-ingest.yml ` ) 自动触发,并自动提交状态文件。
6651
6752### ** 模块 B: 后端 API (Pages Function)**
6853
@@ -98,16 +83,10 @@ sequenceDiagram
9883
9984描述:嵌入博客的悬浮聊天窗。
10085文件位置:layouts/partials/chatbox.html
86+ 样式文件:assets/css/extended/chat.css (移动到 extended 目录以被 Hugo 自动处理)
10187
10288* ** 技术栈** :Vanilla JS (无框架依赖,确保轻量)。
103- * ** UI 构成** :
104- * ** Launcher** :右下角悬浮圆钮 (SVG Icon)。
105- * ** Chat Window** :包含 Header (博主头像), Message List (滚动区), Input Area。
106- * ** 交互逻辑** :
107- * ** 状态管理** :维护一个简单的 chatHistory 数组在内存中。
108- * ** Markdown 渲染** :引入轻量级库 marked.js (通过 CDN 引入),将 AI 返回的 markdown 文本转为 HTML 显示。
109- * ** Loading 态** :发送请求时,显示 "思考中..." 动画,且禁用输入框。
110- * ** 引用展示** :解析后端返回的 metadata,在气泡下方用小字显示 "Ref: \[ 文章标题\] " 链接,增加可信度。
89+ * ** 依赖** :marked.js (用于渲染 Markdown 回复)。
11190
11291## ** 5\. 提示词工程规范 (System Prompt Spec)**
11392
@@ -150,4 +129,5 @@ Cursor 提示 (Cursor Prompts):
1501292 . requirements.txt: Python 依赖列表。
1511303 . functions/api/chat.js: 含历史记录处理的后端。
1521314 . layouts/partials/chatbox.html: 含 marked.js 集成的前端。
153- 5 . assets/css/chat.css: 适配移动端的样式。
132+ 5 . assets/css/extended/chat.css: 适配移动端的样式。
133+ 6 . .github/workflows/rag-ingest.yml: 自动化数据更新工作流。
0 commit comments