Skip to content

Latest commit

 

History

History
251 lines (203 loc) · 10.6 KB

File metadata and controls

251 lines (203 loc) · 10.6 KB

AI 任务助手(Cloudflare AI Task Agent)

一个运行在 Cloudflare 边缘网络的智能对话式 AI 助手,支持对话、任务管理、网络搜索、深度研究和 RAG 文档问答。零服务器费用,无须自建 LLM API。

在线体验: https://ai-agent-worker.irashenhello.workers.dev


核心功能

💬 智能对话

  • 基于 Llama 3.1 8B(Cloudflare Workers AI 免费额度),流式输出,响应快
  • 对话历史自动保存,多会话管理,每个会话自动生成标题
  • 支持设置 AI 助手昵称和用户名,个性化体验

✅ 任务管理(自然语言)

  • 完全不用表单,纯对话管理任务:「帮我记一下买咖啡」 「删除那个任务」 「标记买咖啡完成」
  • LLM 理解意图,自动解析并操作 D1 数据库

🔍 网络搜索

  • 接入 Serper.dev(Google 搜索 API),直接说「搜索 xxx」即可
  • 返回带标题、摘要和链接的结构化结果

📊 深度研究

  • 说「研究一下 xxx」,自动拆解为多个搜索词,并行搜索,整合结果生成结构化报告

📎 RAG 文档问答

  • 上传 PDF、Word、TXT、Markdown 文件,自动解析、分块、向量化(768 维 embedding)
  • 基于 Qdrant Cloud 向量数据库做语义检索,相关内容注入 LLM 上下文

技术架构

                        ┌─────────────────────────┐
                        │    用户浏览器(纯 JS)    │
                        └─────────────┬───────────┘
                                      │ HTTPS
                        ┌─────────────▼───────────┐
                        │   Cloudflare Worker      │
                        │   (Hono Router, 边缘)    │
                        │                         │
                        │  ┌─────────────────┐   │
                        │  │  意图检测路由    │   │
                        │  │  task_agent      │   │
                        │  │  search_agent    │   │
                        │  │  research_agent  │   │
                        │  │  user_info_agent │   │
                        │  └────────┬─────────┘   │
                        │           │             │
                        │  ┌────────▼─────────┐   │
                        │  │  Workers AI      │   │
                        │  │  Llama 3.1 8B    │   │
                        │  └─────────────────┘   │
                        └───────────┬─────────────┘
                                    │
              ┌─────────────────────┼─────────────────────┐
              │                     │                      │
    ┌─────────▼─────────┐  ┌────────▼──────────┐  ┌────────▼──────────┐
    │   Cloudflare D1   │  │   Qdrant Cloud     │  │    Serper.dev     │
    │   (SQLite, 用户/  │  │   (向量数据库,     │  │    (Google 搜索)   │
    │   会话/任务/消息) │  │   RAG 索引)        │  │                    │
    └───────────────────┘  └───────────────────┘  └───────────────────┘

技术栈

层级 技术选型 说明
运行时 Cloudflare Worker 边缘部署,响应快,零服务器成本
AI 模型 Workers AI @cf/meta/llama-3.1-8b-instruct Cloudflare 内置,免费额度
Embedding Workers AI @cf/baai/bge-base-en-v1.5 768 维中文向量
关系数据库 Cloudflare D1(SQLite) 用户、会话、任务、消息、文件元数据
向量数据库 Qdrant Cloud RAG 向量检索,支持语义搜索
搜索 Serper.dev Google 搜索 API,支持中文
框架 Hono 轻量、高性能,兼容 Workers API
ORM Drizzle ORM 类型安全,迁移管理
前端 纯 HTML + JS(无构建工具) 内联到 Worker,零额外资源

数据模型

users ──────< sessions ──────< messages
   │                             (对话历史)
   │
   ├────< tasks              (任务)
   │
   └────< files              (上传文件 + 元数据)
           │
           └─ 向量索引存储在 Qdrant Cloud

项目结构

ai-agent-worker/
├── public/
│   ├── index.html          # 完整前端(HTML + 内联 CSS + 内联 JS)
│   └── app.js              # 前端 JS(prebuild 后内联到 index.html)
├── src/
│   ├── index.ts             # Hono 入口 + 所有 API 路由 + 内联 HTML 导出
│   ├── env.d.ts             # TypeScript 模块声明
│   ├── generated/
│   │   └── index-html.ts    # prebuild 生成:HTML 字符串常量
│   ├── agents/
│   │   └── agent.ts         # 核心 Agent:意图检测 + 5 个子代理
│   ├── lib/
│   │   ├── db.ts            # Drizzle D1 连接封装
│   │   ├── llm.ts           # Workers AI 对话 + embedding 封装
│   │   ├── search.ts        # Serper.dev 搜索封装
│   │   ├── vector.ts        # Qdrant 向量插入 / 搜索 / 删除
│   │   └── file.ts          # 文件解析 + 语义分块(512 字 / 64 字重叠)
│   └── schema/
│       ├── index.ts         # Schema 导出
│       └── tables.ts        # Drizzle 表定义(users / sessions / messages / tasks / files)
├── scripts/
│   └── prebuild.cjs         # 构建前脚本:内联 JS 到 HTML,生成 index-html.ts
├── drizzle/
│   └── 0000_init.sql        # D1 数据库初始化 SQL
├── wrangler.toml            # Worker 配置(D1 绑定、AI 绑定、环境变量)
├── package.json
└── tsconfig.json

