dsh-plugin

DSH PLUGIN视觉与多模态

仓库 PicGo/dsh-plugin · npm @picgo/dsh-plugin

视觉与多模态 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH plugin 借助 PicGo 将本地图片和文件上传至图床,生成可分享链接,解决 Agent 生成图片无法外链的问题。

验证等级 L5 L5 · 运行验证通过
GitHub 星标 3 复刻 0 · 未关闭 issue 未标注
最近更新 2026-08-23 创建于 2026-08-14
README 10.8 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @picgo/[email protected]
兼容 DSH 版本0.2.0-rc.2 等 7 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@picgo/dsh-plugin可用 npm view 查看包信息

能做什么

4 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-plugin:DeepSeek Harness 的图片上传插件,复用 PicGo 图床

  • 上传图片/文件
  • 复用 PicGo 配置
  • 提供工具与命令
  • 内置技能指导

适用场景

文件读写存储视觉识别

上游标签

cordisdeepseek-harnessdshdsh-pluginimage-uploadpicgo

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
  • L4.4_RESOLVED_ARTIFACT 安装版本已解析 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

仓库档案

视觉与多模态
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方PicGo仓库 dsh-plugin · 默认分支 未标注
分类视觉与多模态vision
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证NOASSERTION商用或二次分发前请确认条款原文
星标 / 复刻 / issue3 / 0 / 未标注收录时的数值,非实时
创建 / 更新2026-08-14 · 2026-08-23最后推送 未标注
本站收录2026-08-22首次进入本站目录的时间

README 全文

10.8 KB
作者原文,中文版优先;只做安全转义,不改内容

@picgo/dsh-plugin

Upload images and files to your image host from DeepSeek Harness, powered by PicGo.

Harness can show your agent a screenshot, but it has no way to turn a local file into a link. So when the agent writes a README, renders a chart, or captures a screenshot, the image stays on disk and `` becomes a dead link the moment you push. This plugin closes that gap.

It uploads through whatever image host you already configured in PicGo — PicGo Cloud, GitHub, S3, Tencent COS, Qiniu, or any third-party uploader plugin you installed. Nothing to re-configure. If you've never used PicGo, it walks you into PicGo Cloud's free tier.

If the PicGo desktop app is running, uploads go through it, reusing the image host you set up in its window. Otherwise they run in-process. See Upload routes.

Install

dsh plugin --profile web add @picgo/dsh-plugin

Then boot as usual:

dsh --profile web

What you get

picgo_upload — a tool the model calls on its own when a local file needs to become a link. Returns structured results, so in Code Mode you can use it directly:

const { uploaded } = await tools.picgo_upload({ paths: ['/tmp/chart.png'] })
console.log(uploaded[0].imgUrl)

/picgo — a command that uploads without spending a model turn:

Command What it does
/picgo Upload the clipboard image
/picgo ... Upload one or more files
/picgo status Show the active host and sign-in state
/picgo login [token] Sign in to PicGo Cloud
/picgo logout Sign out

A bundled skill that teaches the model when to upload — inserting a screenshot into docs is the primary case — and when not to (you named a specific destination, you want a local copy).

Upload routes

There are two ways this plugin can reach your image host, and it picks one per upload:

  1. The PicGo desktop app, when it is running. It exposes a local upload server, and using it means your uploads honour the host you configured in the app's window.
  2. In-process PicGo, otherwise — the picgo library reading ~/.picgo/config.json.

This matters because the two read different config files. The desktop app stores its settings in the system application-data directory (on macOS ~/Library/Application Support/picgo/data.json), while the library reads ~/.picgo/config.json. If you have only ever used the GUI, the library route sees a config you never touched — most likely empty and defaulting to PicGo Cloud. Preferring the app is what makes "it just uses my existing setup" true.

> Upgrading from 0.1.x? If the desktop app is running and the two configs point at different hosts, your uploads will now land on the app's host rather than the CLI's. Set gui.mode: off to keep the old behaviour.

