用途:针对单个 Nx 缓存问题做有界证据诊断,包括缓存未命中、产物下载或解压失败、同哈希未重放、疑似不安全重放。需配合 nx-cloud-api 技能;仅本地配置诊断时才需要匹配的 Nx 工作区检出,纯 API 调查无需检出。
主要能力:区分 Nx 任务缓存与工具原生缓存(如 Vite、ESLint 的 executor 选项),二者互不证明;支持 API-only、特定对比等模式;可恢复待处理调查,在已知任务非终态、API 返回 HTTP 409(not_terminal)或用户启动受控诊断运行时安排一次同会话唤醒,保留 run、task、batchId、link 和过滤条件,到终态或重试上限即停,不轮询实时 CI。
使用方式:所有读取用 nx-cloud-api(npx nx-cloud api)。已知路由先 --describe,未知或含糊时用 --list-operations。每个实时响应用 -o 存文件,用 jq 只选一行和所需字段,不把原始集合贴入上下文,保留 batchId 和 links.self。示例:npx nx-cloud api --describe 'runs/{runId}/tasks';npx nx-cloud api "$run_tasks_link" -o "$dir/tasks.json";jq --arg task "$task_id" --arg batch "$batch_id" '.items[] | select(.id == $task and .batchId == $batch) | {id, batchId, status, cacheStatus, hash, cacheable, links: {self: .links.self}}' "$dir/tasks.json"。无链接时用 npx nx-cloud api 'runs/{runId}/tasks' -p runId="$run_id",不要把 ID 拼进路径;结论前检查 nextCursor。配置问题用匹配检出并切到记录提交,记录 Nx 版本,用 nx show project "$project" --json | jq --arg target "$target" --arg configuration "${configuration:-}" '.targets[$target] | {executor, cache, inputs, outputs, options, selectedConfiguration: .configurations[$configuration]}'。
分类与限制:先分类再解释,包括无缓存失败、产物检索或恢复失败、任务证据不足、不同计算、同计算未重放、疑似不安全重放。cacheable: false 或 cacheEnabled: false 时不查哈希输入或产物;null 哈希、NOT_STARTED、SCHEDULED_IMPLICITLY 不证明未命中;不同非空哈希只证明至少一个输入不同,不指明是哪个。读日志前告知用户,解码前读 references/log-and-report-assets.md,只引用脱敏错误签名。改配置需通过变更门:记录提交、Nx 版本、目标查询与返回片段,证明需改 cache/inputs/outputs,启用缓存前确认任务可终止、确定且输出可重放,移除输入前取得直接证据并受控验证,说明正确性风险并获明确批准;证据不足时写“No configuration change recommended yet.”。报告按 Scope、Classification、Confirmed facts、Assessment、Next diagnostic step、Safe recommendation 结构输出。