返回更新记录
v1.3.0

网站即内容源:知识库内的多源网页爬取 (v1.3.0)

在知识库内引入『网站内容源』——crawl/sitemap/urls 三种导入模式、http/render/firecrawl/jina 四个抓取引擎(含 auto 渐进升级),页面与上传文件混居同一索引、同场检索;每个源可独立配置、重跑与删除,并配全栈 E2E 与真实 provider 验证。

网页爬取知识库MCPWeb Console

v1.3.0 补上了琅嬛内容矩阵里缺了很久的一块:把网站变成知识库的内容源。设计上我们做了一个明确裁决——网站不是一种新的知识库类型,而是库内一个可管理的内容源:爬到的页面与上传文件混居同一知识库、同一索引,一次检索同时命中两者;每个源有独立的配置、调度与生命周期,可单独重跑、改配置、停用、删除,页面文档带来源溯源。

三种导入模式,覆盖三类真实诉求

  • 爬取(crawl):从种子 URL 出发的受限 BFS——深度/页数上限、路径 include/exclude glob、子域开关,发现与抓取共用同一条管线并维护页内缓存避免双倍流量;
  • Sitemap:解析 sitemap.xml(含 index 递归),lastmod 直接进入增量游标;
  • URL 列表:手工维护的页面清单,增删即同步,适合竞品页、帮助中心这类”我就要这几页”的场景。

四个抓取引擎 + auto 渐进升级

  • http:SSRF-safe 静态抓取(dial 期 IP 校验、redirect 逐跳重校验、私网阻断),支持条件请求;
  • render:连接外部 CDP 无头浏览器(Obscura / browserless 均实测),执行脚本后取渲染产物——不内嵌浏览器,单二进制交付不破;
  • firecrawl / jina:托管抓取 provider,markdown 直通,支持自托管 firecrawl(endpoint 可覆盖,已实测);
  • auto:http 起步,命中 JS-shell 特征(空挂载点、可见文本低于阈值)时自动升级到已配置的高级引擎并留痕 last_engine。

正文抽取走 readability + html-to-markdown(http/render 通道),provider 通道 markdown 直通。

爬网站不会拖慢日常使用,也不会中途夭折

爬一个网站可能持续几分钟到几小时。系统会自动限制同时抓取的网站数量(默认最多 2 个),保证上传文档的解析与检索始终有资源可用;抓取超时也按站点规模自动放宽(大站给足时间,最长 4 小时),不会陷入”超时→重试→再超时”的循环。robots.txt 默认遵守,同一站点串行抓取并保持可配置的礼貌间隔。

重复抓取同样被省掉了:每次同步只处理真正变化的内容——sitemap 里标注的更新时间、HTTP 协议层的”未修改”应答、页面内容指纹,三道关卡层层过滤,没有变化的页面不会重复入库。

Console 与 API

Web Console 的内容区新增「Web」子 tab:抓取请求列表(状态徽标、页面/失败计数、上次同步摘要)→ 源详情(该请求抓到的页面,按源过滤)→ 添加/编辑表单(模式三选一、高级选项折叠、引擎与连接联动)。集成页支持 firecrawl/jina/browser 三类新连接(凭证 AES-256-GCM 密文存储)并统一提供「连接测试」。API 侧新增 /web-sources 全套 REST 端点;MCP 的 document_ingest 支持 url 入口——agent 可以直接丢一个 URL 进知识库。

顺带修复:一个影响老版本的同步 bug

真实环境验证过程中发现,来源同步创建的解析任务缺少 index_generation_id,导致 v0.7.4 及之后所有版本的飞书同步都存在”文档抓取成功但永不进入索引”的问题(页面与改配置均受影响)。v1.3.0 已完整修复(新增/更新/重试三条路径)并补了任务血缘集成测试。仍在旧版本上使用飞书同步的用户建议尽快升级。

验证

go test ./...、make test-integration(临时 pgvector 容器)、Web Console pnpm check / test / build 全绿;全栈 E2E 冒烟(Playwright + standalone 模式)覆盖「建源 → 同步 → 内容可见 → 检索命中」用户流程;firecrawl(自托管实例)与 Obscura(CDP 渲染)均通过真实 provider 全链路验证。检索评测不适用本版(无检索算法变更)。