Fallow代码清理实测:告别Claude Code与Codex脏代码
与AI协作编码时,一个常见痛点:项目代码随着迭代不断变“脏”。
常规做法是让第二个AI智能体做代码审查——例如Claude Code写完代码后交给Codex检查。但长期下来,项目里仍会堆积未使用的export、冗余依赖,package.json逐渐臃肿。关键问题是ESLint根本无法检测出这类隐患。
后来遇到了Fallow这个工具(GitHub: github.com/fallow-rs/f…)。它是用Rust编写的静态代码分析工具,专门定位TypeScript/JavaScript项目中的死代码、重复代码以及依赖管理问题。
Fallow 安装与常用命令
安装操作非常简洁:
npm install --sa ve-dev fallow
高频场景的对应命令如下:
# 全量分析
npx fallow
# 只检测死代码
npx fallow dead-code
# 检测重复代码
npx fallow dupes
# 变更风险
npx fallow audit
# 预览清理结果(不实际修改)
npx fallow fix --dry-run
实际项目测试
用自己的项目You Pencil做了验证。平时虽有意做代码清理,但扫描完成后仍发现了不少隐藏问题。控制台输出过长,可读性不佳。于是直接将结果导出为Markdown格式,交由AI处理:
npx fallow --format markdown > .fallow-report.md
再让Claude Code根据报告内容进行修复。
将 Fallow 集成到 Claude Code / Codex 工作流
手动执行终究繁琐,干脆把这一步直接嵌入工作流。
Fallow内置了agent hook安装器,能自动生成配置文件:
npx fallow hooks install --target agent --agent claude
执行后会在 .claude/ 下生成两个文件:
.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 收到错误信息后自动尝试修复
- 修复完成,重新 commit
最终形成自动循环:commit 被拦截 → 读取错误信息 → 自动修复 → 再次尝试 commit。
Codex 的配置方式类似:
# Codex:自动在 AGENTS.md 中追加 managed block
npx fallow hooks install --target agent --agent codex
人工改代码,也最好加一道拦截
上述流程主要针对AI,但不少脏代码其实是人工引入的。因此在Git层额外加了一层hook:
npx fallow hooks install --target git
这样无论谁提交代码,都必须先通过检查。
目前的用法
实施这套流程后,项目代码整洁度有了明显提升。