SuperAPI AI 工具集

build-repo

编程与开发

查看项目

更新于 10-16 00:32

技能介绍

用途:在一次性沙箱(临时机器或容器)中,把未见过的 TS/JS 仓库从零构建起来。仓库可能老旧、废弃、体积大或文档不足。需克隆仓库、安装与年代匹配的工具链、执行文档化设置、如实驱动各阶段至通过。范围仅限 TS/JS:Node、JS 包管理器(npm/pnpm/yarn)与 tsc,其他语言不在范围内。

主要阶段与默认验证:Setup 安装依赖并运行项目构建流水线,依据退出码 0;Compile 仅类型检查,用项目自身 tsc(其 typecheck 脚本或 npx tsc --noEmit),依据退出码 0 并解析错误数;Test 运行项目真实测试命令,依据退出码 0 并解析失败数;Runtime 验证实际可运行(模块加载、CLI 运行、服务器响应),按步骤验证(output-contains、http-status 等)。每阶段终态:PASS、FAIL、ABSENT(需证据,不能因找不到就判缺失)、BLOCKED-ON-EXTERNAL(需真实凭证或外部服务)。

工作流:克隆并定位,构建给定提交,不要自选分支;用 git show -s --format=%cI HEAD 记录提交日期用于选工具链。先读 README.md、CONTRIBUTING.md、docs/,逐字提取文档化的 setup、build、test、run 命令;文档缺失或失败时再回退到 .github/workflows、Dockerfile、.devcontainer、docker-compose、Makefile/justfile 及各 package.json 的 scripts。收集所有 package.json 以填充 packages。

工具链选择:Node 版本优先取根 package.json 的 engines.node、.nvmrc、.node-version、.tool-versions/Volta、Dockerfile/.devcontainer、CI workflow 的 node-version;均无则用该提交日期当时最新的 Node LTS,而非当前最新。用 nvm/fnm 获取。包管理器尊重 packageManager 字段/锁文件,用 corepack 安装匹配版本。所有安装记入 tools manifest。

依赖安装:优先冻结安装 npm ci / pnpm i --frozen-lockfile / yarn install --frozen-lockfile。冻结失败可回退非冻结安装或重生成锁文件,但需在 manifest 记为保真度妥协。按错误推断系统工具与服务(如 node-gyp→build-essential、sharp→libvips、canvas→cairo/pango、puppeteer/playwright→浏览器二进制、node-sass→python 等)。Runtime 可搭起可推断的后端服务(docker-compose 服务、本地 Postgres/Redis/sqlite),从 .env.example 或合理默认合成开发环境;绝不伪造第三方凭证,确需真实密钥或外部服务则标 BLOCKED-ON-EXTERNAL。

收敛循环:每阶段先计算结果签名 { passed, errorCount, messageSet } 并追加到收敛日志;通过则继续,失败则提出修复(改命令、装工具、起服务、设配置)并重跑。当前签名与本次已见签名相同(平台期或 A→B→A 循环),或所有阶段累计修复尝试达 10 次上限时停止;签名变化即视为进展。下游失败可回溯修复 Setup,修复不限于失败阶段。

保真规则(违反则本次运行无效):不得掩盖退出码(禁止 || true、|| :、|| exit 0、|| echo ...、; true、; exit 0);不得替换工具链版本,Compile 必须用项目自身配置的 TypeScript;不得缩小范围,Test 与 Runtime 须代表整个项目,不能只跑一个琐碎套件或把 Runtime 缩成 --version;依赖漂移与非冻结安装须在 manifest 记为保真度妥协。

输出:完成任务时生成工作检出(沙箱中克隆并构建的仓库)和 EvalPlan JSON(四阶段计划、实际可用命令,外加 tools manifest 与 convergence log,schema 与示例见 extended-plan-schema.md),写入会话 output 文件夹,不要提交进目标仓库。并向用户总结:构建了什么、哪些 ABSENT 或 BLOCKED-ON-EXTERNAL 及原因、安装过的全部工具、保真度妥协,以及若最终失败,诊断是仓库本身已发布即坏还是沙箱缺少所需条件。完成定义:每个阶段收敛循环已平台期(或触顶),每个终态有依据,且 Compile/Test/Runtime 至少一个 PASS;三者皆无法通过则为失败构建。