@agent-link/server 0.1.536 → 0.1.538
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/package.json +1 -1
- package/web/dist/landing/icons/agent-claude.svg +1 -0
- package/web/dist/landing/icons/agent-codex.svg +1 -0
- package/web/dist/landing/icons/agent-copilot.svg +1 -0
- package/web/dist/landing/icons/agent-pi.svg +5 -0
- package/web/dist/landing/icons/msclaude-animated.svg +43 -0
- package/web/dist/landing/landing.css +1228 -0
- package/web/dist/landing/landing.js +71 -0
- package/web/dist/landing.html +212 -572
- package/web/dist/landing.zh.html +212 -567
- package/web/dist/robots.txt +4 -0
- package/web/dist/site.webmanifest +21 -0
- package/web/dist/sitemap.xml +16 -0
package/web/dist/landing.zh.html
CHANGED
|
@@ -1,588 +1,233 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="zh-CN">
|
|
3
3
|
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>msclaude —
|
|
7
|
-
<meta name="description" content="
|
|
8
|
-
<meta name="
|
|
9
|
-
<
|
|
10
|
-
<
|
|
11
|
-
<link rel="
|
|
12
|
-
<link rel="alternate" hreflang="
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<meta property="og:
|
|
16
|
-
<meta property="og:
|
|
17
|
-
<meta property="og:
|
|
18
|
-
<meta property="og:
|
|
19
|
-
<meta property="og:
|
|
20
|
-
<meta property="og:
|
|
21
|
-
<meta
|
|
22
|
-
<meta
|
|
23
|
-
<meta
|
|
24
|
-
<meta name="twitter:
|
|
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
|
-
min-height: 100vh;
|
|
68
|
-
background:
|
|
69
|
-
radial-gradient(circle at top left, rgba(1, 139, 141, 0.12), transparent 32rem),
|
|
70
|
-
linear-gradient(180deg, #ffffff 0%, var(--bg) 55%, #ffffff 100%);
|
|
71
|
-
color: var(--text);
|
|
72
|
-
font-family: 'Space Grotesk', system-ui, -apple-system, BlinkMacSystemFont, 'Microsoft YaHei', sans-serif;
|
|
73
|
-
line-height: 1.65;
|
|
74
|
-
-webkit-font-smoothing: antialiased;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
a { color: inherit; text-decoration: none; }
|
|
78
|
-
|
|
79
|
-
nav, main, footer {
|
|
80
|
-
width: min(1120px, calc(100% - 32px));
|
|
81
|
-
margin: 0 auto;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
nav {
|
|
85
|
-
display: flex;
|
|
86
|
-
align-items: center;
|
|
87
|
-
justify-content: space-between;
|
|
88
|
-
padding: 24px 0;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.logo {
|
|
92
|
-
display: inline-flex;
|
|
93
|
-
align-items: center;
|
|
94
|
-
gap: 10px;
|
|
95
|
-
font-weight: 700;
|
|
96
|
-
letter-spacing: -0.03em;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.logo img { width: 28px; height: 28px; border-radius: 8px; }
|
|
100
|
-
|
|
101
|
-
.nav-actions {
|
|
102
|
-
align-items: center;
|
|
103
|
-
display: flex;
|
|
104
|
-
gap: 10px;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.repo-link,
|
|
108
|
-
.nav-lang {
|
|
109
|
-
border: 1px solid var(--border);
|
|
110
|
-
border-radius: 999px;
|
|
111
|
-
color: var(--muted);
|
|
112
|
-
font-size: 0.86rem;
|
|
113
|
-
font-weight: 600;
|
|
114
|
-
padding: 8px 13px;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.repo-link:hover,
|
|
118
|
-
.nav-lang:hover { color: var(--text); background: #fff; }
|
|
119
|
-
|
|
120
|
-
.hero {
|
|
121
|
-
display: grid;
|
|
122
|
-
grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);
|
|
123
|
-
gap: 56px;
|
|
124
|
-
align-items: center;
|
|
125
|
-
padding: 70px 0 42px;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.eyebrow {
|
|
129
|
-
display: inline-flex;
|
|
130
|
-
align-items: center;
|
|
131
|
-
gap: 8px;
|
|
132
|
-
background: var(--accent-soft);
|
|
133
|
-
border: 1px solid #c8eeee;
|
|
134
|
-
border-radius: 999px;
|
|
135
|
-
color: var(--accent);
|
|
136
|
-
font-size: 0.82rem;
|
|
137
|
-
font-weight: 700;
|
|
138
|
-
margin-bottom: 22px;
|
|
139
|
-
padding: 7px 13px;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.eyebrow::before {
|
|
143
|
-
content: "";
|
|
144
|
-
width: 7px;
|
|
145
|
-
height: 7px;
|
|
146
|
-
background: var(--green);
|
|
147
|
-
border-radius: 999px;
|
|
148
|
-
box-shadow: 0 0 0 4px rgba(22, 163, 74, 0.12);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
h1 {
|
|
152
|
-
max-width: 720px;
|
|
153
|
-
font-size: clamp(2.65rem, 5.8vw, 5.25rem);
|
|
154
|
-
letter-spacing: -0.07em;
|
|
155
|
-
line-height: 1;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
h1 span { color: var(--accent); }
|
|
159
|
-
|
|
160
|
-
.lead {
|
|
161
|
-
max-width: 640px;
|
|
162
|
-
color: var(--muted);
|
|
163
|
-
font-size: clamp(1rem, 2vw, 1.18rem);
|
|
164
|
-
margin: 24px 0 30px;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.agent-row {
|
|
168
|
-
display: flex;
|
|
169
|
-
flex-wrap: wrap;
|
|
170
|
-
gap: 10px;
|
|
171
|
-
margin-bottom: 32px;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
.agent-pill {
|
|
175
|
-
align-items: center;
|
|
176
|
-
background: rgba(255, 255, 255, 0.78);
|
|
177
|
-
border: 1px solid var(--border);
|
|
178
|
-
border-radius: 999px;
|
|
179
|
-
color: #334155;
|
|
180
|
-
display: inline-flex;
|
|
181
|
-
font-size: 0.92rem;
|
|
182
|
-
font-weight: 650;
|
|
183
|
-
gap: 8px;
|
|
184
|
-
padding: 9px 14px;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
.agent-pill::before {
|
|
188
|
-
content: "";
|
|
189
|
-
width: 8px;
|
|
190
|
-
height: 8px;
|
|
191
|
-
border-radius: 99px;
|
|
192
|
-
background: var(--accent);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.cta-row {
|
|
196
|
-
display: flex;
|
|
197
|
-
align-items: flex-start;
|
|
198
|
-
flex-direction: column;
|
|
199
|
-
gap: 14px;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.cta-primary {
|
|
203
|
-
align-items: center;
|
|
204
|
-
background: var(--text);
|
|
205
|
-
border: 0;
|
|
206
|
-
border-radius: 14px;
|
|
207
|
-
color: #fff;
|
|
208
|
-
cursor: pointer;
|
|
209
|
-
display: inline-flex;
|
|
210
|
-
font: inherit;
|
|
211
|
-
font-size: 0.95rem;
|
|
212
|
-
font-weight: 700;
|
|
213
|
-
gap: 8px;
|
|
214
|
-
padding: 13px 18px;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
.install-command {
|
|
218
|
-
background: #fff;
|
|
219
|
-
border: 1px solid var(--border);
|
|
220
|
-
border-radius: 14px;
|
|
221
|
-
color: #334155;
|
|
222
|
-
cursor: pointer;
|
|
223
|
-
font-family: Consolas, 'Courier New', monospace;
|
|
224
|
-
font-size: 0.9rem;
|
|
225
|
-
overflow-x: auto;
|
|
226
|
-
padding: 12px 14px;
|
|
227
|
-
width: min(100%, 560px);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
.install-command span { display: block; white-space: nowrap; }
|
|
231
|
-
|
|
232
|
-
.panel {
|
|
233
|
-
background: rgba(255, 255, 255, 0.82);
|
|
234
|
-
border: 1px solid var(--border);
|
|
235
|
-
border-radius: 28px;
|
|
236
|
-
box-shadow: 0 24px 80px rgba(15, 23, 42, 0.10);
|
|
237
|
-
padding: 18px;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
.workspace {
|
|
241
|
-
background: #fff;
|
|
242
|
-
border: 1px solid var(--border);
|
|
243
|
-
border-radius: 22px;
|
|
244
|
-
overflow: hidden;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
.workspace-top {
|
|
248
|
-
align-items: center;
|
|
249
|
-
background: var(--surface);
|
|
250
|
-
border-bottom: 1px solid var(--border);
|
|
251
|
-
color: var(--muted);
|
|
252
|
-
display: flex;
|
|
253
|
-
font-size: 0.78rem;
|
|
254
|
-
font-weight: 700;
|
|
255
|
-
justify-content: space-between;
|
|
256
|
-
padding: 13px 16px;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
.workspace-body {
|
|
260
|
-
display: grid;
|
|
261
|
-
grid-template-columns: 0.95fr 1.4fr;
|
|
262
|
-
min-height: 330px;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.sidebar {
|
|
266
|
-
background: #f8fafc;
|
|
267
|
-
border-right: 1px solid var(--border);
|
|
268
|
-
padding: 16px;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
.session {
|
|
272
|
-
border: 1px solid transparent;
|
|
273
|
-
border-radius: 14px;
|
|
274
|
-
color: var(--muted);
|
|
275
|
-
font-size: 0.82rem;
|
|
276
|
-
margin-bottom: 10px;
|
|
277
|
-
padding: 10px;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.session strong { color: var(--text); display: block; font-size: 0.9rem; }
|
|
281
|
-
.session.active { background: #fff; border-color: var(--border); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.05); }
|
|
282
|
-
|
|
283
|
-
.content { display: flex; flex-direction: column; padding: 16px; gap: 12px; }
|
|
284
|
-
|
|
285
|
-
.chat-card, .file-card, .terminal {
|
|
286
|
-
border: 1px solid var(--border);
|
|
287
|
-
border-radius: 16px;
|
|
288
|
-
padding: 14px;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.chat-card { background: linear-gradient(135deg, #eef4ff, #ffffff); }
|
|
292
|
-
.chat-card b, .file-card b { display: block; font-size: 0.86rem; margin-bottom: 4px; }
|
|
293
|
-
.chat-card p, .file-card p { color: var(--muted); font-size: 0.82rem; }
|
|
294
|
-
|
|
295
|
-
.terminal {
|
|
296
|
-
background: var(--code);
|
|
297
|
-
color: #dbeafe;
|
|
298
|
-
cursor: pointer;
|
|
299
|
-
font-family: Consolas, 'Courier New', monospace;
|
|
300
|
-
font-size: 0.78rem;
|
|
301
|
-
line-height: 1.8;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
.terminal span { color: #86efac; }
|
|
305
|
-
|
|
306
|
-
.section-head {
|
|
307
|
-
margin: 72px auto 26px;
|
|
308
|
-
max-width: 680px;
|
|
309
|
-
text-align: center;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
.section-head h2 {
|
|
313
|
-
font-size: clamp(1.8rem, 3.6vw, 3rem);
|
|
314
|
-
letter-spacing: -0.05em;
|
|
315
|
-
line-height: 1.12;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.section-head p {
|
|
319
|
-
color: var(--muted);
|
|
320
|
-
margin-top: 12px;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.features {
|
|
324
|
-
display: grid;
|
|
325
|
-
gap: 16px;
|
|
326
|
-
grid-template-columns: repeat(4, 1fr);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
.feature-card {
|
|
330
|
-
background: var(--card);
|
|
331
|
-
border: 1px solid var(--border);
|
|
332
|
-
border-radius: 22px;
|
|
333
|
-
padding: 22px;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
.feature-card h3 {
|
|
337
|
-
font-size: 1rem;
|
|
338
|
-
letter-spacing: -0.02em;
|
|
339
|
-
margin: 14px 0 7px;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
.feature-card p {
|
|
343
|
-
color: var(--muted);
|
|
344
|
-
font-size: 0.9rem;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
.feature-icon {
|
|
348
|
-
align-items: center;
|
|
349
|
-
background: var(--accent-soft);
|
|
350
|
-
border-radius: 14px;
|
|
351
|
-
color: var(--accent);
|
|
352
|
-
display: flex;
|
|
353
|
-
height: 42px;
|
|
354
|
-
justify-content: center;
|
|
355
|
-
width: 42px;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
.feature-icon svg {
|
|
359
|
-
fill: none;
|
|
360
|
-
height: 21px;
|
|
361
|
-
stroke: currentColor;
|
|
362
|
-
stroke-linecap: round;
|
|
363
|
-
stroke-linejoin: round;
|
|
364
|
-
stroke-width: 2;
|
|
365
|
-
width: 21px;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
.security {
|
|
369
|
-
align-items: center;
|
|
370
|
-
background: #0f172a;
|
|
371
|
-
border-radius: 28px;
|
|
372
|
-
color: #fff;
|
|
373
|
-
display: grid;
|
|
374
|
-
gap: 28px;
|
|
375
|
-
grid-template-columns: 1.1fr 0.9fr;
|
|
376
|
-
margin-top: 18px;
|
|
377
|
-
padding: 30px;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
.security h2 { font-size: clamp(1.6rem, 3vw, 2.5rem); letter-spacing: -0.05em; line-height: 1.12; }
|
|
381
|
-
.security p { color: #b6c3d7; margin-top: 12px; }
|
|
382
|
-
|
|
383
|
-
.encrypt-flow {
|
|
384
|
-
background: rgba(255, 255, 255, 0.06);
|
|
385
|
-
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
386
|
-
border-radius: 20px;
|
|
387
|
-
color: #cbd5e1;
|
|
388
|
-
display: grid;
|
|
389
|
-
font-family: Consolas, 'Courier New', monospace;
|
|
390
|
-
gap: 10px;
|
|
391
|
-
padding: 16px;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
.encrypt-flow div {
|
|
395
|
-
align-items: center;
|
|
396
|
-
display: flex;
|
|
397
|
-
justify-content: space-between;
|
|
398
|
-
gap: 14px;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
.encrypt-flow span:last-child { color: #86efac; }
|
|
402
|
-
|
|
403
|
-
footer {
|
|
404
|
-
border-top: 1px solid var(--border);
|
|
405
|
-
color: var(--muted);
|
|
406
|
-
display: flex;
|
|
407
|
-
font-size: 0.86rem;
|
|
408
|
-
justify-content: space-between;
|
|
409
|
-
margin-top: 76px;
|
|
410
|
-
padding: 28px 0;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
.toast {
|
|
414
|
-
background: var(--text);
|
|
415
|
-
border-radius: 999px;
|
|
416
|
-
bottom: 24px;
|
|
417
|
-
color: #fff;
|
|
418
|
-
font-size: 0.84rem;
|
|
419
|
-
font-weight: 700;
|
|
420
|
-
left: 50%;
|
|
421
|
-
opacity: 0;
|
|
422
|
-
padding: 10px 18px;
|
|
423
|
-
pointer-events: none;
|
|
424
|
-
position: fixed;
|
|
425
|
-
transform: translate(-50%, 16px);
|
|
426
|
-
transition: opacity 0.22s, transform 0.22s;
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
.toast.show { opacity: 1; transform: translate(-50%, 0); }
|
|
430
|
-
|
|
431
|
-
@media (max-width: 900px) {
|
|
432
|
-
.hero, .security { grid-template-columns: 1fr; }
|
|
433
|
-
.hero { padding-top: 44px; }
|
|
434
|
-
.features { grid-template-columns: repeat(2, 1fr); }
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
@media (max-width: 620px) {
|
|
438
|
-
nav, main, footer { width: min(100% - 24px, 1120px); }
|
|
439
|
-
h1 { font-size: clamp(2.35rem, 15vw, 4rem); }
|
|
440
|
-
.workspace-body { grid-template-columns: 1fr; }
|
|
441
|
-
.sidebar { border-right: 0; border-bottom: 1px solid var(--border); }
|
|
442
|
-
.features { grid-template-columns: 1fr; }
|
|
443
|
-
.security { padding: 22px; }
|
|
444
|
-
footer { flex-direction: column; gap: 8px; }
|
|
445
|
-
}
|
|
446
|
-
</style>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>msclaude — 远程控制开发机上的 Coding Agent</title>
|
|
7
|
+
<meta name="description" content="在浏览器中远程控制开发机上的 Pi、GitHub Copilot、Claude Code 和 OpenAI Codex,并行管理多个工作目录,支持端到端加密和自托管中继。">
|
|
8
|
+
<meta name="robots" content="index, follow, max-image-preview:large">
|
|
9
|
+
<meta name="application-name" content="msclaude">
|
|
10
|
+
<meta name="theme-color" content="#f2efe8">
|
|
11
|
+
<link rel="canonical" href="https://msclaude.ai/zh">
|
|
12
|
+
<link rel="alternate" hreflang="en" href="https://msclaude.ai/">
|
|
13
|
+
<link rel="alternate" hreflang="zh-CN" href="https://msclaude.ai/zh">
|
|
14
|
+
<link rel="alternate" hreflang="x-default" href="https://msclaude.ai/">
|
|
15
|
+
<meta property="og:type" content="website">
|
|
16
|
+
<meta property="og:site_name" content="msclaude">
|
|
17
|
+
<meta property="og:locale" content="zh_CN">
|
|
18
|
+
<meta property="og:locale:alternate" content="en_US">
|
|
19
|
+
<meta property="og:title" content="msclaude — 远程控制开发机上的 Coding Agent">
|
|
20
|
+
<meta property="og:description" content="在一个浏览器工作台中使用多个 Agent 和工作目录。代码和执行环境仍然保留在开发机上。">
|
|
21
|
+
<meta property="og:url" content="https://msclaude.ai/zh">
|
|
22
|
+
<meta property="og:image" content="https://msclaude.ai/iPad.png">
|
|
23
|
+
<meta property="og:image:alt" content="展示多个 Coding Agent 并行会话的 msclaude 浏览器工作台">
|
|
24
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
25
|
+
<meta name="twitter:title" content="msclaude — 远程控制开发机上的 Coding Agent">
|
|
26
|
+
<meta name="twitter:description" content="在浏览器中管理开发机上的 Pi、Copilot、Claude Code 和 Codex 会话。">
|
|
27
|
+
<meta name="twitter:image" content="https://msclaude.ai/iPad.png">
|
|
28
|
+
<meta name="twitter:image:alt" content="展示多个 Coding Agent 并行会话的 msclaude 浏览器工作台">
|
|
29
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
30
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
31
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
32
|
+
<link rel="manifest" href="/site.webmanifest">
|
|
33
|
+
<link rel="preload" href="/vendor/SpaceGrotesk-latin.woff2" as="font" type="font/woff2" crossorigin>
|
|
34
|
+
<link rel="stylesheet" href="/landing/landing.css">
|
|
35
|
+
<script src="/landing/landing.js" defer></script>
|
|
36
|
+
<script type="application/ld+json">
|
|
37
|
+
{
|
|
38
|
+
"@context": "https://schema.org",
|
|
39
|
+
"@type": "SoftwareApplication",
|
|
40
|
+
"name": "msclaude",
|
|
41
|
+
"url": "https://msclaude.ai/zh",
|
|
42
|
+
"description": "用于远程控制开发机上 Coding Agent 的浏览器工作台。",
|
|
43
|
+
"applicationCategory": "DeveloperApplication",
|
|
44
|
+
"operatingSystem": "Windows, macOS, Linux",
|
|
45
|
+
"isAccessibleForFree": true,
|
|
46
|
+
"downloadUrl": "https://www.npmjs.com/package/@agent-link/agent",
|
|
47
|
+
"softwareRequirements": "Node.js 18 或更高版本",
|
|
48
|
+
"featureList": [
|
|
49
|
+
"并行管理多个 Coding Agent 会话",
|
|
50
|
+
"支持多个工作目录",
|
|
51
|
+
"支持 Pi、GitHub Copilot、Claude Code 和 OpenAI Codex",
|
|
52
|
+
"文件、Git、终端和本地端口访问",
|
|
53
|
+
"消息端到端加密",
|
|
54
|
+
"支持自托管中继服务"
|
|
55
|
+
],
|
|
56
|
+
"offers": {
|
|
57
|
+
"@type": "Offer",
|
|
58
|
+
"price": "0",
|
|
59
|
+
"priceCurrency": "USD"
|
|
60
|
+
},
|
|
61
|
+
"sameAs": [
|
|
62
|
+
"https://github.com/kailunshi_microsoft/AgenticWorker",
|
|
63
|
+
"https://www.npmjs.com/package/@agent-link/agent"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
447
67
|
</head>
|
|
448
|
-
<body
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
<a href="/"
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
</
|
|
461
|
-
|
|
462
|
-
<
|
|
463
|
-
|
|
464
|
-
<div>
|
|
465
|
-
<div class="eyebrow">Coding Agent 的远程工作台</div>
|
|
466
|
-
<h1>你的 Agent,<br><span>随时打开。</span></h1>
|
|
467
|
-
<p class="lead">msclaude 把本地项目连接到私有 Web 工作台,让你可以在任何设备上操控 Copilot、Claude Code、Codex 和更多 Agent。</p>
|
|
468
|
-
<div class="agent-row" aria-label="支持的 Agent">
|
|
469
|
-
<span class="agent-pill">GitHub Copilot</span>
|
|
470
|
-
<span class="agent-pill">Claude Code</span>
|
|
471
|
-
<span class="agent-pill">OpenAI Codex</span>
|
|
472
|
-
<span class="agent-pill">更多 Agent 后端</span>
|
|
68
|
+
<body
|
|
69
|
+
data-install-command="npm install -g @agent-link/agent && agentlink-client start --daemon"
|
|
70
|
+
data-copy-success="安装命令已复制"
|
|
71
|
+
data-copy-failure="复制失败,请手动选择命令"
|
|
72
|
+
>
|
|
73
|
+
<a class="skip-link" href="#main">跳到正文</a>
|
|
74
|
+
|
|
75
|
+
<header class="site-header">
|
|
76
|
+
<nav class="nav-shell" aria-label="主导航">
|
|
77
|
+
<a class="brand" href="/zh" aria-label="msclaude 首页">
|
|
78
|
+
<img class="brand-mark" src="/landing/icons/msclaude-animated.svg" alt="">
|
|
79
|
+
<span>msclaude</span>
|
|
80
|
+
</a>
|
|
81
|
+
<div class="nav-actions">
|
|
82
|
+
<a class="text-link github-link" href="https://github.com/kailunshi_microsoft/AgenticWorker" target="_blank" rel="noopener">GitHub</a>
|
|
83
|
+
<a class="language-link" href="/" lang="en" hreflang="en">EN</a>
|
|
473
84
|
</div>
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
85
|
+
</nav>
|
|
86
|
+
</header>
|
|
87
|
+
|
|
88
|
+
<main id="main">
|
|
89
|
+
<section class="hero" aria-labelledby="hero-title">
|
|
90
|
+
<div class="hero-copy">
|
|
91
|
+
<p class="eyebrow"><span></span> 开源的本地 Agent 远程工作台</p>
|
|
92
|
+
<h1 id="hero-title">在浏览器中远程控制开发机上的 <em>Coding Agent。</em></h1>
|
|
93
|
+
<p class="hero-lead">msclaude 将浏览器连接到本地运行的 Coding Agent。你可以从其他设备继续开发工作,代码、工具和执行环境仍然保留在自己的机器上。</p>
|
|
94
|
+
|
|
95
|
+
<div class="agent-list" aria-label="支持的 Coding Agent">
|
|
96
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i> Pi</span>
|
|
97
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-copilot.svg" alt=""></i> GitHub Copilot</span>
|
|
98
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i> Claude Code</span>
|
|
99
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i> OpenAI Codex</span>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<div class="hero-actions">
|
|
103
|
+
<button class="install-command" type="button" data-copy-install>
|
|
104
|
+
<span class="install-prompt" aria-hidden="true">$</span>
|
|
105
|
+
<code><span>npm install -g @agent-link/agent</span><span>agentlink-client start --daemon</span></code>
|
|
106
|
+
<span class="copy-label">复制</span>
|
|
107
|
+
</button>
|
|
108
|
+
</div>
|
|
109
|
+
<p class="compatibility">Windows · macOS · Linux · Node.js 18+</p>
|
|
483
110
|
</div>
|
|
484
|
-
</div>
|
|
485
111
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
<span>msclaude
|
|
490
|
-
<span
|
|
112
|
+
<div class="product-window" aria-label="并行 Coding Agent 会话示意图">
|
|
113
|
+
<div class="window-bar">
|
|
114
|
+
<span class="window-dots" aria-hidden="true"><i></i><i></i><i></i></span>
|
|
115
|
+
<span>msclaude · 4 个会话</span>
|
|
116
|
+
<span class="encrypted-label">● 端到端加密</span>
|
|
491
117
|
</div>
|
|
492
|
-
<div class="
|
|
493
|
-
<
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
<div class="
|
|
505
|
-
|
|
506
|
-
|
|
118
|
+
<div class="provider-switcher" aria-label="四个支持的 Agent">
|
|
119
|
+
<span class="provider-switcher-label">本页运行的 Agent</span>
|
|
120
|
+
<span class="active"><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i>Pi <b>1</b></span>
|
|
121
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-copilot.svg" alt=""></i>Copilot <b>1</b></span>
|
|
122
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i>Claude Code <b>1</b></span>
|
|
123
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i>Codex <b>1</b></span>
|
|
124
|
+
</div>
|
|
125
|
+
<div class="workspace-ui">
|
|
126
|
+
<aside class="session-sidebar">
|
|
127
|
+
<div class="sidebar-title"><strong>会话</strong><span>+</span></div>
|
|
128
|
+
<div class="directory-label">Q:\src\frontend</div>
|
|
129
|
+
<div class="session-row active"><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i><span><strong>修改主页文案</strong><small>Pi · 处理中</small></span><b></b></div>
|
|
130
|
+
<div class="session-row"><i class="provider-icon"><img src="/landing/icons/agent-copilot.svg" alt=""></i><span><strong>修复登录回调</strong><small>Copilot · 已完成</small></span></div>
|
|
131
|
+
<div class="directory-label">D:\work\api</div>
|
|
132
|
+
<div class="session-row"><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i><span><strong>Review API 改动</strong><small>Claude Code · 处理中</small></span><b></b></div>
|
|
133
|
+
<div class="session-row"><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i><span><strong>更新单元测试</strong><small>Codex · 已完成</small></span></div>
|
|
134
|
+
</aside>
|
|
135
|
+
<div class="chat-ui">
|
|
136
|
+
<div class="chat-head">
|
|
137
|
+
<div><strong>修改主页文案</strong><small>Q:\src\frontend · Pi</small></div>
|
|
138
|
+
<div class="chat-actions"><span>文件</span><span>Git</span><span>终端</span></div>
|
|
507
139
|
</div>
|
|
508
|
-
<div class="
|
|
509
|
-
|
|
140
|
+
<div class="chat-body">
|
|
141
|
+
<div class="message user-message">修改主页文案,并保持页面紧凑。</div>
|
|
142
|
+
<div class="message agent-message">
|
|
143
|
+
<span class="message-author"><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i> Pi</span>
|
|
144
|
+
<p>我会更新产品描述,展示支持的 Agent,并把主要内容控制在两屏以内。</p>
|
|
145
|
+
<div class="tool-call"><span>✓</span><div><strong>apply_patch</strong><small>已更新 landing.html 和 landing.css</small></div></div>
|
|
146
|
+
</div>
|
|
510
147
|
</div>
|
|
148
|
+
<div class="chat-input"><span>继续给 Pi 发送指令...</span><button aria-label="发送消息">↑</button></div>
|
|
511
149
|
</div>
|
|
512
150
|
</div>
|
|
513
151
|
</div>
|
|
514
|
-
</
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
152
|
+
</section>
|
|
153
|
+
|
|
154
|
+
<section class="capabilities" id="sessions" aria-labelledby="capabilities-title">
|
|
155
|
+
<div class="section-intro">
|
|
156
|
+
<p class="section-label">工作台</p>
|
|
157
|
+
<div>
|
|
158
|
+
<h2 id="capabilities-title">在一个页面中管理多个 Agent 和项目。</h2>
|
|
159
|
+
<p>同时查看不同 Agent 和工作目录中的会话。无需在多个终端或浏览器标签页之间切换,即可检查进度并发送后续指令。</p>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
522
162
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
163
|
+
<div class="capability-grid">
|
|
164
|
+
<article class="capability-card sessions-card">
|
|
165
|
+
<div class="card-icon">▦</div>
|
|
166
|
+
<div>
|
|
167
|
+
<h3>并行会话</h3>
|
|
168
|
+
<p>并行运行多个 Agent 会话,按工作目录组织,并随时搜索以前的对话。</p>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="session-stack" aria-hidden="true">
|
|
171
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-pi.svg" alt=""></i><b>Pi</b><small>Q:\src\frontend</small><em>处理中</em></span>
|
|
172
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-claude.svg" alt=""></i><b>Claude Code</b><small>D:\work\api</small><em>处理中</em></span>
|
|
173
|
+
<span><i class="provider-icon"><img src="/landing/icons/agent-codex.svg" alt=""></i><b>Codex</b><small>C:\repo\mobile</small><em>已完成</em></span>
|
|
174
|
+
</div>
|
|
175
|
+
</article>
|
|
176
|
+
|
|
177
|
+
<article class="capability-card tools-card" id="tools">
|
|
178
|
+
<div class="card-icon">>_</div>
|
|
179
|
+
<h3>对话与开发工具</h3>
|
|
180
|
+
<p>对话是主要操作方式。需要更多上下文或控制时,项目工具会直接显示在会话旁边。</p>
|
|
181
|
+
<ul class="tool-list">
|
|
182
|
+
<li>文件 <small>浏览、预览、编辑</small></li>
|
|
183
|
+
<li>Git <small>状态与 Diff</small></li>
|
|
184
|
+
<li>终端 <small>运行本地命令</small></li>
|
|
185
|
+
<li>Port Proxy <small>打开本地服务</small></li>
|
|
186
|
+
</ul>
|
|
187
|
+
</article>
|
|
188
|
+
|
|
189
|
+
<article class="capability-card steps-card">
|
|
190
|
+
<p class="section-label">工作原理</p>
|
|
191
|
+
<ol>
|
|
192
|
+
<li><span>1</span><div><strong>从本地启动</strong><small>在一个工作目录中运行 msclaude。</small></div></li>
|
|
193
|
+
<li><span>2</span><div><strong>打开会话链接</strong><small>在其他设备上打开生成的网址。</small></div></li>
|
|
194
|
+
<li><span>3</span><div><strong>继续开发</strong><small>远程使用对话、文件、Git 和终端。</small></div></li>
|
|
195
|
+
</ol>
|
|
196
|
+
</article>
|
|
197
|
+
</div>
|
|
198
|
+
</section>
|
|
199
|
+
|
|
200
|
+
<section class="trust-section" aria-label="安全与自托管">
|
|
201
|
+
<article class="trust-card" id="security">
|
|
202
|
+
<div>
|
|
203
|
+
<p class="section-label">端到端加密</p>
|
|
204
|
+
<h2>中继无法读取你的工作内容。</h2>
|
|
205
|
+
<p>浏览器与本地 Agent 之间的消息采用端到端加密。中继无法读取 Prompt、回复、工具输出或文件内容。代码和执行始终保留在开发机上。</p>
|
|
206
|
+
</div>
|
|
533
207
|
</article>
|
|
534
|
-
<article class="
|
|
535
|
-
<div
|
|
536
|
-
|
|
537
|
-
|
|
208
|
+
<article class="trust-card">
|
|
209
|
+
<div>
|
|
210
|
+
<p class="section-label">多设备访问</p>
|
|
211
|
+
<h2>从常用设备继续 Agent 会话。</h2>
|
|
212
|
+
<p>在电脑、平板或手机的浏览器中打开同一个会话链接,查看执行进度、发送后续指令,并使用相关开发工具。</p>
|
|
213
|
+
</div>
|
|
538
214
|
</article>
|
|
539
|
-
<article class="
|
|
540
|
-
<div
|
|
541
|
-
|
|
542
|
-
|
|
215
|
+
<article class="trust-card" id="self-hosting">
|
|
216
|
+
<div>
|
|
217
|
+
<p class="section-label">自托管</p>
|
|
218
|
+
<h2>轻松部署自己的中继服务。</h2>
|
|
219
|
+
<p>使用托管中继最简单,但不是必需条件。轻量的 msclaude 中继可以部署到自己的基础设施,并保留相同的浏览器体验和加密机制。</p>
|
|
220
|
+
</div>
|
|
543
221
|
</article>
|
|
544
|
-
</
|
|
545
|
-
</
|
|
546
|
-
|
|
547
|
-
<section class="security" aria-label="安全">
|
|
548
|
-
<div>
|
|
549
|
-
<h2>默认保护你的代码。</h2>
|
|
550
|
-
<p>代码仍然留在本机。msclaude 只建立安全的浏览器访问通道,项目文件、命令执行和凭据都由本地 Agent 控制。</p>
|
|
551
|
-
</div>
|
|
552
|
-
<div class="encrypt-flow">
|
|
553
|
-
<div><span>browser</span><span>sealed message</span></div>
|
|
554
|
-
<div><span>relay</span><span>ciphertext only</span></div>
|
|
555
|
-
<div><span>local agent</span><span>decrypted locally</span></div>
|
|
556
|
-
</div>
|
|
557
|
-
</section>
|
|
558
|
-
</main>
|
|
559
|
-
|
|
560
|
-
<footer>
|
|
561
|
-
<span><strong>msclaude</strong></span>
|
|
562
|
-
<span>
|
|
563
|
-
<a href="https://github.com/kailunshi_microsoft/AgenticWorker" rel="noopener">GitHub</a>
|
|
564
|
-
·
|
|
565
|
-
<a href="https://www.linkedin.com/in/shikailun/" rel="noopener">LinkedIn</a>
|
|
566
|
-
</span>
|
|
567
|
-
</footer>
|
|
568
|
-
|
|
569
|
-
<div class="toast" id="copyToast">已复制到剪贴板</div>
|
|
570
|
-
|
|
571
|
-
<script>
|
|
572
|
-
function copyCmd(text) {
|
|
573
|
-
navigator.clipboard.writeText(text);
|
|
574
|
-
showToast();
|
|
575
|
-
}
|
|
222
|
+
</section>
|
|
223
|
+
</main>
|
|
576
224
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
225
|
+
<footer class="site-footer">
|
|
226
|
+
<a class="brand footer-brand" href="/zh"><img class="brand-mark" src="/landing/icons/msclaude-animated.svg" alt=""><span>msclaude</span></a>
|
|
227
|
+
<p>远程使用开发机上运行的 Coding Agent。</p>
|
|
228
|
+
<div><a href="https://github.com/kailunshi_microsoft/AgenticWorker" target="_blank" rel="noopener">GitHub</a><a href="/" lang="en" hreflang="en">EN</a></div>
|
|
229
|
+
</footer>
|
|
580
230
|
|
|
581
|
-
|
|
582
|
-
const toast = document.getElementById('copyToast');
|
|
583
|
-
toast.classList.add('show');
|
|
584
|
-
setTimeout(() => toast.classList.remove('show'), 1800);
|
|
585
|
-
}
|
|
586
|
-
</script>
|
|
231
|
+
<div class="toast" role="status" aria-live="polite">安装命令已复制</div>
|
|
587
232
|
</body>
|
|
588
233
|
</html>
|