移植自 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 带网关原话 / 正常返回)。
8.4 KiB
8.4 KiB
AgentOS 联邦架构 v3.0 — 完整蓝图
版本: 3.0.0 | 更新: 2026-06-17
目标: 统一三机联邦,每机智能体可独立运作,Dashboard 可统一指挥
一、系统架构总览
┌──────────────────────────────────────────────────────────────┐
│ 用户入口层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Web看板 │ │ 智能体 │ │ CLI终端 │ │ 定时任务 │ │
│ │ (SPA) │ │ (AI) │ │ (SSH) │ │ (cron/task) │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │
└───────┼──────────────┼──────────────┼───────────────┼─────────┘
│ │ │ │
┌───────▼──────────────▼──────────────▼───────────────▼─────────┐
│ API 网关层 (FastAPI :9988) │
│ │
│ /api/plugins/* — 插件元信息 │
│ /api/identity — 本机身份 │
│ /api/machines — 联邦机器状态 │
│ /api/health — 健康检查 │
│ /api/matrix/* — 矩阵养号全套 (accounts/nurture/blueprint) │
│ /api/federation/* — 联邦远程操作 (nurture/exec/collect/login) │
│ /api/machine/* — 远程命令执行 │
│ /api/push/* — 心跳推送 │
└───────┬──────────────────────┬──────────────────┬──────────────┘
│ │ │
┌───────▼────────┐ ┌─────────▼────────┐ ┌────▼──────────┐
│ 本机执行 │ │ 远程 SSH 执行 │ │ 跨机数据聚合 │
│ subprocess │ │ remote_exec.py │ │ data_aggregtor│
│ mc run / mc ✅│ │ SSH → 远程 mc │ │ HTTP拉取 │
└────────────────┘ └──────────────────┘ └───────────────┘
二、API 分层
2.1 插件层 (plugins/)
| 插件 | 职责 | API |
|---|---|---|
guardd |
联邦心跳/机器状态 | /api/machines, /api/push/* |
matrix |
矩阵养号 | /api/plugins/matrix/* |
federation |
联邦操作 | /api/federation/* |
scheduler |
定时调度 | /api/plugins/scheduler/* |
sms_proxy_api |
短信服务 | /api/sms/* |
2.2 路由层 (routes/)
| 路由 | 职责 | 端点 |
|---|---|---|
routes/matrix.py |
账号管理+养号+蓝图+原子操作 | /api/matrix/* |
2.3 服务层 (services/)
| 服务 | 职责 |
|---|---|
remote_exec.py |
SSH远程执行引擎 |
data_aggregator.py |
联邦数据聚合 |
operation_queue.py |
操作队列 |
resource_lock.py |
资源锁 |
preflight.py |
前置检查 |
log_aggregator.py |
日志聚合 |
三、视图完整清单 (25个)
| 导航组 | 视图 | 实现状态 | API 依赖 |
|---|---|---|---|
| 矩阵 | 账号管理 (matrix-sms-proxy) |
✅ 功能完整 | /api/matrix/accounts |
养号执行 (matrix-nurture) |
🔧 近期修复 | /api/matrix/nurture/start |
|
信息采集 (matrix-collect) |
🟡 待验证 | /api/matrix/collect/* |
|
内容发布 (matrix-publish) |
🟡 待验证 | /api/matrix/publish/* |
|
蓝图管理 (matrix-blueprints) |
✅ 功能完整 | /api/matrix/blueprints |
|
定向评论 (matrix-comment) |
🟡 待验证 | /api/matrix/comment/* |
|
定时任务 (matrix-schedule) |
🟡 待验证 | /api/matrix/schedule/* |
|
语料库 (matrix-corpus) |
🟡 待验证 | /api/matrix/corpus/* |
|
| 视频工厂 | 渲染任务 (ave-render) |
🟡 待验证 | /api/productions |
脚本生成 (ave-script) |
🟡 待验证 | /api/characters |
|
素材库 (ave-materials) |
🟡 待验证 | /api/assets/* |
|
模板 (ave-templates) |
🟡 待验证 | /api/capabilities |
|
| 内容采集 | 采集任务 (crawl-tasks) |
🟡 待验证 | /api/crawl/* |
源管理 (crawl-sources) |
🟡 待验证 | /api/crawl/* |
|
采集历史 (crawl-history) |
🟡 待验证 | /api/crawl/* |
|
| 联邦 | 机器状态 (machines) |
✅ 功能完整 | /api/machines |
一键同步 (fleet-sync) |
✅ 功能完整 | /api/git-sync |
|
对账检查 (fleet-reconcile) |
🟡 待验证 | /api/fleet/reconcile |
|
远程Shell (fleet-exec) |
🟡 待验证 | /api/machine/exec |
|
| 服务 | MCP状态 (serve-mcp) |
🔴 未实现 | N/A |
Dashboard日志 (serve-dashboard) |
🟡 待验证 | N/A | |
全局定时任务 (serve-schedule) |
🔴 未实现 | N/A |
四、执行链路 (关键路径)
4.1 养号执行链路(已修复 ✅)
用户点击「执行选中」
→ nurtureExecSelected() ← index.html JS
→ POST /api/matrix/nurture/start ← routes/matrix.py
→ 自动选蓝图 + 路由到机器
→ 本机: subprocess mc run ← local path
→ 远程: remote_exec exec_nurture ← SSH path
→ SSH → mc run ← remote path
→ mc/engine.py ← 身份分组+浏览器
→ cdp_connector.py ← Camoufox
4.2 智能登录链路(待验证 ⚠️)
用户点击「登录」
→ POST /api/federation/login
→ remote_exec exec_login
→ SSH → mc smart-login {account_id}
→ douyin_login.py / xiaohongshu_login.py
4.3 信息采集链路(待验证 ⚠️)
用户点击「采集」
→ POST /api/federation/collect
→ remote_exec exec_collect
→ SSH → mc collect
五、三机统一环境
| 项目 | chengzigedeAir | 5kechengdeAir | 7kecheng |
|---|---|---|---|
| Python venv | agent-os ✅ | agent-os ✅ | agent-os ✅ |
| camoufox | 0.4.11 ✅ | 0.4.11 ✅ | 0.4.11 ✅ |
| playwright | 1.58.0 ✅ | 1.58.0 ✅ | 1.58.0 ✅ |
| Git版本 | cc04e9d93a | cc04e9d93a | cc04e9d93a |
| Dashboard | launchd ✅ | launchd ✅ | launchd ✅ |
| 身份目录 | phone_*命名 ✅ | phone_*命名 ✅ | phone_*命名 ✅ |
| 账号总数 | 30 (联邦聚合) | 30 (联邦聚合) | 30 (联邦聚合) |
六、任务优先级 (Phase 3 执行计划)
P0 — 核心功能修复(本机优先)
| # | 任务 | 视图 | 预估 |
|---|---|---|---|
| 1 | 养号执行端到端验证:API→mc run→浏览器→执行 | matrix-nurture | ✅ DONE |
| 2 | 账号管理视图修复:编辑/删除/状态显示 | matrix-sms-proxy | 1h |
| 3 | 蓝图管理视图修复:增删改+编排 | matrix-blueprints | 1h |
| 4 | 信息采集端到端:触发→执行→结果回显 | matrix-collect | 2h |
| 5 | 智能登录端到端:从看板触发远程登录 | federation | 2h |
P1 — 联邦功能
| # | 任务 | 视图 | 预估 |
|---|---|---|---|
| 6 | 远程执行路由:本机/远程账号智能分发 | 全部矩阵视图 | 2h |
| 7 | 执行结果回显:进度条+日志流 | matrix-nurture | 2h |
| 8 | 联邦定时任务:跨机定时执行 | serve-schedule | 3h |
P2 — 完善
| # | 任务 | 视图 | 预估 |
|---|---|---|---|
| 9 | 语料库管理 | matrix-corpus | 2h |
| 10 | 定向评论 | matrix-comment | 2h |
| 11 | 远程Shell | fleet-exec | 1h |
| 12 | 对账检查可视化 | fleet-reconcile | 1h |