KouzakiUmi/dsh-model-refresh ↗★ 0
dsh-model-refresh
提供独立模型数据源发现、补缺与监控功能 适合需要自主维护、更新和监控模型目录的进阶管理用户。
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:KouzakiUmi/dsh-model-refresh說明文件
閱讀完整 README ↗快速配置
首次 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 乐观锁,避免不同页面覆盖草稿;轮询不覆盖未保存的表单。