npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

kimi-eyes

v1.0.10

Published

Give non-multimodal models in Kimi Code the ability to analyze images and screenshots via a user-configured VLM (OpenAI-compatible or Anthropic protocol).

Readme

Kimi Eyes 👀

English | 中文

让 KimiCode 的非多模态模型也能分析图片与截图(借鉴 opencode-vision 的思路,但更薄:无 hook、无消息变换、无状态残留)。

核心机制:插件声明一个 MCP stdio 服务器,暴露两个工具——read_image(读本地图片)与 read_clipboard_image(读剪贴板截图),经 SYSTEM.md 引导模型调用;服务器按你配置的协议(OpenAI 兼容 / Anthropic)把图片发给你自己配置的多模态 API,返回文本描述。

多模态模型:Alt+V 粘贴即看,插件自动闲置
非多模态模型:@图片路径 / 截图后提问 → 模型调 mcp__kimi-eyes__read_image / read_clipboard_image → 你的 VLM 返回描述

前置要求

  • KimiCode CLI(本插件通过插件机制加载,需支持 /plugins 与 MCP)
  • Node.js ≥ 18(node --version 检查;原生 fetch 需要 18+)
  • 一个支持视觉输入的多模态 API(OpenAI 兼容 chat/completions,或 Anthropic messages),Key 由你自己提供

适用范围

本插件对主模型没有任何限制——无论你的 KimiCode 当前用哪个模型、来自哪家服务商,只要它不具备原生图片输入能力(image_in),本插件就能为它补上视觉:

  • 常见非多模态模型:DeepSeek(deepseek-chat)、Qwen 纯文本版(qwen-plus / qwen-turbo)、Llama 文本系列、以及本地部署的文本模型(Ollama / vLLM 等)
  • 任何第三方模型:通过 KimiCode 配置的任意 OpenAI 兼容或自定义模型,只要它原生不看图,插件就会在消息含图片时引导模型调用视觉工具
  • 多模态模型:自动跳过(Alt+V 粘贴即看,插件闲置)

视觉能力由你自己配置的 VLM 提供,与主模型完全解耦:

| 协议 | 常见视觉模型示例 | | --- | --- | | OpenAI 兼容 | qwen-vl 系列、GLM-4V、GPT-4o / GPT-5 兼容端点、Gemini 兼容端点等 | | Anthropic | Claude 3.5 / 3.7 / 4 系列等 |

一句话:主模型只管理解文字,看图交给外部 VLM。配置时只需在 setup 向导第一步选择与你视觉 API 服务商匹配的协议,其余全部自动。

快速开始

1. 安装插件

在 KimiCode 会话里执行(任选一种):

# 方式一:从 GitHub 安装(推荐)
/plugins install https://github.com/billowliu2/kimi-eyes

# 方式二:从本地目录安装
/plugins install D:\AIGC\Plugin\kimi-eyes

# 方式三:从国内镜像安装(GitHub 访问慢时用)
/plugins install https://git.codingplan.site/admin/kimi-eyes/archive/main.zip

2. 配置视觉 API(一次性)

运行配置向导(任选一种):

# npm 一键运行
npx kimi-eyes setup

# 本地插件目录运行
cd D:\AIGC\Plugin\kimi-eyes
node setup.mjs

