解除图片输入限制,附件转文本交给识图技能
27.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add FrostLeafKEE/dsh-image-unlock该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
- 读取本地文件lib/index.js:50
const skillPresent = existsSync(resolveSkillDir(config)); - 读取本地文件lib/index.js:60
if (existsSync(parent)) {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 解除图片输入限制
- 图片附件文本化
- 交给识图技能
DeepSeek Harness 插件:解除 Web GUI 图片输入限制,把图片附件转成文本交给 vision 技能识图 | dsh 插件,解除图片输入限制,把附件交给 vision 技能
README
由 DeepSeek 最新模型翻译生成🐳 dsh-image-unlock
解除 DeepSeek Harness Web GUI 的图片输入限制,让图片附件在不支持图片的上游(Console Go)下可用。
[version]()
[license]()
[platform]()
[whale girl approved]()
✨ 一张图看懂
🖼️ 上传图片 │ ▼ 🚪 准入闸门 ←── bundle patch:defaultInput: [text, image] │ (未声明 input 的模型继承图片能力,不再被拒) ▼ 🔧 图片文本化 ←── code patch:textifyImageBlocks() │ (图片块 → [图片附件: ] 文本标记) ▼ 🤖 agent 看到标记 → 👁️ vision skill 识图(vision.js 魔数嗅探 MIME)
🧩 问题
Harness 在 API 层(dsh-host-apiproxy)、LLM 层(dsh-llm-pi-ai)都根据模型的 inputModalities(来自 llm-pi-ai 的模型 input 声明)判断能否接收图片。
展开完整文档(README 剩余 1 节)
🐳 dsh-image-unlock
解除 DeepSeek Harness Web GUI 的图片输入限制,让图片附件在不支持图片的上游(Console Go)下可用。
[version]()
[license]()
[platform]()
[whale girl approved]()
✨ 一张图看懂
🖼️ 上传图片 │ ▼ 🚪 准入闸门 ←── bundle patch:defaultInput: [text, image] │ (未声明 input 的模型继承图片能力,不再被拒) ▼ 🔧 图片文本化 ←── code patch:textifyImageBlocks() │ (图片块 → [图片附件: ] 文本标记) ▼ 🤖 agent 看到标记 → 👁️ vision skill 识图(vision.js 魔数嗅探 MIME)
🧩 问题
Harness 在 API 层(dsh-host-apiproxy)、LLM 层(dsh-llm-pi-ai)都根据模型的 inputModalities(来自 llm-pi-ai 的模型 input 声明)判断能否接收图片。
默认声明只有 text,因此未声明 input 的模型(如 deepseek-v4-flash)在发图时会被拒绝("Model does not support image input")。
但只放行还不够:dsh-llm-pi-ai 会把 durable 图片块转成 { type: "image", data: base64 } 部件,pi-ai SDK 序列化为 image_url 发送给上游。Console Go 上游协议只接受 text,于是报:
400 invalid_request_error: Failed to deserialize the JSON body into the
target type: messages[605]: unknown variant image_url, expected text
也就是说:声明图片能力是"准入",但上游根本不收图片。正确做法是准入后把图片块转成带附件路径的文本标记,识别交给 vision skill。
⚙️ 方案(两部分)
1. Bundle patch:准入(cordis.patch.yml)
给 llm-pi-ai 的 opencode-go provider 加上 defaultInput: [text, image],让未显式声明 input 的模型继承 image 输入能力,从而通过 API 层 / LLM 层的图片闸门。显式声明 input: [text] 的模型保持原样(用户层优先)。
2. 代码 patch:图片文本化(scripts/patch-pi-ai.mjs)
dsh-llm-pi-ai 的序列化没有配置开关,请求对象又是深度冻结的(llm/stream waterfall 无法改写),所以对本地安装的包做一次代码补丁(已用 [dsh-plugin-image-unlock] 标记注释标注):
- 在 stream() 中,对 opencode-go 路由先调用 textifyImageBlocks():把 durable 图片块(含 tool-result 内嵌套的)替换为文本标记;是否执行由运行时开关 globalThis.__dsh_image_unlock_textify 控制(见下节)。
[图片附件: ] 附件已保存到 /attachments/v1/objects//(当前模型不能直接查看图片,请用 claude-vision-skill 识别该路径;无法访问时用 --clipboard 回退)
- 附件对象文件没有扩展名,claude-vision-skill/vision.js 已支持按魔数嗅探 MIME(png/jpeg/webp/gif),可直接识读该路径;剪贴板回退仍然可用。
这样:上传不再被拒(第 1 部分)、请求不再 400(第 2 部分)、agent 看到 [图片附件: ...] 标记后按 vision skill 流程识别(配套 skill 已更新文档)。
📦 安装
方式一:本地目录(开发调试用)
dsh plugin --profile web add
方式二:从 GitHub 直接安装
dsh plugin --profile web add https://github.com/FrostLeafKEE/dsh-image-unlock.git
dsh plugin 会把参数转发给 profile 目录里的 pnpm,两种方式等价;安装后
dsh.profile.bundles 会自动登记 @dsh-external/dsh-image-unlock。
安装后还需要在 profile 的 cordis.patch.yml 中插入插件条目(见下节),并打一次代码补丁(见"重装/升级后重新打补丁")。
🎛️ 开关(skill 驱动:禁用 skill = 原生视觉模型)
开关与 claude-vision-skill 的启停绑定,全部即时生效、无需重启:
- 启用 skill(默认):claude-vision-skill 目录在 .agents/skills 下 → 文本化开启,图片转成文本标记,agent 走 vision.js 识图流程(适合当前 text-only 的 opencode-go 模型)。
- 禁用 skill(用原生视觉模型):把 /.agents/skills/claude-vision-skill 目录移出(例如移到 /.dshskin/ 下)→ 文本化自动关闭,模型收到真实图片部件。想切回 vision-skill 流程就放回原处。
插件会监视 skills 目录,目录移动即刻切换,无需重启。
附加覆盖(profile 的 cordis.patch.yml 插件条目):
- insert:
- id: image-unlock
name: '@dsh-external/dsh-image-unlock'
disabled: true # 整体关闭:取消注释这一行 config: textifyImages: true # 强制关文本化:改成 false(即使 skill 在) skillDir: '' # 自定义 skill 目录位置(默认自动探测)
注意:bundle patch 的 defaultInput 声明不受上述开关影响(只影响未声明 input 的模型;视觉模型应通过 settings 声明自己的 input: [text, image],其声明优先于 defaultInput)。
运行时标志:插件把开关写入 globalThis.__dsh_image_unlock_textify; dsh-llm-pi-ai 补丁代码在每次请求时读取它(=== true 才文本化)。条目被禁用、插件被移除、或 skill 目录不存在时标志被清除,文本化随之关闭。
🔄 重装/升级后重新打补丁
第 2 部分是针对 node_modules 的代码补丁,pnpm install / 升级 @deepseek-ai/dsh 会把它冲掉。重装后执行(幂等,已打补丁会直接跳过):
node scripts/patch-pi-ai.mjs
默认在以下位置寻找目标文件(也可用参数指定绝对路径):
- /../../DeepSeekHarness/node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js
- /../DeepSeekHarness/node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js
- /../../../node_modules/@deepseek-ai/dsh-llm-pi-ai/lib/index.js
⚠️ 注意
- 这只放行图片附件并文本化;模型本身不支持图像输入。实际识图请配合 vision skill(claude-vision-skill,通过 vision.js 调用外部 vision API)。
- 文本化只影响 opencode-go 路由,其它 pi-ai 路由行为不变。
- 若某天 opencode-go 路由真的挂上了原生视觉模型,用上面的开关关闭文本化即可;彻底移除的话:删掉插件条目、dsh plugin remove、并手动删除 dsh-llm-pi-ai/lib/index.js 中两处 [dsh-plugin-image-unlock] 标记的代码。
🐳 头图由 wan2.7-image-pro 生成 · DeepSeek 鲸鱼娘风格 MIT License · dsh-plugin · deepseek-harness预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
FrostLeafKEE/dsh-image-unlock
解除图片输入限制,附件转文本交给识图技能
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目