DeepSeek Harness DeepSeek Harness 插件目录

← 目录

vision-control

vision-control@0.1.4
loader vision-control

发布时间 更新时间

管理 llm-pi-ai 按模型的图片视觉开关;只写自有来源标记的配置,不覆盖用户声明。

给 Agent: Markdown · JSON · tarball

在已有插件市场的机器上安装

curl -fsSL https://addon.dshdo.com/install-plugin-market.sh | sh
# then in /plugin-market/ install vision-control and enable it

打开本机 /plugin-market/ 云端市场,安装该 id,再启用。安装只登记,启用才运行。

版本

文件

sha256
097cb0b4c5e448440278f0a3147a130f67fdc409b1bdedd3078dab27247cef8a
23861 bytes · package vision-control

README

vision-control

按模型管理 llm-pi-ai 图片视觉开关的插件(不动主程序、无 UI,纯配置平面)。

版本:0.1.3

作用

通过 dsh-settings 命名空间写入 llm-pi-ai 的用户配置,做两件事:

  • 默认全开:当一条路由既没有用户声明、也没有组合 base 层声明 defaultInput

时,写入路由级 defaultInput: [text, image]。已声明的 defaultInput(哪怕 [text])一律不改写。

  • 手动关闭:disabled 里的模型,对该模型写入 input: [text] 关闭视觉;

从 disabled 移除后,只撤销本插件自己写入的那一条。

所有权与撤销规则(0.1.1 起)

本插件只写自己"拥有"的字段,并用确定性的来源标记记录每次写入:

  • 关闭一个手声明路由(该路由配置里有 models 列表)的模型时,仅当该模型条目

没有声明 input,才写入 input: [text],并同时写入来源标记 _visionControl: { input: true }。

  • 关闭一个 catalog 路由(无 models,由已安装 pi-ai 目录提供)的模型时,仅当

权威主机模型目录确实描述该模型的该路由,才写入 modelOverrides.<id>: { input: [text], _visionControl: { input: true } }。

  • 写入路由级 defaultInput: [text, image] 时,同时在路由对象上写来源标记

_visionControl: { defaultInput: true }。

  • 解除关闭、或把 defaultImage 设为 false 时,只删除带本插件标记的写入。

任何没有标记的 input / defaultInput —— 包括用户手写的 input: [text] —— 一律视为用户所有,绝不自动删除或改写。

  • 若用户在带标记的 input 或路由 defaultInput 上又手动改过值,本插件会放弃该

条目的所有权(删除标记、保留用户的值),不再自动撤销它。

  • 仅存在于解析层、用户从未声明过的路由,不会为其凭空生成用户配置。
  • 幂等:重复加载、重复 reconcile 无副作用;配置校验失败在加载时报错,不静默忽略。

Catalog 路由关闭的校验来源

关闭 catalog 路由的模型前,本插件通过运行时的 llm 服务(ctx.get('llm'))核对 权威目录:该服务的适配器为这条路由物化的模型集合,正是 llm-pi-ai 会接受 modelOverrides 条目的集合。无法核对(无 llm 服务、该路由没有适配器、或目录 查询出错)时,关闭会被明确拒绝并记录警告——绝不静默当作已生效,避免模型在 视觉上看起来已关、实际仍开着。适配器注册通常晚于本插件挂载或晚于设置变更,因此 本插件监听 llm/adapters-updated:一次被拒绝的 catalog 关闭会在适配器就绪后自动 重试,不会一直停在未生效状态。

0.1.3 纯打包版说明

0.1.3 是纯打包版:插件代码与行为与 0.1.2 完全一致。0.1.2 的存档意外携带了一个 AppleDouble 伴生文件(._cordis.patch.yml),由平台 tar 工具从本地扩展属性生成; 0.1.3 改用受维护的 node-tar 写入器(portable)构建,绝不写入 macOS 文件系统元数据, 因此存档只包含预期载荷。0.1.2 发布及其公共存档保持为不可变历史。

0.1.2 修复版说明

0.1.2 修复了一个真实框架下的销毁缺陷:apply 原本是带 prototype 的 function,Cordis 的 fiber 运行器会把它当作构造函数 new 出来,于是它返回的 异步 dispose 被丢弃——「dispose 会等待进行中的 settings.replace」这一保证在 由真实 Loader 卸载插件时从未真正注册。apply 现改为箭头函数 (export const apply = …):Cordis 会直接调用它,并把返回的 dispose 收集、等待。 其余行为与 0.1.1 完全一致,0.1.1 起的所有权/撤销规则与下方迁移说明均继续适用。 该回归由真实 Cordis/Loader 组合夹具覆盖:测试让一次 settings.replace 停留在 飞行中,证明 fiber dispose 会等待它落盘,且销毁后不再有任何写入。

0.1.0 → 0.1.1 迁移注意

0.1.0 的自动同步会删除用户手写的 input: [text] / modelOverrides,且写入的 值不带来源标记(包括路由级 defaultInput)。升级后无法还原哪些值原本是用户 手写的:无标记的现有值都会按"用户所有"处理、永不被本插件自动移除(即使把 defaultImage 设为 false 也不会撤销 0.1.0 写入的路由 defaultInput)。若 0.1.0 曾删掉你的显式声明,请手动补回(例如把某模型的 input 重新写成 ['text'])。

配置

在插件行 config 中(手动 cordis.patch.yml 或你的配置来源):

- insert:
    - id: vision-control
      name: vision-control
      config:
        defaultImage: true                      # 默认全开(缺省 true)
        disabled:                               # 手动关闭(可选)
          seawork: [ gpt-5.6-terra ]
          grok: [ grok-imagine ]
  • defaultImage:布尔,缺省 true。设为 false 时不写路由级默认值,且撤销

之前由本插件写入、仍带来源标记的路由 defaultInput(恢复 schema 缺省的 ['text']);用户声明的或 0.1.0 遗留的无标记值不受影响。

  • disabled:模型 id 数组(作用于所有路由),或按路由分组的映射,支持

* 通配路由:

  config:
    disabled:
      seawork: [ gpt-5.6-terra ]
      '*': [ shared-model ]
  

行为边界

  • 只写 llm-pi-ai 命名空间的用户配置段;不读、不写其它命名空间,不触碰主程序。
  • 关闭写入只作用于手声明路由的模型条目或 catalog 路由的 modelOverrides,

绝不与 models 列表并写同一模型的 modelOverrides(llm-pi-ai 会拒绝该组合)。

  • llm-deepseek 走独立适配器,不在本插件范围内。
  • 本插件不做任何视觉内容闸门;它只保证 llm-pi-ai 的模型能力声明(input /

defaultInput)与你的配置意图一致。