ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

深入解析 agentic-awesome-skills 的 Legacy Redirect Bridge:旧站重定向桥接的生成、校验与发布契约

2026/9/19 9:44:52 拓冰建站 浏览量
深入解析 agentic-awesome-skills 的 Legacy Redirect Bridge:旧站重定向桥接的生成、校验与发布契约 深入解析 agentic-awesome-skills 的 Legacy Redirect Bridge旧站重定向桥接的生成、校验与发布契约【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/gh_mirrors/an/agentic-awesome-skills导读本文以仓库维护文档 legacy-redirect-bridge.md 为主线完整剖析该项目在站点迁移场景下如何通过Legacy Redirect Bridge保住旧 URL 的索引与访问连续性即从独立部署的兼容站点旧站向新规范站点canonical site自动生成、校验并发布重定向页面。你将掌握两条 npm 命令pages:redirect-bridge/pages:redirect-verify的完整参数面、清单manifestv3 的结构语义、字节级校验与线上探测机制以及目标仓库拥有同步工作流 受保护分支强校验的发布契约并看到这些机制在 生成器源码 与 校验器源码 中的底层实现。一、背景为什么需要一座旧站重定向桥项目站点在迁移后存在两个部署面规范站点canonical sitehttps://sickn33.github.io/agentic-awesome-skills/由当前仓库发布的正式站点兼容站点legacy sitehttps://sickn33.github.io/antigravity-awesome-skills/由独立仓库sickn33/sickn33.github.io发布用于保留迁移前已被搜索引擎索引的旧 URL。如果旧 URL 直接 404会一次性损失历史积累的收录与反向链接。Legacy Redirect Bridge 的作用就是在兼容站点上为每一个旧路径生成一个即时刷新跳转的 HTML 页面meta http-equivrefreshlink relcanonical把访问者与爬虫平滑引导到新规范站点同时继续输出旧域下的 sitemap 与站长验证文件维持搜索生态的连续性。在源码层面这一设计被固化在 生成器 的默认常量中const DEFAULT_CURRENT_BASE https://sickn33.github.io/agentic-awesome-skills/; const DEFAULT_LEGACY_BASE https://sickn33.github.io/antigravity-awesome-skills/; const DEFAULT_EXPECTED_ROUTES 187;即新旧站点 URL 同源同一 GitHub Pages 用户站仅是路径前缀不同这正是重定向可以逐路径一一映射的前提。二、托管部署面Managed deployment surface关键约束兼容站点的内容不能随便覆盖只有下列路径归属于重定向生成器由本仓库维护.nojekyllredirect-manifest.jsonantigravity-awesome-skills/**目标仓库的README.md与.github/**自动化被刻意排除在托管集合之外。也就是说旧站仓库的其他内容说明文档、CI 工作流等由目标仓库自己维护生成器只在上述三条路径内写入避免越权覆盖导致兼容站被破坏。从校验器源码 verify-pages-redirect-bridge.js 可以看到同样的边界被严格重申managedFiles()要求.nojekyll、redirect-manifest.json以及旧站目录antigravity-awesome-skills/三者必须存在且必须是物理目录与物理常规文件任何符号链接symlink都会被拒绝——这从根上杜绝了通过符号链接把写入/校验指向仓库外部或受保护目录的攻击面。三、生成新桥一条命令重建整个旧站映射从当前目录下的 package.json 可知两条 npm 脚本pages:redirect-bridge: node tools/scripts/generate-pages-redirect-bridge.js, pages:redirect-verify: node tools/scripts/verify-pages-redirect-bridge.js,生成一条全新的桥接例如目录迁移后重建npm run pages:redirect-bridge -- --output /new/output/directory生成器默认读取以下三份输入并输出到--output目录输入默认路径用途sitemapapps/web-app/public/sitemap.xml提供规范站点的精选路由清单技能索引skills_index.json提供全部技能 ID动态推导技能路由Google 验证文件apps/web-app/public/google5815fd8827d2319c.html原样保留站长验证凭据3.1 路由数量双锁定策略生成器对两类路由采取不同的数量策略sitemap 路由数量锁定--expected-routes默认187。sitemap 是精选的当前站点路由集合其数量被显式锁定防止新增页面无意间改变旧站 sitemap 的收录面数量不匹配会直接报错见 generate-pages-redirect-bridge.js。技能路由数量动态推导技能数量默认跟随skills_index.json实时推导每新增一个技能旧站自动多一条/skill/{id}/跳转若需要冻结可用--expected-skills N显式锁定。最终生成的route_count sitemap 路由 全部技能路由。例如测试断言中 187 条 sitemap 路由 技能数得到route_count skills 7见 generate_pages_redirect_bridge.test.js。3.2 站点验证凭据的保留Googlegoogle5815fd8827d2319c.html被字节级原样复制到旧站根目录antigravity-awesome-skills/google5815fd8827d2319c.html并校验其内容必须精确等于google-site-verification: google5815fd8827d2319c.html防止使用过期凭据生成器源码 L236-L239。Bingmsvalidate.01meta 标签tokenCAC904EB0D2DD1B22B5F2BC540CAD654被注入旧站根页面的head且必须出现在跳转 refresh 之前否则爬虫可能来不及读取验证标签就跳走。3.3 完整 CLI 参数面生成器支持的参数源码中的parseArgs别名表L338-L363npm run pages:redirect-bridge -- \ --output NEW_DIR \ [--sitemap FILE] \ [--skills-index FILE] \ [--google-verification FILE] \ [--current-base URL] \ [--legacy-base URL] \ [--expected-routes N] \ [--expected-skills N]--current-base/--legacy-base默认值即上文的两个 GitHub Pages 地址两者必须无凭据、纯 HTTPS、无查询串与锚点、以斜杠结尾且二者不能相同L51-L63。--help/-h输出用法说明。3.4 安全边界源码级生成器内置多重防护均由测试覆盖generate_pages_redirect_bridge.test.js输出目录防覆盖--output目录已存在则直接失败output path already exists仓库内输出仅限.codex/写入仓库内部但不在被忽略的.codex/目录下的路径一律拒绝且不允许经由符号链接穿透到受保护目录含物理路径解析sitemap URL 身份校验所有loc必须落在当前 base 的 HTTPS 身份内origin 路径前缀 尾部斜杠URL 带查询串/锚点即拒绝路径段安全仅允许[A-Za-z0-9._~-]段拒绝.、..及双重编码XML 实体只解码一次去重与回环校验sitemap 重复 URL、规范化后重复、旧站映射非一对一、多路由映射到同一输出文件均报错技能路由一致性sitemap 中出现的/skill/{id}/必须存在于当前skills_index.json杜绝已删除技能的孤立旧路由同时反向为索引中每个技能生成跳转覆盖 sitemap 之外的技能页保留路径冲突检测生成的路由不得占用旧站sitemap.xml与 Google 验证文件的保留路径原子发布先写入进程独立的临时暂存目录mkdtemp全部成功后rename到目标目录避免半成品上线。四、字节级校验与线上探测4.1 本地校验byte-for-byte对已检出的目标仓库兼容站部署目录做严格比对npm run pages:redirect-verify -- --deployment-root /path/to/sickn33.github.io校验器先在临时目录用同一份输入与参数重新生成期望树再与部署目录逐文件比对verify-pages-redirect-bridge.js L61-L74缺失missing、多余unexpected、内容不一致mismatched任一发生即判定漂移drift并列出差异文件托管集合内所有条目必须是物理文件符号链接、目录伪装、逃逸部署根的路径全部拒绝。4.2 线上有限探测bounded live probe部署后追加对线上环境的抽样核验npm run pages:redirect-verify -- \ --deployment-root /path/to/sickn33.github.io \ --live-root https://sickn33.github.io/ \ --live-mode sample--live-root必须是 HTTPS 且以/结尾--live-mode sample默认选取首尾端点 均匀抽样的最多 25 条路由--live-mode all对全部路由对做完整审计。线上探测逐项验证L130-L176线上redirect-manifest.json与受保护部署逐字节一致线上 Google 验证文件与部署一致线上旧站sitemap.xml与部署一致旧站根页面恰好包含一次精确的 Bingmsvalidate.01meta 标签对每个被选中的旧路由HTML 必须同时包含http-equivrefresh content0; url{to}与relcanonical href{to}且目标新 URL 可正常访问HTTP 200。并发与超时可用--concurrency1–64默认 16与--timeout-ms1–60000默认 15000调节非法取值直接报错。五、清单manifestschema v3生成器在输出根写入redirect-manifest.jsonschema version 3为自动化消费者记录三类证据源仓库溯源provenancesource_repository、两份源输入sitemap、skills index的 SHA-256 摘要重定向覆盖coveragecurrent_base、legacy_base、source_sitemap_route_count、current_skill_route_count、route_count、legacy_sitemap_route_count及完整redirects数组每条含from/to/output_file站长验证证据verificationGoogle 验证文件路径与 SHA-256、Bing meta 名称与 token、旧站根页面路径。完整结构见 generate-pages-redirect-bridge.js L297-L324。校验器正是依赖该清单在线上模式下定位验证文件、旧 sitemap 与跳转集合因此部署内容与清单一致是整条信任链的起点。六、发布契约Publication contract文档明确规定了目标仓库sickn33/sickn33.github.io与本仓库之间的协作边界目标仓库拥有定时同步工作流工作流以main检出本仓库只重新生成托管部署面.nojekyll、redirect-manifest.json、antigravity-awesome-skills/**当检测到漂移时开启固定分支的 PR触发**精确到提交exact-head**的legacy-bridge-verify校验器仅在受保护检查通过后合并同一运行显式请求并校验旧版 Pages 构建使自动化不依赖GitHub 对GITHUB_TOKEN变更可能抑制的事件。文档同时给出目标仓库main分支的强制保护要求严格开启受保护检查legacy-bridge-verify管理员强制administrator enforcement要求 Pull Request 才能合并禁止强制推送force push与删除分支。这套契约的本质是生成侧本仓库负责产出可复现的字节级产物并自证清单发布侧目标仓库负责定时拉取、差异驱动 PR、精确头校验与受保护合并任何一步失败都不会把未经校验的跳转推上线。七、验证闭环测试如何钉死行为仓库为生成器与校验器各配了一套 Node 测试可作为行为规范的可执行文档generate_pages_redirect_bridge.test.js覆盖清单字段断言、旧站目录结构、Bing 标签仅在旧站根出现一次且位于 refresh 之前、旧站 sitemap 仅含精选路由不含仅目录收录的技能、相同输入字节级幂等、输出目录防覆盖、URL 身份/路径段/双重编码/孤立技能路由/重复技能 ID/危险技能 ID.、..、../escape等全部拒绝路径以及.codex符号链接防穿透与生产环境全量断言187 条 sitemap 路由、全部技能路由、验证文件一致性verify_pages_redirect_bridge.test.js覆盖本地漂移检测追加内容、多余文件、符号链接替换、线上全量探测、非法并发参数、Bing 标签缺失、线上清单不一致等失败路径。两个测试共同证明旧站每一页都跳转到新站且验证凭据不丢失不是靠手工保证而是每次 CI 都会执行的可复现断言。八、实操清单从生成到上线的最小流程生成npm run pages:redirect-bridge -- --output /new/output/directory首次可先不带--expected-skills以跟随当前技能索引如要锁定则显式传入审查产物确认目录内仅含.nojekyll、redirect-manifest.json与antigravity-awesome-skills/**抽查若干index.html的 refresh/canonical 指向发布到目标仓库将产物提交到sickn33/sickn33.github.io该仓库的定时同步工作流会自动完成检出 → 重新生成 → 漂移则开固定分支 PR → exact-head 校验 → 受保护合并本地校验npm run pages:redirect-verify -- --deployment-root /path/to/sickn33.github.io线上探测npm run pages:redirect-verify -- --deployment-root /path/to/sickn33.github.io --live-root https://sickn33.github.io/ --live-mode sample需要完整审计时改用--live-mode all。结语Legacy Redirect Bridge 展示了一个可逆、可审计、可复现的站点迁移配套方案sitemap 路由锁定 技能路由动态推导解决收录面的确定性manifest v3 把溯源、覆盖与验证证据结构化字节级本地校验与线上抽样/全量探测把跳转正确性变成每次发布前必须通过的硬门禁而发布契约则把生成职责与合并权限彻底分离配合受保护分支上的legacy-bridge-verify让旧站跳转的每一次变更都有据可查、有验可依。若你正在处理同类迁移后保留旧 URL 收录的问题本仓库的生成器、校验器与配套测试构成了一个可以直接借鉴的完整闭环。【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/gh_mirrors/an/agentic-awesome-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考