ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

tsParticles 仓库 CI 自愈监控实战:monitor-ci 状态处理与修复流程(fix-flows)完全指南

tsParticles 仓库 CI 自愈监控实战:monitor-ci 状态处理与修复流程(fix-flows)完全指南 tsParticles 仓库 CI 自愈监控实战monitor-ci 状态处理与修复流程fix-flows完全指南【免费下载链接】tsparticlestsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.项目地址: https://gitcode.com/GitHub_Trending/ts/tsparticles导读本文以 fix-flows.md 为核心主体系统讲解 tsParticles 仓库内置的monitor-ci技能在 Nx Cloud CI 流水线失败时的状态处理规则与自愈修复流程。读者将掌握决策脚本返回的每一种可操作状态如fix_apply_ready、fix_needs_local_verify、self_healing_throttled等对应的默认处理动作、三条标准修复动作流Apply via MCP / Apply Locally Enhance / Reject Fix From Scratch、环境问题与代码问题的识别边界以及 Git 安全与提交信息规范——并同时理解这些规则背后由确定性脚本ci-state-update.mjs、ci-poll-decide.mjs和子代理ci-monitor-subagent构成的执行体系。一、fix-flows 在整个 monitor-ci 体系中的位置在开始读具体流程之前先明确这份文档的定位。tsParticles 仓库是一个以 pnpm workspace Nx 管理的巨型 monorepo详见 package.json 与 nx.jsonCI 由 Nx Cloud 承载并开启了自愈修复self-healing能力。仓库内为此内置了一套完整的监控编排体系由四个部件组成见 SKILL.md 的 Architecture Overview编排器skill 本体负责派生子代理、运行确定性脚本、打印状态、执行本地代码修复ci-monitor-subagent快速模型每次只调用一个 MCP 工具ci_information或update_self_healing_fix返回结构化结果后立即退出见 ci-monitor-subagent.mdci-poll-decide.mjs确定性脚本把ci_information结果与当前状态喂进去输出一个动作poll/wait/done加状态码ci-state-update.mjs确定性脚本管理预算门禁gate、动作后的状态迁移post-action与循环分类cycle-check。其中编排器的主循环在 Step 3「处理可操作状态」时会明确要求先阅读 references/fix-flows.md 再执行对应流程见 SKILL.md。也就是说fix-flows.md 是「决策脚本给出结论之后编排器如何行动」的操作手册它定义了每个状态码的默认行为——这些默认行为可被用户指令覆盖如never auto-applyalways ask before git push等见 SKILL.md。二、状态处理总览哪些状态需要走 fix-flows决策脚本ci-poll-decide.mjs是一棵纯决策树decision priority 详见 ci-poll-decide.mjs它会返回若干简单退出状态直接报告后退出ci_success、cipe_canceled、cipe_timed_out、polling_timeout、circuit_breaker、environment_rerun_cap、fix_auto_applying、error和若干需要动作的状态。后者正是 fix-flows.md 的主体完整清单如下状态码触发含义默认处理概要fix_auto_apply_skipped修复已验证但自动应用被跳过如为防止循环告知用户原因征得同意后由子代理手动APPLYfix_apply_ready修复已验证全部任务或仅 e2e 任务直接通过 MCP 子代理APPLYfix_needs_local_verify修复存在未验证的非 e2e 任务本地并行验证通过则APPLY失败则走 Enhance 流fix_needs_review修复验证失败或未执行拉取重型数据人工/代理分析后决定应用、增强或拒绝fix_failed/no_fix自愈失败 / 无可用修复拉取失败摘要过门禁后尝试本地修复environment_issue失败被归类为环境问题过门禁后通过 MCP 触发环境重跑self_healing_throttled自愈被限流未应用修复过多拒绝旧修复尝试本地修复预算耗尽则推空提交no_new_cipe动作后始终没有新的 CI Attempt 产生报告用户或按--auto-fix-workflow修复锁文件cipe_no_tasksCI 失败但没有记录任何 Nx 任务空提交重试一次再次失败则退出这些状态对应的默认行为表同时记录在 SKILL.md 中本文按 fix-flows.md 的原始结构逐一展开。三、按状态码逐个拆解处理流程3.1fix_auto_apply_skipped自动应用被跳过决策脚本在couldAutoApplyTasks true且autoApplySkipped true时返回此状态见 ci-poll-decide.mjs并把autoApplySkipReason一并输出。典型原因是上一次 CI 流水线执行由 Nx Cloud 触发为避免修复动作与自愈机制形成循环而跳过。处理步骤将跳过原因报告给用户例如自动应用被跳过因为上一次 CI 流水线由 Nx Cloud 触发询问用户是否手动应用修复——同意则派生 UPDATE_FIX 子代理并传APPLY动作记录last_cipe_url进入等待模式wait mode等待新的 CI Attempt。注意这一步不消耗本地修复预算、不做任何本地 git 操作因为它本质上是让自愈系统自己把已验证的修复应用掉。3.2fix_apply_ready修复已验证直接应用当selfHealingStatus COMPLETED且所有失败任务要么已验证、要么仅剩 e2e 任务时categorizeTasks返回all_verified或e2e_only见 ci-poll-decide.mjs决策脚本认为修复足够可信可以立即应用派生 UPDATE_FIX 子代理调用 MCP 工具update_self_healing_fix动作传APPLY记录last_cipe_url进入等待模式。应用之后新的 CI Attempt 会自动生成编排器无需任何本地 git 操作——这正是Apply via MCP流见 4.1。3.3fix_needs_local_verify修复需要本地验证如果失败任务中存在未验证且非 e2e的任务决策脚本通过verifiableTaskIds把它们挑出来返回categorizeTasks返回needs_local_verify见 ci-poll-decide.mjs。这类任务必须在本地跑过才能信任修复处理流程探测包管理器决定用哪个命令跑 Nx存在pnpm-lock.yaml→pnpm nx存在yarn.lock→yarn nx否则 →npx nx。在 tsParticles 仓库中实际存在 pnpm-lock.yaml因此默认走pnpm nx并行运行可验证任务——为每个任务派生一个general子代理全部通过→ 派生 UPDATE_FIX 子代理传APPLY进入等待模式有失败→ 进入Apply Locally Enhance Flow见 4.2。这里体现了预算意识本地验证属于消耗本地修复预算的动作因此在此之前应先用门禁脚本确认预算未耗尽见 6.1。3.4fix_needs_review修复需要人工/代理审查当修复的验证状态是FAILED、NOT_EXECUTABLE或者压根没有验证状态且无法自动应用时见 ci-poll-decide.mjs说明修复不可信需要拉取细节审查派生 FETCH_HEAVY 子代理用 HEAVY_FIELDS 获取suggestedFixDescription、suggestedFixSummary、taskFailureSummaries等重型字段根据审查结论三选一修复看起来正确→ 通过 MCP 直接应用update_self_healing_fixAPPLY修复需要增强→ 走Apply Locally Enhance Flow修复是错的→ 先运行ci-state-update.mjs gate --gate-type local-fix确认预算不允许则打印消息退出允许则走Reject Fix From Scratch Flow。3.5fix_failed/no_fix自愈失败或无修复可用这两个状态本质相同Nx Cloud 没有给出可信修复。fix_failed表示自愈机制本身失败selfHealingStatus FAILEDno_fix表示 CI 失败但自愈未启用或未执行selfHealingEnabled false || selfHealingStatus NOT_EXECUTABLE见 ci-poll-decide.mjs。处理流程派生 FETCH_HEAVY 子代理获取taskFailureSummaries作为本地修复的上下文运行ci-state-update.mjs gate --gate-type local-fix——如果门禁不允许预算耗尽直接打印消息并退出允许则尝试本地修复注意计数器已由 gate 递增避免超预算修复成功 → commit、push、进入等待模式失败 → 以失败退出。3.6environment_issue环境问题重跑当failureClassification environment_state且重跑次数未达上限时返回见 ci-poll-decide.mjs处理流程运行ci-state-update.mjs gate --gate-type env-rerun——不允许则打印消息退出派生 UPDATE_FIX 子代理调用update_self_healing_fix动作传RERUN_ENVIRONMENT_STATE设置last_cipe_url后进入等待模式。环境重跑上限为 2 次由 gate 脚本硬编码见 6.1超过后决策脚本返回environment_rerun_cap直接退出。3.7self_healing_throttled自愈被限流当selfHealingSkippedReason THROTTLED时见 ci-poll-decide.mjs说明积压了过多未应用的修复自愈暂停。处理流程派生 FETCH_HEAVY 子代理获取selfHealingSkipMessage解析限流消息中的 CI Attempt URL正则匹配/cipes/{id}形式拒绝先前的修复——对每个 URL先派生 FETCH_THROTTLE_INFO 子代理获取该 Attempt 的shortLink再派生 UPDATE_FIX 子代理传REJECT尝试本地修复运行ci-state-update.mjs gate --gate-type local-fix不允许则跳到第 5 步允许则结合failedTaskIds与taskFailureSummaries修复兜底本地修复不可行或预算耗尽时推送空提交触发重跑git commit --allow-empty -m ci: rerun after rejecting throttled fixes推入等待模式。3.8no_new_cipe始终没有新的 CI Attempt等待模式下若poll_count * 30s new_cipe_timeout仍无新 CI Attempt见 ci-poll-decide.mjs返回此状态。处理流程向用户报告未找到新的 CI Attempt建议检查 CI 提供方状态若启用了--auto-fix-workflow探测包管理器、运行依赖安装如pnpm install若锁文件有变化则提交锁文件进入等待模式否则输出引导信息后退出。这一步对应 SKILL.md 错误处理表中的Lockfile auto-fix fails → Report to user, exit兜底逻辑见 SKILL.md。3.9cipe_no_tasksCI 失败但没有任务记录当cipeStatus FAILED且failedTaskIds为空、selfHealingStatus为空时返回见 ci-poll-decide.mjs通常是流水线级故障。处理流程向用户报告CI 失败但未记录任何任务用空提交重试一次并推送进入等待模式git commit --allow-empty -m chore: retry ci [monitor-ci]若重试后仍返回cipe_no_tasks→ 以失败退出。四、三条标准修复动作流fix-flows.md 将上文涉及的本地动作归纳为三条可复用的动作流它们是状态处理的最小行动单元。4.1 Apply via MCP纯 MCP 应用适用修复已被自愈系统验证通过fix_apply_ready、fix_needs_local_verify验证通过后。派生 UPDATE_FIX 子代理动作APPLY新的 CI Attempt 会自动生成不做任何本地 git 操作。MCP 工具签名update_self_healing_fix接受shortLink与动作APPLY/REJECT/RERUN_ENVIRONMENT_STATE详见 SKILL.md。4.2 Apply Locally Enhance Flow本地应用 增强适用修复需要通过本地验证或验证失败需要增强。运行nx-cloud apply-locally shortLink把状态置为APPLIED_LOCALLY把 Nx Cloud 上的修复补丁落到本地增强代码以修复失败任务本地运行失败任务验证仍失败→ 运行ci-state-update.mjs gate --gate-type local-fix不允许 → 提交当前状态并推送把最终裁判权交给 CI允许 → 回到第 2 步继续增强受--local-verify-attempts默认 3 次限制通过→ commit 并 push进入等待模式。这条流是fix_needs_local_verify与fix_needs_review需要增强分支落地的执行路径。4.3 Reject Fix From Scratch Flow拒绝 从零修复适用审查后判定修复是错的fix_needs_review的第三分支或nx-cloud apply-locally失败需要手动打补丁见 SKILL.md 错误处理表。运行ci-state-update.mjs gate --gate-type local-fix——不允许则打印消息退出派生 UPDATE_FIX 子代理传REJECT把 Nx Cloud 上那条错误的修复作废在本地从零修复commit 并 push进入等待模式。五、环境问题 vs 代码问题动手修复前的关键判别fix-flows.md 特别强调任何本地修复路径中任务失败时先判别失败性质再决定是否消耗预算。判别结果影响是否运行 gate 脚本。环境/工具链问题的典型迹象非穷尽清单命令找不到 / 二进制缺失command not found / binary missing内存溢出 / 堆分配失败OOM / heap allocation failures权限拒绝permission denied网络超时 / DNS 失败network timeouts / DNS failures系统库缺失missing system librariesDocker / 容器问题磁盘空间耗尽。一旦判定为环境问题 →立即终止不运行 gate不消耗预算并向用户报告这是环境/工具链问题不是代码 bug。与之对应的是environment_issue状态走的环境重跑通道见 3.6。代码问题编译错误、测试断言失败、lint 违规、类型错误才是本地修复的合法候选正常进入 gate 流程。这条规则的收益在于环境问题重跑即可用本地修复预算去修环境问题属于浪费反过来把代码问题误判为环境问题则可能掩盖真正的缺陷。六、底层脚本佐证gate / post-action / cycle-check 与决策树fix-flows.md 中反复出现的ci-state-update.mjs gate --gate-type local-fix等命令其实现细节全部落在两个确定性脚本里以下是关键佐证。6.1 ci-state-update.mjs 的三种命令脚本提供gate、post-action、cycle-check三个子命令见 ci-state-update.mjsgate预算门禁——任何本地修复或环境重跑前调用见 ci-state-update.mjs--gate-type local-fix本地修复预算默认上限 3 次--local-verify-attempts默认值 3达到上限返回allowed: false与消息Local fix budget exhausted (count/max attempts)否则返回allowed: true并把计数 1--gate-type env-rerun环境重跑预算硬编码上限 2 次超限返回Environment issue persists after 2 reruns. Manual investigation needed.。这就是 3.5/3.7 中gate 已把计数器递增和 3.6 中重跑上限 2的来源。post-action动作后状态迁移——动作完成、期待新 CI Attempt 时调用见 ci-state-update.mjsnode ci-state-update.mjs post-action --action type --cipe-url url --commit-sha sha支持的动作类型fix-auto-applying、apply-mcp、apply-local-push、reject-fix-push、local-fix-push、env-rerun、auto-fix-push、empty-commit-push。其中前三类fix-auto-applying、apply-mcp、env-rerun按cipeUrl追踪其余按commitSha追踪返回{ waitMode: true, pollCount: 0, lastCipeUrl, expectedCommitSha, agentTriggered }且agentTriggered仅对fix-auto-applying自愈自己做的为 false。cycle-check循环分类——每次收到action done时、处理状态码之前调用见 ci-state-update.mjs若上一循环是 agent 触发的cycleCount 1只有 agent 发起的循环计入--max-cycles默认 10非environment_issue状态会重置envRerunCountcycleCount maxCycles - 2时置approachingLimit: true编排器会询问用户继续 5/10 轮还是停止。6.2 ci-poll-decide.mjs 的决策优先级与退避决策脚本的核心是一棵 24 条优先级的纯决策树完整优先级见 ci-poll-decide.mjs从等待模式优先新 Attempt 检测 → 超时 → 继续等待到守卫轮询超时、5 次无进展熔断再到终态成功/取消/超时/无任务、环境失败、限流、运行中、自愈各阶段最后兜底poll。它同时实现了指数退避延迟序列为[60, 90, 120]秒见 ci-poll-decide.mjs无进展轮询的间隔逐步拉长。此外脚本用resetProgressCodes集合ci_success、fix_auto_applying、fix_needs_review、fix_apply_ready、fix_needs_local_verify等在真正取得进展时把noProgressCount归零见 ci-poll-decide.mjs防止熔断误触发。6.3 子代理的四类命令fix-flows 中的 FETCH_HEAVY、UPDATE_FIX、FETCH_THROTTLE_INFO 均对应 ci-monitor-subagent.md 中定义的命令契约每次调用只执行一个命令并立即返回不做轮询、循环或决策。FETCH_HEAVY要求对suggestedFix与taskOutputSummary做摘要而非返回原始 diffUPDATE_FIX把APPLY/REJECT/RERUN_ENVIRONMENT_STATE透传给 MCPFETCH_THROTTLE_INFO仅返回{ shortLink, cipeUrl }专门服务于 3.7 限流场景。6.4 仓库连接验证在进入任何修复流程之前monitor-ci 要求先验证工作区已连接 Nx Cloud检查仓库根目录 nx.json 中是否存在nxCloudId或nxCloudAccessToken属性tsParticles 仓库已配置nxCloudId: 62a6df5ddbaff92c46e3b366且根 package.json 的 devDependencies 包含nx-cloud与nx否则整个技能不可用并直接退出。七、Git 安全与提交信息规范7.1 Git 安全禁止大范围 addfix-flows.md 明确一条硬规则按文件名精确暂存文件。git add -A或git add .存在把用户无关的在途工作或密钥一并提交的风险。这条规则同样出现在 SKILL.md 的关键规则中适用于监控期间编排器的所有本地修复提交。7.2 提交信息格式所有本地修复提交必须遵循以下结构化格式以便 CI 与后续追溯git commit -m fix(projects): brief description Failed tasks: taskId1, taskId2 Local verification: passed|enhanced|failed-pushing-to-ci三个字段的含义fix(projects)遵循 Conventional Commitsscope 写明受影响的工程tsParticles 仓库中常见如fix(engine)、fix(react)Failed tasks列出本次修复覆盖的失败任务 ID与failedTaskIds对齐Local verification三选一——passed本地验证通过、enhanced走增强流后仍推送由 CI 裁决、failed-pushing-to-ci本地验证失败但预算耗尽推送让 CI 当最终裁判。八、实战要点速查先判性质再花预算任务失败先判断是环境问题还是代码问题环境问题直接终止并报告绝不消耗本地修复预算gate 是护城河任何本地修复前必须ci-state-update.mjs gate --gate-type local-fix任何环境重跑前必须gate --gate-type env-rerun本地修复预算默认 3 次、环境重跑上限 2 次e2e 任务的特殊地位categorizeTasks只把非 e2e 且未验证的任务列为verifiableTaskIds纯 e2e 失败e2e_only可以直接走fix_apply_ready应用不需要本地验证等待模式用最轻字段等待新 CI Attempt 时只用WAIT_FIELDScipeUrl,commitSha,cipeStatus轮询避免浪费上下文见 SKILL.md预算快用完先问用户cycle-check返回approachingLimit时询问用户是继续5/10 轮还是停止包管理器探测顺序pnpm-lock.yaml→pnpm nxyarn.lock→yarn nx否则npx nxtsParticles 仓库存在 pnpm-lock.yaml实际会走pnpm nx。通过上述状态处理规则、三条修复动作流与底层脚本机制monitor-ci 能够在 Nx Cloud 自愈失效或受限时以预算可控、git 安全、不跑赢自愈的方式接管修复闭环最终把每一次 CI 失败收敛为可验证、可追溯、可被用户指令覆盖的确定性动作序列。【免费下载链接】tsparticlestsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.项目地址: https://gitcode.com/GitHub_Trending/ts/tsparticles创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表