Chuyển đến nội dung chính

intelligenteyes

Đã xác minh

@starnight11123/intelligenteyes · v2.0.0 · MIT · Giao diện web

Native-vision capability manager and lightweight external vision fallback for DeepSeek Harness

Cài đặt

dsh plugin add @starnight11123/intelligenteyes

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.

Thẻ

Readme

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