intelligenteyes
已验证@starnight11123/intelligenteyes · v2.0.0 · MIT · Web 界面
Native-vision capability manager and lightweight external vision fallback for DeepSeek Harness
安装
dsh plugin add @starnight11123/intelligenteyes 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
发布到 npm 但没有公开仓库。安装前请检查包内容。
标签
说明文档
IntelligentEyes for DeepSeek Harness
English | 中文
IntelligentEyes 为 DeepSeek Harness(DSH)提供一套简单明确的视觉路由规则:
- 原生多模态模型自己看图。 保留原生
ImageBlock,不需要 IntelligentEyes 额外调用vision_analyze。 - 纯文本模型借用外部 VLM。 图片由 DSH 自己持久化,文本模型看到稳定的 attachment 占位符,需要视觉证据时调用唯一的
vision_analyze工具。 - 不创建桥接 Provider,不伪造多模态模型。 用户当前选择的主模型与 Provider 始终不被替换。
安装
需要 DeepSeek Harness 0.1.0-rc.7 或当前 0.1.x 系列更高版本,以及 Node.js 22.19+ 或 24+。
dsh plugin --profile web add @starnight11123/intelligenteyes
如果你平时通过 npx 使用 DSH:
npx @deepseek-ai/dsh plugin --profile web add @starnight11123/intelligenteyes
安装后重启 DSH Web,然后进入:
设置 -> 插件 -> IntelligentEyes Lite
配置视觉 fallback
插件配置页支持:
- OpenAI Compatible:请求
<baseURL>/chat/completions - Ollama:请求
<baseURL>/api/chat - Disabled:关闭纯文本视觉 fallback;原生多模态仍正常工作
- Mock:仅用于测试
OpenAI Compatible 模式填写 API Base URL、API Key、视觉模型 ID 和超时时间即可。API Key 作为 secret setting 保存,不会重新显示在配置表单中。
原生多模态能力声明
llm-pi-ai 对无法自动识别能力的自定义模型默认按纯文本处理。如果某个模型本身确实支持图片,例如 MiMo 多模态模型,可以在 IntelligentEyes 配置页点击 Use native vision。
它只是把现有 DSH 模型声明从:
- id: mimo-v2.5
更新成:
- id: mimo-v2.5
input: [text, image]
不会创建新 Provider,也不会生成包装模型。这个声明属于普通 DSH 配置,即使以后卸载 IntelligentEyes 也仍然有效。
路由行为
收到图片
|
+-- 当前模型声明 [text, image]
| -> 保留原生 ImageBlock
| -> 主模型直接接收像素
| -> IntelligentEyes 不调用 vision_analyze
|
+-- 当前模型是 text-only + 已配置 fallback
-> DSH 持久化图片
-> 文本模型收到 attachment 占位符
-> 需要视觉信息时调用 vision_analyze
-> 外部 VLM 返回文字证据
纯文本模型看到的内容类似:
[image attachment id=sha256:... 1274x709 image/png bytes=112747]
(This text-only route cannot inspect the pixels directly. Call vision_analyze ...)
vision_analyze 只从当前会话中解析 attachment 引用,通过 DSH attachment store 读取图片,再把图片发送给用户配置的 VLM,最后只把文字证据交还主模型。
DSH 兼容方式
IntelligentEyes 2.0 会自动选择两条集成路径。
官方/原版 DSH 0.1.x
用户不需要修改 DSH 源码,也不需要手工打 patch。
如果当前模型是纯文本模型,插件会在 Host 的 session.prompt 入口进行兼容处理:先查询当前模型能力,再调用 DSH 自己的 attachment service 校验并持久化浏览器上传的图片,最后把图片部分替换成带 attachment id 的文本占位符后交回 DSH。原生多模态模型完全保持原路径。
因此 npm 包可以作为普通 DSH 插件直接安装。
包含 image-fallback registry 的 DSH
如果运行环境已经提供 ctx.llm.registerImageFallback(...),IntelligentEyes 会自动使用更完整的 runtime seam:会话历史继续保存原始 ImageBlock,只在最终进入纯文本 Adapter 前进行请求投影。
仓库中的 patches/ 仍保留 image-fallback 和兼容 DeepSeek tool-call 的补丁,用于上游开发和调试。普通用户安装 npm 插件不需要应用这些补丁。
支持的视觉 API
OpenAI Compatible
POST <baseURL>/chat/completions
图片通过 image_url data URL 连同聚焦的识图指令一起发送。
Ollama
POST <baseURL>/api/chat
使用 Ollama 原生 images 字段。本地常见 Base URL 为 http://127.0.0.1:11434。
2.0.0 验证状态
TypeScript typecheck/build PASS
IntelligentEyes unit tests 18/18 PASS
Native capability mutation PASS
Stock text-only prompt projection PASS
OpenAI-compatible VLM request PASS
Ollama VLM request PASS
DSH Settings keyed client registration PASS
npm pack PASS
重构阶段的真实 DSH WebUI 测试也覆盖了两条运行路径:
原生多模态 mimo-v2.5
ImageBlock 持久化 yes
vision_analyze 调用次数 0
主模型直接识图 yes
纯文本模型
vision_analyze 调用次数 1
外部 VLM 返回证据 yes
最终回答正确 yes
安全与行为保证
- 原生多模态路由始终优先使用模型自己的视觉能力。
- IntelligentEyes 不会把图片字节发送给纯文本主模型。
- 只有执行
vision_analyze时,图片字节才会发送给配置的 fallback VLM。 vision_analyze从当前会话中已有的 attachment 表示解析引用,不接受本地文件路径或 bearer URL。- IntelligentEyes 永远不会注册视觉桥接 LLM Provider。
- 原生多模态能力通过 DSH settings mutation 修改,不 monkey-patch Adapter。
- VLM API Key 不会回显到设置页。
从 IntelligentEyes 1.x 升级
IntelligentEyes 2.0 是针对当前 DeepSeek Harness 插件架构的完整重构。1.x 的 bridge-provider 方案和旧的 Web Search companion 不再属于 2.0。搜索能力应该由独立搜索插件/服务负责,IntelligentEyes 只负责视觉能力声明与视觉 fallback。
开发
npm run typecheck
npm run build
npm test
npm pack --dry-run
项目结构:
IntelligentEyes/
├── client.js
├── cordis.patch.yml
├── package.json
├── src/
│ ├── index.ts
│ ├── message-rewrite.ts
│ ├── native-capability.ts
│ ├── prompt-compat.ts
│ └── vision-client.ts
├── lib/
├── tests/
└── patches/
License
MIT