DeepSeek Harness Hub
← 返回列表

语音栈 Docker 镜像AlexKaiqi/dsh-voice-stack-docker

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

一键部署带语音与多模型的持久化容器环境

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/26 · 已提供中文文档

DeepSeek Harness 临时工作区、多模态模型、实时语音和会话助手的持久化 Docker 栈

综合分
27.8
GitHub 分
27.8
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add AlexKaiqi/dsh-voice-stack-docker
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DSH Voice Stack Docker

一个预装以下四个插件的 DeepSeek Harness Web 镜像:

- dsh-temporary-workspace@0.1.0-rc.5
- dsh-multi-model-provider@0.1.0-rc.15
- dsh-realtime-voice@0.3.2
- dsh-session-assistant@0.4.5

镜像固定使用 @deepseek-ai/dsh@0.1.1-rc.2。插件程序随镜像发布;用户设置、凭据、Session、附件、临时工作区和普通工作文件保存在 Docker named volumes 中,容器重建不会丢失。

本地运行

cp .env.example .env
编辑 .env,设置一个长随机密码
docker compose up --build -d
docker compose ps

打开 ,输入 .env 中的用户名和密码。所有 Provider 都从原生“模型”设置进入:火山方舟使用 llm-pi-ai,豆包 Realtime Duplex 使用 dsh-realtime-voice,不会再出现第二套 Provider 页面。

当前固定的 DSH rc 版本还没有 Provider 编辑器扩展槽,因此镜像构建时会运行 patch-models-ui.mjs,只为原生编辑器增加 realtime-speech 布局和镜像内 Provider 默认值。脚本使用精确标记并在宿主包结构变化时直接让构建失败,避免静默生成错版 UI。

查看日志或停止:

docker compose logs -f dsh
docker compose down

docker compose down 不删除持久卷。只有显式添加 --volumes 才会删除用户的 DSH 数据和 Workspace。

数据卷

Compose 延续原有的两个命名卷,升级现有实例不需要迁移数据:

| Compose volume | 容器目录 | 内容 |
| --- | --- | --- |
| dsh-home | /home/node/.dsh | Profile、设置、凭据、Session、附件和 Workspace 注册信息 |
| dsh-workspace | /workspace | 容器默认工作目录及普通 Agent 工作文件 |

临时工作区默认位于 /home/node/.dsh/temporary-workspaces/workspace-*,因此由 dsh-home 一起持久化,不需要第三个卷。把运行状态与普通工作文件分卷,可以分别控制备份频率和容量;恢复时应把两者视为同一个实例的一组数据。

实际卷名通常带 Compose project 前缀。可这样查看:

docker volume ls | grep dsh-voice-stack-docker
docker volume inspect dsh-voice-stack-docker_dsh-home
docker volume inspect dsh-voice-stack-docker_dsh-workspace
docker system df -v

备份整个实例的两个卷:

docker compose down
docker run --rm \
-v dsh-voice-stack-docker_dsh-home:/source/dsh:ro \
-v dsh-voice-stack-docker_dsh-workspace:/source/workspace:ro \
-v "$PWD:/backup" \
alpine tar czf /backup/dsh-voice-stack-backup.tgz -C /source .

恢复时应使用空卷,并在容器停止状态下把归档中的 dsh/ 和 workspace/ 分别恢复到对应卷;不要覆盖正在运行的实例。如果 Compose project 名不同,先用 docker volume ls 查询实际卷名。

公网部署

DSH 本身只监听容器内部的 127.0.0.1:3081;同一镜像内的非 root Nginx 在 PORT 上提供 Basic Auth 和 WebSocket 反向代理。生产环境还必须由 Railway、Coolify、Caddy、Traefik 等提供 HTTPS。麦克风依赖浏览器安全上下文,普通公网 HTTP 不可用。

把公开域名的 authority(不含协议和路径)加入 DSH_TRUSTED_HOSTS:

DSH_TRUSTED_HOSTS=bot.example.com docker compose up -d

多个 authority 用逗号分隔,例如 bot.example.com,bot.example.com:443。反向代理必须保留原始 Host、Origin 和 WebSocket Upgrade;实时语音插件会执行同源校验。

Railway/Coolify 中需要持久化两个目录:

| 容器目录 | 内容 |
| --- | --- |
| /home/node/.dsh | DSH 配置、凭据、Session、附件与临时工作区 |
| /workspace | 普通工作文件 |

平台端口设置为 3080。外部 / 需要 Basic Auth;镜像自身的 Docker Healthcheck 会直接检查仅容器内部可见的 DSH 端口。不要向容器挂载 /dev/snd:麦克风由用户浏览器采集,不是由云服务器声卡采集。

每用户一个实例

所有用户可以复用同一镜像,但每个用户必须使用自己的一组持久卷。不要让不同用户共享 /home/node/.dsh 或 /workspace。

插件版本在镜像构建时固定。发布升级时构建新的镜像 tag;先用测试实例验证持久数据兼容性,再逐个替换用户容器。容器首次启动时会把预装 Web Profile 种到空卷;已有数据卷只同步镜像托管的四个插件,不覆盖设置、凭据、Session 或工作文件。

自定义运行

默认命令等价于:

dsh --profile web --host 127.0.0.1 --port 3081 --no-open

可覆盖:

- PORT:监听端口,默认 3080
- DSH_AUTH_USERNAME:公网 Basic Auth 用户名,默认 dsh
- DSH_AUTH_PASSWORD:公网 Basic Auth 密码,必填且不会写入镜像
- DSH_HOST:DSH 内部监听地址,固定建议 127.0.0.1
- DSH_INTERNAL_PORT:DSH 内部端口,默认 3081
- DSH_STARTUP_TIMEOUT:DSH 启动就绪等待秒数,默认 60
- DSH_PROFILE:Profile 名,默认 web
- DSH_TRUSTED_HOSTS:允许的公网 authority,逗号分隔

传入其他命令时,入口脚本仍会先初始化空的持久卷:

docker compose run --rm dsh dsh --profile web --dump-config

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群