@agent-link/server 0.1.481 → 0.1.483
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 +2 -2
- package/web/dist/assets/{cssMode-CP0w4p0j.js → cssMode-BgTYHcuM.js} +1 -1
- package/web/dist/assets/{editor.main-Bqi4V96Y.js → editor.main-Drp9vUSD.js} +3 -3
- package/web/dist/assets/{freemarker2-D-1smmKR.js → freemarker2-pRdmT09W.js} +1 -1
- package/web/dist/assets/{handlebars-BkvVaMm1.js → handlebars-B0Xdif6J.js} +1 -1
- package/web/dist/assets/{html-DujTvSZt.js → html-CNRR2zfa.js} +1 -1
- package/web/dist/assets/{htmlMode-uGQZpNr6.js → htmlMode-DxfGomI0.js} +1 -1
- package/web/dist/assets/{index-DY1VorHg.js → index-tLAnmOlD.js} +3 -3
- package/web/dist/assets/{javascript-BrSignCR.js → javascript-CvarHlzf.js} +1 -1
- package/web/dist/assets/{jsonMode-bx-Oa7mN.js → jsonMode-_Jl3UHwN.js} +1 -1
- package/web/dist/assets/{liquid-BP0WX82L.js → liquid-Dib1P7jM.js} +1 -1
- package/web/dist/assets/{lspLanguageFeatures-BOdSm1bg.js → lspLanguageFeatures-CpmNHauY.js} +1 -1
- package/web/dist/assets/{mdx-CgD0acQR.js → mdx-BpaZ_G7w.js} +1 -1
- package/web/dist/assets/{python-Dk1htDY-.js → python-B0A3NmW9.js} +1 -1
- package/web/dist/assets/{razor-DDSydfgg.js → razor-DPlYFMxz.js} +1 -1
- package/web/dist/assets/{tsMode-Z8MLI243.js → tsMode-_byvtSnO.js} +1 -1
- package/web/dist/assets/{typescript-Dh8dVoWo.js → typescript-DQ5QPLYi.js} +1 -1
- package/web/dist/assets/{xml-FRrY4Fau.js → xml-mMKfX8qT.js} +1 -1
- package/web/dist/assets/{yaml-BcvIgHmy.js → yaml-Ct2TEW_b.js} +1 -1
- package/web/dist/index.html +1 -1
- package/web/dist/landing.html +386 -517
- package/web/dist/landing.zh.html +380 -520
package/web/dist/landing.zh.html
CHANGED
|
@@ -3,26 +3,24 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>AgenticWorker —
|
|
7
|
-
<meta name="description" content="Claude Code
|
|
8
|
-
<meta name="keywords" content="
|
|
6
|
+
<title>AgenticWorker — 随时随地操控你的 Coding Agent</title>
|
|
7
|
+
<meta name="description" content="AgenticWorker 为 Copilot、Claude Code 和更多 Coding Agent 提供简洁的远程工作台,支持多目录会话管理、文件预览/编辑、远程终端和端到端加密。">
|
|
8
|
+
<meta name="keywords" content="AgenticWorker, Copilot, Claude Code, Coding Agent, 远程工作台, 浏览器 IDE, 端到端加密, 远程终端, 文件编辑">
|
|
9
9
|
<link rel="canonical" href="https://msclaude.ai/zh">
|
|
10
10
|
<link rel="alternate" hreflang="en" href="https://msclaude.ai/">
|
|
11
11
|
<link rel="alternate" hreflang="zh" href="https://msclaude.ai/zh">
|
|
12
12
|
<link rel="alternate" hreflang="x-default" href="https://msclaude.ai/">
|
|
13
|
-
<!-- Open Graph -->
|
|
14
13
|
<meta property="og:type" content="website">
|
|
15
|
-
<meta property="og:title" content="AgenticWorker —
|
|
16
|
-
<meta property="og:description" content="Claude Code
|
|
14
|
+
<meta property="og:title" content="AgenticWorker — 随时随地操控你的 Coding Agent">
|
|
15
|
+
<meta property="og:description" content="为 Copilot、Claude Code 和更多 Coding Agent 准备的远程工作台。多目录会话、文件、终端、端到端加密。">
|
|
17
16
|
<meta property="og:url" content="https://msclaude.ai/zh">
|
|
18
17
|
<meta property="og:image" content="https://msclaude.ai/iPad.png">
|
|
19
18
|
<meta property="og:site_name" content="AgenticWorker">
|
|
20
19
|
<meta property="og:locale" content="zh_CN">
|
|
21
20
|
<meta property="og:locale:alternate" content="en_US">
|
|
22
|
-
<!-- Twitter Card -->
|
|
23
21
|
<meta name="twitter:card" content="summary_large_image">
|
|
24
|
-
<meta name="twitter:title" content="AgenticWorker —
|
|
25
|
-
<meta name="twitter:description" content="Claude Code
|
|
22
|
+
<meta name="twitter:title" content="AgenticWorker — 随时随地操控你的 Coding Agent">
|
|
23
|
+
<meta name="twitter:description" content="为 Copilot、Claude Code 和更多 Coding Agent 准备的远程工作台。">
|
|
26
24
|
<meta name="twitter:image" content="https://msclaude.ai/iPad.png">
|
|
27
25
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
28
26
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
@@ -33,7 +31,7 @@
|
|
|
33
31
|
"@context": "https://schema.org",
|
|
34
32
|
"@type": "SoftwareApplication",
|
|
35
33
|
"name": "AgenticWorker",
|
|
36
|
-
"description": "Claude Code
|
|
34
|
+
"description": "为 Copilot、Claude Code 和更多 Coding Agent 准备的远程工作台,支持端到端加密。",
|
|
37
35
|
"url": "https://msclaude.ai/zh",
|
|
38
36
|
"applicationCategory": "DeveloperApplication",
|
|
39
37
|
"operatingSystem": "Windows, macOS, Linux",
|
|
@@ -49,590 +47,524 @@
|
|
|
49
47
|
font-display: swap;
|
|
50
48
|
src: url('/vendor/SpaceGrotesk-latin.woff2') format('woff2');
|
|
51
49
|
}
|
|
52
|
-
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
|
|
53
50
|
|
|
54
|
-
* {
|
|
51
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
55
52
|
|
|
56
53
|
:root {
|
|
57
|
-
--bg: #
|
|
58
|
-
--
|
|
59
|
-
--
|
|
60
|
-
--
|
|
61
|
-
--text
|
|
62
|
-
--
|
|
63
|
-
--accent
|
|
64
|
-
--
|
|
54
|
+
--bg: #fbfcff;
|
|
55
|
+
--card: #ffffff;
|
|
56
|
+
--surface: #f3f6fb;
|
|
57
|
+
--border: #e4e9f2;
|
|
58
|
+
--text: #111827;
|
|
59
|
+
--muted: #64748b;
|
|
60
|
+
--accent: #018B8D;
|
|
61
|
+
--accent-soft: #e6f7f7;
|
|
62
|
+
--green: #16a34a;
|
|
63
|
+
--code: #101827;
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
body {
|
|
68
|
-
|
|
69
|
-
background:
|
|
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%);
|
|
70
71
|
color: var(--text);
|
|
71
|
-
|
|
72
|
+
font-family: 'Space Grotesk', system-ui, -apple-system, BlinkMacSystemFont, 'Microsoft YaHei', sans-serif;
|
|
73
|
+
line-height: 1.65;
|
|
72
74
|
-webkit-font-smoothing: antialiased;
|
|
73
75
|
}
|
|
74
76
|
|
|
75
|
-
|
|
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
|
+
|
|
76
84
|
nav {
|
|
77
85
|
display: flex;
|
|
78
86
|
align-items: center;
|
|
79
87
|
justify-content: space-between;
|
|
80
|
-
padding:
|
|
81
|
-
max-width: 1080px;
|
|
82
|
-
margin: 0 auto;
|
|
88
|
+
padding: 24px 0;
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
.logo {
|
|
86
|
-
display: flex;
|
|
92
|
+
display: inline-flex;
|
|
87
93
|
align-items: center;
|
|
88
|
-
gap:
|
|
89
|
-
font-size: 1.1rem;
|
|
94
|
+
gap: 10px;
|
|
90
95
|
font-weight: 700;
|
|
91
|
-
|
|
92
|
-
letter-spacing: -0.02em;
|
|
96
|
+
letter-spacing: -0.03em;
|
|
93
97
|
}
|
|
94
98
|
|
|
95
|
-
.logo img { width:
|
|
99
|
+
.logo img { width: 28px; height: 28px; border-radius: 8px; }
|
|
96
100
|
|
|
97
|
-
.nav-
|
|
98
|
-
display: flex;
|
|
101
|
+
.nav-actions {
|
|
99
102
|
align-items: center;
|
|
100
|
-
|
|
103
|
+
display: flex;
|
|
104
|
+
gap: 10px;
|
|
101
105
|
}
|
|
102
106
|
|
|
103
|
-
.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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;
|
|
108
115
|
}
|
|
109
116
|
|
|
110
|
-
.
|
|
117
|
+
.repo-link:hover,
|
|
118
|
+
.nav-lang:hover { color: var(--text); background: #fff; }
|
|
111
119
|
|
|
112
|
-
.
|
|
113
|
-
display:
|
|
120
|
+
.hero {
|
|
121
|
+
display: grid;
|
|
122
|
+
grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);
|
|
123
|
+
gap: 56px;
|
|
114
124
|
align-items: center;
|
|
115
|
-
|
|
116
|
-
border: 1px solid var(--border);
|
|
117
|
-
border-radius: 8px;
|
|
118
|
-
padding: 0.4rem 0.75rem;
|
|
125
|
+
padding: 70px 0 42px;
|
|
119
126
|
}
|
|
120
127
|
|
|
121
|
-
.
|
|
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
|
+
}
|
|
122
141
|
|
|
123
|
-
.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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);
|
|
128
149
|
}
|
|
129
150
|
|
|
130
|
-
|
|
131
|
-
.hero {
|
|
132
|
-
text-align: center;
|
|
133
|
-
padding: 5rem 2rem 3rem;
|
|
151
|
+
h1 {
|
|
134
152
|
max-width: 720px;
|
|
135
|
-
|
|
153
|
+
font-size: clamp(2.65rem, 5.8vw, 5.25rem);
|
|
154
|
+
letter-spacing: -0.07em;
|
|
155
|
+
line-height: 1;
|
|
136
156
|
}
|
|
137
157
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
padding: 0.35rem 1rem;
|
|
146
|
-
font-size: 0.8rem;
|
|
147
|
-
color: var(--accent);
|
|
148
|
-
font-weight: 500;
|
|
149
|
-
margin-bottom: 2rem;
|
|
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;
|
|
150
165
|
}
|
|
151
166
|
|
|
152
|
-
.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
167
|
+
.agent-row {
|
|
168
|
+
display: flex;
|
|
169
|
+
flex-wrap: wrap;
|
|
170
|
+
gap: 10px;
|
|
171
|
+
margin-bottom: 32px;
|
|
156
172
|
}
|
|
157
173
|
|
|
158
|
-
.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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;
|
|
165
185
|
}
|
|
166
186
|
|
|
167
|
-
.
|
|
168
|
-
|
|
169
|
-
|
|
187
|
+
.agent-pill::before {
|
|
188
|
+
content: "";
|
|
189
|
+
width: 8px;
|
|
190
|
+
height: 8px;
|
|
191
|
+
border-radius: 99px;
|
|
192
|
+
background: var(--accent);
|
|
170
193
|
}
|
|
171
194
|
|
|
172
|
-
|
|
173
|
-
.cta-group {
|
|
195
|
+
.cta-row {
|
|
174
196
|
display: flex;
|
|
175
|
-
align-items:
|
|
176
|
-
|
|
177
|
-
gap:
|
|
178
|
-
margin-bottom: 2rem;
|
|
197
|
+
align-items: flex-start;
|
|
198
|
+
flex-direction: column;
|
|
199
|
+
gap: 14px;
|
|
179
200
|
}
|
|
180
201
|
|
|
181
202
|
.cta-primary {
|
|
182
|
-
display: inline-flex;
|
|
183
203
|
align-items: center;
|
|
184
|
-
|
|
185
|
-
|
|
204
|
+
background: var(--text);
|
|
205
|
+
border: 0;
|
|
206
|
+
border-radius: 14px;
|
|
186
207
|
color: #fff;
|
|
187
|
-
font-weight: 600;
|
|
188
|
-
font-size: 0.9rem;
|
|
189
|
-
padding: 0.7rem 1.5rem;
|
|
190
|
-
border-radius: 10px;
|
|
191
|
-
border: none;
|
|
192
208
|
cursor: pointer;
|
|
193
|
-
|
|
209
|
+
display: inline-flex;
|
|
210
|
+
font: inherit;
|
|
211
|
+
font-size: 0.95rem;
|
|
212
|
+
font-weight: 700;
|
|
213
|
+
gap: 8px;
|
|
214
|
+
padding: 13px 18px;
|
|
194
215
|
}
|
|
195
216
|
|
|
196
|
-
.
|
|
197
|
-
|
|
198
|
-
.cta-secondary {
|
|
199
|
-
display: inline-flex;
|
|
200
|
-
align-items: center;
|
|
201
|
-
gap: 0.4rem;
|
|
202
|
-
background: var(--bg);
|
|
217
|
+
.install-command {
|
|
218
|
+
background: #fff;
|
|
203
219
|
border: 1px solid var(--border);
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
font-size: 0.9rem;
|
|
207
|
-
padding: 0.7rem 1.5rem;
|
|
208
|
-
border-radius: 10px;
|
|
209
|
-
text-decoration: none;
|
|
220
|
+
border-radius: 14px;
|
|
221
|
+
color: #334155;
|
|
210
222
|
cursor: pointer;
|
|
211
|
-
font-family:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
/* -- Terminal -- */
|
|
218
|
-
.terminal {
|
|
219
|
-
max-width: 500px;
|
|
220
|
-
margin: 0 auto;
|
|
221
|
-
background: var(--code-bg);
|
|
222
|
-
border-radius: 12px;
|
|
223
|
-
overflow: hidden;
|
|
224
|
-
box-shadow: 0 4px 24px rgba(0,0,0,0.08);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
.terminal-bar {
|
|
228
|
-
display: flex;
|
|
229
|
-
align-items: center;
|
|
230
|
-
gap: 6px;
|
|
231
|
-
padding: 0.7rem 1rem;
|
|
232
|
-
background: rgba(255,255,255,0.06);
|
|
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);
|
|
233
228
|
}
|
|
234
229
|
|
|
235
|
-
.
|
|
236
|
-
.terminal-dot:nth-child(1) { background: #ff5f57; }
|
|
237
|
-
.terminal-dot:nth-child(2) { background: #ffbd2e; }
|
|
238
|
-
.terminal-dot:nth-child(3) { background: #28c840; }
|
|
230
|
+
.install-command span { display: block; white-space: nowrap; }
|
|
239
231
|
|
|
240
|
-
.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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;
|
|
246
238
|
}
|
|
247
239
|
|
|
248
|
-
.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
color: #e2e8f0;
|
|
240
|
+
.workspace {
|
|
241
|
+
background: #fff;
|
|
242
|
+
border: 1px solid var(--border);
|
|
243
|
+
border-radius: 22px;
|
|
244
|
+
overflow: hidden;
|
|
254
245
|
}
|
|
255
246
|
|
|
256
|
-
.
|
|
257
|
-
display: flex;
|
|
247
|
+
.workspace-top {
|
|
258
248
|
align-items: center;
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
border-radius: 4px;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
.terminal-line:hover { background: rgba(255,255,255,0.05); }
|
|
267
|
-
|
|
268
|
-
.terminal-prompt { color: #60a5fa; user-select: none; }
|
|
269
|
-
.terminal-cmd { color: #86efac; }
|
|
270
|
-
|
|
271
|
-
.terminal-output {
|
|
272
|
-
color: rgba(255,255,255,0.45);
|
|
249
|
+
background: var(--surface);
|
|
250
|
+
border-bottom: 1px solid var(--border);
|
|
251
|
+
color: var(--muted);
|
|
252
|
+
display: flex;
|
|
273
253
|
font-size: 0.78rem;
|
|
274
|
-
|
|
275
|
-
|
|
254
|
+
font-weight: 700;
|
|
255
|
+
justify-content: space-between;
|
|
256
|
+
padding: 13px 16px;
|
|
276
257
|
}
|
|
277
258
|
|
|
278
|
-
.
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
bottom: 2rem;
|
|
283
|
-
left: 50%;
|
|
284
|
-
transform: translateX(-50%) translateY(20px);
|
|
285
|
-
background: var(--text);
|
|
286
|
-
color: #fff;
|
|
287
|
-
padding: 0.5rem 1.25rem;
|
|
288
|
-
border-radius: 8px;
|
|
289
|
-
font-size: 0.8rem;
|
|
290
|
-
font-weight: 500;
|
|
291
|
-
opacity: 0;
|
|
292
|
-
transition: all 0.3s;
|
|
293
|
-
pointer-events: none;
|
|
294
|
-
z-index: 100;
|
|
295
|
-
font-family: 'Noto Sans SC', 'Space Grotesk', system-ui, sans-serif;
|
|
259
|
+
.workspace-body {
|
|
260
|
+
display: grid;
|
|
261
|
+
grid-template-columns: 0.95fr 1.4fr;
|
|
262
|
+
min-height: 330px;
|
|
296
263
|
}
|
|
297
264
|
|
|
298
|
-
.
|
|
299
|
-
|
|
300
|
-
|
|
265
|
+
.sidebar {
|
|
266
|
+
background: #f8fafc;
|
|
267
|
+
border-right: 1px solid var(--border);
|
|
268
|
+
padding: 16px;
|
|
301
269
|
}
|
|
302
270
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
align-items: end;
|
|
311
|
-
gap: 1.5rem;
|
|
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;
|
|
312
278
|
}
|
|
313
279
|
|
|
314
|
-
.
|
|
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); }
|
|
315
282
|
|
|
316
|
-
.
|
|
283
|
+
.content { display: flex; flex-direction: column; padding: 16px; gap: 12px; }
|
|
317
284
|
|
|
318
|
-
.
|
|
319
|
-
position: relative;
|
|
320
|
-
width: 100%;
|
|
321
|
-
overflow: hidden;
|
|
322
|
-
border-radius: 4.2%;
|
|
323
|
-
box-shadow: 0 8px 40px rgba(0,0,0,0.1);
|
|
285
|
+
.chat-card, .file-card, .terminal {
|
|
324
286
|
border: 1px solid var(--border);
|
|
287
|
+
border-radius: 16px;
|
|
288
|
+
padding: 14px;
|
|
325
289
|
}
|
|
326
290
|
|
|
327
|
-
.
|
|
328
|
-
|
|
329
|
-
.
|
|
330
|
-
position: absolute;
|
|
331
|
-
top: 0; left: 0;
|
|
332
|
-
width: 100%;
|
|
333
|
-
opacity: 0;
|
|
334
|
-
transition: opacity 0.5s ease;
|
|
335
|
-
pointer-events: none;
|
|
336
|
-
}
|
|
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; }
|
|
337
294
|
|
|
338
|
-
.
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
pointer-events: auto;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.carousel-slide img { display: block; width: 100%; height: auto; }
|
|
345
|
-
|
|
346
|
-
.carousel-dots {
|
|
347
|
-
position: absolute;
|
|
348
|
-
bottom: 10px;
|
|
349
|
-
left: 50%;
|
|
350
|
-
transform: translateX(-50%);
|
|
351
|
-
display: flex;
|
|
352
|
-
gap: 6px;
|
|
353
|
-
z-index: 5;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
.carousel-dot {
|
|
357
|
-
width: 7px; height: 7px;
|
|
358
|
-
border-radius: 50%;
|
|
359
|
-
border: none;
|
|
360
|
-
background: rgba(255,255,255,0.45);
|
|
295
|
+
.terminal {
|
|
296
|
+
background: var(--code);
|
|
297
|
+
color: #dbeafe;
|
|
361
298
|
cursor: pointer;
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
.carousel-dot.active { background: rgba(255,255,255,0.9); }
|
|
366
|
-
|
|
367
|
-
.carousel-label {
|
|
368
|
-
position: absolute;
|
|
369
|
-
top: 12px; left: 12px;
|
|
370
|
-
display: flex;
|
|
371
|
-
flex-direction: column;
|
|
372
|
-
gap: 1px;
|
|
373
|
-
background: rgba(0,0,0,0.65);
|
|
374
|
-
padding: 6px 12px;
|
|
375
|
-
border-radius: 8px;
|
|
376
|
-
z-index: 4;
|
|
377
|
-
pointer-events: none;
|
|
299
|
+
font-family: Consolas, 'Courier New', monospace;
|
|
300
|
+
font-size: 0.78rem;
|
|
301
|
+
line-height: 1.8;
|
|
378
302
|
}
|
|
379
303
|
|
|
380
|
-
.
|
|
381
|
-
.carousel-label-desc { font-size: 0.65rem; color: rgba(255,255,255,0.7); }
|
|
304
|
+
.terminal span { color: #86efac; }
|
|
382
305
|
|
|
383
|
-
.
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
align-self: center;
|
|
306
|
+
.section-head {
|
|
307
|
+
margin: 72px auto 26px;
|
|
308
|
+
max-width: 680px;
|
|
309
|
+
text-align: center;
|
|
388
310
|
}
|
|
389
311
|
|
|
390
|
-
.
|
|
391
|
-
|
|
392
|
-
|
|
312
|
+
.section-head h2 {
|
|
313
|
+
font-size: clamp(1.8rem, 3.6vw, 3rem);
|
|
314
|
+
letter-spacing: -0.05em;
|
|
315
|
+
line-height: 1.12;
|
|
393
316
|
}
|
|
394
317
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
margin: 5rem auto;
|
|
399
|
-
height: 1px;
|
|
400
|
-
background: var(--border);
|
|
318
|
+
.section-head p {
|
|
319
|
+
color: var(--muted);
|
|
320
|
+
margin-top: 12px;
|
|
401
321
|
}
|
|
402
322
|
|
|
403
|
-
/* -- Features -- */
|
|
404
323
|
.features {
|
|
405
|
-
max-width: 960px;
|
|
406
|
-
margin: 0 auto;
|
|
407
|
-
padding: 0 2rem;
|
|
408
324
|
display: grid;
|
|
409
|
-
|
|
410
|
-
|
|
325
|
+
gap: 16px;
|
|
326
|
+
grid-template-columns: repeat(4, 1fr);
|
|
411
327
|
}
|
|
412
328
|
|
|
413
329
|
.feature-card {
|
|
414
|
-
background: var(--
|
|
330
|
+
background: var(--card);
|
|
415
331
|
border: 1px solid var(--border);
|
|
416
|
-
border-radius:
|
|
417
|
-
padding:
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
.feature-card.wide { grid-column: span 2; }
|
|
421
|
-
|
|
422
|
-
.feature-icon {
|
|
423
|
-
width: 40px; height: 40px;
|
|
424
|
-
border-radius: 10px;
|
|
425
|
-
display: flex;
|
|
426
|
-
align-items: center;
|
|
427
|
-
justify-content: center;
|
|
428
|
-
margin-bottom: 1rem;
|
|
429
|
-
background: var(--accent-light);
|
|
430
|
-
color: var(--accent);
|
|
332
|
+
border-radius: 22px;
|
|
333
|
+
padding: 22px;
|
|
431
334
|
}
|
|
432
335
|
|
|
433
|
-
.feature-icon svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
|
|
434
|
-
|
|
435
|
-
.feature-icon.green { background: #f0fdf4; color: #16a34a; }
|
|
436
|
-
.feature-icon.cyan { background: #ecfeff; color: #0891b2; }
|
|
437
|
-
.feature-icon.amber { background: #fffbeb; color: #d97706; }
|
|
438
|
-
|
|
439
336
|
.feature-card h3 {
|
|
440
|
-
font-size:
|
|
441
|
-
|
|
442
|
-
margin
|
|
337
|
+
font-size: 1rem;
|
|
338
|
+
letter-spacing: -0.02em;
|
|
339
|
+
margin: 14px 0 7px;
|
|
443
340
|
}
|
|
444
341
|
|
|
445
342
|
.feature-card p {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
line-height: 1.55;
|
|
343
|
+
color: var(--muted);
|
|
344
|
+
font-size: 0.9rem;
|
|
449
345
|
}
|
|
450
346
|
|
|
451
|
-
|
|
452
|
-
|
|
347
|
+
.feature-icon {
|
|
348
|
+
align-items: center;
|
|
349
|
+
background: var(--accent-soft);
|
|
350
|
+
border-radius: 14px;
|
|
351
|
+
color: var(--accent);
|
|
453
352
|
display: flex;
|
|
454
|
-
|
|
455
|
-
|
|
353
|
+
height: 42px;
|
|
354
|
+
justify-content: center;
|
|
355
|
+
width: 42px;
|
|
456
356
|
}
|
|
457
357
|
|
|
458
|
-
.
|
|
459
|
-
|
|
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 {
|
|
460
369
|
align-items: center;
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
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;
|
|
469
378
|
}
|
|
470
379
|
|
|
471
|
-
.
|
|
472
|
-
.
|
|
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; }
|
|
473
382
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
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;
|
|
479
389
|
font-family: Consolas, 'Courier New', monospace;
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
margin-bottom: 1rem;
|
|
390
|
+
gap: 10px;
|
|
391
|
+
padding: 16px;
|
|
483
392
|
}
|
|
484
393
|
|
|
485
|
-
.encrypt-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
394
|
+
.encrypt-flow div {
|
|
395
|
+
align-items: center;
|
|
396
|
+
display: flex;
|
|
397
|
+
justify-content: space-between;
|
|
398
|
+
gap: 14px;
|
|
490
399
|
}
|
|
491
400
|
|
|
492
|
-
.encrypt-
|
|
493
|
-
.encrypt-block.locked { color: #16a34a; border-color: #bbf7d0; background: #f0fdf4; }
|
|
401
|
+
.encrypt-flow span:last-child { color: #86efac; }
|
|
494
402
|
|
|
495
|
-
/* -- Footer -- */
|
|
496
403
|
footer {
|
|
497
|
-
text-align: center;
|
|
498
|
-
padding: 3rem 2rem;
|
|
499
|
-
color: var(--text-secondary);
|
|
500
|
-
font-size: 0.8rem;
|
|
501
404
|
border-top: 1px solid var(--border);
|
|
502
|
-
|
|
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;
|
|
503
411
|
}
|
|
504
412
|
|
|
505
|
-
.
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
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;
|
|
511
427
|
}
|
|
512
428
|
|
|
513
|
-
.
|
|
429
|
+
.toast.show { opacity: 1; transform: translate(-50%, 0); }
|
|
514
430
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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); }
|
|
518
435
|
}
|
|
519
436
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
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); }
|
|
524
442
|
.features { grid-template-columns: 1fr; }
|
|
525
|
-
.
|
|
526
|
-
|
|
527
|
-
.cta-group { flex-direction: column; }
|
|
528
|
-
.nav-links { gap: 0.75rem; }
|
|
529
|
-
.nav-links a:not(.nav-gh):not(.nav-lang) { display: none; }
|
|
530
|
-
.encrypt-visual { flex-wrap: wrap; justify-content: flex-start; gap: 0.4rem; }
|
|
531
|
-
.encrypt-visual .encrypt-arrow { display: none; }
|
|
532
|
-
.mode-pills { flex-wrap: wrap; }
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
@media (max-width: 640px) {
|
|
536
|
-
nav { padding: 1rem 1.25rem; }
|
|
537
|
-
.showcase {
|
|
538
|
-
display: flex;
|
|
539
|
-
justify-content: center;
|
|
540
|
-
align-items: flex-end;
|
|
541
|
-
gap: 0;
|
|
542
|
-
margin-top: 3rem;
|
|
543
|
-
}
|
|
544
|
-
.device-ipad { width: 78%; flex-shrink: 0; }
|
|
545
|
-
.device-iphone {
|
|
546
|
-
width: 28%;
|
|
547
|
-
transform: translateY(5%);
|
|
548
|
-
margin-left: -12%;
|
|
549
|
-
flex-shrink: 0;
|
|
550
|
-
}
|
|
551
|
-
.carousel-dots { bottom: 6px; gap: 5px; }
|
|
552
|
-
.carousel-dot { width: 6px; height: 6px; }
|
|
553
|
-
.carousel-label { top: 8px; left: 8px; padding: 4px 8px; }
|
|
554
|
-
.carousel-label-title { font-size: 0.75rem; }
|
|
555
|
-
.carousel-label-desc { font-size: 0.58rem; }
|
|
556
|
-
.terminal { margin: 0 1rem; }
|
|
557
|
-
.terminal-body { padding: 0.75rem 1rem; font-size: 0.75rem; overflow-x: auto; }
|
|
558
|
-
.features { padding: 0 1rem; }
|
|
559
|
-
.feature-card { padding: 1.25rem; }
|
|
560
|
-
.divider { margin: 3.5rem auto; }
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
.sr-only {
|
|
564
|
-
position: absolute;
|
|
565
|
-
width: 1px; height: 1px;
|
|
566
|
-
padding: 0; margin: -1px;
|
|
567
|
-
overflow: hidden;
|
|
568
|
-
clip: rect(0,0,0,0);
|
|
569
|
-
white-space: nowrap;
|
|
570
|
-
border: 0;
|
|
443
|
+
.security { padding: 22px; }
|
|
444
|
+
footer { flex-direction: column; gap: 8px; }
|
|
571
445
|
}
|
|
572
446
|
</style>
|
|
573
447
|
</head>
|
|
574
448
|
<body>
|
|
575
|
-
|
|
576
449
|
<header>
|
|
577
|
-
<nav>
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
</
|
|
450
|
+
<nav>
|
|
451
|
+
<a class="logo" href="/zh">
|
|
452
|
+
<img src="/favicon.svg" alt="AgenticWorker">
|
|
453
|
+
<span>AgenticWorker</span>
|
|
454
|
+
</a>
|
|
455
|
+
<div class="nav-actions">
|
|
456
|
+
<a href="https://github.com/kailunshi_microsoft/AgenticWorker" class="repo-link" rel="noopener">GitHub</a>
|
|
457
|
+
<a href="/" class="nav-lang">EN</a>
|
|
458
|
+
</div>
|
|
459
|
+
</nav>
|
|
586
460
|
</header>
|
|
587
461
|
|
|
588
462
|
<main>
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
<
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
</div>
|
|
599
|
-
|
|
600
|
-
<div class="terminal">
|
|
601
|
-
<div class="terminal-bar">
|
|
602
|
-
<div class="terminal-dot"></div>
|
|
603
|
-
<div class="terminal-dot"></div>
|
|
604
|
-
<div class="terminal-dot"></div>
|
|
605
|
-
<div class="terminal-title">终端</div>
|
|
606
|
-
</div>
|
|
607
|
-
<div class="terminal-body">
|
|
608
|
-
<div class="terminal-line" onclick="copyCmd('npm install -g @agent-link/agent')">
|
|
609
|
-
<span class="terminal-prompt">$</span>
|
|
610
|
-
<span class="terminal-cmd">npm install -g @agent-link/agent</span>
|
|
463
|
+
<section class="hero">
|
|
464
|
+
<div>
|
|
465
|
+
<div class="eyebrow">Coding Agent 的远程工作台</div>
|
|
466
|
+
<h1>你的 Agent,<br><span>随时打开。</span></h1>
|
|
467
|
+
<p class="lead">AgenticWorker 把本地项目连接到私有 Web 工作台,让你可以在任何设备上操控 Copilot、Claude Code 和更多 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">更多 Agent 后端</span>
|
|
611
472
|
</div>
|
|
612
|
-
<div class="
|
|
613
|
-
<
|
|
614
|
-
|
|
473
|
+
<div class="cta-row">
|
|
474
|
+
<button class="cta-primary" onclick="copyInstall()">
|
|
475
|
+
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg>
|
|
476
|
+
复制安装命令
|
|
477
|
+
</button>
|
|
478
|
+
<code class="install-command" onclick="copyInstall()">
|
|
479
|
+
<span>npm install -g @agent-link/agent</span>
|
|
480
|
+
<span>agentlink-client start -D --entra</span>
|
|
481
|
+
</code>
|
|
615
482
|
</div>
|
|
616
|
-
|
|
617
|
-
|
|
483
|
+
</div>
|
|
484
|
+
|
|
485
|
+
<div class="panel" aria-label="AgenticWorker 工作台预览">
|
|
486
|
+
<div class="workspace">
|
|
487
|
+
<div class="workspace-top">
|
|
488
|
+
<span>msclaude.ai/s/abc123</span>
|
|
489
|
+
<span>端到端加密</span>
|
|
490
|
+
</div>
|
|
491
|
+
<div class="workspace-body">
|
|
492
|
+
<div class="sidebar">
|
|
493
|
+
<div class="session active"><strong>Q:\src\agentlink</strong>Copilot 修改 UI 文案</div>
|
|
494
|
+
<div class="session"><strong>D:\work\api</strong>Claude Code Review Diff</div>
|
|
495
|
+
<div class="session"><strong>C:\repo\mobile</strong>终端与文件编辑</div>
|
|
496
|
+
</div>
|
|
497
|
+
<div class="content">
|
|
498
|
+
<div class="chat-card">
|
|
499
|
+
<b>Agent 对话</b>
|
|
500
|
+
<p>发起改动、Review 方案,并让每个目录保留独立上下文。</p>
|
|
501
|
+
</div>
|
|
502
|
+
<div class="file-card">
|
|
503
|
+
<b>文件预览 / 编辑</b>
|
|
504
|
+
<p>浏览项目文件、查看内容,并在 Web UI 中完成精准修改。</p>
|
|
505
|
+
</div>
|
|
506
|
+
<div class="terminal" onclick="copyCmd('agentlink-client start -D --entra')">
|
|
507
|
+
$ <span>agentlink-client start -D --entra</span>
|
|
508
|
+
</div>
|
|
509
|
+
</div>
|
|
510
|
+
</div>
|
|
618
511
|
</div>
|
|
619
512
|
</div>
|
|
620
|
-
</
|
|
621
|
-
</section>
|
|
513
|
+
</section>
|
|
622
514
|
|
|
515
|
+
<section aria-labelledby="features-title">
|
|
516
|
+
<div class="section-head">
|
|
517
|
+
<h2 id="features-title">远程使用 Agent 需要的能力,都在这里。</h2>
|
|
518
|
+
<p>界面保持克制,只保留让 Agent 真正处理项目所需的关键工具。</p>
|
|
519
|
+
</div>
|
|
623
520
|
|
|
624
|
-
<div class="
|
|
521
|
+
<div class="features">
|
|
522
|
+
<article class="feature-card">
|
|
523
|
+
<div class="feature-icon"><svg viewBox="0 0 24 24"><path d="M4 6h16M4 12h16M4 18h10"></path></svg></div>
|
|
524
|
+
<h3>多目录会话管理</h3>
|
|
525
|
+
<p>为多个本地工作目录维护独立会话、上下文和 Agent 状态。</p>
|
|
526
|
+
</article>
|
|
527
|
+
<article class="feature-card">
|
|
528
|
+
<div class="feature-icon"><svg viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path></svg></div>
|
|
529
|
+
<h3>文件预览 / 编辑</h3>
|
|
530
|
+
<p>浏览项目文件、预览内容,并直接在浏览器里进行修改。</p>
|
|
531
|
+
</article>
|
|
532
|
+
<article class="feature-card">
|
|
533
|
+
<div class="feature-icon"><svg viewBox="0 0 24 24"><path d="m4 17 6-6-6-6"></path><path d="M12 19h8"></path></svg></div>
|
|
534
|
+
<h3>远程终端</h3>
|
|
535
|
+
<p>执行项目命令、查看输出,不用 SSH 或远程桌面也能排查问题。</p>
|
|
536
|
+
</article>
|
|
537
|
+
<article class="feature-card">
|
|
538
|
+
<div class="feature-icon"><svg viewBox="0 0 24 24"><rect x="3" y="11" width="18" height="10" rx="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></div>
|
|
539
|
+
<h3>端到端加密</h3>
|
|
540
|
+
<p>浏览器和本地 Agent 之间端到端加密,中继服务只转发密文。</p>
|
|
541
|
+
</article>
|
|
542
|
+
</div>
|
|
543
|
+
</section>
|
|
625
544
|
|
|
545
|
+
<section class="security" aria-label="安全">
|
|
546
|
+
<div>
|
|
547
|
+
<h2>默认保护你的代码。</h2>
|
|
548
|
+
<p>代码仍然留在本机。AgenticWorker 只建立安全的浏览器访问通道,项目文件、命令执行和凭据都由本地 Agent 控制。</p>
|
|
549
|
+
</div>
|
|
550
|
+
<div class="encrypt-flow">
|
|
551
|
+
<div><span>browser</span><span>sealed message</span></div>
|
|
552
|
+
<div><span>relay</span><span>ciphertext only</span></div>
|
|
553
|
+
<div><span>local agent</span><span>decrypted locally</span></div>
|
|
554
|
+
</div>
|
|
555
|
+
</section>
|
|
626
556
|
</main>
|
|
627
557
|
|
|
628
558
|
<footer>
|
|
629
|
-
<
|
|
630
|
-
|
|
559
|
+
<span><strong>AgenticWorker</strong></span>
|
|
560
|
+
<span>
|
|
561
|
+
<a href="https://github.com/kailunshi_microsoft/AgenticWorker" rel="noopener">GitHub</a>
|
|
562
|
+
·
|
|
631
563
|
<a href="https://www.linkedin.com/in/shikailun/" rel="noopener">LinkedIn</a>
|
|
632
|
-
</
|
|
564
|
+
</span>
|
|
633
565
|
</footer>
|
|
634
566
|
|
|
635
|
-
<div class="
|
|
567
|
+
<div class="toast" id="copyToast">已复制到剪贴板</div>
|
|
636
568
|
|
|
637
569
|
<script>
|
|
638
570
|
function copyCmd(text) {
|
|
@@ -641,8 +573,7 @@ function copyCmd(text) {
|
|
|
641
573
|
}
|
|
642
574
|
|
|
643
575
|
function copyInstall() {
|
|
644
|
-
|
|
645
|
-
showToast();
|
|
576
|
+
copyCmd('npm install -g @agent-link/agent && agentlink-client start -D --entra');
|
|
646
577
|
}
|
|
647
578
|
|
|
648
579
|
function showToast() {
|
|
@@ -650,77 +581,6 @@ function showToast() {
|
|
|
650
581
|
toast.classList.add('show');
|
|
651
582
|
setTimeout(() => toast.classList.remove('show'), 1800);
|
|
652
583
|
}
|
|
653
|
-
|
|
654
|
-
// iPad carousel
|
|
655
|
-
(function() {
|
|
656
|
-
const slides = document.querySelectorAll('.carousel-slide');
|
|
657
|
-
const dots = document.querySelectorAll('.carousel-dot');
|
|
658
|
-
if (!slides.length) return;
|
|
659
|
-
let current = 0;
|
|
660
|
-
let interval;
|
|
661
|
-
|
|
662
|
-
function goTo(i) {
|
|
663
|
-
slides[current].classList.remove('active');
|
|
664
|
-
dots[current].classList.remove('active');
|
|
665
|
-
current = (i + slides.length) % slides.length;
|
|
666
|
-
slides[current].classList.add('active');
|
|
667
|
-
dots[current].classList.add('active');
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
function startAuto() {
|
|
671
|
-
interval = setInterval(() => goTo(current + 1), 4000);
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
function resetAuto() {
|
|
675
|
-
clearInterval(interval);
|
|
676
|
-
startAuto();
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
dots.forEach(dot => {
|
|
680
|
-
dot.addEventListener('click', () => {
|
|
681
|
-
goTo(Number(dot.dataset.index));
|
|
682
|
-
resetAuto();
|
|
683
|
-
});
|
|
684
|
-
});
|
|
685
|
-
|
|
686
|
-
const track = document.querySelector('.ipad-carousel');
|
|
687
|
-
let startX = 0, dragging = false;
|
|
688
|
-
|
|
689
|
-
track.addEventListener('touchstart', e => {
|
|
690
|
-
startX = e.touches[0].clientX;
|
|
691
|
-
dragging = true;
|
|
692
|
-
}, { passive: true });
|
|
693
|
-
|
|
694
|
-
track.addEventListener('touchend', e => {
|
|
695
|
-
if (!dragging) return;
|
|
696
|
-
dragging = false;
|
|
697
|
-
const dx = e.changedTouches[0].clientX - startX;
|
|
698
|
-
if (Math.abs(dx) > 50) {
|
|
699
|
-
goTo(dx < 0 ? current + 1 : current - 1);
|
|
700
|
-
resetAuto();
|
|
701
|
-
}
|
|
702
|
-
}, { passive: true });
|
|
703
|
-
|
|
704
|
-
track.addEventListener('mousedown', e => {
|
|
705
|
-
startX = e.clientX;
|
|
706
|
-
dragging = true;
|
|
707
|
-
track.style.cursor = 'grabbing';
|
|
708
|
-
});
|
|
709
|
-
|
|
710
|
-
document.addEventListener('mouseup', e => {
|
|
711
|
-
if (!dragging) return;
|
|
712
|
-
dragging = false;
|
|
713
|
-
track.style.cursor = '';
|
|
714
|
-
const dx = e.clientX - startX;
|
|
715
|
-
if (Math.abs(dx) > 50) {
|
|
716
|
-
goTo(dx < 0 ? current + 1 : current - 1);
|
|
717
|
-
resetAuto();
|
|
718
|
-
}
|
|
719
|
-
});
|
|
720
|
-
|
|
721
|
-
startAuto();
|
|
722
|
-
})();
|
|
723
584
|
</script>
|
|
724
|
-
|
|
725
585
|
</body>
|
|
726
586
|
</html>
|