被动交互指南 · JS / 浏览器

被动交互指南 · JS / 浏览器

⚠️ JS SDK 暂未提供被动交互。 本文档如实说明现状,避免把不存在的 API 当成可用能力。

现状

JS SDK(linksoul-agentsdk)当前没有被动交互实现:

  • AgentSdk(src/agent-sdk.ts)不含任何被动回调类——没有 Audio2LlmCallback / Asr2TtsCallback / AudioVideo2VlmCallback 等 8 种回调的对应出口;
  • 没有 registerAudio2Llm / registerAsr2Tts 等 register* 注册方法;
  • 没有被动交互所需的 PassiveCallback 基类、Response 应答对象或技能下发 / 打断 API。

被动交互(机器人发起 → SDK 处理 → 返回 ASR/LLM/VLM/TTS/技能)请使用 Java / Python / Android / iOS SDK。详见:

已预留但未接线的协议能力

protocol/events.ts 中预留了被动交互相关的 wire 常量,但尚未接入任何入库分发逻辑:

ts
export const AgentEventType = {
  // ...
  FunctionCallExpose: 'agentsdk.function_call.expose',   // 预留:Function Call 透传
  FunctionCallArbiter: 'agentsdk.function_call.arbiter', // 预留:Arbiter 仲裁决策回传
  HistoriesExpose: 'agentsdk.histories.expose',          // 预留:对话历史透传
  // ...
} as const;

export const ArbiterDecision = {
  Delegate: 'delegate',
  Override: 'override',
  Illegal: 'illegal',
} as const;

这些常量仅供协议对齐参考,不代表 JS SDK 已支持 onFunctionCall / onHistories / onArbiter。功能未落地前请勿在生产环境中依赖。

浏览器侧的替代路径

若你的 Web 端确实需要机器人端侧的语义/技能能力,可选:

  1. 由服务端代理桥接:服务端代理连通上游网关后,用 Java / Python SDK 的被动能力接收机器人事件,再把结果经自定义通道推给浏览器。
  2. 改用超视距遥操:v1.5.0 已提供的 超视距遥操,让 Web 操作员接管机器人的语音收发(本质是操作员 ↔ 机器人的实时音频链路,而非 SDK 二开的 ASR/LLM 语义处理)。

二选一的取舍由你的业务形态决定,详见 架构概述。