dsh-deepseek-web-login 0.2.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/CHANGELOG.md +3165 -0
- package/LICENSE +202 -0
- package/NOTICE +12 -0
- package/README.en.md +510 -0
- package/README.md +673 -0
- package/cordis.patch.yml +6 -0
- package/docs/assets/architecture.svg +264 -0
- package/docs/assets/banner-dsh-deepseek-web-login.jpg +0 -0
- package/docs/assets/hero.svg +53 -0
- package/docs/assets/login-flow.svg +307 -0
- package/docs/assets/panel-preview.svg +64 -0
- package/docs/assets/qq-group.jpg +0 -0
- package/docs/assets/screenshot-settings.png +0 -0
- package/docs/assets/screenshot-usage-stats.png +0 -0
- package/docs/assets/tool-bridge.svg +276 -0
- package/lib/client.js +2165 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +9585 -0
- package/lib/index.js.map +1 -0
- package/package.json +79 -0
- package/scripts/build.mjs +59 -0
- package/scripts/build.sh +6 -0
- package/scripts/make-dev-copy.mjs +49 -0
- package/scripts/prepare.mjs +25 -0
- package/tools/changelog-section.mjs +42 -0
- package/tools/inspect-session.mjs +223 -0
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
<svg data-theme="light" width="1220" height="642" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1220 642" role="img" lang="zh-CN" aria-labelledby="archify-diagram-title archify-diagram-description" data-preset="classic" data-quality-profile="showcase">
|
|
2
|
+
<style>
|
|
3
|
+
<![CDATA[
|
|
4
|
+
svg {
|
|
5
|
+
|
|
6
|
+
--bg: #f8fafc;
|
|
7
|
+
--grid: #e2e8f0;
|
|
8
|
+
--text: #0f172a;
|
|
9
|
+
--text-muted: #64748b;
|
|
10
|
+
--text-dim: #94a3b8;
|
|
11
|
+
--text-faint: #64748b;
|
|
12
|
+
|
|
13
|
+
--panel: #ffffff;
|
|
14
|
+
--panel-border: #e2e8f0;
|
|
15
|
+
--lane-fill: rgba(248, 250, 252, 0.65);
|
|
16
|
+
--lane-stroke: #cbd5e1;
|
|
17
|
+
|
|
18
|
+
--arrow: #94a3b8;
|
|
19
|
+
--arrow-emphasis: #059669;
|
|
20
|
+
|
|
21
|
+
--mask: #ffffff;
|
|
22
|
+
|
|
23
|
+
--frontend-fill: rgba(34, 211, 238, 0.15);
|
|
24
|
+
--frontend-stroke: #0891b2;
|
|
25
|
+
--backend-fill: rgba(52, 211, 153, 0.18);
|
|
26
|
+
--backend-stroke: #059669;
|
|
27
|
+
--database-fill: rgba(167, 139, 250, 0.2);
|
|
28
|
+
--database-stroke: #7c3aed;
|
|
29
|
+
--cloud-fill: rgba(251, 191, 36, 0.18);
|
|
30
|
+
--cloud-stroke: #d97706;
|
|
31
|
+
--security-fill: rgba(251, 113, 133, 0.15);
|
|
32
|
+
--security-stroke: #e11d48;
|
|
33
|
+
--messagebus-fill: rgba(251, 146, 60, 0.15);
|
|
34
|
+
--messagebus-stroke:#ea580c;
|
|
35
|
+
--external-fill: rgba(148, 163, 184, 0.18);
|
|
36
|
+
--external-stroke: #64748b;
|
|
37
|
+
|
|
38
|
+
--toolbar-bg: rgba(255, 255, 255, 0.92);
|
|
39
|
+
--toolbar-border: #cbd5e1;
|
|
40
|
+
--toolbar-text: #334155;
|
|
41
|
+
--toolbar-hover: #ffffff;
|
|
42
|
+
--toolbar-menu-bg: #ffffff;
|
|
43
|
+
}
|
|
44
|
+
svg .archify-export-bg { fill: var(--bg); }
|
|
45
|
+
/* ========================================================== SVG SEMANTIC CLASSES — use these instead of inline fill/stroke ========================================================== */ .c-grid { stroke: var(--grid); fill: none; }
|
|
46
|
+
.c-mask { fill: var(--mask); stroke: none; }
|
|
47
|
+
.c-frontend { fill: var(--frontend-fill); stroke: var(--frontend-stroke); }
|
|
48
|
+
.c-backend { fill: var(--backend-fill); stroke: var(--backend-stroke); }
|
|
49
|
+
.c-database { fill: var(--database-fill); stroke: var(--database-stroke); }
|
|
50
|
+
.c-cloud { fill: var(--cloud-fill); stroke: var(--cloud-stroke); }
|
|
51
|
+
.c-external { fill: var(--external-fill); stroke: var(--external-stroke); }
|
|
52
|
+
/* Text helpers */ .t-primary { fill: var(--text); }
|
|
53
|
+
.t-muted { fill: var(--text-muted); }
|
|
54
|
+
.t-backend { fill: var(--backend-stroke); }
|
|
55
|
+
.t-database { fill: var(--database-stroke); }
|
|
56
|
+
.t-cloud { fill: var(--cloud-stroke); }
|
|
57
|
+
.t-messagebus { fill: var(--messagebus-stroke); }
|
|
58
|
+
.t-external { fill: var(--external-stroke); }
|
|
59
|
+
/* Semantic Sigils are small authored role stamps, not icons from a brand pack and not viewer controls. Prefix selectors with svg so the canonical export's SVG-only stylesheet collector keeps them automatically. */ svg .semantic-sigil { fill: none; stroke: currentColor; stroke-width: 1.35; stroke-linecap: round; stroke-linejoin: round; opacity: 0.76; pointer-events: none; }
|
|
60
|
+
svg .semantic-sigil > * { vector-effect: non-scaling-stroke; }
|
|
61
|
+
svg .semantic-sigil .sigil-fill { fill: currentColor; stroke: none; }
|
|
62
|
+
svg .s-frontend { color: var(--frontend-stroke); }
|
|
63
|
+
svg .s-backend { color: var(--backend-stroke); }
|
|
64
|
+
svg .s-database { color: var(--database-stroke); }
|
|
65
|
+
svg .s-cloud { color: var(--cloud-stroke); }
|
|
66
|
+
svg .s-external { color: var(--external-stroke); }
|
|
67
|
+
/* Arrows */ .a-default { stroke: var(--arrow); fill: none; }
|
|
68
|
+
.a-emphasis { stroke: var(--arrow-emphasis); fill: none; }
|
|
69
|
+
.a-dashed { stroke: var(--database-stroke); fill: none; stroke-dasharray: 4,4; }
|
|
70
|
+
/* Arrowhead markers reference these */ .m-default { fill: var(--arrow); }
|
|
71
|
+
.m-emphasis { fill: var(--arrow-emphasis); }
|
|
72
|
+
.m-security { fill: var(--security-stroke); }
|
|
73
|
+
.m-dashed { fill: var(--database-stroke); }
|
|
74
|
+
]]>
|
|
75
|
+
</style>
|
|
76
|
+
<rect width="100%" height="100%" class="archify-export-bg"/>
|
|
77
|
+
|
|
78
|
+
<title id="archify-diagram-title">架构与数据流:DSH agent loop 与 chat.deepseek.com 网页端</title>
|
|
79
|
+
<desc id="archify-diagram-description">由 Archify 生成的架构图。</desc>
|
|
80
|
+
<!-- Definitions -->
|
|
81
|
+
<defs>
|
|
82
|
+
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
83
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-default" />
|
|
84
|
+
</marker>
|
|
85
|
+
<marker id="arrowhead-emphasis" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
86
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-emphasis" />
|
|
87
|
+
</marker>
|
|
88
|
+
<marker id="arrowhead-security" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
89
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-security" />
|
|
90
|
+
</marker>
|
|
91
|
+
<marker id="arrowhead-dashed" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
92
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-dashed" />
|
|
93
|
+
</marker>
|
|
94
|
+
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
|
|
95
|
+
<path d="M 40 0 L 0 0 0 40" class="c-grid" stroke-width="0.5"/>
|
|
96
|
+
</pattern>
|
|
97
|
+
</defs>
|
|
98
|
+
|
|
99
|
+
<!-- Background Grid -->
|
|
100
|
+
<rect width="100%" height="100%" fill="url(#grid)" />
|
|
101
|
+
|
|
102
|
+
<!-- Boundaries (behind everything) -->
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
<!-- Connection paths (before components for correct z-order) -->
|
|
106
|
+
<path data-edge-from="agent" data-edge-to="adapter" data-edge-label="ctx.llm.stream()" data-edge-key="0" data-edge-id="agent-call" data-composition-points="280,206;370,206" d="M 280 206 L 370 206" class="a-emphasis" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
107
|
+
<path data-edge-from="adapter" data-edge-to="agent" data-edge-label="tool-call 块回灌" data-edge-key="1" data-edge-id="toolcall-return" data-composition-points="520,128;520,104;160,104;160,150" d="M 520 128 L 520 112 Q 520 104 512 104 L 168 104 Q 160 104 160 112 L 160 150" class="a-dashed" stroke-width="1.5" marker-end="url(#arrowhead-dashed)"/>
|
|
108
|
+
<path data-edge-from="adapter" data-edge-to="web" data-edge-label="HTTPS 私有接口" data-edge-key="2" data-edge-id="adapter-http" data-composition-points="670,206;760,206" d="M 670 206 L 760 206" class="a-emphasis" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
109
|
+
<path data-edge-from="web" data-edge-to="adapter" data-edge-label="SSE patch 流" data-edge-key="3" data-edge-id="sse-return" data-composition-points="920,262;920,308;513,308;513,284" d="M 920 262 L 920 300 Q 920 308 912 308 L 521 308 Q 513 308 513 300 L 513 284" class="a-dashed" stroke-width="1.5" marker-end="url(#arrowhead-dashed)"/>
|
|
110
|
+
<path data-edge-from="panel" data-edge-to="hostapi" data-edge-label="HTTP API" data-edge-key="4" data-edge-id="panel-api" data-composition-points="220,522;320,522" d="M 220 522 L 320 522" class="a-default" stroke-width="1.5" marker-end="url(#arrowhead)"/>
|
|
111
|
+
<path data-edge-from="hostapi" data-edge-to="login" data-edge-label="启动窗口" data-edge-key="5" data-edge-id="api-login" data-composition-points="520,522;620,522" d="M 520 522 L 620 522" class="a-default" stroke-width="1.5" marker-end="url(#arrowhead)"/>
|
|
112
|
+
<path data-edge-from="login" data-edge-to="creds" data-edge-label="旁路捕获" data-edge-key="6" data-edge-id="login-capture" data-composition-points="820,522;920,522" d="M 820 522 L 920 522" class="a-default" stroke-width="1.5" marker-end="url(#arrowhead)"/>
|
|
113
|
+
<path data-edge-from="creds" data-edge-to="adapter" data-edge-label="读取凭证" data-edge-key="7" data-edge-id="creds-read" data-composition-points="1050,470;1050,377;527,377;527,284" d="M 1050 470 L 1050 385 Q 1050 377 1042 377 L 535 377 Q 527 377 527 369 L 527 284" class="a-emphasis" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
114
|
+
|
|
115
|
+
<!-- Components -->
|
|
116
|
+
<g id="node-agent" data-node-id="agent" data-node-label="DSH agent loop" tabindex="0" role="button" aria-label="聚焦DSH agent loop,messages / system / tools, 架构组件" aria-pressed="false" data-node-kind="backend" data-node-sublabel="messages / system / tools" data-node-tag="压缩 · 会话日志 · 重试" data-node-context="架构组件">
|
|
117
|
+
<title>DSH agent loop · messages / system / tools · 架构组件 · 压缩 · 会话日志 · 重试</title>
|
|
118
|
+
<rect x="40" y="150" width="240" height="112" rx="6" class="c-mask"/>
|
|
119
|
+
<rect x="40" y="150" width="240" height="112" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
120
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(46 156) scale(0.6875)">
|
|
121
|
+
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
122
|
+
</g>
|
|
123
|
+
<text data-node-label="" data-detail-anchor="" x="160" y="204" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">DSH agent loop</text>
|
|
124
|
+
<text data-detail="context" x="160" y="220" class="t-muted" font-size="9" text-anchor="middle">messages / system / tools</text>
|
|
125
|
+
<text data-detail="fine" x="160" y="254" class="t-backend" font-size="7" text-anchor="middle">压缩 · 会话日志 · 重试</text>
|
|
126
|
+
</g>
|
|
127
|
+
|
|
128
|
+
<g id="node-adapter" data-node-id="adapter" data-node-label="deepseek-web 适配器" tabindex="0" role="button" aria-label="聚焦deepseek-web 适配器,ctx.llm provider, 架构组件" aria-pressed="false" data-node-kind="backend" data-node-sublabel="ctx.llm provider" data-node-tag="PoW · SSE · 工具协议桥" data-node-context="架构组件">
|
|
129
|
+
<title>deepseek-web 适配器 · ctx.llm provider · 架构组件 · PoW · SSE · 工具协议桥</title>
|
|
130
|
+
<rect x="370" y="128" width="300" height="156" rx="6" class="c-mask"/>
|
|
131
|
+
<rect x="370" y="128" width="300" height="156" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
132
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(376 134) scale(0.6875)">
|
|
133
|
+
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
134
|
+
</g>
|
|
135
|
+
<text data-node-label="" data-detail-anchor="" x="520" y="204" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">deepseek-web 适配器</text>
|
|
136
|
+
<text data-detail="context" x="520" y="220" class="t-muted" font-size="9" text-anchor="middle">ctx.llm provider</text>
|
|
137
|
+
<text data-detail="fine" x="520" y="276" class="t-backend" font-size="7" text-anchor="middle">PoW · SSE · 工具协议桥</text>
|
|
138
|
+
</g>
|
|
139
|
+
|
|
140
|
+
<g id="node-web" data-node-id="web" data-node-label="chat.deepseek.com" tabindex="0" role="button" aria-label="聚焦chat.deepseek.com,网页端私有接口, 架构组件" aria-pressed="false" data-node-kind="cloud" data-node-sublabel="网页端私有接口" data-node-tag="create_pow_challenge" data-node-context="架构组件">
|
|
141
|
+
<title>chat.deepseek.com · 网页端私有接口 · 架构组件 · create_pow_challenge</title>
|
|
142
|
+
<rect x="760" y="150" width="320" height="112" rx="6" class="c-mask"/>
|
|
143
|
+
<rect x="760" y="150" width="320" height="112" rx="6" class="c-cloud" stroke-width="1.5"/>
|
|
144
|
+
<g aria-hidden="true" data-semantic-sigil="cloud" class="semantic-sigil s-cloud" transform="translate(766 156) scale(0.6875)">
|
|
145
|
+
<path d="M4.3 12.5h7.3a2.4 2.4 0 0 0 .2-4.8 4 4 0 0 0-7.5-1.3A3.1 3.1 0 0 0 4.3 12.5Z"/>
|
|
146
|
+
</g>
|
|
147
|
+
<text data-node-label="" data-detail-anchor="" x="920" y="204" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">chat.deepseek.com</text>
|
|
148
|
+
<text data-detail="context" x="920" y="220" class="t-muted" font-size="9" text-anchor="middle">网页端私有接口</text>
|
|
149
|
+
<text data-detail="fine" x="920" y="254" class="t-cloud" font-size="7" text-anchor="middle">create_pow_challenge</text>
|
|
150
|
+
</g>
|
|
151
|
+
|
|
152
|
+
<g id="node-panel" data-node-id="panel" data-node-label="DSH 设置面板" tabindex="0" role="button" aria-label="聚焦DSH 设置面板,登录 / 恢复 / 测试, 架构组件" aria-pressed="false" data-node-kind="frontend" data-node-sublabel="登录 / 恢复 / 测试" data-node-context="架构组件">
|
|
153
|
+
<title>DSH 设置面板 · 登录 / 恢复 / 测试 · 架构组件</title>
|
|
154
|
+
<rect x="40" y="470" width="180" height="104" rx="6" class="c-mask"/>
|
|
155
|
+
<rect x="40" y="470" width="180" height="104" rx="6" class="c-frontend" stroke-width="1.5"/>
|
|
156
|
+
<g aria-hidden="true" data-semantic-sigil="frontend" class="semantic-sigil s-frontend" transform="translate(46 476) scale(0.6875)">
|
|
157
|
+
<rect x="2" y="3" width="12" height="10" rx="2"/>
|
|
158
|
+
<path d="M2 6.5h12"/>
|
|
159
|
+
<circle cx="4.1" cy="4.8" r=".7" class="sigil-fill"/>
|
|
160
|
+
<circle cx="6.3" cy="4.8" r=".7" class="sigil-fill"/>
|
|
161
|
+
</g>
|
|
162
|
+
<text data-node-label="" data-detail-anchor="" x="130" y="520" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">DSH 设置面板</text>
|
|
163
|
+
<text data-detail="context" x="130" y="536" class="t-muted" font-size="9" text-anchor="middle">登录 / 恢复 / 测试</text>
|
|
164
|
+
</g>
|
|
165
|
+
|
|
166
|
+
<g id="node-hostapi" data-node-id="hostapi" data-node-label="插件 host API" tabindex="0" role="button" aria-label="聚焦插件 host API,/deepseek-web-login/api/*, 架构组件" aria-pressed="false" data-node-kind="backend" data-node-sublabel="/deepseek-web-login/api/*" data-node-context="架构组件">
|
|
167
|
+
<title>插件 host API · /deepseek-web-login/api/* · 架构组件</title>
|
|
168
|
+
<rect x="320" y="470" width="200" height="104" rx="6" class="c-mask"/>
|
|
169
|
+
<rect x="320" y="470" width="200" height="104" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
170
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(326 476) scale(0.6875)">
|
|
171
|
+
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
172
|
+
</g>
|
|
173
|
+
<text data-node-label="" data-detail-anchor="" x="420" y="520" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">插件 host API</text>
|
|
174
|
+
<text data-detail="context" x="420" y="536" class="t-muted" font-size="9" text-anchor="middle">/deepseek-web-login/api/*</text>
|
|
175
|
+
</g>
|
|
176
|
+
|
|
177
|
+
<g id="node-login" data-node-id="login" data-node-label="浏览器登录窗口" tabindex="0" role="button" aria-label="聚焦浏览器登录窗口,Edge / Chrome + CDP, 架构组件" aria-pressed="false" data-node-kind="external" data-node-sublabel="Edge / Chrome + CDP" data-node-tag="干净 UA · persist 分区" data-node-context="架构组件">
|
|
178
|
+
<title>浏览器登录窗口 · Edge / Chrome + CDP · 架构组件 · 干净 UA · persist 分区</title>
|
|
179
|
+
<rect x="620" y="470" width="200" height="104" rx="6" class="c-mask"/>
|
|
180
|
+
<rect x="620" y="470" width="200" height="104" rx="6" class="c-external" stroke-width="1.5"/>
|
|
181
|
+
<g aria-hidden="true" data-semantic-sigil="external" class="semantic-sigil s-external" transform="translate(626 476) scale(0.6875)">
|
|
182
|
+
<rect x="2.5" y="5" width="8.5" height="8" rx="1.5"/>
|
|
183
|
+
<path d="M8 2.5h5.5V8M13.5 2.5 7.5 8.5"/>
|
|
184
|
+
</g>
|
|
185
|
+
<text data-node-label="" data-detail-anchor="" x="720" y="520" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">浏览器登录窗口</text>
|
|
186
|
+
<text data-detail="context" x="720" y="536" class="t-muted" font-size="9" text-anchor="middle">Edge / Chrome + CDP</text>
|
|
187
|
+
<text data-detail="fine" x="720" y="566" class="t-external" font-size="7" text-anchor="middle">干净 UA · persist 分区</text>
|
|
188
|
+
</g>
|
|
189
|
+
|
|
190
|
+
<g id="node-creds" data-node-id="creds" data-node-label="凭证(本机)" tabindex="0" role="button" aria-label="聚焦凭证(本机),~/.dsh/web-login/, 架构组件" aria-pressed="false" data-node-kind="database" data-node-sublabel="~/.dsh/web-login/" data-node-tag="token · cookie · x-hif-*" data-node-context="架构组件">
|
|
191
|
+
<title>凭证(本机) · ~/.dsh/web-login/ · 架构组件 · token · cookie · x-hif-*</title>
|
|
192
|
+
<rect x="920" y="470" width="260" height="104" rx="6" class="c-mask"/>
|
|
193
|
+
<rect x="920" y="470" width="260" height="104" rx="6" class="c-database" stroke-width="1.5"/>
|
|
194
|
+
<g aria-hidden="true" data-semantic-sigil="database" class="semantic-sigil s-database" transform="translate(926 476) scale(0.6875)">
|
|
195
|
+
<ellipse cx="8" cy="4" rx="5" ry="2"/>
|
|
196
|
+
<path d="M3 4v8c0 1.1 2.2 2 5 2s5-.9 5-2V4M3 8c0 1.1 2.2 2 5 2s5-.9 5-2"/>
|
|
197
|
+
</g>
|
|
198
|
+
<text data-node-label="" data-detail-anchor="" x="1050" y="520" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">凭证(本机)</text>
|
|
199
|
+
<text data-detail="context" x="1050" y="536" class="t-muted" font-size="9" text-anchor="middle">~/.dsh/web-login/</text>
|
|
200
|
+
<text data-detail="fine" x="1050" y="566" class="t-database" font-size="7" text-anchor="middle">token · cookie · x-hif-*</text>
|
|
201
|
+
</g>
|
|
202
|
+
|
|
203
|
+
<!-- Connection labels -->
|
|
204
|
+
<g data-detail="context" data-edge-from="agent" data-edge-to="adapter" data-edge-label="ctx.llm.stream()" data-edge-key="0" data-edge-id="agent-call">
|
|
205
|
+
<rect x="281.6" y="186" width="86.8" height="14" rx="3" class="c-mask"/>
|
|
206
|
+
<text x="325" y="196" class="t-backend" font-size="8" text-anchor="middle">ctx.llm.stream()</text>
|
|
207
|
+
</g>
|
|
208
|
+
<g data-detail="context" data-edge-from="adapter" data-edge-to="agent" data-edge-label="tool-call 块回灌" data-edge-key="1" data-edge-id="toolcall-return">
|
|
209
|
+
<rect x="296.6" y="84" width="86.8" height="14" rx="3" class="c-mask"/>
|
|
210
|
+
<text x="340" y="94" class="t-messagebus" font-size="8" text-anchor="middle">tool-call 块回灌</text>
|
|
211
|
+
</g>
|
|
212
|
+
<g data-detail="context" data-edge-from="adapter" data-edge-to="web" data-edge-label="HTTPS 私有接口" data-edge-key="2" data-edge-id="adapter-http">
|
|
213
|
+
<rect x="676.4" y="186" width="77.2" height="14" rx="3" class="c-mask"/>
|
|
214
|
+
<text x="715" y="196" class="t-backend" font-size="8" text-anchor="middle">HTTPS 私有接口</text>
|
|
215
|
+
</g>
|
|
216
|
+
<g data-detail="context" data-edge-from="web" data-edge-to="adapter" data-edge-label="SSE patch 流" data-edge-key="3" data-edge-id="sse-return">
|
|
217
|
+
<rect x="682.7" y="288" width="67.6" height="14" rx="3" class="c-mask"/>
|
|
218
|
+
<text x="716.5" y="298" class="t-messagebus" font-size="8" text-anchor="middle">SSE patch 流</text>
|
|
219
|
+
</g>
|
|
220
|
+
<g data-detail="context" data-edge-from="panel" data-edge-to="hostapi" data-edge-label="HTTP API" data-edge-key="4" data-edge-id="panel-api">
|
|
221
|
+
<rect x="245.8" y="502" width="48.4" height="14" rx="3" class="c-mask"/>
|
|
222
|
+
<text x="270" y="512" class="t-muted" font-size="8" text-anchor="middle">HTTP API</text>
|
|
223
|
+
</g>
|
|
224
|
+
<g data-detail="context" data-edge-from="hostapi" data-edge-to="login" data-edge-label="启动窗口" data-edge-key="5" data-edge-id="api-login">
|
|
225
|
+
<rect x="545.8" y="502" width="48.4" height="14" rx="3" class="c-mask"/>
|
|
226
|
+
<text x="570" y="512" class="t-muted" font-size="8" text-anchor="middle">启动窗口</text>
|
|
227
|
+
</g>
|
|
228
|
+
<g data-detail="context" data-edge-from="login" data-edge-to="creds" data-edge-label="旁路捕获" data-edge-key="6" data-edge-id="login-capture">
|
|
229
|
+
<rect x="845.8" y="502" width="48.4" height="14" rx="3" class="c-mask"/>
|
|
230
|
+
<text x="870" y="512" class="t-muted" font-size="8" text-anchor="middle">旁路捕获</text>
|
|
231
|
+
</g>
|
|
232
|
+
<g data-detail="context" data-edge-from="creds" data-edge-to="adapter" data-edge-label="读取凭证" data-edge-key="7" data-edge-id="creds-read">
|
|
233
|
+
<rect x="764.3" y="357" width="48.4" height="14" rx="3" class="c-mask"/>
|
|
234
|
+
<text x="788.5" y="367" class="t-backend" font-size="8" text-anchor="middle">读取凭证</text>
|
|
235
|
+
</g>
|
|
236
|
+
|
|
237
|
+
<!-- Boundary labels (foreground masks keep routes out of titles) -->
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
<!-- Legend -->
|
|
241
|
+
<g data-legend="" data-legend-bridge="">
|
|
242
|
+
<text x="40" y="606" class="t-primary" font-size="12" font-weight="650">图例</text>
|
|
243
|
+
<g data-legend-semantic-kind="frontend" data-legend-kind="frontend" data-legend-label="前端" data-legend-x="40" data-legend-baseline="626" data-legend-width="63">
|
|
244
|
+
<rect x="40" y="617" width="16" height="10" rx="2.5" class="c-frontend" stroke-width="1"/>
|
|
245
|
+
<text x="62" y="626" class="t-muted" font-size="10" font-weight="500">前端</text>
|
|
246
|
+
</g>
|
|
247
|
+
<g data-legend-semantic-kind="backend" data-legend-kind="backend" data-legend-label="后端" data-legend-x="125" data-legend-baseline="626" data-legend-width="63">
|
|
248
|
+
<rect x="125" y="617" width="16" height="10" rx="2.5" class="c-backend" stroke-width="1"/>
|
|
249
|
+
<text x="147" y="626" class="t-muted" font-size="10" font-weight="500">后端</text>
|
|
250
|
+
</g>
|
|
251
|
+
<g data-legend-semantic-kind="database" data-legend-kind="database" data-legend-label="数据库" data-legend-x="210" data-legend-baseline="626" data-legend-width="73">
|
|
252
|
+
<rect x="210" y="617" width="16" height="10" rx="2.5" class="c-database" stroke-width="1"/>
|
|
253
|
+
<text x="232" y="626" class="t-muted" font-size="10" font-weight="500">数据库</text>
|
|
254
|
+
</g>
|
|
255
|
+
<g data-legend-semantic-kind="cloud" data-legend-kind="cloud" data-legend-label="云服务" data-legend-x="305" data-legend-baseline="626" data-legend-width="73">
|
|
256
|
+
<rect x="305" y="617" width="16" height="10" rx="2.5" class="c-cloud" stroke-width="1"/>
|
|
257
|
+
<text x="327" y="626" class="t-muted" font-size="10" font-weight="500">云服务</text>
|
|
258
|
+
</g>
|
|
259
|
+
<g data-legend-semantic-kind="external" data-legend-kind="external" data-legend-label="外部系统" data-legend-x="400" data-legend-baseline="626" data-legend-width="83">
|
|
260
|
+
<rect x="400" y="617" width="16" height="10" rx="2.5" class="c-external" stroke-width="1"/>
|
|
261
|
+
<text x="422" y="626" class="t-muted" font-size="10" font-weight="500">外部系统</text>
|
|
262
|
+
</g>
|
|
263
|
+
</g>
|
|
264
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="260" viewBox="0 0 1000 260" role="img" aria-labelledby="hero-title hero-desc">
|
|
2
|
+
<title id="hero-title">dsh-deepseek-web-login — 用 chat.deepseek.com 网页版登录态驱动 DSH agent</title>
|
|
3
|
+
<desc id="hero-desc">非官方 DSH 插件横幅:deepseek-web provider、PoW 求解、SSE 双格式、工具协议桥、图片上传通道。</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="hero-bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0%" stop-color="#0b1220"/>
|
|
7
|
+
<stop offset="55%" stop-color="#111c38"/>
|
|
8
|
+
<stop offset="100%" stop-color="#0e2a3d"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="hero-accent" x1="0" y1="0" x2="1" y2="1">
|
|
11
|
+
<stop offset="0%" stop-color="#6366f1"/>
|
|
12
|
+
<stop offset="100%" stop-color="#06b6d4"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
<linearGradient id="hero-chip" x1="0" y1="0" x2="1" y2="0">
|
|
15
|
+
<stop offset="0%" stop-color="#1e293b"/>
|
|
16
|
+
<stop offset="100%" stop-color="#243b53"/>
|
|
17
|
+
</linearGradient>
|
|
18
|
+
<radialGradient id="hero-glow" cx="0.5" cy="0.5" r="0.5">
|
|
19
|
+
<stop offset="0%" stop-color="#38bdf8" stop-opacity="0.30"/>
|
|
20
|
+
<stop offset="100%" stop-color="#38bdf8" stop-opacity="0"/>
|
|
21
|
+
</radialGradient>
|
|
22
|
+
<clipPath id="hero-clip"><rect width="1000" height="260" rx="18"/></clipPath>
|
|
23
|
+
</defs>
|
|
24
|
+
|
|
25
|
+
<rect width="1000" height="260" rx="18" fill="url(#hero-bg)"/>
|
|
26
|
+
<g clip-path="url(#hero-clip)">
|
|
27
|
+
<ellipse cx="940" cy="20" rx="180" ry="105" fill="url(#hero-glow)"/>
|
|
28
|
+
<ellipse cx="120" cy="252" rx="170" ry="80" fill="url(#hero-glow)" opacity="0.45"/>
|
|
29
|
+
</g>
|
|
30
|
+
|
|
31
|
+
<!-- logo: browser window with a login check, fully inside the tile -->
|
|
32
|
+
<g transform="translate(46 54)">
|
|
33
|
+
<rect width="88" height="88" rx="22" fill="url(#hero-accent)"/>
|
|
34
|
+
<rect x="16" y="22" width="56" height="44" rx="9" fill="none" stroke="#f8fafc" stroke-width="5"/>
|
|
35
|
+
<path d="M16 35 H72" stroke="#f8fafc" stroke-width="4"/>
|
|
36
|
+
<circle cx="25.5" cy="28.5" r="2.6" fill="#f8fafc"/>
|
|
37
|
+
<circle cx="35.5" cy="28.5" r="2.6" fill="#f8fafc"/>
|
|
38
|
+
<path d="M31 49 L40 57 L57 43" fill="none" stroke="#f8fafc" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
39
|
+
</g>
|
|
40
|
+
|
|
41
|
+
<text x="160" y="90" font-family="system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif" font-size="35" font-weight="700" fill="#f8fafc">dsh-deepseek-web-login</text>
|
|
42
|
+
<text x="160" y="124" font-family="system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif" font-size="17" fill="#9fb3c8">用 chat.deepseek.com 网页版登录态驱动 DSH agent · 无需 API Key</text>
|
|
43
|
+
|
|
44
|
+
<g font-family="system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif" font-size="13.5" fill="#cfe3f7">
|
|
45
|
+
<g class="chip"><rect x="160" y="152" width="188" height="30" rx="15" fill="url(#hero-chip)"/><text x="176" y="172">provider: deepseek-web</text></g>
|
|
46
|
+
<g class="chip"><rect x="360" y="152" width="157" height="30" rx="15" fill="url(#hero-chip)"/><text x="376" y="172">PoW · SHA3 WASM</text></g>
|
|
47
|
+
<g class="chip"><rect x="529" y="152" width="100" height="30" rx="15" fill="url(#hero-chip)"/><text x="545" y="172">SSE 双格式</text></g>
|
|
48
|
+
<g class="chip"><rect x="641" y="152" width="174" height="30" rx="15" fill="url(#hero-chip)"/><text x="657" y="172">工具协议桥 ⇄ tool-call</text></g>
|
|
49
|
+
<g class="chip"><rect x="827" y="152" width="114" height="30" rx="15" fill="url(#hero-chip)"/><text x="843" y="172">图片上传通道</text></g>
|
|
50
|
+
</g>
|
|
51
|
+
|
|
52
|
+
<text x="46" y="224" font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,monospace" font-size="13" fill="#93a6bb">unofficial plugin · Apache-2.0 · DSH (DeepSeek Harness)</text>
|
|
53
|
+
</svg>
|