dsh-cmtoken-oauth 1.0.1 → 1.0.3
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 +37 -29
- package/lib/index.js +4 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,51 +1,59 @@
|
|
|
1
|
-
# cmtoken
|
|
1
|
+
# dsh-cmtoken-oauth
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DeepSeek Harness(DSH)插件:在 **DSH 设置页**内一键认证广东移动 MaaS(cmtoken),自动发现并接入模型,无需手动填写 API Key 或模型列表。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- 📷 **二维码**:内联 QR 编码器(零依赖)生成 SVG 二维码
|
|
7
|
-
- 🔄 **自动发现模型**:认证后拉取可用模型列表写入 provider 配置
|
|
8
|
-
- 🗝 **安全存储**:token 存 DSH 凭据服务(OS keyring / env),不落盘明文
|
|
9
|
-
- 🔁 **刷新 / 注销**:令牌过期可一键刷新,可随时注销
|
|
5
|
+
## 功能
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
- **一键认证**:基于 OAuth 2.0 Device Authorization Grant(RFC 8628)+ PKCE (S256),扫码或输入用户码即可完成,无需配置脚本。
|
|
8
|
+
- **内联二维码**:认证流程内置 QR 生成(零依赖),无需额外安装二维码工具。
|
|
9
|
+
- **自动发现模型**:认证成功后自动拉取可用模型列表,写入 `llm-pi-ai` 的 `providers.cmtoken` 配置(merge,不影响其他 provider)。
|
|
10
|
+
- **安全存储**:token 存入 DSH 凭据服务(OS keyring / env),不落盘明文。
|
|
11
|
+
- **自动续期 / 注销**:令牌临近过期自动 refresh;可随时注销清空凭据。
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
零第三方运行时依赖(仅使用 Node 内置模块)。
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
在 DSH profile 目录(默认 `~/.dsh/profiles/web`)执行:
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
#
|
|
19
|
-
dsh plugin --profile web add github:你的用户名/dsh-cmtoken-oauth
|
|
20
|
-
# 或 npm:
|
|
20
|
+
# npm 安装
|
|
21
21
|
dsh plugin --profile web add dsh-cmtoken-oauth
|
|
22
|
+
|
|
23
|
+
# 或从 GitHub 仓库安装(若已发布到 GitHub)
|
|
24
|
+
dsh plugin --profile web add github:your-username/dsh-cmtoken-oauth
|
|
22
25
|
```
|
|
23
26
|
|
|
24
|
-
`dsh plugin add`
|
|
27
|
+
`dsh plugin add` 会自动:
|
|
28
|
+
1. 安装依赖;
|
|
29
|
+
2. 根据 `dsh.bundle.patch` 声明,自动加入 profile 的 `dsh.profile.bundles`;
|
|
30
|
+
3. 重启 `dsh web` 后生效。
|
|
25
31
|
|
|
26
32
|
## 使用
|
|
27
33
|
|
|
28
|
-
1. 打开 DSH Web → 设置(左下角齿轮)→
|
|
29
|
-
2.
|
|
30
|
-
3.
|
|
31
|
-
4. 在 DSH
|
|
34
|
+
1. 打开 DSH Web → 设置(左下角齿轮)→ 左侧导航选择「**cmtoken 认证**」。
|
|
35
|
+
2. 点击「开始一键认证」→ 用手机扫描二维码(或打开链接输入用户码),在广东移动 IDaaS 页面确认授权。
|
|
36
|
+
3. 插件自动完成:发现模型 → 写入 `llm-pi-ai.providers.cmtoken` → 保存凭据。
|
|
37
|
+
4. 在 DSH 的模型选择器中选择 cmtoken 模型即可使用。
|
|
32
38
|
|
|
33
|
-
##
|
|
39
|
+
## 数据与配置
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
| 项目 | 说明 |
|
|
42
|
+
|---|---|
|
|
43
|
+
| 授权服务器 | `https://agentlink.idaas.cmpassport.com/oauth2-service` |
|
|
44
|
+
| 设备码 / 令牌端点 | `POST /oauth/device/code`、`POST /oauth/device/token` |
|
|
45
|
+
| 模型发现端点 | `GET https://maas.gd.chinamobile.com:36007/ai/uifm/open/v1/models` |
|
|
46
|
+
| 凭据引用 | `CMTOKEN_API_KEY` / `CMTOKEN_REFRESH_TOKEN` / `CMTOKEN_EXPIRES` |
|
|
47
|
+
| 写配置 | `llm-pi-ai` 设置 namespace 的 `providers.cmtoken`(merge,不覆盖其他 provider) |
|
|
41
48
|
|
|
42
49
|
## 开发
|
|
43
50
|
|
|
44
|
-
```
|
|
45
|
-
lib/index.js
|
|
46
|
-
lib/client.js
|
|
47
|
-
lib/qr-core.cjs
|
|
51
|
+
```text
|
|
52
|
+
lib/index.js host:OAuth 核心(PKCE / 设备码 / 轮询 / 刷新 / 模型发现)+ RPC
|
|
53
|
+
lib/client.js web:设置页「cmtoken 认证」向导(二维码 + 轮询 + 完成)
|
|
54
|
+
lib/qr-core.cjs 内联 QR 编码器(输出 SVG)
|
|
48
55
|
```
|
|
49
56
|
|
|
50
57
|
## License
|
|
58
|
+
|
|
51
59
|
MIT
|
package/lib/index.js
CHANGED
|
@@ -339,10 +339,13 @@ export function apply(ctx, cfg = {}) {
|
|
|
339
339
|
ctx.effect(() => {
|
|
340
340
|
removeRpc = registerRpc(ctx);
|
|
341
341
|
stopTimer = startAutoRefresh(ctx);
|
|
342
|
+
// 启动时立即补刷一次:若停机期间 access 过期、但 refresh 仍有效,马上恢复,
|
|
343
|
+
// 不必等 60 秒定时器;失败只记日志,不影响启动。
|
|
344
|
+
void autoRefresh(ctx).catch((e) => ctx.logger?.warn?.('[cmtoken-oauth] 启动补刷失败: ' + String(e?.message || e)));
|
|
342
345
|
return () => {
|
|
343
346
|
removeRpc();
|
|
344
347
|
stopTimer();
|
|
345
348
|
};
|
|
346
349
|
}, 'cmtoken-oauth: host service');
|
|
347
|
-
ctx.logger?.info?.('[cmtoken-oauth] host
|
|
350
|
+
ctx.logger?.info?.('[cmtoken-oauth] host 服务已启动(自动刷新已开启:启动即补刷 + 每 1 分钟检查 + status 查询按需触发,剩余 <1 小时或已过期即刷新)');
|
|
348
351
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-cmtoken-oauth",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.3",
|
|
4
|
+
"description": "DeepSeek Harness 插件:在 DSH 设置页一键完成广东移动 MaaS(cmtoken)的 OAuth 2.0 Device Grant + PKCE 认证,自动发现模型并写入 llm-pi-ai provider 配置,凭据安全保存并自动续期。零第三方运行时依赖。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
7
7
|
"types": "./lib/types/index.d.ts",
|