前言¶
在 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。
- 目录页:https://www.skillhub.cn/plugins/vamyane/dsh-local-studio
- 源码:https://github.com/vamyane/dsh-local-studio
- 当前包版本(资料记载):
0.1.0,许可证 MIT
核心功能¶
资料中与实现一致的能力如下。
界面与集成
- 侧边栏入口 + 全屏面板,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}}。
典型用法¶
面板内操作¶
- 打开侧边栏 Local Studio,查看页头健康点是否变绿;必要时按悬停提示启动 ComfyUI 或 GPT-SoVITS。
- Image:填写 prompt、宽度、高度、步数(宽高二者的倍数须为 8,范围 256–2048;steps 1–80),点击生成,等待计时结束后预览并复制路径。
- Speech:填写文本(≤2000 字,可选参考音频路径),生成后在面板内播放 wav。
- 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 为准。