从脚本到平台:我用 Playwright + FastAPI + Streamlit 做了一个任务驱动 AI Browser Workflow 平台

0 阅读3分钟

最开始,这个项目只是一个非常简单的 Playwright 爬虫脚本

它能做的事情很直接:

  • 抓取 quotes.toscrape.com 多页数据
  • 提取 quoteauthortags
  • 输出本地 JSON
  • 做一些简单规则分析

但随着功能逐渐增加,我发现脚本模式开始暴露很多问题:

  • 每次运行都是一次性任务,无法追踪历史
  • 没有统一 API 层,难以对接其他系统
  • 没有前端可视化,调试体验一般
  • 缺乏任务状态管理,无法表达完整执行生命周期

于是我决定不再把它停留在“爬虫脚本”,而是把它升级成一个 任务驱动 AI Browser Workflow 平台


一、从一次性脚本升级到平台架构

这次升级的核心目标很明确:

让每次爬取都成为一个可追踪、可查询、可复用的任务单元。

整个系统的核心链路如下:

User → FastAPI → Task Manager → Playwright → Analyzer → Storage

system_architecture.png

通过这一层抽象,原本的一次性脚本,被升级成了:

  • 可创建任务
  • 可追踪状态
  • 可查看历史
  • 可通过 API 调用
  • 可通过 Dashboard 统一管理

这一步本质上是:从 script mindset 转向 workflow orchestration mindset


二、任务生命周期设计

为了让任务执行过程真正工程化,我给每个任务设计了一套完整状态流转。

Create Task → Pending → Running → Crawling → Analyzing → Success / Failed → Task History

task_lifecycle.png

这套生命周期最大的价值在于:

  • 能清晰表达任务执行阶段
  • 方便前端实时展示状态
  • 支持失败任务排查
  • 支持历史结果沉淀
  • 为后续 Celery / Redis 扩展留接口

它已经不再是普通爬虫,而更像一个轻量任务编排系统。


三、FastAPI 后端:把脚本能力服务化

后端部分我使用 FastAPI 做了一层标准 RESTful API。

核心接口:

  • POST /tasks/run:创建任务
  • GET /tasks:获取任务列表
  • GET /tasks/{task_id}:查看任务详情

swagger-api-overview.png

swagger-run-task.png

这样做的意义是:

任务执行能力不再绑定命令行,而是成为可复用服务能力。

同时 Swagger UI 可以直接在线测试,大幅降低调试成本。


四、Dashboard:把任务状态可视化

为了让任务调度和结果查看更直观,我用 Streamlit 做了一个实时 Dashboard。

dashboard-overview.png

主要能力包括:

1)任务创建

  • 配置 pages
  • 选择 mode
  • 一键 Run Task

2)状态管理

  • success / pending 筛选
  • 实时刷新
  • 历史任务列表

3)任务详情

  • created / updated 时间
  • quotes 结构化结果
  • AI enrich 后 JSON
  • task report 查看

dashboard-task-detail.png

这一层让整个系统从“后端工具”真正变成了 可交互的 workflow 平台


五、为什么我认为这个项目很适合继续扩展

我现在很喜欢这个项目的一点是:

它天然具备平台化升级空间。

下一步很容易继续扩展成:

  • PostgreSQL 持久化
  • Celery / Redis 分布式任务队列
  • Docker 一键部署
  • 多站点适配器
  • 向量检索 / RAG 分析层
  • 任务导出 API
  • 可观测性监控指标

所以它的意义已经不只是“抓 quotes”。

而是一个非常适合继续往 AI workflow orchestration / agent platform 演进的原型。


六、项目总结

这次项目让我最大的收获不是“学会了爬虫”。

而是第一次完整地把一个小脚本升级成:

任务驱动、状态可追踪、前后端可视化、具备平台演进空间的 AI workflow prototype

我越来越喜欢这种 从工具到平台 的工程升级过程。

这种感觉和纯算法题完全不同,更接近真实 AI Engineering 的工作方式。