Bundle
dsh-vqa-agent
vqa_ask 双模型视觉问答插件:主模型调用 vqa_ask 向视觉模型提问(图片字节真实送达),UI 实时展示"主模型提问 → 视觉模型回答"的 QA 过程,并在主设置提供多模态视觉模型选择页。
- Source
- jypjypjypjyp
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 13 days ago
Readme
# dsh-vqa-agent
DSH Web 插件(官方 bundle 形态):主模型调用 `vqa_ask` 向**视觉模型**提问,图片字节真实送达视觉模型,UI 实时展示「主模型提问 → 视觉模型回答」的 QA 过程;主设置提供多模态视觉模型选择页。
## 结构
```
package.json # dsh.bundle.patch + dsh.client.platform=web + exports
cordis.patch.yml # 向 web 组合挂载本插件(Node half)
.dsh-plugin/index.mjs # Node half:注册 vqa_ask 工具 + webServer 路由
.dsh-plugin/client/index.mjs # 浏览器 half 源码(esbuild 打包)
.dsh-plugin/client.js # 构建产物(手改禁止;改源码后 node scripts/build-client.mjs)
scripts/build-client.mjs # esbuild 构建器(--check 做新鲜度门禁)
```
## 构建
```bash
npm i -D esbuild # 首次
node scripts/build-client.mjs # 生成 .dsh-plugin/client.js
node scripts/build-client.mjs --check # 校验产物与源码一致
```
## 安装到 DSH Web profile
1. 在 `/Users/a1234/.dsh/profiles/web/package.json`:
- `dependencies` 增加 `"dsh-vqa-agent": "file:<本仓库路径>"`
- `dsh.profile.bundles` 增加 `"dsh-vqa-agent"`
2. 在 profile 目录执行 `pnpm install`(或 `pnpm add dsh-vqa-agent@file:<路径>`)。
3. 重启 web 服务并刷新页面。
也可以把本仓库推到 GitHub/GitLab 后用 git 依赖(参考 whale-girl 的 `github:vlln/whale-girl#main`)。
## 通信契约
- Node ↔ 浏览器:`webServer` 路由(全部 `POST` JSON):
- `/dsh-vqa-agent/exchange` `{callId}` — 单次问答快照(轮询,流式)
- `/dsh-vqa-agent/image` `{convKey}` — 图片 dataURL(每会话拉一次)
- `/dsh-vqa-agent/transcript` `{}` — 全部会话 QA 记录
- `/dsh-vqa-agent/settings` `{}` — 当前选择 + 多模态模型列表
- `/dsh-vqa-agent/set-model` `{provider, model}` — 设置页选择视觉模型
- 浏览器 half 由 `__ModuleLoader__.load({id, factory})` 挂载,`React` 经种子词 `require("react")` 解析(esbuild `--external:react`),样式直接注入 DOM。
## 功能
- 工具 `vqa_ask(image, question, model?, provider?, maxTokens?)`:读文件 → 魔数嗅探真实格式(PNG/JPEG/WebP/GIF,不信扩展名)→ attachments 生成引用 → 图片发给视觉模型 → 流式回答;同图追问自动带上下文。
- 工具卡片(`tool.call.toolview` key `vqa_ask`):主模型提问气泡 + 视觉模型回答气泡 + 缩略图 + 状态徽标(固定深色底,明暗主题均清晰)。
- Run 面板(`tool.view.cordis` key `self`):「双模型 QA 过程」总览。
- 设置页(`settings.section` id `vqa-vision`):从所有提供方中选多模态模型作视觉模型,选择通过 settings 服务写入 `settings.yaml` 的 `vqa: {provider, model}` 分节持久保存,重启后仍记住。
## 默认视觉模型解析顺序
设置页选择 → VQA 配置(`settings.yaml` 的 `vqa: {provider, model}`)→ 内置默认 `momenta-gateway` / `qwen3.7-plus`。
Install
dsh plugin --profile web add github:jypjypjypjyp/dsh-vqa-agent
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-vqa-agent from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.