代码越写越脏?用 Fallow 给 Claude Code / Codex 的输出做二次清理
·
1. 背景:AI 代码生成的两面性
Claude Code 和 Codex 这类 AI 编程助手极大提升了开发效率,但长期使用后你会发现一个共性痛点:代码越写越脏。
具体表现为:
- 大量冗余注释(
// 这里遍历列表这种废话) - 重复的 import / 未使用的变量
- 不一致的缩进和空行
- 为了「安全」而生成的防御性 null 检查,实际永远不会触发
- 风格漂移:同一个文件里混用多种写法
这些「脏代码」不是 Bug,但会显著降低可维护性,让 Code Review 变成「人工去噪」。
2. 为什么 Claude Code / Codex 会越写越脏?
根本原因在于 LLM 的上下文污染与过度生成倾向:
- 上下文累积:每次对话都会把历史代码片段塞进上下文,模型倾向于「模仿」之前输出的风格,包括那些不完美的部分。
- 安全优先:模型宁可多写一行注释、多做一个 null 检查,也不愿遗漏——这在生产环境是好事,但在日常开发中就是噪音。
- 缺乏全局视角:每次只生成一个函数或一个文件,没有「整个项目代码规范」的约束。
3. Fallow 是什么?
Fallow 是一个轻量级的代码后处理层,专门用于清理 AI 生成代码中的「脏」部分。它不修改业务逻辑,只做格式化、去噪和风格统一。
核心设计理念:
- 无侵入:作为 Git pre-commit hook 或 CI 步骤运行,不改变开发流程
- 可配置:哪些规则启用、哪些文件跳过,完全由你控制
- 幂等:多次运行结果一致,不会反复修改
4. 快速上手
安装
# 通过 pip 安装
pip install fallow
# 或通过 npm(如果项目是 Node.js 生态)
npm install -g fallow
基本配置
在项目根目录创建 fallow.config.yaml:
# fallow.config.yaml
rules:
# 移除无意义的单行注释(如 // 获取用户列表)
remove_redundant_comments: true
# 移除未使用的 import
remove_unused_imports: true
# 统一缩进为 2 空格
indent_style: space
indent_size: 2
# 移除多余空行(连续超过 2 个空行压缩为 1 个)
compress_blank_lines: true
# 修复不一致的引号风格(统一为单引号)
quote_style: single
# 排除目录
exclude:
- node_modules
- vendor
- generated
运行
# 清理当前目录下所有 AI 生成的代码
fallow clean --path ./src
# 只检查不修改(dry-run 模式)
fallow check --path ./src
5. 实战效果对比
清理前(Claude Code 输出)
# 获取用户列表
def get_users():
# 从数据库查询所有用户
users = db.query("SELECT * FROM users") # 执行 SQL 查询
# 返回用户列表
return users
清理后(Fallow 处理)
def get_users():
users = db.query("SELECT * FROM users")
return users
更复杂的例子——清理前
// 计算订单总价
function calculateTotal(order) {
let total = 0; // 初始化总价
// 遍历订单项
for (let i = 0; i < order.items.length; i++) {
const item = order.items[i]; // 获取当前项
// 累加价格
total = total + item.price; // 加上当前项价格
}
// 返回总价
return total;
}
清理后
function calculateTotal(order) {
let total = 0;
for (const item of order.items) {
total += item.price;
}
return total;
}
注意 Fallow 不仅去掉了注释,还把 for 循环改成了更现代的 for...of 写法——这是通过可选的代码现代化规则实现的。
6. 集成到工作流
方式一:Git pre-commit hook
# 安装 pre-commit hook
fallow install-hook
# 之后每次 git commit 都会自动清理暂存区的代码
方式二:CI 流水线
# .github/workflows/code-cleanup.yml
name: Code Cleanup
on: [pull_request]
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pip install fallow
- run: fallow check --path ./src
方式三:与 Claude Code / Codex 配合
在提示词(prompt)末尾追加:
生成完成后,请运行 `fallow clean --path .` 清理输出。
或者更彻底的做法:让 AI 只生成逻辑,Fallow 负责格式。这样你得到的是「干净的业务代码 + 统一的风格」,而不是「AI 风格的脏代码」。
7. 注意事项
- 不要过度清理:有些注释是必要的(如复杂算法的解释、TODO 标记),Fallow 默认只清理「明显冗余」的注释,你可以通过规则配置调整敏感度。
- 测试先行:Fallow 不修改逻辑,但建议在集成到 CI 前先在 dry-run 模式下跑一遍,确认规则符合团队预期。
- 语言支持:目前 Fallow 对 Python、JavaScript/TypeScript、Java、Go 支持最好,其他语言的部分规则可能不生效。
8. 总结
Claude Code 和 Codex 让写代码变快了,但也让代码变「脏」了。Fallow 作为一层轻量清理层,解决了这个副作用:
- ✅ 自动去噪:移除冗余注释、未用 import、多余空行
- ✅ 风格统一:缩进、引号、空行规则一致
- ✅ 无侵入:作为 hook 或 CI 步骤运行,不改变开发习惯
- ✅ 可配置:按项目需求开关规则
如果你也在被 AI 生成的「脏代码」困扰,不妨试试 Fallow——让 AI 负责「写」,让 Fallow 负责「擦」。
更多推荐



所有评论(0)