-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathguide.html
More file actions
363 lines (337 loc) · 23 KB
/
Copy pathguide.html
File metadata and controls
363 lines (337 loc) · 23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
<!DOCTYPE html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<meta name="theme-color" content="#f5f6f8" />
<title>DeepSeek Harness 上手手册 · 安装 DSH 与社区插件</title>
<meta name="description" content="Node.js 22+ 启动 dsh web、配置 API Key、选择工作区,并用 git 地址安装 dsh-plugin。" />
<meta name="keywords" content="DeepSeek Harness,DSH,dsh-plugin,DeepSeek插件,Agent插件,Codex CLI,编程智能体,dsh web" />
<meta name="author" content="DSH 创意工坊" />
<meta name="robots" content="index,follow,max-image-preview:large,max-snippet:-1" />
<meta name="googlebot" content="index,follow" />
<meta name="applicable-device" content="pc,mobile" />
<meta name="format-detection" content="telephone=no" />
<meta name="renderer" content="webkit" />
<meta name="force-rendering" content="webkit" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="canonical" href="https://dsh-plugin.github.io/guide.html" />
<link rel="alternate" hreflang="zh-CN" href="https://dsh-plugin.github.io/guide.html" />
<link rel="alternate" hreflang="x-default" href="https://dsh-plugin.github.io/guide.html" />
<link rel="sitemap" type="application/xml" href="https://dsh-plugin.github.io/sitemap.xml" />
<meta property="og:site_name" content="DSH 创意工坊" />
<meta property="og:locale" content="zh_CN" />
<meta property="og:type" content="website" />
<meta property="og:title" content="DeepSeek Harness 上手手册 · 安装 DSH 与社区插件" />
<meta property="og:description" content="Node.js 22+ 启动 dsh web、配置 API Key、选择工作区,并用 git 地址安装 dsh-plugin。" />
<meta property="og:url" content="https://dsh-plugin.github.io/guide.html" />
<meta property="og:image" content="https://dsh-plugin.github.io/assets/og.jpg" />
<meta property="og:image:alt" content="DSH 创意工坊" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="DeepSeek Harness 上手手册 · 安装 DSH 与社区插件" />
<meta name="twitter:description" content="Node.js 22+ 启动 dsh web、配置 API Key、选择工作区,并用 git 地址安装 dsh-plugin。" />
<meta name="twitter:image" content="https://dsh-plugin.github.io/assets/og.jpg" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-title" content="DSH工坊" />
<link rel="icon" href="./assets/favicon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="./assets/apple-touch-icon.png" />
<link rel="manifest" href="./site.webmanifest" />
<link rel="preload" href="./assets/app.css" as="style" />
<link rel="stylesheet" href="./assets/app.css" />
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"DSH 创意工坊","alternateName":["DSH Workshop","DeepSeek Harness 插件目录","DSH工坊"],"description":"DeepSeek Harness 社区插件工坊。检索、安装、发布 dsh-plugin。数据来自 GitHub topic,可一键挂到 GitHub Pages。","inLanguage":"zh-CN","url":"https://dsh-plugin.github.io/","keywords":"DeepSeek Harness,DSH,dsh-plugin,DeepSeek插件,Agent插件,Codex CLI,编程智能体,dsh web","publisher":{"@type":"Organization","name":"DSH 创意工坊","url":"https://dsh-plugin.github.io/"},"potentialAction":{"@type":"SearchAction","target":"https://dsh-plugin.github.io/market.html?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"DeepSeek Harness 是什么?","acceptedAnswer":{"@type":"Answer","text":"DeepSeek Harness(DSH)是 DeepSeek 开源的 Agent 运行时,口号是 Everything is a Plugin,和 Codex CLI、Claude Code 同类。"}},{"@type":"Question","name":"如何启动 DSH?","acceptedAnswer":{"@type":"Answer","text":"安装 Node.js 22 及以上,在项目目录执行 npx -y @deepseek-ai/dsh web,浏览器打开终端打印的地址。"}},{"@type":"Question","name":"如何安装社区插件?","acceptedAnswer":{"@type":"Answer","text":"使用 dsh plugin --profile web add git+https://github.com/作者/仓库.git,然后重新启动 dsh web。"}},{"@type":"Question","name":"插件数据从哪里来?","acceptedAnswer":{"@type":"Answer","text":"来自 GitHub topic dsh-plugin。本站内置快照,并可用 GitHub Actions 定时同步。"}}]}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"概览","item":"https://dsh-plugin.github.io/"},{"@type":"ListItem","position":2,"name":"上手手册","item":"https://dsh-plugin.github.io/guide.html"}]}</script>
</head>
<body>
<a class="skip" href="#main">跳到正文</a>
<div class="app">
<aside class="sider">
<a class="brand" href="./index.html" aria-label="DSH 创意工坊首页">
<svg class="brand-mark" viewBox="0 0 28 28" fill="none" aria-hidden="true">
<rect width="28" height="28" rx="7" fill="#1d2129"/>
<path d="M5.5 16c3.5-6 13-7.5 18-2.4-4.2.8-7.6 1.2-10.4 3.4-.8.8-1.2 2 0 2.8 2.5 1.2 6.8-.3 9.4-2.4-3.4 5-12 5.8-17-1.4z" fill="#fff"/>
<circle cx="10" cy="14.2" r=".9" fill="#1d2129"/>
</svg>
<span class="brand-lockup">
<span class="brand-name">deepseek 工坊</span>
<span class="brand-sub">Harness</span>
</span>
</a>
<nav class="sider-nav" aria-label="侧栏导航">
<a href="./index.html" data-nav="home">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 10.5 12 4l8 6.5V20a1 1 0 0 1-1 1h-5v-6H10v6H5a1 1 0 0 1-1-1v-9.5z"/></svg>
概览
</a>
<a href="./market.html" data-nav="market">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="3" y="4" width="7" height="7" rx="1.2"/><rect x="14" y="4" width="7" height="7" rx="1.2"/><rect x="3" y="15" width="7" height="5" rx="1.2"/><rect x="14" y="15" width="7" height="5" rx="1.2"/></svg>
插件
</a>
<a href="./favorites.html" data-nav="favorites">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/></svg>
收藏
</a>
<a href="./insights.html" data-nav="insights">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M3 3v18h18"/><path d="M7 14l3-4 4 3 5-7"/></svg>
洞察
</a>
<a href="./guide.html" data-nav="guide">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M7 4h8l5 5v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z"/><path d="M15 4v5h5"/></svg>
手册
</a>
<a href="./publish.html" data-nav="publish">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 16V4"/><path d="m7 9 5-5 5 5"/><path d="M5 20h14"/></svg>
入驻
</a>
</nav>
<div class="sider-foot">
<div><span class="dot"></span>社区目录 · 非官方</div>
<div>数据来自 GitHub topic</div>
</div>
</aside>
<div class="main-col">
<header class="topbar">
<a class="brand mobile-brand" href="./index.html">
<svg class="brand-mark" viewBox="0 0 28 28" fill="none" aria-hidden="true">
<rect width="28" height="28" rx="7" fill="#1d2129"/>
<path d="M5.5 16c3.5-6 13-7.5 18-2.4-4.2.8-7.6 1.2-10.4 3.4-.8.8-1.2 2 0 2.8 2.5 1.2 6.8-.3 9.4-2.4-3.4 5-12 5.8-17-1.4z" fill="#fff"/>
<circle cx="10" cy="14.2" r=".9" fill="#1d2129"/>
</svg>
</a>
<div class="workspace">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 7h16v12H4z"/><path d="M8 7V5h8v2"/></svg>
工作区
</div>
<label class="cmd">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3-3"/></svg>
<input id="globalSearch" type="search" placeholder="搜索插件,或输入仓库名" autocomplete="off" />
<span class="kbd-hint">/</span>
<div class="search-history global-search-history" id="globalSearchHistory"></div>
</label>
<div class="top-actions">
<a class="icon-btn hide-sm" href="./feed.xml" target="_blank" rel="noopener" aria-label="RSS 订阅" title="RSS 订阅">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 11a9 9 0 0 1 9 9"/><path d="M4 4a16 16 0 0 1 16 16"/><circle cx="5" cy="19" r="1.5" fill="currentColor"/></svg>
</a>
<a class="icon-btn hide-sm" href="https://github.com/topics/dsh-plugin" target="_blank" rel="noopener" aria-label="GitHub topic" title="GitHub topic">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .5A11.5 11.5 0 0 0 .5 12.3c0 5.2 3.4 9.6 8.1 11.2.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.5-1.3-1.3-1.6-1.3-1.6-1-.7.1-.7.1-.7 1.1.1 1.7 1.2 1.7 1.2 1 1.7 2.6 1.2 3.2.9.1-.7.4-1.2.7-1.5-2.6-.3-5.4-1.3-5.4-5.9 0-1.3.5-2.4 1.2-3.2-.1-.3-.5-1.5.1-3.1 0 0 1-.3 3.3 1.2a11.4 11.4 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.6 1.6.2 2.8.1 3.1.8.8 1.2 1.9 1.2 3.2 0 4.6-2.8 5.6-5.4 5.9.4.4.8 1.1.8 2.2v3.2c0 .3.2.7.8.6 4.7-1.6 8.1-6 8.1-11.2A11.5 11.5 0 0 0 12 .5z"/></svg>
</a>
<button class="icon-btn" id="themeBtn" type="button" aria-label="切换主题" title="切换主题"></button>
<button class="icon-btn hide-sm" data-shortcuts type="button" aria-label="键盘快捷键" title="快捷键 (?)">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="2" y="6" width="20" height="12" rx="2"/><path d="M6 10h0M10 10h0M14 10h0M18 10h0M8 14h8"/></svg>
</button>
</div>
</header>
<div class="notice-bar" id="noticeBar" role="region" aria-label="站点通知">
<span class="notice-icon">📣</span>
<div class="notice-rotator" id="noticeRotator">
<span class="notice-text" data-notice="0">本站数据来自 GitHub topic <a href="https://github.com/topics/dsh-plugin">dsh-plugin</a>,每 6 小时自动同步。共收录 <b data-total-count>—</b> 个插件。</span>
<span class="notice-text" data-notice="1" style="display:none">按 <kbd>/</kbd> 快速搜索 · <kbd>R</kbd> 随机发现 · <kbd>T</kbd> 切换主题 · <kbd>?</kbd> 快捷键帮助</span>
<span class="notice-text" data-notice="2" style="display:none">右键插件卡片可复制安装命令、收藏、对比、分享。移动端长按 500ms 触发。</span>
</div>
<div class="notice-dots" id="noticeDots"></div>
<button class="notice-close" id="noticeClose" type="button" aria-label="关闭通知">×</button>
</div>
<main id="main" class="content">
<noscript><section class="notice"><p>本站支持无脚本浏览。共收录 <b data-total-count>—</b> 个插件,请访问 <a href="./directory.html">全部插件目录</a> 或 <a href="./guide.html">上手手册</a>。</p></section></noscript>
<!-- ============ HOME ============ -->
<!-- ============ MARKET ============ -->
<!-- ============ INSIGHTS ============ -->
<!-- ============ GUIDE ============ -->
<section class="view is-on" data-view="guide">
<div class="page-head">
<div class="crumb">工作台 / 手册</div>
<h1>上手手册</h1>
<p>从零到装上第一个社区插件大约十分钟。命令按 2026-08 公测版核对。</p>
</div>
<div class="guide-grid">
<article class="step">
<div class="num">1</div>
<h3>准备 Node.js 22+</h3>
<p>官方包是 <code>@deepseek-ai/dsh</code>。用 nvm / fnm / 官网安装均可,先确认 <code>node -v</code> ≥ 22。</p>
</article>
<article class="step">
<div class="num">2</div>
<h3>启动 Web UI</h3>
<p>在项目目录执行 <code>npx -y @deepseek-ai/dsh web</code>,打开终端打印的地址(常见 <code>http://127.0.0.1:3080</code>)。</p>
</article>
<article class="step">
<div class="num">3</div>
<h3>填入模型密钥</h3>
<p>设置 → 模型,写入 DeepSeek API Key。密钥落在本机凭据文件,页面只回显脱敏信息。</p>
</article>
<article class="step">
<div class="num">4</div>
<h3>选择工作区</h3>
<p>点「选择工作区」,把当前项目目录加进去。未选择时,会话输入框不可用。</p>
</article>
<article class="step">
<div class="num">5</div>
<h3>安装插件</h3>
<p>在目录里复制命令,默认写入 web profile。装完后重新执行 <code>dsh web</code>。</p>
</article>
<article class="step">
<div class="num">6</div>
<h3>无界面任务</h3>
<p>脚本和 CI 用 <code>dsh --profile headless "任务描述"</code>。推理档位常见为 low / high / max。</p>
</article>
</div>
<div class="section-head">
<div>
<h2>常用命令</h2>
<p>点击即可复制。</p>
</div>
</div>
<div class="panel term">
<div class="panel-hd">速查</div>
<pre id="cheatSheet">npx -y @deepseek-ai/dsh web
dsh --profile headless "总结这个仓库"
dsh plugin --profile web add git+https://github.com/owner/repo.git
dsh plugin --profile web remove owner/repo
dsh --profile web --dump-config</pre>
</div>
<p style="margin-top:12px;display:flex;gap:8px;flex-wrap:wrap">
<button class="btn btn-primary" type="button" data-copy="#cheatSheet">复制速查</button>
<a class="btn" href="https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart" target="_blank" rel="noopener">官方文档</a>
<a class="btn btn-ghost" href="https://github.com/deepseek-ai/deepseek-harness" target="_blank" rel="noopener">官方仓库</a>
</p>
<div class="notice">
社区插件尚未统一进 npm。当前最稳的安装方式是
<code>dsh plugin --profile web add git+https://github.com/作者/仓库.git</code>。
个别 monorepo 需要 <code>link:</code> 本地目录,以作者 README 为准。
</div>
<div class="faq" id="faq">
<div class="section-head">
<div>
<h2>常见问题</h2>
<p>安装 DeepSeek Harness 与社区插件时最常被问到的几件事。</p>
</div>
</div>
<details>
<summary>DeepSeek Harness 是什么?</summary>
<p>DeepSeek Harness(简称 DSH)是 DeepSeek 开源的 Agent 运行时。官方口号是 Everything is a Plugin:模型、工具、技能、会话、沙箱和界面都以插件形式存在,可以在不改核心源码的情况下重组。</p>
</details>
<details>
<summary>它和 Codex CLI、Claude Code 有什么区别?</summary>
<p>定位同类,都是终端/工作区里的编程智能体。DSH 的差异是开源、插件化、Web UI 与社区皮肤生态更重;Codex CLI / Claude Code 更偏向厂商一体、开箱即用。</p>
</details>
<details>
<summary>如何安装社区插件?</summary>
<p>在本站插件目录复制命令,一般是 <code>dsh plugin --profile web add git+https://github.com/作者/仓库.git</code>,然后重新执行 <code>dsh web</code>。</p>
</details>
<details>
<summary>插件列表的数据从哪来?</summary>
<p>来自 GitHub topic <a href="https://github.com/topics/dsh-plugin">dsh-plugin</a>。站点内置快照保证秒开,也可用 Actions 定时同步。完整静态列表见 <a href="./directory.html">全部插件</a>,生态分析见 <a href="./insights.html">洞察</a>。</p>
</details>
<details>
<summary>如何收藏感兴趣的插件?</summary>
<p>在插件卡片右上角点 ★ 即可收藏,收藏记录保存在浏览器本地(localStorage)。在插件目录的「我的收藏」分类里可查看全部收藏。换浏览器不会同步。</p>
</details>
</div>
</section>
<!-- ============ PUBLISH ============ -->
</main>
<footer class="footer">
<span>DSH 创意工坊</span>
<span class="sep">·</span>
<span>源数据 <a href="https://github.com/topics/dsh-plugin">dsh-plugin</a></span>
<span class="sep">·</span>
<a href="./insights.html">洞察</a>
<span class="sep">·</span>
<a href="./directory.html">全部插件</a>
<span class="sep">·</span>
<a href="./feed.xml">RSS</a>
<span class="sep">·</span>
<span>按 <span class="kbd">/</span> 搜索</span>
</footer>
</div>
</div>
<nav class="tabbar" aria-label="手机导航">
<a href="./index.html" data-nav="home">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M4 10.5 12 4l8 6.5V20a1 1 0 0 1-1 1h-5v-6H10v6H5a1 1 0 0 1-1-1v-9.5z"/></svg>
概览
</a>
<a href="./market.html" data-nav="market">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><rect x="3" y="4" width="7" height="7" rx="1.2"/><rect x="14" y="4" width="7" height="7" rx="1.2"/><rect x="3" y="15" width="7" height="5" rx="1.2"/><rect x="14" y="15" width="7" height="5" rx="1.2"/></svg>
插件
</a>
<a href="./insights.html" data-nav="insights">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M3 3v18h18"/><path d="M7 14l3-4 4 3 5-7"/></svg>
洞察
</a>
<a href="./guide.html" data-nav="guide">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M7 4h8l5 5v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z"/><path d="M15 4v5h5"/></svg>
手册
</a>
<a href="./publish.html" data-nav="publish">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M12 16V4"/><path d="m7 9 5-5 5 5"/><path d="M5 20h14"/></svg>
入驻
</a>
</nav>
<div class="drawer-mask" id="drawerMask" data-close-drawer></div>
<aside class="drawer" id="drawer" tabindex="-1" aria-label="插件详情">
<button class="drawer-close" type="button" data-close-drawer aria-label="关闭">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6 6 18M6 6l12 12"/></svg>
</button>
<div class="drawer-avatar" id="drawerAvatar" aria-hidden="true">D</div>
<h2 id="drawerTitle">插件</h2>
<div class="plugin-owner" id="drawerOwner"></div>
<p class="drawer-desc" id="drawerDesc"></p>
<div class="plugin-meta" id="drawerMeta"></div>
<div class="drawer-stats" id="drawerStats"></div>
<div class="plugin-meta" id="drawerTopics" style="margin-top:10px"></div>
<div class="copy-row">
<code id="installCode"></code>
<button class="btn btn-primary" id="copyInstall" type="button">复制</button>
</div>
<div class="drawer-actions">
<a class="btn btn-block" id="openRepo" target="_blank" rel="noopener">打开 GitHub 仓库</a>
<div style="display:flex;gap:8px">
<a class="btn btn-block" id="openIssues" target="_blank" rel="noopener">Issues</a>
<a class="btn btn-block" id="openReleases" target="_blank" rel="noopener">Releases</a>
</div>
</div>
<div class="section-head" style="margin-top:20px">
<div><h2 style="font-size:14px">同类插件</h2></div>
</div>
<div class="card-grid" id="drawerSimilar" style="grid-template-columns:1fr 1fr;gap:8px"></div>
<div class="section-head" style="margin-top:16px" id="drawerRecentHead" style="display:none">
<div><h2 style="font-size:14px">最近浏览</h2></div>
</div>
<div class="card-grid" id="drawerRecent" style="grid-template-columns:1fr 1fr;gap:8px"></div>
</aside>
<div class="modal-mask" id="shortcutsMask" data-close-shortcuts></div>
<div class="modal" id="shortcutsModal" role="dialog" aria-label="键盘快捷键" aria-modal="true">
<div class="modal-hd">
<h2>键盘快捷键</h2>
<button class="icon-btn" type="button" data-close-shortcuts aria-label="关闭">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6 6 18M6 6l12 12"/></svg>
</button>
</div>
<div class="modal-body">
<div class="shortcut-row"><span>聚焦搜索</span><kbd>/</kbd></div>
<div class="shortcut-row"><span>随机发现</span><kbd>R</kbd></div>
<div class="shortcut-row"><span>切换主题</span><kbd>T</kbd></div>
<div class="shortcut-row"><span>快捷键帮助</span><kbd>?</kbd></div>
<div class="shortcut-row"><span>关闭弹层/抽屉</span><kbd>Esc</kbd></div>
</div>
</div>
<button class="back-to-top" id="backToTop" type="button" aria-label="返回顶部" title="返回顶部">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5"/><path d="m5 12 7-7 7 7"/></svg>
</button>
<div class="ctx-menu" id="ctxMenu" role="menu"></div>
<div class="hover-tip" id="hoverTip" role="tooltip"></div>
<div class="compare-bar" id="compareBar"></div>
<div class="modal-mask" id="compareMask" data-close-compare></div>
<div class="modal compare-modal" id="compareModal" role="dialog" aria-label="插件对比" aria-modal="true">
<div class="modal-hd">
<h2>插件对比</h2>
<button class="icon-btn" type="button" data-close-compare aria-label="关闭">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6 6 18M6 6l12 12"/></svg>
</button>
</div>
<div class="modal-body" id="compareBody"></div>
<div class="cmp-history" id="cmpHistory"></div>
</div>
<div class="toast" id="toast" role="status"></div>
<script src="./assets/app.js"></script>
</body>
</html>