Files
MediaCrawler/mac-agent-os-main/archive_docs/matrix_docs/V6_UPGRADE_PLAN.md
T
butubb 2112c1a870
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s
feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。

**目前能用的(真环境实测,非推断)**:

    profile/other : 200, 7075 字节  —— 博主主页指标(粉丝/获赞/作品数/昵称)
    aweme/detail  : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)

**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
  1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
     带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
     同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
     挑中的恰好是「批量拉作品列表」这个最敏感的动作。
  2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
     代价,过几小时要重测)。

  所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。

**排查中控住变量后得到的两条事实**(都写进注释了):
  · `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
    UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
    (我先前猜的 sec-ch-ua 不是关键。)
  · 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
    从 CDP 取齐 cookie + UA + hints,而不是各自写死。

「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。

测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
2026-10-10 17:12:25 +08:00

8.4 KiB
Raw Blame History

Matrix 系统全面升级规划框架 v6.0

日期: 2026-06-14 | 状态: 规划阶段 本文件定义全部需求,拆解为可执行的任务清单


一、身份与账号 → 主页信息增强

现状

profiles.json 已采集 fans、posts、following、likes 字段,但前端卡片未展示。

改动

在身份与账号页面的平台行中增加:

🎵 抖音  ✅ ✅ ✅  2次  小美养生茶  📊1.1k粉 📹11作  🔑 🚫 🗑

在 api_sms_accounts 返回数据中透传 fans、posts、following、likes 字段。


二、命令与任务 → 信息采集模块重构

当前问题

  • 页面太简单,只有一个下拉+两个按钮
  • 只能按账号选,不能按身份/身份的平台选

目标结构

┌─ 👤 信息采集 ──────────────────────────────────┐
│                                                   │
│ 选择范围: [按身份 ▾] [按平台 ▾] [按账号 ▾]       │
│                                                   │
│ ┌─ 可选列表(按选择范围动态展示)───────────────┐  │
│ │ ☑ 📱 15370103682                             │  │
│ │   ├ ☑ 🎵 抖音 (小美养生茶)                   │  │
│ │   └ ☐ 📕 小红书 (xhs_01)                     │  │
│ │ ☐ 📱 13382504284                             │  │
│ │   └ ☐ 🎵 抖音 (douyin_133)                   │  │
│ └──────────────────────────────────────────────┘  │
│                                                   │
│ [👤 执行选中]  [📋 全部采集]                      │
│                                                   │
│ 采集日志:                                        │
│ ✅ douyin_test 采集完成 → 小美养生茶(1.1k粉)      │
│ ⏳ xhs_01 采集中...                               │
└───────────────────────────────────────────────────┘

采集范围切换逻辑

  • 按身份:显示手机号列表,勾选后该身份下所有平台都采集
  • 按平台:显示抖音/小红书列表,勾选后所有该平台的账号都采集
  • 按账号:显示所有账号列表(当前方式)

三、定时任务 → 完整可执行系统

当前状态

mc/scheduler.py 已实现:

  • YAML 配置读取
  • cron 表达式支持(time: "09:00" 格式)
  • 自动执行 mc run 命令
  • 日志记录

缺少的:

  • Dashboard 创建/编辑/启停管理
  • 历史执行记录
  • 执行结果回传(成功/失败)
  • 跨机器独立运行
  • 命令行 mc schedule 完整子命令

目标架构

┌─ 定时任务系统 ───────────────────────────────────┐
│                                                    │
│ 配置层:config/schedule.yaml                        │
│   schedules:                                       │
│     douyin_daily:                                  │
│       enabled: true                                │
│       account: douyin_test                         │
│       blueprint: douyin_daily                      │
│       rounds: 3                                    │
│       time: "09:00"                                │
│       days: "1,2,3,4,5,6,7"  # 每周运行日          │
│                                                    │
│ 调度层:mc/scheduler.py                            │
│   - 30秒轮询检查                                   │
│   - 到达时间→执行 mc run                           │
│   - 记录结果到 logs/schedule_{date}.jsonl          │
│                                                    │
│ 管理层:Dashboard                                  │
│   - 任务列表(显示/编辑/删除/启停)                 │
│   - 历史记录(最近20次执行结果)                    │
│   - 手动触发执行                                   │
│                                                    │
│ CLI层:mc schedule                                  │
│   mc schedule list                                 │
│   mc schedule add --id xxx ...                     │
│   mc schedule remove --id xxx                      │
│   mc schedule start/stop                           │
│   mc schedule history --id xxx                     │
└────────────────────────────────────────────────────┘

执行结果记录格式

{"id":"douyin_daily","time":"09:00","date":"2026-06-14","status":"success","success":12,"failed":1,"duration":180}
{"id":"douyin_daily","time":"09:00","date":"2026-06-15","status":"failed","error":"Cookie expired","duration":5}

跨机器执行

  • 每台机器独立运行 scheduler.py
  • 从本地 accounts.yaml 读取账号
  • 使用本地 profiles.json
  • 结果写入本地 logs/

四、语料库 → 全面升级 + 移到命令与任务

当前结构(v1.x)

categories:
  赞美:
    comments: ["讲得太好了"]
    templates: ["{keyword}很好"]

目标结构(v2.0)

version: "2.0"

# 三维语料模型:身份 × 场景 × 内容
personas:
  health_lover:
    name: "养生爱好者"
    tags: ["养生", "健康"]

scenes:
  first_comment:
    label: "首次评论"
    rules: ["与视频内容相关"]
  follow_up:
    label: "跟帖回复"
    rounds: 2

content:
  health_lover.first_comment:
    - "这个养生方法很实用"
  health_lover.follow_up.round_1:
    - "确实如此,{keyword}我也是这么认为的"

# AI 生成配置
ai:
  provider: openai
  model: gpt-4o-mini
  temperature: 0.8
  prompt_template: |
    你是一个{persona},请对视频"{title}"发表{direction}评论。
    要求:{rules}

# 故事线/对话脚本
storylines:
  douyin_hot_topic:
    name: "抖音热门话题讨论"
    script:
      - scene: intro
        text: "最近{keyword}这个事我也关注了"
      - scene: develop
        text: "其实这个事情要从几个方面看..."
      - scene: reply_expected
        text: "你觉得呢?"

Dashboard 语料库管理

命令与任务 → 语料库 TAB
├─ TAB: 按身份     — 选择身份→查看/编辑评论模板
├─ TAB: 按场景     — 首次评论/跟帖回复/作者回复
├─ TAB: 按故事线   — 创建/编辑对话脚本
├─ TAB: AI 生成    — 配置 API Key/模型/提示词模板
└─ TAB: 统计       — 语料总量/各分类数量/使用频率

五、批量执行 → 自动刷新 + 参数完整性

当前状态

  • 账号列表:每次 loadMatrixRun 调用时从 API 获取 ✅ 自动更新
  • 蓝图列表:同上 ✅ 自动更新
  • 执行参数:轮数/轮间隔/账号间延迟/混合随机/语料分类/代理策略

需要确认的

参数 状态
--accounts ✅ 自动从 API 获取
--blueprints ✅ 自动从 API 获取
--rounds ✅ 有
--interval ✅ 有
--stagger ✅ 有(新增)
--mix ✅ 有
--corpus ✅ 有(但需确认是否生效)
--proxy ✅ 有
--keep ❌ 预览和执行都缺少

修复

  • --keep 参数在 batchPreview 和 batchExecute 中补全

六、实施路线

阶段 内容 优先级 工作量
P1 身份与账号增加粉丝/视频数展示 高 0.5天
P2 信息采集模块重构(三维选择) 高 1天
P3 定时任务完善(历史+结果+管理) 高 2天
P4 语料库 v2 + Dashboard 管理 中 3天
P5 批量执行参数补全 + 自动刷新 中 0.5天
P6 同步文档 + 其他机器部署 高 1天

七、风险与依赖

风险 影响 缓解
scheduler.py 当前只解析 time,不支持 cron 全语法 定时灵活性 先保持 time 格式兼容,后续扩展
profiles.json 中粉丝/视频数据可能为空(未采集) 展示不全 为空时显示"-",提示用户采集
语料库 v2 格式与 v1 不兼容 旧语料不可用 代码兼容两种格式