CHAT · 对话 / 开场抖音 & 企微代聊
冷开场白、养客对话、人设「小艳」。
qwen3-235b-a22b-2507从抖音评论里找到高意向客户,判意向、拟话术,再把私信真的发出去——整条获客链路自动化的多租户 SaaS。
// 面向第一次接触本项目的技术顾问 · 纯技术架构口径
三块各自独立部署、各自 CI/CD,围绕同一个数据库协作。它们之间不直接互相调用——全部经数据库或 HTTP 契约交接,任何一块挂掉重启即恢复。
src/ · App Router
控制台 UI +薄 API + Vercel Cron 触发器。Supabase SSR 鉴权走 middleware.ts,是「大脑与门面」——负责想、看、审批。
supabase/migrations/
唯一事实源与中央交接台。schema 全在迁移文件里,多租户靠 行级安全(RLS)做硬隔离。前端与 worker 各自读写。
worker/ · akke-worker-prod · nrt
FastAPI + Playwright,东京机房。抓取 / 解析 / 发送的「手脚」,后台 poller 持续拉队列。
Vercel = 大脑、Supabase = 仓库、Fly worker = 手脚。三者无状态解耦,靠数据库对齐状态——这是整套系统能「掉一块不塌」的根因。
主链路六段,段与段之间用数据库里的表 + 状态机交接,各段由不同的 cron / worker 驱动,天然可重试、可断点续。
/api/cron/scrape 给每个活跃号源写一行 scrape_jobs
/api/cron/analyze 给评论打购买意向分;高意向自动生成一条话术草稿进 message_queue,状态 pending_approval
approved(另有绕开 Dashboard 的运营直查工作流,见下节)
// 关键设计:每一棒都落库再交接——任何一段崩了都能从库里的状态捡起来重跑,不重发、不丢单。
src/lib/llm.ts 封装任意 OpenAI 兼容端点,统一走 OpenRouter。按「任务性质」而非「一个大模型包打天下」拆分——便宜的干粗活、贵的干精活,可独立灰度 / 回滚。
冷开场白、养客对话、人设「小艳」。
qwen3-235b-a22b-2507购买意向评分、决策信号检测、装修阶段分类。
deepseek-v4-flash云电脑自动化「看」屏幕内容做元素定位。
qwen3-vl-30bsanitizeReply / extractLeakedToolCalls 清洗模型泄漏的 tool-call 协议字节与舞台指示;60+ 条确定性后置硬绑做信号 / 昵称规则。
所有 cron / worker 任务必开 Langfuse trace;OpenRouter 返 cost=0,本地定价表手动回填成本,可按人 / 按任务追账。
抖音对数据中心 IP 风控极严:Fly 东京出口的 handle / search / 主页 API 一律返空,云端直发私信会被静默丢弃。于是「发」这件事必须落到带真实登录态的终端上。
运营本机的 iPhone(WDA) 或 Android(ADB + uiautomator2) 驱动抖音 App 发陌生私信。号源导入靠 Cookie-Editor 导出 + 短链 302 解析——唯一绕开 IP 封锁的路径。
云端 Windows 挂登录好的抖音 / 企业微信,VL 读屏 + 固定坐标 GUI 自动化打字发送。因国内云电脑连不上 Vercel,命令必经 Fly 东京做中转。
抖音 DM(一触私信)· RC(评论区反向回复)· 二触(潜在客户再触达)· 企微好友单聊 AI 代回。共用 dispatch 派单原语,节奏各自独立。
抖音 HTTP 200 + success:true 不等于送达——可能 cmd:100 静默丢(陌生 DM 限频)。真校验要 blackboxprotobuf 解包断言 status_code==0。
2026-04 起多租户化。所有业务表挂 org_id,靠 Postgres 行级安全(RLS)做硬隔离,而不是在应用层写 WHERE 兜底。
app.accessible_org_ids()src/lib/auth/ 守卫YYYYMMDDHHMMSS_把隔离下沉到数据库:任何一条查询漏写租户条件,也不会跨租户串数据——安全边界只有一层、且由数据库强制,而不是散落在几百个 API 里靠人记得加 WHERE org_id=。
没有常驻队列服务,主链路由 58 个 Vercel Cron + worker 后台 poller 驱动,每一环都可独立监控和降级。
入队 / 抓取 / 打分 / 回复轮询 / 日报 / 健康自检 / 号源治理 / 云电脑看门狗……时刻表全在 vercel.json,是唯一事实源。
每个后台任务同时落存活心跳(挂了可检测)+业务 delta(跑了但 0 行更新也告警)——「退出码 0」不等于「业务有效」。
Langfuse trace 全覆盖;LLM 余额 / 成本 / 达标率异常推 Lark 红牌到告警群;每日 LLM 健康监控。
tsc+lint+Claude 自动评审跑在每个 PR;llm.ts / cron / migrations / auth 等高危路径强制走 PR,两道闸拦直推 main。
确定性判断交给代码,模糊判断才交给模型——路由、重试、状态码、去重走代码;分类、起草、摘要、抽取走 LLM。能用状态码回答的,不让模型在 prompt 里抖 if-else。
纯工程里程碑口径——「能力上有没有打通」,不含运营数字。
| 层 | 技术 | 版本 / 部署 |
|---|---|---|
| 前端 / API | Next.js · React · TypeScript · Tailwind | 16.2.4 / 19.2.4 / 5 / 4 · Vercel |
| 数据库 | Supabase Postgres(RLS 多租户) | ssr 0.10 · js 2.10 |
| 状态管理 | Zustand(useChatV2Store 分片) | 前端会话状态 |
| Worker | Python · FastAPI · Uvicorn | 0.115 / 0.34 · Fly.io 东京 |
| 抓取 / 自动化 | Playwright · f2 签名 · uiautomator2 · WDA | PW 1.49 · f2 0.0.1.7 → httpx 0.27.2 |
| LLM 接入 | OpenRouter(openai SDK)· 分通道路由 | openai 6.34 |
| · Chat | Qwen3-235B-A22B | qwen3-235b-a22b-2507 |
| · Analysis | DeepSeek V4 Flash | deepseek-v4-flash |
| · Vision | Qwen3-VL-30B | qwen3-vl-30b-a3b-instruct |
| 可观测 | Langfuse · Sentry | trace 全覆盖 · sentry-sdk 2.20 |
| 调度 / CI | Vercel Cron · GitHub Actions | 58 crons · tsc+lint+Claude 评审 |
| 执行端 | 阿里无影云电脑 · iPhone/Android 真机 | GUI 自动化 · 本机 WDA/ADB |