vision-subagentlisted
Install: claude install-skill OrinVoss/dsh-math-team
# 视觉子代理(Vision Sub-agent)
当**主模型不支持图像输入**(`read_image` 会拒读,如纯文本模型)时,用 **`workflow` 派生一个指定视觉模型的子代理**来"看"图——它可以用 `read_image` 读取图片,再根据你的要求描述内容或审查质量并返回结论。
本 skill 是**全局可用**的看图方案,任何预设/会话/项目都可加载,不限定业务场景。
## 触发条件
- 主模型 `read_image` 报错拒读(如 `deepseek-v4-flash` 不声明图像输入)
- 需要查看某张图片的实际内容、核对图片质量、或基于图片内容做判断,但主模型看不了
## 原理
DeepSeek Harness 的 `workflow` 工具允许在 `agent()` 上独立指定 `provider` 与 `model`。只要选一个**当前部署里真正支持图像输入的模型**(其 `inputModalities` 含 `image`),派生的子代理就能用 `read_image` 读取并处理图片。
不同部署注册的视觉模型名可能不同,**不要硬编码模型名**,应先探测。
## 如何找可用的视觉模型
用 `llm` 服务遍历各 provider 的模型,过滤出 `inputModalities` 含 `image` 的:
```js
// 思路:遍历 provider -> resolveModelInfo -> 过滤 inputModalities 含 'image',得到 { provider, model }
const vision = /* inputModalities 含 'image' 的 {provider, model} */
await agent(prompt, { provider: vision.provider, model: vision.model })
```
已验证候选(示例):`opencode-go/mimo-v2.5`、`kimi-coding/k3`、`kimi-coding/k3-256k`(均 text+image)。
## 用法模板
用 workflow 派发看图子代理(`provider`/`model` 替换为探测到的可用视觉模型):
```js
await agent(
'用 read_image 工具读取 <图片绝对路径>,然后完成任务:<你的具体诉求,如描述内容 / 审查质量 / 判断是否达标>,并结构化返回结论。',
{ provider: '<探测到的provider>', model: '<探测到的视觉 model>' } // 指定视觉模型
)
```
> 把"任务诉求"填进 prompt,子代理会先看图,再按你的要求输出。例如:描述图里有什么、检查是否有空白/遮挡/文字重叠、核验图与某条结论是否一致等。
## 输出约定(建议)
按需要求子代理给出结构化结果,例如:
- **内容描述**:图中关键元素、布局、文字/标题等
- **质量核验**:是否空白、模糊、遮挡/重叠、要素缺失
- **目标核对**:图是否支撑它要支撑的结论或任务
- **判定**:`PASS` / `FAIL`,FAIL 时给原因与改进建议
## 兜底
- 若探测不到任何 `inputModalities` 含 `image` 的模型,如实标记"此环境无视觉模型,看图受限",不要假装通过。
- 主模型若是纯文本模型,直接 `read