# 构建与修复

以最小、安全的更改逐步修复构建和类型错误。

## 步骤 1：检测构建系统

识别项目的构建工具并运行构建：

| 指示器 | 构建命令 |
|-----------|---------------|
| `package.json` 包含 `build` 脚本 | `npm run build` 或 `pnpm build` |
| `tsconfig.json`（仅限 TypeScript） | `npx tsc --noEmit` |
| `Cargo.toml` | `cargo build 2>&1` |
| `pom.xml` | `mvn compile` |
| `build.gradle` | `./gradlew compileJava` |
| `go.mod` | `go build ./...` |
| `pyproject.toml` | `python -m py_compile` 或 `mypy .` |

## 步骤 2：解析并分组错误

1. 运行构建命令并捕获 stderr
2. 按文件路径对错误进行分组
3. 按依赖顺序排序（先修复导入/类型错误，再修复逻辑错误）
4. 统计错误总数以跟踪进度

## 步骤 3：修复循环（一次处理一个错误）

对于每个错误：

1. **读取文件** — 使用读取工具查看错误上下文（错误周围的 10 行代码）
2. **诊断** — 确定根本原因（缺少导入、类型错误、语法错误）
3. **最小化修复** — 使用编辑工具进行最小的更改以解决错误
4. **重新运行构建** — 验证错误已消失且未引入新错误
5. **移至下一个** — 继续处理剩余的错误

## 步骤 4：防护措施

在以下情况下停止并询问用户：

* 一个修复**引入的错误比它解决的更多**
* **同一错误在 3 次尝试后仍然存在**（可能是更深层次的问题）
* 修复需要**架构更改**（不仅仅是构建修复）
* 构建错误源于**缺少依赖项**（需要 `npm install`、`cargo add` 等）

## 步骤 5：总结

显示结果：

* 已修复的错误（包含文件路径）
* 剩余的错误（如果有）
* 引入的新错误（应为零）
* 针对未解决问题的建议后续步骤

## 恢复策略

| 情况 | 操作 |
|-----------|--------|
| 缺少模块/导入 | 检查包是否已安装；建议安装命令 |
| 类型不匹配 | 读取两种类型定义；修复更窄的类型 |
| 循环依赖 | 使用导入图识别循环；建议提取 |
| 版本冲突 | 检查 `package.json` / `Cargo.toml` 中的版本约束 |
| 构建工具配置错误 | 读取配置文件；与有效的默认配置进行比较 |

为了安全起见，一次只修复一个错误。优先使用最小的改动，而不是重构。
