Skip to content
This repository was archived by the owner on Aug 18, 2026. It is now read-only.

Repository files navigation

picturereader(ZCode 版)

ZCode 插件(zcode-plugin)— 给纯文本模型(如 deepseek-v4-flash)的"读图"能力。 把图片降分辨率 + 降色深 + 结构/色彩指纹提取,渲染成文本网格喂回对话, 让模型像多模态模型一样"看"图:描述场景、主体、环境、光线与语义内容。 纯本地、零外部模型依赖、零 API key、零 Python(PaddleOCR 为可选增强)

本仓库是原 picturereader(DeepSeek Harness 插件,独立仓库)的 ZCode 移植版: 三个工具通过 MCP servermcp/server.js,stdio)暴露给 ZCode,读图方法论作为 skillskills/image-reading/)随插件分发。业务逻辑 src/core.js 与源插件完全一致。

性能提示:本版工具经 MCP stdio 子进程暴露,每次调用都有进程通信与 JSON-RPC 序列化开销,速度明显慢于 DSH 版(DSH 版为插件内直接调用)。高频/批量看图请 使用 DSH 版;本版适合 ZCode 环境下的轻量、偶发看图。

这是什么

DeepSeek 等纯文本模型没有视觉编码器,无法直接看图。picturereader 把"看图"翻译成 模型能理解的结构化文本证据,并提供一套经过大量真实图片迭代验证的读图方法论 skill(image-reading),让模型像人一样分步看图:

  1. 全局定调:hue families(纯色相指纹)→ structure(条带/对称)→ texture(写实度)→ regions(色块结构)
  2. 主动找主体:px_per_cell 定向放大(深色/低对比/小色块不会漏)
  3. 文字验证:PaddleOCR 实读(防多模态幻觉)
  4. 材质判断:image_sample 像素取样
  5. 综合描述:带证据等级的连贯画面描述

工具

工具 作用
image_scan 全局/区域扫描:亮度/颜色网格 + regions 色块 + shade diversity + texture mix + structure(条带/对称)+ 像素级 colors + hue families 纯色相指纹;支持 focus/region 局部放大、px_per_cell 像素密度定向放大
image_ocr 文字识别双引擎:windows(内置,默认)/ paddle(选装,发光/弯曲/游戏字远强),失败自动降级不崩溃
image_sample 8×8 精确像素取样,判断材质/纹理(金属/木纹/织物/皮肤/雾)

读图方法论 skill(image-reading)

skills/image-reading/SKILL.md 是一套经大量真实图片场景迭代验证的读图方法论 (按 experience / skill / principle / insight 分层,教训有据可依、找主导模式), 安装后模型自动掌握:

  • hue 场景指纹:cyan 高=水/雾/湖泊,green 高=森林,orange/red 高=暖色人物/火光, blue 高=夜晚科幻,achromatic+rough=废墟,green+yellow=翠绿能量/浮空仙境
  • 多模态模型校验规则:游戏名/品牌等文字必须 OCR 实读(多模态模型会猜错); 发光元素颜色以 hue 实测为准(多模态模型对发光色的描述系统性不可靠)
  • 主动验证:低对比主体(暗色人物/小色块)必须放大确认

安装

本目录同时是一个本地插件市场(根目录 marketplace.json 声明了 picturereader 插件,source: "." 指向本目录自身),插件自带 .zcode-plugin/plugin.json 清单 (声明 skillsmcpServers)。

# ZCode 桌面端 Settings → Plugin Management → Discover → 「+」→ 本地目录
# 选择 D:\coding\picturereader_zcode → 市场列表出现 picturereader → 安装

安装并启用后(重启 ZCode 或按提示重连):

  1. MCP server picturereader 自动连接(stdio 子进程 node mcp/server.js), 模型工具列表出现 image_scan / image_ocr / image_sample
  2. skill image-reading 自动出现在技能列表(图片任务自动触发);
  3. (可选)PaddleOCR 增强引擎node scripts/setup-ocr.mjs

关于安装后的运行位置:市场安装会把插件目录拷贝到 ZCode 插件缓存 (~/.zcode/cli/plugins/cache/...),但 .zcode-plugin/plugin.json 里 MCP server 的 args具体绝对路径,指向本目录的 mcp/server.js——因此 MCP server 始终 从本目录运行:改 src/core.js 下次调用即生效(热加载)。skill / 工具定义变更 需在 Discover 里卸载后重装生效(或手动同步缓存副本)。若插件目录移动,请同步更新 plugin.json 里的 args 路径。

路径解析

工具参数 file_path 支持绝对路径,也支持相对路径——相对路径以当前工作区根目录 为基准解析(插件通过 PICTUREREADER_CWD 环境变量从 ZCode 拿到项目根)。

可选环境变量

