回收 411 MB(470 M → 58.8 M),全部经回收站,可恢复: - 待清理/(146.2 M,含 relay 分片 128 M 与 42 项过程目录) - tmp/(32.4 M,按接续棒命名的过程临时区) - .workbuddy/tmp/(39.5 M) - 4 份 workbuddy.db 冗余副本(101 M,09-23 事故的坏副本 / 抢救产物) - tmp/im16/gw/centrifugo 二进制(63.9 M,可重下)+ 缓存残留 入库范围:常驻规则(CODEBUDDY.md / README.md / state.py)、在途接续入口与 接续包、docs/、交付物/、交接单/、归档/、scripts/、.codebuddy/、 .workbuddy/memory/;共 398 件,其中 >60 KB 的 26 件全为文档。 排除(.gitignore):tmp/、待清理/、运行态日志与缓存、*.db 与 DB 备份整目录、 打包二进制(*.tar.gz / *.tgz)、记忆修复前备份。
19 KiB
VoxEMW 全云 API 化:接入 dsh 修订方案(零自托管模型)
- 日期:2026-09-09(22:50 版)
- 性质:对《VoxEMW接入dsh调研与落地方案_20260909.md》的方向性修订——用户决策:模型全部连线上 API,不部署任何本地模型
- 一句话:不再"代理运行 VoxEMW 那套 GPU 服务",而是以 VoxEMW 为产品与体验蓝本,复用其 persona 文案与
assets/mojingnvwu/face_ref.jpg形象资产,后端全部换成 2026 年已商业化的云端实时 API,由 dsh 插件做编排/代理/隔离。
⚠️ 重要更正:前一版文档 §4 判断"实时写实数字人渲染没有等价公开 API"——该判断已被 2026-09 市场现状推翻:火山引擎「实时互动数字人 API(FlowAct-R1)」、阿里云「数字人实时交互 OpenAPI」、ZEGO「精品照片数字人」均已提供"图片/形象 + 音频流 → 实时视频流"的商业 API。全云 API 路线可行,本文即按此重写。
一、决策影响对照(原方案 → 修订方案)
| 维度 | 原方案(代理 VoxEMW GPU 服务) | 修订方案(全云 API) |
|---|---|---|
| 模型部署 | 4090 主机四模型本地常驻(21.7G/24G) | 零本地模型,全部云端 API |
| GPU 主机/隧道 | 需要 | 移除,不需要任何自管 GPU |
| VoxEMW 代码 | 运行上游 python 全套 | 不运行,仅作蓝本(UI 氛围/协议形态/人设) |
| 核心工作 | 守护 + 反向代理 + 槽位 | 云端编排层(Realtime WS 对接 + 数字人流对接 + 人设注入) |
| 用户数据隔离 | 槽位 + persona 映射 + 零持久化 | 槽位/配额 + profile 维度记账 + 云端 session 独立 + 第三方合规提示 |
| 需要决策的新增项 | — | 供应商组合、数字人形象图、音色路线(见 §七) |
二、2026-09 云端供给盘点(VoxEMW 六积木逐块替换)
2.1 替换矩阵
| VoxEMW 积木 | 等价云 API(已核实存在) | 关键参数/证据 |
|---|---|---|
| ① VAD + ② STT | 并入"端到端 Realtime 模型"(自带 server VAD + 自动打断),或单独接讯飞/火山/阿里实时 ASR | 端到端更省事,见 2.2 |
| ③ LLM 大脑 | 端到端模型自带大脑;或保留 DeepSeek API(分离式时) | 魔镜人设走 instructions(session.update),与 VoxEMW 注入 persona 同思路 |
| ④ TTS 音色 | 端到端预置音色(列表切换);要"专属音色/克隆"则分离式接 MiniMax / 阿里 CosyVoice / 火山豆包 | 见 §六体验差异(音色设计能力是最大降级点) |
| ⑤ 写实数字人 | 火山「实时互动数字人 API (FlowAct-R1)」:单张人物图 + 16kHz PCM 音频流 → 实时视频流,480P@25fps,首帧 ~2s,声画毫秒同步(docs.volcengine.com) 或 阿里云数字人实时交互 OpenAPI:WebSocket + streamed audio driver,支持 customUserId(天然适合租户标记)(help.aliyun.com)或 ZEGO 精品照片数字人:1 张照片 200ms、1080P,走 RTC 视频互动(doc-zh.zego.im) |
单图输入 → assets/mojingnvwu/face_ref.jpg 可直接复用 |
| ⑥ 眼睛 VLM | GLM-Realtime(音视频通话模型,WebSocket,支持摄像头帧输入、function calling、server VAD、可打断) 或 阿里 Qwen-Omni-Realtime / qwen3.5-omni-plus-realtime(DashScope,WS 与 WebRTC 双通道,视频帧输入) |
摄像头帧走同一条 Realtime WS,天然实现"她看得见你" |
2.2 端到端 Realtime vs 分离式(架构大方向二选一)
| 端到端 Realtime(推荐) | 分离式(ASR + LLM + TTS 各选一家) | |
|---|---|---|
| 做法 | 一个 WebSocket 完成"听→想→说",服务端 VAD/打断全托管 | 每环节独立 API,自行拼装状态机 |
| 延迟/体验 | 低(0.3~0.5s 级开口),打断顺滑 | 每跳多一次网络,拼装复杂、易抖 |
| 音色自由度 | 预置音色列表(GLM-Realtime 提供 tongtong/xiaochen/female-tianmei…) | 可用 MiniMax/CosyVoice 克隆"魔镜专属嗓音" |
| 视觉(眼睛) | GLM-Realtime / Qwen-Omni 直接吃视频帧 | 需另接 VLM API |
| 计费参考 | GLM-Realtime-Flash:音频 0.18 元/分,视频 1.2 元/分;Air:0.3 / 2.1 元/分(docs.bigmodel.cn) | 各家按量,总价通常更高 |
推荐组合(两个候选,M1 前拍板):
- 组合甲(默认推荐):端到端大脑+声音 = 智谱 GLM-Realtime;出画 = 火山 FlowAct-R1(单图+音频流)。理由:中文生态、GLM-Realtime 带视频+function calling、成本低、火山数字人与豆包端到端语音同族可平滑替换。
- 组合乙(同厂商偏好):端到端 = 阿里 Qwen-Omni-Realtime(视频帧原生);出画 = 阿里实时数字人 OpenAPI(带
customUserId,租户标记友好)。理由:一家计费/控制台,WebRTC 浏览器直连低延迟。
三、目标架构(修订后)
┌──────────── 用户浏览器(dsh 会话窗口右侧分栏面板,同源 https)───────────┐
│ 魔镜面板(轻量前端,蓝本=VoxEMW web/ 的氛围,但重写为云版) │
│ ├─ 麦克风采集 16kHz PCM → host 代理 → 云 Realtime WS │
│ ├─ 摄像头帧(可选"眼睛")→ host 代理 → 同一 Realtime WS │
│ └─ 云数字人视频流 → <video> 播放(火山 FlowAct-R1 / 阿里) │
└──────────────────────┬──────────────────────────────────────────────────┘
│ 同源(ws/wss + http),Authorization 由服务端注入
┌──────────────────────▼── dsh 服务器(47.77.182.89 / dsh 域)────────────┐
│ dsh-plugin-voxemw-cloud │
│ ├─ lib/host.js:/voxemw/api/* + /voxemw/ws/* 反向代理到云厂商 │
│ │ · 云 API Key 保管于此,**绝不下发浏览器** │
│ │ · 注入 dsh 登录态 → 按 profile 换取一次性云端会话 token │
│ ├─ lib/slot.js:会话槽位仲裁 + 配额(按 profile 限每日用量) │
│ ├─ lib/billing.js:profile × 分钟数 × 费用的用量记账(审计) │
│ └─ lib/client.js:会话分栏 + 魔镜面板 UI(沿用 mcn split 技术) │
└─────────────────────────────────────────────────────────────────────────┘
│ HTTPS/WSS(云厂商公网 API)
▼
智谱 GLM-Realtime / 阿里 Omni-Realtime(大脑+耳朵+嗓子+眼睛)
火山 FlowAct-R1 / 阿里实时数字人(出画,输入 face_ref.jpg 形象)
要点:
- 云 API Key 全部收口在 dsh 服务端,浏览器永远只连 dsh 同源地址 → 无 CORS、无密钥泄露、天然 secure context。
- 数字人形象输入 = 复用 VoxEMW 仓库
assets/mojingnvwu/face_ref.jpg(280K 单张正面像,符合 FlowAct-R1"清晰正面半身图"要求)。 - 魔镜人设 = 复用
personas/mojingnvwu.md正文,经session.update.instructions注入(与 VoxEMW 注入 s2s 同一思路);音色从云端预置列表近似选(见 §六)。 - VoxEMW 上游 python 不再被运行;前端也需重写轻量云版(原
web/深度耦合 orchestrator 协议/本地假设,不能直接指向云)。
四、dsh 插件形态(包结构修订)
命名统一(2026-09-09 实现时裁定):插件名定为
dsh-plugin-voxemw-cloud(v0.1.0),替代早期方案的dsh-plugin-voxemw提法,旧称不再使用。 M1 交付边界:客户端 bundle 只能在运行中的 dsh 实例加载验证(红线:client 改动必须重启实例 + 打包缓存),本机开发仅做语法/逻辑冒烟测试;实例级验证步骤见 README。云端厂商链路需账号开通后接线,realtime/avatar 先以"协议适配层 + 纯函数"落地(可测),UI 侧仿 social-workbench 提供"未配置云端"引导态。
dsh-plugin-voxemw-cloud/
├─ package.json / cordis.patch.yml # 三段式骨架,注册 __mcnEntries,feature-tier
├─ lib/
│ ├─ index.js # 路由注册:控制面 /voxemw/api/* + 面板页 /voxemw/app + /voxemw/health
│ ├─ slot.js # 槽位 + 配额(云会话按分钟计费 → 必配每日上限)
│ ├─ billing.js # profile 维度用量/费用记账(审计表)
│ ├─ cloudcfg.js # 厂商/Key/模型/音色/形象 配置(服务端保管,密钥不下发)
│ ├─ realtime.js # Realtime 协议适配层:session.update(人设/音色) 构建等纯函数
│ ├─ avatar.js # 数字人协议适配层:会话初始化请求构建等纯函数
│ └─ client.js # bundle:工作台入口 + 面板(沿用 mcn 分栏宿主,iframe 同源)
├─ web/app.html # 魔镜面板轻量前端(单文件,同源加载,含麦克风回环自测)
└─ README.md
五、用户数据隔离(修订)
| 数据 | 存放/流向 | 隔离措施 |
|---|---|---|
| 用户语音/摄像头帧 | 浏览器 → dsh 代理 → 云厂商 | 每次会话新建独立云端 session;代理不留音频副本(纯透传);关闭面板即销毁 |
| 对话/转写 | 云端会话内存(GLM 音频通话上下文 ~8K/20 轮) | 会话结束即释放;需留存时按 profile 落用户目录,绝不跨用户复用 |
| 人设/热词 | dsh 服务端按 profile 存映射 | 注入仅限本人会话 |
| 计费/用量 | billing 表(profile 维度) | 每用户只见自己的记账 |
| 云 API Key | dsh 服务端环境变量 | 浏览器不可见;轮换/最小权限(RAM/子账号 key) |
新增合规注意(P1):语音/画面会经第三方云厂商处理——产品上需对用户明示;自用/内网不受影响。厂商选型时优先国内合规厂商(智谱/阿里/火山均支持企业实名)。
沿用上一版 §6.2 的槽位层:端到端模型与数字人流都按会话/分钟计费且厂商有并发限制(如 GLM Realtime 免费/低等级并发 5 路),slot 互斥 + 每日配额仍然是刚需。
六、体验差异(诚实对照,避免上线后落差)
| 体验点 | 原版(本地 4090) | 云 API 版 | 影响 |
|---|---|---|---|
| 开口延迟 | 说完 ~3s(本地 s2s 链路) | 端到端云 Realtime 通常相当或更低(server VAD 判停即响应) | ✅ 不降级 |
| 出画首帧 | SoulX 常活待机,几乎即时 | 火山 FlowAct-R1 首帧 ~2s;ZEGO 200ms 但走 RTC | ⚠️ 需预热/占位动画掩盖,或选 ZEGO |
| 音色"设计感" | VoxCPM2 描述词凭空造嗓 + 种子钉定 | 端到端只有预置音色;专属嗓音需分离式克隆(需参考音频) | ⚠️ 最大降级点,见决策 3 |
| 魔镜形象 | SoulX 写实渲染 | 云端数字人(face_ref.jpg 驱动或平台形象) | 观感不同但可接受 |
| 长会话稳定性 | 本地单时钟唇形同步 | 厂商提示"过长视频有崩坏概率,建议会话长度策略"(火山) | 需设单会话时长上限并自动续段 |
| 运营成本 | GPU 租用(AutoDL 时按小时) | 按分钟计费(参考:音频 0.18 |
低频个人使用成本低;高频需配额 |
七、需要你拍板的 3 个决策(M1 前置)
- 供应商组合:组合甲(智谱 GLM-Realtime + 火山 FlowAct-R1,默认推荐)还是组合乙(全阿里)?还是只要纯语音(先不做出画,最省事)?
- 数字人形象:直接用 VoxEMW 自带
assets/mojingnvwu/face_ref.jpg,还是换一张更符合"魔镜女巫"设定的形象图(含版权确认)? - 音色路线:先用云端预置女声(接近即可,最快)→ 之后若需"魔镜专属嗓音"再接分离式 TTS 克隆(需你提供一段 3~10s 参考音频,或用描述词在支持语音设计的 TTS 上逼近原 seed 效果)?
八、实施路线(修订)
M1 — 云端链路跑通 + 面板可见(半天~1 天)
- 注册厂商账号、开通 API(按决策 1);服务端保管 key。
- 独立验证页:麦克风 → Realtime WS 对话成功;音频流喂数字人 API → 视频出画。
- 接入 dsh:host 代理 + 会话分栏面板内嵌云版前端。
- ✅ 验收:dsh 会话旁打开魔镜,可语音对话 + 数字人出画;关闭面板会话无损。
M2 — 隔离/配额/记账/人设 4. slot + 每日配额;profile 维度 billing;人设注入;face_ref.jpg 形象固化;占用/排队 UI。
- ✅ 验收:双账号并发互斥、各自人设/记账不可见;用量超限自动拒 claim。
M3 — 体验与合规 5. 音色定制(决策 3 后半);长会话自动续段/上限;窄栏 UI 打磨;日志分级;第三方数据处理提示。
九、访问形态、服务器负载与并发容量(2026-09-09 增补,回应"是否还是插件/压力多大/支持多少人")
9.1 它仍是 dsh 插件,访问入口不变
全云 API 化没有改变"插件"形态——改变的是插件内部"不装模型、只做编排/代理"。访问链路分两个角色:
| 角色 | 是什么 | 访问方式 |
|---|---|---|
| 使用方(dsh 用户) | 登录 dsh 后,在会话窗口分栏点「魔镜女巫」入口 | 插件 client bundle 注入 __mcnEntries,点击展开右侧面板 → 浏览器采集音视频、渲染数字人,全程不感知云厂商存在 |
| dsh 平台自身 | dsh 服务端运行 dsh-plugin-voxemw-cloud(host 半区) |
持有各家云凭证;控制面调用厂商 API 换取会话;把短时效凭证交给浏览器;按 profile 做槽位/配额/记账;也可向 dsh agent 暴露 MCP 工具("启动/切换人设/查占用") |
所以"dsh 如何访问"的答案 = 浏览器访问 dsh 同源入口,dsh 插件进程访问云厂商,中间没有其他系统。
9.2 两条数据面架构(决定服务器压力,M1 前必须拍板)
| 路径 | 服务器压力 | 适用 | |
|---|---|---|---|
| A. 媒体面直连(推荐) | 浏览器 ↔ 云厂商 RTC/WS 直连音视频;dsh 服务器只做控制面(登录态校验 → 向厂商换短时效会话凭证 → 下发浏览器 → 记账) | 极小:每个活跃会话仅几十 KB/s 级信令/文本,无媒体转发 | 云厂商支持浏览器直连 + 临时凭证。已核实线索:Qwen-Omni-Realtime 明确支持 WebRTC 浏览器低延迟;ZEGO/火山走 RTC 房间模型天然直连;GLM-Realtime 为 WS+API Key,直连会暴露 key,需厂商临时凭证或走 B |
| B. 服务端中转(WS 全代理) | 浏览器 → dsh 插件代理 → 云厂商 | 媒体全部过服务器:带宽=瓶颈(见 9.3 量化) | 厂商只有 WS+长期 Key(如 GLM-Realtime 默认);或无浏览器 SDK |
建议:M1 验证时逐厂商问清"浏览器直连 + 临时凭证(ephemeral token/RTC room 凭证)"支持度,优先 A;A 不可用的环节退回 B 并控制并发。
9.3 服务器负载量化(估算,供规划)
单会话媒体流量(最坏=厂商给原始 PCM,若走 RTC/Opus 会小 4~8 倍):
| 流 | 方向 | 码率估算 | 说明 |
|---|---|---|---|
| 上行语音 | 用户→云 | 16kHz PCM16 ≈ 256 kbps(Opus 则 ~24–32 kbps) | 说话时才满速 |
| 下行语音 | 云→用户 | GLM 输出 pcm24 ≈ 384 kbps | — |
| 数字人视频 | 云→用户 | 480P@25fps 估 0.8–1.5 Mbps(厂商未公开,按同类流媒体估) | 仅出画档 |
- 架构 A(直连):以上流量全部不经 dsh 服务器 → dsh 服务器负载≈0,只剩登录校验/凭证下发/账单(每会话可忽略)。dsh 服务器不是瓶颈。
- 架构 B(中转):每路活跃全功能会话 ≈ 上行 256k + 下行 1.7M ≈ ~2 Mbps(不出画纯语音约 0.6 Mbps)。按带宽估并发:10 Mbps 出口 ≈ 5 路全功能(或 ~16 路纯语音);1 Gbps ≈ 500+ 路(理论,另受云配额/CPU 转发限制)。即:若要中转且大规模,带宽决定上限。
9.4 支持多少人同时访问(分层容量模型)
"同时访问"要拆成三层,瓶颈各不相同:
| 层 | 含义 | 瓶颈 | 规模预估(推荐架构 A) |
|---|---|---|---|
| ① 同时在线 | 登录 dsh、面板能打开(不对话) | dsh 服务器 + 云账号配额外的静态资源 | 数百~上千不成问题,服务器压力≈0 |
| ② 同时语音对话 | 占用一条云端 Realtime 会话 | 云厂商并发配额(例:GLM-Realtime 低等级在途并发 5 路起,可付费升级) | 通常买 5~50 路;受成本约束 |
| ③ 同时数字人出画 | 占用一路云数字人渲染 | 云数字人按路/分钟计费的并发上限 | 单账号通常个位数~十路级,需与厂商确认 |
结论:
- 瓶颈不在 dsh 服务器(只要走媒体面直连 A);瓶颈在云厂商并发配额和按分钟费用。
- 推荐按"槽位数 = 你买的云端路数"来卖/分配:例如买 5 路 → 同时最多 5 人占用魔镜,第 6 人排队(slot + 配额机制正是为此设计)。这也是为什么 §四 slot/billing 是刚需。
- 若坚持服务端全中转(B),则按 9.3 公式用你 dsh 服务器实际出口带宽反推上限。
⚠️ 各厂商具体并发配额/直连凭证机制随套餐变化,M1 开通账号后实测(一次开 N 路压测),本表为规划级估算。
附录:信息来源
- 火山引擎「实时互动数字人 API (FlowAct-R1)」:https://docs.volcengine.com/docs/86081/2387261
- 阿里云「数字人实时交互 OpenAPI」:https://help.aliyun.com/en/me/getting-started/digital-human-real-time-interactive-openapi
- ZEGO「实时互动 AI Agent 2.0 / 精品照片数字人」:https://doc-zh.zego.im/aiagent-mini-program/introduction/overview
- 智谱「GLM-Realtime」:https://docs.bigmodel.cn/cn/guide/models/sound-and-video/glm-realtime
- 阿里「Qwen-Omni-Realtime / qwen3.5-omni」:https://help.aliyun.com/en/model-studio/realtime
- VoxEMW 复用资产:
D:\tmp\voxemw\voxemw-src\assets\mojingnvwu\face_ref.jpg、personas/mojingnvwu.md(MIT 许可,复用保留版权声明)