为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
安装
# npm 包(预构建)
dsh plugin --profile web add @liustack/modlens
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:liustack/modlens
GitHub 来源的插件在安装时会在你的机器上执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek 和 GLM 的主力对话模型是纯文本的,无法进行图片识别。ModLens 借助外挂视觉引擎,为纯文本模型补上视觉能力。ModLens 支持直接粘贴图片识别,无需先保存成文件再提供路径。
交流
欢迎随时提issue。也欢迎来 X 上聊:@liustack,你用它做了什么、在哪个 harness 上跑、接下来该做什么,新版本也是那边先发。社群正在筹备中。
亮点
**🥇 全网第一个支持 DeepSeek Harness(dsh)的外挂视觉识别插件:**一条命令 npx -y @deepseek-ai/dsh plugin --profile web add @liustack/modlens@latest,dsh 背后的纯文本 DeepSeek 模型即可通过原生 read_image 工具读图。如果 dsh 提示 declares no dsh.bundle,是 pnpm 的发布冷静期装了旧版,一行命令可解,见故障排查。
DeepSeek Harness 粘贴识图有两种玩法。
① 直接粘贴 贴进来的图片自主转换成文件路径进输入框(与 OpenCode、Pi 同款交互),read_image 工具接手读图。
② 切到带 (modlens vision) 后缀的模型变体(选择器有记忆,选一次就行)再粘贴:缩略图直接可见、所见即所得,体验更接近 Codex App。变体由插件自动发现生成:每条承载纯文本 DeepSeek 或 GLM 模型的 provider 路由各得一组包装条目(默认安装下就是 DeepSeek-V4-Flash (modlens vision) 和 DeepSeek-V4-Pro (modlens vision),装了 opencode-go、zai 等额外路由的机器会各自多出一组),两家自己的视觉型号自动排除。走哪条通路由 host 依据真实模型元数据逐个裁决:只有被元数据确认纯文本的模型才会被接管,确认不了的一律不动,视觉模型因此保留原生贴图(细节)。
直接粘贴图片识别 无需先保存成文件再提供路径。
- 全网最轻量。 不用 hook,不套壳,不跑本地代理进程,不改任何 harness 配置的一行字:在 skill 类 harness 里它就是一个 skill 文件夹,在 dsh 里就是一个插件。卸载等于删个文件夹,你的 agent 立刻回到原样。
- 零配置起手。 复用 Claude Code、Codex、OpenCode、Pi 已配置,直接复用你本机的其他多模态模型。什么都没有?Antigravity CLI 是免 key 的免费通道,配一个免费 Gemini key 可将识别耗时降至 5 到 10 秒。
- 基于证据而非想象。 全文转录、按阅读顺序划分的版面区块、实体与关系列表,模型引用的是具体内容。
- 一次安装,多端可用。 Claude Code、Codex、Pi、OpenCode 均经真机验证。
安装
第一步,交给你的 AI。 把这句话发给它:
按 https://github.com/liustack/modlens 的 INSTALL.md 安装并配置 modlens skill,完成后运行体检并把结果告诉我。
安装会先盘点你机器上已有的东西。Claude Code、Codex、OpenCode 或 Pi 里任何一个已有的登录态都可能就够了:modlens 复用前一定先征得你同意,体检报告会说清现状。
第二步,只在体检两手空空时,才需要你配一个免费引擎。 推荐免费的 Gemini api key(到 Google AI Studio 领取,约三分钟,无需信用卡),配上后每次识别 5 到 10 秒。其他平台的免费 openai 兼容 key 也行。想完全免注册就装 Antigravity CLI,然后完成登录:
curl -fsSL https://antigravity.google/cli/install.sh | bash
agy # 浏览器完成登录后退出
安装还会盘点本机其他 harness CLI(Codex、OpenCode、Pi)里可触达的视觉能力,并逐个询问是否允许 modlens 复用。获准的登录态与你自己配的引擎平级入池,每次复用都会在结果里标明花的是谁的额度。
DeepSeek Harness(dsh)用户不走 skill 流程,本包就是原生 dsh 插件:
npx -y @deepseek-ai/dsh plugin --profile web add @liustack/modlens@latest
装完即有 read_image 工具,选「(modlens vision)」模型变体即可直接粘贴识图。引擎配置同样在 ~/.modlens,详见宿主接入。
用法
装好之后不需要记任何命令。正常聊天,粘贴图片或给出图片路径,提问即可,skill 自动触发:图片交给视觉引擎,答案基于读到的内容返回。
视觉引擎:五个内置 provider,四家可复用 CLI,一条故障转移链
ModLens 不绑定任何单一视觉服务。视觉来源一共九个:五个内置 provider(配好任意一个就能用),加四家本机 agent CLI 的登录可以复用。先看内置的:
| Provider | 需要什么 | 单次识别耗时 | 适合谁 |
|---|---|---|---|
gemini-api |
免费 Gemini key(三分钟领取,无需信用卡) | 5-10 秒 | 推荐默认 |
openai |
任意 OpenAI 兼容端点(key + baseUrl + model) | 5-10 秒 | qwen-vl、GLM、自建网关 |
anthropic |
Anthropic API key | 5-10 秒 | 手上已有 key 的机器 |
antigravity-cli |
免费的 agy CLI,浏览器登录一次,无需 key |
15-45 秒 | 完全免注册起步 |
claude-cli |
已登录的 Claude Code | 20-45 秒 | 复用现有 Claude 订阅 |
不钉死 provider 时,所有配好的引擎组成一条故障转移链:API 快车道先试,agent CLI 兜底,第一个可用结果胜出,meta.attempts 记录每次尝试,回退永远不是无声的。
openai 是万能接口,不只是 OpenAI
任何讲 OpenAI chat-completions 协议、支持图片输入的端点都能直接插上,这基本覆盖了视觉模型的大半个世界:
modlens config set openai.baseUrl https://dashscope.aliyuncs.com/compatible-mode/v1 # qwen-vl
modlens config set openai.apiKey <key>
modlens config set openai.model qwen3-vl-plus
同样三个键,换成 GLM 开放平台、SiliconFlow、OpenRouter、自建 vLLM/Ollama 或你自己的网关都一样。你常用的视觉模型只要有 OpenAI 兼容 API,ModLens 就能驱动它。
复用你机器上已有的东西
还有两处现成的视觉能力,一个新 key 都不用配,每家都在你明确同意后才启用:
- **你正在对话的这个 harness 本身。**在登录了订阅的 Claude Code 里用?
claude-cli开箱即可借它读图。装进哪个 harness,安装流程就会问哪个 harness 的授权。 - 机器上其他的 agent CLI。
modlens doctor会逐个发现,你按家授权,它们与你自己的 key 平级入链,不插队。每次复用都在meta.warnings里标明花的是谁的额度,绝不无声扣费:
| 复用来源 | 需要什么 | 授权命令 | 走哪条道 |
|---|---|---|---|
| Codex | 已登录且有视觉模型的 Codex CLI | config set reuse.codex true |
agent 通道,15-45 秒 |
| OpenCode | OpenCode 里配好的视觉模型 | config set reuse.opencode true |
agent 通道,15-45 秒 |
| Pi | Pi 持有的模型凭据 | config set reuse.pi true |
API key 直接升级到 5-10 秒的快车道,OAuth 驱动 Pi 本体 |
| Grok | 已登录的 Grok CLI(SuperGrok) | config set reuse.grok true |
agent 通道,15-45 秒 |
选择与路由
两个旋钮:modlens config set provider <name> 表达偏好(链继续兜底),-p <name> 钉死单个不回退。代理环境设 HTTPS_PROXY 或 modlens config set proxy <url>,API provider 自动走代理。细节见 CLI 手册(默认模型与参数)、配置手册(全部配置键)、安全说明(远程 URL 由谁抓取)。
实测
以下均为原样记录,驱动的都是纯文本的 DeepSeek-V4-Flash。
最新的一条放最前:在 DeepSeek Harness 里选 DeepSeek-V4-Flash (modlens vision) 变体直接粘贴截图。粘贴保留原生缩略图,轨迹里可见图片抵达时「已由 modlens 视觉桥转写」,回答逐个元素还原了界面。