变量 默认值 作用
DSH_PADDLE_PYTHON C:\Users\Administrator\paddle_venv\Scripts\python.exe PaddleOCR 解释器路径(与原插件同名,便于直接迁移)
DSH_PADDLE_CACHE <插件目录>\.paddlex-cache PaddleX 模型缓存目录

使用

直接对模型说:

用 image_scan 看一下 <路径> 这张图,细看感兴趣的部分

模型会加载 image-reading 方法论自动执行完整流程(定调 → 找主体 → 验证 → 描述)。

输出示例

image: chart.png (600x400 -> 32x21 cells, ~18.8x19px per cell, region=full, palette=full, mode=color)
shade diversity: 10 distinct shades | texture: smooth 24.2%, medium 19.3%, rough 56.5%
structure: 6 vertical stripes (4 alternating colors) at cols 4..7; left-right symmetry 45%
hue families: cyan 88.2%, green 4.5%, yellow 1%          ← 真实主调(colors 灰白占比是假象)
regions: ...(色块结构)
colors by area: ...(像素级真实占比)
luminance grid / color grid

开发

npm install
npm test            # node:test,83 个测试(core 管线 + MCP 协议 + OCR 全链路)
node scripts/setup-ocr.mjs   # 可选:装 PaddleOCR
node scripts/preview.mjs     # 生成 fixtures 并预览渲染

热插拔:业务逻辑全在 src/core.js 单文件,MCP server 每次执行按 mtime 动态 加载(cache-bust,见 importCore),改 core.js 下次调用即生效;工具定义 (schema/描述)改动需重连 MCP server。

移植说明(相对 DSH 原版)

  • ctx.tools.register 工具注册 → mcp/server.js 的 MCP tools/list / tools/call
  • ctx.fs / exec 文件能力 → 直接 node:fs + 工作区根目录路径解析(resolveImagePath
  • cordis.patch.yml / src/tool.js(Cordis 专属)已移除;src/index.js 插件入口不再需要
  • skills/image-reading.mdskills/image-reading/SKILL.md(zcode skill 目录格式)
  • 工具名、参数、输出格式、错误消息与 DSH 原版完全一致

注意.zcode-plugin/plugin.jsonmcpServers 与内置插件一致使用具体绝对路径command = node.exe,args = 本目录的 mcp/server.js),不依赖变量展开;若把插件目录 移动到别处,需同步更新这两个路径。

优势

  • 零外部模型依赖:核心链路(扫描/取样/解码)纯本地纯 JS,不调任何视觉 API; 语义理解完全交给主模型(DeepSeek),不依赖 YOLO 等固定类别检测器(遇未知物体不失效)
  • 可追溯、可验证:每个结论都有数据支撑(hue 占比、色块坐标、OCR 文本+置信度), 能主动识别并纠正多模态模型的幻觉(游戏名乱猜、发光颜色误标、小字脑补)
  • 隐私友好:原始图片不出本机,只有降采样文本进模型上下文
  • 成本低:一次扫描 ≈0.6–2.2K tokens;PaddleOCR 本地跑,无 API 费用
  • 可选增强:PaddleOCR 一键安装(scripts/setup-ocr.mjs),缺失自动降级不崩溃
  • 方法论沉淀:附带的 image-reading skill 把读图经验固化(场景指纹/校验规则), 模型每次看图都带着经过大量图片验证的经验

局限性(重要)

  • 不是真正的视觉模型:文本网格信息量有限,人脸/表情/花纹等像素级细节读不出; 这是文本模态的硬上限,放大(px_per_cell)只能缩小差距,不能消除
  • 语义推断依赖主模型能力:物体识别("这是树/空间站")是 LLM 基于结构证据的推测, 不是视觉模型的确证——复杂/罕见物体可能推断错误
  • OCR 引擎边界:Windows OCR 对发光/弯曲/艺术字失效;PaddleOCR 强很多但需选装, 且对极小文字/极端艺术字仍可能失败(可配合放大)
  • 性能:4K 图解码 ~230ms;PaddleOCR 每次调用需 ~2s 加载模型;大图网格渲染 token 随 size 增长(64×64 color ≈ 3–5K tokens)。PaddleOCR 引擎输入自动降采样 到长边 ≤1600px(否则 4K 截图识别可达 15–18s,会超过客户端工具超时);需要精细 小字时用 region/focus 裁剪后再 OCR(裁剪后不再降采样)
  • WebP 不支持(提示转 PNG/JPEG);GIF 只读首帧
  • 多模态模型的描述不可全信(本插件可交叉验证,但最终语义仍需人工判断关键场景)

License

MIT

About

ZCode plugin: pixel-to-text image reading for text-only models. image_scan / image_ocr / image_sample via MCP, plus the image-reading methodology skill. Port of the picturereader DSH plugin.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages