📐 思维模型手册/相变 · Phase Transition
物理学10 分钟阅读13 天前

03相变 · Phase Transition

统计物理 · 用于发现系统临界点
#system-design𝕏 分享
03

相变 · Phase Transition

统计物理 · 用于发现系统临界点
物理
核心直觉
水在 99°C → 100°C 发生质变,不是量变 Agent 系统在某个临界点发生质变,不是线性退化 关键:找到你系统的相变点,在它之前设置硬限制 永远不要做线性外推("再多加一点应该没问题")
Claude Code 中的三类相变点
变量相变表现典型临界点处理方式
Context 长度 质量从 8/10 突然跌到 3/10 ~60-80% 窗口上限 硬截断 + 摘要压缩
Prompt 复杂度 模型开始幻觉、跳过指令 约 15+ 条规则 分层 prompt + 子 agent
并发 Agent 数量 协调延迟 > 并行收益 通信复杂度 O(n²) 拐点 分组 + 层级编排
Retry 次数 质量不再提升,开始循环 3-5 次 切换策略,不增加次数
代码模式 — 主动探测相变点
phase-detector.ts 压力测试工具
// 主动探测 Context 相变点
async function findPhaseTransition(
  basePrompt: string,
  targetTask: string,
) {
  const results: { tokens: number; quality: number }[] = [];
  const tokenLevels = [1000, 2000, 4000, 8000, 16000, 32000];

  for (const tokens of tokenLevels) {
    const paddedPrompt = padToTokens(basePrompt, tokens);
    const quality = await evaluateQuality(paddedPrompt, targetTask);
    results.push({ tokens, quality });
    
    // 检测相变:质量突然下降超过 30%
    if (results.length > 1) {
      const prev = results[results.length - 2];
      const drop = (prev.quality - quality) / prev.quality;
      
      if (drop > 0.3) {
        console.log(`⚡ 相变点发现: ${tokens} tokens`);
        console.log(`   质量从 ${prev.quality.toFixed(1)} 跌至 ${quality.toFixed(1)}`);
        console.log(`   建议硬限制: ${prev.tokens} tokens`);
        break;
      }
    }
  }

  return results;
}

// 在系统中设置硬限制(不是软限制)
const CONTEXT_HARD_LIMIT = 6000; // 实测相变点 × 0.75

function safeContext(messages: Message[]): Message[] {
  const totalTokens = countTokens(messages);
  if (totalTokens <= CONTEXT_HARD_LIMIT) return messages;
  
  // 不是线性截断,是结构化压缩
  return [
    messages[0],                          // system prompt 保留
    ...summarizeMiddle(messages.slice(1, -4)), // 中间压缩
    ...messages.slice(-4),                  // 最近 4 条保留
  ];
}
⚠ 反模式 发现 10 个 agent 开始变慢,加到 12 个试试。这是线性外推思维。相变之后增加更多只会加剧问题,因为协调成本是 O(n²) 的。
拿走就能用 — 粘贴进你的 CLAUDE.md
CLAUDE.md 系统临界点约束
## System 临界点管理(相变原则)

### 已知的 Claude Code 相变点(设为硬限制)
- Context 长度:超过 60% 窗口上限开始压缩,到 80% 必须截断
- Prompt 规则数:不超过 15 条,超出则拆分为子 agent
- Retry 次数:最多 3 次,超出换策略而不是继续重试
- 并发 Agent 数:超过 5 个必须分组,不能扁平并发

### 设置方式:硬限制,不是软警告
- 不是"快到了提示一下",是"到了就截断/拒绝/换策略"
- 限制值 = 实测相变点 × 0.75(留安全边际)

### 禁止线性外推
- "再加几个 agent 应该没问题" → 协调成本是 O(n²)
- "context 再长一点应该还好" → 相变是突然发生的,不是线性的
← 上一篇PID 控制器 · PID Controller下一篇 →帕累托前沿 · Pareto Front