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
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
<svg data-theme="light" width="1088" height="668" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1088 668" 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-backend { fill: var(--backend-fill); stroke: var(--backend-stroke); }
|
|
48
|
+
.c-security { fill: var(--security-fill); stroke: var(--security-stroke); }
|
|
49
|
+
.c-messagebus { fill: var(--messagebus-fill); stroke: var(--messagebus-stroke); }
|
|
50
|
+
.c-external { fill: var(--external-fill); stroke: var(--external-stroke); }
|
|
51
|
+
/* Text helpers */ .t-primary { fill: var(--text); }
|
|
52
|
+
.t-muted { fill: var(--text-muted); }
|
|
53
|
+
.t-dim { fill: var(--text-dim); }
|
|
54
|
+
.t-backend { fill: var(--backend-stroke); }
|
|
55
|
+
.t-security { fill: var(--security-stroke); }
|
|
56
|
+
.t-messagebus { fill: var(--messagebus-stroke); }
|
|
57
|
+
.t-external { fill: var(--external-stroke); }
|
|
58
|
+
/* 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; }
|
|
59
|
+
svg .semantic-sigil > * { vector-effect: non-scaling-stroke; }
|
|
60
|
+
svg .semantic-sigil .sigil-fill { fill: currentColor; stroke: none; }
|
|
61
|
+
svg .s-backend { color: var(--backend-stroke); }
|
|
62
|
+
svg .s-security { color: var(--security-stroke); }
|
|
63
|
+
svg .s-messagebus { color: var(--messagebus-stroke); }
|
|
64
|
+
svg .s-external { color: var(--external-stroke); }
|
|
65
|
+
/* Arrows */ .a-default { stroke: var(--arrow); fill: none; }
|
|
66
|
+
.a-emphasis { stroke: var(--arrow-emphasis); fill: none; }
|
|
67
|
+
.a-security { stroke: var(--security-stroke); fill: none; stroke-dasharray: 5,5; }
|
|
68
|
+
.a-dashed { stroke: var(--database-stroke); fill: none; stroke-dasharray: 4,4; }
|
|
69
|
+
/* Arrowhead markers reference these */ .m-default { fill: var(--arrow); }
|
|
70
|
+
.m-emphasis { fill: var(--arrow-emphasis); }
|
|
71
|
+
.m-security { fill: var(--security-stroke); }
|
|
72
|
+
.m-dashed { fill: var(--database-stroke); }
|
|
73
|
+
/* Dashed boundary variants */ .c-security-group { fill: transparent; stroke: var(--security-stroke); stroke-dasharray: 4,4; }
|
|
74
|
+
.c-lane { fill: var(--lane-fill); stroke: var(--lane-stroke); stroke-dasharray: 6,6; }
|
|
75
|
+
]]>
|
|
76
|
+
</style>
|
|
77
|
+
<rect width="100%" height="100%" class="archify-export-bg"/>
|
|
78
|
+
|
|
79
|
+
<title id="archify-diagram-title">工具调用协议桥:从模型流到真实工具执行</title>
|
|
80
|
+
<desc id="archify-diagram-description">由 Archify 生成的工作流图。</desc>
|
|
81
|
+
<!-- Definitions -->
|
|
82
|
+
<defs>
|
|
83
|
+
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
84
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-default" />
|
|
85
|
+
</marker>
|
|
86
|
+
<marker id="arrowhead-emphasis" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
87
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-emphasis" />
|
|
88
|
+
</marker>
|
|
89
|
+
<marker id="arrowhead-security" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
90
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-security" />
|
|
91
|
+
</marker>
|
|
92
|
+
<marker id="arrowhead-dashed" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
93
|
+
<polygon points="0 0, 10 3.5, 0 7" class="m-dashed" />
|
|
94
|
+
</marker>
|
|
95
|
+
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
|
|
96
|
+
<path d="M 40 0 L 0 0 0 40" class="c-grid" stroke-width="0.5"/>
|
|
97
|
+
</pattern>
|
|
98
|
+
</defs>
|
|
99
|
+
|
|
100
|
+
<!-- Background Grid -->
|
|
101
|
+
<rect width="100%" height="100%" fill="url(#grid)" />
|
|
102
|
+
|
|
103
|
+
<!-- Swimlanes -->
|
|
104
|
+
<rect data-graph-role="structural-frame" data-composition-frame-kind="lane" data-composition-frame-id="lane-0" x="40" y="52" width="1032" height="106" rx="10" class="c-lane" stroke-width="1"/>
|
|
105
|
+
<text x="54" y="74" class="t-dim" font-size="10" font-weight="600">01 / 模型输出</text>
|
|
106
|
+
|
|
107
|
+
<rect data-graph-role="structural-frame" data-composition-frame-kind="lane" data-composition-frame-id="lane-1" x="40" y="178" width="1032" height="106" rx="10" class="c-lane" stroke-width="1"/>
|
|
108
|
+
<text x="54" y="200" class="t-dim" font-size="10" font-weight="600">02 / 适配器管线</text>
|
|
109
|
+
|
|
110
|
+
<rect data-graph-role="structural-frame" data-composition-frame-kind="lane" data-composition-frame-id="lane-2" x="40" y="304" width="1032" height="106" rx="10" class="c-lane" stroke-width="1"/>
|
|
111
|
+
<text x="54" y="326" class="t-dim" font-size="10" font-weight="600">03 / DSH 运行时</text>
|
|
112
|
+
|
|
113
|
+
<rect data-graph-role="structural-frame" data-composition-frame-kind="lane" data-composition-frame-id="lane-3" x="40" y="430" width="1032" height="114" rx="10" class="c-lane" stroke-width="1"/>
|
|
114
|
+
<rect data-graph-role="structural-frame" data-composition-frame-kind="exception-lane" data-composition-frame-id="lane-3-exception" x="46" y="436" width="1020" height="102" rx="8" class="c-security-group" stroke-width="1"/>
|
|
115
|
+
<text x="54" y="452" class="t-security" font-size="10" font-weight="600">EX / 修复与降级</text>
|
|
116
|
+
|
|
117
|
+
<!-- Phase headers -->
|
|
118
|
+
<line x1="80" y1="35" x2="292" y2="35" class="a-default" stroke-width="1.1"/>
|
|
119
|
+
<rect x="80" y="27" width="212" height="16" rx="4" class="c-mask"/>
|
|
120
|
+
<text x="186" y="39" class="t-muted" font-size="8" font-weight="600" text-anchor="middle">约束与接收</text>
|
|
121
|
+
<line x1="320" y1="35" x2="648.4" y2="35" class="a-emphasis" stroke-width="1.1"/>
|
|
122
|
+
<rect x="320" y="27" width="328.4" height="16" rx="4" class="c-mask"/>
|
|
123
|
+
<text x="484.2" y="39" class="t-backend" font-size="8" font-weight="600" text-anchor="middle">识别与修复</text>
|
|
124
|
+
<line x1="810" y1="35" x2="1022" y2="35" class="a-dashed" stroke-width="1.1"/>
|
|
125
|
+
<rect x="810" y="27" width="212" height="16" rx="4" class="c-mask"/>
|
|
126
|
+
<text x="916" y="39" class="t-messagebus" font-size="8" font-weight="600" text-anchor="middle">合成与交接</text>
|
|
127
|
+
|
|
128
|
+
<!-- Workflow groups -->
|
|
129
|
+
<rect data-graph-role="structural-frame" data-composition-frame-kind="group" data-composition-frame-id="group-0" x="774" y="468" width="164" height="72" rx="9" class="c-security-group" stroke-width="1"/>
|
|
130
|
+
<text x="784" y="466" class="t-security" font-size="7" font-weight="600">解析失败时</text>
|
|
131
|
+
|
|
132
|
+
<!-- Edge paths -->
|
|
133
|
+
<path data-edge-from="filter" data-edge-to="repair" data-edge-label="JSON 解析失败" data-edge-key="0" data-edge-id="filter-to-repair" data-composition-points="444,246;524.4,246" d="M 444 246 L 524.4 246" class="a-default" stroke-width="1.4" marker-end="url(#arrowhead)"/>
|
|
134
|
+
<path data-edge-from="prompt_guard" data-edge-to="model_stream" data-edge-label="写入系统提示" data-edge-key="1" data-edge-id="guard-to-model" data-composition-points="126,280;126,300;239,300;239,154" d="M 126 280 L 126 300 L 239 300 L 239 154" class="a-security" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
135
|
+
<path data-edge-from="repair" data-edge-to="fallback" data-edge-label="解析不出" data-edge-key="2" data-edge-id="repair-to-fallback" data-composition-points="602.4,280;602.4,505;778,505" d="M 602.4 280 L 602.4 505 L 778 505" class="a-security" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
136
|
+
<path data-edge-from="repair" data-edge-to="synthesize" data-edge-label="逐字还原参数" data-edge-key="3" data-edge-id="repair-to-synth" data-composition-points="680.4,246;756,246" d="M 680.4 246 L 756 246" class="a-default" stroke-width="1.4" marker-end="url(#arrowhead)"/>
|
|
137
|
+
<path data-edge-from="model_stream" data-edge-to="filter" data-edge-label="原始分块" data-edge-key="4" data-edge-id="stream-to-filter" data-composition-points="246,154;246,300;366,300;366,280" d="M 246 154 L 246 300 L 366 300 L 366 280" class="a-emphasis" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
138
|
+
<path data-edge-from="synthesize" data-edge-to="tool_exec" data-edge-label="tool-call 块" data-edge-key="5" data-edge-id="synth-to-tool" data-composition-points="856,280;856,426;976,426;976,398" d="M 856 280 L 856 426 L 976 426 L 976 398" class="a-emphasis" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
139
|
+
|
|
140
|
+
<!-- Nodes -->
|
|
141
|
+
<g id="node-model_stream" data-node-id="model_stream" data-node-label="模型流式输出" tabindex="0" role="button" aria-label="聚焦模型流式输出,分块到达, 模型输出 › 约束与接收" aria-pressed="false" data-node-kind="external" data-node-sublabel="分块到达" data-node-tag="JSON 或 XML/DSML" data-node-context="模型输出 › 约束与接收">
|
|
142
|
+
<title>模型流式输出 · 分块到达 · 模型输出 › 约束与接收 · JSON 或 XML/DSML</title>
|
|
143
|
+
<rect x="168" y="86" width="156" height="68" rx="6" class="c-mask"/>
|
|
144
|
+
<rect x="168" y="86" width="156" height="68" rx="6" class="c-external" stroke-width="1.5"/>
|
|
145
|
+
<g aria-hidden="true" data-semantic-sigil="external" class="semantic-sigil s-external" transform="translate(174 92) scale(0.6875)">
|
|
146
|
+
<rect x="2.5" y="5" width="8.5" height="8" rx="1.5"/>
|
|
147
|
+
<path d="M8 2.5h5.5V8M13.5 2.5 7.5 8.5"/>
|
|
148
|
+
</g>
|
|
149
|
+
<text data-node-label="" data-detail-anchor="" x="246" y="107" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">模型流式输出</text>
|
|
150
|
+
<text data-detail="context" x="246" y="124" class="t-muted" font-size="8" text-anchor="middle">分块到达</text>
|
|
151
|
+
<text data-detail="fine" x="246" y="142" class="t-external" font-size="7" text-anchor="middle">JSON 或 XML/DSML</text>
|
|
152
|
+
</g>
|
|
153
|
+
|
|
154
|
+
<g id="node-prompt_guard" data-node-id="prompt_guard" data-node-label="指令层劝阻" tabindex="0" role="button" aria-label="聚焦指令层劝阻,显式禁止 XML/DSML, 适配器管线 › 约束与接收" aria-pressed="false" data-node-kind="security" data-node-sublabel="显式禁止 XML/DSML" data-node-tag="说明后果" data-node-context="适配器管线 › 约束与接收">
|
|
155
|
+
<title>指令层劝阻 · 显式禁止 XML/DSML · 适配器管线 › 约束与接收 · 说明后果</title>
|
|
156
|
+
<rect x="48" y="212" width="156" height="68" rx="6" class="c-mask"/>
|
|
157
|
+
<rect x="48" y="212" width="156" height="68" rx="6" class="c-security" stroke-width="1.5"/>
|
|
158
|
+
<g aria-hidden="true" data-semantic-sigil="security" class="semantic-sigil s-security" transform="translate(54 218) scale(0.6875)">
|
|
159
|
+
<path d="M8 2.2 13 4v3.5c0 3.1-1.8 5.4-5 6.5-3.2-1.1-5-3.4-5-6.5V4Z"/>
|
|
160
|
+
<path d="m5.8 8 1.5 1.5 3-3"/>
|
|
161
|
+
</g>
|
|
162
|
+
<text data-node-label="" data-detail-anchor="" x="126" y="233" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">指令层劝阻</text>
|
|
163
|
+
<text data-detail="context" x="126" y="250" class="t-muted" font-size="8" text-anchor="middle">显式禁止 XML/DSML</text>
|
|
164
|
+
<text data-detail="fine" x="126" y="268" class="t-security" font-size="7" text-anchor="middle">说明后果</text>
|
|
165
|
+
</g>
|
|
166
|
+
|
|
167
|
+
<g id="node-filter" data-node-id="filter" data-node-label="流式过滤器" tabindex="0" role="button" aria-label="聚焦流式过滤器,跨包标记 hold-back, 适配器管线 › 识别与修复" aria-pressed="false" data-node-kind="backend" data-node-sublabel="跨包标记 hold-back" data-node-tag="围栏 · 多调用" data-node-context="适配器管线 › 识别与修复">
|
|
168
|
+
<title>流式过滤器 · 跨包标记 hold-back · 适配器管线 › 识别与修复 · 围栏 · 多调用</title>
|
|
169
|
+
<rect x="288" y="212" width="156" height="68" rx="6" class="c-mask"/>
|
|
170
|
+
<rect x="288" y="212" width="156" height="68" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
171
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(294 218) scale(0.6875)">
|
|
172
|
+
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
173
|
+
</g>
|
|
174
|
+
<text data-node-label="" data-detail-anchor="" x="366" y="233" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">流式过滤器</text>
|
|
175
|
+
<text data-detail="context" x="366" y="250" class="t-muted" font-size="8" text-anchor="middle">跨包标记 hold-back</text>
|
|
176
|
+
<text data-detail="fine" x="366" y="268" class="t-backend" font-size="7" text-anchor="middle">围栏 · 多调用</text>
|
|
177
|
+
</g>
|
|
178
|
+
|
|
179
|
+
<g id="node-repair" data-node-id="repair" data-node-label="宽容修复" tabindex="0" role="button" aria-label="聚焦宽容修复,非法 JSON, 适配器管线 › 识别与修复" aria-pressed="false" data-node-kind="backend" data-node-sublabel="非法 JSON" data-node-tag="单反斜杠路径" data-node-context="适配器管线 › 识别与修复">
|
|
180
|
+
<title>宽容修复 · 非法 JSON · 适配器管线 › 识别与修复 · 单反斜杠路径</title>
|
|
181
|
+
<rect x="524.4" y="212" width="156" height="68" rx="6" class="c-mask"/>
|
|
182
|
+
<rect x="524.4" y="212" width="156" height="68" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
183
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(530.4 218) scale(0.6875)">
|
|
184
|
+
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
185
|
+
</g>
|
|
186
|
+
<text data-node-label="" data-detail-anchor="" x="602.4" y="233" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">宽容修复</text>
|
|
187
|
+
<text data-detail="context" x="602.4" y="250" class="t-muted" font-size="8" text-anchor="middle">非法 JSON</text>
|
|
188
|
+
<text data-detail="fine" x="602.4" y="268" class="t-backend" font-size="7" text-anchor="middle">单反斜杠路径</text>
|
|
189
|
+
</g>
|
|
190
|
+
|
|
191
|
+
<g id="node-synthesize" data-node-id="synthesize" data-node-label="合成 tool-call 块" tabindex="0" role="button" aria-label="聚焦合成 tool-call 块,block-start / delta / block-end, 适配器管线 › 合成与交接" aria-pressed="false" data-node-kind="messagebus" data-node-sublabel="block-start / delta / block-end" data-node-tag="finish: tool-calls" data-node-context="适配器管线 › 合成与交接">
|
|
192
|
+
<title>合成 tool-call 块 · block-start / delta / block-end · 适配器管线 › 合成与交接 · finish: tool-calls</title>
|
|
193
|
+
<rect x="756" y="212" width="200" height="68" rx="6" class="c-mask"/>
|
|
194
|
+
<rect x="756" y="212" width="200" height="68" rx="6" class="c-messagebus" stroke-width="1.5"/>
|
|
195
|
+
<g aria-hidden="true" data-semantic-sigil="messagebus" class="semantic-sigil s-messagebus" transform="translate(762 218) scale(0.6875)">
|
|
196
|
+
<path d="M2.5 4.5h11M2.5 8h11M2.5 11.5h11"/>
|
|
197
|
+
<circle cx="5" cy="4.5" r="1" class="sigil-fill"/>
|
|
198
|
+
<circle cx="10.5" cy="8" r="1" class="sigil-fill"/>
|
|
199
|
+
<circle cx="7" cy="11.5" r="1" class="sigil-fill"/>
|
|
200
|
+
</g>
|
|
201
|
+
<text data-node-label="" data-detail-anchor="" x="856" y="233" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">合成 tool-call 块</text>
|
|
202
|
+
<text data-detail="context" x="856" y="250" class="t-muted" font-size="8" text-anchor="middle">block-start / delta / block-end</text>
|
|
203
|
+
<text data-detail="fine" x="856" y="268" class="t-messagebus" font-size="7" text-anchor="middle">finish: tool-calls</text>
|
|
204
|
+
</g>
|
|
205
|
+
|
|
206
|
+
<g id="node-tool_exec" data-node-id="tool_exec" data-node-label="DSH 执行真实工具" tabindex="0" role="button" aria-label="聚焦DSH 执行真实工具,结果回灌下一轮, DSH 运行时 › 合成与交接" aria-pressed="false" data-node-kind="backend" data-node-sublabel="结果回灌下一轮" data-node-context="DSH 运行时 › 合成与交接">
|
|
207
|
+
<title>DSH 执行真实工具 · 结果回灌下一轮 · DSH 运行时 › 合成与交接</title>
|
|
208
|
+
<rect x="888" y="346" width="176" height="52" rx="6" class="c-mask"/>
|
|
209
|
+
<rect x="888" y="346" width="176" height="52" rx="6" class="c-backend" stroke-width="1.5"/>
|
|
210
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(894 352) scale(0.6875)">
|
|
211
|
+
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
212
|
+
</g>
|
|
213
|
+
<text data-node-label="" data-detail-anchor="" x="976" y="367" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">DSH 执行真实工具</text>
|
|
214
|
+
<text data-detail="context" x="976" y="384" class="t-muted" font-size="8" text-anchor="middle">结果回灌下一轮</text>
|
|
215
|
+
</g>
|
|
216
|
+
|
|
217
|
+
<g id="node-fallback" data-node-id="fallback" data-node-label="降级为正文" tabindex="0" role="button" aria-label="聚焦降级为正文,绝不静默丢内容, 修复与降级 › 解析失败时 › 合成与交接" aria-pressed="false" data-node-kind="security" data-node-sublabel="绝不静默丢内容" data-node-tag="用户可见" data-node-context="修复与降级 › 解析失败时 › 合成与交接">
|
|
218
|
+
<title>降级为正文 · 绝不静默丢内容 · 修复与降级 › 解析失败时 › 合成与交接 · 用户可见</title>
|
|
219
|
+
<rect x="778" y="471" width="156" height="68" rx="6" class="c-mask"/>
|
|
220
|
+
<rect x="778" y="471" width="156" height="68" rx="6" class="c-security" stroke-width="1.5"/>
|
|
221
|
+
<g aria-hidden="true" data-semantic-sigil="security" class="semantic-sigil s-security" transform="translate(784 477) scale(0.6875)">
|
|
222
|
+
<path d="M8 2.2 13 4v3.5c0 3.1-1.8 5.4-5 6.5-3.2-1.1-5-3.4-5-6.5V4Z"/>
|
|
223
|
+
<path d="m5.8 8 1.5 1.5 3-3"/>
|
|
224
|
+
</g>
|
|
225
|
+
<text data-node-label="" data-detail-anchor="" x="856" y="492" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">降级为正文</text>
|
|
226
|
+
<text data-detail="context" x="856" y="509" class="t-muted" font-size="8" text-anchor="middle">绝不静默丢内容</text>
|
|
227
|
+
<text data-detail="fine" x="856" y="527" class="t-security" font-size="7" text-anchor="middle">用户可见</text>
|
|
228
|
+
</g>
|
|
229
|
+
|
|
230
|
+
<!-- Edge labels -->
|
|
231
|
+
<g data-detail="context" data-edge-from="filter" data-edge-to="repair" data-edge-label="JSON 解析失败" data-edge-key="0" data-edge-id="filter-to-repair">
|
|
232
|
+
<rect x="448" y="226" width="72.4" height="14" rx="3" class="c-mask"/>
|
|
233
|
+
<text x="484.2" y="236" class="t-muted" font-size="8" text-anchor="middle">JSON 解析失败</text>
|
|
234
|
+
</g>
|
|
235
|
+
<g data-detail="context" data-edge-from="prompt_guard" data-edge-to="model_stream" data-edge-label="写入系统提示" data-edge-key="1" data-edge-id="guard-to-model">
|
|
236
|
+
<rect x="148.7" y="280" width="67.6" height="14" rx="3" class="c-mask"/>
|
|
237
|
+
<text x="182.5" y="290" class="t-security" font-size="8" text-anchor="middle">写入系统提示</text>
|
|
238
|
+
</g>
|
|
239
|
+
<g data-detail="context" data-edge-from="repair" data-edge-to="fallback" data-edge-label="解析不出" data-edge-key="2" data-edge-id="repair-to-fallback">
|
|
240
|
+
<rect x="666" y="485" width="48.4" height="14" rx="3" class="c-mask"/>
|
|
241
|
+
<text x="690.2" y="495" class="t-security" font-size="8" text-anchor="middle">解析不出</text>
|
|
242
|
+
</g>
|
|
243
|
+
<g data-detail="context" data-edge-from="repair" data-edge-to="synthesize" data-edge-label="逐字还原参数" data-edge-key="3" data-edge-id="repair-to-synth">
|
|
244
|
+
<rect x="684.4000000000001" y="226" width="67.6" height="14" rx="3" class="c-mask"/>
|
|
245
|
+
<text x="718.2" y="236" class="t-muted" font-size="8" text-anchor="middle">逐字还原参数</text>
|
|
246
|
+
</g>
|
|
247
|
+
<g data-detail="context" data-edge-from="model_stream" data-edge-to="filter" data-edge-label="原始分块" data-edge-key="4" data-edge-id="stream-to-filter">
|
|
248
|
+
<rect x="281.8" y="280" width="48.4" height="14" rx="3" class="c-mask"/>
|
|
249
|
+
<text x="306" y="290" class="t-backend" font-size="8" text-anchor="middle">原始分块</text>
|
|
250
|
+
</g>
|
|
251
|
+
<g data-detail="context" data-edge-from="synthesize" data-edge-to="tool_exec" data-edge-label="tool-call 块" data-edge-key="5" data-edge-id="synth-to-tool">
|
|
252
|
+
<rect x="882.2" y="406" width="67.6" height="14" rx="3" class="c-mask"/>
|
|
253
|
+
<text x="916" y="416" class="t-backend" font-size="8" text-anchor="middle">tool-call 块</text>
|
|
254
|
+
</g>
|
|
255
|
+
|
|
256
|
+
<!-- Legend -->
|
|
257
|
+
<g data-legend="" data-legend-bridge="">
|
|
258
|
+
<text x="20" y="568" class="t-primary" font-size="12" font-weight="650">图例</text>
|
|
259
|
+
<g data-legend-semantic-kind="backend" data-legend-kind="backend" data-legend-label="Agent 逻辑" data-legend-x="20" data-legend-baseline="588" data-legend-width="87">
|
|
260
|
+
<rect x="20" y="580" width="14" height="9" rx="2" class="c-backend" stroke-width="1"/>
|
|
261
|
+
<text x="42" y="588" class="t-muted" font-size="7.5" font-weight="500">Agent 逻辑</text>
|
|
262
|
+
</g>
|
|
263
|
+
<g data-legend-semantic-kind="security" data-legend-kind="security" data-legend-label="策略" data-legend-x="114" data-legend-baseline="588" data-legend-width="61">
|
|
264
|
+
<rect x="114" y="580" width="14" height="9" rx="2" class="c-security" stroke-width="1"/>
|
|
265
|
+
<text x="136" y="588" class="t-muted" font-size="7.5" font-weight="500">策略</text>
|
|
266
|
+
</g>
|
|
267
|
+
<g data-legend-semantic-kind="messagebus" data-legend-kind="messagebus" data-legend-label="工具操作" data-legend-x="182" data-legend-baseline="588" data-legend-width="78">
|
|
268
|
+
<rect x="182" y="580" width="14" height="9" rx="2" class="c-messagebus" stroke-width="1"/>
|
|
269
|
+
<text x="204" y="588" class="t-muted" font-size="7.5" font-weight="500">工具操作</text>
|
|
270
|
+
</g>
|
|
271
|
+
<g data-legend-semantic-kind="external" data-legend-kind="external" data-legend-label="外部系统" data-legend-x="267" data-legend-baseline="588" data-legend-width="78">
|
|
272
|
+
<rect x="267" y="580" width="14" height="9" rx="2" class="c-external" stroke-width="1"/>
|
|
273
|
+
<text x="289" y="588" class="t-muted" font-size="7.5" font-weight="500">外部系统</text>
|
|
274
|
+
</g>
|
|
275
|
+
</g>
|
|
276
|
+
</svg>
|