橙研所

蓝领招聘语音 Agent

一条打进打出的电话链路:实时语音对话 + 通话持久化 + LLM 质检闭环,跑在真实招聘业务里。

实验室 · 生产中约 2 分钟

蓝领招聘有个和白领完全不同的事实:候选人不写简历、不刷 JD,最有效的触达是一通电话。但人工电话贵、质量不稳、没法复盘。这个项目把「打电话聊岗位」做成了一个实时语音 Agent 系统——从运营商线路呼入呼出,到微信里的语音对话,再到每通电话的自动质检评分,整条链路跑在生产环境里。这是本区唯一一个「生产中」而非纯开源的项目:电话链路的最小可跑版本已抽成公开 demo,业务系统本身闭源。

它解决什么

痛点现状
触达方式错位蓝领候选人不投简历,图文 JD 触达率低,电话才是主通道
人工电话不可规模化招聘专员一天打几十通,话术质量参差,旺季根本打不过来
通话黑盒打完就完了——没有记录、没有质检、没法从坏通话里学习

核心机制:一条链路,四个端

系统的骨架是「一条语音链路 + 多个接入端」:

形态
电话运营商 SIP 线路呼入呼出,Agent 直接接打真实电话
Web浏览器里的实时语音对话(WebSocket 中继)
微信小程序求职者侧的语音入口,真机跑通
质检每通对话自动落库,LLM-as-judge 按五个维度评分

链路本身:SIP/客户端接入 → 实时语音对话(LiveKit 编排,ASR/TTS/端到端语音大模型走国内云厂商)→ 通话记录持久化(音频 + 转写 + 结构化结果)→ 质检评分回流。质检这一环让系统有了反馈闭环——坏通话不再消失,而是变成话术和 prompt 迭代的输入。

三个实打实的工程坑

实时语音 Agent 和文本 Agent 是两种生物,这个项目踩出来的教训:

  1. pipeline 的 prompt 不能直接给端到端语音模型用——JSON 输出、tool_call 约定在实时语音链路里会被读出声来,得单独写覆盖层。
  2. sentence ≠ turn——ASR 吐一句不等于用户说完了,不做 debounce 就会疯狂抢话。
  3. 音频没播完不能切状态——状态机跟着文本走而不是跟着播放走,用户听到的就是半句话。

怎么用

业务系统闭源,但电话链路的最小可跑骨架已开源成 demo:LiveKit + 国内 SIP 接入 + 云厂商语音栈的中文电话 Agent,clone 后按 README 填好线路与模型凭证即可拨通第一通电话。

一句话

不是「能语音聊天的机器人」,是一条从电话线到质检报表都长在一起的生产链路。