大家好,我是印刻君。最近我一直在用 AI 写代码。
我一般会让第二个 Agent 做 Review,比如 Claude Code 写、Codex 查,但时间长了,项目还是越来越脏。
AI 很喜欢 export 一堆没人用的东西,package.json 里也会慢慢积累无用依赖。这类问题,ESLint 很难发现。
后来我发现了一个工具:Fallow。github.com/fallow-rs/f...
它是 Rust 写的静态代码分析工具,专门查 TypeScript / JavaScript 里的死代码、重复代码和依赖问题。
Fallow 的安装与常用命令
安装:
css
npm install --save-dev fallow
常用命令:
bash
# 全量分析
npx fallow
# 只检测死代码
npx fallow dead-code
# 检测重复代码
npx fallow dupes
# 变更风险
npx fallow audit
# 预览清理
npx fallow fix --dry-run
我自己的尝试
我拿自己的项目 You Pencil(youpencil.com)进行了尝试。
虽然我平时有意识地做了代码清理,还是扫出不少问题。

控制台输出太长,不太方便看。
我后来直接导成 Markdown,让 AI 自己读:
css
npx fallow --format markdown > .fallow-report.md

然后告诉 Claude Code:
读一下 .fallow-report.md,把 Unused exports、Unused type exports、Unused dependencies 按优先级处理掉。
把 Fallow 塞进 Claude Code / Codex 工作流
不过手动执行还是太麻烦。我索性把这步集成到工作流里。
Fallow 内置了 agent hook 安装器,可以生成配置文件:
css
npx fallow hooks install --target agent --agent claude
该命令会在 .claude/ 下生成两个文件。
bash
.claude/settings.json
.claude/hooks/fallow-gate.sh
settings.json 配置了一个 Claude Code 的 PreToolUse hook。
也就是说,Claude 每次准备执行 Bash 命令时,都会先经过 fallow-gate.sh。
整个流程大概是:
- Claude 执行
git commit - hook 拦截,自动运行
fallow audit - 如果检查失败,脚本 exit 2,并把结果输出到 stderr
- Claude 收到错误信息
- Claude 自己修复,再重新 commit
最后形成了一个自动循环:commit 被拦 → 读错误 → 修复 → 再 commit。
Codex 的配置方式类似:
scss
# Codex:自动在 AGENTS.md 中追加 managed block
npx fallow hooks install --target agent --agent codex
人工改代码,也最好加一道拦截
上面那套主要防 AI。但很多脏东西,其实也是人手改出来的。所以我后来又在 Git 层加了一层 hook:
css
npx fallow hooks install --target git
这样无论是谁提交代码,都会先跑一遍检查。
目前就这么用着
我走完这套流程之后,项目确实干净了不少。
以上就是我的使用过程,分享给有同样需求的人。