你的 AI Agent 刚写了一份漂亮的 README。它画了图表、截了图,把  塞进了 Markdown。你 commit、push,然后——图片裂了。文件在你的磁盘上,别人谁也看不到。
今天我们发布 @picgo/dsh-plugin,也就是 DeepSeek Harness 的官方 PicGo 插件。它给你的 AI Agent 补上了一直缺少的一项能力:把本地文件变成公开链接。
它补上了什么缺口
DeepSeek Harness(dsh)是 DeepSeek 开源的 AI Agent 工作台,核心理念是一切皆插件。它已经能把图片给 AI Agent 看了——你粘贴一张截图,模型就能看到。这个方向是通的。
反方向却不通。它没有内置的方式把文件从你的磁盘放到互联网上。而这恰恰是 AI Agent 在写文档、发布报告、分享构建产物时需要的。
PicGo 解决这个问题已经很多年了。现在它直接接入你的 AI Agent。
真正不一样的地方
这是通用上传工具给不了你的:插件会使用你在 PicGo 里已经配置好的图床。
如果你三年前就把 GitHub 设成了图床,它就上传到 GitHub。如果你用的是 Amazon S3、腾讯云 COS、七牛、又拍云或 SM.MS,它就用那个。如果你装了第三方 PicGo 上传插件,那也能用——插件会从你的 PicGo 主目录加载插件。
不用重新配置,也不会多出一份凭证副本。你现有的配置,现在你的 AI Agent 也能用了。
从没用过 PicGo?那它默认使用 PicGo Cloud,登录一次就能开始用免费额度。
安装
dsh plugin --profile web add @picgo/dsh-plugin
然后照常启动:
dsh --profile web
就这样。下面是它在 DeepSeek Harness 里运行的样子:

你能得到什么
1. picgo_upload 工具
每当有本地文件需要变成链接时,AI Agent 会自己调用它,不需要你开口。
返回结果是结构化数据,而不是一段文字,这点比听起来更重要。在 Harness 的 Code Mode 下,AI Agent 可以直接基于它写程序:
const { uploaded } = await tools.picgo_upload({ paths: ['/tmp/chart.png'] })
console.log(uploaded[0].imgUrl)
每个上传结果都带有 imgUrl、fileName、type(处理这次上传的上传器)、size、width 和 height。不用再从句子里解析 URL。
2. /picgo 命令
有时候你不想浪费一轮模型调用,只想要一个链接。
| 命令 | 作用 |
|---|---|
/picgo | 上传剪贴板里的图片 |
/picgo <path>... | 上传一个或多个文件 |
/picgo status | 显示当前图床和登录状态 |
/picgo login [token] | 登录 PicGo Cloud |
/picgo logout | 退出登录 |
这些命令直接运行——不花 token,也不会往上下文窗口里塞任何东西。
注意,剪贴板上传只能通过这个命令来触发。模型永远拿不到上传剪贴板的能力,因为它没法知道剪贴板里是什么。这个决定只能由你明确地做出。
3. 内置的 Skill
插件自带一个 Skill,教模型什么时候该上传——往文档里插截图是最主要的场景——以及同样重要的,什么时候不该上传:你指定了具体目的地时、你想要一份本地副本时、文件看起来敏感到需要先确认时。
首次运行
如果你从没配置过 PicGo,上传会走 PicGo Cloud,需要登录一次:
/picgo login
它会打开浏览器,完成后回报结果。已经在 PicGo Cloud 控制台拿到 token 了?那 /picgo login <token> 立刻就能登录。
这里有一个刻意的设计:模型永远不会替你执行这条命令。 没有 token 时,登录会阻塞等待浏览器回调——AI Agent 如果去执行,整个会话就会卡住。所以插件会让模型把操作说明转告给你,然后等你来做。
已经在用 GitHub、S3 或其他图床了?那上面这些都跟你无关。你现有的配置会原样使用,不涉及任何登录。
配置
每个字段都有可用的默认值。可以在你的 profile 的 cordis.patch.yml 里覆盖:
- id: picgo
name: '@picgo/dsh-plugin'
config:
silent: true
timeoutMs: 120000
| 字段 | 默认值 | 含义 |
|---|---|---|
configPath | '' | PicGo 配置文件;为空时使用 ~/.picgo/config.json |
silent | true | 屏蔽 PicGo 的控制台输出和日志写入 |
timeoutMs | 120000 | 单次上传的等待时长 |
registerSkill | true | 注册内置的 picgo-upload Skill |
registerCommand | true | 注册 /picgo 命令 |
announceSignIn | true | 提示未登录的 PicGo Cloud 用户使用 /picgo login |
有个坑值得提前知道:patch 会替换一行的整个 config,而不是按 key 合并,所以你想保留的每个字段都要重新写一遍。
关于公开链接
上传后的链接是公开可访问的。任何拿到 URL 的人都能打开,文件删除后也可能还会被缓存一段时间。对于要放进文档的截图和图片来说这没问题——而这也是它绝大多数时候的用途。
但如果是合同 PDF 或者含有内部数据的压缩包,上传之前请三思。内置的 Skill 会让模型在文件看起来敏感时先跟你确认,但最终的判断还是在你。
常见问题
问:用这个插件需要 PicGo 账号吗?
答:只有把 PicGo Cloud 当图床时才需要。如果你已经在 PicGo 里配置了 GitHub、S3、腾讯云 COS、七牛或其他任何图床,插件会直接使用它,不涉及任何登录。
问:我装的第三方 PicGo 上传插件能用吗?
答:能。插件会从你的 PicGo 主目录加载上传器,所以你为命令行或桌面端安装的任何插件,你的 AI Agent 都能用。
问:AI Agent 能上传我剪贴板里的任何东西吗?
答:不能,这是有意为之。剪贴板上传只能通过你自己输入的 /picgo 命令触发,模型没有任何办法触发它。
问:需要什么版本的 Node.js?
答:Node ^22.19.0 || >=24.0.0,和 DeepSeek Harness 自身的要求一致。
问:它能和 PicGo 桌面端一起用吗?
答:它读取的是桌面端写入的同一个 ~/.picgo/config.json,所以图床和设置是共享的。插件在进程内完成上传,不需要桌面端保持运行。
试试看
dsh plugin --profile web add @picgo/dsh-plugin
源码在 GitHub 上,包发布在 npm。DeepSeek Harness 目前是开发者预览版,迭代很快——如果某个版本把东西搞坏了,请提个 issue。
如果你用的是其他 AI Agent,PicGo 也提供了 Agent Skills,适用于任何支持 Skills 格式的工具。
上传愉快!