npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-model-catalog-sync

v0.3.9-beta.0

Published

Synchronize provider model metadata into the native DSH llm-pi-ai catalog

Readme

dsh-model-catalog-sync

English | 中文

dsh-model-catalog-sync 是独立的 DeepSeek Harness Web 插件。它把打包的单密钥提供方目录安装到 DSH 原生提供方所有权下,也可以把提供方模型列表同步到原生 llm-pi-ai 目录;原生“模型”页面、模型选择器和后续会话请求直接使用安装/同步结果,不需要修改 DSH 源码或重启。

功能

  • 浏览、搜索、筛选、预览并安装打包的 Models.dev/OpenCode 派生目录中只需一个 API 密钥即可使用的提供方。
  • 对已有 openrouter 等提供方在其原生 settings 路径原位替换,绝不创建重复路由或插件私有可运行提供方。
  • 只通过 DSH Credentials 保存 typed key;密钥不会进入设置、状态、快照、RPC 响应、日志或 Client store。
  • 同时管理多个明确配置的 llm-pi-ai provider route。
  • 在替换预览弹窗中点击“刷新”按需获取提供方实时模型列表;不会自动获取任何模型。
  • 有密钥或无密钥都能刷新:弹窗里输入的密钥只用于这一次获取;继承的凭据没有值时请求直接不带 Authorization 头发出,公开列表仍然可以加载。
  • 默认解析 OpenAI-compatible GET /models,也能用 RFC 6901 JSON Pointer 适配其他 JSON 返回。
  • 接口缺失的元数据由 provider 默认值、带条件的模型 Glob 规则和精确模型映射补齐。
  • 向原生模型写入 contextWindow、maxTokens、input、reasoningEfforts、compat.thinkingFormat 和 compat.supportsReasoningEffort。
  • 提供方不声明图片或推理能力时,可在“模型同步”页面强制开启。
  • 按模型、按字段记录所有权,保护原生页面中的人工修改和人工删除标记。
  • 每次写入前保存快照,提供有界历史、进程中断恢复、版本预览和无需重启的回退。
  • 每次操作通过 DSH 凭据引用解析密钥;真实密钥不会进入设置、浏览器 RPC、日志或快照。

要求与安装

需要带 Settings、Storage Domain、Connection 和原生 Models 页面的 DSH Web profile,以及 Node.js ^22.19.0 或 >=24.0.0。

在插件目录构建并打包:

pnpm install --ignore-workspace
pnpm run build
pnpm pack --pack-destination dist

把 tarball 安装到 Web profile:

dsh plugin --profile web add ./dist/dsh-model-catalog-sync-0.3.9.tgz
dsh --profile web --dump-config

打开 DSH 设置中的“模型同步”。原生“模型”页面继续保留,并展示本插件写入的模型目录。

打包的单密钥提供方目录

插件附带一份由公开 Models.dev/OpenCode 元数据生成的静态提供方/模型目录。“模型同步”页面提供可搜索的目录,只列出可用一个 API 密钥使用的提供方。每一行都有安全的原生替换预览、只写 API 密钥输入框,以及对已配置提供方的显式覆盖确认。预览弹窗预填一个可编辑的模型列表 URL(实际生效的 /models 地址),"全选/清空"旁的"刷新"按钮用它抓取提供方自己的列表——输入了密钥就用刚输入的密钥,否则用已存凭据或不带凭据——刷新后的模型列表会取代打包快照用于安装,自定义 URL 会写入该提供方的同步配置。安装提供方会在其现有 settings 路径写入完整 DSH 原生 profile,并替换插件同步配置、所有权、tombstone 和人工覆盖。之后的普通同步仍通过字段级所有权保护人工模型编辑。

只使用 DSH 原生所有者:广泛的 OpenAI 兼容目录使用 llm-pi-ai,官方 deepseek-official 路由使用 llm-deepseek。运行时不会抓取 Models.dev、运行 OpenCode、加载 AI SDK 适配器或创建第二个 provider adapter。

配置与数据优先级

在“模型同步”页面选择需要管理的原生 provider,填写模型列表接口、认证引用、字段指针、规则映射、精确模型映射和快照数量。完整 YAML 示例见 English README。

source.endpoint 默认使用原生 provider 明确配置的 baseURL 加 /models。pi-ai 内置目录隐藏的 endpoint 不属于公开 API,因此原生 profile 没有 baseURL 时必须填写 source.endpoint。

最终字段优先级是:人工覆盖、提供方返回、精确模型映射、按顺序匹配的规则、provider 默认值、原生 llm-pi-ai 继承。插件无法确定的字段会省略,让原生安装目录继续回答。

inherit-provider 使用原生 apiKeyEnv 并以 Bearer 方式发送;引用的凭据没有值时请求不带 Authorization 头继续发出,因此无密钥也能刷新公开列表。credential 使用独立凭据引用、请求头和 scheme;none 不发送凭据。额外请求头中的密钥必须使用凭据引用,不能把 Authorization 或 API key 作为网页可读的 literal。

与原生“模型”页面的关系

“模型同步”负责手动刷新、高级能力、快照和回退。“保存并应用”由 Host 先保存快照,再通过带 revision 的 ctx.settings.mutate() 写入 llm-pi-ai.providers.<provider>.models。原生“模型”页面立即刷新,llm-pi-ai 在下一次请求使用新目录。

原生字段与插件最后写入值不同时,该字段自动转为人工所有,后续同步不覆盖。人工删除的插件模型会形成 tombstone,只有点击“恢复插件管理”才重新加入。提供方不再返回的纯自动模型按成功缺失次数删除;存在人工字段的模型保留并标记为 not-returned,由用户明确删除或保留。

快照、回退与安全

完整安装会同时捕获安装前的原生 profile 和插件同步 profile;普通同步快照只包含当前 provider 的原生用户层 models 路径和插件所有权状态,不包含凭据或其他 provider 字段。Storage Domain 先持久化快照和 pending checksum,Settings 再提交原生配置。启动恢复只接受“提交前”或“提交后”两个已知 checksum;第三种值会阻止自动写入并要求人工检查。

提供方请求拒绝重定向,并限制超时、响应字节、模型数量、JSON 深度、节点数、字符串和数字。网络错误、非法 JSON、重复模型、配置校验失败、revision 冲突、原生 schema 拒绝、Storage Domain 错误和恢复冲突都不会改变最后一次成功的原生目录。

插件不会直接写 settings.yaml 或快照文件。普通同步只管理自身配置中列出的 provider,并且只修改这些 provider 的原生 models 路径;显式目录安装会替换完整原生 profile 路径和插件同步 profile。配置 RPC 仅允许 loopback 页面调用。

Model Experience

同步后的模型能力

模型看到的内容

插件不增加任何提示词。模型能否接收图片、提供哪些推理等级以及发送何种兼容参数,由同步后的原生元数据决定。

Token 影响

contextWindow 影响请求准入限制;明确配置的 maxTokens 会成为原生适配器的输出默认值。插件本身不增加 Token。

KV Cache 影响

目录同步不改变请求前缀。切换模型、推理等级、图片附件或 provider 序列化方式可能通过原生适配器影响缓存复用。

已知限制

  • 提供方发现是一次 JSON HTTP GET;OAuth 登录和刷新仍由提供方负责,但可以引用已有 token。
  • 插件不会通过真实模型请求验证能力。强制声明的图片或推理能力仍可能被提供方拒绝。
  • 原生 Models 页面没有子 slot,因此同步控件位于独立“模型同步”页面;两页共享同一原生目录。