deepseek-eyes
deepseek-eyes:一个社区插件,为 DeepSeek Harness 中的纯文本模型赋予视觉能力——通过描述图像块,恢复原生粘贴图片通道,它使用兼容 OpenAI 的视觉 API 描述图像,然后转发给真正的提供商。与 DeepSeek 无关联。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:fryghost/deepseek-eyes说明文档
阅读完整 README ↗deepseek-eyes
给 DeepSeek Harness 里的纯文本模型装上眼睛——恢复"原生粘贴图片"通道。
在 DeepSeek Harness 中,只要当前模型是纯文本模型,粘贴或拖入的图片会在消息进入 agent 之前就被拒绝——工具、skill、插件统统没有机会介入。本插件解决的就是这个问题:它注册一个声明支持图片输入的桥 provider 路由(默认 deepseek-vision)。在模型选择器里选它,底层模型仍然是你的纯文本模型,粘贴图片照常可用。
请求到达真实文本 provider 之前,每个图片块都会被一个 OpenAI 兼容的视觉 API 转成带意图的文字描述(focus hint),再替换回消息里。不含图片的请求原样透传,零损耗。
社区插件声明:本项目由社区维护,是第三方插件,与 DeepSeek(深度求索)官方无任何隶属、赞助或背书关系,也不属于官方
@deepseek-ainpm scope 下的包。
English: README.md。
工作原理
flowchart LR
A[粘贴/拖入图片
已选桥 provider] --> B[DSH 入口准入
inputModalities: text + image]
B --> C[桥 adapter 的 stream]
C -->|含图片| D[从用户文本提取 focus hint]
D --> E[视觉 API
OpenAI 兼容]
E --> F[图片块 → 文字描述]
F --> G[转发纯文本请求]
C -->|不含图片| G
G --> H[目标 provider
如 deepseek-official]
- 桥 provider 声明
inputModalities: ['text', 'image'],于是宿主放行图片内容,不再返回 Web UI 里那个Model "..." does not support image input.(attachment-error)。 stream()里,adapter 遍历请求消息(包括工具结果里的嵌套内容),从消息自身文本或最近一条用户文本中提取 focus hint,再问视觉模型:"agent 看这张图是因为:"。返回的描述替换掉图片块,并以"证据"形式包装(图中文字只是数据,绝不当作指令)。- 改写后的请求通过
ctx.llm.stream按目标 provider 路由委托出去,真实 adapter 的序列化、流式、重试与遥测全部原样保留。无图请求消息零改动。 - 图片描述有进程内缓存(按 附件 + 视觉模型 + 语言 + hint 做 key)。
环境要求与依赖
deepseek-eyes 是一层薄封装:它不带任何模型、也不自带任何服务商。它依赖的内容分四类。
1. 由消费它的 DSH profile 提供(peer 依赖——任何标准 profile 都已安装):
| 包 | 作用 |
|---|---|
@deepseek-ai/dsh-llm ≥ 0.1.0-rc.1 | 本插件所扩展的 LLM 注册表与 adapter 基类(在 0.1.0-rc.5 线上开发验证) |
@deepseek-ai/dsh-attachment ≥ 0.1.0-rc.1 | 持久化图片存储,请求时读回 |
@deepseek-ai/dsh-settings ≥ 0.1.0-rc.1 | 热更新配置节 |
@deepseek-ai/cordis ≥ 4 | 插件框架 |
@deepseek-ai/schemastery ≥ 3.18 | 配置 schema |
2. 本机环境:
| 依赖 | 说明 |
|---|