- 25 stub files: types/tools, types/utils, contextCollapse, mcpSkills, etc. - 11 reused from chore/bridge-green, 14 created from scratch - All stubs documented in docs/devlog/02-tsc-stubs.md - Build passes, tests not regressed
4.5 KiB
4.5 KiB
TSC 类型错误修复计划 — 反编译残留(235 个)
目标: 基于
chore/bridge-green(1 错误)参考,修复 acp 分支 270 个类型错误中的 235 个反编译残留(排除 35 个社区自写代码 bug)。
基线: chore/bridge-green commit 27682acf — 1 error
当前: acp — 270 errors(排除社区代码后 235)
错误分类
A 类:缺文件 stub(75 errors)
| 缺失模块 | 引用次数 | Bridge-green 状态 |
|---|---|---|
src/types/tools.js |
17 | 文件不存在但无引用(或导出已补齐) |
src/types/utils.js |
15 | 同上 |
src/services/contextCollapse/persist.js |
3 | 同上 |
src/services/contextCollapse/operations.js |
2 | 同上 |
src/services/compact/snipProjection.js |
3 | 同上 |
src/types/messageQueueTypes.js |
3 | 同上 |
src/skills/mcpSkills.js |
2 | 同上 |
src/services/skillSearch/signals.js |
2 | 同上 |
src/services/compact/cachedMCConfig.js |
1 | 同上 |
src/utils/toolSearch.js |
1 | 同上 |
src/utils/postCommitAttribution.js |
1 | 同上 |
src/memdir/memoryShapeTelemetry.js |
2 | 同上 |
components/messages/SnipBoundaryMessage.js |
1 | 同上 |
components/messages/UserGitHubWebhookMessage.js |
1 | 同上 |
components/messages/UserForkBoilerplateMessage.js |
1 | 同上 |
components/messages/UserCrossSessionMessage.js |
1 | 同上 |
components/permissions/.../ReviewArtifactPermissionRequest.js |
1 | 同上 |
components/design-system/Byline.js |
2 | 同上 |
components/design-system/Dialog.js |
2 | 同上 |
components/design-system/KeyboardShortcutHint.js |
2 | 同上 |
tools/ToolSearchTool/constants.js |
2 | 同上 |
commands/peers/index.js |
1 | 同上 |
commands/fork/index.js |
1 | 同上 |
environment-runner/main.js |
1 | 同上 |
self-hosted-runner/main.js |
1 | 同上 |
| 其他零散 | ~5 | 同上 |
修复策略: 每个缺失文件创建最小 stub,注释标记为 // STUB: 待补全。每个 stub 必须在 docs/devlog/02-tsc-stubs.md 中详细记录,包含:
- 文件路径
- 被哪些文件引用
- 最小导出内容
- 补全优先级(高/中/低)
B 类:unknown 类型泛滥(78 errors)
| 重灾区文件 | 数量 | 根因 |
|---|---|---|
src/utils/task/framework.ts |
9 | getState() 返回 unknown |
src/utils/teammate.ts |
8 | 状态对象类型为 unknown |
src/hooks/useCancelRequest.ts |
7 | 任务对象类型丢失 |
src/commands/context/context-noninteractive.ts |
8 | contextCollapse 方法类型缺失 |
src/components/PromptInput/PromptInput.tsx |
7 | 多处 unknown 参数 |
src/components/ContextVisualization.tsx |
7 | 同上 |
src/components/TokenWarning.tsx |
6 | 同上 |
| 其他 | 26 | — |
修复策略: 逐文件加类型标注,参考 bridge-green 版本。部分 unknown 来自缺失的类型定义文件(与 A 类关联)。
C 类:缺导出/缺名字(27 errors)
| 根因 | 数量 | 修复 |
|---|---|---|
Cannot find name 'feature' |
2 | 加 import |
Cannot find name — contextCollapse 方法 |
~10 | 补 contextCollapse/index.js 导出 |
Cannot find name — 其他 |
~13 | 逐项补 import 或 stub |
no exported member |
2 | 补导出 |
D 类:类型不匹配(50+ errors)
| 类别 | 数量 | 修复 |
|---|---|---|
| Property 不存在 | ~40 | 加类型字段或 as 断言 |
| 类型转换错误 | 4 | 加 as unknown as |
| 重复标识符 | 2 | 删重 |
| 参数类型错误 | ~10 | 收窄类型 |
执行顺序
Phase 1:A 类——批量建 stub(预计消 75 错误)
- 创建
src/types/tools.jsstub - 创建
src/types/utils.jsstub - 创建其他缺失文件的 stub
- 记录所有 stub 到
docs/devlog/02-tsc-stubs.md
Phase 2:C 类——补导出和名字(预计消 27 错误)
- 补
contextCollapse导出 - 补
feature()import - 补其他缺失的名字
Phase 3:B + D 类——类型收窄(预计消 130+ 错误)
- 从 bridge-green 逐文件参考修复
- 优先高密度文件(task/framework.ts 9 个,teammate.ts 8 个)
约束
- 不修社区代码:ACP、RCS、Bridge、autofix-pr、swarm、ssh 等社区自写功能
- 每个 stub 必须文档化:
docs/devlog/02-tsc-stubs.md详细记录 - 构建必须保持通过:每批修复后
bun run build - 测试不能回归:每批修复后
bun run test - 不引入
as any:用正确类型或// @ts-expect-error标注