/picgo status tells you which route is active. Two things worth knowing about the desktop-app route:

  • The app copies each URL to your clipboard and shows a notification — that is the app's own behaviour and this plugin cannot turn it off.
  • If an upload there fails with a login error, sign in from the app's own window. /picgo login writes the PicGo CLI config, which the desktop app does not read.

First run

If you've never configured PicGo, uploads default to PicGo Cloud, which needs a one-time sign-in. The free tier covers casual use.

/picgo login

That opens your browser and reports back when it completes. If you already have a token from the PicGo Cloud dashboard, /picgo login is instant.

The model will never run this for you: with no token the sign-in blocks waiting on a browser callback, which would hang the session. It relays the instruction and waits.

Already using GitHub, S3, or another host in PicGo? None of this applies — your existing config is used as-is and no sign-in is involved.

Configuration

Every field has a working default. Override them from your profile's cordis.patch.yml:

- id: picgo
name: '@picgo/dsh-plugin'
config:
silent: true
timeoutMs: 120000
Field Default Meaning
configPath '' PicGo config file; empty uses PicGo's own default (~/.picgo/config.json)
silent true Suppress PicGo's console output and its picgo.log writes
timeoutMs 120000 How long to wait for one upload
registerSkill true Register the bundled picgo-upload skill
registerCommand true Register the /picgo command
announceSignIn true On startup, point a signed-out PicGo Cloud user at /picgo login
gui see below How to reach a running PicGo desktop app

gui controls the desktop-app route described in Upload routes:

Field Default Meaning
gui.mode auto auto uses the app when it answers; off never tries; only requires it rather than uploading to a different host
gui.host 127.0.0.1 Where the app's upload server listens
gui.port 36677 "
gui.secret '' Auth secret, if you enabled one in the app. Empty falls back to $PICGO_SERVER_SECRET
gui.probeTimeoutMs 1500 How long to wait for the app to answer a heartbeat
gui.probeTtlMs 5000 How long a heartbeat result is reused, so a multi-file upload does not re-probe per file
gui.timeoutMs 0 Upload deadline for this route; 0 inherits timeoutMs

A patch replaces a row's entire config rather than merging keys, so restate every field you want to keep. Within gui, unset keys still fall back to the defaults above — overriding gui.mode alone is fine.

Notes

Uploaded links are public. Anyone with the URL can open it, and a deleted file may stay cached. Fine for screenshots and doc images; think before uploading a contract PDF or an internal archive. The bundled skill tells the model to confirm first for anything that looks sensitive.

Your PicGo config is treated as read-only, with one exception outside this plugin's control: when PicGo Cloud rejects a stored token, PicGo itself clears it from ~/.picgo/config.json. Signing in and out through /picgo login / /picgo logout also writes the token, as you'd expect.

Clipboard uploads need a desktop session and are only reachable through /picgo — the model is never given a way to upload your clipboard, since it can't know what's on it.

Falling back to the in-process route is deliberately narrow. If the desktop app stops between the check and the upload, the upload is retried in-process. But a rejected upload, a missing auth secret, or a timeout is reported rather than retried elsewhere: the app may have already accepted the file, and silently re-uploading would put a second copy on a host you did not pick.

If an upload through the app hangs, check whether "rename before upload" is enabled in its settings — that opens a dialog and waits for a human, which nothing is going to answer in an agent session. The timeout message says so too.

Development

pnpm install
pnpm build
pnpm test

pnpm test:live additionally exercises the desktop-app route against a running PicGo app. It is kept out of pnpm test because it uploads real files to your real image host.

To run it against a dsh source checkout without packaging, write a cordis.dev.yml (gitignored — the path is specific to your machine):

- insert:
- id: picgo
name: '/absolute/path/to/dsh-plugin/lib/index.js'

Then, from the dsh checkout:

pnpm dsh web --patch /absolute/path/to/dsh-plugin/cordis.dev.yml

The path must be absolute: a patch adds config but does not move the loader's resolution root.

Releasing

@picgo/bump-version bumps the version, writes the changelog, commits, and tags in one step:

