KouzakiUmi/dsh-model-refresh ↗★ 0

dsh-model-refresh

独立模型数据源与官方清单发现,基于证据规划 pi-ai 补缺、待确认与宽限移除;可恢复目录事务、内容与修订所有权校验,附 provider 设置及监控。 适合需要自主维护、更新和监控模型目录的进阶管理用户。

패키지
dsh-model-refresh
호환성
미검증
버전
0.7.2
라이선스
MIT
최근 업데이트
2026. 10. 5.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:KouzakiUmi/dsh-model-refresh

快速配置

首次 seed 可复制 config.example.json 为本地 config.json,或直接在设置页保存。运行时状态默认位于 ~/.dsh/model-refresh/state.json。真实凭据值只放环境变量或 DSH credentials 服务;配置里仅填写凭据名称。

{
  "intervalMinutes": 360,
  "routes": [
    {
      "route": "opencode-go",
      "enabled": false,
      "keep": [],
      "exclude": []
    }
  ]
}

配置与安全默认

首次使用默认不写安装目录;自动发现的 provider 默认停用。显式 seed route 或已有配置保留原启用/目录写入选择,不替用户扩大范围。

默认状态路径为 os.homedir()/.dsh/model-refresh/state.json,不再从插件安装路径猜用户目录。目录优先从真实 DSH 消费入口解析 pi-ai,取消本机硬编码 fallback;找不到时配置 DSH_PI_AI_DATA_DIR,无效显式覆盖拒绝退回其它安装。

环境变量:

变量用途
DSH_MODEL_REFRESH_STATE状态路径;默认产物输出在状态目录
DSH_MODEL_REFRESH_CONFIG首次种子配置路径
DSH_PI_AI_DATA_DIR正在被 DSH 使用的 pi-ai dist/providers/data

首次迁移会先把原始状态备份为 state.json.pre-v3-.bak;备份成功后才允许写 v3。若需要退回旧版,先停止 Host、回滚代码,再人工恢复对应旧状态备份,不能让 v0.5 直接读取 v3 状态(旧版会丢弃不认识的版本)。

已有 v2 状态迁移到 v3 时保留支持的 settings、provider 开关及排除/保留名单;旧版已移除的数据源配置不再使用。旧新增台账只有 ID,不能证明所有权:迁入 runtime.legacyProtected,不自动删除这些历史新增条目。旧删除备份只恢复缺失条目,不覆盖或制造跨协议重复 ID。旧版已经覆盖的原生元数据无法凭旧台账恢复,本版不假称能还原。

每 provider 官方配置

设置页高级配置或 settings.officialRoutes:

{
  "officialRoutes": {
    "kimi-coding": {
      "endpoint": "https://api.kimi.com/coding/v1/models",
      "apiKeyEnv": "KIMI_CODING_API_KEY",
      "auth": "bearer",
      "protocol": "anthropic-messages",
      "complete": false
    }
  }
}
  • endpoint 是完整清单 URL,baseUrl 是推理根 URL,不要混用;未设置时使用唯一目录端点。
  • 凭据从环境变量或 DSH credentials 服务解析,状态中只保存名称;不保存真实密钥。
  • auth:bearer(默认)、anthropic(x-api-key)、none(明确公开接口,不发送凭据)。带凭据的非 loopback 清单必须 HTTPS。
  • protocol 留空时,仅能继承唯一现有协议;多协议路由不凭名字猜。OpenAI SDK 不能证明使用 Responses。
  • contextWindow / maxTokens 是用户显式默认值,不是已测模型容量;可用于官方仅返回 ID 的补缺,界面提示此区别。
  • assumeChat 默认 false:容量和 ID 本身不证明聊天用途;没有明确类型元数据的官方新 ID 进入待确认。只有用户明确确认套餐未知 ID 的聊天用途时才允许 text-only 补缺;明确非聊天类型始终拒绝。
  • complete 默认 false,完整性未确认也可以使用正向发现,但不能删模型。HTTP Link、has_more、next_cursor 等分页迹象强制降级为部分清单;当前不自动追页。
  • null 禁用该 route 的官方请求;默认内置表包含 kimi-coding、zai-coding-cn、fireworks、together、Qwen token plan 三路、vercel-ai-gateway。其它 provider 可显式配置,不伪造全覆盖。Azure 的通用模型 ID 不等于 deployment ID,无法从通用数据库证明可用部署。
  • models.dev 只在 pi-ai 上游不可用且用户启用备选时读取;它不会覆盖 pi-ai 模型或提供推理可用性保证。

Web API:GET /plugins/dsh-model-refresh/status;POST .../refresh、.../config、.../route。POST 必须精确同源 Origin、loopback Host、application/json;64 KiB / 10 秒有界 body。配置使用 expectedRevision 乐观锁,避免不同页面覆盖草稿;轮询不覆盖未保存的表单。

每 provider 官方配置

设置页高级配置或 settings.officialRoutes:

{
  "officialRoutes": {
    "kimi-coding": {
      "endpoint": "https://api.kimi.com/coding/v1/models",
      "apiKeyEnv": "KIMI_CODING_API_KEY",
      "auth": "bearer",
      "protocol": "anthropic-messages",
      "complete": false
    }
  }
}
  • endpoint 是完整清单 URL,baseUrl 是推理根 URL,不要混用;未设置时使用唯一目录端点。
  • 凭据从环境变量或 DSH credentials 服务解析,状态中只保存名称;不保存真实密钥。
  • auth:bearer(默认)、anthropic(x-api-key)、none(明确公开接口,不发送凭据)。带凭据的非 loopback 清单必须 HTTPS。
  • protocol 留空时,仅能继承唯一现有协议;多协议路由不凭名字猜。OpenAI SDK 不能证明使用 Responses。
  • contextWindow / maxTokens 是用户显式默认值,不是已测模型容量;可用于官方仅返回 ID 的补缺,界面提示此区别。
  • assumeChat 默认 false:容量和 ID 本身不证明聊天用途;没有明确类型元数据的官方新 ID 进入待确认。只有用户明确确认套餐未知 ID 的聊天用途时才允许 text-only 补缺;明确非聊天类型始终拒绝。
  • complete 默认 false,完整性未确认也可以使用正向发现,但不能删模型。HTTP Link、has_more、next_cursor 等分页迹象强制降级为部分清单;当前不自动追页。
  • null 禁用该 route 的官方请求;默认内置表包含 kimi-coding、zai-coding-cn、fireworks、together、Qwen token plan 三路、vercel-ai-gateway。其它 provider 可显式配置,不伪造全覆盖。Azure 的通用模型 ID 不等于 deployment ID,无法从通用数据库证明可用部署。
  • models.dev 只在 pi-ai 上游不可用且用户启用备选时读取;它不会覆盖 pi-ai 模型或提供推理可用性保证。

Web API:GET /plugins/dsh-model-refresh/status;POST .../refresh、.../config、.../route。POST 必须精确同源 Origin、loopback Host、application/json;64 KiB / 10 秒有界 body。配置使用 expectedRevision 乐观锁,避免不同页面覆盖草稿;轮询不覆盖未保存的表单。