File size: 19,212 Bytes
b8c56ff
3e6ee73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b8c56ff
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
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>agent-modpack — a ready-to-run AI employee team</title>
    <meta
      name="description"
      content="Download a fully assembled AI agent team — orchestrator, specialist roles, an agent-forger and 7 collaboration skills. Open it with Claude Code, Cursor or Codex and it runs. English and Chinese editions."
    />
    <meta property="og:title" content="agent-modpack — a ready-to-run AI employee team" />
    <meta
      property="og:description"
      content="A fully assembled AI agent team you download and open. No build step, no hosted service, no lock-in."
    />
    <style>
      :root {
        color-scheme: light dark;
        --bg: #fbfaf8;
        --bg-raised: #ffffff;
        --bg-code: #f2f0ec;
        --fg: #1c1b19;
        --fg-muted: #5f5c56;
        --fg-faint: #8b8781;
        --line: #e2ded7;
        --accent: #9a3412;
        --accent-soft: #fdf3ee;
        --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
      }
      @media (prefers-color-scheme: dark) {
        :root {
          --bg: #16151a;
          --bg-raised: #1e1d23;
          --bg-code: #23222a;
          --fg: #ececf1;
          --fg-muted: #a9a6b3;
          --fg-faint: #78757f;
          --line: #302e38;
          --accent: #f0906a;
          --accent-soft: #2a1f1c;
        }
      }
      * { box-sizing: border-box; }
      body {
        margin: 0;
        background: var(--bg);
        color: var(--fg);
        font: 16px/1.65 -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC",
          "PingFang SC", "Microsoft YaHei", Roboto, sans-serif;
        -webkit-font-smoothing: antialiased;
      }
      .wrap { max-width: 46rem; margin: 0 auto; padding: 0 1.25rem 5rem; }
      a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: 2px; }

      /* --- language toggle --- */
      .topbar {
        display: flex; justify-content: flex-end; align-items: center;
        gap: .5rem; padding: 1.25rem 0 0;
      }
      .langbtn {
        font: inherit; font-size: .8rem; cursor: pointer;
        background: var(--bg-raised); color: var(--fg-muted);
        border: 1px solid var(--line); border-radius: 999px;
        padding: .3rem .85rem;
      }
      .langbtn[aria-pressed="true"] { color: var(--fg); border-color: var(--fg-faint); }
      [data-lang] { display: none; }
      html[lang="en"] [data-lang="en"], html[lang="zh"] [data-lang="zh"] { display: block; }
      html[lang="en"] li[data-lang="en"], html[lang="zh"] li[data-lang="zh"] { display: list-item; }
      html[lang="en"] span[data-lang="en"], html[lang="zh"] span[data-lang="zh"] { display: inline; }

      /* --- hero --- */
      header.hero { padding: 2.5rem 0 1rem; }
      h1 {
        font-family: var(--mono);
        font-size: clamp(1.9rem, 6vw, 2.6rem);
        margin: 0 0 .6rem; letter-spacing: -0.02em;
      }
      .tagline { font-size: 1.15rem; margin: 0 0 .5rem; }
      .sub { color: var(--fg-muted); margin: 0; }

      h2 {
        font-size: 1.05rem; letter-spacing: .06em; text-transform: uppercase;
        color: var(--fg-faint); margin: 3rem 0 1rem;
        padding-bottom: .5rem; border-bottom: 1px solid var(--line);
      }
      h3 { font-size: 1rem; margin: 1.75rem 0 .5rem; }
      p { margin: 0 0 1rem; }
      .muted { color: var(--fg-muted); }
      .small { font-size: .9rem; }

      /* --- code blocks --- */
      .cmd { position: relative; margin: .5rem 0 1.25rem; }
      .cmd pre {
        margin: 0; padding: .85rem 3.5rem .85rem 1rem;
        background: var(--bg-code); border: 1px solid var(--line); border-radius: 8px;
        font-family: var(--mono); font-size: .85rem; line-height: 1.6;
        overflow-x: auto; white-space: pre;
      }
      .cmd button {
        position: absolute; top: .5rem; right: .5rem;
        font: inherit; font-size: .72rem; cursor: pointer;
        background: var(--bg-raised); color: var(--fg-muted);
        border: 1px solid var(--line); border-radius: 5px; padding: .25rem .55rem;
      }
      .cmd button:hover { color: var(--fg); }
      .cmd button.done { color: var(--accent); border-color: var(--accent); }
      code:not(pre code) {
        font-family: var(--mono); font-size: .88em;
        background: var(--bg-code); border-radius: 4px; padding: .1em .35em;
      }

      .route { border-left: 2px solid var(--line); padding-left: 1rem; margin-bottom: 1.5rem; }
      .route-name { font-weight: 600; margin: 0 0 .15rem; }
      .route-why { color: var(--fg-muted); font-size: .9rem; margin: 0 0 .5rem; }

      /* --- facts / lists --- */
      .facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1px;
               background: var(--line); border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
      .fact { background: var(--bg-raised); padding: .9rem 1rem; }
      .fact b { display: block; font-family: var(--mono); font-size: 1.35rem; }
      .fact span { color: var(--fg-muted); font-size: .82rem; }

      ul.plain { list-style: none; padding: 0; margin: 0; }
      ul.plain li { padding: .55rem 0; border-bottom: 1px solid var(--line); }
      ul.plain li:last-child { border-bottom: 0; }
      ul.plain code { color: var(--fg); }

      .notlist li { margin-bottom: .75rem; }
      .notlist b { color: var(--fg); }

      footer {
        margin-top: 3.5rem; padding-top: 1.5rem; border-top: 1px solid var(--line);
        color: var(--fg-muted); font-size: .88rem;
      }
      footer a { margin-right: 1.1rem; white-space: nowrap; }
    </style>
  </head>
  <body>
    <div class="wrap">
      <div class="topbar">
        <button class="langbtn" data-set-lang="en" aria-pressed="true">English</button>
        <button class="langbtn" data-set-lang="zh" aria-pressed="false">简体中文</button>
      </div>

      <header class="hero">
        <h1>agent-modpack</h1>
        <div data-lang="en">
          <p class="tagline">A ready-to-run AI employee team. Download it, open it, it works.</p>
          <p class="sub">
            An orchestrator, two specialist roles, an agent-forger that keeps hatching new
            teammates, and 7 collaboration skills — already assembled into one folder. No build
            step, nothing to configure. English and 简体中文 editions, fully localized.
          </p>
        </div>
        <div data-lang="zh">
          <p class="tagline">一支拿来就能跑的 AI 数字员工团队。下载、打开,就能用。</p>
          <p class="sub">
            一个编排者、两个专业岗、一个能继续孵化新员工的造人者,外加 7 块协作纪律
            skill——已经装配成一个文件夹。不用编译、不用配置。中英双版本,目录和文案全本地化。
          </p>
        </div>
      </header>

      <section>
        <h2><span data-lang="en">Get it</span><span data-lang="zh">怎么拿到</span></h2>

        <div data-lang="en">
          <p class="muted small">
            Three routes, same contents. Each one hands you the repository; inside it are two
            already-assembled team folders — copy out the one whose language you read.
          </p>
        </div>
        <div data-lang="zh">
          <p class="muted small">
            三条路,拿到的内容完全一样。每条给你的都是整个仓库,里面有两个已经装配好的
            成品团队目录——把你看得懂的那个复制出来就行。
          </p>
        </div>

        <div class="route">
          <p class="route-name">
            <span data-lang="en">Download a zip</span><span data-lang="zh">直接下载压缩包</span>
          </p>
          <p class="route-why">
            <span data-lang="en">Nothing to install. Works from a browser.</span>
            <span data-lang="zh">什么都不用装,浏览器点开就行。</span>
          </p>
          <div class="cmd">
            <pre id="c1">https://gitlab.com/LucioLiu/agent-modpack/-/archive/main/agent-modpack-main.zip</pre>
            <button data-copy="c1">copy</button>
          </div>
        </div>

        <div class="route">
          <p class="route-name"><span data-lang="en">Clone it</span><span data-lang="zh">clone</span></p>
          <p class="route-why">
            <span data-lang="en">If you have git.</span><span data-lang="zh">如果你装了 git。</span>
          </p>
          <div class="cmd">
            <pre id="c2">git clone https://gitlab.com/LucioLiu/agent-modpack.git</pre>
            <button data-copy="c2">copy</button>
          </div>
        </div>

        <div class="route">
          <p class="route-name">
            <span data-lang="en">Pull the Hugging Face mirror</span><span data-lang="zh">从 Hugging Face 镜像拉</span>
          </p>
          <p class="route-why">
            <span data-lang="en">Same version, mirrored.</span><span data-lang="zh">同一个版本,镜像同步。</span>
          </p>
          <div class="cmd">
            <pre id="c3">hf download LucioLiu/agent-modpack --repo-type dataset --local-dir ./agent-modpack</pre>
            <button data-copy="c3">copy</button>
          </div>
        </div>

        <div data-lang="en">
          <h3>Then open it</h3>
          <p>
            Point your AI coding tool — Claude Code, Cursor, Codex, anything that reads local
            files — at the orchestrator folder inside your team folder:
            <code>01-agents/orchestrator/</code> in the English edition,
            <code>01_数字员工/编排者/</code> in the Chinese one. It loads itself and takes it
            from there. Each team folder also ships an <code>OPEN_ME.md</code> at its root that
            repeats this in both languages.
          </p>
          <p class="muted small">
            On Windows, keep the team folder near the drive root (<code>D:\my-team\</code>).
            The package nests deep and the Chinese edition uses non-ASCII path segments, so a
            very long parent path can hit the 260-character limit mid-copy.
          </p>
        </div>
        <div data-lang="zh">
          <h3>然后打开它</h3>
          <p>
            用你的 AI 编程工具——Claude Code、Cursor、Codex,任何能读本地文件的都行——打开团队
            文件夹里的编排者目录:中文版是 <code>01_数字员工/编排者/</code>,英文版是
            <code>01-agents/orchestrator/</code>。它会自己加载并接手。每个团队文件夹根目录还有一份
            <code>打开我_OPEN_ME.md</code>,双语再确认一遍入口。
          </p>
          <p class="muted small">
            Windows 上请把团队文件夹放在靠近盘符根的位置(如 <code>D:\我的团队\</code>)。这个包
            层级深、中文版路径段多,父目录太长可能在复制途中撞上 260 字符上限。
          </p>
        </div>
      </section>

      <section>
        <h2><span data-lang="en">What's in the folder</span><span data-lang="zh">文件夹里有什么</span></h2>

        <div class="facts">
          <div class="fact">
            <b>233</b>
            <span data-lang="en">files per edition</span><span data-lang="zh">个文件(每个版本)</span>
          </div>
          <div class="fact">
            <b>2</b>
            <span data-lang="en">editions, EN &amp; 中文</span><span data-lang="zh">个语言版本</span>
          </div>
          <div class="fact">
            <b>7</b>
            <span data-lang="en">collaboration skills</span><span data-lang="zh">块协作 skill</span>
          </div>
          <div class="fact">
            <b>0</b>
            <span data-lang="en">build steps</span><span data-lang="zh">个编译步骤</span>
          </div>
        </div>

        <div data-lang="en">
          <p style="margin-top: 1.25rem">
            An orchestration layer, two specialist roles (marked "(sample)" — delete, rename or
            re-forge them freely), and <b>Nuwa</b>, the prompt-architect that forges new agents,
            living in the team as a colleague rather than off to the side. That last part is why
            the team keeps working after you take it: it can hatch its own new employees without
            coming back here.
          </p>
          <p>Plus these 7 skills, each published as its own standalone repo:</p>
        </div>
        <div data-lang="zh">
          <p style="margin-top: 1.25rem">
            一个编排层、两个专业岗(带"(预设示例)"标注——可以随便删、改名、或让女娲重新
            锻造),外加<b>女娲</b>——那位造 agent 的提示词架构师,作为团队一员住在里面,而不是
            摆在一边。这一点决定了团队拿走之后还能长:它自己就能孵化新员工,不必回头找这里。
          </p>
          <p>再加下面 7 块 skill,每一块都是独立发布的仓:</p>
        </div>

        <ul class="plain">
          <li>
            <code>dont-reinvent</code> —
            <span data-lang="en">find an existing wheel before forging one</span>
            <span data-lang="zh">先找轮子再造轮子</span>
          </li>
          <li>
            <code>handoff-protocol</code> —
            <span data-lang="en">multi-agent handoff and persistence discipline</span>
            <span data-lang="zh">多 agent 交接与持久化纪律</span>
          </li>
          <li>
            <code>knock-knock</code> —
            <span data-lang="en">how an agent calls a human</span>
            <span data-lang="zh">agent 怎么「叫人」</span>
          </li>
          <li>
            <code>sharpen-first</code> —
            <span data-lang="en">grind a vague request into a one-page brief</span>
            <span data-lang="zh">把模糊需求磨成一页共识单</span>
          </li>
          <li>
            <code>token-saver</code> —
            <span data-lang="en">route subagents by capability tier, not by habit</span>
            <span data-lang="zh">子代理按能力档路由,不按惯性</span>
          </li>
          <li>
            <code>track-record</code> —
            <span data-lang="en">a judgment ledger that settles its own predictions</span>
            <span data-lang="zh">会自己结算预测的判断台账</span>
          </li>
          <li>
            <code>user-md</code> —
            <span data-lang="en">a user profile that grows, with machine-local facts kept apart</span>
            <span data-lang="zh">会长大的用户画像,机器本地事实隔离</span>
          </li>
        </ul>
      </section>

      <section>
        <h2><span data-lang="en">What it is not</span><span data-lang="zh">它不是什么</span></h2>
        <ul class="notlist" data-lang="en">
          <li>
            <b>Not a hosted service.</b> There is no account, no API key and no server. The files
            land on your disk and your own AI tool reads them. Nothing calls home.
          </li>
          <li>
            <b>Not open source in the OSI sense.</b> The license is PolyForm Noncommercial 1.0.0
            — free to use, modify and share for any noncommercial purpose; commercial use needs a
            separate agreement. The <code>LICENSE</code> file in the repo is authoritative.
          </li>
          <li>
            <b>Not a marketplace plugin.</b> Nothing goes through
            <code>/plugin marketplace add</code>. You end up with a self-contained folder that
            depends on no online shelf staying up.
          </li>
          <li>
            <b>Not a framework you write code against.</b> It is markdown and a little JavaScript
            for hooks. If you can read the files, you can change anything in them.
          </li>
        </ul>
        <ul class="notlist" data-lang="zh">
          <li>
            <b>不是在线服务。</b>没有账号、没有 API key、没有服务器。文件落在你自己的磁盘上,
            由你自己的 AI 工具读取,不回传任何东西。
          </li>
          <li>
            <b>不是 OSI 意义上的开源。</b>许可证是 PolyForm Noncommercial 1.0.0——任何非商业
            用途下自由使用、修改、分发;商业使用需要另行约定。以仓库里的 <code>LICENSE</code>
            文件为准。
          </li>
          <li>
            <b>不是 marketplace 插件。</b>不走 <code>/plugin marketplace add</code>。你拿到的是
            一个自包含的文件夹,不依赖任何在线货架一直活着。
          </li>
          <li>
            <b>不是要你写代码对接的框架。</b>它就是 markdown,加上 hooks 用的一点
            JavaScript。你能读懂文件,就能改里面任何东西。
          </li>
        </ul>
      </section>

      <footer>
        <p>
          <a href="https://gitlab.com/LucioLiu/agent-modpack">GitLab</a>
          <a href="https://huggingface.co/datasets/LucioLiu/agent-modpack">Hugging Face</a>
          <a href="https://polyformproject.org/licenses/noncommercial/1.0.0/">License</a>
        </p>
        <p class="small">
          <span data-lang="en"
            >PolyForm Noncommercial 1.0.0 · Both mirrors carry the same version.</span
          >
          <span data-lang="zh">PolyForm Noncommercial 1.0.0 · 两处镜像同一个版本。</span>
        </p>
      </footer>
    </div>

    <script>
      (function () {
        var root = document.documentElement;
        function setLang(lang) {
          root.lang = lang;
          document.querySelectorAll("[data-set-lang]").forEach(function (b) {
            b.setAttribute("aria-pressed", String(b.dataset.setLang === lang));
          });
          try { localStorage.setItem("amp-lang", lang); } catch (e) {}
        }
        document.querySelectorAll("[data-set-lang]").forEach(function (b) {
          b.addEventListener("click", function () { setLang(b.dataset.setLang); });
        });
        var saved = null;
        try { saved = localStorage.getItem("amp-lang"); } catch (e) {}
        var browserPrefersZh = (navigator.language || "en").toLowerCase().indexOf("zh") === 0;
        setLang(saved || (browserPrefersZh ? "zh" : "en"));

        document.querySelectorAll("[data-copy]").forEach(function (btn) {
          btn.addEventListener("click", function () {
            var text = document.getElementById(btn.dataset.copy).textContent.trim();
            var done = function () {
              btn.textContent = "copied";
              btn.classList.add("done");
              setTimeout(function () {
                btn.textContent = "copy";
                btn.classList.remove("done");
              }, 1600);
            };
            if (navigator.clipboard && navigator.clipboard.writeText) {
              navigator.clipboard.writeText(text).then(done, function () {});
            }
          });
        });
      })();
    </script>
  </body>
</html>