feat: 媒体机直传 + 向量回填

- media: spider 下载图片后按内容 sha1 生成 key,经后端预签名直传 S4,上报只带 key
  (spider 不持有 AK/SK;单张失败自动回退为上报 URL)
- embed: 新增 embed 子命令,从后端领取缺向量的图片→下载→本地 CLIP 编码→回传
  (媒体拆分后后端拿不到图片字节,向量只能靠回填补齐)
- serve: 服务化常驻模式(领取 crawl 任务 → 抓取 → 回报)
- config: 新增 media.upload/concurrency、vision.endpoint/concurrency
This commit is contained in:
toom1996
2026-10-25 00:15:22 +08:00
parent 6020426815
commit 3fe0b86e11
11 changed files with 1305 additions and 2 deletions

View File

@ -12,6 +12,24 @@ var GlobalConfig Config
type Config struct {
App AppConfig `mapstructure:"app"`
Ingest IngestConfig `mapstructure:"ingest"`
Media MediaConfig `mapstructure:"media"`
Vision VisionConfig `mapstructure:"vision"`
}
// VisionConfig 视觉服务(FashionSigLIP)配置,供 `spider embed` 回填向量使用。
type VisionConfig struct {
Endpoint string `mapstructure:"endpoint"` // 如 http://127.0.0.1:8900
Concurrency int `mapstructure:"concurrency"` // 下载并发,默认 4
}
// MediaConfig 媒体机直传配置(把下载/上传从后端搬到 spider 所在机器)。
//
// 打开后 spider 会:下载图片 → 内容 sha1 生成 key → 向后端申请预签名 PUT 地址
// → 直接传到对象存储 → 上报时只带 key。后端 worker 则跳过下载与上传,只写库。
// 关闭时行为与旧版完全一致(上报 URL,由后端下载)。
type MediaConfig struct {
Upload bool `mapstructure:"upload"` // 是否启用直传
Concurrency int `mapstructure:"concurrency"` // 下载/上传并发,默认 6
}
// IngestConfig 入库管线配置:爬虫 → 后台 ingest 接口(HMAC 签名)。