DeepSeek Harness Hub
← 返回列表

liutian11451-png/dsh-plugin-model-config

DeepSeek 客户端兼容 / 相关生态spec-screened在 GitHub 查看 ↗
未验证

AI 生成代码。 本包由 AI 智能体DeepSeek Harness,模型…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档

DeepSeek Harness Web 端“设置 > 模型”页面的完整模型配置编辑器:部署的模型配置 schema 所声明的每一个字段。

综合分
29.5
GitHub 分
29.5
用户评分
★ Stars
0
周下载量
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/liutian11451-png/dsh-plugin-model-config.git
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-plugin-model-config

AI 生成代码。 本包由 AI 智能体(DeepSeek Harness,模型 deepseek-flash)在人类主导的会话中编写,并由运行它的人发布。安装前请先审阅代码,尤其在你允许它的 prepare 脚本于自己机器上执行之前。哪些验证过、哪些没有,见 AI 生成声明。

DeepSeek Harness Web 界面设置 → 模型页的模型配置控件:在每个提供方自己的卡片里,一项设置一行,直接可改。

它做什么

官方那张提供方卡片已经显示了路由、凭据和模型目录。它没有任何控件的是提供方配置的其余部分 —— 以 DeepSeek 适配器为例,就是思考模式、推理强度、上下文长度与输出上限的默认值、四个图片预算、四个文件与配额上限,以及各个超时。

本插件把这些设置以行的形式加进提供方自己的卡片:每行左边是设置名,右边是它的控件,读起来就像它所处的那张设置表单。

| schema 节点 | 控件 |
|---|---|
| number | 数字框(带 schema 的 min、max、step),例如上下文长度 |
| boolean | 是 / 否 开关 |
| 字面量 union | 下拉选择 |
| string | 文本框(凭据引用会如此标注) |

结构性取值留给本来就拥有它的那张卡片:模型目录、嵌套的重试策略,以及 schema 声明为 dict 或未建模节点的东西,都是文档形态的配置而非设置行,而模型目录官方卡片本来就在编辑。

设置清单没有任何硬编码。 命名空间来自部署自己的 llm.listConfigurableProviders(),设置来自各命名空间的序列化 schema,所以某个适配器新增一项设置、或者接入一个本插件从未见过的适配器,都会自动出现一行,本插件无需改动。

安装

dsh plugin --profile web add dsh-plugin-model-config

如果你用的 profile 不叫 web,换成你自己的名字。这个包声明了 dsh.bundle,所以 dsh plugin 会自动把它的 patch 层注册进 profile。重启 dsh web 并刷新页面:构建载荷是在启动时组合的,所以第一次光刷新不够。

从 GitHub 检出安装

dsh plugin --profile web add github:liutian11451-png/dsh-plugin-model-config

Git 安装拉的是源码而不是构建产物,所以这个包带了一个 prepare 脚本,用普通 tsdown 从 src/ 构建 lib/ —— 不需要同级仓库,也不做类型检查。pnpm ≥10 会拒绝执行 Git 依赖的 prepare,直到你显式允许,所以第一次 add 会以 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 失败,并打印出该加的确切 key。Git 安装的 key 指向解析出来的 tarball,而不是光秃秃的包名:

allowBuilds:
dsh-plugin-model-config@https://codeload.github.com/liutian11451-png/dsh-plugin-model-config/tar.gz/: true

