Skip to main content

Module engine

Module engine 

Source
Expand description

抓取引擎:把网络层、礼貌策略、正文提取、PDF 和浏览器渲染串成一次完整的抓取。

流程:robots 模式 → HTTP 抓取(策略层负责冷却、robots、限速)→ 按内容类型分流(PDF / HTML) → engine: auto 时正文太少就升级到浏览器渲染 → 组装成 Firecrawl 格式的文档。

Modules§

agent
/v2/agent 的循环:LLM 规划 → 调工具(search、map、带 queryFilter 的 scrape、extract)→ 证据存档 → 判断够不够 → 停。
planner
渲染决策与候选合并的引擎接线:学习表和族的键在 pagesift_plan::render,这里把它接到请求路径上 (渲不渲染、换不换内核、保留哪个结果、页面数据岛),并负责把学习表存进存储。

Structs§

ActionSecret
[secrets] 的一项。
EngineProbe
内核链里一个内核的启动检查结果(Scraper::probe_engines)。
InteractLimits
保留会话的时长上限。
Scraper
ScraperBuilder
Scraper::builder(config).hook(...):在代码里注册钩子(和 [[rules]] 编译出的放在同一组链里)。
ScraperConfig

Enums§

ScraperError
创建 Scraper 失败:网络层或 LLM 客户端的配置不对。

Constants§

AUTO_RENDER_ARTICLE_MIN_CHARS
已经认出是一篇文章(有发布时间或 og:type=article)时,正文到这么多加权字符就不再渲染: 短新闻 HTTP 已经拿全了。AiSeek 的生产数据里,63% 的渲染拿到的文字和 HTTP 一样多, 多半就是这类短文章。
AUTO_RENDER_MIN_CHARS
F-1.9:HTTP 抓到的正文少于这么多(加权)字符时,engine: auto 升级到浏览器渲染。 中日韩文字一个字按 CJK_WEIGHT 个字符算(信息量和几个拉丁字母相当),见 text_weight。
CJK_WEIGHT
RENDER_FALLBACK_MIN_CHARS
浏览器渲染出的正文少于这么多字符时,换下一个内核再试(Lightpanda 的脚本支持不全, 单页应用可能渲染不出内容)。最后一个内核的结果照常返回。

Functions§

chunk_markdown
chunking:正文 Markdown 分块。参数格式见 pagesift_extract::ChunkStrategy(maxLevel 这类驼峰写法也认)。
needs_render
engine: auto 时 HTTP 的结果是否还要用浏览器渲染。
office_markdown
把一份 Office/EPUB/CSV 文档转成 Markdown,供引擎和评测共用。deadline 到了报超时。 CSV 的字符集按正文探测;知道 Content-Type 时用 office_markdown_from。
office_markdown_from
同 office_markdown,另给文件来源的 Content-Type(响应头或上传时的):CSV 按它的 charset 解码,和网页一样;声明和正文对不上时纠正并给 decode: 警告。
policy_error
set_cpu_capacity
进程可用的 CPU 数,由建运行时的一方在绑核之前设置。
set_cpu_groups
CPU 工人的分组:每个 NUMA 节点允许使用的逻辑 CPU。设置后工人按组分配、绑到所在组的 CPU 集, 偷任务先在组内偷(0.70 在 192 vCPU 上的实测,见 pagesift_flow::cpu)。 不设置时(Python、Node 宿主)工人不绑核。
tag_filter
includeTags / excludeTags 的筛选规则;都没给时为 None,选择器写错时返回 INVALID_REQUEST。
text_weight
正文的加权长度:空白不算,中日韩文字按 CJK_WEIGHT 算。