向导按顺序引导:选择目标工具(KimiCode / Claude Code / Codex)→ 选择视觉协议 → 填写 BaseUrl → 填写 API Key(掩码输入)→ 拉取模型列表选择多模态模型 → 1×1 图片视觉验证 → 可选填写当前主模型名(用于触发判断)→ 写入配置。选择 Claude Code 时协议固定为 Anthropic、Codex 固定为 OpenAI,仅 KimiCode 需手动选择协议(OpenAI 兼容 / Anthropic)。

  • 模型列表自动从 GET {BaseUrl}/models 拉取,用内置的 models.dev 数据库精确标注「✓视觉 / 文本」,未收录的按关键词标「★疑似」;拉取失败时回退为手动输入
  • 视觉验证通过才落盘,防止配到一个不收图片的模型
  • 最后一步可填写当前主模型名(可选):插件用 models.dev 判定后,若该模型支持原生识图,工具会直接提示无需调用——即「多模态不触发」的代码级判断(详见触发
  • 配置写入 ~/kimi-eyes/config.json(独立于 kimi-code 目录,KimiCode / Claude Code / Codex 三工具共用;类 Unix 系统自动 chmod 600;可用 KIMI_EYES_HOME 覆盖)

3. 启用

/reload

MCP 服务器会随会话自动启动。

4. 使用

| 场景 | 操作 | | --- | --- | | 多模态模型 | 直接 Alt+V 粘贴图片,原生看图,插件不参与 | | 非多模态 + 有图片路径 | 输入 @截图.png 或直接给路径,模型自动调 read_image | | 非多模态 + 刚截图/复制 | 直接提问「分析这张截图」,模型自动调 read_clipboard_image 读系统剪贴板 | | 非多模态 + 想用 Alt+V 粘贴 | 纯文本模型需 /skill kimi-eyes 配合(见下),单纯粘贴会报错 | | 粘贴被拦截 | 直接告诉模型「我粘贴图片被拦截了」,模型会自动改读剪贴板,无需你保存文件 |

看图方式 × image_in 速查

| 看图方式 | 需要 image_in? | 纯文本可用? | 顺滑度 | | --- | --- | --- | --- | | 截图后随口一问(自动读剪贴板) | 否 | ✅ | 最省事 | | @路径 / 给路径 | 否 | ✅ | 省事 | | /skill kimi-eyes + Alt-V | 是 | ✅ | 多步 | | 单纯 Alt-V | 声明与否 | ❌ | 走不通 |

纯文本模型日常看图优先用前两种;只有「就想用粘贴这个动作」时才走 /skill kimi-eyes(见下)。

想用 Alt+V 粘贴?(给模型声明 image_in

KimiCode 前端默认会拦截「不支持图片输入」模型的粘贴。在 ~/.kimi-code/config.toml 给对应模型加上 image_in 即可放行:

[models."opencode-go/deepseek-v4-flash"]
capabilities = [ "thinking", "tool_use", "image_in" ]   # 追加 image_in

⚠️ 重要警告image_in 只是让前端放行,不代表 provider 真能收图。

  • 仅当 provider 本身支持图片输入(如 MiniMax-M3、k3、gpt-5.6-luna、grok-4.5 等)时声明才有意义——这些模型粘贴后原生看图,插件闲置
  • 纯文本 provider(如 deepseek-v4-flash、glm 文本版)不要声明——声明后粘贴会被放行,但请求发给 provider 时图片 part 会被拒(400 unknown variant image_url, expected text)。此时前端拦截反而是保护

纯文本模型的正确用法:@图片路径(read_image)或截图后直接提问(read_clipboard_image 读剪贴板);粘贴被拦截就直接告诉模型「粘贴被拦截了」,它会自动改读剪贴板。全程零命令

纯文本模型也想「粘贴看图」?用 /skill(推荐)

上面警告过:纯文本 provider 声明 image_in 后走 Alt-V 粘贴,图片会作为 image_url part 发给 provider 触发 400。但同样声明 image_in,改走 /skill 命令就不会 400——/skill 通道把图片渲染成 Attached image file: <路径>纯文本路径,不产生 image part。本插件自带一个 skill 利用这条通道。

一次性配置

给纯文本模型声明 image_in(仅为通过 /skill 的前端校验;/skill 下图片不走 part,不会触发 400):

[models."opencode-go/deepseek-v4-flash"]
capabilities = [ "thinking", "tool_use", "image_in" ]   # 追加 image_in

skill 由插件自带——kimi.plugin.json 已声明 skills/plugins install kimi-eyes/skill kimi-eyes 自动注册到 / 补全菜单,无需 extra_skill_dirs

用法

/skill kimi-eyes 这张图表说明了什么?    ← 然后 Alt-V 粘贴图片,回车

模型会从消息里的 Attached image file: <路径> 提取路径,调用 kimi-eyes 的 read_image(外部 VLM 返回文字描述)再作答。全程不产生 image part,纯文本模型不会 400。

⚠️ 声明 image_in 后的使用约束:看图一律走 /skill kimi-eyes不要再直接 Alt-V 粘贴(主 prompt 通道仍会把图片作 image part 发给纯文本 provider → 400)。@图片路径 和「截图后提问」两种老用法不受影响。

激活与触发

激活(一次性)

/plugins install D:\AIGC\Plugin\kimi-eyes   # 1. 安装
/reload                                     # 2. 启用(或 /new 新开会话)

启用后 MCP 服务器随每个会话自动启动,没有单独的「开启功能」步骤。验证方式:

  • /plugins list → kimi-eyes 状态应为 enabled
  • /mcp → kimi-eyes 服务器应显示 connected
  • /plugins info kimi-eyes → 应无诊断错误

触发(日常,全自动)

插件是被动式的:SYSTEM.md 为模型植入规则,模型在合适时机自动调用工具,无需手动操作:

| 信号(消息里的任何一项) | 模型自动行为 | | --- | --- | | 图片格式路径或 @ 引用(.png/.jpg/.jpeg/.webp/.gif/.bmp) | 硬触发:无条件调 read_image(path),与提问语料无关 | | 消息里有你无法解读的媒体内容(如粘贴的图片) | 忽略该媒体 part,自动调 read_clipboard_image() 读剪贴板(粘贴后剪贴板仍保留原图) | | 提问语义涉及图像内容:图 / 截图 / 照片 / 界面 / 图表 / 验证码 / OCR 等,但无路径 | 自动调 read_clipboard_image()不会要求你重发 | | 粘贴被拦截(报 Current model does not support image input) | 直接告诉模型,它会改调 read_clipboard_image(剪贴板仍保留原图) | | 模型真正能看懂图片内容(多模态) | 跳过全部规则,原生看图,不调工具 |

触发不依赖固定语料、不依赖任何命令前缀——用户不需要说「分析这个图片」,也不需要 /skill 之类的指令。图片格式路径是无条件硬触发;模型判断「自己看不见图片内容」或「用户想看图但消息里没有」时,会自动调工具而不是瞎猜或让你重发(SYSTEM.md 里的明确规则)。

关于模型能力判断:KimiCode 不向插件暴露「当前模型是否多模态」的信号,本插件提供两层判断:

  • 代码级(推荐):在配置里声明 mainModel(setup 向导最后一步,或环境变量 VISION_MAIN_MODEL),插件用内置的 models.dev 数据库判断——命中且支持识图 → 工具直接提示「你是多模态模型,直接粘贴看图」;命中且纯文本 → 正常走工具
  • 引导级:未声明 mainModel 时,靠 SYSTEM.md 的显式跳过规则(模型自我识别)

两层都是 fail-safe:判断错误最坏只是多一次外部调用(多模态误调)或漏调(文本模型漏调可用路径/语义信号补上)。若想硬性关闭,多模态场景可直接 /plugins disable kimi-eyes

Claude Code 使用(可选)

kimi-eyes 的 MCP 服务器是标准 MCP,可直接挂载到 Claude Code。注意:以下命令请在系统终端(PowerShell / Git Bash)执行,不要在 Claude Code 内部的 Bash 工具里执行(内部环境解析 --scope 等参数有差异)。

1. 前置要求

  • Node.js ≥ 18
  • Claude Code CLI(claude --version
  • 一个支持视觉的多模态 API(Key 由你自己提供)

2. 挂载 MCP 服务器(任选其一)

# 方式一:全局注册(user scope,所有项目可用)
#   将 <插件目录> 替换为本机 kimi-eyes 的实际绝对路径(如 D:\code\kimi-eyes)
claude mcp add --scope user kimi-eyes -- node "<插件目录>/mcp/server.mjs"

# 方式二:仅当前项目
claude mcp add kimi-eyes -- node "<插件目录>/mcp/server.mjs"

# 方式三:npx 通用版(不依赖本地路径,任何机器可复制)
claude mcp add --scope user kimi-eyes -- npx --prefer-online -y -p kimi-eyes kimi-eyes-mcp

3. 配置视觉 API(一次性)

npx kimi-eyes setup

复用同一份配置:kimi-eyes 在 KimiCode / Claude Code / Codex 下共用 ~/kimi-eyes/config.json(或环境变量 VISION_*)。

4. 引导规则(CLAUDE.md)

在项目根目录创建 CLAUDE.md(或追加到已有的),内容可参考本仓库根目录的 CLAUDE.md。核心规则:

# Kimi Eyes — Vision Assist (Claude Code)

Whenever the user's request involves image content and you cannot see it directly:
1. Image path / @ reference → call `mcp__kimi-eyes__read_image` with that path.
2. Just screenshotted/copied, or media you cannot read → call
   `mcp__kimi-eyes__read_clipboard_image` (image is almost always still in the clipboard).
3. Wording implies an image but no path → prefer `read_clipboard_image` over guessing.
If your model is multimodal (Claude 3+), you see images natively — ignore these rules.

5. 验证

claude mcp list
# kimi-eyes 应显示 √ Connected

6. 使用

有图片文件 → @C:\path\image.png 这个图里有什么?
刚截图     → 直接说「分析这张截图」(模型调 read_clipboard_image 读剪贴板)

注意

  • Claude 3+ 模型原生多模态,Claude Code 大多场景直接看图;插件主要用于文本模型或统一走某个外部 VLM 的场景
  • 卸载(Claude Code 挂载):见 卸载

首次调用会弹一次审批(MCP 工具权限):选 Approve for this session 本会话免问;想永久免审批,在 ~/.kimi-code/config.toml 添加:

[[permission.rules]]
decision = "allow"
pattern = "mcp__kimi-eyes__*"

触发成功的标志:回答前 TUI 出现工具调用记录,模型随后基于返回的描述作答。若模型未自动调用(例如只贴了路径未提问),可直接命令:「调用 read_image 工具分析 D:\xxx.png」。

卸载

kimi-code 插件方式

在插件目录运行卸载脚本(任选一种):

# 本地目录
node uninstall.mjs

# npm 一键运行
npx -p kimi-eyes kimi-eyes-uninstall

脚本清理以下残留(位于 KIMI_CODE_HOME~/.kimi-code):

  1. plugins/installed.json 中的 kimi-eyes 条目(改前自动备份为 installed.json.bak.uninstall-*
  2. plugins/managed/kimi-eyes/ 安装副本
  3. kimi-eyes/config.json 配置目录(含你的 VLM API Key,删除前会二次确认)

参数:--yes 跳过全部确认(适合脚本化);--dry-run 只预览不执行。重复运行是安全的(幂等)。

插件正被会话加载时,安装副本目录可能无法完全删除——内容会先被清空,只剩一个空目录壳。重启 kimi-code 会话后执行 rmdir 清理:

rmdir "C:\Users\<用户名>\.kimi-code\plugins\managed\kimi-eyes"

卸载完成后重启 kimi-code 会话(或 /reload)完全生效:mcp__kimi-eyes__* 工具消失、SYSTEM.md 引导指令不再注入、/skill kimi-eyes 命令也随之移除(skill 随插件副本删除)。

Claude Code 挂载方式

claude mcp remove kimi-eyes

环境变量(可选,覆盖配置文件)

| 变量 | 说明 | 优先级 | | --- | --- | --- | | VISION_API_PROTOCOL | openaianthropic,强制指定协议 | 高于配置文件 | | VISION_API_KEY | API Key | 高于配置文件 | | VISION_API_URL | BaseUrl | 高于配置文件 | | VISION_MODEL | 模型名 | 高于配置文件 | | VISION_MAIN_MODEL | 当前主模型名(可选),用于触发判断 | 高于配置文件 | | VISION_MAX_TOKENS | 视觉 API 返回最大 token 数(默认 1024) | — | | VISION_FETCH_TIMEOUT_MS | 请求超时毫秒(默认 60000) | — |

环境变量与 config.json 同名配置冲突时,环境变量优先;两者都没配时工具会返回明确错误并提示先运行 setup.mjs。 环境变量可沿用 opencode-vision 的迁移习惯——变量名完全兼容。

协议说明

| | OpenAI 兼容 | Anthropic | | --- | --- | --- | | 请求端点 | {BaseUrl}/chat/completions(自动补 /v1) | {BaseUrl}/v1/messages | | 鉴权 | Authorization: Bearer <Key> | x-api-key: <Key> + anthropic-version: 2023-06-01 | | 图片传法 | image_url + base64 data URL | source: {type:"base64"} | | 模型列表 | GET {BaseUrl}/models | GET {BaseUrl}/v1/models(官方无此端点,失败回退手动输入) |

模型能力数据库(models.dev)

插件内置一份从 models.dev 同步的精简能力库 mcp/models-db.json(当前收录 279+ 模型,标注每个模型是否支持图片输入,约 19KB),用于两处:

  • 向导选择视觉模型时的精确标注(✓视觉 / 文本),替代纯关键词猜测
  • 声明 mainModel判断当前主模型是否多模态,实现代码级触发开关

打包时同步(数据会更新,建议每次发布前运行):

node scripts/sync-models.mjs
  • 数据源:https://models.dev/models.json
  • 走代理:设置 HTTPS_PROXY,例如 HTTPS_PROXY=http://127.0.0.1:7897 node scripts/sync-models.mjs
  • 可选参数:--timeout <秒>(默认 180)、--out <路径>(默认 mcp/models-db.json)、--endpoint <URL>
  • 模型匹配策略:精确 id → provider/模型名 后缀 → 大小写不敏感的名称匹配
  • 未收录的模型:查询返回未知——向导回退关键词猜测(★疑似),触发判断回退 SYSTEM.md 引导,不影响使用
  • 手动特例:models.dev 未收录但确认支持识图的模型(如 k3-256kkimi-for-coding),在 scripts/sync-models.mjsEXTRA_ENTRIES 里维护,每次同步自动合入、不会被覆盖

版本管理package.json 是唯一版本来源,发布前执行:

npm version patch --no-git-tag-version   # 更新 package.json,version 钩子自动同步 kimi.plugin.json
npm publish                              # prepublishOnly 自动同步 models-db

npm versionversion 钩子运行 scripts/bump-version.mjs 同步 kimi.plugin.json;MCP 的 serverInfo.versionmcp/vision.mjs)运行时直接读取 package.json,无需手动维护。想手动改版本:node scripts/bump-version.mjs 1.0.6

工具

| 工具 | 参数 | 说明 | | --- | --- | --- | | read_image | path(必填)、prompt(可选) | 校验文件为图片(扩展名 + 魔数)后调 VLM | | read_clipboard_image | prompt(可选) | 从系统剪贴板取图存临时文件后调 VLM,用完即删 |

剪贴板取图依赖平台工具:Windows 用 PowerShell(内置)、macOS 需 pngpastebrew install pngpaste)、Linux 需 wl-paste(Wayland)或 xclip(X11)。

故障排查

  • Alt+V 粘贴报 Current model does not support image input → KimiCode CLI 的拦截。两种解法:① 在 config.toml 给该模型追加 image_in(见「想用 Alt+V 粘贴?」)放行粘贴,模型看不懂图片时会自动读剪贴板;② 直接告诉模型「粘贴被拦截」,它会改调 read_clipboard_image 从剪贴板取图
  • 工具返回「Vision API is not configured」 → 运行 node setup.mjs,或设置 VISION_API_KEY / VISION_API_URL / VISION_MODEL
  • 模型列表拉取失败(404/401)→ 向导自动回退手动输入;若服务端不支持 /models,直接输入模型名即可
  • 视觉验证失败 → 换一个真正支持图片输入的模型(参考服务商文档,如 qwen-vl-maxglm-4vgpt-4oclaude-3-5-sonnet 等)
  • read_clipboard_image 报错 → 确认剪贴板里确实有图片(先 Ctrl+C 复制或 Win+Shift+S 截图);macOS/Linux 检查上述平台工具是否安装
  • 安装后工具不生效 → 确认插件已启用(/plugins list),并运行过 /reload 或新开会话

安全说明

  • config.json 以明文保存你的 API Key(类 Unix 已设 600 权限);请勿将该文件提交到版本库
  • read_clipboard_image 会读取系统剪贴板内容——剪贴板里可能刚复制过敏感信息。该工具调用会经过审批流,由你决定何时触发
  • 本项目不内置任何密钥,视觉请求只发往你配置的 BaseUrl

局限

  • 不做子代理委托方案:KimiCode 子代理的 model_preference 只能选择 primary/secondary,无法像 opencode 那样指定一个具体视觉模型,收益有限
  • 不做 UserPromptSubmit hook 兜底:当前 SYSTEM.md 引导已覆盖常规场景;若你的 TUI 环境下粘贴/引用行为异常,可再评估 hook

License

MIT