快速部署

前置条件

步骤

# 1. 克隆
git clone https://github.com/irashen6/cloudflare-ai-task-agent.git
cd cloudflare-ai-task-agent

# 2. 安装依赖
npm install

# 3. 配置 wrangler.toml
#    填入你的 account_id、database_id、QDRANT_HOST、QDRANT_API_KEY

# 4. 创建 D1 数据库(如还没有)
wrangler d1 create ai-agent-db
#    将返回的 database_id 填入 wrangler.toml 的 [[d1_databases]]

# 5. 推送数据库 schema
wrangler d1 execute ai-agent-db --remote --file=drizzle/0000_init.sql

# 6. 部署
npm run deploy    # 等价于: node scripts/prebuild.cjs && wrangler deploy

# 7. 访问
# https://<your-worker>.workers.dev/

本地开发

npm install
npm run dev       # 等价于: node scripts/prebuild.cjs && wrangler dev
# 访问 http://localhost:8787/

注意需要创建d1数据库,步骤2安装依赖里的第四步,否则发任何消息都会报错 wrangler d1 execute ai-agent-db --local --file=drizzle/0000_init.sql

环境变量(wrangler.toml)

变量 说明 默认值 必需
LLM_MODEL Workers AI 模型路径 @cf/meta/llama-3.1-8b-instruct
SERPER_API_KEY Serper.dev API Key(Google 搜索)
QDRANT_HOST Qdrant Cloud 集群地址
QDRANT_API_KEY Qdrant Cloud API Key

API 参考

所有 API 以 x-user-id 请求头识别用户(UUID,存储在浏览器 localStorage)。

端点 方法 说明 请求体
/api/chat POST 对话(非流式,返回 JSON) { message, sessionId? }
/api/chat/stream POST 对话(流式,SSE) { message, sessionId? }
/api/sessions GET 会话列表
/api/tasks GET 任务列表
/api/tasks POST 创建任务 { title }
/api/tasks/:id PATCH 更新任务状态 { status }
/api/tasks/:id DELETE 删除任务
/api/files GET 文件列表
/api/files POST 上传文件(FormData) file
/api/files/:id DELETE 删除文件及向量
/api/user GET 获取用户信息
/api/user POST 更新用户信息 { name?, email?, aiNickname? }

Agent 工作流程

用户消息
    │
    ▼
意图检测(LLM JSON 输出)
    │
    ├─ task_management ──→ runTaskAgent
    │                          - 查看列表(关键词匹配)
    │                          - 创建/删除/完成(RAG 解析 JSON)
    │
    ├─ web_search ──→ runSearchAgent → Serper.dev API
    │
    ├─ research ──→ runResearchAgent
    │                  1. LLM 拆解为 3-5 个搜索词
    │                  2. 并行搜索
    │                  3. 汇总结果生成结构化报告
    │
    ├─ user_info ──→ runUserInfoAgent
    │                  - 首次使用:收集姓名+邮箱
    │                  - 正则 + LLM 双轨解析
    │
    └─ general ──→ askLLM
                      - 系统提示词注入用户信息、RAG 上下文、历史对话
                      - 返回回复字符串 → 存入 D1 → 返回前端

亮点

  1. 零成本 AI:使用 Cloudflare Workers AI 内置的 Llama 3.1 8B 模型,完全免费,无须 OpenAI / Claude API Key
  2. 边缘部署:Worker 运行在全球 300+ 个 PoP,就近接入,延迟低
  3. 完整 RAG 管线:文件上传 → 分块 → embedding → 向量索引 → 语义检索 → LLM 回答,全链路自托管
  4. 多代理架构:意图检测统一路由,各子代理职责单一,可独立扩展
  5. 零前端构建工具:纯 HTML/JS 内联到 Worker,二进制文件极小(< 300KB),无 CDN 依赖
  6. 会话记忆:D1 存储历史消息,每次对话注入最近 20 条上下文
  7. 无外部数据库依赖:用户数据、会话、任务全在 D1,向量在 Qdrant,无状态设计

License

MIT