dsh-local-studio:在 DeepSeek Harness 侧边栏里接 ComfyUI 与 GPT-SoVITS 的本地创作面板

前言

在 DeepSeek Harness(DSH)里做智能体或日常开发时,经常需要「出一张图」或「念一段文案」,却又不想把提示词、图像或音频送到云端 API。常见做法是各自打开 ComfyUI 网页、单独调 GPT-SoVITS 的 api.py,再在多个目录里找生成结果。下面介绍的 dsh-local-studio 把文生图、语音合成和产出浏览收进 DSH 侧边栏的全屏面板,请求只发往本机服务,文件落在本地目录。

这是什么

dsh-local-studio 是维护者 vamyane 发布的 DSH 插件,在社区目录中归类为模型推理。一句话定位:面向 DeepSeek Harness 的本地 AI 创作工具箱——把 ComfyUI 收成「填 prompt 点生成」,把 GPT-SoVITS 收成「填文本点合成」,并带 ComfyUI / TTS 健康探测与最近产出列表。插件不上传 prompt、图像或音频,也不调用云端 API。

核心功能

资料中与实现一致的能力如下。

界面与集成

  • 侧边栏入口 + 全屏面板,React 直接渲染(无 iframe),跟随 DSH 主题令牌支持明暗,Esc 可关闭。
  • 页头有两个健康状态点(ComfyUI、GPT-SoVITS),3 秒超时探测;悬停可看到具体失败原因(如 connection refused、timeout)及修复提示。

Image 标签页

  • 输入 prompt、宽高、步数 → 调用本机 ComfyUI /prompt → 轮询 /history/{id} → 下载 /view → 保存为 outputs/local-studio/image-<timestamp>.png,并在面板内预览。

Speech 标签页

  • 输入文本(可选参考音频)→ 请求 GPT-SoVITS /tts(先 GET,失败再 POST)→ 保存 voice-<timestamp>.wav,面板内可直接播放。

Recent outputs 标签页

  • 列出输出目录下最新的 30 个图像/音频文件,支持缩略图或音频预览、复制路径。

后端行为

  • 路由挂在 DSH 已认证的 /api 通道(connection.fetch.register),走 Host/Origin 与登录校验。
  • 错误统一为 JSON:{ "error": "...", "hint": "..." } 配合 4xx/5xx;ComfyUI 未启动或 checkpoint 名错误不应拖垮宿主。

ComfyUI、GPT-SoVITS 均为可选:未启动时面板仍可打开并提示需要启动的服务。内置工作流默认使用 Animagine XL 3.1(animagine-xl-3.1.safetensors);任意 SDXL checkpoint 可通过 comfyCheckpoint 或自备 API 格式 workflow 使用。

环境与依赖

组件 版本/说明
DeepSeek Harness >= 0.2.2-rc.1 < 0.3.0-0(使用 connection Fetch-route 服务)
Node.js >= 20(DSH 运行时通常已满足)
ComfyUI 可选,默认 http://127.0.0.1:8188
GPT-SoVITS 可选,其 api.py 服务,默认 http://127.0.0.1:9880

安装与启用

从插件市场(发布后)或本地打包安装时,README 给出的命令为:

# from the plugin market (once published), or from a packed tarball:
npm pack
dsh plugin --profile desktop add ./dsh-local-studio-0.1.0.tgz

本地开发可用目录链接方式:将本仓库复制到 <profile>/local-plugins/dsh-local-studio,在 profile 的 dependencies 中加入 link:./local-plugins/dsh-local-studio,把 dsh-local-studio 写入 dsh.profile.bundles,执行 pnpm install 后重启 DSH。具体步骤见仓库内 ai-brain/dsh-plugin/install.mjs。

重启后,侧边栏页脚会出现 Local Studio 入口,从该处打开面板。

配置

可选配置文件:~/.dsh/local-studio.config.json。文件不存在时使用下列默认值,且不会自动创建文件:

{
  "comfyUrl": "http://127.0.0.1:8188",
  "comfyCheckpoint": "animagine-xl-3.1.safetensors",
  "comfyWorkflow": "",
  "ttsUrl": "http://127.0.0.1:9880",
  "ttsRefAudio": "",
  "ttsPromptText": "",
  "ttsPromptLang": "zh",
  "outputDir": ""
}

常用项含义(节选):

  • comfyUrl:ComfyUI 根 URL;设为 "" 则图像路由返回 501。
  • comfyCheckpoint:须与 ComfyUI/models/checkpoints 下文件名一致。
  • comfyWorkflow:可选,指向 ComfyUI API 格式 workflow JSON 的绝对路径。
  • ttsUrl:GPT-SoVITS 根 URL;设为 "" 则语音路由返回 501。
  • outputDir:为空时默认为 <workspace>/outputs/local-studio。

调试时可使用环境变量:DSH_LOCAL_STUDIO_CONFIG、DSH_LOCAL_STUDIO_OUTPUT、DSH_WORKSPACE。

内置 workflow(亦见 app/workflow.json)支持占位符:{{PROMPT}}、{{NEGATIVE}}、{{WIDTH}}、{{HEIGHT}}、{{STEPS}}、{{SEED}}、{{CHECKPOINT}}。

典型用法

面板内操作

  1. 打开侧边栏 Local Studio,查看页头健康点是否变绿;必要时按悬停提示启动 ComfyUI 或 GPT-SoVITS。
  2. Image:填写 prompt、宽度、高度、步数(宽高二者的倍数须为 8,范围 256–2048;steps 1–80),点击生成,等待计时结束后预览并复制路径。
  3. Speech:填写文本(≤2000 字,可选参考音频路径),生成后在面板内播放 wav。
  4. Recent outputs:浏览最近 30 个 png/jpg/webp/wav 等文件,点击预览或复制路径。

HTTP API(需已登录 DSH)

健康检查:

GET /api/dsh-local-studio/health

文生图示例请求体:

{ "prompt": "1girl, cherry blossoms", "width": 1024, "height": 1024, "steps": 28 }

语音合成示例请求体:

{ "text": "你好,世界", "refAudio": "D:\\voices\\ref.wav" }

列出产出目录:

GET /api/dsh-local-studio/outputs

按文件名读取二进制(仅允许 outputDir 内裸文件名):

GET /api/dsh-local-studio/file?name=image-….png

适用场景与注意

适合谁

  • 已在 DSH desktop profile 下工作、本机已跑或愿意跑 ComfyUI / GPT-SoVITS 的开发者。
  • 希望文生图、TTS 与产出管理留在本机、且不经过云端推理的场景。

安装与运行前请知悉

  • 插件以当前 DSH 进程的权限访问本机 URL 与写文件;安装前应阅读源码与 MIT 许可证,确认 comfyUrl、ttsUrl、outputDir 等配置符合你的安全边界。
  • DeepSeek Harness 生态强调「一切皆插件」;社区目录(如 skillhub.cn)为独立站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的安装命令均来自该插件 README,请勿凭仓库名自行拼接未文档化的 dsh plugin add 参数。
  • 社区目录显示的 GitHub 星标数为 0(以目录抓取为准),不代表功能完备度;使用前请自测本机服务版本与 checkpoint 是否匹配。

结尾

dsh-local-studio 把 ComfyUI 文生图、GPT-SoVITS 语音和本地产出浏览放进 DSH 侧边栏,探测与健康提示、错误 JSON 与路径校验都面向「本机优先、不上云」的日常创作。若要查看分类与简介,可打开 插件目录页;实现细节与 API 以 GitHub 仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye