Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Liaison robonix/system/liaison

角色

Liaison 是统一的用户交互入口。所有外部交互(rbnx chat TUI、移动 App、Web、API client)都不直连 Pilot,而是先打到 Liaison:文本路径直接转发给 Pilot,语音路径由 Liaison 自己编排(mic → ASR → voiceprint → Pilot → 可选 TTS → speaker)。

能力约定 TOML 在 capabilities/system/liaison/,IDL 在 capabilities/lib/liaison/

接口

能力约定 ID模式载荷(IDL)能力约定 TOML
robonix/system/liaison/submitrpc_server_streamliaison/SubmitTaskpilot/Task → 流 pilot/PilotEventsystem/liaison/submit.v1.toml
robonix/system/liaison/voicerpc_server_streamliaison/StartVoiceSessionStartVoiceSessionRequest → 流 VoiceEventsystem/liaison/voice.v1.toml

submit 的事件流就是 Pilot 事件流原样转发;voice 的流是 Liaison 自己合成的 VoiceEvent,其中 event_kind=PILOT 的事件把内嵌 PilotEvent 装回 pilot 字段。用户身份走 Task.context_json.user_id(默认 local:<os_user>)。

rbnx chat 的连接路径

rbnx chat
    │  atlas.find(contract="robonix/system/liaison/submit", grpc) → endpoint
    ▼
robonix-liaison (gRPC)
    ├── Enter  → liaison.SubmitTask(Task) → Pilot.SubmitTask 转发
    └── Ctrl+V → liaison.StartVoiceSession(req)
                 → mic → ASR → voiceprint → Pilot → (可选 TTS+speaker)
                 → 每阶段产生一个 VoiceEvent

语音 pipeline 的能力依赖

阶段能力约定参考 provider
录音robonix/primitive/audio/micaudio_driver / audio_macos_bridge
ASRrobonix/service/speech/asrservices/speech
声纹robonix/service/voiceprint/identifyservices/voiceprint
Pilotrobonix/system/pilotrobonix-pilot
TTSrobonix/service/speech/ttsservices/speech
播放robonix/primitive/audio/speakeraudio_driver / audio_macos_bridge

任何阶段缺 provider 都不会中断退出:

  • 没 mic / ASR → mock 模式用预设 transcript;非 mock 模式发 ERROR 终止会话。
  • 没 voiceprint provider → fallback 到客户端 client_user_id hint,发一条 KIND_USER_IDENTIFIED 事件附 using client hint 说明。
  • 没 TTS / speaker → 跳过播放,文本回复仍走 PILOT 事件。

启动

liaison 是内置 system 二进制(与 atlas / executor / pilot 同级),由 rbnx boot 拉起:

system:
  liaison:
    listen: 127.0.0.1:50081
    log: info
    pilot_endpoint: 127.0.0.1:50071  # 可选,默认从 atlas 发现

也可手动起 robonix-liaison --listen … --atlas … --pilot-endpoint …,或用环境变量 ROBONIX_LIAISON_PORT / ROBONIX_ATLAS_ENDPOINT / ROBONIX_PILOT_ENDPOINT