跳到主要内容

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