
从SaaS到AI劳动力派遣一个分布式任务调度系统的技术架构拆解当AI从卖工具进化到派遣劳动力底层架构要解决哪些问题这篇文章拆解一个实际系统。一、问题的重新定义去年在做NaviAi平台架构设计的时候我们意识到一个根本性的问题传统AI出海的产品形态是SaaS——你把一个AI工具做成多语言版本投放给海外用户。用户登录、使用、付费这是标准的SaaS飞轮。但我们在东南亚市场调研中发现海外中小企业需要的根本不是一个AI客服系统。他们需要的是**有人帮我把客户消息回复好**。这个需求差异把整个技术问题从如何做一个多租户SaaS变成了如何在一个分布式网络中高效地派遣和管理AI劳动力。这篇文章拆解一下这套系统的技术架构。二、总体架构┌─────────────────────────────────────────┐ │ NaviAi Control Plane │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌───────┐ │ │ │Task │ │Worker│ │Billing│ │Monitor│ │ │ │Router│ │Pool │ │Engine │ │Alert │ │ │ └──────┘ └──────┘ └──────┘ └───────┘ │ ├─────────────────────────────────────────┤ │ Message Bus (NATS/Kafka) │ ├─────────────────────────────────────────┤ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │City │ │City │ │City │ ... │ │ │Node A │ │Node B │ │Node C │ │ │ │(雅加达)│ │(曼谷) │ │(胡志明)│ │ │ └────────┘ └────────┘ └────────┘ │ └─────────────────────────────────────────┘核心设计理念中央调度 城市节点自治。Control Plane 负责劳动力编排和计费各 City Node 负责本地化执行和客户关系管理。三、四大核心模块模块1劳动力编排引擎Task Router这是整个系统的大脑。输入是客户需求帮我管理WhatsApp客服输出是一个或多个AI劳动力实例的部署方案。关键技术决策角色模板化AI劳动力不是裸模型调用而是预置了角色定义——客服角色内嵌话术库、情绪识别、多轮对话管理翻译角色内嵌术语表、行业词典、格式保持数据角色内嵌报表模板、异常检测规则。多模态编排一个客户可能同时需要客服翻译数据。编排引擎负责把同一个客户的不同劳动力实例关联起来——客服产出的对话数据自动喂给数据劳动力做分析。调度策略实时任务客服消息回复→ 长连接 WebSocket 推送到 City Node批量任务日报生成、数据清洗→ Kafka 消息队列Worker Pool 拉取优先级SLA 敏感的走独立通道非紧急的走共享池模块2城市节点网关City Node Gateway每个城市节点是一个独立的部署单元包含City Node (e.g., Jakarta) ├── API Gateway (速率限制、鉴权、路由) ├── Local AI Runtime (模型推理本地化降低延迟) ├── Partner Dashboard (城市合伙人管理面板) ├── Customer Portal (客户自助管理) └── Event Store (本地事件溯源异步同步到中央)为什么需要城市节点三个不可妥协的理由延迟东南亚部分地区到中国服务器的延迟波动大客服场景对响应速度敏感数据合规部分市场要求用户数据本地化存储如印尼的PDP法案断网容灾本地 Event Store 保证即使与中央失联核心业务不中断模块3分润与计费引擎这是从SaaS计费到劳动力计费的范式转换。SaaS计费很简单按席位、按用量、按周期。劳动力计费要复杂得多按角色定价客服、翻译、数据的单位成本不同按效果计费部分场景按已解决工单数而非在线时长计费多级分润平台 → 城市合伙人 → 本地服务商级联结算实时对账城市合伙人需要实时看到自己的收入延迟超过1小时就会引发信任问题技术实现上我们用了**事件溯源Event Sourcing**模式所有计费事件任务完成、客户续费、转介绍奖励 → 不可变事件流Kafka → 物化视图实时余额 → 审计日志合规溯源这样既能做实时余额展示又能在任何时候回溯任意一笔分润的计算过程。模块4多语言合规引擎AI劳动力要部署到不同国家面临的语言和法律合规问题远超普通SaaS。语言层不只是翻译。不同市场的商务礼仪、称呼习惯、emoji使用规范完全不同。我们在角色模板里内嵌了文化适配层——同一个客服角色在印尼用更委婉的表达在墨西哥则更直接。合规层每个 City Node 有独立的合规规则集。包括当地劳动法对AI替代人力的界定、数据保护法规、电子支付牌照要求等。规则集以 YAML 配置下发City Node 启动时加载运行时做合规校验。四、技术栈选型层级选型选型理由语言Go TypeScriptGo处理高并发调度TS处理前端和Dashboard消息队列NATS KafkaNATS做实时推送Kafka做事件溯源和批量数据库PostgreSQL ClickHousePG做OLTPClickHouse做分析和报表缓存Redis Cluster会话状态、实时余额、速率限制容器编排Kubernetes (ACK)城市节点按需扩缩容可观测性Prometheus Grafana Loki全链路监控五、一个实际的调度流程当一个雅加达客户订阅了客服数据两个AI劳动力订单到达Control Plane → Task Router 解析需求角色实例化从模板库拉取印尼电商客服和销售数据分析师两个角色定义节点匹配发现 Jakarta City Node 有空闲算力 → 下发部署指令本地启动City Node 启动两个 Worker 实例注册到本地 API Gateway客户接入WhatsApp Business API 接入客服WorkerShopee数据接口接入数据Worker持续运行Event Store 记录每次对话、每份报表的完成事件 → 计费引擎实时更新分润整个流程从下单到劳动力上线控制在5分钟以内。六、未解决的技术挑战坦诚说还有一些问题没有完美的技术方案劳动力质量量化如何用指标衡量这个AI客服做得好不好目前是人工抽查客户满意度但这不可规模化多劳动力协作当客服和数据两个劳动力需要协同比如客服从对话中发现产品问题通知数据劳动力生成退货分析消息路由的复杂度指数级上升冷启动新城市节点部署时AI角色模板如何快速适配当地文化目前靠人工标注周期太长这些是接下来半年要啃的硬骨头。