Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2.7 KiB
2.7 KiB
TASK · 生时校正代码拆分(只搬不改)+ 增长上限(2026-09-26)
基线
- 排在
TASK-rectification-fewer-probes-card-20260926与TASK-rectification-telemetry-20260926都合入之后的origin/staging。分支codex/rectification-code-split-20260926。
事故实证(09-26 盘点,origin/staging 3ce11ee0)
| 文件 | 行数 | 说明 |
|---|---|---|
frontend/src/components/rectification-agentic-chat.tsx |
2043 | 组件本体约 1620 行;useState 35、useRef 16、useEffect 7、useLayoutEffect 2、useCallback 12 |
frontend/src/app/api/rectification/agent/route.ts |
1077 | POST 约 926 行 |
frontend/src/lib/rectification-agentic/v9/agent-run.ts |
1400 | runV9AgentTurn 约 1047 行 |
- 无任何行数 / hook 数增长上限(对比首页
home-shell-growth-contract.test.ts)。 - 79 个测试文件把这些文件当源码文本读,其中 42 个用
indexOf/sourceBetween共 269 处切片;这类测试多次让门禁翻红(BUG-308、342、736、933、940、975、1014、692、748)。
决策记录(产品 2026-09-26)
- D1 只搬代码不改行为(同首页拆分
TASK-home-page-split-20260925的做法):- 聊天组件:按职责拆出 hook(快照同步、提交与流、选择题、时间轴 / 范围)与展示组件;参数式 lib 函数内部不调用 React hook。
POST:按分支拆成独立处理函数(打字回答、选择题、开场、只读、交付),route.ts只做装配。runV9AgentTurn:按阶段拆(准备、单次尝试、收尾、重跑),行为逐行一致。
- D2 目标:聊天组件本体 ≤ 900 行、useState ≤ 20;
POST≤ 250 行;runV9AgentTurn≤ 300 行(达不到按让步写明)。 - D3 加增长合同测试(与首页同型:行数基线 + 150 余量、hook 数上限),锁住成果。
- D4 切源码字符串的测试改为调用被抽出的函数(行为断言等价或更强);不得删除测试来"解决"断言;每条改写三栏。
硬红线
- 行为零变化:全量前端测试(Node 22)失败名单与开工基线逐条一致、新增 0;Python 快速门通过;首页 / 各页
○ Static、gzip ±2%。 - 不改接口、数据库、Skill、文案、打分。
- 不得用挤行 / 删注释凑行数(AGENTS §6)。
- 分阶段提交(组件、路由、agent-run 各自可单独回滚),每阶段都跑全量。
任务分解
- T1 聊天组件拆分 + 增长合同。
- T2 路由拆分 + 增长合同。
- T3 agent-run 拆分 + 增长合同。
- T4 切片测试改调用函数(随各阶段进行)。
- T5 记录:CHANGELOG(无用户可见变化)、PROGRESS(每阶段行数 / hook 数 / 测试对比);不开 BUG 号。