READMESource: master@5ea78f00
Doubao DSH Plugin
DSH 插件:通过本地 Doubao Relay 提供 doubao_ask 动态搜索/图片生成/多模态识图工具,
并支持粘贴图片 → 本地路径(paste-to-path)。
功能
- 联网搜索/实时信息:调用
http://127.0.0.1:56666/v1/chat/completions。 - 图片生成:豆包返回的图片以 markdown 图片链接(
)放在 content 里, 回复时保留即可在对话中直接显示。 - 多模态识图:传入
image参数(http(s) 图片 URL / base64 data URL / 本地图片文件路径, 本地图片超过 512KB 自动压缩到 800px 宽再发送),豆包识图后返回文字描述。 - 粘贴图片 → 路径(paste-to-path):复用 modlens 的验证实现。浏览器半部分(client.js)
在捕获阶段拦截图片粘贴:先向 host 询问当前选中模型是否纯文本(GET
/doubao-paste?model=<标签>, host 用真实模型元数据判定),确认后把图片字节 POST 到/doubao-paste, 保存为私有临时文件(<temp>/doubao-dsh-paste/p-*/paste<ext>,magic bytes 校验、25MB 上限、 7 天 + 1GB 总量自动清扫),返回的路径文本插入输入框——文本模型不会触发 "模型不支持图片"准入拦截。模型看到路径后调用doubao_ask并把image参数设为 该路径即可让豆包识图。 - 图片自动去重:同一张图的多个 CDN 镜像/模板变体(水印/原图等)折叠为唯一链接,
优先保留
image_raw原图变体;无法接收的非 http(s) 占位链接自动剔除。 - 输出
images字段:结构化返回去重后的图片列表[{ url, alt }]。 - 每次请求强制
"new_conversation": true。 - 完整记录请求、响应等信息到日志和返回值。
安装
npm 一键安装:
dsh plugin --profile web add doubao-dsh-plugin
(本地开发路径安装:dsh plugin --profile web add /path/to/doubao-dsh-plugin)
安装后重启 harness 生效。
前置要求:Doubao Relay(Quicker 转发)
本插件所有能力(搜索/生图/识图)都通过本地 Doubao Relay 的 OpenAI 兼容接口
http://127.0.0.1:56666/v1/chat/completions 实现。插件本身不包含 Relay,
由 Quicker 软件把本地网页版豆包转发成 API 调用。
搭建步骤:
- 安装 Quicker。
- 下载共享动作:https://getquicker.net/Sharedaction?code=dcb55394-707e-4255-ed26-08de36f81a8a
- ⚠️ 该动作年久未更新、存在 bug,需把
c#code.txt中的代码替换到动作里(端口保持56666),替换后重新运行动作,Relay 即监听127.0.0.1:56666。
替换代码的操作步骤:
- 在 Quicker 托盘/动作上右键,选择编辑。
- 在步骤列表中找到运行 C# 代码步骤。
- 进入该步骤的编辑界面(运行模式选“普通模式 v2 (Roslyn)”),把
c#code.txt中的 代码整体替换脚本代码区,保存后重新运行动作。

未启动 Relay 时,工具调用会报 Doubao Relay request failed。
使用
- 模型会自动看到工具
doubao_ask。 - 直接把图片粘贴到输入框:图片会被保存为本地路径文本插入消息,发送后模型会用
doubao_ask(image参数 = 该路径)调豆包识图,把描述完整转述给你。 ⚠️ 首次识图约需 15~20 秒(豆包 Relay 响应较慢)。 - 也可以在对话里直接要求"搜索 X / 生成一张 X 的图",模型会自动调用本工具。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 要搜索或询问的问题 |
| image | string | 否 | 要识别/分析的图片(URL / data URL / 本地路径) |
| system | string | 否 | 额外系统指令 |
| timeoutMs | number | 否 | 超时毫秒数,默认 90000 |
技术说明
- Host 半(
index.mjs):注册doubao_ask工具 +/doubao-paste路由 (经ctx.inject(['webServer'], ...)可选挂载,headless 环境自动跳过)。 - Client 半(
client.js):复用 modlens 的拦截逻辑——document捕获阶段paste监听 +focusin预取 verdict;host 判定当前模型纯文本后才接管(preventDefault → POST → 路径插入)。 通过dsh.client声明(exports["./client"])被 web 端加载。 - 改动后需重启 harness 生效(client bundle 在启动时扫描装配)。
No comments yet. Be the first to write one.