给 Agent 一台电脑,也给文档一条管道:后端视角的今日热榜
后端约 4 分钟阅读

给 Agent 一台电脑,也给文档一条管道:后端视角的今日热榜

从 Cloudflare Computer 与 Firecrawl PDF Inspector 出发,讨论 Agent 运行时沙箱、PDF 预分类路由,以及如何用统一 Job 模型接入权限与可观测。

后端主题封面:给 Agent 一台电脑,也给文档一条管道:后端视角的今日热榜

后端同学今天刷 GitHub Trending,会看到两条很硬的信号:

  1. cloudflare/computer——给 Agent 一台电脑;
  2. firecrawl/pdf-inspector——用 Rust 做 PDF 检测、分类与文本抽取,并区分扫描件与文本型 PDF。

再配上常青的 system-design-primer,话题其实很统一:后端正在同时服务“人用的 API”和“agent 用的运行时与数据管道”。

Agent 要电脑,后端要什么

图:Agent Computer 分层:Policy / Quota / Sandbox / Event log / Handoff

Agent Computer 分层:Policy / Quota / Sandbox / Event log / Handoff

cloudflare/computer 的一句话是 “Give your agent a computer”。落到系统里,它逼你回答:

  • 文件系统、网络、密钥的边界在哪?
  • 长任务如何配额、如何唤醒、如何交接?(同日热榜 loopx 也在做 loop 状态内核)
  • 审计日志记到什么粒度,出事能不能回放?

这和传统“给用户一个容器沙箱”很像,但调用方是 agent,失败模式是高频、自动化、可能被 prompt 诱导越权。后端设计要默认:

text
Agent Runtime
  ├─ Policy (allowlist tools, network, paths)
  ├─ Quota (CPU / 时间 / token / 并发)
  ├─ Sandbox (FS + net + secret injection)
  ├─ Event log (tool call, egress, result hash)
  └─ Handoff store (goal, todo, evidence)

如果你已经在用 Open API、webhook、cron 驱动 agent,优先把 policy + event log 做实,再谈花哨编排。

PDF 管道:为什么又是 Rust

图:PDF 智能路由:classify → text/OCR/人工,而不是一律丢多模态

PDF 智能路由:classify → text/OCR/人工,而不是一律丢多模态

企业知识库、合同、发票、研报,入口经常是 PDF。firecrawl/pdf-inspector 强调两件事:

  • :Rust 原生库,适合放在接入层做预分类;
  • 聪明路由:先判断扫描件 vs 文本 PDF,再决定走 OCR 还是直接抽文本。

这比“全部丢给多模态模型”便宜一个数量级。一个务实的接入层:

python
# 伪代码:上传后的路由
kind = pdf_inspector.classify(path)  # text | scanned | mixed | encrypted
if kind == "encrypted":
    return queue_manual_review(path)
if kind == "text":
    text = pdf_inspector.extract_text(path)
    return index_chunks(text)
if kind in {"scanned", "mixed"}:
    return ocr_pipeline.submit(path)  # 更贵、异步

后端这里的关键指标不是“识别有多炫”,而是:

  • p95 分类延迟;
  • OCR 队列积压与成本;
  • 抽取出的文本是否带页码/bbox,方便引用溯源。

把两条线合成一套后端能力

很多团队会拆成两个项目:Agent 平台一组,文档中台一组。2026 年更划算的做法是共享同一套平台能力

能力 Agent 电脑 文档管道
鉴权与租户 工具调用身份 上传与检索身份
配额 会话时长/工具次数 OCR 页数/存储
异步任务 长跑 loop 批量解析
可观测 tool span parse span
对象存储 工作区快照 原文件与衍生件

API 形状也可以统一成“作业”模型:

http
POST /v1/jobs
{ "type": "agent.run" | "doc.ingest", "input": {...}, "policy_id": "..." }

GET /v1/jobs/{id}
{ "status": "running", "events": [...], "artifacts": [...] }

这样网关、限流、告警、计费只维护一套。

设计面试题在真实系统里的用法

system-design-primer 今天还在热榜上涨星,不偶然。Agent 与文档管道把经典题重新变难:

  • 限流:用户 QPS vs agent 自激循环;
  • 幂等:同一 PDF 重复上传、同一 goal 重复唤醒;
  • 一致性:记忆写入与代码部署的先后;
  • 降级:模型供应商挂了时,管道是否还能完成“只抽取不总结”。

建议把 primer 里的题,改写成你们自己的 ADR(Architecture Decision Record):选队列还是 workflow 引擎、sandbox 用 gVisor 还是微虚机、PDF 预分类放同步还是异步。写下来比再刷一遍题有用。

小结

今天热榜给后端的作业很明确:

  1. 为 agent 准备可策略化的执行环境,而不是裸进程;
  2. 为非结构化输入准备便宜的预分类与路由,别一切都喂大模型;
  3. 用统一的 job/事件模型把两者接进现有可观测与权限体系。

先把边界和账算清楚,再追新框架,系统才撑得住下一波 star。

相关文章