Spaces:
Running
Running
Download index.html from LucioLiu/agent-modpack: direct link, hf CLI and curl.
- Browser
- Download file 19.2 kB
-
https://huggingface.co/spaces/LucioLiu/agent-modpack/resolve/main/index.html
- Command line
-
hf download hf://spaces/LucioLiu/agent-modpack/index.html
-
curl -L -o index.html https://huggingface.co/spaces/LucioLiu/agent-modpack/resolve/main/index.html
19.2 kB
| <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 & 中文</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> | |