pnpm release          # patch: 0.1.0 -> 0.1.1
pnpm release:minor    # 0.1.0 -> 0.2.0
pnpm release:major    # 0.1.0 -> 1.0.0
pnpm release:beta     # 0.1.0 -> 0.1.1-beta.0
pnpm release:dry      # print what would happen, change nothing

Then push the tag — that is what triggers publishing:

pnpm push-release

The release workflow runs typecheck, tests, and build before publishing, and refuses to publish if the tag does not match package.json. Prerelease tags pick their own dist-tag (-beta.x → beta, -alpha.x → alpha, anything else prerelease → next), so npm install @picgo/dsh-plugin never resolves to a prerelease.

npm authentication

npm cannot configure a trusted publisher for a package that does not exist yet, so the first release and every later one authenticate differently.

First release — needs an NPM_TOKEN repository secret (a granular token with publish rights to the @picgo scope):

gh secret set NPM_TOKEN --repo PicGo/dsh-plugin

After that first release lands, switch to trusted publishing so no long-lived token is involved. On npmjs.com, open the package → Settings → Trusted Publisher, and register:

Field Value
Publisher GitHub Actions
Organization or user PicGo
Repository dsh-plugin
Workflow filename release.yml (filename only, not a path)
Environment name leave empty
Allowed actions npm publish

The workflow already sets id-token: write, so nothing changes on this side — npm picks OIDC over the token automatically. Once a trusted-publish release succeeds, delete the NPM_TOKEN secret and revoke the token, then set Settings → Publishing access to "Require two-factor authentication and disallow tokens".

Trusted publishing needs npm ≥ 11.5.1, so the release workflow runs on Node 24 (which ships npm 11.x). Node 22 ships npm 10.x and fails with a misleading 404. That choice affects only the machine doing the publishing — the package itself still supports Node ^22.19.0 || >=24.0.0, and CI tests against 22.

Compatibility

Tested against DeepSeek Harness 0.1.1-rc.2 (2026-08-22) and PicGo Core 3.0.1. Requires Node ^22.19.0 || >=24.0.0.

The desktop-app route needs a PicGo app new enough to expose the local upload server. If yours is older, gui.mode: auto simply never finds it and everything runs in-process as before.

Harness is a developer preview and its APIs change often. If a release breaks this plugin, please open an issue.

License

MIT

常见问题

7 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @picgo/[email protected]` 即可。对应的 npm 包名是 `@picgo/dsh-plugin`。

dsh-plugin 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-plugin 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-plugin 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.1.7-rc.2、0.1.7-rc.1、0.1.7-alpha.2、0.1.6-alpha.2、0.1.6-alpha.1、0.1.5-rc.2。

dsh-plugin 用的是什么许可证?

上游标注为 NOASSERTION。商用或二次分发前请到仓库确认许可证原文。

dsh-plugin 有哪些功能?

上传图片/文件、复用 PicGo 配置、提供工具与命令、内置技能指导。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

8 条
不同作者的仓库分开列,请确认你要装的是哪一个
视觉与多模态
按星标排序,可作替代方案

open-design

open-design

L4 · 沙盒安装通过 10.0 万 星

awesome-gpt-image-2

awesome-gpt-image-2

GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+ 套工业级模板与可复用 Skills,新增 2.5 同提示词对比

L3 · 安装规范通过 3.4 万 星

PicGo

PicGo

L3 · 安装规范通过 2.7 万 星

iPolloWork

iPolloWork

L4 · 沙盒安装通过 6,775 星

modlens

modlens

ModLens 是 DeepSeek Harness 的视觉插件,为纯文本模型外挂视觉能力,粘贴图片即得结构化 JSON 证据(OCR、版面

L5 · 运行验证通过 4,207 星

OpenBiliClaw

OpenBiliClaw

本地私有、开源的自进化跨平台 AI 内容发现 Agent:先理解你,再主动从 B站、小红书、抖音、YouTube、X、知乎、Reddit、微

L4 · 沙盒安装通过 3,398 星

PicGo 的其它插件

1 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。