本地安装 · 开源 · MCP 协议

让单模态模型
看懂图片与视频

picsense 是一个本地安装的 MCP 服务,通过调用多模态视觉模型 API,让 GLM-5.2 这类单模态基座模型也能识别图片与视频内容。核心特色:支持多轮迭代识别——边干边查,逐步精修。

$ npx @honlnk/picsense
开始使用 了解多轮迭代 查看源码

功能

4 个 MCP 工具

遵循 Model Context Protocol 标准,按输入形态划分,把 prompt 控制权交给基座模型。

analyze_images
图片识别 + 多轮迭代。传一张是单图识别,传多张是批量/对比。支持 URL / 本地路径 / base64 自动识别。
参数:image_sources prompt session_id
analyze_video
视频识别。内置 ffmpeg 抽帧后送视觉模型分析(默认每秒 1 帧、最多 30 帧),同样支持多轮迭代。
参数:video_source prompt session_id
analyze_document
解析文档(URL / HTML / markdown),识别其中所有图片,在图片位置旁标注描述,返回标注后的完整文档。
参数:document
list_sessions
查看当前所有识别会话的列表与简介,用于回顾历史识别记录、恢复上下文。
参数:无

核心特性

核心特色

多轮迭代识别

这是 picsense 最核心的差异化点——市面上几乎所有图片识别 MCP 都是一次性的,但一次性的视觉描述往往不够详细或不够准确。

边干边查,逐步精修

允许基座模型在处理任务的过程中多次调用 picsense,而不是一次性识别就结束:

1 首轮analyze_images(图 + 初始 prompt)→ 创建 session,返回描述 A + session_id
2 基座模型判断:描述 A 是否满足用户需求?
3 不满足则再调analyze_imagessession_id + 新 prompt,如「重点描述导航栏样式」)→ 返回更精确的描述 B
重复直到满足,基座模型基于最终描述继续处理用户需求
典型场景:用户发送一张复杂设计稿 + 「帮我还原这个页面」。基座模型先拿到整体描述开始写代码,写到某个组件发现细节不清,重新调 picsense 聚焦该局部——这种「边干边查」的能力,一次性识别方案做不到。
session 机制:多轮迭代通过 MCP 侧的 session 实现——picsense 维护与视觉模型的完整多轮对话历史,基座模型只需传一个 session_id 字符串即可在已有对话基础上继续。视觉模型拿到的是原生多轮对话(完整 messages 数组),而非被压扁成单轮 prompt。

使用方法

接入 AI 客户端

需要 Node.js ≥ 20。无需克隆仓库,npx 一行启动,配置一次永久生效。

1. 配置 AI 客户端

在你的 AI 客户端(ZCode / Claude Desktop / Cursor / 其他 MCP 客户端)的配置文件中加入。需提供自己的多模态模型 API Key(默认用 OpenAI Responses API):

{
  "mcpServers": {
    "picsense": {
      "command": "npx",
      "args": ["-y", "@honlnk/picsense"],
      "env": {
        "DEFAULT_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-xxx",
        "OPENAI_MODEL": "gpt-5.6-sol"
      }
    }
  }
}
{
  "mcpServers": {
    "picsense": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@honlnk/picsense"],
      "env": {
        "DEFAULT_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-xxx",
        "OPENAI_MODEL": "gpt-5.6-sol"
      }
    }
  }
}
Windows 必读:Windows 上 npx 需通过 cmd /c 包裹(如上),否则无法正确启动。

2. 验证

配置完成后,在 AI 客户端里粘贴一张图片提问,例如「描述这张 UI 截图的布局」。基座模型会自动调用 analyze_images 工具识别并返回描述。

使用示例

单图识别

analyze_images({
  image_sources: ["https://example.com/screenshot.png"],
  prompt: "描述这张 UI 截图的整体布局"
})

多轮迭代——细化局部

// 第 2 轮(复用上一轮返回的 session_id)
analyze_images({
  session_id: "<上一轮返回的 session_id>",
  prompt: "重点描述导航栏的样式,包括颜色、间距、字体"
})

视频识别

analyze_video({
  video_source: "https://example.com/demo.mp4",
  prompt: "描述这段视频的内容和关键画面"
})

配置

环境变量

全部配置走环境变量,代码内零硬编码。在 MCP 配置的 env 字段里传入。

变量必填默认值说明
DEFAULT_PROVIDERopenai默认 provider
OPENAI_API_KEY是*OpenAI API Key
OPENAI_MODEL是*模型名(如 gpt-5.6-sol
OPENAI_BASE_URL官方地址自定义 base URL(代理或兼容网关)
MAX_IMAGE_MB5单张图片大小上限(MB)
MAX_VIDEO_MB100单个视频大小上限(MB)
VIDEO_MAX_FRAMES30视频抽帧最大帧数
VIDEO_FPS1视频抽帧采样率(每秒抽几帧)
TIMEOUT_MS300000视觉模型请求超时(毫秒)

* 默认 provider 的 Key/Model 必填;其他 provider 仅在切换使用时才需要。

API 格式:provider 使用 OpenAI Responses API/v1/responses 原生格式),兼容任何实现了该 API 的网关。换 provider 只需改环境变量,无需改代码。

视频识别的 ffmpeg 依赖

analyze_video 需要 ffmpeg。安装时自动下载内置的 ffmpeg-static 二进制;若下载失败(如 --ignore-scripts、企业内网代理),会自动 fallback 到系统 ffmpeg

# macOS
brew install ffmpeg
# Debian / Ubuntu
apt install ffmpeg
pnpm 用户:pnpm 默认不运行第三方包安装脚本。若用 pnpm 全局安装发现 ffmpeg 二进制未下载,可直接装系统 ffmpeg 走 fallback,或确认 pnpm.onlyBuiltDependencies 已包含 ffmpeg-static