@local/dsh-image-describe
DeepSeek Harness 宿主插件:让不支持图片输入的纯文本主模型也能"看图"(describe_image 工具 + 图片标记替换)
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:sd1g1/dsh-image-describe说明文档
阅读完整 README ↗dsh-image-describe
DeepSeek Harness 宿主插件:让不支持图片输入(纯文本)的主模型也能"看图"。
工作原理
主模型通过显式调用 describe_image 工具获得图片描述(不是偷偷改写请求的隐藏管道):
- 纯文本模型的请求中,图片块被替换成一段文本标记(含图片
attachmentId); - 主模型看到标记后按需调用
describe_image:attachment传标记里的 id,instruction写它需要从图中提取什么(数值、文字、布局等); - 工具把"指令 + 图片"发给配置的视觉模型,返回文字描述供主模型阅读。
支持图片输入的模型看不到该工具(直接用原生 read_image 即可),两者互补互不干扰。
安装(dsh CLI)
无需克隆到扩展目录,一条命令从 git 仓库直接安装到 web profile:
# 从 GitHub 安装(自动添加依赖并挂载到 web profile 的 bundles 层)
npx @deepseek-ai/dsh plugin --profile web add github:sd1g1/dsh-image-describe
该命令会把参数转发给 profile 目录下的 pnpm,安装成功后自动把声明了
dsh.bundle 的包加入 dsh.profile.bundles。卸载同理:
npx @deepseek-ai/dsh plugin --profile web remove @local/dsh-image-describe
npm 安装暂不可用:
dsh-image-describe包名在 npm 上已被他人占用,本插件按 源码分发(git)。
配置
复制 image-describe.example.json 为
~/.dsh/image-describe.json,填上支持图片输入的视觉模型即可:
{
"vision": { "provider": "my-vision-provider", "model": "vision-model" },
"prompt": "请详细描述这张图片的内容",
"maxTokens": 1500
}
vision.provider/vision.model—— 必填;负责描述图片的视觉模型prompt—— 可选;主模型未提供instruction时的兜底指令maxTokens—— 可选;描述输出上限(默认 1500)
配置文件保存即热生效,无需重启;文件不存在时插件休眠(不影响任何请求)。 配置文件含你的模型路由,不要提交进 git 仓库。
关键点
- 隐私:调用
describe_image的图片会原样发送给你配置的视觉模型(可能是第三方服务)。 - 失败行为:附件找不到、视觉模型未配置或调用失败,都会给主模型明确的错误文本,由它自行决定下一步;标记替换本身失败则原请求原样转发,绝不中断。
- 描述文本作为普通工具结果留在对话里,与其他工具结果同等对待(可压缩、可见于历史)。
开发
npm test # node --test 单元测试;插件零第三方依赖