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/assets/hero.svg
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="640" viewBox="0 0 1600 640">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#070914"/>
|
|
5
|
+
<stop offset="0.52" stop-color="#0A0D1B"/>
|
|
6
|
+
<stop offset="1" stop-color="#080A13"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
|
|
9
|
+
<radialGradient id="violetGlow" cx="73%" cy="49%" r="42%">
|
|
10
|
+
<stop offset="0" stop-color="#715CFF" stop-opacity=".23"/>
|
|
11
|
+
<stop offset=".45" stop-color="#604CFF" stop-opacity=".08"/>
|
|
12
|
+
<stop offset="1" stop-color="#604CFF" stop-opacity="0"/>
|
|
13
|
+
</radialGradient>
|
|
14
|
+
|
|
15
|
+
<radialGradient id="cyanGlow" cx="82%" cy="46%" r="28%">
|
|
16
|
+
<stop offset="0" stop-color="#46D8FF" stop-opacity=".15"/>
|
|
17
|
+
<stop offset="1" stop-color="#46D8FF" stop-opacity="0"/>
|
|
18
|
+
</radialGradient>
|
|
19
|
+
|
|
20
|
+
<linearGradient id="iris" x1="0" y1="0" x2="1" y2="1">
|
|
21
|
+
<stop offset="0" stop-color="#8D7BFF"/>
|
|
22
|
+
<stop offset=".5" stop-color="#6256FF"/>
|
|
23
|
+
<stop offset="1" stop-color="#36C8FF"/>
|
|
24
|
+
</linearGradient>
|
|
25
|
+
|
|
26
|
+
<linearGradient id="route" x1="0" y1="0" x2="1" y2="0">
|
|
27
|
+
<stop offset="0" stop-color="#695BFF"/>
|
|
28
|
+
<stop offset=".55" stop-color="#7B6DFF"/>
|
|
29
|
+
<stop offset="1" stop-color="#42D8FF"/>
|
|
30
|
+
</linearGradient>
|
|
31
|
+
|
|
32
|
+
<linearGradient id="chip" x1="0" y1="0" x2="0" y2="1">
|
|
33
|
+
<stop offset="0" stop-color="#171B2C" stop-opacity=".95"/>
|
|
34
|
+
<stop offset="1" stop-color="#0D1020" stop-opacity=".95"/>
|
|
35
|
+
</linearGradient>
|
|
36
|
+
|
|
37
|
+
<filter id="blur40"><feGaussianBlur stdDeviation="40"/></filter>
|
|
38
|
+
<filter id="glow">
|
|
39
|
+
<feGaussianBlur stdDeviation="5" result="b"/>
|
|
40
|
+
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
41
|
+
</filter>
|
|
42
|
+
<filter id="softGlow">
|
|
43
|
+
<feGaussianBlur stdDeviation="12" result="b"/>
|
|
44
|
+
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
|
|
45
|
+
</filter>
|
|
46
|
+
|
|
47
|
+
<pattern id="dots" width="34" height="34" patternUnits="userSpaceOnUse">
|
|
48
|
+
<circle cx="1.4" cy="1.4" r="1.35" fill="#65708A" opacity=".12"/>
|
|
49
|
+
</pattern>
|
|
50
|
+
</defs>
|
|
51
|
+
|
|
52
|
+
<rect width="1600" height="640" rx="32" fill="url(#bg)"/>
|
|
53
|
+
<rect width="1600" height="640" rx="32" fill="url(#dots)" opacity=".45"/>
|
|
54
|
+
<rect width="1600" height="640" rx="32" fill="url(#violetGlow)"/>
|
|
55
|
+
<rect width="1600" height="640" rx="32" fill="url(#cyanGlow)"/>
|
|
56
|
+
|
|
57
|
+
<path d="M790 70 C980 15 1240 42 1515 180" fill="none" stroke="#8D7BFF" stroke-opacity=".08" stroke-width="1"/>
|
|
58
|
+
<path d="M780 575 C1020 620 1300 585 1510 425" fill="none" stroke="#47CFFF" stroke-opacity=".08" stroke-width="1"/>
|
|
59
|
+
<path d="M925 36 C1120 160 1380 132 1565 250" fill="none" stroke="#FFFFFF" stroke-opacity=".035" stroke-width="1"/>
|
|
60
|
+
|
|
61
|
+
<g transform="translate(92,86)">
|
|
62
|
+
<g>
|
|
63
|
+
<rect x="0" y="0" width="224" height="34" rx="17" fill="#111528" stroke="#7568FF" stroke-opacity=".42"/>
|
|
64
|
+
<circle cx="19" cy="17" r="4" fill="#6A5BFF" filter="url(#glow)"/>
|
|
65
|
+
<text x="33" y="22" fill="#BFB8FF" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="700" letter-spacing="1.7">DEEPSEEK HARNESS</text>
|
|
66
|
+
</g>
|
|
67
|
+
|
|
68
|
+
<text x="0" y="102" fill="#F7F8FF" font-family="Inter, Arial, sans-serif" font-size="74" font-weight="760" letter-spacing="-3.1">DSH VISION</text>
|
|
69
|
+
<text x="0" y="176" fill="url(#iris)" font-family="Inter, Arial, sans-serif" font-size="74" font-weight="760" letter-spacing="-3.1">ROUTER</text>
|
|
70
|
+
|
|
71
|
+
<text x="2" y="229" fill="#C7CCDB" font-family="Inter, Arial, sans-serif" font-size="25" font-weight="500">Give DeepSeek eyes, not a new brain.</text>
|
|
72
|
+
<text x="2" y="278" fill="#7F889F" font-family="Inter, Arial, sans-serif" font-size="17" font-weight="500">Built-in free vision chain · automatic failover · pixel-level tools</text>
|
|
73
|
+
<text x="2" y="306" fill="#7F889F" font-family="Inter, Arial, sans-serif" font-size="17" font-weight="500">One-command install · no signup · no API key · no Python</text>
|
|
74
|
+
|
|
75
|
+
<g transform="translate(0,355)">
|
|
76
|
+
<g><rect x="0" y="0" width="132" height="39" rx="12" fill="#111526" stroke="#252B42"/><circle cx="18" cy="19.5" r="4" fill="#50D890"/><text x="31" y="25" fill="#CFD5E6" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="650">FREE CHAIN</text></g>
|
|
77
|
+
<g transform="translate(145,0)"><rect x="0" y="0" width="147" height="39" rx="12" fill="#111526" stroke="#252B42"/><circle cx="18" cy="19.5" r="4" fill="#7B6DFF"/><text x="31" y="25" fill="#CFD5E6" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="650">AUTO ROUTING</text></g>
|
|
78
|
+
<g transform="translate(305,0)"><rect x="0" y="0" width="139" height="39" rx="12" fill="#111526" stroke="#252B42"/><circle cx="18" cy="19.5" r="4" fill="#4CD5FF"/><text x="31" y="25" fill="#CFD5E6" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="650">PIXEL LOOP</text></g>
|
|
79
|
+
</g>
|
|
80
|
+
|
|
81
|
+
<g transform="translate(2,438)"><path d="M0 0 H422" stroke="#252A3C"/><text x="0" y="38" fill="#666F85" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="14">github.com/ysr666/dsh-vision-router</text></g>
|
|
82
|
+
</g>
|
|
83
|
+
|
|
84
|
+
<g>
|
|
85
|
+
<rect x="760" y="64" width="760" height="510" rx="34" fill="#0C0F1C" fill-opacity=".45" stroke="#252B40" stroke-opacity=".72"/>
|
|
86
|
+
<rect x="780" y="84" width="720" height="470" rx="26" fill="none" stroke="#FFFFFF" stroke-opacity=".035"/>
|
|
87
|
+
|
|
88
|
+
<g transform="translate(815,248)">
|
|
89
|
+
<rect x="0" y="0" width="116" height="142" rx="20" fill="url(#chip)" stroke="#2B3148"/>
|
|
90
|
+
<rect x="16" y="17" width="84" height="82" rx="13" fill="#0A0D17" stroke="#2D3550"/>
|
|
91
|
+
<rect x="28" y="31" width="23" height="23" rx="5" fill="#5C51E8"/>
|
|
92
|
+
<rect x="55" y="31" width="33" height="23" rx="5" fill="#183C58"/>
|
|
93
|
+
<rect x="28" y="58" width="38" height="28" rx="5" fill="#154A63"/>
|
|
94
|
+
<rect x="70" y="58" width="18" height="28" rx="5" fill="#7F6FFF"/>
|
|
95
|
+
<text x="58" y="121" text-anchor="middle" fill="#AEB6CC" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="12" font-weight="700">IMAGE</text>
|
|
96
|
+
</g>
|
|
97
|
+
|
|
98
|
+
<path d="M931 319 C978 319 995 319 1032 319" fill="none" stroke="url(#route)" stroke-width="2.7" stroke-linecap="round" filter="url(#glow)"/>
|
|
99
|
+
<circle cx="974" cy="319" r="4" fill="#7668FF"/><circle cx="1004" cy="319" r="3" fill="#7668FF" opacity=".65"/>
|
|
100
|
+
|
|
101
|
+
<g transform="translate(1111,319)">
|
|
102
|
+
<circle cx="0" cy="0" r="102" fill="#0D1020" stroke="#2B314B" stroke-width="1.4"/><circle cx="0" cy="0" r="87" fill="none" stroke="#6659FF" stroke-opacity=".18"/><circle cx="0" cy="0" r="68" fill="none" stroke="#46D7FF" stroke-opacity=".10"/>
|
|
103
|
+
<path d="M-64 0 C-35 -38 35 -38 64 0 C35 38 -35 38 -64 0Z" fill="#11162A" stroke="url(#iris)" stroke-width="2.5" filter="url(#glow)"/>
|
|
104
|
+
<circle cx="0" cy="0" r="28" fill="url(#iris)" opacity=".92" filter="url(#softGlow)"/><circle cx="0" cy="0" r="12" fill="#080B14"/><circle cx="7" cy="-8" r="4.5" fill="#DDF8FF" opacity=".9"/>
|
|
105
|
+
<circle cx="-91" cy="0" r="4" fill="#7568FF"/><circle cx="91" cy="-49" r="4" fill="#49D5FF"/><circle cx="101" cy="0" r="4" fill="#49D5FF"/><circle cx="91" cy="49" r="4" fill="#49D5FF"/>
|
|
106
|
+
<text x="0" y="132" text-anchor="middle" fill="#7A839A" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="12" font-weight="700" letter-spacing="1.4">VISION ROUTER CORE</text>
|
|
107
|
+
</g>
|
|
108
|
+
|
|
109
|
+
<path d="M1212 270 C1258 270 1260 183 1308 183" fill="none" stroke="url(#route)" stroke-width="2.2" stroke-linecap="round"/>
|
|
110
|
+
<path d="M1214 319 C1264 319 1266 319 1308 319" fill="none" stroke="url(#route)" stroke-width="2.2" stroke-linecap="round"/>
|
|
111
|
+
<path d="M1212 368 C1258 368 1260 455 1308 455" fill="none" stroke="url(#route)" stroke-width="2.2" stroke-linecap="round"/>
|
|
112
|
+
<circle cx="1268" cy="213" r="4" fill="#65D9FF" filter="url(#glow)"/><circle cx="1262" cy="319" r="4" fill="#7B6DFF" filter="url(#glow)"/><circle cx="1268" cy="425" r="4" fill="#65D9FF" filter="url(#glow)"/>
|
|
113
|
+
|
|
114
|
+
<g transform="translate(1308,137)"><rect x="0" y="0" width="164" height="92" rx="17" fill="url(#chip)" stroke="#2C334B"/><circle cx="24" cy="26" r="8" fill="#2ED887" fill-opacity=".14" stroke="#4BDB96"/><path d="M20 26 l3 3 l6 -7" fill="none" stroke="#60E6A5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><text x="43" y="31" fill="#E0E5F2" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="700">FREE VISION</text><text x="22" y="61" fill="#737D94" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="11.5">Qwen2.5-VL</text><text x="22" y="78" fill="#535D74" font-family="Inter, Arial, sans-serif" font-size="10.5">no key · built in</text></g>
|
|
115
|
+
<g transform="translate(1308,273)"><rect x="0" y="0" width="164" height="92" rx="17" fill="url(#chip)" stroke="#403772"/><circle cx="24" cy="26" r="8" fill="#7A6BFF" fill-opacity=".15" stroke="#7A6BFF"/><path d="M20 26 h8 M24 22 v8" stroke="#A79DFF" stroke-width="1.7" stroke-linecap="round"/><text x="43" y="31" fill="#E7E4FF" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="700">FAILOVER</text><text x="22" y="61" fill="#8E86C9" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="11.5">provider chain</text><text x="22" y="78" fill="#615B83" font-family="Inter, Arial, sans-serif" font-size="10.5">quota · region · 429</text></g>
|
|
116
|
+
<g transform="translate(1308,409)"><rect x="0" y="0" width="164" height="92" rx="17" fill="url(#chip)" stroke="#263D52"/><circle cx="24" cy="26" r="8" fill="#43D6FF" fill-opacity=".13" stroke="#44D6FF"/><path d="M19 26 h10 M24 21 v10" stroke="#7AE3FF" stroke-width="1.7" stroke-linecap="round"/><text x="43" y="31" fill="#DDF7FF" font-family="Inter, Arial, sans-serif" font-size="14" font-weight="700">PIXEL TOOLS</text><text x="22" y="61" fill="#7DB5C6" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="11.5">crop · diff · OCR</text><text x="22" y="78" fill="#52707D" font-family="Inter, Arial, sans-serif" font-size="10.5">ground · trace · color</text></g>
|
|
117
|
+
|
|
118
|
+
<g transform="translate(988,106)"><rect x="0" y="0" width="307" height="40" rx="20" fill="#101526" stroke="#2D3450"/><circle cx="21" cy="20" r="4" fill="#A092FF"/><text x="36" y="25" fill="#BAC1D2" font-family="Inter, Arial, sans-serif" font-size="12.5" font-weight="650" letter-spacing=".2">DEEPSEEK STAYS THE BRAIN</text><path d="M233 20 h49" stroke="#343C59" stroke-width="1.5"/><circle cx="287" cy="20" r="4" fill="#4BD5FF"/></g>
|
|
119
|
+
</g>
|
|
120
|
+
|
|
121
|
+
<rect x=".75" y=".75" width="1598.5" height="638.5" rx="31.25" fill="none" stroke="#FFFFFF" stroke-opacity=".08" stroke-width="1.5"/>
|
|
122
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="900" viewBox="0 0 1600 900"><defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#070914"/><stop offset="1" stop-color="#0a0f18"/></linearGradient><linearGradient id="a" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#8a6cff"/><stop offset="1" stop-color="#35d5ff"/></linearGradient><pattern id="d" width="30" height="30" patternUnits="userSpaceOnUse"><circle cx="2" cy="2" r="1" fill="#768199" opacity=".11"/></pattern></defs><rect width="1600" height="900" rx="30" fill="url(#bg)"/><rect width="1600" height="900" rx="30" fill="url(#d)"/><rect x="1" y="1" width="1598" height="898" rx="29" fill="none" stroke="#6957ff" opacity=".35"/><g font-family="system-ui,Segoe UI,Microsoft YaHei,Arial,sans-serif"><text x="90" y="95" fill="#f7f8fc" font-size="54" font-weight="800">工作原理</text><text x="92" y="135" fill="#8e98ac" font-size="20">DeepSeek 仍是大脑,Vision Router 负责提供眼睛。</text><g fill="#0e1320" stroke="#3a315d"><rect x="75" y="255" width="185" height="280" rx="20"/><rect x="310" y="255" width="190" height="280" rx="20"/><rect x="550" y="255" width="195" height="280" rx="20"/></g><g fill="#151329" stroke="#7664ff" stroke-width="2"><circle cx="92" cy="255" r="22"/><circle cx="327" cy="255" r="22"/><circle cx="567" cy="255" r="22"/></g><g fill="#fff" font-size="18" font-weight="750" text-anchor="middle"><text x="92" y="262">1</text><text x="327" y="262">2</text><text x="567" y="262">3</text></g><g fill="#edf0f8" font-size="20" font-weight="700" text-anchor="middle"><text x="168" y="320">用户发送图片</text><text x="405" y="310">自动挂载</text><text x="405" y="338">深度工具</text><text x="647" y="310">包装器 /</text><text x="647" y="338">隐身路由</text></g><rect x="108" y="382" width="120" height="96" rx="14" fill="#11172a" stroke="#6655e9"/><circle cx="139" cy="409" r="10" fill="#715fff"/><path d="M122 457l26-27 22 20 17-16 27 30" fill="none" stroke="#8070ff" stroke-width="4"/><rect x="345" y="383" width="120" height="94" rx="14" fill="#11172a" stroke="#6655e9"/><path d="M375 446l58-58M386 390l45 45" stroke="#9b7cff" stroke-width="8" stroke-linecap="round"/><text x="405" y="504" fill="#8f84c7" font-size="12" text-anchor="middle">agent / pre-step</text><rect x="584" y="383" width="126" height="94" rx="14" fill="#11172a" stroke="#6655e9"/><path d="M647 399l42 16v30c0 27-21 39-42 45-21-6-42-18-42-45v-30z" fill="none" stroke="#846cff" stroke-width="4"/><path d="M626 445q21-22 42 0q-21 22-42 0" fill="none" stroke="#a184ff" stroke-width="4"/><text x="647" y="504" fill="#8f84c7" font-size="11" text-anchor="middle">deepseek-official</text><path d="M260 395h42M294 387l10 8-10 8M500 395h42M534 387l10 8-10 8M745 395h42M779 387l10 8-10 8" stroke="#7d62ff" stroke-width="4" fill="none"/><rect x="795" y="200" width="345" height="390" rx="24" fill="#0d1321" stroke="url(#a)" stroke-width="3"/><circle cx="827" cy="232" r="22" fill="#151329" stroke="#7664ff" stroke-width="2"/><text x="827" y="239" fill="#fff" font-size="18" font-weight="750" text-anchor="middle">4</text><path d="M948 258c-46-44-91 3-63 42-35 31-2 81 39 56 14 35 63 35 77 0 42 25 75-25 40-56 28-39-17-86-63-42-8-28-22-34-30 0z" fill="none" stroke="url(#a)" stroke-width="4"/><text x="967" y="405" fill="#f6f8fc" font-size="38" font-weight="800" text-anchor="middle">DeepSeek</text><text x="967" y="448" fill="#f6f8fc" font-size="31" font-weight="750" text-anchor="middle">完整 Agent 回合</text><rect x="902" y="474" width="130" height="34" rx="17" fill="#16142d" stroke="#715fff"/><text x="967" y="497" fill="#a999ff" font-size="14" font-weight="700" text-anchor="middle">大脑</text><text x="967" y="548" fill="#9ca6ba" font-size="17" text-anchor="middle">推理 · 工具 · 回答</text><rect x="1220" y="205" width="290" height="365" rx="22" fill="#0d141d" stroke="#28bddd"/><circle cx="1240" cy="205" r="22" fill="#10202a" stroke="#35d5ff" stroke-width="2"/><text x="1240" y="212" fill="#fff" font-size="18" font-weight="750" text-anchor="middle">5</text><text x="1365" y="250" fill="#54dfff" font-size="21" font-weight="750" text-anchor="middle">vision_describe</text><text x="1365" y="276" fill="#54dfff" font-size="18" font-weight="650" text-anchor="middle">及其同类工具</text><g fill="#111925" stroke="#2b4858"><rect x="1255" y="305" width="220" height="58" rx="12"/><rect x="1255" y="390" width="220" height="58" rx="12"/><rect x="1255" y="475" width="220" height="58" rx="12"/></g><g fill="#dce3ef" font-size="17" text-anchor="middle"><text x="1365" y="340">免费端点</text><text x="1365" y="425">回退提供方</text><text x="1365" y="510">429 退避</text></g><path d="M1140 338h67M1195 330l12 8-12 8M1207 443h-67M1152 435l-12 8 12 8" stroke="#35d5ff" stroke-width="3" fill="none"/><text x="1165" y="320" fill="#58dfff" font-size="13">工具调用</text><text x="1155" y="470" fill="#58dfff" font-size="13">工具结果</text><rect x="1120" y="640" width="390" height="150" rx="20" fill="#0d141d" stroke="#28bddd"/><circle cx="1140" cy="640" r="22" fill="#10202a" stroke="#35d5ff" stroke-width="2"/><text x="1140" y="647" fill="#fff" font-size="18" font-weight="750" text-anchor="middle">6</text><text x="1315" y="680" fill="#54dfff" font-size="22" font-weight="750" text-anchor="middle">产物 + 图像记忆</text><rect x="1152" y="710" width="165" height="55" rx="10" fill="#111925" stroke="#2b4858"/><rect x="1330" y="710" width="148" height="55" rx="10" fill="#111925" stroke="#2b4858"/><text x="1235" y="736" fill="#cbd4e2" font-size="12" text-anchor="middle">.dsh-vision-router/</text><text x="1235" y="752" fill="#8390a5" font-size="11" text-anchor="middle">artifacts</text><text x="1404" y="744" fill="#cbd4e2" font-size="13" text-anchor="middle">缓存描述</text><path d="M1365 570v57M1357 615l8 12 8-12M1120 735H968V605M960 617l8-12 8 12" fill="none" stroke="#35d5ff" stroke-width="2.5" stroke-dasharray="8 7"/><rect x="515" y="660" width="440" height="128" rx="18" fill="#0c111c" stroke="#384159"/><text x="625" y="706" fill="#4bddff" font-size="20">◉ 视觉模型 = 眼睛</text><text x="625" y="753" fill="#a67cff" font-size="20">✦ DeepSeek = 大脑</text><path d="M600 721h290" stroke="#30384d"/><rect x="75" y="660" width="370" height="160" rx="18" fill="#0c111c" stroke="#30384d"/><path d="M108 700h55M150 692l13 8-13 8" stroke="#7d62ff" stroke-width="4"/><text x="185" y="706" fill="#b8c0d0" font-size="14">主流程(从左到右)</text><path d="M108 742h55M150 734l13 8-13 8" stroke="#35d5ff" stroke-width="4"/><text x="185" y="748" fill="#b8c0d0" font-size="14">工具调用回路</text><path d="M108 783h55" stroke="#35d5ff" stroke-width="3" stroke-dasharray="7 6"/><text x="185" y="789" fill="#b8c0d0" font-size="14">记忆 / 产物流</text></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="900" viewBox="0 0 1600 900"><defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#070914"/><stop offset="1" stop-color="#0a0f18"/></linearGradient><linearGradient id="a" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#8a6cff"/><stop offset="1" stop-color="#35d5ff"/></linearGradient><pattern id="d" width="30" height="30" patternUnits="userSpaceOnUse"><circle cx="2" cy="2" r="1" fill="#768199" opacity=".11"/></pattern></defs><rect width="1600" height="900" rx="30" fill="url(#bg)"/><rect width="1600" height="900" rx="30" fill="url(#d)"/><rect x="1" y="1" width="1598" height="898" rx="29" fill="none" stroke="#6957ff" opacity=".35"/><g font-family="system-ui,Segoe UI,Arial,sans-serif"><text x="90" y="95" fill="#f7f8fc" font-size="54" font-weight="800">How it works</text><text x="92" y="135" fill="#8e98ac" font-size="20">DeepSeek stays the brain. Vision Router adds the eyes.</text><g fill="#0e1320" stroke="#3a315d"><rect x="75" y="255" width="185" height="280" rx="20"/><rect x="310" y="255" width="190" height="280" rx="20"/><rect x="550" y="255" width="195" height="280" rx="20"/></g><g fill="#151329" stroke="#7664ff" stroke-width="2"><circle cx="92" cy="255" r="22"/><circle cx="327" cy="255" r="22"/><circle cx="567" cy="255" r="22"/></g><g fill="#fff" font-size="18" font-weight="750" text-anchor="middle"><text x="92" y="262">1</text><text x="327" y="262">2</text><text x="567" y="262">3</text></g><g fill="#edf0f8" font-size="20" font-weight="700" text-anchor="middle"><text x="168" y="310">User sends</text><text x="168" y="338">an image</text><text x="405" y="310">Auto-mount</text><text x="405" y="338">deep tools</text><text x="647" y="310">Wrapper /</text><text x="647" y="338">stealth route</text></g><rect x="108" y="382" width="120" height="96" rx="14" fill="#11172a" stroke="#6655e9"/><circle cx="139" cy="409" r="10" fill="#715fff"/><path d="M122 457l26-27 22 20 17-16 27 30" fill="none" stroke="#8070ff" stroke-width="4"/><rect x="345" y="383" width="120" height="94" rx="14" fill="#11172a" stroke="#6655e9"/><path d="M375 446l58-58M386 390l45 45" stroke="#9b7cff" stroke-width="8" stroke-linecap="round"/><rect x="584" y="383" width="126" height="94" rx="14" fill="#11172a" stroke="#6655e9"/><path d="M647 399l42 16v30c0 27-21 39-42 45-21-6-42-18-42-45v-30z" fill="none" stroke="#846cff" stroke-width="4"/><path d="M626 445q21-22 42 0q-21 22-42 0" fill="none" stroke="#a184ff" stroke-width="4"/><path d="M260 395h42M294 387l10 8-10 8M500 395h42M534 387l10 8-10 8M745 395h42M779 387l10 8-10 8" stroke="#7d62ff" stroke-width="4" fill="none"/><rect x="795" y="200" width="345" height="390" rx="24" fill="#0d1321" stroke="url(#a)" stroke-width="3"/><circle cx="827" cy="232" r="22" fill="#151329" stroke="#7664ff" stroke-width="2"/><text x="827" y="239" fill="#fff" font-size="18" font-weight="750" text-anchor="middle">4</text><path d="M948 258c-46-44-91 3-63 42-35 31-2 81 39 56 14 35 63 35 77 0 42 25 75-25 40-56 28-39-17-86-63-42-8-28-22-34-30 0z" fill="none" stroke="url(#a)" stroke-width="4"/><text x="967" y="405" fill="#f6f8fc" font-size="38" font-weight="800" text-anchor="middle">DeepSeek</text><text x="967" y="448" fill="#f6f8fc" font-size="31" font-weight="750" text-anchor="middle">full agent turn</text><rect x="892" y="474" width="150" height="34" rx="17" fill="#16142d" stroke="#715fff"/><text x="967" y="497" fill="#a999ff" font-size="14" font-weight="700" text-anchor="middle">THE BRAIN</text><text x="967" y="548" fill="#9ca6ba" font-size="17" text-anchor="middle">reasoning · tools · answer</text><rect x="1220" y="205" width="290" height="365" rx="22" fill="#0d141d" stroke="#28bddd"/><circle cx="1240" cy="205" r="22" fill="#10202a" stroke="#35d5ff" stroke-width="2"/><text x="1240" y="212" fill="#fff" font-size="18" font-weight="750" text-anchor="middle">5</text><text x="1365" y="260" fill="#54dfff" font-size="22" font-weight="750" text-anchor="middle">vision_describe + friends</text><g fill="#111925" stroke="#2b4858"><rect x="1255" y="298" width="220" height="62" rx="12"/><rect x="1255" y="385" width="220" height="62" rx="12"/><rect x="1255" y="472" width="220" height="62" rx="12"/></g><g fill="#dce3ef" font-size="17" text-anchor="middle"><text x="1365" y="336">Free endpoint</text><text x="1365" y="423">Fallback providers</text><text x="1365" y="510">429 backoff</text></g><path d="M1140 338h67M1195 330l12 8-12 8M1207 443h-67M1152 435l-12 8 12 8" stroke="#35d5ff" stroke-width="3" fill="none"/><text x="1175" y="320" fill="#58dfff" font-size="13">tool call</text><text x="1160" y="470" fill="#58dfff" font-size="13">tool result</text><rect x="1120" y="640" width="390" height="150" rx="20" fill="#0d141d" stroke="#28bddd"/><circle cx="1140" cy="640" r="22" fill="#10202a" stroke="#35d5ff" stroke-width="2"/><text x="1140" y="647" fill="#fff" font-size="18" font-weight="750" text-anchor="middle">6</text><text x="1315" y="680" fill="#54dfff" font-size="22" font-weight="750" text-anchor="middle">Artifacts + image memory</text><rect x="1152" y="710" width="165" height="55" rx="10" fill="#111925" stroke="#2b4858"/><rect x="1330" y="710" width="148" height="55" rx="10" fill="#111925" stroke="#2b4858"/><text x="1235" y="736" fill="#cbd4e2" font-size="12" text-anchor="middle">.dsh-vision-router/</text><text x="1235" y="752" fill="#8390a5" font-size="11" text-anchor="middle">artifacts</text><text x="1404" y="744" fill="#cbd4e2" font-size="13" text-anchor="middle">cached description</text><path d="M1365 570v57M1357 615l8 12 8-12M1120 735H968V605M960 617l8-12 8 12" fill="none" stroke="#35d5ff" stroke-width="2.5" stroke-dasharray="8 7"/><rect x="515" y="660" width="440" height="128" rx="18" fill="#0c111c" stroke="#384159"/><text x="625" y="706" fill="#4bddff" font-size="20">◉ Vision model = eyes</text><text x="625" y="753" fill="#a67cff" font-size="20">✦ DeepSeek = brain</text><path d="M600 721h290" stroke="#30384d"/><rect x="75" y="660" width="370" height="160" rx="18" fill="#0c111c" stroke="#30384d"/><path d="M108 700h55M150 692l13 8-13 8" stroke="#7d62ff" stroke-width="4"/><text x="185" y="706" fill="#b8c0d0" font-size="14">Main flow</text><path d="M108 742h55M150 734l13 8-13 8" stroke="#35d5ff" stroke-width="4"/><text x="185" y="748" fill="#b8c0d0" font-size="14">Tool call loop</text><path d="M108 783h55" stroke="#35d5ff" stroke-width="3" stroke-dasharray="7 6"/><text x="185" y="789" fill="#b8c0d0" font-size="14">Memory / artifact flow</text></g></svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="1080" viewBox="0 0 1440 1080">
|
|
2
|
+
<defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#070914"/><stop offset="1" stop-color="#09111a"/></linearGradient><linearGradient id="a" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#8a68ff"/><stop offset="1" stop-color="#39d6ff"/></linearGradient><pattern id="d" width="28" height="28" patternUnits="userSpaceOnUse"><circle cx="2" cy="2" r="1" fill="#73809a" opacity=".1"/></pattern></defs>
|
|
3
|
+
<rect width="1440" height="1080" rx="28" fill="url(#bg)"/><rect width="1440" height="1080" rx="28" fill="url(#d)"/><rect x="1" y="1" width="1438" height="1078" rx="27" fill="none" stroke="#6554ff" opacity=".32"/>
|
|
4
|
+
<g font-family="system-ui,Segoe UI,Microsoft YaHei,Arial,sans-serif"><text x="72" y="75" fill="#f5f7fc" font-size="42" font-weight="800">DSH <tspan fill="#8768ff">Vision</tspan> <tspan fill="#4acfff">Router</tspan></text><text x="72" y="108" fill="#818ba0" font-size="15">github.com/ysr666/dsh-vision-router</text><text x="720" y="170" text-anchor="middle" fill="url(#a)" font-size="52" font-weight="800">10 个视觉工具</text><text x="720" y="205" text-anchor="middle" fill="#8d97aa" font-size="17">基于 sharp · potrace · tesseract · system Chrome</text><rect x="50" y="245" width="430" height="240" rx="20" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="279" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="279" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">1</text><text x="118" y="286" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_describe</text><rect x="505" y="245" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="527" cy="279" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="527" y="279" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">2</text><text x="573" y="286" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_ground</text><rect x="960" y="245" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="982" cy="279" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="982" y="279" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">3</text><text x="1028" y="286" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_crop</text><rect x="50" y="505" width="430" height="240" rx="20" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="539" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="539" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">4</text><text x="118" y="546" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_pixel_diff</text><rect x="505" y="505" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="527" cy="539" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="527" y="539" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">5</text><text x="573" y="546" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_colors</text><rect x="960" y="505" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="982" cy="539" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="982" y="539" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">6</text><text x="1028" y="546" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_ocr</text><rect x="50" y="765" width="430" height="240" rx="20" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="799" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="799" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">7</text><text x="118" y="806" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_trace</text><rect x="505" y="765" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="527" cy="799" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="527" y="799" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">8</text><text x="573" y="806" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_extract_foreground</text><rect x="960" y="765" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="982" cy="799" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="982" y="799" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="17" font-weight="800">9</text><text x="1028" y="806" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_html_screenshot</text><rect x="75" y="315" width="205" height="140" rx="10" fill="#102437"/><circle cx="225" cy="347" r="22" fill="#f0d38b"/><path d="M75 431l70-66 45 39 31-30 59 57" fill="#1d5264"/><path d="M75 445l77-62 35 30 42-38 51 70" fill="#18344d"/><rect x="300" y="320" width="150" height="50" rx="10" fill="#151525" stroke="#42366e"/><text x="314" y="342" fill="#a98cff" font-size="12">问 这张图片里</text><text x="314" y="359" fill="#c8cede" font-size="12"> 有什么?</text><rect x="300" y="382" width="150" height="68" rx="10" fill="#111925" stroke="#334054"/><text x="314" y="405" fill="#7fe0bd" font-size="12">答 山间湖泊</text><text x="314" y="423" fill="#bfc7d6" font-size="12"> 松树与云</text><rect x="535" y="315" width="370" height="140" rx="10" fill="#101620" stroke="#293244"/><rect x="550" y="330" width="100" height="110" rx="7" fill="#151b27"/><text x="565" y="354" fill="#7f899c" font-size="11">仪表盘</text><rect x="558" y="368" width="80" height="27" rx="6" fill="#251d45"/><text x="570" y="386" fill="#b99cff" font-size="11">项目</text><text x="565" y="414" fill="#7f899c" font-size="11">分析</text><rect x="670" y="337" width="205" height="94" rx="8" fill="#111824"/><text x="686" y="360" fill="#e5e9f1" font-size="15" font-weight="700">项目</text><rect x="720" y="374" width="115" height="40" rx="6" fill="#161d29" stroke="#48dc8e" stroke-width="2"/><circle cx="720" cy="374" r="4" fill="#48dc8e"/><circle cx="835" cy="374" r="4" fill="#48dc8e"/><circle cx="720" cy="414" r="4" fill="#48dc8e"/><circle cx="835" cy="414" r="4" fill="#48dc8e"/><text x="746" y="399" fill="#c7a6ff" font-size="11">新建项目</text><rect x="990" y="315" width="175" height="140" rx="10" fill="#161c2b"/><path d="M1000 435l55-87 45 68 55-45" fill="none" stroke="#d37e46" stroke-width="5"/><rect x="1030" y="335" width="90" height="95" fill="none" stroke="#a987ff" stroke-width="3" stroke-dasharray="8 6"/><circle cx="1030" cy="335" r="5" fill="#b293ff"/><circle cx="1120" cy="335" r="5" fill="#b293ff"/><circle cx="1030" cy="430" r="5" fill="#b293ff"/><circle cx="1120" cy="430" r="5" fill="#b293ff"/><text x="1182" y="392" fill="#886cff" font-size="28">→</text><rect x="1220" y="315" width="145" height="140" rx="10" fill="#201d25"/><path d="M1230 440l45-100 50 83 30-50" fill="none" stroke="#d37e46" stroke-width="6"/><rect x="75" y="575" width="125" height="135" rx="9" fill="#121824" stroke="#344052"/><rect x="215" y="575" width="125" height="135" rx="9" fill="#121824" stroke="#344052"/><text x="92" y="603" fill="#d8deea" font-size="12">基线图像</text><text x="92" y="635" fill="#fff" font-size="23">$29/月</text><rect x="91" y="662" width="92" height="26" rx="6" fill="#226bd1"/><text x="115" y="680" fill="#fff" font-size="10">开始使用</text><text x="232" y="603" fill="#d8deea" font-size="12">当前图像</text><text x="232" y="635" fill="#fff" font-size="23">$29/月</text><rect x="231" y="662" width="92" height="26" rx="6" fill="#3eaa67"/><text x="255" y="680" fill="#fff" font-size="10">开始使用</text><text x="355" y="649" fill="#886cff" font-size="28">→</text><rect x="390" y="575" width="65" height="135" rx="8" fill="#0f1118" stroke="#553445"/><g fill="#f0444f"><rect x="400" y="590" width="14" height="18"/><rect x="430" y="612" width="17" height="20"/><rect x="408" y="645" width="22" height="22"/><rect x="435" y="670" width="12" height="27"/></g><rect x="535" y="575" width="370" height="75" rx="10" fill="#35203c"/><circle cx="840" cy="610" r="30" fill="#f2a34e"/><path d="M535 640l85-48 72 40 74-55 139 63" fill="#1e2a44"/><g><rect x="545" y="668" width="62" height="42" rx="6" fill="#1e2a44"/><rect x="616" y="668" width="62" height="42" rx="6" fill="#3b4d7a"/><rect x="687" y="668" width="62" height="42" rx="6" fill="#6b7fcb"/><rect x="758" y="668" width="62" height="42" rx="6" fill="#f29d49"/><rect x="829" y="668" width="62" height="42" rx="6" fill="#ffd6a6"/></g><g fill="#9da6b8" font-family="monospace" font-size="9"><text x="548" y="724">#1E2A44</text><text x="619" y="724">#3B4D7A</text><text x="690" y="724">#6B7FCB</text><text x="761" y="724">#F29D49</text><text x="832" y="724">#FFD6A6</text></g><rect x="990" y="575" width="175" height="135" rx="10" fill="#e8e8e5" stroke="#5f6670"/><text x="1077" y="607" text-anchor="middle" fill="#111827" font-size="18" font-weight="800">PARKING</text><text x="1077" y="633" text-anchor="middle" fill="#111827" font-size="18" font-weight="800">RESERVED</text><text x="1077" y="659" text-anchor="middle" fill="#111827" font-size="20" font-weight="800">24/7</text><text x="1182" y="646" fill="#886cff" font-size="28">→</text><rect x="1220" y="575" width="145" height="135" rx="10" fill="#0d1518" stroke="#28483a"/><text x="1235" y="610" fill="#58d99a" font-family="monospace" font-size="14">PARKING</text><text x="1235" y="635" fill="#58d99a" font-family="monospace" font-size="14">RESERVED</text><text x="1235" y="660" fill="#58d99a" font-family="monospace" font-size="14">24/7</text><rect x="75" y="835" width="165" height="140" rx="10" fill="#111827" stroke="#2d3b55"/><path d="M101 940l45-82 59 40-58 61z" fill="#d8e1f2"/><circle cx="165" cy="890" r="12" fill="#3d87c7"/><path d="M118 949l-13 19 21-10" fill="#ff633f"/><text x="255" y="920" fill="#886cff" font-size="28">→</text><rect x="300" y="835" width="150" height="140" rx="10" fill="#0f1420" stroke="#2d3b55"/><path d="M322 948l45-91 57 42-62 63z" fill="none" stroke="url(#a)" stroke-width="3"/><circle cx="386" cy="889" r="13" fill="none" stroke="#43d6ff" stroke-width="3"/><rect x="535" y="835" width="170" height="140" rx="10" fill="#262a36"/><path d="M590 890h62l13 52h-90z" fill="#606672"/><path d="M580 942v25M658 942v25" stroke="#7b533a" stroke-width="8"/><text x="720" y="920" fill="#886cff" font-size="28">→</text><rect x="760" y="835" width="145" height="140" rx="10" fill="#ddd"/><g fill="#bfc3c8"><rect x="760" y="835" width="29" height="28"/><rect x="818" y="835" width="29" height="28"/><rect x="876" y="835" width="29" height="28"/><rect x="789" y="863" width="29" height="28"/><rect x="847" y="863" width="29" height="28"/></g><path d="M803 890h60l12 52h-86z" fill="#555b67"/><path d="M793 942v25M868 942v25" stroke="#7b533a" stroke-width="8"/><rect x="990" y="835" width="375" height="140" rx="10" fill="#101621" stroke="#344054"/><rect x="990" y="835" width="375" height="25" rx="10" fill="#171d2a"/><circle cx="1005" cy="847" r="4" fill="#ff665a"/><circle cx="1018" cy="847" r="4" fill="#f0b85b"/><circle cx="1031" cy="847" r="4" fill="#50d890"/><text x="1060" y="851" fill="#8c96a9" font-family="monospace" font-size="10">http://localhost:8080</text><rect x="1004" y="873" width="95" height="86" rx="6" fill="#17132b"/><text x="1018" y="894" fill="#9e8cff" font-size="10">概览</text><text x="1018" y="918" fill="#8d96a8" font-size="10">报表</text><text x="1018" y="942" fill="#8d96a8" font-size="10">设置</text><rect x="1113" y="873" width="105" height="62" rx="6" fill="#151b28"/><rect x="1231" y="873" width="118" height="62" rx="6" fill="#151b28"/><text x="1125" y="895" fill="#7f899d" font-size="9">用户数</text><text x="1125" y="920" fill="#f4f7fb" font-size="18">12,540</text><path d="M1120 956c50-23 82 6 126-22 34-21 56 4 96-36" fill="none" stroke="url(#a)" stroke-width="3"/><rect x="50" y="1018" width="1340" height="52" rx="14" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="1044" r="16" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="1044" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="15" font-weight="800">10</text><text x="108" y="1050" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="16" font-weight="700">vision_detect</text><text x="420" y="1050" fill="#818ba0" font-size="14">元素清单:按类盘点页面元素,编号 + 原图像素框</text></g></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="1080" viewBox="0 0 1440 1080">
|
|
2
|
+
<defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#070914"/><stop offset="1" stop-color="#09111a"/></linearGradient><linearGradient id="a" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#8a68ff"/><stop offset="1" stop-color="#39d6ff"/></linearGradient><pattern id="d" width="28" height="28" patternUnits="userSpaceOnUse"><circle cx="2" cy="2" r="1" fill="#73809a" opacity=".1"/></pattern></defs>
|
|
3
|
+
<rect width="1440" height="1080" rx="28" fill="url(#bg)"/><rect width="1440" height="1080" rx="28" fill="url(#d)"/><rect x="1" y="1" width="1438" height="1078" rx="27" fill="none" stroke="#6554ff" opacity=".32"/>
|
|
4
|
+
<g font-family="system-ui,Segoe UI,Arial,sans-serif"><text x="72" y="75" fill="#f5f7fc" font-size="42" font-weight="800">DSH <tspan fill="#8768ff">Vision</tspan> <tspan fill="#4acfff">Router</tspan></text><text x="72" y="108" fill="#818ba0" font-size="15">github.com/ysr666/dsh-vision-router</text><text x="720" y="170" text-anchor="middle" fill="url(#a)" font-size="52" font-weight="800">10 Vision Tools</text><text x="720" y="205" text-anchor="middle" fill="#8d97aa" font-size="17">Built on sharp · potrace · tesseract · system Chrome</text><rect x="50" y="245" width="430" height="240" rx="20" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="279" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="279" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">1</text><text x="118" y="286" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_describe</text><rect x="505" y="245" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="527" cy="279" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="527" y="279" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">2</text><text x="573" y="286" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_ground</text><rect x="960" y="245" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="982" cy="279" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="982" y="279" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">3</text><text x="1028" y="286" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_crop</text><rect x="50" y="505" width="430" height="240" rx="20" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="539" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="539" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">4</text><text x="118" y="546" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_pixel_diff</text><rect x="505" y="505" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="527" cy="539" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="527" y="539" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">5</text><text x="573" y="546" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_colors</text><rect x="960" y="505" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="982" cy="539" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="982" y="539" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">6</text><text x="1028" y="546" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_ocr</text><rect x="50" y="765" width="430" height="240" rx="20" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="799" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="799" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">7</text><text x="118" y="806" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_trace</text><rect x="505" y="765" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="527" cy="799" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="527" y="799" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">8</text><text x="573" y="806" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_extract_foreground</text><rect x="960" y="765" width="430" height="240" rx="20" fill="#0c111c" stroke="#265b73"/><circle cx="982" cy="799" r="18" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="982" y="799" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-family="system-ui,Segoe UI,Arial,sans-serif" font-size="17" font-weight="800">9</text><text x="1028" y="806" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="18" font-weight="700">vision_html_screenshot</text><rect x="75" y="315" width="205" height="140" rx="10" fill="#102437"/><circle cx="225" cy="347" r="22" fill="#f0d38b"/><path d="M75 431l70-66 45 39 31-30 59 57" fill="#1d5264"/><path d="M75 445l77-62 35 30 42-38 51 70" fill="#18344d"/><rect x="300" y="320" width="150" height="50" rx="10" fill="#151525" stroke="#42366e"/><text x="314" y="342" fill="#a98cff" font-size="12">Q What's in</text><text x="314" y="359" fill="#c8cede" font-size="12"> this image?</text><rect x="300" y="382" width="150" height="68" rx="10" fill="#111925" stroke="#334054"/><text x="314" y="405" fill="#7fe0bd" font-size="12">A Mountain lake</text><text x="314" y="423" fill="#bfc7d6" font-size="12"> with trees</text><text x="314" y="441" fill="#bfc7d6" font-size="12"> and clouds.</text><rect x="535" y="315" width="370" height="140" rx="10" fill="#101620" stroke="#293244"/><rect x="550" y="330" width="100" height="110" rx="7" fill="#151b27"/><text x="565" y="354" fill="#7f899c" font-size="11">Dashboard</text><rect x="558" y="368" width="80" height="27" rx="6" fill="#251d45"/><text x="570" y="386" fill="#b99cff" font-size="11">Projects</text><text x="565" y="414" fill="#7f899c" font-size="11">Analytics</text><rect x="670" y="337" width="205" height="94" rx="8" fill="#111824"/><text x="686" y="360" fill="#e5e9f1" font-size="15" font-weight="700">Projects</text><rect x="720" y="374" width="115" height="40" rx="6" fill="#161d29" stroke="#48dc8e" stroke-width="2"/><circle cx="720" cy="374" r="4" fill="#48dc8e"/><circle cx="835" cy="374" r="4" fill="#48dc8e"/><circle cx="720" cy="414" r="4" fill="#48dc8e"/><circle cx="835" cy="414" r="4" fill="#48dc8e"/><text x="742" y="399" fill="#c7a6ff" font-size="11">New Project</text><rect x="990" y="315" width="175" height="140" rx="10" fill="#161c2b"/><path d="M1000 435l55-87 45 68 55-45" fill="none" stroke="#d37e46" stroke-width="5"/><rect x="1030" y="335" width="90" height="95" fill="none" stroke="#a987ff" stroke-width="3" stroke-dasharray="8 6"/><circle cx="1030" cy="335" r="5" fill="#b293ff"/><circle cx="1120" cy="335" r="5" fill="#b293ff"/><circle cx="1030" cy="430" r="5" fill="#b293ff"/><circle cx="1120" cy="430" r="5" fill="#b293ff"/><text x="1182" y="392" fill="#886cff" font-size="28">→</text><rect x="1220" y="315" width="145" height="140" rx="10" fill="#201d25"/><path d="M1230 440l45-100 50 83 30-50" fill="none" stroke="#d37e46" stroke-width="6"/><rect x="75" y="575" width="125" height="135" rx="9" fill="#121824" stroke="#344052"/><rect x="215" y="575" width="125" height="135" rx="9" fill="#121824" stroke="#344052"/><text x="92" y="603" fill="#d8deea" font-size="12">Pro Plan</text><text x="92" y="635" fill="#fff" font-size="23">$29</text><rect x="91" y="662" width="92" height="26" rx="6" fill="#226bd1"/><text x="109" y="680" fill="#fff" font-size="10">Get Started</text><text x="232" y="603" fill="#d8deea" font-size="12">Pro Plan</text><text x="232" y="635" fill="#fff" font-size="23">$29</text><rect x="231" y="662" width="92" height="26" rx="6" fill="#3eaa67"/><text x="249" y="680" fill="#fff" font-size="10">Get Started</text><text x="355" y="649" fill="#886cff" font-size="28">→</text><rect x="390" y="575" width="65" height="135" rx="8" fill="#0f1118" stroke="#553445"/><g fill="#f0444f"><rect x="400" y="590" width="14" height="18"/><rect x="430" y="612" width="17" height="20"/><rect x="408" y="645" width="22" height="22"/><rect x="435" y="670" width="12" height="27"/></g><rect x="535" y="575" width="370" height="75" rx="10" fill="#35203c"/><circle cx="840" cy="610" r="30" fill="#f2a34e"/><path d="M535 640l85-48 72 40 74-55 139 63" fill="#1e2a44"/><g><rect x="545" y="668" width="62" height="42" rx="6" fill="#1e2a44"/><rect x="616" y="668" width="62" height="42" rx="6" fill="#3b4d7a"/><rect x="687" y="668" width="62" height="42" rx="6" fill="#6b7fcb"/><rect x="758" y="668" width="62" height="42" rx="6" fill="#f29d49"/><rect x="829" y="668" width="62" height="42" rx="6" fill="#ffd6a6"/></g><g fill="#9da6b8" font-family="monospace" font-size="9"><text x="548" y="724">#1E2A44</text><text x="619" y="724">#3B4D7A</text><text x="690" y="724">#6B7FCB</text><text x="761" y="724">#F29D49</text><text x="832" y="724">#FFD6A6</text></g><rect x="990" y="575" width="175" height="135" rx="10" fill="#e8e8e5" stroke="#5f6670"/><text x="1077" y="607" text-anchor="middle" fill="#111827" font-size="18" font-weight="800">PARKING</text><text x="1077" y="633" text-anchor="middle" fill="#111827" font-size="18" font-weight="800">RESERVED</text><text x="1077" y="659" text-anchor="middle" fill="#111827" font-size="20" font-weight="800">24/7</text><text x="1182" y="646" fill="#886cff" font-size="28">→</text><rect x="1220" y="575" width="145" height="135" rx="10" fill="#0d1518" stroke="#28483a"/><text x="1235" y="610" fill="#58d99a" font-family="monospace" font-size="14">PARKING</text><text x="1235" y="635" fill="#58d99a" font-family="monospace" font-size="14">RESERVED</text><text x="1235" y="660" fill="#58d99a" font-family="monospace" font-size="14">24/7</text><rect x="75" y="835" width="165" height="140" rx="10" fill="#111827" stroke="#2d3b55"/><path d="M101 940l45-82 59 40-58 61z" fill="#d8e1f2"/><circle cx="165" cy="890" r="12" fill="#3d87c7"/><path d="M118 949l-13 19 21-10" fill="#ff633f"/><text x="255" y="920" fill="#886cff" font-size="28">→</text><rect x="300" y="835" width="150" height="140" rx="10" fill="#0f1420" stroke="#2d3b55"/><path d="M322 948l45-91 57 42-62 63z" fill="none" stroke="url(#a)" stroke-width="3"/><circle cx="386" cy="889" r="13" fill="none" stroke="#43d6ff" stroke-width="3"/><rect x="535" y="835" width="170" height="140" rx="10" fill="#262a36"/><path d="M590 890h62l13 52h-90z" fill="#606672"/><path d="M580 942v25M658 942v25" stroke="#7b533a" stroke-width="8"/><text x="720" y="920" fill="#886cff" font-size="28">→</text><rect x="760" y="835" width="145" height="140" rx="10" fill="#ddd"/><g fill="#bfc3c8"><rect x="760" y="835" width="29" height="28"/><rect x="818" y="835" width="29" height="28"/><rect x="876" y="835" width="29" height="28"/><rect x="789" y="863" width="29" height="28"/><rect x="847" y="863" width="29" height="28"/></g><path d="M803 890h60l12 52h-86z" fill="#555b67"/><path d="M793 942v25M868 942v25" stroke="#7b533a" stroke-width="8"/><rect x="990" y="835" width="375" height="140" rx="10" fill="#101621" stroke="#344054"/><rect x="990" y="835" width="375" height="25" rx="10" fill="#171d2a"/><circle cx="1005" cy="847" r="4" fill="#ff665a"/><circle cx="1018" cy="847" r="4" fill="#f0b85b"/><circle cx="1031" cy="847" r="4" fill="#50d890"/><text x="1060" y="851" fill="#8c96a9" font-family="monospace" font-size="10">http://localhost:8080</text><rect x="1004" y="873" width="95" height="86" rx="6" fill="#17132b"/><text x="1018" y="894" fill="#9e8cff" font-size="10">Overview</text><text x="1018" y="918" fill="#8d96a8" font-size="10">Reports</text><text x="1018" y="942" fill="#8d96a8" font-size="10">Settings</text><rect x="1113" y="873" width="105" height="62" rx="6" fill="#151b28"/><rect x="1231" y="873" width="118" height="62" rx="6" fill="#151b28"/><text x="1125" y="895" fill="#7f899d" font-size="9">Users</text><text x="1125" y="920" fill="#f4f7fb" font-size="18">12,540</text><path d="M1120 956c50-23 82 6 126-22 34-21 56 4 96-36" fill="none" stroke="url(#a)" stroke-width="3"/><rect x="50" y="1018" width="1340" height="52" rx="14" fill="#0c111c" stroke="#44356f"/><circle cx="72" cy="1044" r="16" fill="#151329" stroke="#7765ff" stroke-width="2"/><text x="72" y="1044" text-anchor="middle" dominant-baseline="central" fill="#f0f3f9" font-size="15" font-weight="800">10</text><text x="108" y="1050" fill="#f0f3f9" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-size="16" font-weight="700">vision_detect</text><text x="420" y="1050" fill="#818ba0" font-size="14">numbered inventory of every element of a kind — original-pixel boxes</text></g></svg>
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# dsh-vision-router bundle layer: applied automatically when the package is
|
|
2
|
+
# installed (package.json declares dsh.bundle.patch), i.e. a profile that
|
|
3
|
+
# runs `dsh plugin add github:ysr666/dsh-vision-router` gets this wiring
|
|
4
|
+
# without any manual cordis.patch.yml edits. Later layers (the profile's own
|
|
5
|
+
# cordis.patch.yml, --patch overlays) override these rows by id.
|
|
6
|
+
|
|
7
|
+
# 隐身模式:接管官方 deepseek-official 路由。禁用官方行后插件自己重建原生
|
|
8
|
+
# DeepSeek 适配器(读取同一个 llm-deepseek 设置段与凭据),选择器里的
|
|
9
|
+
# DeepSeek 条目本身就是「图片自动识图」包装,发图即用。
|
|
10
|
+
# 想恢复官方行:在你的 profile cordis.patch.yml 里删掉/覆写本条即可。
|
|
11
|
+
- id: llm-deepseek
|
|
12
|
+
disabled: true
|
|
13
|
+
|
|
14
|
+
# 挂载插件行。配置全部可选(默认即内置免费视觉端点 + 工具优先的图片流程),
|
|
15
|
+
# 可在 Web 设置 > 插件 > 插件配置 的「视觉路由」卡片里实时修改。
|
|
16
|
+
- insert:
|
|
17
|
+
- id: vision-router
|
|
18
|
+
name: dsh-vision-router
|
|
19
|
+
|
|
20
|
+
# 放宽附件图片限制(部署默认 5MB / 4000 万像素 → 20MB / 1 亿像素),
|
|
21
|
+
# 大尺寸设计稿/扫描图可过审。字段可选,不需要可在 profile 补丁层覆写。
|
|
22
|
+
- id: attachment-local
|
|
23
|
+
config:
|
|
24
|
+
maxImageBytes: 20971520
|
|
25
|
+
maxImagePixels: 100000000
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<!-- 注:本报告由自动调研生成(2026-08),presets 片段已按 llm-pi-ai 实际 schema 校正并放入 ../presets/。 -->
|
|
2
|
+
# dsh-vision-router 免费/内置视觉模型方案调研报告
|
|
3
|
+
|
|
4
|
+
> 调研时间:2026-08(快照)。方法:直接抓取 OpenRouter 官方 `GET https://openrouter.ai/api/v1/models`(411 个模型)交叉核对官方定价页与第三方免费额度库(pricepertoken、yangmao.ai、mintlify free-llm-api-resources、teamday.ai、阿里云/Cloudflare/Z.ai 官方文档)。所有额度/限速都可能随时变动,落地前务必以各平台控制台为准。
|
|
5
|
+
|
|
6
|
+
## 关键结论(先看这里)
|
|
7
|
+
|
|
8
|
+
1. **OpenRouter 免费视觉模型已大幅轮换**:用户熟悉的 `qwen-vl-plus:free`、`llama-4-scout:free`、`gemma-3-27b-it:free`、`llama-3.2-11b-vision:free` **均已从免费列表下架**(我抓取的实时 API 中均 ABSENT)。当前免费视觉模型变成了 **Google Gemma 4 与 NVIDIA Nemotron VL** 系列。用户已在用的 `qwen/qwen3-vl-235b-a22b-instruct` 是**付费模型**(约 $0.26/M in / $1.04/M out)。
|
|
9
|
+
2. **大陆直连最省事**:**阿里云百炼 DashScope**(新用户每个模型系列 100 万 token / 90 天,含 Qwen-VL 系列,OpenAI 兼容端点)> **智谱 Z.ai / bigmodel.cn**(`glm-4.6v-flash` 永久免费视觉)> **SiliconFlow**(¥14 赠金覆盖便宜 VL)。
|
|
10
|
+
3. **完全免 key 的视觉理解 API 目前不存在**:pollinations.ai 现在只有文本模型 `openai-fast`(`vision: false`),无 vision 模型。
|
|
11
|
+
4. **插件不可内置第三方密钥**(安全 + ToS),正确做法是仓库随附 **provider 预设 yaml**(baseURL + 免费 model id + `apiKeyEnv`),用户只填一个 key。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. OpenRouter 免费视觉模型
|
|
16
|
+
|
|
17
|
+
**是否需要 key**:需要(用户已有 OpenRouter key 即可直接用)。
|
|
18
|
+
**免费额度/限速**:所有免费模型共享一个总配额 —— **20 请求/分钟**;免费账户 **50 请求/天**;账户历史累计充值 ≥ $10 后提升到 **最高 1,000 请求/天**(20 req/min 不变)。上游供应商可能施加更紧的限制。(来源:mintlify free-llm-api-resources / teamday.ai / OpenRouter 官方模型 API)
|
|
19
|
+
|
|
20
|
+
**当前支持 image 输入的免费模型**(来源:OpenRouter 实时 API + teamday.ai 2026-08-03 快照):
|
|
21
|
+
|
|
22
|
+
| 精确 model id | 模态(输入) | 上下文 | 最大输出 | 用途/备注 |
|
|
23
|
+
|---|---|---|---|---|
|
|
24
|
+
| `google/gemma-4-26b-a4b-it:free` | image + text + video | 262,144 | 32,768 | **通用视觉理解,首选免费 VLM** |
|
|
25
|
+
| `google/gemma-4-31b-it:free` | image + text + video | 262,144 | 32,768 | 通用视觉理解,质量更高 |
|
|
26
|
+
| `nvidia/nemotron-nano-12b-v2-vl:free` | image + text + video | 128,000 | 128,000 | 视觉语言模型,输出上限大 |
|
|
27
|
+
| `nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free` | text + audio + image + video | 256,000 | 65,536 | 全模态,含推理 |
|
|
28
|
+
| `nvidia/nemotron-3.5-content-safety:free` | text + image | 128,000 | 8,192 | ⚠️ 内容安全分类器,非通用 VLM,勿用 |
|
|
29
|
+
| `google/lyria-3-pro-preview` / `google/lyria-3-clip-preview` | text + image | 1,048,576 | 65,536 | ⚠️ 音乐/音视频类,非通用图片理解(不确定) |
|
|
30
|
+
| `openrouter/free` | text + image | 200,000 | — | 免费模型路由(可过滤 image 能力),随机选模型 |
|
|
31
|
+
|
|
32
|
+
**关于用户点名的几个系列**(结论均为“免费变体已下架”或“不存在”):
|
|
33
|
+
- **qwen-vl 系列**:`qwen/qwen-vl-plus:free` 不存在了;付费的 `qwen/qwen2.5-vl-72b-instruct`、`qwen/qwen3-vl-8b/32b/235b-*` 仍在(付费)。
|
|
34
|
+
- **llama-4 系列**:`meta-llama/llama-4-scout:free` 不存在;`meta-llama/llama-4-scout`、`llama-4-maverick`(image 输入)为付费。
|
|
35
|
+
- **gemma-3 系列**:`google/gemma-3-27b-it:free` 不存在;付费 `gemma-3-4b/12b/27b-it` 仍在。免费档已升级为 **gemma-4**。
|
|
36
|
+
|
|
37
|
+
> ⚠️ 注意:OpenRouter 免费档近期频繁轮换(teamday 记录:一周内 15→14,前一周 20 个,数周内下架了 8 个)。不要把生产/长任务硬编码到某个 `:free` 端点。
|
|
38
|
+
|
|
39
|
+
**信息来源**:[OpenRouter models API](https://openrouter.ai/api/v1/models)、[teamday.ai: Best Free OpenRouter Models 2026](https://www.teamday.ai/blog/best-free-ai-models-openrouter-2026)、[mintlify: OpenRouter Free](https://mintlify.wiki/cheahjs/free-llm-api-resources/providers/free/openrouter)、[OpenRouter qwen-vl-plus:free 定价页](https://openrouter.ai/qwen/qwen-vl-plus:free/providers)
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 2. 其他免费视觉 API(带 key 但免费额度)
|
|
44
|
+
|
|
45
|
+
### 2.1 SiliconFlow 硅基流动(api.siliconflow.cn)—— 大陆直连 ✅
|
|
46
|
+
|
|
47
|
+
| 项 | 内容 |
|
|
48
|
+
|---|---|
|
|
49
|
+
| OpenAI 兼容 baseURL | `https://api.siliconflow.cn/v1` |
|
|
50
|
+
| 免费额度 | 新用户 **¥14 赠金**(约 2000 万 token 量级,具体以控制台为准);另有少量 `$0` 模型(当前为文本 Qwen3-8B、DeepSeek-R1-Distill-Qwen-7B、**DeepSeek-OCR** 等) |
|
|
51
|
+
| 免费视觉模型 | **不确定**:当前免费列表里未见“通用 VL”永久免费项;`DeepSeek-OCR` 是图像输入(文档 OCR,非通用理解)。历史上 `Qwen/Qwen2.5-VL-7B-Instruct` 曾免费,现需在控制台核对 |
|
|
52
|
+
| 推荐视觉 model id(便宜,赠金可覆盖) | `Qwen/Qwen2.5-VL-7B-Instruct`、`Qwen/Qwen2.5-VL-32B-Instruct`、`Qwen/Qwen3-VL-8B-Instruct`、`Qwen/Qwen3-VL-32B-Instruct` |
|
|
53
|
+
| 直连性 | 中国大陆**直连**,无需代理 |
|
|
54
|
+
|
|
55
|
+
**信息来源**:[pricepertoken: SiliconFlow Free Tier](https://pricepertoken.com/endpoints/siliconflow/free)、[yangmao.ai: SiliconFlow Free API](https://yangmao.ai/en/providers/siliconflow/free-api/)、[SiliconFlow 限速文档](https://docs.siliconflow.cn/cn/userguide/rate-limits/rate-limit-and-upgradation)
|
|
56
|
+
|
|
57
|
+
### 2.2 Z.ai / 智谱 GLM —— 大陆直连(bigmodel.cn)✅
|
|
58
|
+
|
|
59
|
+
| 项 | 内容 |
|
|
60
|
+
|---|---|
|
|
61
|
+
| OpenAI 兼容 baseURL | 国际版 `https://api.z.ai/v1`(可能需代理);大陆版 `https://open.bigmodel.cn/api/paas/v4`(直连) |
|
|
62
|
+
| 免费视觉模型(永久免费) | **`glm-4.6v-flash`(GLM-4.6V-Flash,Free)** |
|
|
63
|
+
| 限时免费视觉模型 | `glm-4.5v`(GLM-4.5V)、`glm-4.6v`(GLM-4.6V)、`glm-5v-turbo`(GLM-5V-Turbo)标记为 “Limited-time Free / 限时免费”(非永久,可能过期) |
|
|
64
|
+
| 其它视觉 model id | `glm-ocr`(OCR,极便宜 $0.03/M) |
|
|
65
|
+
| 关于 GLM-4V | 用户提到的老 **GLM-4V 已停用/被替代**,现行为 GLM-4.5V / 4.6V / 5V-Turbo |
|
|
66
|
+
| 是否需要 key | 需要(Z.ai 或 bigmodel.cn 的 API key) |
|
|
67
|
+
|
|
68
|
+
**信息来源**:[Z.AI 官方定价页](https://docs.z.ai/guides/overview/pricing)、[models.dev: Z.ai](https://models.dev/providers/zai/)、[Z.AI 概览文档](https://docs.z.ai/guides/overview/overview)
|
|
69
|
+
|
|
70
|
+
### 2.3 阿里云百炼 DashScope —— 大陆直连 ✅(综合最优)
|
|
71
|
+
|
|
72
|
+
| 项 | 内容 |
|
|
73
|
+
|---|---|
|
|
74
|
+
| OpenAI 兼容 baseURL | `https://dashscope.aliyuncs.com/compatible-mode/v1`(国际版 `https://dashscope-intl.aliyuncs.com/compatible-mode/v1`) |
|
|
75
|
+
| 免费额度 | 新用户开通后 **90 天**内,**每个模型系列 100 万 token**;覆盖「通义千问基础 / 垂直(OCR·Audio·Coder) / **多模态 Omni+VL 系列** / 第三方(DeepSeek·Kimi·GLM)」 |
|
|
76
|
+
| 视觉 model id | `qwen-vl-plus`、`qwen-vl-max`、`qwen2.5-vl-7b-instruct`、`qwen2.5-vl-72b-instruct`、`qwen3-vl-plus`、`qwen-vl-ocr`(OCR)、`qwen-omni-turbo`(全模态) |
|
|
77
|
+
| 是否需要 key | 需要(阿里云百炼 API key,控制台开通即得) |
|
|
78
|
+
| 直连性 | 中国大陆**直连** |
|
|
79
|
+
|
|
80
|
+
**信息来源**:[阿里云百炼新人免费额度(官方)](https://help.aliyun.com/zh/model-studio/new-free-quota)、[掘金:百炼新用户免费额度机制](https://juejin.cn/post/7594315259463516195)、[阿里云 Qwen-VL OpenAI 兼容(官方)](https://help.aliyun.com/zh/model-studio/qwen-vl-compatible-with-openai)
|
|
81
|
+
|
|
82
|
+
### 2.4 Groq —— 需代理,视觉可用性不确定
|
|
83
|
+
|
|
84
|
+
| 项 | 内容 |
|
|
85
|
+
|---|---|
|
|
86
|
+
| OpenAI 兼容 baseURL | `https://api.groq.com/openai/v1` |
|
|
87
|
+
| 免费额度 | **永久免费档**,限速约 **30 RPM / 6,000 TPM**(部分模型 15,000 TPM),无总量上限,免卡 |
|
|
88
|
+
| 免费模型 | Llama 3.3 70B、Llama 4 Scout 17B、Llama 4 Maverick 17B、Mixtral 8x7B、Gemma 2 9B、DeepSeek-R1-Distill-Llama-70B 等 |
|
|
89
|
+
| 视觉支持 | Groq 有 vision 支持(历史上 `llama-3.2-11b-vision-preview`、`llama-3.2-90b-vision-preview`;Llama 4 Scout/Maverick 原生多模态)。但**免费档哪个视觉模型当前可用 = 不确定**,需用 Groq 模型列表核对 |
|
|
90
|
+
| 直连性 | 中国大陆**通常需代理**,直连不稳定 |
|
|
91
|
+
|
|
92
|
+
**信息来源**:[yangmao.ai: Groq Free Tier](https://yangmao.ai/en/providers/groq/free-tier/)、[Groq 限速文档](https://console.groq.com/docs/rate-limits)、[langchain PR #34620(Groq vision 支持)](https://github.com/langchain-ai/langchain/pull/34620)
|
|
93
|
+
|
|
94
|
+
### 2.5 Cloudflare Workers AI —— 免费额度大,但接入较绕、大陆不友好
|
|
95
|
+
|
|
96
|
+
| 项 | 内容 |
|
|
97
|
+
|---|---|
|
|
98
|
+
| 免费额度 | 每个账户 **每天 10,000 免费 Neurons**(Workers Free 计划),每日 00:00 UTC 重置,免卡;超额按 $0.011/1K Neurons 计费 |
|
|
99
|
+
| 视觉模型 | `@cf/meta/llama-3.2-11b-vision-instruct`(首次使用需先向 Meta 同意 License)、Llama 4 Scout 17B 16E Instruct 等 |
|
|
100
|
+
| 认证 | 需要 **Cloudflare 账户 + Account ID + API Token(Bearer)** |
|
|
101
|
+
| OpenAI 兼容端点 | 原生 REST `https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/{MODEL}`;也有 OpenAI 兼容风格 `/ai/v1/chat/completions`(**不确定**是否与 pi-ai 完全兼容) |
|
|
102
|
+
| 直连性 | 中国大陆访问 Cloudflare API 不稳定,接入配置(Account ID + Token + License 同意)较绕 |
|
|
103
|
+
|
|
104
|
+
**信息来源**:[pricepertoken: Cloudflare Workers AI Free Tier](https://pricepertoken.com/endpoints/cloudflare/free)、[Cloudflare llama-vision 官方教程](https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/docs/workers-ai/guides/tutorials/llama-vision-tutorial.mdx)
|
|
105
|
+
|
|
106
|
+
### 2.6 GitHub Models —— 免费档已收窄,需 Copilot、大陆需代理
|
|
107
|
+
|
|
108
|
+
| 项 | 内容 |
|
|
109
|
+
|---|---|
|
|
110
|
+
| OpenAI 兼容 baseURL | `https://models.github.ai/inference`(旧 `https://models.inference.ai.azure.com` 已于 2025-07 弃用) |
|
|
111
|
+
| 免费额度 | **免费档请求数很有限**;限速按 GitHub **Copilot 订阅档位**(Free / Pro / Pro+ / Business / Enterprise)递增;单请求 token 上限**极严** |
|
|
112
|
+
| 视觉模型 | `gpt-4o`、`gpt-4o-mini`、`gpt-4.1`、`gpt-4.1-mini`(均支持 image);`Llama-3.2-11B-Vision-Instruct`、`Llama-3.2-90B-Vision-Instruct`、`Llama-4-Scout`、`Llama-4-Maverick` |
|
|
113
|
+
| token 获取 | GitHub **Personal Access Token(PAT)** 或 Copilot token |
|
|
114
|
+
| 直连性 | 中国大陆**需代理** |
|
|
115
|
+
|
|
116
|
+
> ⚠️ 注意:GitHub Models 的免费/开放 API 路线在 2025 年中已被 GitHub Copilot 体系吸收,`gpt-4o` 在 GitHub Models 上被弃用(转向 gpt-4.1 系)。它不是“开箱即用免费”的首选。
|
|
117
|
+
|
|
118
|
+
**信息来源**:[GitHub Changelog:Azure endpoint 弃用](https://github.blog/changelog/2025-07-17-deprecation-of-azure-endpoint-for-github-models/)、[mintlify: GitHub Models](https://mintlify.wiki/cheahjs/free-llm-api-resources/providers/free/github-models)、[GitHub Models 迁移说明](https://www.nocode.tech/article/github-models-dies-july-30-heres-where-to-migrate-your-no-code-ai-backend)
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 3. 完全免 key 的视觉 API
|
|
123
|
+
|
|
124
|
+
**结论:目前不存在可稳定使用的“零注册/零密钥”视觉理解 API。**
|
|
125
|
+
|
|
126
|
+
- **pollinations.ai**:实测其 OpenAI 兼容模型列表(`https://text.pollinations.ai/openai/models`)目前**只有一个文本模型 `openai-fast`(GPT-OSS 20B,`vision: false`,`input_modalities: ["text"]`)**。它免费做的是**文生图**(`image.pollinations.ai`)和文本生成,**没有视觉理解(image input → 描述)模型**。
|
|
127
|
+
- 其余“免 key”聚合端点多为文本/生图,且**稳定性差、无 SLA、随时变更**,不适合做插件默认视觉后端。
|
|
128
|
+
|
|
129
|
+
**信息来源**:[pollinations models 端点实测](https://text.pollinations.ai/openai/models)、[pollinations README](https://github.com/learn05/pollinations-AI/blob/master/pollinator-agent/README-pollinations.md)
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 4. “预先内置”的落地建议(provider 预设,不内置密钥)
|
|
134
|
+
## 4. “预先内置”的落地建议(provider 预设,不内置密钥)
|
|
135
|
+
|
|
136
|
+
**原则**:绝不把第三方 key 写进仓库(安全 + 违反 ToS)。本仓库随附 [`presets/`](../presets/) 目录:
|
|
137
|
+
每个供应商一份按 llm-pi-ai 实际 schema 校正过的 `settings.yaml` 片段(`api: openai-completions` +
|
|
138
|
+
`baseURL` + 免费/便宜 model id + `apiKeyEnv`,`input: [text, image]`),用户只填一个 Key 即用。
|
|
139
|
+
|
|
140
|
+
当前内置清单:
|
|
141
|
+
|
|
142
|
+
| 预设 | 平台 | 免费视觉模型 | 直连 | 说明 |
|
|
143
|
+
|---|---|---|---|---|
|
|
144
|
+
| `presets/dashscope.yaml` | 阿里云百炼 | `qwen-vl-plus`、`qwen2.5-vl-7b-instruct` | ✅ | 新用户每系列 100 万 token/90 天(综合最优) |
|
|
145
|
+
| `presets/zai.yaml` | 智谱 bigmodel.cn | `glm-4.6v-flash` | ✅ | **永久免费** |
|
|
146
|
+
| `presets/siliconflow.yaml` | 硅基流动 | `Qwen/Qwen2.5-VL-7B/32B-Instruct` | ✅ | ¥14 赠金覆盖 |
|
|
147
|
+
| `presets/openrouter.yaml` | OpenRouter | `google/gemma-4-31b-it:free` 等 | 需代理 | 50 次/天;免费名单轮换频繁 |
|
|
148
|
+
| `presets/ovh.yaml` | OVHcloud AI Endpoints | `Qwen2.5-VL-72B-Instruct` | ✅ | **免注册免 Key**(2 次/分钟/IP);已内置为插件默认 httpProviders |
|
|
149
|
+
|
|
150
|
+
## 5. 结论与推荐顺序
|
|
151
|
+
|
|
152
|
+
① 百炼 DashScope(额度最大 + 直连)> ② 智谱 bigmodel.cn `glm-4.6v-flash`(永久免费 + 直连)>
|
|
153
|
+
③ SiliconFlow(直连 + 赠金)> ④ OpenRouter(已有 key,`gemma-4:free`,需代理)>
|
|
154
|
+
⑤ Cloudflare(额度大但接入绕)> ⑥ GitHub Models(已收窄)> ⑦ Groq(需代理,视觉可用性不确定)>
|
|
155
|
+
⑧ pollinations(无视觉理解)。
|
|
156
|
+
|
|
157
|
+
## 6. 不确定项
|
|
158
|
+
|
|
159
|
+
- SiliconFlow 通用 VL 是否永久免费:官方未明示,赠金用完后以账单为准;
|
|
160
|
+
- Groq 免费档视觉模型可用性:官方免费层主要是文本模型;
|
|
161
|
+
- Cloudflare Workers AI 的 OpenAI 兼容端点兼容性:官方端点非 OpenAI 形状,需网关转换;
|
|
162
|
+
- Z.ai 除 `glm-4.6v-flash` 外各 VL 的限时免费截止时间;
|
|
163
|
+
- OpenRouter 免费名单轮换风险:数周内已下架 `qwen-vl-plus:free`、`llama-4-scout:free`、
|
|
164
|
+
`gemma-3-27b-it:free`、`llama-3.2-11b-vision:free` 等,本节数据以报告生成当日为准。
|
|
165
|
+
|
|
166
|
+
> 所有来源链接见上文各节;免费额度、模型名称、地区可用性均可能变化,使用前请以官方页面为准。
|