@zhz8888/dsh-radeon-cloud-patcher 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -30
- package/package.json +2 -2
- package/src/ownership.js +5 -2
package/README.md
CHANGED
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
命令行执行
|
|
31
31
|
`dsh plugin --profile <profile> add @zhz8888/dsh-radeon-cloud-patcher`。
|
|
32
32
|
装不上(pnpm 报 404)就改用[安装](#安装)里的方式三,从源码装同一个包。
|
|
33
|
-
2. **重启 DSH** —— 定义写在补丁层的 config
|
|
34
|
-
|
|
33
|
+
2. **重启 DSH** —— 定义写在补丁层的 config 行里,插件管理器对这类变更只会给出
|
|
34
|
+
`restart-required`,不会在运行中生效。重启后 provider 就位,没有其它后置步骤。
|
|
35
35
|
3. **填密钥** —— 左下角「账号菜单 → 设置 → 模型」,找到 **Radeon Cloud** 一行,
|
|
36
36
|
点「编辑」,在「API 密钥」里粘贴密钥,点「保存」。
|
|
37
37
|
|
|
@@ -172,8 +172,9 @@ printf 'registry=https://registry.npmmirror.com\n' >> ~/.dsh/profiles/<profile>/
|
|
|
172
172
|
dsh plugin --profile <profile> add @zhz8888/dsh-radeon-cloud-patcher@<版本>
|
|
173
173
|
```
|
|
174
174
|
|
|
175
|
-
> 本包的 tarball
|
|
176
|
-
>
|
|
175
|
+
> 本包的 tarball 里只有插件自己的源码、定义与脚本(不含 `test/` 与 `docs/`),
|
|
176
|
+
> **没有安装期构建脚本**,因此换源、离线镜像、内网私服都不会碰到 pnpm 的
|
|
177
|
+
> `allowBuilds` 授权那一步。
|
|
177
178
|
|
|
178
179
|
### 方式三:从源码 / GitHub 安装
|
|
179
180
|
|
|
@@ -281,7 +282,7 @@ RADEON_CLOUD_API_KEY=rc-你的密钥 dsh --profile <profile>
|
|
|
281
282
|
|
|
282
283
|
对话输入框下方点模型选择器 → 选 Radeon Cloud 的模型 → 再选「推理等级」,
|
|
283
284
|
那就是思考档位。档位按模型逐个声明(见[可用模型](#可用模型)):
|
|
284
|
-
GLM
|
|
285
|
+
GLM 不接受 `none`,因此没有关闭档位;`MiniCPM5-2B` 不是推理模型,
|
|
285
286
|
不会出现档位下拉。选了服务端不接受的档位是**硬失败**(400 / 422),不会静默降级。
|
|
286
287
|
|
|
287
288
|
### 3. 图片输入
|
|
@@ -297,7 +298,7 @@ dsh plugin --profile <profile> remove @zhz8888/dsh-radeon-cloud-patcher #
|
|
|
297
298
|
```
|
|
298
299
|
|
|
299
300
|
升级不需要额外动作:定义由插件层声明,装上新版本重启即生效
|
|
300
|
-
|
|
301
|
+
(在市场里升级同样要重启,原因与安装一致)。
|
|
301
302
|
**卸载即删除供应商**——插件层消失,provider 与设置页那一行一起消失。
|
|
302
303
|
|
|
303
304
|
> 例外:如果你曾用 `pnpm install:profile` 把定义合并进 profile(见[归属与删除](#归属与删除)),
|
|
@@ -336,7 +337,7 @@ dsh plugin --profile <profile> remove @zhz8888/dsh-radeon-cloud-patcher #
|
|
|
336
337
|
**本 provider 那一行**的标签隐藏掉:
|
|
337
338
|
|
|
338
339
|
```css
|
|
339
|
-
li:has(button[aria-label*="(radeon-cloud)"]) span[class*="rowTag"] { display: none }
|
|
340
|
+
li:has(button[aria-label*="(radeon-cloud)"]) span[class*="rowTag"] { display: none !important }
|
|
340
341
|
```
|
|
341
342
|
|
|
342
343
|
代价说清楚:它依赖 DSH 的 DOM 结构与类名片段,DSH 改版后可能静默失效——
|
|
@@ -354,6 +355,7 @@ DSH 的非 insert 补丁是**整体替换**:`llm-pi-ai` 的 config 只要在 p
|
|
|
354
355
|
| profile 里有一份**与本插件一致**的同 id 声明 | 放行,并提示它会在卸载后残留(通常是你在设置页保存过一次、被物化出的副本) |
|
|
355
356
|
| profile 里有一份**与之不一致**的同 id 声明 | **启动失败**:报「provider id 冲突」,并指名第一处差异字段 |
|
|
356
357
|
| profile 给 `llm-pi-ai` 写了 config 却没有本 provider | **启动失败**:报「定义未生效」,并打印可直接执行的合并命令 |
|
|
358
|
+
| 那一层的 config 是 `!!js` 表达式,或本次运行读不到 profile 目录 | 跳过判定并告警——静态判断不了,不等于失败;真正生效的是哪一份以 `dsh --profile <profile> --dump-config` 为准 |
|
|
357
359
|
|
|
358
360
|
后两种是**失败 + 原因**,而不是静默接管或静默消失——这是本项目的取舍:id 冲突要响亮。
|
|
359
361
|
处置方式(按键合并、`--force`、输出示例)见[已知限制](#6-与用户自有-provider-共存)。
|
|
@@ -385,7 +387,7 @@ dsh-radeon-cloud-patcher/
|
|
|
385
387
|
│
|
|
386
388
|
├── src/ 插件实现(薄壳,不含 provider 逻辑)
|
|
387
389
|
│ ├── index.js 插件入口:启动校验、所有权判定、收尾核验
|
|
388
|
-
│ ├── ownership.js
|
|
390
|
+
│ ├── ownership.js 所有权判定的纯函数(四种归属结局 + dynamic 哨兵、差异定位)
|
|
389
391
|
│ ├── merge.js 键级合并的纯函数(补救路径使用)
|
|
390
392
|
│ ├── patch-text.js 文本级合并,保留用户注释与格式
|
|
391
393
|
│ ├── validate.js 定义的结构校验
|
|
@@ -398,24 +400,14 @@ dsh-radeon-cloud-patcher/
|
|
|
398
400
|
│ ├── probe-efforts.mjs 实测逐模型 reasoning_effort 档位表
|
|
399
401
|
│ └── radeon-api.sh API 调用助手(密钥取自环境变量或凭据存储)
|
|
400
402
|
│
|
|
401
|
-
├── test/
|
|
402
|
-
│ ├──
|
|
403
|
-
│
|
|
404
|
-
│ ├── ownership.test.mjs 四种所有权结局与差异定位
|
|
405
|
-
│ ├── apply-guard.test.mjs 启动看护:放行、或失败并说明原因
|
|
406
|
-
│ ├── patch-sync.test.mjs 补丁与定义真源一致、结构符合「无删除按钮」
|
|
407
|
-
│ ├── client-patch.test.mjs 客户端补丁注入的规则
|
|
403
|
+
├── test/ 离线测试(自研 runner,无测试框架)
|
|
404
|
+
│ ├── *.test.mjs 清单不变式、合并语义、文本级编辑、
|
|
405
|
+
│ │ 所有权判定、启动看护、补丁与客户端一致性
|
|
408
406
|
│ ├── verify-reasoning.mjs 思考文本取回的回归测试
|
|
409
|
-
│ └── fixtures/
|
|
410
|
-
│ └── stream-reasoning.sse 实测抓取的真实流
|
|
407
|
+
│ └── fixtures/stream-reasoning.sse 实测抓取的真实流
|
|
411
408
|
│
|
|
412
409
|
└── docs/ 技术文档
|
|
413
|
-
|
|
414
|
-
├── feasibility-assessment.md 可行性评估与线格式差异矩阵
|
|
415
|
-
├── implementation-plan.md 实施计划与检查点结论
|
|
416
|
-
├── live-verification.md 真机联调实测记录
|
|
417
|
-
├── reference-commandcode-provider.md 第三方 provider 插件参考实现分析
|
|
418
|
-
└── market-submission.md 插件市场投稿说明
|
|
410
|
+
└── market-submission.md 插件市场投稿与 npm 发布说明
|
|
419
411
|
```
|
|
420
412
|
|
|
421
413
|
> 插件壳只做四件事:**分发**(npm 包,可被插件市场安装)、**声明**(provider 定义写在
|
|
@@ -431,7 +423,7 @@ dsh-radeon-cloud-patcher/
|
|
|
431
423
|
# 全量测试(合并语义、所有权判定、启动看护、补丁一致性、思考字段取回)
|
|
432
424
|
pnpm test
|
|
433
425
|
|
|
434
|
-
#
|
|
426
|
+
# 只跑启动看护(四种归属结局 + dynamic 跳过)与补丁一致性
|
|
435
427
|
pnpm test:guard
|
|
436
428
|
pnpm test:patch
|
|
437
429
|
|
|
@@ -470,7 +462,7 @@ pnpm probe --only Qwen3.8-27B
|
|
|
470
462
|
| MiniCPM5-2B | 131,072 | ❌ | (不返回分离思考,故不提供档位) |
|
|
471
463
|
|
|
472
464
|
`off` 表示发送 `reasoning_effort: "none"` 关闭思考。
|
|
473
|
-
**GLM-5.3-Flash
|
|
465
|
+
**GLM-5.3-Flash 不接受 `none`**,因此没有关闭档位;Qwen 系靠 `none` 关闭,而**不传档位时仍会思考**(AMD 服务端行为)。
|
|
474
466
|
|
|
475
467
|
> **档位表不在 API 里**(`GET /v1/models` 不返回该信息),只能实测。模型上下架会导致此表过期,
|
|
476
468
|
> 请用 `pnpm probe` 复测后再更新 `provider/radeon-cloud.yml`。
|
|
@@ -559,17 +551,15 @@ node ~/.dsh/profiles/<profile>/node_modules/@zhz8888/dsh-radeon-cloud-patcher/sc
|
|
|
559
551
|
## 兼容性
|
|
560
552
|
|
|
561
553
|
- 目标 DSH 版本:`>=0.2.0-rc.1`,**无上界**(三处声明一致,见[版本闸门](#版本闸门))
|
|
562
|
-
-
|
|
563
|
-
- 收录的模型当前均为 `stability: experimental`
|
|
554
|
+
- 收录的模型当前均为 `stability: experimental`——上游接口行为可能变,档位失效时先复测
|
|
564
555
|
- 仅覆盖 Public Free Model APIs(共享端点);独占端点的基础 URL 每次实例重启都会变化,不在本项目范围内
|
|
565
|
-
- 客户端补丁依赖 DSH
|
|
566
|
-
DSH 改版后它会静默失效——「自定义」标签重新出现,功能不受影响
|
|
556
|
+
- 客户端补丁依赖 DSH 的 DOM 结构,DSH 改版后可能静默失效(机制与代价见[归属与删除](#归属与删除))
|
|
567
557
|
|
|
568
558
|
---
|
|
569
559
|
|
|
570
560
|
## 许可证
|
|
571
561
|
|
|
572
|
-
本项目以 [MIT 许可证](LICENSE) 开源。
|
|
562
|
+
本项目以 [MIT 许可证](https://github.com/zhz8888/dsh-radeon-cloud-patcher/blob/main/LICENSE) 开源。
|
|
573
563
|
|
|
574
564
|
MIT 许可证允许你自由使用、复制、修改、合并、发布、分发、再许可及销售本项目的副本,
|
|
575
565
|
唯一义务是在所有副本或实质性部分中保留版权声明与许可声明。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhz8888/dsh-radeon-cloud-patcher",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"description": "为 DeepSeek Harness 接入 AMD Radeon Cloud,完整支持模型思考(reasoning
|
|
3
|
+
"version": "1.2.1",
|
|
4
|
+
"description": "为 DeepSeek Harness 接入 AMD Radeon Cloud,完整支持模型思考(reasoning)功能。provider 定义由插件自带的补丁层声明,交由 DSH 自带的 dsh-llm-pi-ai 承载,不修改 DSH 本体、不写用户 profile,也不自研适配器。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"amd",
|
|
7
7
|
"deepseek-harness",
|
package/src/ownership.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* home 的 ~/.dsh/cordis.patch.yml、命令行 overlay 都排在 bundle 层之后,
|
|
7
7
|
* 因此其中任何一条针对 llm-pi-ai 的 config 都会把插件层的定义整份盖掉。
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* 四种归属结局必须被区分开,否则用户只会看到 provider 无声消失:
|
|
10
10
|
*
|
|
11
11
|
* plugin-layer 之后各层没碰 llm-pi-ai → 插件层的定义生效,一切正常;
|
|
12
12
|
* materialized 之后的层声明了同 id 定义,且与本插件定义一致 —— 这是设置页
|
|
@@ -16,12 +16,15 @@
|
|
|
16
16
|
* conflict 之后的层声明了同 id 定义但与本插件不一致 —— 用户自己维护了
|
|
17
17
|
* 一份同名 provider,插件拒绝接管(这是需求里的「id 冲突」)。
|
|
18
18
|
*
|
|
19
|
+
* 另有哨兵 dynamic:config 是 !!js 表达式、或本次运行拿不到 profile 目录时,
|
|
20
|
+
* 静态判断不了谁生效,此时只告警并照常加载——「判不了」不等于「失败」。
|
|
21
|
+
*
|
|
19
22
|
* 与 merge.js 的关系:merge.js 负责「把定义按键合并进 profile」这条补救路径,
|
|
20
23
|
* 本模块负责「启动时判断谁在管理这个 id」。两者共用同一个 PROVIDER_KEY。
|
|
21
24
|
*/
|
|
22
25
|
import { PROVIDER_KEY, TARGET_ENTRY_ID, deepEqual } from './merge.js'
|
|
23
26
|
|
|
24
|
-
/**
|
|
27
|
+
/** 所有权判定的四种归属结局,外加「判不了就跳过」的哨兵 dynamic。 */
|
|
25
28
|
export const OWNERSHIP = {
|
|
26
29
|
pluginLayer: 'plugin-layer',
|
|
27
30
|
materialized: 'materialized',
|