{ "schema_version": 1, "diagram_type": "architecture", "meta": { "title": "火山硬件对话智能体迁移后目标架构", "locale": "zh-CN", "quality_profile": "showcase", "viewBox": [1360, 820] }, "components": [ { "id": "elder", "type": "external", "label": "长者用户", "sublabel": "说话、打断、挂机", "pos": [40, 230], "size": [130, 72] }, { "id": "device", "type": "frontend", "label": "陪伴硬件", "sublabel": "麦克风、扬声器、本地队列", "pos": [230, 230], "size": [180, 72] }, { "id": "hardwareSdk", "type": "frontend", "label": "火山硬件智能体 SDK", "sublabel": "高质量 UDP/RTC 主链", "pos": [490, 230], "size": [200, 72] }, { "id": "volcAgent", "type": "external", "label": "火山硬件对话智能体", "sublabel": "Bot、ASR/LLM/TTS、会话", "pos": [770, 230], "size": [220, 72] }, { "id": "deviceRegistry", "type": "external", "label": "火山产品与设备管理", "sublabel": "Product、Device、License、Bot 绑定", "pos": [770, 50], "size": [220, 72] }, { "id": "platformApi", "type": "backend", "label": "平台会话控制面", "sublabel": "授权、冻结快照、心跳、停止", "pos": [490, 470], "size": [200, 76] }, { "id": "toolGateway", "type": "security", "label": "工具与记忆网关", "sublabel": "MCP/Function Calling、短期会话令牌", "pos": [1070, 230], "size": [220, 76] }, { "id": "dataStore", "type": "database", "label": "业务主数据", "sublabel": "PostgreSQL、pgvector、Redis", "pos": [770, 470], "size": [220, 76] }, { "id": "asyncPipeline", "type": "backend", "label": "异步内容与运营流水线", "sublabel": "字幕、摘要、故事、费用、审计", "pos": [1070, 470], "size": [220, 76] }, { "id": "objectStorage", "type": "database", "label": "私有对象存储", "sublabel": "可选双轨录音与导出", "pos": [230, 650], "size": [180, 72] }, { "id": "webApps", "type": "frontend", "label": "家庭端与运营端", "sublabel": "设备、通话、隐私、配置、诊断", "pos": [490, 650], "size": [200, 72] } ], "boundaries": [ { "kind": "region", "label": "设备侧", "wraps": ["device", "hardwareSdk"], "pad": 22 }, { "kind": "region", "label": "火山引擎托管域", "wraps": ["volcAgent", "deviceRegistry"], "pad": 22 }, { "kind": "security-group", "label": "自有平台可信域(业务事实唯一主库)", "wraps": ["platformApi", "toolGateway", "dataStore", "asyncPipeline", "objectStorage", "webApps"], "pad": 24 } ], "connections": [ { "id": "humanVoice", "from": "elder", "to": "device", "label": "双向语音", "variant": "emphasis" }, { "id": "audioFrames", "from": "device", "to": "hardwareSdk", "label": "PCM/设备事件", "variant": "emphasis" }, { "id": "agentLink", "from": "hardwareSdk", "to": "volcAgent", "label": "SDK 直连会话", "variant": "emphasis", "labelAt": [730, 316] }, { "id": "provisioning", "from": "deviceRegistry", "to": "hardwareSdk", "label": "设备凭证与 Bot 绑定", "variant": "security" }, { "id": "prepareSession", "from": "device", "to": "platformApi", "label": "HTTPS 会话控制、字幕与状态", "variant": "security" }, { "id": "toolCalls", "from": "volcAgent", "to": "toolGateway", "label": "MCP / FC", "variant": "security" }, { "id": "toolData", "from": "toolGateway", "to": "dataStore", "label": "租户与长者范围查询", "variant": "security" }, { "id": "conversationFacts", "from": "platformApi", "to": "dataStore", "label": "会话/授权快照", "variant": "emphasis" }, { "id": "asyncJobs", "from": "dataStore", "to": "asyncPipeline", "label": "Outbox 可靠任务", "variant": "dashed", "labelAt": [1030, 560] }, { "id": "mediaUpload", "from": "device", "to": "objectStorage", "label": "可选加密录音直传", "variant": "dashed", "fromSide": "bottom", "toSide": "top", "labelAt": [320, 316] }, { "id": "webControl", "from": "webApps", "to": "platformApi", "label": "HTTPS/OIDC", "variant": "security" } ], "cards": [ { "dot": "emerald", "title": "保留不动", "items": [ "平台继续掌握设备、授权、通话、记忆、费用和审计主数据", "字幕后的摘要、故事、人工确认记忆和隐私删除链路继续复用" ] }, { "dot": "amber", "title": "替换范围", "items": [ "设备不再领取平台 RTC Token,也不再等待云端 StartVoiceChat", "火山硬件 SDK 直接建立会话,旧 RTC 房间与 Agent Task 仅保留兼容期" ] }, { "dot": "rose", "title": "上线硬门槛", "items": [ "必须验证服务端强制停话、设备凭证吊销、字幕/用量回传和近远端录音能力", "任何一项无法闭环时,先限定为试点能力,不替换现网主链" ] } ] }