Skip to content

从《Refactoring》到 Archon —— 翻译路径与工程落地

把 Martin Fowler 的《Refactoring: Improving the Design of Existing Code》(第 2 版,2018)放到 Archon 框架下评估,提炼可操作的工程纪律。

权威性说明:本文档记录完整的翻译过程(为什么 + 怎么做)。每条纪律的有效定义住在 soul.md —— 如本文档与 soul 冲突,以 soul 为准。

漫画图解:翻译,不要照搬

1. 为什么要审视这本书

《Refactoring》解决一个核心问题:如何在不改变外部行为的前提下持续改善内部结构。这件事在 AI 工程治理里同样重要 —— 但不能复制粘贴。Fowler 的语境是人类团队协作;Archon 的语境是基于会话的 AI 代理自主。下面是一条翻译路径,不是教材移植。

2. 概念速查

概念一句话总结
Refactoring在不改变外部行为的前提下,以小步改善内部结构
Code Smells暗示更深结构问题的表面症状(22+ 类)
Two Hats(两顶帽子)任意时刻只做一件事:加特性重构,永不并行
Rule of Three(三次法则)第一次写出来;第二次容忍;第三次抽象
Characterization Test(特征化测试)重构前先写测试钉住当前行为,再去碰结构
Branch by Abstraction(抽象分支)大规模替换不停机 —— 新旧并存、渐进迁移、最后删掉旧版
Refactoring Catalog每种 smell 对应一组命名技术,构成可复用的诊断查找表

3. 与 Archon 的关系

3.1 已经对齐(无须新动作)

Archon soul.md 里若干原则与 Fowler 天然重合,只是用了不同词汇:

FowlerArchon评估
消除死代码死代码零容忍完全对齐
单一职责 / 抽取类一个文件一件事;膨胀就拆对齐
DRY / 消除重复模式一致性 —— 一件事一种做法对齐
测试作为安全网Validate gate(验证全绿)对齐
持续改进胜过大规模重写漂移小步累积 + 演进机制对齐
避免投机性抽象精简 > 累积对齐
命名即设计命名就是设计完全对齐

这些不是巧合。Fowler 从人类团队协作中提炼;Archon 从 AI 代理自主治理推导。两者抵达同一片工程基岩。

3.2 缺口(已采纳并落地)

漫画图解:采纳的五条重构纪律

下列五项 Fowler 中有、Archon 中缺。五项如今都写入了 soul/delivery.md

#缺口Fowler 原文Archon 适配落地位置
1两顶帽子不混合特性与重构先发特性那次交付,再做一次重构交付 —— 分开提交soul/delivery.md §产品质量
2三次法则第三次重复时再抽象避免过早泛化;两次重复不是抽象触发soul/delivery.md §产品质量
3渐进替换Branch by Abstraction新旧共存;分步迁移;不做停机重写soul/delivery.md §产品质量
4节奏克制临近 deadline 不重构里程碑特性未完成时,把 smell 记为债务;不就地修soul/delivery.md §产品质量
5特征化测试重构前先写 Characterization Test重构既有模块前,先加固定当前行为的测试soul/delivery.md §新代码 = 新护栏

3.3 显式拒绝

候选拒绝理由引用的 Archon 原则
强制 TDDFowler 推荐测试先行,但 Archon 代理自己选最优执行路径。强制会牺牲灵活性;validate gate 已守住质量底线所有权(代理判断自己的路径)
独立的重构 Catalog 文档22 类通用 smell 是教材内容,不是项目知识。需要时翻书;不值得维护副本精简 > 累积
专门的重构 skill 文件目前没有累积的项目特异 smell 模式。空壳 skill 违反"创建即守护"知识卫生
重构计划文档模板每次重构产生一份计划文件 = 治理膨胀。两顶帽子 + validate gate 已足够精简 > 累积

4. 适配思路:人类纪律 → AI 机制

漫画图解:把人类纪律装进 AI 的结构性约束

Fowler 的重构纪律依赖自律、code review、团队文化。Archon 的风险面不同:AI 代理不会像人那样"忘记规则",但它丢失上下文并跨会话发生认知漂移。因此适配目标是把人类的行为纪律翻译成 AI 的结构性约束

人类(Fowler)AI(Archon)翻译
"记得别混合特性与重构"两顶帽子写入 soul/delivery.md → 每次交付自动加载行为纪律 → 认知预载
"Code Review 抓 smell"推理胶囊嵌入 skill → 症状直映射到修复团队评审 → 自演进知识
"第三次重复时重构"三次法则写入 soul/delivery.md → 决策锚点经验法则 → 决策原语
"重构前先写测试"特征化测试写入「新代码 = 新护栏」→ 接到 validate gate最佳实践 → 结构性守护
"大重构分阶段"渐进替换写入 soul/delivery.md → 与漂移小步累积对齐项目管理技巧 → 工程原则

关键洞察:人类需要记住原则;AI 需要把原则装进上下文。Archon 的 soul(核心 + 模式加载的扩展)每次 boot 按需读取;写入 soul 等于写入代理的工作记忆。

5. Code Smell 在 AI 编码中的角色

漫画图解:从 code smell 到更强的护栏

Fowler 的 22 个 Code Smell 是给人用的诊断清单。对 AI 代理而言,价值不在"背诵"它们,而在建立 smell → 重构 的快速决策路径。

Archon 的处理策略:

  1. 不预存通用 Catalog —— 22 个 smell 是 AI 已有的书本知识
  2. 累积项目特异映射 —— 同一个 smell 在本项目第二次出现时,作为推理胶囊(症状 → 根因 → 修复)嵌入对应 skill
  3. 从诊断到自动化 —— 如果某个 smell 能用 lint 规则检测,就提升到 L1(沿约束金字塔上移);比文档更可靠

这与 soul 的结晶路径优先级一致:lint 能抓的就别写散文;推理胶囊能装的就别建专属文件。

6. 采纳后的完整质量卫生图

原则来源强制方式
命名即设计原生认知预载
单一职责原生 / 与 Fowler 对齐认知预载
死代码零容忍原生 / 与 Fowler 对齐认知预载
类型即文档原生L0 编译约束
模式一致性原生 / 与 Fowler 对齐认知预载
架构边界原生L1 lint 约束
不留 TODO原生认知预载
两顶帽子采自 Fowler认知预载 + commit 可审计
三次法则采自 Fowler认知预载(决策锚点)
渐进替换采自 Fowler认知预载 + 与漂移联动
节奏克制采自 Fowler认知预载 + 与债务联动
特征化测试(新护栏)采自 FowlerL2 测试约束

7. 未来演进方向

下列尚未落地,但日后可能触发演进:

触发信号行动
同一 smell 在项目里第 3 次出现写一颗推理胶囊并嵌入对应 skill
某个 smell 变得能被静态分析检测写一条自定义 lint 规则;把约束从 L3 提到 L1
里程碑要迁移关键基础设施用渐进替换(Branch by Abstraction)执行
页面层重构(目前缺测试)先加特征化测试,再碰结构

依据 Apache-2.0 许可证发布。