把 pnpm 打印出的那一行原样抄进去(它带着本次安装解析到的提交号),然后重新 add。注意:这条允许等于「准许在安装时于你机器上执行这个包的代码」,要把它当成这个意思看待。请固定到具体提交(github:liutian11451-png/dsh-plugin-model-config#),免得以后一次 push 就悄悄换掉实际运行的代码。

一个换装时的坑:如果这个插件之前是从本地目录装的,请先移除。profile 的 node_modules 里残留的链接会和随后进来的 Git 安装冲突,pnpm 会在导入阶段以 EPERM 软链错误失败。

如果不想让使用者做这个允许,就发 npm,或者用 pnpm pack 出 tarball —— 这两种都不需要任何构建权限。

前提

必须挂载设置提供方(@deepseek-ai/dsh-settings-file 属于标准 preset —— 正是它让 settings.describe 有东西可答)。如果部署的设置提供方是只读的,控件会渲染为禁用并明确说明。

一次写入是怎么走的

每行读取命名空间的已解析值(schema 默认值 → 组合 base → 用户层)用于显示,而只写用户层,一次一个路径,经由 settings.mutate(ns, ops, expectedRevision)。某行被显示为「已覆盖」,当且仅当原始用户层带有该路径 —— 判据是存在性而非相等,这是 harness 自己的规则 —— 所以把一项设置恢复默认是一次 unset,绝不是把默认值写回去。写入若输掉版本竞争会被报告,而不是直接覆盖。

目录结构

package.json                              # dsh.bundle + dsh.client 清单
cordis.patch.yml                          # 插入本包的加载器行
src/index.ts                              # 根半(空实现)
src/client/index.ts                       # 浏览器半:每个命名空间一条 keyed 座位注册
src/client/fields.ts                      # schema 遍历器
src/client/ProviderRows.tsx               # 设置行与写入管道
src/client/locales.ts                     # 中英字典,含设置名
tsdown.config.ts                          # 消费侧构建
smoke.mjs                                 # 加载器契约冒烟测试

根半是刻意留空的。harness 的客户端模块注册表是遍历宿主 Loader 的行来发现 dsh.client 包的,所以这个包需要一行已挂载的行作为载体 —— 那行的全部作用就是这个。

插件注册进 settings.models.provider-card —— 「模型」节正是为此留出的座位:某张卡片的适配器扩展区,由拥有该命名空间的那张卡分派。这个座位是 keyed 且精确匹配(options.key 对应卡片的 entryKey),所以插件为每个可配置命名空间各注册一条 —— 只注册一条的话,任何地方都不会渲染。没有修改 DeepSeek Harness 仓库的任何文件。

开发

pnpm install
pnpm build       # 产出 lib/index.js 和 lib/client.js
pnpm typecheck
pnpm test        # 遍历器契约、设置行、字典覆盖
node smoke.mjs   # 用桩 shell 求值构建出的浏览器半

已知限制

- 它改的是活的设置文档,不是你能 diff 的文件。 改动落进 harness 的设置存储,和官方控件写的是同一个。没有逐次改动预览,除了恢复默认外也没有撤销。
- 结构性取值不是行。 模型目录、嵌套的重试策略、headers/queryParams 映射,以及任何未建模的节点,要么由本来就拥有它的卡片处理(模型目录),要么根本不在这里出现。一行代表的是一个用单个控件就能定的标量;文档形态的取值不是。
- 字典里没有条目的取值会显示 schema 原始 key。 官方适配器声明的每一项设置都有名字;第三方适配器新增的设置会先以原始 key 呈现,直到字典补上 —— 而在本仓库里,fixture 一加新键测试就会红。
- dict 形态的提供方家族每个 profile 一条注册。 llm-pi-ai 把 profile 嵌在 providers 下;每个 profile 被切出来给自己的卡片,出现哪些设置由该 profile 自己的 schema 决定。
- secret 角色设置不往返。 role('secret') 的值从不上线,所以任何行都无法显示或设置它;请用适配器文档指定的凭据入口。
- 仅 Web profile —— 声明了 platform: web;没有终端界面上的等价物。

AI 生成声明

本包由 AI 智能体编写,不是人类逐字敲出来的。它由 DeepSeek Harness 驱动 deepseek-flash 模型,在其人类发布者(@liutian11451-png)主导的会话中于 2026-09-12 产出。人类负责选择功能、确认方案并反馈实际表现;智能体通过阅读 harness 源码确立设置、座位与 schema 契约,然后编写本仓库中的源码、测试、构建配置与文档。同一份声明也以机器可读形式记录在 package.json 的 aiDisclosure 字段里。

请据此对待这份代码:安装前先读一遍;Git 安装向你索要的 allowBuilds 许可,请当成「准许在你自己机器上运行未经人工审阅的生成代码」来对待。

已验证的部分

- pnpm test —— 34 项测试:schema 遍历器对每种节点类型及两种信封形态的映射、行过滤器、设置行本身(按 schema 类型给对的控件、已解析值、覆盖判定、恢复默认)、写入路径(op 形状、版本号、嵌套 profile 路径、冲突处理),以及对照 schema fixture 的字典覆盖
- pnpm typecheck —— 干净
- node smoke.mjs —— 针对构建产物的加载器契约断言,包括「apply 为每个可配置命名空间各注册一条 keyed 的 settings.models.provider-card 条目」—— 这正是页面静默依赖的那条接线
- 本仓库的 GitHub Actions 工作流在每次 push 时跑上述四步
- 页面被无头驱动并读回(node drive-ui.mjs :用 Edge 的 DevTools 协议,零依赖)。在真实部署上确认了:块渲染在 DeepSeek 卡片内部 —— 模型配置 标题、十六项编号设置各显示其已解析值、thinking / reasoningEffort 为闭合下拉 —— 并且改动其中一个数字后确实写进了设置文档。

这条路径找出并修掉了三个缺陷:

1. remote.settings 与 remote.llm 被读取却没有在 inject 里声明,导致整条 loader entry 加载失败(cannot get property "remote.settings" without inject)。
2. 设置 schema 是引用表形态({ uid, refs }),嵌套 schema 是整数 id;遍历器把 id 当节点读,于是找不到任何字段、什么都不渲染。现在两种形态都是 fixture,并有测试断言二者结果一致。
3. union 成员的字面量可能在 value,也可能在 meta.default(取决于该 union 的写法);只读前者会把一个闭合集合变成 JSON 编辑器。

未验证的部分

- 没有人工逐行审阅。 发布者在运行中的应用里验证了行为,没有验证源码。
- 没有安全审计。 除测试覆盖和上述行为描述之外,没有对恶意或疏忽行为做过检查。
- 只有一台机器、一个平台。 开发、测试与实机使用都发生在 Windows + Node 24 + pnpm 11 上。CI 工作流跑在 Linux 上,所以构建在两个平台上被检验过,但界面只在一个平台上被看过。
- 没有干净机器的安装测试。 发布机器的 profile 里本来就有插件安装;在一个从未装过它的 profile 上安装没有被检验。
- 布尔开关在实测的适配器上没有对应字段。 本部署的提供方 schema 都没有声明布尔值,所以「是/否」控件只有组件测试覆盖,没有在渲染出的页面上被看到。
- llm-pi-ai 那种 dict 形态是从设置文档推断的。 它的切片路径在组件层面有测试覆盖,但那张卡片没有在实机上看过。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(liutian11451-png)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群