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

使用方法

接入 AI 客户端

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

一键接入(推荐)

把下面这段话原样复制发给你的 AI 助手(ZCode / Claude Code 等),它会先停下来向你要视觉模型信息,然后自动完成安装、MCP 配置与配套技能安装:

请帮我接入 picsense——本地图片/视频/文档识别 MCP 服务,并安装它的配套使用技能。

第一步:确认视觉模型信息。picsense 本身免费开源、本地运行,但识别图片/视频需要调用一个多模态视觉模型。检查我在对话中是否已给出「协议 + API Key + 模型名」;如果没有,停下来向我询问,并告诉我协议三选一:
1. OpenAI 官方 API,或任意 OpenAI 兼容网关(可配自定义 base URL)
2. Chat Completions 协议网关(腾讯 Coding Copilot、DeepSeek 等)
3. Anthropic 协议(官方 API,或 DeepSeek 等兼容端点)
注意:所选模型必须具备视觉(图片理解)能力。拿到信息之前不要进行后续步骤。

第二步:安装并配置 MCP 服务器(本地 stdio 传输)。
npm i -g @honlnk/picsense
按你所在环境的标准方式写入配置:
- ZCode:~/.zcode/cli/config.json 的 mcp.servers,形如 {"type":"stdio","command":"picsense","args":[],"env":{"DEFAULT_PROVIDER":"openai","OPENAI_API_KEY":"你的Key","OPENAI_MODEL":"模型名"},"timeoutMs":900000}(视频识别较慢,超时给足)
- Claude Code:claude mcp add picsense --env DEFAULT_PROVIDER=openai --env OPENAI_API_KEY=你的Key --env OPENAI_MODEL=模型名 -- picsense
- Claude Desktop / Cursor / 其他 MCP 客户端:mcpServers 配置节,command 用 npx、args 用 ["-y","@honlnk/picsense"](Windows 需用 cmd /c 包裹 npx),env 同上
所选协议对应的环境变量见官网 https://picsense.honlnk.com/ 的「环境变量」一节;视频识别依赖 ffmpeg(安装时自动下载,pnpm 注意事项见官网「配置」一节)。

第三步:安装配套技能——只装 picsense-usage 这一个,不要把技能仓库里的其他技能装进技能目录。
git clone --depth 1 https://github.com/honlnk/honlnk-skills /tmp/honlnk-skills
把 /tmp/honlnk-skills/skills/picsense-usage 复制到你的技能目录(ZCode:~/.agents/skills/;Claude Code:~/.claude/skills/;其他 Agent:对应的技能发现目录),完成后删除 /tmp/honlnk-skills。
该技能承载「怎么用好这套工具」:读带图文章的完整链路、图片 URL 形态修正、全文标注与单图深读怎么选、session 多轮迭代、常见坑。

全部完成后重载配置或重启会话,确认工具列表出现 picsense 的 analyze_images / analyze_document 等工具即为接入成功,并向我报告结果。
配套技能来自 honlnk/honlnk-skills:picsense-usage 教你的 Agent 怎么用好这套工具。不想用一键接入?按下面 1、2 两步手动配置即可。

1. 配置 AI 客户端

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

{
  "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 包裹(如上),否则无法正确启动。

切换协议(可选)

把 env 换成对应协议的三个变量即可,其余配置不变:

// Chat Completions —— 腾讯 Coding Copilot / DeepSeek 官方 / Qwen 等兼容网关
"DEFAULT_PROVIDER": "chat",
"CHAT_API_KEY": "ck-xxx",
"CHAT_MODEL": "hy4-preview",
"CHAT_BASE_URL": "https://copilot.tencent.com/v2"

// Anthropic —— Anthropic 官方 / DeepSeek 官方 /anthropic 端点
"DEFAULT_PROVIDER": "anthropic",
"ANTHROPIC_API_KEY": "sk-xxx",
"ANTHROPIC_MODEL": "deepseek-v4-flash-vision-exp",
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic"

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_PROVIDER否openai默认 provider(openai / chat / anthropic)
OPENAI_API_KEY是*—OpenAI API Key
OPENAI_MODEL是*—模型名(如 gpt-5.6-sol)
OPENAI_BASE_URL否官方地址自定义 base URL(代理或兼容网关)
CHAT_API_KEY是*—Chat Completions 协议 API Key(provider=chat)
CHAT_MODEL是*—模型名(如 hy4-preview)
CHAT_BASE_URL否官方地址兼容网关(腾讯 copilot.tencent.com/v2 等)
ANTHROPIC_API_KEY是*—Anthropic 协议 API Key(provider=anthropic)
ANTHROPIC_MODEL是*—模型名(如 claude-sonnet-4)
ANTHROPIC_BASE_URL否官方地址兼容端点(DeepSeek api.deepseek.com/anthropic 等)
MAX_IMAGE_MB否5单张图片大小上限(MB)
MAX_VIDEO_MB否100单个视频大小上限(MB)
VIDEO_MAX_FRAMES否30视频抽帧最大帧数
VIDEO_FPS否1视频抽帧采样率(每秒抽几帧)
TIMEOUT_MS否300000视觉模型请求超时(毫秒)

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

API 格式(三协议):openai 走 Responses API(/v1/responses);chat 走 Chat Completions(始终流式,兼容腾讯等强制流式网关);anthropic 走 Messages API(/v1/messages,图片自动转 base64)。换协议/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。