dsh-luna-vision-bridge:为 DSH 添加原生图片输入支持

前言

当前 DSH 在原生输入框中对图片输入存在限制(主要依赖 text-only admission)。dsh-luna-vision-bridge 是一个纯 Host 侧的 DSH LLM adapter。它注册了一个新的 luna-vision-bridge provider,使得原生 DSH 输入框可以继续使用粘贴图片、拖放、缩略图、删除、Enter 和发送按钮。图片进入 DSH 原生 attachment store 后,由 Codex Luna 转成文字,再交给任意一个已注册的纯文本模型(下游 target,可配置多个并在模型选择器切换)。

核心功能

  • 纯 Host 侧 DSH LLM adapter。
  • 注册新的 luna-vision-bridge provider。
  • 支持原生图片输入(粘贴、拖放等)。
  • 使用 Codex Luna 转写图片为文字。
  • 将图片转写文本交给下游纯文本模型。
  • 提供 Web 设置界面配置下游模型。

工作原理

插件通过拦截 DSH 的 addImages 和 submit 流程,在 Host 层完成图片处理。

DSH 原生 addImages / submit
        │
        ▼
DSH attachment store(校验并持久化原图)
        │
        ▼
luna-vision-bridge adapter
  1. 读取经过校验的附件
  2. 写入 0600 临时文件
  3. 调用插件内置 scripts/read-image-luna.sh
  4. 脚本启动 codex exec --json / gpt-5.6-luna
  5. 删除临时文件
  6. 将图片块替换为带安全边界的识图文本
        │
        ▼
target provider / target model(任意纯文本下游,按所选模型路由)

前置条件

  • 每个下游 target 的 provider 已在 DSH 注册且纯文本可用(如 deepseek-official)。
  • codex CLI 可以从启动 DSH 的 Host 环境执行,并已完成认证。

安装

插件已发布到 npm。

dsh plugin add --profile web @ycp424c/dsh-luna-vision-bridge

插件包内带有 cordis.patch.yml bundle。安装后,在模型选择器会出现 Luna Vision Bridge provider。若当前 DSH 版本未自动挂载外部 bundle,可将包名追加到 ~/.dsh/profiles/web/cordis.patch.yml 的 bundles 中,并重启 dsh web。

配置

插件提供 Web 界面和配置文件两种配置方式。

Web 界面(推荐)

打开 Web 界面的 设置 → “Luna Vision Bridge”,无需编辑配置文件。

  1. 表单预填一行默认组合(未配置时默认 DeepSeek / DeepSeek-V4-Flash)。
  2. 编辑配置项:
    - Provider 显示名:桥接 provider 在模型选择器里的显示名,默认 Luna Vision Bridge。
    - 下游模型:一行一个组合,包含 provider、model、显示名(可选)。
    - 桥接模型 id(可选):默认 <provider>-<model>,必须互不相同。
  3. 点击保存,模型选择器立即出现新组合。

配置文件方式

所有字段都有默认值;零配置即得到单个 DeepSeek 下游。

在 ~/.dsh/profiles/web/cordis.patch.yml 中配置:

- id: luna-vision-bridge
  name: '@ycp424c/dsh-luna-vision-bridge'
  inject: [llm, attachments]
  config:
    providerName: Luna Vision Bridge
    targets:
      - provider: deepseek-official
        model: deepseek-v4-flash
        name: DeepSeek V4 Flash + Luna
        bridgeModel: deepseek-v4-flash

全局字段配置示例:

    # Luna 转写与缓存(全局):
    # 默认自动解析为插件包内的 scripts/read-image-luna.sh;通常无需配置
    codexCommand: codex
    lunaModel: gpt-5.6-luna
    timeoutMs: 180000
    cacheDescriptions: true
    cacheDir: ~/.dsh/cache/luna-vision-bridge
    cacheNamespace: v1

注意事项与限制

  • 临时方案:这是为当前 DSH 图片输入限制准备的临时兼容方案,不是建议长期依赖的正式架构。当 DSH 官方提供原生读图能力时,应优先迁移并停用本插件。
  • 转写端适配:转写端只适配 Codex CLI 和 gpt-5.6-luna;下游可以是任意纯文本 provider,但本插件不是通用视觉 provider 框架。
  • 安全性:临时文件权限为 0600/0700,识图结束后立即删除。原图仍由 DSH 原生 attachment store 管理。同一附件与提示词使用 content-addressed cache。
  • 依赖:依赖 Host 环境中的 codex CLI。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