Skip to content

10 媒体管线

模块目标

理解图片/音频等附件如何安全进入系统并被安全返回。

步骤一:实现拆解(执行链路)

  1. 远程抓取: src/media/fetch.ts
  2. 入库保存: src/media/store.ts
  3. 对外读取: src/media/server.ts
  4. 上游调用点: 自动回复与 outbound 发送链路

步骤二:细粒度讲解(小白版)

  1. fetch.ts 先保证“抓取安全”
  • 使用 SSRF guard
  • 限制重定向
  • 限制最大大小
  • 读取失败时给出结构化错误码
  1. store.ts 负责“落盘与清理”
  • 媒体目录在 config state 下
  • 文件名做安全清洗
  • 自动 MIME 识别
  • 默认大小上限与 TTL 清理
  • 支持 URL 下载与本地文件写入两种来源
  1. server.ts 负责“短时分发”
  • GET /media/:id 严格校验 id
  • 防路径穿越(safe open)
  • 超时/过大/过期直接拒绝
  • 响应后做单次清理,减少残留
  1. 设计思想
  • 媒体应当“短生命周期 + 最小暴露面”
  • 先安全再可用,不把任意路径直接暴露给外部

用工程视角拆解 AI 智能体框架