🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

多引擎视觉插件 YZz-S/dsh-modlens

DeepSeek Harness
YZz-S54 天前有提交已提供中文文档扫描:含敏感能力

让纯文本模型按次选引擎读取图片内容

30.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add YZz-S/dsh-modlens
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 54 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-modlens(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 10:40:16

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 61 处,展示前 26 条)
  • 读取本地文件
    dsh/index.js:20
    const OUTPUT_SCHEMA = JSON.parse(readFileSync(new URL('./vision-schema.json', import.meta.url), 'utf8'))
  • 执行外部命令来自配置/变量
    dsh/index.js:828
    const child = spawn(command, args, {
  • 发起网络请求
    dsh/client.js:57
    fetch('/modlens/paste', { method: 'POST', body: buffer }).then((res) => {
  • 发起网络请求
    dsh/client.js:111
    fetch(`/modlens/paste?model=${encodeURIComponent(label)}`)
  • 读取本地文件
    dist/main.js:316
    const size = fs.statSync(filePath).size;
  • 读取本地文件
    dist/main.js:318
    const buffer = fs.readFileSync(filePath);
  • 发起网络请求
    dist/main.js:386
    return new Agent({ connect: { lookup: (_hostname, options, callback) => {
  • 发起网络请求
    dist/main.js:427
    if (proxy) return new ProxyAgent(proxy);
  • 发起网络请求
    dist/main.js:428
    if (env.HTTPS_PROXY || env.https_proxy || env.HTTP_PROXY || env.http_proxy) return new EnvHttpProxyAgent();
  • 发起网络请求
    dist/main.js:476
    return await fetch(url, init);
  • 读取本地文件
    dist/main.js:1137
    const newest = fs.readdirSync(dir).filter((name) => name.endsWith(".log")).map((name) => {
  • 读取本地文件
    dist/main.js:1141
    mtime: fs.statSync(full).mtimeMs
  • 读取本地文件
    dist/main.js:1145
    return fs.readFileSync(newest.full, "utf-8").slice(-64e3).split("\n").filter((line) => {
  • 读取本地文件
    dist/main.js:1415
    raw = fs.readFileSync(configPath, "utf-8");
  • 写入本地文件
    dist/main.js:1490
    fs.mkdirSync(path.dirname(configPath), { recursive: true });
  • 写入本地文件
    dist/main.js:1491
    fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, { mode: 384 });
  • 写入本地文件
    dist/main.js:1493
    fs.chmodSync(configPath, 384);
  • 写入本地文件
    dist/main.js:1533
    fs.mkdirSync(path.dirname(configPath), { recursive: true });
  • 写入本地文件
    dist/main.js:1534
    fs.writeFileSync(configPath, `${JSON.stringify(CONFIG_TEMPLATE, null, 2)}\n`, { mode: 384 });
  • 写入本地文件
    dist/main.js:1536
    fs.chmodSync(configPath, 384);
  • 执行外部命令来自配置/变量
    dist/main.js:1989
    return execFileSync(plan.command, plan.args, {
  • 执行外部命令来自配置/变量
    dist/main.js:2541
    const key = execFileSync(plan.command, plan.args, {
  • 删除本地文件
    dist/main.js:2804
    cleanup: () => fs.rmSync(workdir, {
  • 删除本地文件
    dist/main.js:2819
    cleanup: () => fs.rmSync(workdir, {
  • 执行外部命令来自配置/变量
    dist/main.js:2830
    const child = spawn(plan.command, plan.args, {
  • 执行外部命令固定命令
    dist/main.js:2964
    const found = harnessFromPsTable(childProcess.execFileSync("ps", ["-Ao", "pid=,ppid=,command="], {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 多引擎读图
  • 按次自选引擎
  • 纯文本模型读图

README

由 DeepSeek 最新模型翻译生成
dsh-modlens liustack/modlens 的增强分支(fork)——DeepSeek Harness(dsh)视觉插件,新增多引擎支持与「按次选择引擎」。 为纯文本大模型提供视觉能力:ModLens 把图片转成结构化 JSON 证据(OCR、版面、语义),让纯文本模型也能「看图」。本分支保留上游全部行为,并新增: - modlens_read_image 新增 provider 参数——单次调用指定视觉引擎(透传 -p )。 - 「主动询问用哪个引擎」——工具描述里指示模型:当配置了多个引擎且用户未指定时,先问用户用哪个。 - 豆包 / 火山方舟 Ark 接入配方——实测可用的 doubao-seed-2.1-turbo(走 Ark ark-coding-plan OpenAI 兼容端点),与 Gemini、Anthropic、Claude Code 并存。 为什么是 fork 上游 ModLens 在持续开发中。本分支承载 provider 透传与豆包/Ark 配方,直到它们合入上游。其余一切优先用上游:。
展开完整文档(README 剩余 1 节)
dsh-modlens

liustack/modlens 的增强分支(fork)——DeepSeek Harness(dsh)视觉插件,新增多引擎支持与「按次选择引擎」。

为纯文本大模型提供视觉能力:ModLens 把图片转成结构化 JSON 证据(OCR、版面、语义),让纯文本模型也能「看图」。本分支保留上游全部行为,并新增:

- modlens_read_image 新增 provider 参数——单次调用指定视觉引擎(透传 -p )。
- 「主动询问用哪个引擎」——工具描述里指示模型:当配置了多个引擎且用户未指定时,先问用户用哪个。
- 豆包 / 火山方舟 Ark 接入配方——实测可用的 doubao-seed-2.1-turbo(走 Ark ark-coding-plan OpenAI 兼容端点),与 Gemini、Anthropic、Claude Code 并存。

为什么是 fork

上游 ModLens 在持续开发中。本分支承载 provider 透传与豆包/Ark 配方,直到它们合入上游。其余一切优先用上游:。

安装(DeepSeek Harness)

npx -y @deepseek-ai/dsh plugin --profile web add dsh-modlens@3.16.6

重启 dsh,在模型选择器里找 (modlens vision) 条目和 modlens_read_image 工具。

发布前请把 dsh-modlens 和 替换成你自己的包名与 GitHub 组织。

配置引擎

配置在 ~/.modlens/config.json(与上游 modlens 共享)。用 modlens doctor 查看哪些引擎就绪。

Gemini(免费、快)

modlens config set gemini-api.apiKey # https://aistudio.google.com
modlens config set provider gemini-api

豆包 / 火山方舟 Ark(ark-coding-plan)

modlens config set openai.baseUrl https://ark.cn-beijing.volces.com/api/coding/v3
modlens config set openai.apiKey
modlens config set openai.model doubao-seed-2.1-turbo
可选:modlens config set provider openai

其他

Claude Code(claude-cli)、Anthropic(anthropic)、Antigravity(antigravity-cli)。完整配方见 skills/modlens/references/configure.md。

按次选择引擎

模型需要读图且配置了多个引擎时,会先问你用哪个,再带着 provider 参数调用 modlens_read_image:

provider: "gemini-api" | "openai"(豆包/Ark)| "anthropic" | "claude-cli" | "antigravity-cli"

省略 provider 则使用配置的默认引擎及其 failover 链。

验证

modlens doctor # 本地诊断,不消耗配额 modlens -i image.png # 端到端读图(消耗一次读图)

许可证

MIT。原作品 © 2026 Leon Liu (liustack);fork 改动 © 2026 。见 LICENSE。

上游:
预览分享卡片长什么样 ↓YZz-S/dsh-modlens
分享 · DeepSeek Harness Hub
YZz-S/dsh-modlens

让纯文本模型按次选引擎读取图片内容

这是你的仓库?认领条目

回到顶部