🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

豆包出图 liangzz1998/dsh-doubao-painter

DeepSeek Harness
liangzz19980 天前有提交已提供中文文档扫描:含敏感能力

把本机 豆包桌面客户端的生图能力接进 DeepSeek Harness:智能体一句话…

35.5/100
综合分
8
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liangzz1998/dsh-doubao-painter
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · model
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-doubao-painter(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 23:37:35

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 执行外部命令来自配置/变量
    lib/index.js:73
    child = spawn(runtime.file, [PAINT_MJS, '--stdin-json', '--json'], {
  • 发起网络请求
    lib/index.js:317
    const alive = await fetch(`http://127.0.0.1:${config.cdpPort}/json/version`).then((r) => r.ok).catch(() => false)
  • 发起网络请求
    lib/index.js:327
    const list = await fetch(`http://127.0.0.1:${config.cdpPort}/json/list`).then((r) => r.json())
  • 发起网络请求
    lib/bridge.mjs:127
    const res = await fetch(`http://127.0.0.1:${port}/json/version`, { signal: ac.signal })
  • 发起网络请求
    lib/bridge.mjs:135
    const res = await fetch(`http://127.0.0.1:${port}/json/list`)
  • 执行外部命令来自配置/变量
    lib/bridge.mjs:143
    const child = spawn(exe, [`--remote-debugging-port=${port}`], {
  • 执行外部命令固定命令
    lib/bridge.mjs:155
    const out = execSync('tasklist /FI "IMAGENAME eq Doubao.exe" /NH', {
  • 发起网络请求
    lib/bridge.mjs:198
    res = await fetch(url, {
  • 执行外部命令来自配置/变量
    lib/resolve-node.mjs:22
    const r = spawnSync(file, ['-e', 'require("fs").writeFileSync(process.argv[1],process.versions.node)', proof], {
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness:智能体开箱即用,CDN 直连 2K 上下文,CDP 调试,无需 API Key。

README

由 DeepSeek 最新模型翻译生成
dsh-doubao-painter 把本机 豆包桌面客户端的生图能力接进 DeepSeek Harness:智能体一句话 doubao_paint,豆包在后台出图,直接拿回无水印高清原图。 - 不逆向豆包私有接口 - 不需要火山方舟 API Key、不按张付费 - 不需要「去水印」——从源头拿的就是干净原图 先说水印这件事(这是本插件最值钱的部分) 同一张图在豆包 CDN 上有两个版本,实测(豆包 2.32.5 / 2026-10): | URL 里的模板 | 尺寸 | 水印 | | …-cthumb_lwm3:…png | 384×216 | 右下角烧了「豆包 AI生成」 | | …-cgen_wm0_hflow:…png | 2848×1600(图生图 2048×1152) | 无 | 聊天流里默认只挂 cthumb(缩略图)——这就是「豆包出的图带水印」的来源。 点开图片后豆包才会把 cgen 原图 URL 挂进 DOM。本插件做的就是:等图 → 点开 → 抓 cgen → 下载。 所以「便宜的办法」不是找去水印工具(LaMa/IOPaint 要算力、裁切会毁构图、糊了还得修),而是在正确的层拿到本身就没有水印的那张图:成本 0,画质还是 2K+ 原图。
展开完整文档(README 剩余 1 节)
dsh-doubao-painter

把本机 豆包桌面客户端的生图能力接进 DeepSeek Harness:智能体一句话 doubao_paint,豆包在后台出图,直接拿回无水印高清原图。

- 不逆向豆包私有接口
- 不需要火山方舟 API Key、不按张付费
- 不需要「去水印」——从源头拿的就是干净原图

先说水印这件事(这是本插件最值钱的部分)

同一张图在豆包 CDN 上有两个版本,实测(豆包 2.32.5 / 2026-10):

| URL 里的模板 | 尺寸 | 水印 |
| …-cthumb_lwm3:…png | 384×216 | 右下角烧了「豆包 AI生成」 |
| …-cgen_wm0_hflow:…png | 2848×1600(图生图 2048×1152) | 无 |

聊天流里默认只挂 cthumb(缩略图)——这就是「豆包出的图带水印」的来源。
点开图片后豆包才会把 cgen 原图 URL 挂进 DOM。本插件做的就是:等图 → 点开 → 抓 cgen → 下载。

所以「便宜的办法」不是找去水印工具(LaMa/IOPaint 要算力、裁切会毁构图、糊了还得修),而是在正确的层拿到本身就没有水印的那张图:成本 0,画质还是 2K+ 原图。

⚠️ 合规提醒:如果生成的图要对外发布,按《人工智能生成合成内容标识办法》等规定,AI 生成内容仍应做显著标识。本插件解决的是「素材被平台 logo 污染」,不是让你绕过标识义务——请按自己所在地区/平台的规则来。

原理

豆包桌面端是 Electron(Chromium 147)。用调试端口启动它:

"D:\Doubao\app\Doubao.exe" --remote-debugging-port=9225

它就在 127.0.0.1:9225 暴露 Chrome DevTools Protocol。插件通过 CDP:

1. 开一个新对话(不污染你正在聊的会话)
2. 往 ProseMirror 输入框里 Input.insertText 提示词、回车发送
3. 轮询 DOM 等 rc_gen_image 出现
4. 点开图片拿到 cgen 原图 URL
5. 下载到会话工作区的 doubao-images/

图生图(P 图)走文件输入:把参考图塞进豆包隐藏的 input[type=file],等上传完再发指令。

安装

前提:

- 豆包桌面版已安装、已登录,且你机器上 D:\Doubao\app\Doubao.exe 存在(不是 launcher 那个 D:\Doubao\Doubao.exe)
- DSH 运行时自带 Node ≥ 22(插件跑子进程用)

1. 把插件链进 desktop profile 这一步会把依赖写进 package.json,并自动把 "dsh-doubao-painter" 加进 dsh.profile.bundles
dsh plugin --profile desktop add "link:D:\dsh-plugins\dsh-doubao-painter"

2. 如果 bundles 里没自动出现,手动在 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 数组里加一行 "dsh-doubao-painter"

3. 重启 DeepSeek Harness(profile 的配置树只在启动时组装)

重启后问智能体「豆包在线吗」,它会调用 doubao_status 自检。

第一次调用 doubao_paint 时,如果豆包没在调试端口上跑,插件会自己用 --remote-debugging-port=9225 拉起来。
如果豆包已经在普通模式下运行着,需要先完全退出它(托盘 → 退出),否则新实例不会抢端口。

让豆包常驻调试端口(推荐)

每次都要退出豆包太烦。把快捷方式改成带参数启动,以后点图标就是带端口的实例,插件随时能连,不用再关窗口:

桌面 + 开始菜单两个快捷方式都改(先备份成 .bat-20261031 之类的名字) $s = (New-Object -ComObject WScript.Shell).CreateShortcut("$env:USERPROFILE\Desktop\豆包.lnk") $s.TargetPath = "D:\Doubao\app\Doubao.exe" $s.Arguments = "--remote-debugging-port=9225"
$s.Save()

注意 Target 要写成 D:\Doubao\app\Doubao.exe(主程序),不是 launcher 的 D:\Doubao\Doubao.exe。

使用

智能体里(推荐)

用户:帮我画一张「戴墨镜的橘猫在赛博朋克街头」的图 agent → doubao_paint({ prompt: "..." })
← { files: ["<工作区>/doubao-images/doubao-....png"], seconds: 21.2 }

P 图/改图:

agent → doubao_paint({
prompt: "把参考图改成水彩风,保留构图",
ref_images: ["C:\\path\\to\\ref.png"]
})

批量出图(推荐:一次 2~6 张,同一个对话排队跑,最后归档一次):

agent → doubao_paint({
prompts: [
"橘猫趴窗台,水彩,方形", "柴犬雪地奔跑,油画,横版", "复古飞机穿云,扁平插画,横版" ] })

批量模式比逐张开新对话省掉「切对话 + 归档」的开销,实测同对话连投不同主题不串上下文 (水彩猫 → 油画柴犬,各自独立)。建议同批主题相近,或者就是同一角色的系列图(一致性反而更好)。

⚠️ 豆包免费额度按天算(客户端显示「今日图片生成免费额度」)。额度用完时批量会提前收工,返回里每条带 额度用完 标记,不会白等。

命令行(排障 / 手动)

文生图
node tools\paint.mjs "一只披着斗篷的柯基宇航员站在月球上,电影级光影"

图生图powershell
node tools\paint.mjs "改成蒸汽朋克机械狗" --ref "C:\path\ref.png" --out ".\out" --json

机器可读(插件内部就是走这个)

echo '{"prompt":"..."}' | node tools\paint.mjs --stdin-json --json

附:视频取用(tools/video.mjs)

借用豆包 video-extract 技能的脚本,下载在线视频 + 自动转 mp3,不消耗对话额度、不用开豆包 UI: powershell
node tools\video.mjs info "https://www.bilibili.com/video/BV..." # 元数据(标题/时长/播放/封面)
node tools\video.mjs download "https://www.bilibili.com/video/BV..." --out D:\videos

支持 B站 / YouTube / TikTok / 快手 / 微博 / X / Instagram 等 20 个平台,产物是 mp4 + mp3 一对。

转写(逐字稿)依赖飞书妙记,需要 lark-cli 授权,未授权会失败——但 mp3 已经在本地,接 whisper 就能补。

附:直接调用豆包的技能脚本(tools/skill.mjs)

豆包把它的技能放在

%LOCALAPPDATA%\Doubao\User Data\Default\.doubao\agent_mode\workspace\.skills\<技能名>\

每个技能 = SKILL.md(说明书)+ scripts/(Python 工具集)+ references/(平台文档)。
共 112 个技能,其中 47 个带脚本(ppt 265 个 py、pdf 18、video-extract 28…)。

这些脚本可以在本地直接跑,不走 UI、不消耗对话额度——用豆包自带的沙箱 Python: powershell
node tools\skill.mjs list # 112 个技能
node tools\skill.mjs read doubao-video-extract # 看说明书
node tools\skill.mjs scripts pdf # 看有哪些脚本
node tools\skill.mjs run doubao-video-extract scripts/minutes/social_video_to_minutes.py -- "<url>" --media-mode video

实测能跑通的:视频下载(B站/YouTube/TikTok 等 20 个平台)、视频转音频、PDF/Word 分析工具。

跑不通的:生图、云端媒体处理、飞书妙记转写——这些脚本最终调云端接口,需要豆包运行时注入的凭证(DOUBAO_OFFICE_PLATFORM_APP_ID 等),只能走豆包 UI。

小细节:跑脚本务必带 PYTHONIOENCODING=utf-8(skill.mjs 已经设好了),否则 Windows 默认 GBK 会在输出中文时炸掉。

配置(cordis.patch.yml)

| 字段 | 默认 | 说明 |
| enabled | true | 关掉插件 |
| cdpPort | 9225 | CDP 端口;和别的调试程序冲突时改 |
| appExe | D:\Doubao\app\Doubao.exe | 豆包主程序(不是 launcher) |
| timeoutMs | 180000 | 单张图等待上限 |
| newChatPerTask | true | 每单开新对话;关掉会写进你当前对话 |
| outSubdir | doubao-images | 输出目录(相对会话工作区) |
| projectName | ''(不归档) | 可选:豆包侧边栏里的项目(分类文件夹)。填了名字才会自动建项目并把对话拖进去 |

对话模型:固定会话复用,不归档

出图走普通对话(约 20~30 秒),批量模式在同一个对话里连投 2~6 条。
实测 5 连投:19.6 / 22.6 / 20.0 / 20.6 / 21.9 秒,没有变慢、没有串上下文(水彩猫 → 油画狗 → 扁平飞机 → 水墨玫瑰 → 水彩灯塔,各自独立)。

默认所有出图都复用一个固定会话(reuseSession: true):

- 第一次出图时新建一个对话,把它的 conversation id 记到 ~/.dsh/doubao-session.json
- 之后每次出图直接 Page.navigate 跳回那个对话,不再点「新对话」

所以豆包侧边栏里只会有一个 DSH 出图对话,不会每次堆一条「图生图修图需求」。
想换新会话就删掉 ~/.dsh/doubao-session.json,下次会自动新建一个。

正因为都在一个会话里,所以默认不做归档——没有「拖进项目」这一步,也就没有拖拽失败的问题。

想让 DSH 的出图对话单独归类,就在 cordis.patch.yml 里填 projectName (插件会自动建项目,跑完拖进去)。归档是尽力而为的,批量模式下偶尔拖不准,可以手动补一刀: powershell
node tools\archive.mjs

已知限制(都是「用 UI」换来的)

- 会动你的豆包窗口:任务进行中会点开图片预览、开新对话。别在它干活时手动操作豆包。
- 需要调试端口:豆包必须带 --remote-debugging-port 启动。从快捷方式正常启动的实例没有这个端口——按上面「让豆包常驻调试端口」改一次快捷方式即可一劳永逸。
- 豆包改版会坏:DOM 结构、CDN 模板名都可能变。坏了先跑 node tools\paint.mjs "test" --json 看报错,再改 lib/bridge.mjs 里的选择器。
- 串行:豆包只有一个界面,插件用文件锁保证同一时刻只跑一个任务。
- 额度:吃的是你豆包账号的免费额度(用页面上的「今日签到领 200 额度」那套)。
- 不保证多图:豆包一次给几张由它自己决定,插件把拿到的都下下来。

排障

| 现象 | 原因 / 处理 |
| CDP 仍不可用 | 豆包已在普通模式运行。完全退出豆包(托盘退出)后重试 |
| 没找到豆包聊天页 | 豆包没登录,或停在非聊天页。手动打开一次主界面 |
| 页面提示:额度不足 | 豆包免费额度用完了,去客户端签到/等明天 |
| 拿到 384×216 小图 | 原图升级那步没成功(预览没点开)。重跑一次;或看 lib/bridge.mjs 的 openPreviewForKey |
| 冷启动后第一张图拿到的是上一张旧图 | 0.5.1 已修:刚启动/刚跳回会话时历史消息异步渲染,基线抓早了。现在会等图片数量稳定再抓基线,并在提交后二次采样 |
| 报 找不到可执行脚本的 node | 设环境变量 DSH_NODE 为真实 node 路径 |

文件

lib/bridge.mjs CDP 驱动核心(连接/发消息/抓图/下载/原图升级) lib/index.js cordis 插件壳:注册 doubao_paint / doubao_status lib/resolve-node.mjs 在 Electron 里找真 node tools/paint.mjs CLI(插件走子进程调它,也可手动用) cordis.patch.yml bundle patch tests/plugin.test.mjs 离线测试(不启动豆包)

License

MIT
预览分享卡片长什么样 ↓liangzz1998/dsh-doubao-painter
分享 · DeepSeek Harness Hub
liangzz1998/dsh-doubao-painter

把本机 豆包桌面客户端的生图能力接进 DeepSeek Harness:智能体一句话…

回到顶部