在 Taabi Mobility 的 taabi Nexus 平台中,驾驶员的行车记录仪会触发多种警报(疲劳、手机使用、座椅安全带、急刹车等)。管理者只需用一句英文描述想要的动作,系统会把这句话翻译成 JSON 规则并执行。规则示例:在 60 km/h 以上行驶时,若同一车在 10 分钟内出现两次疲劳警报,先通知经理;若 10 分钟后仍未解除疲劳,则拨打司机电话。
规则通过 Pydantic v2 定义,生成 JSON Schema 与 TypeScript 类型,保证 UI、模拟器、评测等所有组件使用同一结构。
关键流程
- 写规则:管理者输入一句话,LangGraph 先检查阈值与通道是否完整,若缺失则中断并提示。
- 验证与回放:规则通过约 30 条语义检查后,在过去 7 天的历史数据上回放,返回“会触发 27 次,58 次被节流”。
- 审批与激活:审批仅保存草稿,激活需手动点击按钮,模型无法直接触发。
- 调用与跟进:拨打电话由通知器排队,模型不直接发起,所有后续跟进需人工关闭。
技术要点
- Postgres 16 + RLS,tenant_id 通过 JWT 强制,防止跨租户访问。
- Kafka 处理规则更新,aiokafka 读取压缩主题,重启后可从 Kafka 重新构建规则。
- 监控:Grafana、Prometheus、OpenTelemetry 追踪每条警报,p99 94 ms,99.9 % 无死信。
- 语言与框架:Python 3.12、FastAPI、React 18、Playwright、Docker Compose。
经验教训
- 规则阈值与通道必须在摘要中明确,避免“每小时最多一次”误解。
- 现场电话决策需避免全流程代理,单次 API 调用可在 1.2 s 内完成。
- 语音识别对司机说话不稳定,建议多轮确认并在通话后重新检查警报流。
如果你也在构建自然语言规则或带人工审核的代理,欢迎交流你如何放置“切换”点。
