通用

Gateway 默认监听 https://localhost:8006。以下所有端点均相对于 Gateway。


服务管理 API

以下端点用于管理系统状态、队列、配置和资源,与交互模式无关。

健康与状态

GET /health

健康检查。

响应{"status": "ok"}

GET /status

服务全局状态摘要。

响应

{
  "total_workers": 4,
  "idle_workers": 2,
  "busy_workers": 2,
  "queue_length": 3,
  "workers": [...]
}

GET /workers

详细 Worker 列表。

响应

{
  "workers": [
    {
      "url": "http://localhost:22400",
      "index": 0,
      "status": "idle",
      "current_task": null,
      "current_session_id": null,
      "cached_hash": "abc123",
      "busy_since": null
    }
  ]
}

队列管理

Gateway 使用 FIFO 队列管理并发请求。所有交互模式共享同一个队列。

GET /api/queue

获取队列状态快照。

响应

{
  "queue_length": 3,
  "entries": [
    {
      "ticket_id": "tk_001",
      "position": 1,
      "task_type": "half_duplex",
      "eta_seconds": 15.0
    }
  ],
  "running": [
    {
      "worker_url": "http://localhost:22400",
      "task_type": "half_duplex",
      "session_id": "stream_xyz",
      "started_at": "2026-02-24T10:30:00Z",
      "elapsed_s": 5.2
    }
  ]
}

GET /api/queue/{ticket_id}

查询指定排队凭证的状态。

DELETE /api/queue/{ticket_id}

取消排队请求。


ETA 配置

ETA(预计等待时间)为每种请求类型的基准值,运行时通过指数移动平均(EMA)动态修正。

GET /api/config/eta

响应

{
  "eta_chat_s": 15.0,
  "eta_half_duplex_s": 180.0,
  "eta_audio_duplex_s": 120.0,
  "eta_omni_duplex_s": 90.0,
  "eta_ema_alpha": 0.3,
  "eta_ema_min_samples": 3
}

PUT /api/config/eta

更新 ETA 配置。请求体使用与 GET 响应相同的字段。


KV Cache

GET /api/cache

查询所有 Worker 的 KV Cache 状态。


配置与预设

GET /api/frontend_defaults

获取前端默认配置值。

响应

{
  "playback_delay_ms": 200,
  "chat_vocoder": "token2wav"
}

GET /api/presets

获取 System Prompt 预设列表。

响应

[
  {
    "id": "default_en",
    "name": "English Assistant",
    "system_prompt": "You are a helpful assistant."
  }
]

会话管理

会话自动录制,用于回放和调试。

GET /api/sessions/{session_id}

获取会话元数据。

响应

{
  "session_id": "omni_abc123",
  "type": "omni_duplex",
  "created_at": "2026-02-24T10:00:00Z",
  "config": {}
}

GET /api/sessions/{session_id}/recording

获取会话录制时间线数据。

GET /api/sessions/{session_id}/assets/{relative_path}

获取会话资源文件(音频/视频 chunk 等)。

GET /api/sessions/{session_id}/download

打包下载整个会话。

POST /api/sessions/{session_id}/upload-recording

上传前端录制的音频/视频文件。大小限制 200 MB。


应用管理

控制前端中可用的交互模式。

GET /api/apps

获取已启用的应用列表(前端用)。

GET /api/admin/apps

获取所有应用列表,包含启用状态(Admin 用)。

PUT /api/admin/apps

切换应用启用状态。

请求体

{
  "app_id": "omni",
  "enabled": false
}