调用约定

示例 Base URL:http://127.0.0.1:8000。桌面版不要硬编码端口,应使用当前页面同源地址。FastAPI 交互式 OpenAPI 页面位于运行中服务的 /docs

这些接口没有设计为公网多用户 API。不要直接把本地服务监听地址暴露到外网。

对话

POST/api/chat

发起角色对话,返回 text/event-stream

{
  "role_name": "默认角色",
  "message": "今天过得怎么样?"
}
SSE eventdata.data用途
delta最新增量文本逐 token/片段更新 UI
text当前完整回复兼容完整文本更新
sentence完整句子进入 TTS 和即时表情分析
done完整回复已持久化本轮历史
error错误信息中断当前管线
DELETE/api/chat/history

清空全部持久化对话历史。主界面通常使用更细粒度的 /api/history

表情与动作分析

POST/api/chat/expressions
{
  "sentences": ["见到你真开心。"],
  "available_expressions": ["happy", "sad", "neutral"],
  "available_actions": ["none", "clapping", "look_around"]
}
{
  "expressions": [{
    "sentence_index": 0,
    "expression": "happy",
    "intensity": 0.8,
    "action": "clapping"
  }]
}

动作名称会标准化为 snake_case,并确保 none 始终可用。

语音合成

POST/api/tts
{ "text": "欢迎回来。", "role_name": "默认角色" }
{
  "url": "/tts_audio/tts_ab12cd34.wav",
  "filename": "tts_ab12cd34.wav",
  "duration_ms": 1840
}

text 长度限制 1–500。后端按角色记录选择 TTS 引擎,并串行合成以避免云端 WebSocket 冲突。

实时语音识别

WS/api/asr/stream

连接后先发送控制消息,再发送单声道 16 kHz、16-bit PCM 二进制帧:

{ "type": "start", "language_hints": ["zh", "ja", "en"] }
// binary PCM frames...
{ "type": "stop" }
事件说明
ready云端识别任务已就绪
partial中间识别文本
final一次 VAD 断句结果
done整段识别完成
error连接或识别错误

角色管理

GET/api/roles

返回 {"roles":["默认角色"]}

GET/api/roles/{role_name}

返回人格提示词、参考音频、voice_id、voice_provider、OSS URL、目标模型和时间戳。

POST/api/roles

multipart/form-datarole_namevoice_provider、可选 audio。LLM 自动生成提示词。

POST/api/roles/create-with-baike

比普通创建多一个 baike_query,抓取失败时回退为普通生成。

POST/api/roles/register

用户直接提交 system_prompt,跳过 LLM 生成;参考音频为空时尝试默认音频。

DELETE/api/roles/{role_name}

删除角色,并尝试清理关联云端音色和 OSS 资源。

历史与记忆

方法路径说明
GET/api/history?role=名称获取全部或指定角色历史
DELETE/api/history?role=名称清空全部或指定角色历史
GET/api/memory读取长期记忆
POST/api/memory/generate从最多 200 条历史中生成摘要
DELETE/api/memory清空长期记忆

桌宠接口

POST/api/pet/open · /close · /quit

open 可选宽高;close 隐藏;quit 退出桌宠界面但保留 CEF 线程待命。

GET/api/pet/status
{ "alive": true, "ready": true, "visible": true, "available": true }
PUT/api/pet/preferences
{ "width": 620, "height": 480, "idle_action": "look_around" }

偏好宽高范围 360–800,并持久化到用户数据目录。

POST/api/pet/model

multipart/form-datafile 仅接受 .vrm,最大 100 MiB;保存后向已就绪桌宠推送新模型 URL。

其他桌宠接口包括 /resize/transparent/drive/ready/capabilities/context/theme

设置与桌面主控

方法路径说明
GET/api/settings/status返回非敏感配置与密钥掩码状态
PUT/api/settings保存设置并以 202 表示需要服务重启
POST/api/shell/show-main桌宠请求恢复主窗口
GET/api/shell/nextWinForms 长轮询获取待处理命令