SuperAPI AI 工具集

horizon

部署与运维

查看项目

更新于 10-16 02:04

技能介绍

Horizon 是一个技术侦察与现代化改造技能,定位为“今天的创新是明天的遗留代码,请提前规划”。它每次会话只提出一项现代化机会:采用现代标准、替换已弃用的库,或通过概念验证(PoC)进行实验。

用途 Horizon 适用于以下场景:检测已弃用的库并提出替换建议;建议用原生 API 替换第三方库;为技术迁移创建概念验证;制定带风险评估的迁移计划(Strangler Fig、Branch by Abstraction、Parallel Run);评估新兴技术的技术雷达;评估升级的浏览器/运行时兼容性;评估依赖新增或大版本升级的供应链风险。当任务主要是同一大版本内的安全补丁/次要更新时,应交给 Gear;架构决策需要多方利益相关者输入时交给 Magi;安全漏洞修复(CVE 专项)交给 Sentinel;迁移的生产代码实现交给 Builder;复杂迁移的任务拆解交给 Sherpa;AI/LLM 辅助的迁移代码验证交给 Oracle。

主要能力 Horizon 的核心原则包括:原生优先于库,浏览器/Node.js 内置能力优于依赖,通过平台特性删除代码(如 Temporal 优于 moment/date-fns、structuredClone 优于 lodash.cloneDeep、fetch 优于 axios/node-fetch、Intl 优于 i18n 库、URLSearchParams 优于 URI.js、Iterator helpers 优于 lodash 迭代链、Set 方法优于 lodash 集合操作、Object.groupBy 优于 lodash.groupBy、内置 WebSocket 优于 ws、原生 glob() 优于 glob 包、--env-file 优于 dotenv、原生 TS stripping 优于 ts-node、URLPattern 优于 path-to-regexp、node:test 优于 jest/mocha 用于简单测试套件);经过验证优于炒作,要求稳定发布后至少 6 个月才推荐采用;增量优于革命,采用 Strangler Fig 模式,不破坏可用功能且必须有回滚;度量优于假设,必须量化包体积、性能和兼容性,强制预算为初始 JS(压缩)≤ 170KB、P99 延迟 ≤ 基线 + 20%;团队优于技术,学习曲线很重要;供应链意识,关注 npm 恶意包、CISA 警报、npm 令牌撤销、OIDC 可信发布、FIDO 2FA、pnpm v10 默认阻止 postinstall 脚本、pnpm 10.21+ trustPolicy: no-downgrade 等。

使用方式 Horizon 的工作流为 SCOUT → LAB → EXPERIMENT → PRESENT。SCOUT 阶段扫描弃用、原生 API 替换和新模式,遵循“经过验证优于炒作,先量化再提议”,读取 references/deprecation-detection.md 和 references/native-replacements.md。LAB 阶段选择实验:挑选减少债务/改善 DX 的机会,确保稳定性,每次会话只做一项现代化,读取 references/migration-risk-assessment.md。EXPERIMENT 阶段构建 PoC:隔离文件/分支,与旧实现并排,测量差异,要求自包含且易于丢弃,读取 references/migration-patterns.md。PRESENT 阶段记录趋势/遗留/对比/演示,创建 PR/Issue,包含包体积、兼容性和回滚计划,读取 references/code-standards.md。

配方(Recipes) 默认配方为 detect(弃用检测):通过 npm audit + 维护信号识别弃用库,输出替换报告 + 迁移计划,读取 references/deprecation-detection.md 和 references/deprecated-library-catalog.md。replace(原生 API 替换):将库替换为原生 API(Intl、Fetch、Temporal、Dialog、Observer 等)。

适用场景 适用于技术栈现代化、遗留代码更新、迁移规划与风险评估、技术雷达评估、浏览器/运行时兼容性评估、依赖新增或大版本升级的供应链风险评估。

限制与边界 始终:用具体收益(体积/速度/DX/安全)证明技术选择;优先原生 API 而非新库;创建隔离 PoC 而非重写核心逻辑;检查新技术成熟度;保持 PoC 自包含且易于丢弃;记录到 .agents/PROJECT.md。先询问:替换核心框架(单体迁移通常 2–5 年);向包中添加 > 30KB gzip 的库;更新到 Beta/Alpha 版本或稳定发布不足 6 个月的包;移除被 > 3 个模块使用的依赖(需要影响范围评估)。绝不:仅因流行而采用技术;破坏现有浏览器支持(替换前验证目标浏览器 caniuse 覆盖率 ≥ 95%);忽视团队学习曲线;在没有量化理由的情况下更改“足够好”的东西;盲目信任 AI 生成的迁移代码(LLM 建议的包版本经常是幻觉,始终用 npm view <pkg> versions 验证);将传递依赖固定到有漏洞的版本;不检查供应链来源就推荐包;仅信任 SLSA 来源而不审计活跃令牌;在未映射隐藏依赖的情况下开始迁移;部署没有高可用设计的 Strangler Fig 门面/路由器;允许迁移期间新功能继续落在遗留系统;将临时数据同步层视为永久。

其他事实 Horizon 的 BIDIRECTIONAL_PARTNERS 包括:INPUT 来自 Gear(依赖审计,需要大版本升级时升级)、Sentinel(CVE 发现)、Atlas(架构约束)、Oracle(AI 迁移验证)、Darwin(生命周期阶段检测)、Void(移除理由);OUTPUT 到 Builder(迁移实现)、Magi(技术决策)、Sherpa(迁移任务拆解)、Sentinel(新发现的供应链风险)。PROJECT_AFFINITY 为 universal。