
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
dsh-tool-describe-image
Advanced tools
DSH plugin: image understanding via any OpenAI-compatible vision API, paste-to-describe, and an animated whale-buddy desktop pet with status bubbles and a floating settings panel
让 DeepSeek 看懂图片的 DSH 插件 —— 通过任意 OpenAI 兼容视觉端点(百炼 qwen-vl、智谱 GLM-4V、OpenRouter、自建代理等),把图片转成文字或结构化 HTML,纯文本模型也能"看见"图片。
Ctrl+V 粘贴图片,自动识别成文字/HTML 填入输入框describe_image 工具:模型按路径读取图片转成文字,任何 surface(Web / headless)都可用check_balance 工具 + 鲸鱼娘设置面板「查余额」按钮,实时查询 DeepSeek 账户余额(账户可用状态 + 各币种剩余额度,含赠送/充值拆分),余额不足时第一时间知道dsh plugin add 即装即用| 操作 | 行为 |
|---|---|
| 单击 | 随机表情反应 + 气泡"嘿嘿,戳我干嘛~" |
| 双击 | 打开跟随鲸鱼娘的悬浮设置面板(非全屏) |
| 按住拖动 | 拖动鲸鱼娘,松手落位 + 位置记忆(刷新后回到原位) |
| Agent 工作 | 切"专注"表情 + 气泡"我在认真工作呢…" |
| Agent 空闲 | 回待机(眨眼循环)+ 气泡"等你来聊~" |
表情动画用交叉淡化 + 淡入覆盖实现(无重影、无变淡),眨眼瞬时换帧保持利落。
DeepSeek 官方适配器是纯文本路由,DSH 内置的 read_image 工具会在模型不支持 image 输入时拒绝。本插件绕开这道限制:
粘贴图片 / 指定路径
→ 图片字节交给用户配置的 OpenAI 兼容视觉端点
→ 返回文字描述或结构化 HTML(作为 tool result 或 draft 文本)
→ DeepSeek 基于文字/HTML 理解图片
describe_image(file_path, question?) 注册到 ctx.tools,schema 自动流入系统提示词check_balance 注册到 ctx.tools,复用 Harness 的标准 DEEPSEEK_API_KEY 凭据,调用 DeepSeek 官方 GET /user/balance 返回账户可用状态与各币种剩余额度/dsh-describe-image)→ 文字填入输入框,带"正在识别…"提示与失败 toastshell.overlay(框架级悬浮层槽),表情帧由 host 静态路由 /plugins-assets/... 按需加载,Agent 状态经 ctx.sessions 订阅| 配置项 | 默认值 | 说明 |
|---|---|---|
| API Base URL | https://dashscope.aliyuncs.com/compatible-mode/v1 | 任意 OpenAI 兼容端点 |
| API Key | 无 | 存 DSH 凭据库;优先级:config > 环境变量 > 凭据库 > .env |
| 模型名称 | qwen-vl-plus | 自由输入 |
| 输出格式 | text | 文本描述 / HTML 结构化 |
| Prompt 指令 | 默认详细描述指令 | 用户可自定义 |
| 鲸鱼娘位置 | 右下角 | 拖动后自动记忆(petX/petY) |
| DeepSeek 余额 | — | 「查余额」按钮,查询 DeepSeek 账户剩余额度(key 复用 DEEPSEEK_API_KEY) |
需要已安装 DSH(0.1.0-rc.6+)。
npm install -g dsh-tool-describe-image
dsh plugin --profile web add dsh-tool-describe-image
⚠️ 0.5.0 存在打包缺陷(已由 0.5.1 修复):0.5.0 把
@deepseek-ai/dsh-tools声明为普通dependencies,npm 会按其 caret 范围装到新版 rc(如0.1.0-rc.8),与 DSH 宿主自带的旧版 dsh-tools(如0.1.0-rc.6)在进程里形成两份模块实例。两份实例的TOOL_RUNTIME_SCHEDULER是不同Symbol,工具调度器按宿主 Symbol 挂载、再按另一份 Symbol 读取 → 取到undefined→ 每次调用工具都崩溃Cannot read properties of undefined (reading 'prepare')。如果你装过 0.5.0 且出现该错误:先dsh plugin --profile web remove dsh-tool-describe-image,再装 0.5.1(0.5.1 已将 dsh-tools/dsh-fs 移入peerDependencies,与宿主共享同一实例,不再复制)。
先判断安装方式(Get-Command dsh 看 Source,或检查插件是否在 ~\.dsh\profiles\web\node_modules\ 下):
# 全局安装(dsh 在 npm 全局目录)
npm install -g dsh-tool-describe-image@latest
# 或 profile 安装(插件在 ~/.dsh/profiles/web/node_modules 下)
dsh plugin --profile web update dsh-tool-describe-image
两种都执行也无害。然后必须重启 dsh 并刷新浏览器(Ctrl+F5)——host 与 client 两个半区都要重新加载:
dsh web
视觉 API Key 可在鲸鱼娘双击设置面板里填写保存,或使用环境变量(推荐 .env):
$env:DASHSCOPE_API_KEY = "sk-你的key"
推荐写入 ~/.dsh/profiles/web/.env,免去每次手动设置:
DASHSCOPE_API_KEY=sk-你的key
注意:环境变量优先级高于凭据库。若设置了
DASHSCOPE_API_KEY环境变量,设置面板保存会提示"环境变量遮蔽"——直接改.env或环境变量即可。
| 字段 | 默认值 | 说明 |
|---|---|---|
apiKey | 无(读 DASHSCOPE_API_KEY) | 视觉 API key |
model | qwen-vl-plus | 视觉模型 id(自由输入) |
baseUrl | https://dashscope.aliyuncs.com/compatible-mode/v1 | OpenAI 兼容端点 |
prompt | 详细描述指令 | 随图发送的指令文本 |
outputFormat | text | 输出格式:text / html |
maxImageBytes | 8 MiB | 单张图片读取上限 |
timeoutMs | 60000 | HTTP 协作超时 |
deepseekApiKey | 无(读 DEEPSEEK_API_KEY) | 余额查询用的 DeepSeek key(一般不配置,默认复用环境变量) |
deepseekBaseUrl | 无($DEEPSEEK_BASE_URL → https://api.deepseek.com) | 余额查询 API 端点(走中转可覆盖) |
在 ~/.dsh/profiles/web/cordis.patch.yml 中覆盖:
- insert:
- id: describe-image
name: 'dsh-tool-describe-image'
config:
model: qwen-vl-max
dsh web
方式一:粘贴图片(Web)
Ctrl+CCtrl+V方式二:按路径描述
对模型说:
描述一下 C:\Users\你的用户名\Pictures\image.png
模型会自动调用 describe_image 工具并基于描述回答。
方式三:鲸鱼娘桌宠
方式四:DeepSeek 余额检测
对模型说"查一下我的 DeepSeek 余额",模型会自动调用 check_balance 工具返回账户可用状态与各币种剩余额度(含赠送/充值拆分);也可双击鲸鱼娘,在设置面板点「查余额」按钮手动查看。余额不足时(账户不可用)会直接显示告警,避免用到一半才发现欠费。
| 问题 | 解决 |
|---|---|
启动报 DashScope API key missing | 未配置 key,见「配置」 |
| 粘贴后没有反应 | 确认安装最新版、重启过 dsh web |
| 识别结果不理想 | patch 中把 model 换成 qwen-vl-max |
| 图片格式不支持 | 仅支持 PNG / JPG / WebP / GIF(按字节检测,不信扩展名) |
npm install
npm run typecheck # 类型检查(host + client)
npm run build # host 构建
npm run bundle # client bundle 构建
测试见 TESTING.md。
┌─────────────────────────── dsh-tool-describe-image ───────────────────────────┐
│ Host 半区 (lib/index.js) Browser 半区 (lib/client.js) │
│ ├ describe_image 工具 (ctx.tools) └ paste 监听 → RPC → setDraft │
│ └ /dsh-describe-image RPC 通道 (dsh.client 声明 → client-modules 发现) │
│ ↑ 共享 rpc-contract 契约 │
└──────────────────────────────────────────────────────────────────────────────┘
MIT
FAQs
DSH plugin: image understanding via any OpenAI-compatible vision API, paste-to-describe, and an animated whale-buddy desktop pet with status bubbles and a floating settings panel
We found that dsh-tool-describe-image demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.