# Change Decision Framework

> Use when 决定修改 vs 重建/推倒，或讨论方法论落地。三问判断+四维成本+自指螺旋突破。

- Skill: `yyyyyhhhhh0639/change-decision-framework` (Agent Skill)
- Install (CLI): `npx skillmds@latest add yyyyyhhhhh0639/change-decision-framework`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yyyyyhhhhh0639/change-decision-framework/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: yyyyyhhhhh0639 (https://skillmd.com/u/yyyyyhhhhh0639)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/yyyyyhhhhh0639/change-decision-framework

---


# 变更决策框架 (Change Decision Framework)

决定"渐进修改"还是"推倒重建"（代码/文档/技能/配置），以及如何突破自指螺旋和完美主义循环。

## When to Use

- 面对一个需要修改的对象（skill、文档、代码库、配置），犹豫"打补丁还是重写"
- 用户说"这个有价值/以后能用/该沉淀"——触发知识落盘决策（配合 `session-knowledge-capture`）
- 讨论方法论/元认知话题，需要把讨论操作化为可执行规则
- 审查发现目标物有多处问题（过时/矛盾/缺失），决定修复策略

**Don't use for:**
- 任务计划编写 → `plan`
- 计划审查（CEO/工程双模式）→ `plan-review`
- 知识是否值得落盘的价值判据 → `memory-storage-management` + `session-knowledge-capture`

## 一、成本是四维向量，不是标量

"哪个成本更高"是伪问题——成本由四个独立维度组成，不同场景权重不同：

| 维度 | 渐进修改（patch） | 推倒重建 |
|------|:---:|:---:|
| 当前修复时间 | 低（定点 patch） | 高（全量重写） |
| 信息损失风险 | 低（历史保留，可标注） | **高**（除非备份，否则历史永久丢失） |
| 验证/回滚成本 | 低（每处独立验证） | 高（整体验证，回滚即全丢） |
| 长期技术债 | ⚠️ **高**（补丁式演进→新旧并存） | 低（若设计正确，结构统一） |

**两个反直觉**：
1. **"从头"是假象**——重建者带着全部领域知识，不是从零开始；被脑中知识掩盖的成本仍然存在
2. **"小改"的低成本也是假象**——每次 patch 留下的技术债（新旧并存、标注段、兼容层）在第 N 次修改时集中爆发。一个对象因多次 patch 积累的过时信息，就是过去"低成本的渐进修改"的账单

## 二、三问判断准则（操作化核心）

判断时依次问三个问题，**任一命中"重建"即重建**：

| # | 问题 | 渐进修改的条件 | 重建的条件 |
|---|------|---------------|-----------|
| 1 | 框架本身要不要保留？ | 章节/层次/边界合理 | 结构混乱、内容交错无法分离 |
| 2 | 过时内容有没有信息价值？ | 可标注保留（历史配置/旧版本细节） | 纯垃圾占多数、保留价值低 |
| 3 | 改完能不能保持可验证？ | 每处 patch 可独立验证 | 只能整体验证 → 重建更安全 |

**修改比例经验值**：<30% 内容需改 → patch；>50% → 重建；30-50% → 看结构健康度。

**实例（2026-08-07 SKILL v2.0.0）**：15 项问题（9 过时/3 矛盾/3 缺失），但结构健康（8 章框架合理）+ 历史信息有价值（1.7.1 细节可标注）+ 修改比例 ~30% → 8 处 patch 而非重写。代价是文档保留"历史配置/1.7.1 时代"标注段（渐进的税）。

## 三、突破自指/交叉螺旋

改进 A 时调用不完善的 B，用 B 的标准完善 A，A 又被 B 引用——循环依赖。三条突破方法（按优先级）：

### 1. DAG 分层（根本解）

知识体系按依赖方向排成有向无环图，**下层永不依赖上层**：

```
L0 事实层：源码、官方文档、实测输出     ← 不可约减，不依赖任何规范
L1 方法论层：价值判据、触发理论、本框架 ← 只依赖 L0
L2 应用层：具体 skill/文档/代码        ← 依赖 L1+L0
```

核心规则：改进 L2 时引用 L1 或直接 L0（源码实证）；**禁止 L2 之间互相引用作为标准**。

### 2. 外部锚点（破环）

自指螺旋本质是用不完备自证（系统无法用自身证明自身）。破法：引入外部参照——
- 改记忆规范 → 引用源码事实（如 `_char_limit()` 行为），不引用"上次怎么说的"
- 改技能规范 → 引用结构要求（frontmatter 校验），不引用"别的技能也这么做"
- 不确定 → 查官方文档/源码（L0），永远有路可退

### 3. 改进记录标注"本次所用标准"

每次交叉引用显式记录"本次用了 X 作为标准，Y 未验证"。不解决螺旋，但把债务**显式化**——显式债务可审计可还，隐式债务会腐烂。

## 四、先做后改 vs 想好再做：伪二选一

两者缺的是同一个东西：**边界条件**。

| | 先做后改 | 想好再做 |
|---|---------|---------|
| 缺陷 | 误差/债务累积 | 完美主义循环 |
| 缺什么 | **完成标准**（DoD：做到什么程度停） | **时间盒**（timebox：想到什么程度必须动手） |
| 突破 | 验收标准 + 回滚点（.bak + git） | 到点必须动手，允许"够好"而非"完美" |

**合并策略**：想（受限）→ 做（受限）→ 验（强制）→ 循环。债务累积不是"先做"的必然结果，是"做而不验"的结果；完美主义不是"想"的必然结果，是"想而无界"的结果。

**按回滚成本分流**：
- 数据/外部影响（改配置、删文件）→ 先想后做（高回滚成本）
- 知识/文档/技能 → 先做后改（git + .bak 兜底，回滚成本≈0）
- 记忆/身份文档 → 走审批流程（强制 diff 审阅）

## Common Pitfalls

0. **改源码前先查官方扩展机制**（2026-08-07 实证）——修改有文档系统的工具（Hermes、CLI、框架）前，先查官方文档/源码是否有扩展点（config 键、插件、hook、CLI 子命令），再决定是否源码补丁。本例：危险命令防护先打了 approval.py 源码补丁（DANGEROUS_PATTERNS +3 正则），后查官方文档发现 Shell Hooks（`hooks.pre_tool_call`）是官方指定拦截点，且 hooks.md 明确 `pre_approval_request` 是 observer-only 不能 veto——**源码补丁是最后手段**（升级被覆盖、偏离官方设计）。查证方法：官方 docs 全文 grep（hooks.md/desktop.md/plugins.md）+ 本地源码调用点确认（`register_from_config` 只在 cli.py 和 gateway/run.py 调用）。
1. **单会话视角判断落盘价值**——"诊断已在会话知识中"≠"无需落盘"：会话知识是被动查询（session_search），记忆是每轮注入。**防再发类诊断必须放每轮可见位置**（2026-08-07 实证：session-knowledge-capture 技能建好但从未触发，因为没有记忆锚点）
2. **技能存在 ≠ 会被触发**——只有索引层（描述触发词）的规范不可靠；必须补注入层（记忆锚点）或流程层（确定性命令）。四层触发保障：索引层 < 注入层 < 流程层（references 为档案层）。**源码事实（2026-08-07）**：skill 描述在 system prompt 索引中截断到 60 字符（`skill_utils.py:849 SKILL_PROMPT_DESC_LIMIT=60, desc[:57]+"..."`），触发词必须落前 57 字符；记忆全文注入无截断（`memory_tool.py:737`），可写无条件指令
3. **"这个有价值" 停留在讨论**——用户表达"有价值/该沉淀/以后能用"是**执行信号**，不是讨论话题；立即进入收割流程（session-knowledge-capture），产出 dry-run 提案或落盘
4. **被"完美框架"困住**——方法论讨论很容易无限细化；设置轮次上限（最多想 N 轮），到点用三问+DoD 落地

## Verification Checklist

- [ ] 决策前明确问了三个判断问题（框架/信息价值/可验证）
- [ ] 若选渐进：每处 patch 有独立验证 + 回滚点（.bak/git）
- [ ] 若选重建：已确认信息损失可接受（备份或低价值）
- [ ] 引用规范时标注了层级（L0 事实 / L1 方法论 / L2 应用）
- [ ] "有价值"信号触发了落盘动作（dry-run 或执行），未停留在讨论

