From 8ffc0e714a50d46e69f6027824c35d0b236fbdb4 Mon Sep 17 00:00:00 2001 From: Zane <1638644816@qq.com> Date: Mon, 6 Jul 2026 22:07:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0:=20OpenMole=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=9D=8F=E5=91=B3=E9=81=93=E9=A9=B1=E5=8A=A8=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E7=9A=84=E5=B7=A5=E7=A8=8B=E5=8C=96=E5=AE=9E=E8=B7=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InBox/OpenMole:坏味道驱动重构的工程化实践.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 InBox/OpenMole:坏味道驱动重构的工程化实践.md diff --git a/InBox/OpenMole:坏味道驱动重构的工程化实践.md b/InBox/OpenMole:坏味道驱动重构的工程化实践.md new file mode 100644 index 0000000..7c12123 --- /dev/null +++ b/InBox/OpenMole:坏味道驱动重构的工程化实践.md @@ -0,0 +1,84 @@ +--- +source: 微信公众号「逸言」 +title: OpenMole:坏味道驱动重构的工程化实践 +author: 张逸少 +date: 2026-06-17 +url: https://mp.weixin.qq.com/s/Whc0JYUHcwI5pPZwDNUCqw +tags: [重构, BDR, OpenMole, AI编程, SDD, 坏味道] +--- + +# OpenMole:坏味道驱动重构的工程化实践 + +## 核心概念:BDR(Bad smells-Driven Refactoring) + +规约驱动开发(SDD)让业务规约成为 AI 研发的唯一事实源。BDR 是 SDD 在重构领域的等价物——**把代码坏味道当作与 PRD 同级的事实源**。 + +**BDR 铁律:** 没有写进坏味道规约的重构,原则上不准做;识别出坏味道之后,也不允许跳过规约直接开改。 + +BDR 与 SDD 五步同构: +1. 建立**重构宪法**(Constitution)——定义重构第一性原则、标准步骤和流程门禁 +2. AI 扫描代码库,将坏味道写成可验收的规约条目(`badsmells.md`) +3. 根据规约分解任务(`tasks.md`) +4. 通过分析环节(`analysis.md`)做差分检查 +5. 按标准步骤执行重构 + +## OpenMole 框架 + +开源地址:https://github.com/agiledon/openmole + +将 BDR 封装为跨平台 Agent Plugin 框架,通过 npm 包 `openmole` 分发。 + +**安装:** `npm install -g openmole`,然后在目标项目中执行 `openmole init` + +**支持的 IDE(7种):** +| IDE | 表现形式 | +|-----|---------| +| Cursor | `.cursor/skills/` + `.cursor/commands/` + 用户级 symlink | +| OpenCode | `opencode.json` 注册 `.opencode/plugins/openmole.js` | +| Claude Code | 用户级 `~/.claude/plugins/local/openmole` symlink | +| Codex | 项目 `plugins/openmole` symlink + marketplace 注册 | +| Gemini CLI | `.gemini/skills/`、`.gemini/commands/` | +| Kiro | `.kiro/skills/`、`.kiro/commands/` | +| Qoder | `.qoder/skills/`、`.qoder/commands/` | + +**工作区结构:** +``` +openmole/ +├── config.yaml # current_change · installed_ides +└── changes/ + ├── / + │ ├── badsmells.md + │ ├── tasks.md + │ └── analysis.md + └── archive/ +``` + +### 五个阶段 + +1. **Explore**(`mole:explore`)——系统性地识别代码坏味道,按元规约格式写入 `badsmells.md` +2. **Plan**(`mole:plan`)——将坏味道分解为可执行的重构任务,输出 `tasks.md` +3. **Verify**(`mole:verify`)——差分检查,确保规约与任务一致 +4. **Apply**(`mole:apply`)——按任务顺序逐项执行重构,每项经用户确认 +5. **Archive**(`mole:archive`)——归档 + +## 实际验证:roncoo-pay(Java 在线支付系统) + +扫描发现 **32 条坏味道**,按类别: + +- **重复代码(8条)**:BaseController 4 份 90% 相同、ConfigUtil 6 份相同模式、枚举 5 份 copy-paste 等 +- **大型类和方法(4条)**:DateUtils 1486 行、God Class 1532 行承担 8+ 职责等 +- **耦合问题(4条)**:DAO 层越权、Spring Bean 绕过 DI 等 +- **异常处理(4条)**:异常吞没返回 null、fail-silent、e.printStackTrace() +- **不良实践(7条)**:public static 可变字段、SimpleDateFormat 线程不安全、sun.misc API 等 +- **面向对象问题(3条)**:贫血领域模型、字段注入等 +- **安全问题(2条)**:MD5 密码哈希、敏感信息泄露 + +分解为 **31 个重构任务**,分 9 个阶段执行(从快速清理→异常修复→配置规范化→重复代码消除→大型重构→耦合修复→领域模型提升→安全加固→代码规范)。 + +## 核心价值 + +1. **可审计**——规约可查、任务可追、测试可验,不再是"AI 改完就忘"的黑箱 +2. **降认知负荷**——面对陌生遗留代码库,AI 自动完成扫描→识别→分解→验证,开发者只需决策和确认 +3. **可持续治理**——change 机制支持定期发起新重构周期,小步迭代持续提升代码质量 + +> "在 AI 时代,若没有一个和代码同权的规约层,'重构'最容易退化成不可审计的聊天。把坏味道上升为重构的'纲',让规约走在前面。"