dsh-vision-router 1.0.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/LICENSE +21 -0
- package/README.md +268 -0
- package/README.zh.md +268 -0
- package/assets/dsh-conversation-image-qa-result.png +0 -0
- package/assets/dsh-conversation-image-qa.png +0 -0
- package/assets/hero-zh.svg +41 -0
- package/assets/hero.svg +122 -0
- package/assets/how-it-works-zh.svg +1 -0
- package/assets/how-it-works.svg +1 -0
- package/assets/pixel-loop-zh.png +0 -0
- package/assets/pixel-loop.png +0 -0
- package/assets/vision-demo.gif +0 -0
- package/assets/vision-settings.png +0 -0
- package/assets/vision-tools-zh.svg +4 -0
- package/assets/vision-tools.svg +4 -0
- package/cordis.patch.yml +25 -0
- package/docs/free-models.zh-CN.md +166 -0
- package/index.js +3201 -0
- package/lib/client.js +866 -0
- package/package.json +75 -0
- package/presets/README.md +33 -0
- package/presets/dashscope.yaml +18 -0
- package/presets/openrouter.yaml +17 -0
- package/presets/ovh.yaml +14 -0
- package/presets/siliconflow.yaml +18 -0
- package/presets/zhipu.yaml +18 -0
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-vision-router",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Eyes for text-only DeepSeek Harness agents: built-in free vision chain (no key) + pixel-level vision tools (Q&A, grounding, crop, pixel diff, colors, OCR, SVG trace, cutout, screenshots). One-command install, no Python, image turns work like ordinary tool-calling turns.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/ysr666/dsh-vision-router.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/ysr666/dsh-vision-router",
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "index.js",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": "./index.js",
|
|
15
|
+
"./client": "./lib/client.js",
|
|
16
|
+
"./package.json": "./package.json",
|
|
17
|
+
"./cordis.patch.yml": "./cordis.patch.yml"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"README.md",
|
|
22
|
+
"README.zh.md",
|
|
23
|
+
"assets",
|
|
24
|
+
"cordis.patch.yml",
|
|
25
|
+
"docs",
|
|
26
|
+
"index.js",
|
|
27
|
+
"lib",
|
|
28
|
+
"presets"
|
|
29
|
+
],
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=22"
|
|
32
|
+
},
|
|
33
|
+
"packageManager": "pnpm@11.20.0",
|
|
34
|
+
"keywords": [
|
|
35
|
+
"deepseek-harness",
|
|
36
|
+
"dsh",
|
|
37
|
+
"vision",
|
|
38
|
+
"vision-tools",
|
|
39
|
+
"multimodal",
|
|
40
|
+
"openrouter",
|
|
41
|
+
"image",
|
|
42
|
+
"ocr",
|
|
43
|
+
"screenshot",
|
|
44
|
+
"plugin"
|
|
45
|
+
],
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@deepseek-ai/schemastery": ">=3.18.0",
|
|
48
|
+
"potrace": "^2.1.8",
|
|
49
|
+
"puppeteer-core": "^25.6.0",
|
|
50
|
+
"sharp": "^0.34.0",
|
|
51
|
+
"undici": ">=6.15.0",
|
|
52
|
+
"@deepseek-ai/dsh-llm-deepseek": "^0.1.0-rc.6",
|
|
53
|
+
"@deepseek-ai/dsh-anonymous-user-id": "^0.1.0-rc.6"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"test": "node --test tests/core.test.js tests/client.test.js"
|
|
57
|
+
},
|
|
58
|
+
"pnpm": {
|
|
59
|
+
"onlyBuiltDependencies": [
|
|
60
|
+
"sharp"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
"dsh": {
|
|
64
|
+
"client": {
|
|
65
|
+
"platform": "web",
|
|
66
|
+
"inject": [
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-settings",
|
|
68
|
+
"@deepseek-ai/dsh-client-runtime"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"bundle": {
|
|
72
|
+
"patch": "./cordis.patch.yml"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# presets/
|
|
2
|
+
|
|
3
|
+
每个文件是 `$DSH_HOME/settings.yaml` 中 `llm-pi-ai` 段的一份即插即用片段:
|
|
4
|
+
把它合并进你自己的 `settings.yaml`(或复制整个段),填一个 `apiKeyEnv` 对应的 Key 即可。
|
|
5
|
+
**仓库绝不内置任何第三方 Key**。
|
|
6
|
+
|
|
7
|
+
- `dashscope.yaml` —— 阿里云百炼,大陆直连,新用户每系列 100 万 token/90 天(推荐首选)
|
|
8
|
+
- `zhipu.yaml` —— 智谱 bigmodel.cn,`glm-4.6v-flash` 永久免费(provider key 用 `zhipu`,避免与 pi-ai 内置目录里的 `zai` 编码端点冲突)
|
|
9
|
+
- `siliconflow.yaml` —— 硅基流动,¥14 赠金覆盖 Qwen2.5-VL
|
|
10
|
+
- `openrouter.yaml` —— OpenRouter 免费模型(50 次/天,名单会轮换)
|
|
11
|
+
- `ovh.yaml` —— OVHcloud AI Endpoints 匿名层:**无需账号、无需 Key**,匿名额度为每个 IP、每个模型每分钟 2 次;
|
|
12
|
+
该端点已内置为插件的默认 `httpProviders`,通常无需手动配置
|
|
13
|
+
|
|
14
|
+
用法示例(以 dashscope 为例,合并进 `settings.yaml`):
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
llm-pi-ai:
|
|
18
|
+
providers:
|
|
19
|
+
dashscope:
|
|
20
|
+
api: openai-completions
|
|
21
|
+
baseURL: https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
22
|
+
apiKeyEnv: DASHSCOPE_API_KEY
|
|
23
|
+
models:
|
|
24
|
+
- id: qwen-vl-plus
|
|
25
|
+
name: "百炼: Qwen-VL-Plus"
|
|
26
|
+
contextWindow: 8000
|
|
27
|
+
maxTokens: 8192
|
|
28
|
+
input: [text, image]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Key 放在 `~/.dsh/.credentials.yaml`(或用环境变量导出),然后重启 `dsh web`。
|
|
32
|
+
之后既可在模型选择器里手动使用,也可把 `provider: dashscope` 加进本插件的
|
|
33
|
+
`providers` 链路。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# 阿里云百炼 DashScope(大陆直连,新用户每系列 100 万 token/90 天)
|
|
2
|
+
llm-pi-ai:
|
|
3
|
+
providers:
|
|
4
|
+
dashscope:
|
|
5
|
+
api: openai-completions
|
|
6
|
+
baseURL: https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
7
|
+
apiKeyEnv: DASHSCOPE_API_KEY
|
|
8
|
+
models:
|
|
9
|
+
- id: qwen-vl-plus
|
|
10
|
+
name: "百炼: Qwen-VL-Plus"
|
|
11
|
+
contextWindow: 8000
|
|
12
|
+
maxTokens: 8192
|
|
13
|
+
input: [text, image]
|
|
14
|
+
- id: qwen2.5-vl-7b-instruct
|
|
15
|
+
name: "百炼: Qwen2.5-VL-7B-Instruct"
|
|
16
|
+
contextWindow: 32768
|
|
17
|
+
maxTokens: 8192
|
|
18
|
+
input: [text, image]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# OpenRouter 免费视觉模型(50 次/天,需 Key;免费名单轮换频繁,以官方为准)
|
|
2
|
+
llm-pi-ai:
|
|
3
|
+
providers:
|
|
4
|
+
openrouter:
|
|
5
|
+
baseURL: https://openrouter.ai/api/v1
|
|
6
|
+
apiKeyEnv: OPENROUTER_API_KEY
|
|
7
|
+
models:
|
|
8
|
+
- id: google/gemma-4-31b-it:free
|
|
9
|
+
name: "OpenRouter: Gemma 4 31B (free)"
|
|
10
|
+
contextWindow: 262144
|
|
11
|
+
maxTokens: 32768
|
|
12
|
+
input: [text, image]
|
|
13
|
+
- id: google/gemma-4-26b-a4b-it:free
|
|
14
|
+
name: "OpenRouter: Gemma 4 26B A4B (free)"
|
|
15
|
+
contextWindow: 262144
|
|
16
|
+
maxTokens: 32768
|
|
17
|
+
input: [text, image]
|
package/presets/ovh.yaml
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# OVHcloud AI Endpoints 匿名层:免注册、免 Key(2 次/分钟/IP,尽力而为)
|
|
2
|
+
# 该端点已内置为插件的默认 httpProviders,通常无需手动配置;
|
|
3
|
+
# 若想把它加进 llm-pi-ai 路由链(例如供模型选择器使用),可用本段。
|
|
4
|
+
llm-pi-ai:
|
|
5
|
+
providers:
|
|
6
|
+
ovh:
|
|
7
|
+
api: openai-completions
|
|
8
|
+
baseURL: https://oai.endpoints.kepler.ai.cloud.ovh.net/v1
|
|
9
|
+
models:
|
|
10
|
+
- id: Qwen2.5-VL-72B-Instruct
|
|
11
|
+
name: "OVHcloud: Qwen2.5-VL-72B-Instruct (免费匿名)"
|
|
12
|
+
contextWindow: 128000
|
|
13
|
+
maxTokens: 8192
|
|
14
|
+
input: [text, image]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# SiliconFlow 硅基流动(大陆直连,¥14 赠金覆盖 Qwen2.5-VL)
|
|
2
|
+
llm-pi-ai:
|
|
3
|
+
providers:
|
|
4
|
+
siliconflow:
|
|
5
|
+
api: openai-completions
|
|
6
|
+
baseURL: https://api.siliconflow.cn/v1
|
|
7
|
+
apiKeyEnv: SILICONFLOW_API_KEY
|
|
8
|
+
models:
|
|
9
|
+
- id: Qwen/Qwen2.5-VL-7B-Instruct
|
|
10
|
+
name: "硅基流动: Qwen2.5-VL-7B-Instruct"
|
|
11
|
+
contextWindow: 32768
|
|
12
|
+
maxTokens: 8192
|
|
13
|
+
input: [text, image]
|
|
14
|
+
- id: Qwen/Qwen2.5-VL-32B-Instruct
|
|
15
|
+
name: "硅基流动: Qwen2.5-VL-32B-Instruct"
|
|
16
|
+
contextWindow: 32768
|
|
17
|
+
maxTokens: 8192
|
|
18
|
+
input: [text, image]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# 智谱 bigmodel.cn(大陆直连;glm-4.6v-flash 永久免费)
|
|
2
|
+
llm-pi-ai:
|
|
3
|
+
providers:
|
|
4
|
+
zhipu:
|
|
5
|
+
api: openai-completions
|
|
6
|
+
baseURL: https://open.bigmodel.cn/api/paas/v4
|
|
7
|
+
apiKeyEnv: ZAI_API_KEY
|
|
8
|
+
models:
|
|
9
|
+
- id: glm-4.6v-flash
|
|
10
|
+
name: "智谱: GLM-4.6V-Flash (永久免费)"
|
|
11
|
+
contextWindow: 131072
|
|
12
|
+
maxTokens: 8192
|
|
13
|
+
input: [text, image]
|
|
14
|
+
- id: glm-4.5v
|
|
15
|
+
name: "智谱: GLM-4.5V (限时免费)"
|
|
16
|
+
contextWindow: 131072
|
|
17
|
+
maxTokens: 8192
|
|
18
|
+
input: [text, image]
|