dsh-llm-ustc 0.2.0 → 0.3.0
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 +17 -8
- package/lib/adapter.js +28 -24
- package/lib/adapter.js.map +1 -1
- package/lib/client.js +256 -125
- package/lib/config.js +7 -4
- package/lib/config.js.map +1 -1
- package/lib/constants.js +3 -2
- package/lib/constants.js.map +1 -1
- package/lib/index.js +25 -17
- package/lib/index.js.map +1 -1
- package/lib/model-catalog.js +5 -9
- package/lib/model-catalog.js.map +1 -1
- package/lib/state.js +9 -9
- package/lib/state.js.map +1 -1
- package/lib/tokenworks.js +379 -0
- package/lib/tokenworks.js.map +1 -0
- package/lib/types/adapter.d.ts +3 -1
- package/lib/types/adapter.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +24 -6
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/config.d.ts +16 -3
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/constants.d.ts +3 -2
- package/lib/types/constants.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/model-catalog.d.ts +2 -3
- package/lib/types/model-catalog.d.ts.map +1 -1
- package/lib/types/state.d.ts +1 -1
- package/lib/types/state.d.ts.map +1 -1
- package/lib/types/tokenworks.d.ts +44 -0
- package/lib/types/tokenworks.d.ts.map +1 -0
- package/lib/types/web.d.ts +23 -1
- package/lib/types/web.d.ts.map +1 -1
- package/lib/web.js +80 -51
- package/lib/web.js.map +1 -1
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +63 -43
package/README.md
CHANGED
|
@@ -6,10 +6,10 @@ DeepSeek Harness `ustc` LLM Provider,访问中国科学技术大学
|
|
|
6
6
|
|
|
7
7
|
## 要求
|
|
8
8
|
|
|
9
|
-
- DeepSeek Harness `0.
|
|
9
|
+
- DeepSeek Harness `0.2.0-rc.2`
|
|
10
10
|
- Node.js 24(也支持 Node.js `^22.19.0`)
|
|
11
11
|
- Windows、macOS 或 Linux,x64/ARM64
|
|
12
|
-
- 科大 LLM API Key
|
|
12
|
+
- 科大 LLM API Key,或词元工坊账号
|
|
13
13
|
- 公网环境需要完成 iWAN 登录并显式选择线路
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
@@ -23,20 +23,25 @@ dsh plugin --profile web add dsh-llm-ustc@latest
|
|
|
23
23
|
如需固定版本,可以将 `latest` 换成具体版本号:
|
|
24
24
|
|
|
25
25
|
```sh
|
|
26
|
-
dsh plugin --profile web add dsh-llm-ustc@0.2.
|
|
26
|
+
dsh plugin --profile web add dsh-llm-ustc@0.2.1
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
安装时 npm 会通过六个 `optionalDependencies` 之一自动选择当前操作系统和架构的
|
|
30
30
|
原生 helper;不支持的平台或缺失的原生包会返回明确错误。安装完成后重启正在运行的
|
|
31
31
|
DSH Web 进程。
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
在 DSH Web 主页左上角打开“插件”,从“已安装”进入“科大大模型”的详情页:
|
|
34
34
|
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
35
|
+
1. 选择 Key 来源:手动输入 API Key,或登录词元工坊。词元工坊登录时点击“打开登录页面”,在浏览器完成科大认证后会自动返回本机回调,无需粘贴 URL。
|
|
36
|
+
2. 同步模型目录。两种来源都使用相同的科大 API、模型目录和聊天链路;切换来源不会回退到另一种凭据。
|
|
37
|
+
3. 公网使用时还需单独完成 iWAN 登录:在浏览器认证后粘贴完整回调 URL,再显式选择一条线路。词元工坊登录不替代 iWAN 登录。
|
|
38
|
+
|
|
39
|
+
词元工坊只用于从官方 bootstrap 服务获取网关 Key。插件验证发布配置签名和 OIDC ID token,使用 PKCE 与十分钟有效的单次本机回调;登录令牌可自动续期,网关 Key 仅缓存在内存中,按官方有效期和重检间隔在请求前刷新。
|
|
40
|
+
浏览器须与 DSH Host 在同一台机器上,才能完成 `127.0.0.1` 回调。
|
|
37
41
|
|
|
38
42
|
模型 ID 直接来自 `/v1/models`。首次离线时仅显示
|
|
39
|
-
`deepseek-
|
|
43
|
+
`deepseek-flash` 引导项;同步成功后会缓存最近可用目录。
|
|
44
|
+
目录中的条目可手动删除,结果保存在本地缓存中,再次同步会恢复服务端提供的模型。删除不改变“刷新时间”。
|
|
40
45
|
|
|
41
46
|
## 网络边界
|
|
42
47
|
|
|
@@ -58,8 +63,12 @@ DSH Web 进程。
|
|
|
58
63
|
## 凭据与本地状态
|
|
59
64
|
|
|
60
65
|
- `USTC_LLM_API_KEY`:科大 LLM API Key。
|
|
66
|
+
- `USTC_LLM_TOKENWORKS_SESSION`:插件私有词元工坊登录令牌,存入 DSH 凭据服务,不写入 Provider 配置或返回给 Web UI;退出登录时清除。手动 Key 独立保存,切换来源时不会删除。
|
|
61
67
|
- `USTC_LLM_IWAN_CONFIG`:插件私有 iWAN 凭据,不写入 Provider 配置。
|
|
62
|
-
- `$DSH_HOME/
|
|
68
|
+
- `$DSH_HOME/profiles/web/cordis.patch.yml`:Key 来源、所选 iWAN 线路和直连恢复间隔,归属 `llm-ustc` 插件配置行;其他 profile 使用自己的同名文件。
|
|
69
|
+
- `$DSH_HOME/cache/dsh-llm-ustc/models.json`:可重新同步的模型目录缓存。升级后旧缓存不会迁移,可在插件详情页手动同步。
|
|
70
|
+
|
|
71
|
+
升级到 DSH 0.2 后,DSH 会在首次启动时把旧 `$DSH_HOME/settings.yaml` 中的插件设置导入当前 profile,并将旧文件改名为 `settings.yaml.imported`。请确保导入时已启用本插件。
|
|
63
72
|
|
|
64
73
|
## 验证
|
|
65
74
|
|
package/lib/adapter.js
CHANGED
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import { credentialRef } from '@deepseek-ai/dsh-credentials';
|
|
2
|
-
import {
|
|
2
|
+
import { LlmAdapter, LlmError, ReasoningEffortId, resolveRetryPolicy, } from '@deepseek-ai/dsh-llm';
|
|
3
3
|
import { PiAiAdapter } from '@deepseek-ai/dsh-llm-pi-ai';
|
|
4
|
-
import { createProvider } from '@earendil-works/pi-ai';
|
|
4
|
+
import { createProvider, defaultProviderAuthContext, InMemoryCredentialStore } from '@earendil-works/pi-ai';
|
|
5
5
|
import { openAICompletionsApi } from '@earendil-works/pi-ai/api/openai-completions.lazy';
|
|
6
6
|
import { API_KEY_REF, DEFAULT_CONTEXT_WINDOW, DEFAULT_MAX_TOKENS, PROVIDER, PROVIDER_NAME, } from "./constants.js";
|
|
7
7
|
const RETRY_POLICY = resolveRetryPolicy(undefined, 'llm-ustc.retryPolicy');
|
|
8
8
|
const USTC_REASONING_EFFORTS = [
|
|
9
9
|
{ id: ReasoningEffortId('off'), name: 'Off' },
|
|
10
|
+
{ id: ReasoningEffortId('low'), name: 'Low' },
|
|
10
11
|
{ id: ReasoningEffortId('high'), name: 'High' },
|
|
11
12
|
{ id: ReasoningEffortId('max'), name: 'Max' },
|
|
12
13
|
];
|
|
13
14
|
const LONG_CONTEXT_WINDOW = 1_000_000;
|
|
14
|
-
const K3_CONTEXT_WINDOW = 600_000;
|
|
15
15
|
export class UstcAdapter extends LlmAdapter {
|
|
16
16
|
ctx;
|
|
17
17
|
helper;
|
|
18
18
|
catalog;
|
|
19
|
+
resolveApiKey;
|
|
19
20
|
delegate;
|
|
20
|
-
|
|
21
|
+
auth = { credentials: new InMemoryCredentialStore(), authContext: defaultProviderAuthContext() };
|
|
22
|
+
constructor(ctx, helper, catalog, resolveApiKey) {
|
|
21
23
|
super();
|
|
22
24
|
this.ctx = ctx;
|
|
23
25
|
this.helper = helper;
|
|
24
26
|
this.catalog = catalog;
|
|
27
|
+
this.resolveApiKey = resolveApiKey;
|
|
25
28
|
}
|
|
26
29
|
providerInfo(provider) {
|
|
27
30
|
this.assertProvider(provider);
|
|
@@ -33,12 +36,15 @@ export class UstcAdapter extends LlmAdapter {
|
|
|
33
36
|
}
|
|
34
37
|
async listModels(provider) {
|
|
35
38
|
this.assertProvider(provider);
|
|
36
|
-
return this.catalog.models().map(model =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
return this.catalog.models().map(model => {
|
|
40
|
+
const capabilities = modelCapabilities(model.id);
|
|
41
|
+
return {
|
|
42
|
+
provider: PROVIDER,
|
|
43
|
+
id: model.id,
|
|
44
|
+
name: model.name,
|
|
45
|
+
inputModalities: capabilities.input,
|
|
46
|
+
};
|
|
47
|
+
});
|
|
42
48
|
}
|
|
43
49
|
async resolveModel(provider, model) {
|
|
44
50
|
this.assertProvider(provider);
|
|
@@ -48,7 +54,7 @@ export class UstcAdapter extends LlmAdapter {
|
|
|
48
54
|
provider: PROVIDER,
|
|
49
55
|
id: model,
|
|
50
56
|
name: match?.name ?? model,
|
|
51
|
-
inputModalities:
|
|
57
|
+
inputModalities: capabilities.input,
|
|
52
58
|
context: { contextWindow: capabilities.contextWindow },
|
|
53
59
|
defaultMaxTokens: DEFAULT_MAX_TOKENS,
|
|
54
60
|
...(capabilities.reasoning ? { reasoning: { efforts: USTC_REASONING_EFFORTS } } : {}),
|
|
@@ -79,12 +85,8 @@ export class UstcAdapter extends LlmAdapter {
|
|
|
79
85
|
const profiles = new Map([[PROVIDER, profile]]);
|
|
80
86
|
const adapter = new PiAiAdapter({
|
|
81
87
|
profiles: () => profiles,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (hit === undefined)
|
|
85
|
-
throw new LlmError(`USTC LLM credential ${API_KEY_REF} is not configured`, 'MISSING_CREDENTIAL');
|
|
86
|
-
return assertUsableApiKey(hit.value, 'dsh-llm-ustc', API_KEY_REF);
|
|
87
|
-
},
|
|
88
|
+
auth: this.auth,
|
|
89
|
+
resolveApiKey: this.resolveApiKey,
|
|
88
90
|
resolveAttachments: () => this.ctx.get('attachments'),
|
|
89
91
|
});
|
|
90
92
|
this.delegate = { key, adapter };
|
|
@@ -139,14 +141,14 @@ function makeProfile(baseURL, cached, headers) {
|
|
|
139
141
|
...(capabilities.reasoning ? {
|
|
140
142
|
thinkingLevelMap: {
|
|
141
143
|
minimal: null,
|
|
142
|
-
low:
|
|
144
|
+
low: 'low',
|
|
143
145
|
medium: null,
|
|
144
146
|
high: 'high',
|
|
145
147
|
xhigh: null,
|
|
146
148
|
max: 'max',
|
|
147
149
|
},
|
|
148
150
|
} : {}),
|
|
149
|
-
input:
|
|
151
|
+
input: capabilities.input,
|
|
150
152
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
151
153
|
contextWindow: capabilities.contextWindow,
|
|
152
154
|
maxTokens: DEFAULT_MAX_TOKENS,
|
|
@@ -190,18 +192,20 @@ function makeProfile(baseURL, cached, headers) {
|
|
|
190
192
|
defaultMaxTokens: DEFAULT_MAX_TOKENS,
|
|
191
193
|
defaultInput: ['text'],
|
|
192
194
|
streamIdleTimeoutMs: 300_000,
|
|
195
|
+
maxRequestImageBytes: 20 * 1024 * 1024,
|
|
196
|
+
requestImagePixelBudget: 4_194_304,
|
|
197
|
+
requestImageMaxBytes: 1_048_576,
|
|
193
198
|
retryPolicy: RETRY_POLICY,
|
|
194
199
|
piProvider: provider,
|
|
200
|
+
modelErrors: new Map(),
|
|
195
201
|
configuredMaxTokens: new Map(models.map(model => [model.id, DEFAULT_MAX_TOKENS])),
|
|
196
202
|
};
|
|
197
203
|
}
|
|
198
204
|
function modelCapabilities(model) {
|
|
199
205
|
const id = model.toLowerCase();
|
|
200
|
-
if (id.startsWith('deepseek
|
|
201
|
-
return { contextWindow: LONG_CONTEXT_WINDOW, reasoning: true };
|
|
206
|
+
if (id.startsWith('deepseek') || id.startsWith('glm-5')) {
|
|
207
|
+
return { contextWindow: LONG_CONTEXT_WINDOW, input: ['text', 'image'], reasoning: true };
|
|
202
208
|
}
|
|
203
|
-
|
|
204
|
-
return { contextWindow: K3_CONTEXT_WINDOW, reasoning: true };
|
|
205
|
-
return { contextWindow: DEFAULT_CONTEXT_WINDOW, reasoning: false };
|
|
209
|
+
return { contextWindow: DEFAULT_CONTEXT_WINDOW, input: ['text'], reasoning: false };
|
|
206
210
|
}
|
|
207
211
|
//# sourceMappingURL=adapter.js.map
|
package/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|