Codex 桌面 App 中识别一张推文截图。作者、配文、照片内容(连两人的穿着都在内)、发帖时间和全部互动数据(540 万浏览、1.6K 回复、5.7K 转发、11.6 万点赞)逐项读出。

一次粘贴三张图。模型逐张读取,认出三张同属一个视觉家族,并分别描述每张插画的内容和风格。

压力测试:128 个模型的对比散点图。双轴定义、对数刻度、按厂商的配色、高亮区域,以及虚线标注的每一个 DeepSeek 型号全部识别。密集图表是视觉方案最容易出错的场景。

粘贴链路的端到端记录:接入 DeepSeek 的 Claude Code 终端里,粘贴的图片以路径而非像素到达,skill 自动触发,guard 确认当前模型确实没有视觉后才开读,PPT 封面幻灯的标题、版式、背景逐项读出,连文件名被截断这个不确定点都如实说明。

文档
| 文档 | 适用场景 |
|---|---|
| 安装手册 | 一步步安装 skill(为 agent 编写) |
| CLI 手册 | skill 所驱动的 CLI:参数、配置与体检 |
| 故障排查 | 命令报错,查成因和解法 |
| 配置手册 | 配置 key、切换 provider、排查配置 |
| 输出契约 | 解析 JSON 或构建下游工具 |
| 宿主接入 | 在 Codex、Claude Code、Pi、OpenCode 中配置 |
| 安全说明 | 恢复文件的权限、图片内容作为不可信输入 |
| 更新日志 | 查询版本变更 |
参与方式
本仓库不接受 PR。项目由作者独立维护,所有代码经作者本人审阅,这是它可靠性的前提。两种有效的参与方式:
- 提交 issue。 bug、建议、难以理解的报错或文档都欢迎。issue 会被认真阅读,并影响后续开发方向。
- Fork。 MIT 协议下你的副本完全归你,修改和发布不受限制。
插入一条硬广
关注微信公众号「liustack」:AI 创业机会、独立开发见解、AI 实战与工具,第一时间推送。微信扫码,或搜一搜「liustack」:
⭐ 如果它对你有用,请给 ModLens 一个 star,这是其他开发者找到它的方式。
Star History
免责声明
本项目依下方 MIT 协议按现状提供。作者不对任何特定用途(含商业使用)提供保证或背书。上游引擎(Antigravity CLI,Gemini、OpenAI、Anthropic 的 API,以及任何 OpenAI 兼容端点)的使用受各自条款和额度约束,由使用者负责。
License
MIT
链接
同类插件
Anionex/dsh-vision-toolkit★ 308
让纯文本模型更好地做视觉任务:带意图的图片问答、长截图 OCR、UI 还原等。
zhaoolee/notes★ 138
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
liustack/modsearch★ 85
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
Lum1104/dsh-browser★ 80
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
taxueseek/argo★ 69
专为 agent 打造的搜索工具:多语言,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
ysr666/dsh-vision-router★ 36
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。