# Claude Code Ruff 修复：清掉无用导入，保留插件注册的必要副作用

Ruff原生F401自动修复真实破坏插件注册；局部保留注册导入后两插件恢复，新增无用导入仍报错。

## 环境

- Python 3.12+；在 reference 中 pip install -r requirements.txt。
- 确保 ruff 在 PATH 中。

## 启动

~~~sh
cd reference
python3 verify.py
# 运行后查看原生结果阅读器（读取records.json）
python3 -m http.server 8787
# 打开 http://127.0.0.1:8787/report.html
~~~

## 七步操作

1. 准备注册插件

输入有csv与json两个原创插件，导入模块时注册到REGISTRY。app里另有真正无用的math导入，方便区分相同F401提示背后的不同作用。

2. 先运行行为

先执行app，确认两个插件确实加载。没有行为基线，就无法判断自动修复有没有改变注册机制。

3. 执行Ruff修复

运行原生ruff check --select F401 --fix，默认会删除看似未使用的导入。保留修复前后源码与实际CLI输出。

4. 复现加载失败

再次执行app，注册列表缺失并触发断言。这个故意失败来自真实Python模块执行，不是只在文中警告自动修复可能有风险。

5. 限定保留导入

只对负责注册的两条导入标明局部noqa: F401，继续允许删除math。不要全局关闭F401，否则真正无用的导入也会消失在检查之外。

6. 再查无用导入

新增一个无用random导入，原生Ruff仍应报F401。修复策略需要既保护注册行为，又保持普通静态检查有效。

7. 同时验收两侧

最终同时执行插件行为与Ruff检查，两个插件完整、真正无用导入已删。本题使用局部合同，不宣称所有side effect import都应永久保留；Claude Code账号未运行。

## 目录身份

- starter：待完成的任务接口与原创输入，TODO不是已完成实现。
- reference：作者原生完成参考和实际产物。records.json/browser-result.json为本地实测记录，不是AI助手回复。
- TASK.md：可交给相应AI助手的原始任务合同。该助手账号生成会话未运行。

## 依赖与许可

原创教学代码以MIT许可提供。第三方项目、模型及浏览器遵循其自身许可。第三方依赖由本地安装获取，不包含node_modules、模型权重、WASM运行时、数据库、缓存或凭据。

## 官方依据

- https://docs.astral.sh/ruff/linter/
