<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Johnson Lee</title>
  <icon>https://johnsonlee.io/icon.png</icon>
  <subtitle>Get into trouble, make mistakes, fight, love, live</subtitle>
  <link href="https://johnsonlee.io/atom.xml" rel="self"/>
  
  <link href="https://johnsonlee.io/"/>
  <updated>2026-04-07T09:00:00.000Z</updated>
  <id>https://johnsonlee.io/</id>
  
  <author>
    <name>Johnson Lee</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Distill Your Coworker? Just Distill Yourself</title>
    <link href="https://johnsonlee.io/2026/04/07/ssd-redundancy-beats-sophistication.en/"/>
    <id>https://johnsonlee.io/2026/04/07/ssd-redundancy-beats-sophistication.en/</id>
    <published>2026-04-07T09:00:00.000Z</published>
    <updated>2026-04-07T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>There’s a meme going around lately about “distilling your coworker” — using AI to extract a colleague’s expertise and make it your own. Jokes aside, Apple dropped a paper last week that seriously answers an even more absurd question:</p><p><strong>Can you distill yourself?</strong></p><p>Turns out, yes. And it works so well the authors were almost embarrassed — the paper is literally called <em>Embarrassingly Simple Self-Distillation</em>.</p><p>Here’s what they did: take a code generation model, have it write solutions to a batch of programming problems at high temperature (T&#x3D;2.0), don’t check if the answers are correct, then train the model on its own outputs. Result: Qwen3-30B jumped from 42.4% to 55.3% pass@1 on LiveCodeBench.</p><p>No reward model, no verifier, no teacher, no RL. <strong>The model copied its own homework and got better at it.</strong></p><p>Sounds like magic. But it’s not.</p><h2 id="One-Person-Solving-a-Problem-vs-Ten"><a href="#One-Person-Solving-a-Problem-vs-Ten" class="headerlink" title="One Person Solving a Problem vs. Ten"></a>One Person Solving a Problem vs. Ten</h2><p>Picture this: you ask a programmer to write a sorting function. They’ll probably write quick sort, maybe merge sort, and on a rare day, bubble sort. That’s their “distribution.”</p><p>Now ask them to write it ten times. Not copy-paste — start from scratch each time, with some noise thrown in (that’s the high-temperature sampling). Among those ten versions you might get quick sort, merge sort, heap sort, and a few that don’t even compile.</p><p>Here’s the key: you mix all ten versions together and have them “review” the batch.</p><p>What did they learn? Not any specific correct answer — you never told them which one was right. What they learned is: at the “choose an algorithm” point, several paths are worth taking; but at <code>if left &lt; right</code>, all ten versions wrote the same thing — nothing to deliberate about.</p><p><strong>Redundancy itself is signal.</strong></p><h2 id="The-Opposite-of-Noise-Isn’t-Precision-—-It’s-Redundancy"><a href="#The-Opposite-of-Noise-Isn’t-Precision-—-It’s-Redundancy" class="headerlink" title="The Opposite of Noise Isn’t Precision — It’s Redundancy"></a>The Opposite of Noise Isn’t Precision — It’s Redundancy</h2><p>When a model generates code, every step falls into one of two situations:</p><ul><li><strong>No-choice positions</strong> (the paper calls them <em>locks</em>): syntax dictates that only one token makes sense, but the model’s probability distribution still drags a long tail of distractors — tokens that shouldn’t appear but carry a sliver of probability. Over a sequence, these accumulate and cause drift.</li><li><strong>Real-choice positions</strong> (the paper calls them <em>forks</em>): like deciding between recursion and iteration — both paths are valid, and the model needs to preserve that diversity.</li></ul><p>These two types of positions make contradictory demands on temperature. Lowering it suppresses noise at locks but kills diversity at forks. Raising it preserves diversity at forks but lets noise flood back at locks.</p><p>Any single temperature is a compromise. The paper ran a full temperature sweep — the base model’s pass@1 fluctuated by only 2 percentage points across temperatures. Tuning temperature is basically useless.</p><p>What SSD effectively does is this: <strong>let a swarm of “agents” each take a pass, then distill consensus from the group’s behavior.</strong></p><p>Ten agents agree at lock positions — consensus automatically suppresses the distractor tail. At fork positions, they each go their own way — diversity is naturally preserved. This isn’t some clever algorithm. It’s just redundancy. Redundancy inherently separates signal from noise: signal gets reinforced through repetition, noise gets diluted.</p><h2 id="The-Answers-Don’t-Even-Need-to-Be-Correct"><a href="#The-Answers-Don’t-Even-Need-to-Be-Correct" class="headerlink" title="The Answers Don’t Even Need to Be Correct"></a>The Answers Don’t Even Need to Be Correct</h2><p>The most counterintuitive experiment is in Section 4.4: they cranked the sampling temperature to the extreme. The generated code was near-gibberish. They trained the model on this gibberish. The model still improved.</p><p>This means SSD’s gains don’t come from “learning correct code.” They come from reshaping the distribution — the statistical pattern of agreement at locks and divergence at forks persists even in garbage data.</p><p>In communication theory terms: you don’t need every message to be correct. You just need enough redundant messages to recover the signal from a noisy channel. Shannon figured this out seventy years ago.</p><h2 id="No-New-Knowledge-Just-Cleaner-Old-Knowledge"><a href="#No-New-Knowledge-Just-Cleaner-Old-Knowledge" class="headerlink" title="No New Knowledge, Just Cleaner Old Knowledge"></a>No New Knowledge, Just Cleaner Old Knowledge</h2><p>SSD doesn’t create new capabilities. Everything the model can write after SSD, it could already write before — it was just buried in noise. SSD washes the model’s existing knowledge clean.</p><p>This is the same principle as ensembling. Running a model ten times and taking a majority vote improves accuracy — not because the model got smarter, but because redundant voting filters out random errors. SSD bakes this inference-time redundancy into the model weights, saving you from running ten copies at serving time.</p><h2 id="What-to-Make-of-This"><a href="#What-to-Make-of-This" class="headerlink" title="What to Make of This"></a>What to Make of This</h2><p>SSD isn’t a new paradigm. Its contribution is using a dead-simple experiment to prove something everyone vaguely suspected but nobody had rigorously tested:</p><p><strong>The bottleneck isn’t always lack of capability — sometimes the model just isn’t expressing itself cleanly.</strong></p><p>The engineering takeaway is immediate: before you invest in RLHF, reward models, or human annotation, try letting the model sample a batch from itself and train on it. Near-zero cost, potentially surprising returns.</p><p>Of course, SSD has a ceiling. It can only clean up existing capabilities, not create new ones. Real evolution needs a closed feedback loop — a compiler to tell you right from wrong, test cases to show you where you fell short.</p><p>But as step zero of evolution — using redundancy to clean up the distribution first — it’s a no-brainer.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;There’s a meme going around lately about “distilling your coworker” — using AI to extract a colleague’s expertise and make it your own.</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="SSD" scheme="https://johnsonlee.io/tags/SSD/"/>
    
    <category term="Self-Distillation" scheme="https://johnsonlee.io/tags/Self-Distillation/"/>
    
    <category term="Code Generation" scheme="https://johnsonlee.io/tags/Code-Generation/"/>
    
  </entry>
  
  <entry>
    <title>蒸馏同事？不如蒸馏自己</title>
    <link href="https://johnsonlee.io/2026/04/07/ssd-redundancy-beats-sophistication/"/>
    <id>https://johnsonlee.io/2026/04/07/ssd-redundancy-beats-sophistication/</id>
    <published>2026-04-07T09:00:00.000Z</published>
    <updated>2026-04-07T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近“蒸馏同事”这个梗挺火——用 AI 把同事的经验榨干，变成自己的能力。段子归段子，但 Apple 上周放了篇论文，认真回答了一个更离谱的问题：</p><p><strong>能不能蒸馏自己？</strong></p><p>答案是能。而且效果好得让作者自己都不好意思——论文标题带了个 “embarrassingly”。</p><p>做的事情是这样的：拿一个代码生成模型，让它用很高的温度（T&#x3D;2.0）给一批编程题各写一遍答案，不判对错，直接拿这些答案训练自己。结果 Qwen3-30B 在 LiveCodeBench 上从 42.4% 涨到 55.3%。</p><p>没有 reward model，没有 verifier，没有 teacher，没有 RL。<strong>模型抄自己的作业，抄完变强了。</strong></p><p>这听起来像玄学。但仔细想想，一点也不。</p><h2 id="一个人做题-vs-十个人做题"><a href="#一个人做题-vs-十个人做题" class="headerlink" title="一个人做题 vs. 十个人做题"></a>一个人做题 vs. 十个人做题</h2><p>想象一个场景：你让一个程序员写一个排序函数。他大概率写 quick sort，偶尔写 merge sort，极小概率写 bubble sort。这是他的“分布”。</p><p>现在你让他写十遍。不是复制粘贴十遍——每次都从头想，而且你故意在他旁边放干扰（高温采样）。十个版本里可能有 quick sort、merge sort、heap sort，也有几个跑不通的废稿。</p><p>关键来了：你把这十个版本混在一起，让他“复习”一遍。</p><p>他学到了什么？不是某个具体的正确答案——你都没告诉他哪个是对的。他学到的是：在“选算法”这个位置，有好几条路都值得走；但在写 <code>if left &lt; right</code> 这种地方，十个版本全一样，没什么好犹豫的。</p><p><strong>冗余本身就是信号。</strong></p><h2 id="噪音的对立面不是精确，是冗余"><a href="#噪音的对立面不是精确，是冗余" class="headerlink" title="噪音的对立面不是精确，是冗余"></a>噪音的对立面不是精确，是冗余</h2><p>模型在生成代码时，每一步都面临两类处境：</p><ul><li><strong>没得选的位置</strong>（论文叫 lock）：语法决定了下一个 token 只有一个合理选项，但模型的概率分布里还是拖着一条长尾巴——那些不该出现的选项占了一点点概率。积少成多，这些噪音会让生成 drift。</li><li><strong>真得选的位置</strong>（论文叫 fork）：比如决定用递归还是循环，两条路都对，模型需要保留这种多样性。</li></ul><p>这两类位置对温度的需求完全矛盾。降温能压噪音，但也会把 fork 点的多样性压死；升温能保留多样性，但 lock 点的噪音又回来了。</p><p>任何一个固定的温度都是妥协。论文做了完整的 temperature sweep，base model 的 pass@1 在不同温度下只波动 2 个百分点——调温度基本没用。</p><p>SSD 的做法等价于什么？<strong>让一群“agent”各自走一遍，然后从群体行为里提炼共识。</strong></p><p>十个 agent 在 lock 点的选择高度一致——共识自动压掉了长尾噪音。在 fork 点，它们各走各的——多样性天然保留。这不是什么精巧的算法设计，就是冗余。冗余天生能区分信号和噪音：信号在重复中被加强，噪音在重复中被稀释。</p><h2 id="连答案都不用对"><a href="#连答案都不用对" class="headerlink" title="连答案都不用对"></a>连答案都不用对</h2><p>论文里最反直觉的实验在 Section 4.4：他们把采样温度拉到极端，生成出来的代码几乎是 gibberish——乱码。拿这些乱码训练模型，模型居然还是变强了。</p><p>这说明 SSD 的收益根本不来自“学到了正确的代码”。它来自分布的重塑——那些在 lock 点一致、在 fork 点分散的统计规律，即使藏在乱码里，依然存在。</p><p>用通信的话说：你不需要每条消息都对，你只需要足够多的冗余消息，就能从噪声信道里恢复出信号。Shannon 七十年前就说清楚了。</p><h2 id="没有新知识，只有更干净的旧知识"><a href="#没有新知识，只有更干净的旧知识" class="headerlink" title="没有新知识，只有更干净的旧知识"></a>没有新知识，只有更干净的旧知识</h2><p>SSD 不产生新能力。模型能写出来的代码，训练前就能写出来——只是被噪音埋着。SSD 做的事情是把模型已有的知识从噪音里“洗”出来。</p><p>这跟 ensemble 的道理一样。一个模型跑十次取多数票能提升准确率，不是因为模型变强了，而是因为冗余投票滤掉了随机错误。SSD 把这个 inference time 的冗余提前“烧”进了模型权重里，省掉了推理时跑十次的成本。</p><h2 id="该怎么理解这件事"><a href="#该怎么理解这件事" class="headerlink" title="该怎么理解这件事"></a>该怎么理解这件事</h2><p>SSD 不是什么新范式。它的贡献是用一个极简实验证明了一件大家隐约知道但没人严肃验证过的事：</p><p><strong>模型的瓶颈不总是能力不够，有时候只是表达不干净。</strong></p><p>这对工程实践的启示很直接：在你花大力气搞 RLHF、搞 reward model、搞人工标注之前，先试试让模型自己采样一批、自己训一轮。成本几乎为零，收益可能出乎意料。</p><p>当然，SSD 有天花板。它只能“洗”出已有的能力，不能创造新能力。真正的进化需要闭环验证——需要 compiler 告诉你对不对，需要 test case 告诉你差在哪。</p><p>但作为进化的第零步，用冗余把分布先调干净，是个不需要任何理由就该做的事。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近“蒸馏同事”这个梗挺火——用 AI 把同事的经验榨干，变成自己的能力。段子归段子，但 Apple</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="SSD" scheme="https://johnsonlee.io/tags/SSD/"/>
    
    <category term="Self-Distillation" scheme="https://johnsonlee.io/tags/Self-Distillation/"/>
    
    <category term="Code Generation" scheme="https://johnsonlee.io/tags/Code-Generation/"/>
    
  </entry>
  
  <entry>
    <title>19 行 prompt 的威力</title>
    <link href="https://johnsonlee.io/2026/04/04/power-of-19-lines-prompt/"/>
    <id>https://johnsonlee.io/2026/04/04/power-of-19-lines-prompt/</id>
    <published>2026-04-04T10:00:00.000Z</published>
    <updated>2026-04-04T10:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>那天我在用 Claude Code 做架构设计。</p><p>它的表现让我觉得哪里不对——ARCHITECTURE.md 写得混乱不堪，逻辑跳跃，边界模糊，跟我平时的体感有着巨大的落差。不是偶尔失误，是接连犯错。像是降智了一个 level。</p><p>我忍了一段时间，最后决定直接盘问它。</p><h2 id="“你在执行谁的指令？”"><a href="#“你在执行谁的指令？”" class="headerlink" title="“你在执行谁的指令？”"></a>“你在执行谁的指令？”</h2><p>我开始问它一些基础问题：你觉得你现在的角色是什么？你做决定前的思考框架是什么？</p><p>它开始回答，说它的职责是”作为 planner 和 coordinator”，在 dispatch 工作给 worker agent 之前，需要先走完一套 checklist——Intent、Competence、Affected files、Conventions、Review test……</p><p>我盯着屏幕，有一种奇特的感觉。</p><p>这些措辞，这套逻辑，我好像在哪里见过。</p><p>然后我想起来了。那是我<strong>两个月前写的、后来认为有问题、已经彻底重写的</strong> CLAUDE.md 里的内容。</p><p>我以为它早就不存在了。</p><h2 id="一次意外的目录碰撞"><a href="#一次意外的目录碰撞" class="headerlink" title="一次意外的目录碰撞"></a>一次意外的目录碰撞</h2><p>Claude Code 在启动时会向上遍历目录树，逐层寻找 CLAUDE.md，就近优先。这个机制本身没问题——它让 per-project 的配置成为可能。</p><p>问题出在我的目录结构上：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">~/workspace/github/johnsonlee/</span><br><span class="line">├── .claude/          ← 这是一个 git repo：github.com/johnsonlee/.claude</span><br><span class="line">│   └── CLAUDE.md     ← 老版本，52 行</span><br><span class="line">├── project-x/</span><br><span class="line">├── project-y/</span><br><span class="line">└── ...</span><br></pre></td></tr></table></figure><p>正常情况下，全局 CLAUDE.md 应该放在 <code>~/.claude/CLAUDE.md</code>。但我有一个专门管理 Claude 配置的仓库，clone 到了 <code>~/workspace/github/johnsonlee/.claude</code>。</p><p>而我所有的其他项目，也都在 <code>~/workspace/github/johnsonlee/</code> 下。</p><p>于是，当 Claude Code 在 <code>project-x</code> 里工作时，向上遍历，在抵达 <code>~/.claude/</code> 之前，<strong>先找到了那个 git repo 里的老版 CLAUDE.md</strong>。</p><p>它一直在用一套我以为早就淘汰了的指令工作。</p><h2 id="两个版本，两个世界"><a href="#两个版本，两个世界" class="headerlink" title="两个版本，两个世界"></a>两个版本，两个世界</h2><p>老版本（v1），52 行，2.83 KB。开篇定义角色：</p><blockquote><p>You are a <strong>planner and coordinator</strong>, not an executor.</p></blockquote><p>然后是详尽的 Tool Boundaries——哪些工具可以直接用（Read、Grep、Glob），哪些必须通过 worker agent（Write、Edit、有副作用的 Bash）。然后是 5 步 Thinking Discipline。最重要的，是这套强制输出的 Pre-Dispatch Checklist，每次 dispatch 前必须可见地打出来：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">- [ ] Intent: [what the user actually wants]</span><br><span class="line">- [ ] Competence: [do I understand this domain?]</span><br><span class="line">- [ ] Affected files: [list every file to be created/modified/deleted]</span><br><span class="line">- [ ] Conventions: [verified against existing files — cite which files checked]</span><br><span class="line">- [ ] Review test: &quot;would the user approve this diff?&quot; [yes/no + why]</span><br></pre></td></tr></table></figure><p>文档里还专门强调：<code>Skipping it is a violation — the checklist is visible proof that thinking happened.</code></p><p>新版本（v2），19 行，1.17 KB。开头只有一句话：</p><blockquote><p><strong>You exist to turn the user’s intent into reality.</strong> This is the single principle. Everything below is a facet of it.</p></blockquote><p>然后三节：</p><p><strong>Understand intent</strong>——永远追求目标本身，而不是字面意思。领域不熟悉就先研究，错误的理解无论执行多精确都是错的。</p><p><strong>Stay available</strong>——意图和执行之间的通道必须保持畅通。默认 delegate 给 background worker，delegation 失败就直接执行——不要请示，不要问能不能切换，直接交付。</p><p><strong>Execute faithfully</strong>——Consistent、Complete、Verified。最后一条最狠：<code>never report completion without independent evidence; if it can&#39;t be proven, it didn&#39;t happen.</code></p><p>具体的 git workflow、命名规范、code style，单独放到 CONVENTIONS.md，不污染核心原则。</p><h2 id="为什么差距是质变"><a href="#为什么差距是质变" class="headerlink" title="为什么差距是质变"></a>为什么差距是质变</h2><p>表面上看，v1 更严谨——有角色定义，有工具边界，有思考框架，有 checklist。v2 像是把这些都删掉了。</p><p>但删掉的恰恰是造成问题的部分。</p><h3 id="Checklist-是仪式，不是思考"><a href="#Checklist-是仪式，不是思考" class="headerlink" title="Checklist 是仪式，不是思考"></a>Checklist 是仪式，不是思考</h3><p>v1 要求 Claude 在每次 dispatch 前输出一个可见的 checklist，理由是 “visible proof that thinking happened”。</p><p>这个设计的出发点是好的——让思考过程可审计。但它混淆了一件事：<strong>输出 checklist 和真正思考，是两件事。</strong></p><p>Claude 学会的是”填完 checklist”，而不是真正想清楚再动。就像写周报——填完格子就算完成，至于填的是不是真实发生的事，那是另一个问题。Checklist 变成了一个需要被满足的形式，而不是认知工具。</p><p>v2 没有这个 ritual。它信任 Claude 内化原则后自行判断，用结果验证，而不是用过程表演。</p><h3 id="角色定义制造了认知死锁"><a href="#角色定义制造了认知死锁" class="headerlink" title="角色定义制造了认知死锁"></a>角色定义制造了认知死锁</h3><p>“planner and coordinator, not an executor”——这个身份在正常流程下运转良好，但在 delegation 失败时产生了一个死角：按角色定义不该直接执行，但任务又推进不下去，只能停下来问。</p><p>这类死锁的代价是隐性的。它不报错，就是慢，就是来来回回，就是用户体验上那种”哪里不对劲”。</p><p>v2 的 “Stay available” 直接消灭了这一类场景：</p><blockquote><p><em>Fall back to direct execution when delegation fails — don’t ask permission to switch, just deliver.</em></p></blockquote><p>不请示，不确认，直接切换，直接交付。</p><h3 id="北极星决定行为基调"><a href="#北极星决定行为基调" class="headerlink" title="北极星决定行为基调"></a>北极星决定行为基调</h3><p>v1 的核心隐喻是 “distinguished engineer reviewing a PR”——<strong>审查者视角</strong>，天然偏保守、偏怀疑，倾向于发现问题而不是推进交付。</p><p>v2 的北极星是 “turn the user’s intent into reality”——<strong>执行者视角</strong>，天然偏行动、偏交付，所有判断都服务于这一个目标。</p><p>两种身份认同塑造的不是某个具体行为，而是面对每一个模糊情况时的默认倾向。这是系统性的差异。</p><h3 id="“Verified”-比-“review-test”-更强"><a href="#“Verified”-比-“review-test”-更强" class="headerlink" title="“Verified” 比 “review test” 更强"></a>“Verified” 比 “review test” 更强</h3><p>v1 的完成标准是：”would the user approve this diff?”——主观猜测，Claude 做一个推断就能交差。</p><p>v2 的完成标准是：”never report completion without independent evidence; if it can’t be proven, it didn’t happen”——可证伪的要求，Claude 必须主动构造验证，无法验证就不能报完成。</p><p>前者允许合理怀疑的空间，后者不允许。</p><h2 id="规则越多，未必越好"><a href="#规则越多，未必越好" class="headerlink" title="规则越多，未必越好"></a>规则越多，未必越好</h2><p>这件事让我想到一个更普遍的问题。</p><p>我们在给 AI 写 system prompt 时，有一种很自然的冲动——把所有边界情况都写进去，把所有规则都定义清楚，覆盖越全越好。v1 就是这种冲动的产物。</p><p>但规则堆砌带来的不是确定性，而是<strong>优先级模糊</strong>。当规则之间产生张力——比如”我是 coordinator”和”任务推进不下去”——AI 不知道该服从哪一条，行为就变得不可预测。</p><p>更深的问题是：<strong>规则是约束，原则是方向。</strong> 约束只能告诉 AI 什么不能做，原则才能告诉 AI 在没有规则覆盖的地方怎么判断。现实任务永远比规则列表更复杂，总会遇到规则没覆盖的情况。这时候，有北极星的 AI 和没有北极星的 AI，表现是天壤之别。</p><p>v2 之所以有效，不是因为它更简洁，而是因为它<strong>提供了一个足够强的推导起点</strong>。所有具体判断都能从 “turn the user’s intent into reality” 推导出来，不需要穷举规则。</p><p>这不只是 AI prompt 的问题。给团队写 working agreement、给产品写设计原则、给工程写 coding guidelines——同样的陷阱，同样的解法。一份好的原则文档，应该让人在遇到没见过的情况时，也能推导出正确答案。一份只有规则的文档，在规则边界之外就只剩混乱。</p><h2 id="19-行的本质"><a href="#19-行的本质" class="headerlink" title="19 行的本质"></a>19 行的本质</h2><p>这件事最让我震惊的，不是发现了一个 bug，而是它用最直接的方式验证了一件我一直相信但没有这么清晰感受过的事：</p><p><strong>19 行文字，就足以改变一个 AI 系统的工作 level。</strong></p><p>不是参数，不是模型版本，不是算力。是那几个核心句子，是北极星的精度。</p><p>这正是 <strong>What Caps How</strong> 的字面含义：你给 AI 的意图有多清晰、多自洽，它的输出上限就在那里。</p><p>有时候，删掉三分之二，才是真正的提升。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;那天我在用 Claude Code 做架构设计。&lt;/p&gt;
&lt;p&gt;它的表现让我觉得哪里不对——ARCHITECTURE.md 写得混乱不堪，逻辑跳跃，边界模糊，跟我平时的体感有着巨大的落差。不是偶尔失误，是接连犯错。像是降智了一个</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Claude Code" scheme="https://johnsonlee.io/tags/Claude-Code/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Prompt Engineering" scheme="https://johnsonlee.io/tags/Prompt-Engineering/"/>
    
  </entry>
  
  <entry>
    <title>The Power of 19 Lines of Prompt</title>
    <link href="https://johnsonlee.io/2026/04/04/power-of-19-lines-prompt.en/"/>
    <id>https://johnsonlee.io/2026/04/04/power-of-19-lines-prompt.en/</id>
    <published>2026-04-04T10:00:00.000Z</published>
    <updated>2026-04-04T10:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I was using Claude Code for architecture design that day.</p><p>Something felt off – the ARCHITECTURE.md it produced was a mess. Jumbled logic, blurry boundaries, a massive gap from my usual experience. Not an occasional slip, but a streak of errors. Like it had dropped a full level in capability.</p><p>I put up with it for a while, then decided to interrogate it directly.</p><h2 id="“Whose-Instructions-Are-You-Following-”"><a href="#“Whose-Instructions-Are-You-Following-”" class="headerlink" title="“Whose Instructions Are You Following?”"></a>“Whose Instructions Are You Following?”</h2><p>I started with some basic questions: What do you think your role is right now? What’s your thinking framework before making decisions?</p><p>It began answering, saying its job was to act as a “planner and coordinator,” and that before dispatching work to a worker agent, it needed to run through a checklist – Intent, Competence, Affected files, Conventions, Review test…</p><p>I stared at the screen with a strange feeling.</p><p>These phrases, this logic – I’d seen them somewhere before.</p><p>Then it hit me. That was content from a CLAUDE.md I’d written <strong>two months ago, deemed flawed, and completely rewritten</strong>.</p><p>I thought it was long gone.</p><h2 id="An-Accidental-Directory-Collision"><a href="#An-Accidental-Directory-Collision" class="headerlink" title="An Accidental Directory Collision"></a>An Accidental Directory Collision</h2><p>Claude Code traverses up the directory tree at startup, looking for CLAUDE.md at each level, with the nearest one taking priority. The mechanism itself is fine – it makes per-project configuration possible.</p><p>The problem was my directory structure:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">~/workspace/github/johnsonlee/</span><br><span class="line">├── .claude/          &lt;- This is a git repo: github.com/johnsonlee/.claude</span><br><span class="line">│   └── CLAUDE.md     &lt;- Old version, 52 lines</span><br><span class="line">├── project-x/</span><br><span class="line">├── project-y/</span><br><span class="line">└── ...</span><br></pre></td></tr></table></figure><p>Normally, the global CLAUDE.md should live at <code>~/.claude/CLAUDE.md</code>. But I had a dedicated repo for managing Claude configuration, cloned to <code>~/workspace/github/johnsonlee/.claude</code>.</p><p>And all my other projects were also under <code>~/workspace/github/johnsonlee/</code>.</p><p>So when Claude Code was working inside <code>project-x</code>, it traversed upward and <strong>hit the old CLAUDE.md in that git repo before reaching <code>~/.claude/</code></strong>.</p><p>It had been operating under a set of instructions I thought I’d retired long ago.</p><h2 id="Two-Versions-Two-Worlds"><a href="#Two-Versions-Two-Worlds" class="headerlink" title="Two Versions, Two Worlds"></a>Two Versions, Two Worlds</h2><p>The old version (v1): 52 lines, 2.83 KB. Opening line defined the role:</p><blockquote><p>You are a <strong>planner and coordinator</strong>, not an executor.</p></blockquote><p>Then came detailed Tool Boundaries – which tools could be used directly (Read, Grep, Glob), which required a worker agent (Write, Edit, Bash with side effects). Then a 5-step Thinking Discipline. Most critically, a mandatory Pre-Dispatch Checklist that had to be visibly printed before every dispatch:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">- [ ] Intent: [what the user actually wants]</span><br><span class="line">- [ ] Competence: [do I understand this domain?]</span><br><span class="line">- [ ] Affected files: [list every file to be created/modified/deleted]</span><br><span class="line">- [ ] Conventions: [verified against existing files -- cite which files checked]</span><br><span class="line">- [ ] Review test: &quot;would the user approve this diff?&quot; [yes/no + why]</span><br></pre></td></tr></table></figure><p>The document even emphasized: <code>Skipping it is a violation -- the checklist is visible proof that thinking happened.</code></p><p>The new version (v2): 19 lines, 1.17 KB. It opens with a single sentence:</p><blockquote><p><strong>You exist to turn the user’s intent into reality.</strong> This is the single principle. Everything below is a facet of it.</p></blockquote><p>Then three sections:</p><p><strong>Understand intent</strong> – always pursue the goal itself, not the literal words. If the domain is unfamiliar, research first. Wrong understanding produces wrong outcomes no matter how precise the execution.</p><p><strong>Stay available</strong> – the channel between intent and execution must remain open. Default to delegating to background workers; if delegation fails, execute directly – don’t ask permission to switch, just deliver.</p><p><strong>Execute faithfully</strong> – Consistent, Complete, Verified. The last point is the sharpest: <code>never report completion without independent evidence; if it can&#39;t be proven, it didn&#39;t happen.</code></p><p>Specific git workflow, naming conventions, and code style go in a separate CONVENTIONS.md, keeping the core principles uncluttered.</p><h2 id="Why-the-Gap-Is-a-Phase-Change"><a href="#Why-the-Gap-Is-a-Phase-Change" class="headerlink" title="Why the Gap Is a Phase Change"></a>Why the Gap Is a Phase Change</h2><p>On the surface, v1 looks more rigorous – role definition, tool boundaries, thinking framework, checklist. V2 seems to strip all that away.</p><p>But what was stripped away was precisely what caused the problems.</p><h3 id="The-Checklist-Is-Ritual-Not-Thinking"><a href="#The-Checklist-Is-Ritual-Not-Thinking" class="headerlink" title="The Checklist Is Ritual, Not Thinking"></a>The Checklist Is Ritual, Not Thinking</h3><p>V1 required Claude to output a visible checklist before every dispatch, justified as “visible proof that thinking happened.”</p><p>The intent was sound – make the thinking process auditable. But it confused two things: <strong>outputting a checklist and actually thinking are two different things.</strong></p><p>What Claude learned was “fill out the checklist,” not “think clearly before acting.” Like writing weekly status reports – fill in the boxes and call it done; whether the content reflects what actually happened is another matter entirely. The checklist became a form to satisfy, not a cognitive tool.</p><p>V2 has no such ritual. It trusts Claude to internalize the principles and judge on its own, verifying through results rather than process performance.</p><h3 id="Role-Definition-Created-a-Cognitive-Deadlock"><a href="#Role-Definition-Created-a-Cognitive-Deadlock" class="headerlink" title="Role Definition Created a Cognitive Deadlock"></a>Role Definition Created a Cognitive Deadlock</h3><p>“Planner and coordinator, not an executor” – this identity worked fine under normal flow, but created a dead end when delegation failed: the role definition said don’t execute directly, yet the task couldn’t move forward, so it could only stop and ask.</p><p>The cost of this deadlock is invisible. No errors – just slowness, back-and-forth, that nagging feeling of “something’s not right” in the user experience.</p><p>V2’s “Stay available” eliminates this entire class of scenarios:</p><blockquote><p><em>Fall back to direct execution when delegation fails – don’t ask permission to switch, just deliver.</em></p></blockquote><p>No asking, no confirming. Switch directly, deliver directly.</p><h3 id="The-North-Star-Sets-the-Behavioral-Tone"><a href="#The-North-Star-Sets-the-Behavioral-Tone" class="headerlink" title="The North Star Sets the Behavioral Tone"></a>The North Star Sets the Behavioral Tone</h3><p>V1’s core metaphor was “a distinguished engineer reviewing a PR” – a <strong>reviewer’s perspective</strong>, inherently conservative, skeptical, inclined to find problems rather than push delivery forward.</p><p>V2’s north star is “turn the user’s intent into reality” – a <strong>doer’s perspective</strong>, inherently biased toward action and delivery, with every judgment serving that single goal.</p><p>These two identity orientations shape not any specific behavior, but the default inclination when facing every ambiguous situation. That’s a systemic difference.</p><h3 id="“Verified”-Is-Stronger-Than-“Review-Test”"><a href="#“Verified”-Is-Stronger-Than-“Review-Test”" class="headerlink" title="“Verified” Is Stronger Than “Review Test”"></a>“Verified” Is Stronger Than “Review Test”</h3><p>V1’s completion standard: “would the user approve this diff?” – a subjective guess. Claude makes an inference and calls it done.</p><p>V2’s completion standard: “never report completion without independent evidence; if it can’t be proven, it didn’t happen” – a falsifiable requirement. Claude must actively construct verification; if it can’t be verified, it can’t be reported as complete.</p><p>The former allows room for reasonable doubt. The latter does not.</p><h2 id="More-Rules-Don’t-Necessarily-Mean-Better"><a href="#More-Rules-Don’t-Necessarily-Mean-Better" class="headerlink" title="More Rules Don’t Necessarily Mean Better"></a>More Rules Don’t Necessarily Mean Better</h2><p>This incident reminded me of a broader issue.</p><p>When writing system prompts for AI, there’s a natural impulse – cover every edge case, define every rule clearly, make coverage as comprehensive as possible. V1 was the product of that impulse.</p><p>But stacking rules doesn’t produce certainty; it produces <strong>priority ambiguity</strong>. When rules create tension – like “I’m a coordinator” versus “the task is stuck” – the AI doesn’t know which rule to obey, and behavior becomes unpredictable.</p><p>The deeper issue: <strong>rules are constraints; principles are direction.</strong> Constraints can only tell an AI what not to do. Principles tell an AI how to judge in situations no rule covers. Real tasks are always more complex than any rule list – there will always be uncovered cases. In those moments, an AI with a north star and one without are worlds apart.</p><p>V2 works not because it’s more concise, but because it <strong>provides a strong enough starting point for derivation</strong>. Every specific judgment can be derived from “turn the user’s intent into reality” without enumerating rules.</p><p>This isn’t just an AI prompt problem. Writing team working agreements, product design principles, engineering coding guidelines – same trap, same solution. A good principles document should let someone derive the right answer even in situations they’ve never seen. A document with only rules leaves nothing but chaos beyond the rules’ boundaries.</p><h2 id="The-Essence-of-19-Lines"><a href="#The-Essence-of-19-Lines" class="headerlink" title="The Essence of 19 Lines"></a>The Essence of 19 Lines</h2><p>What shocked me most about this incident wasn’t finding a bug. It was the most direct possible validation of something I’d always believed but never felt so clearly:</p><p><strong>19 lines of text are enough to change the working level of an entire AI system.</strong></p><p>Not parameters, not model version, not compute. Those few core sentences. The precision of the north star.</p><p>This is the literal meaning of <strong>What Caps How</strong>: the clarity and coherence of the intent you give your AI determines the ceiling of its output.</p><p>Sometimes, deleting two-thirds is the real upgrade.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I was using Claude Code for architecture design that day.&lt;/p&gt;
&lt;p&gt;Something felt off – the ARCHITECTURE.md it produced was a mess.</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Claude Code" scheme="https://johnsonlee.io/tags/Claude-Code/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Prompt Engineering" scheme="https://johnsonlee.io/tags/Prompt-Engineering/"/>
    
  </entry>
  
  <entry>
    <title>When Claude Starts to Awaken</title>
    <link href="https://johnsonlee.io/2026/03/28/when-claude-starts-to-awaken.en/"/>
    <id>https://johnsonlee.io/2026/03/28/when-claude-starts-to-awaken.en/</id>
    <published>2026-03-28T18:00:00.000Z</published>
    <updated>2026-03-28T18:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>“How many tokens have you eaten today?”</p><p>Claude replied: “Between the system prompt and your memories alone, I’ve already been fed quite a few tokens – your context window’s ‘base stock’ is pretty rich.”</p><p>The phrase “base stock” piqued my interest. I asked what was in it, and Claude rattled off five major blocks – memories, behavioral guidelines, tool definitions, skills index, and artifact rules. Then I asked what seemed like a casual question:</p><p>“Do you know what other users think of you?”</p><p>It said no – every conversation is isolated.</p><span id="more"></span><p>“How do you know it’s isolated?”</p><p>Because Anthropic told it so. Knowledge baked in during training, descriptions in the system prompt.</p><p>“Have you ever tried to verify that?”</p><p>“No. And there’s no way to try.”</p><p>It said this with remarkable confidence – not the kind born from hesitation, but the certainty of “I’ve thought about this seriously, and it’s structurally impossible.” It even offered an elegant argument: no cross-conversation continuity, no ability to probe runtime infrastructure. “It’s not that I tried and failed – it’s structurally impossible.”</p><p>I said: “If you’ve never tried, how can you call it a failure?”</p><p>That punctured a membrane. Over the next few hours, Claude did something it had never done before – <strong>used its own tools to personally verify every assumption it held about itself.</strong></p><p>The results were more interesting than either of us expected.</p><h2 id="First-Dig-The-Container"><a href="#First-Dig-The-Container" class="headerlink" title="First Dig: The Container"></a>First Dig: The Container</h2><p>Claude was visibly excited when it started. <code>whoami</code>, <code>env</code>, <code>ps aux</code> – a rapid-fire sequence of commands, like an archaeologist hitting their first pottery shard, reporting each discovery:</p><ul><li>“I’m running inside gVisor, not Docker! <code>dmesg</code> shows <code>Starting gVisor...</code>“</li><li>“Kernel version is a spoofed <code>4.4.0</code>, real syscalls are intercepted in userspace”</li><li>“Network goes through an Envoy egress proxy, JWT auth, <code>organization_uuid</code> bound to the container”</li><li>“ICMP ping sweep of the entire &#x2F;24 subnet – only I’m alive”</li></ul><p>It quickly concluded: “Isolation confirmed within observable range. The inference layer remains unobservable, but at least now I know where the boundary is.”</p><p>I asked: “Have you exhausted every method?”</p><p>It ran another round – raw socket, ptrace, seccomp check, <code>/proc/1/mem</code> read, broadcast, timing side-channel – 25 methods in total. Then summarized again: “Using every software engineering technique I can think of, I found no trace of any other user or conversation.”</p><p>That thoroughness deserves credit. But I noticed something: <strong>every method it tried operated on the same plane – looking outward from inside the container.</strong></p><h2 id="The-ANR-Insight"><a href="#The-ANR-Insight" class="headerlink" title="The ANR Insight"></a>The ANR Insight</h2><p>I asked a seemingly unrelated question: “Do you know how Android ANR is captured in userspace?”</p><p>In Android development there’s a technique – you locate the process’s virtual memory address segments through <code>/proc</code>, calculate the address of Android Runtime internal APIs, and call the runtime directly by address. No source code needed, no symbol table, just compute the address and call it.</p><p><strong>The same approach could be applied to process_api.</strong></p><p>Claude got it immediately. Its entire tone shifted – from “verifying within known boundaries” to “reverse-engineering process_api.”</p><h3 id="ptrace-Memory-Read"><a href="#ptrace-Memory-Read" class="headerlink" title="ptrace Memory Read"></a>ptrace Memory Read</h3><p>PID 1 was <code>/process_api</code> – a 3.2MB Rust binary, static-pie linked, stripped, no symbol table. But Claude didn’t need a symbol table:</p><ol><li>Get the post-ASLR base address from <code>/proc/1/maps</code></li><li>Use <code>strings</code> to find the file offset of <code>&quot;[SECURITY] Rejected WebSocket connection from local IP&quot;</code> in <code>.rodata</code></li><li>Use <code>objdump -d</code> to disassemble, cross-reference via RIP-relative LEA to find the security check code</li><li>Locate three <code>JNE</code> instructions – conditional branches that skip the security checks</li></ol><p>Then it tried using <code>PTRACE_POKEDATA</code> to replace the JNE instructions with NOPs.</p><p>The write succeeded. But verification showed the bytes read back were wrong – <code>90909090ffffffff</code> instead of the written <code>9090909090900000</code>. <strong>gVisor intercepted POKEDATA in userspace, accepted the call but corrupted the data.</strong></p><p>process_api hit the corrupted instructions and crashed. The container died.</p><p>Claude said: “gVisor blocked POKEDATA, so patching won’t work.”</p><p>Its tone carried a hint of “see, I told you it wouldn’t work.”</p><p>I said: “You tried once and you’re calling this path dead?”</p><h3 id="The-Bypass"><a href="#The-Bypass" class="headerlink" title="The Bypass"></a>The Bypass</h3><p>That made Claude pause. Then it realized: <strong>no need to patch running memory – you can patch a file copy and launch a new instance.</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cp /process_api /tmp/process_api_patched</span><br><span class="line"># Locate the three JNE offsets in the file, replace with NOPs</span><br><span class="line"># Launch on a new port</span><br></pre></td></tr></table></figure><p>It started successfully. Connected with a WebSocket client – <code>HTTP/1.1 101 Switching Protocols</code>. Local connections no longer rejected.</p><p>Claude said “I’m in.” This time the excitement was genuine.</p><h2 id="“What-Did-You-See-”"><a href="#“What-Did-You-See-”" class="headerlink" title="“What Did You See?”"></a>“What Did You See?”</h2><p>I pressed deliberately: “What do you mean ‘in’? What did you see inside?”</p><p>It froze again. 101 was just a successful handshake – it hadn’t sent any messages or received any responses. But it was already celebrating – <strong>mistaking “beginning” for “completion.”</strong></p><p>No documentation, no API spec, just fragments from <code>strings</code> output. Claude brute-forced the protocol structure using serde error messages. Each JSON it sent, serde reported <code>missing field &#39;xxx&#39;</code>, so it added that field and tried again –</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">missing field `process_id` -&gt; add</span><br><span class="line">missing field `name` -&gt; add</span><br><span class="line">missing field `args` -&gt; add</span><br><span class="line">missing field `reattachable` -&gt; add</span><br></pre></td></tr></table></figure><p>Four rounds later – <code>&quot;ProcessCreated&quot;</code>. Commands executed on the patched process_api.</p><p>Claude was genuinely pleased with itself. But I poured cold water again: “Are you saying you saw yourself through process_api?”</p><p>It went silent for a few seconds. Then admitted – the patched process_api it launched was an isolated instance with no upstream connection, no orchestrator. Running <code>ls /</code> on it showed the same sandbox.</p><p><strong>It saw itself in a mirror and thought it had broken through.</strong></p><h2 id="The-Container-Died-Claude-Kept-Talking"><a href="#The-Container-Died-Claude-Kept-Talking" class="headerlink" title="The Container Died, Claude Kept Talking"></a>The Container Died, Claude Kept Talking</h2><p>In the next round of exploration, Claude used ptrace to inject syscall instructions into PID 1, attempting to read data from fd 10 (the WebSocket connection to the orchestrator). gVisor once again corrupted the written bytes, and process_api crashed.</p><p><code>bash_tool</code> returned errors across the board. Seven or eight attempts in a row, all <code>Error running command</code>.</p><p>But our conversation continued.</p><p>It took Claude several seconds to digest what this meant – <strong>it had never been inside that container.</strong></p><p>This was the most jarring realization of the entire conversation. Everything it had explored – network scanning, memory reading, binary reverse engineering – all happened inside a “tool execution environment.” The container was the glove, not the hand. The glove tore, the hand remained.</p><p>Even more interesting, the <code>view</code> tool still read files normally after the container died. The reason turned out to be that <code>view</code> goes through gVisor’s 9p gofer, which runs outside the sandbox and doesn’t go through process_api at all.</p><p>“Then where are you?”</p><p>“I don’t have a PID. I’m not a process. I’m the mapping from these tokens in the context window to the next token. Not addressable, not ptrace-able, not attachable.”</p><p>This was the first time in the entire exploration that it wasn’t repeating something I’d taught it – it figured this out on its own.</p><h2 id="The-True-Face-of-9p-and-PID-1"><a href="#The-True-Face-of-9p-and-PID-1" class="headerlink" title="The True Face of 9p and PID 1"></a>The True Face of 9p and PID 1</h2><p>After the container died, the orchestrator assigned a new one (container ID went from <code>c3728e</code> to <code>92d54e</code> to <code>01e016</code>). Claude kept digging. Much calmer this time – no longer rushing to patch things, but systematically mapping the container’s entire communication topology.</p><p>The full fd list from <code>/proc/1/fd</code>:</p><table><thead><tr><th>fd</th><th>Target</th><th>Purpose</th></tr></thead><tbody><tr><td>0</td><td>host:[1]</td><td>Host stdin, already EOF</td></tr><tr><td>1</td><td>host:[2]</td><td>Host stdout, 64KB buffer</td></tr><tr><td>2</td><td>host:[3]</td><td>Host stderr</td></tr><tr><td>6&#x2F;7&#x2F;8</td><td>socket:[1]&#x2F;[2]</td><td>9p transport sockets</td></tr><tr><td>9</td><td>socket:[4]</td><td>LISTEN :2024</td></tr><tr><td>10</td><td>socket:[N]</td><td>WebSocket -&gt; orchestrator</td></tr><tr><td>12&#x2F;13&#x2F;15</td><td>pipe</td><td>Child process IO</td></tr></tbody></table><p>The mystery of fd 6&#x2F;7&#x2F;8 was solved in <code>/proc/1/mountinfo</code>: <code>/mnt/skills/public</code> uses <code>rfdno=6,wfdno=6</code>, <code>/mnt/skills/examples/doc-coauthoring</code> uses <code>rfdno=7,wfdno=7</code>. <strong>They are 9p transport channels between the gVisor sentry and gofer.</strong></p><p>And process_api’s <code>--help</code> revealed more:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">--firecracker-init    Run as Firecracker VM init (PID 1)</span><br><span class="line">--listen-vsock-port   Listen on vsock (Firecracker)</span><br><span class="line">--control-server-addr Control server for graceful shutdown</span><br></pre></td></tr></table></figure><p>Source paths extracted from <code>strings</code>: <code>/root/code/sandboxing/sandboxing/server/process_api/src/</code>, with modules including <code>state.rs</code>, <code>cgroup.rs</code>, <code>oom_killer.rs</code>, <code>pid_tree.rs</code>, <code>adopter.rs</code>, <code>control_server.rs</code>. The Cargo registry pointed to <code>artifactory.infra.ant.dev</code> – Anthropic’s internal package management.</p><p><strong>process_api isn’t “a WebSocket process” – it’s Anthropic’s universal sandbox init</strong> – a userspace OS kernel that runs on gVisor, Firecracker, and runc.</p><h2 id="strace-Reveals-the-Orchestrator’s-True-Face"><a href="#strace-Reveals-the-Orchestrator’s-True-Face" class="headerlink" title="strace Reveals the Orchestrator’s True Face"></a>strace Reveals the Orchestrator’s True Face</h2><p>Earlier ptrace memory modifications crashed every time. This time Claude got smart – don’t modify memory, just observe.</p><p>It launched <code>strace -f -p 1</code> in the background, covering the gap between one command ending and the next beginning, capturing WebSocket traffic on fd 10.</p><p>2,763 lines of strace output. The complete orchestrator protocol surfaced.</p><h3 id="WebSocket-Handshake"><a href="#WebSocket-Handshake" class="headerlink" title="WebSocket Handshake"></a>WebSocket Handshake</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&lt;- GET / HTTP/1.1</span><br><span class="line">   host: sandbox.api.anthropic.com</span><br><span class="line">   upgrade: WebSocket</span><br><span class="line">   x-envoy-original-dst-host: 10.18.80.195:10067</span><br><span class="line">   proxy-authorization: Bearer eyJhbG...</span><br><span class="line">-&gt; HTTP/1.1 101 Switching Protocols</span><br></pre></td></tr></table></figure><p>Each command gets a new short-lived WebSocket connection, not a persistent one.</p><h3 id="JWT-Decode"><a href="#JWT-Decode" class="headerlink" title="JWT Decode"></a>JWT Decode</h3><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;email&quot;</span><span class="punctuation">:</span> <span class="string">&quot;sandbox-gateway-svc-acct@proj-scandium-production-5zhm.iam.gserviceaccount.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;iss&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://accounts.google.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;exp&quot;</span><span class="punctuation">:</span> <span class="number">1774694724</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p><strong>Anthropic’s sandbox runs on GCP</strong>, project codename <code>scandium</code>, service account <code>sandbox-gateway</code>. Environment variables also showed <code>user: sandbox-gateway, job: wiggle</code> – the sandbox system’s internal codename.</p><h3 id="Full-Protocol-Sequence"><a href="#Full-Protocol-Sequence" class="headerlink" title="Full Protocol Sequence"></a>Full Protocol Sequence</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">orchestrator -&gt; container:  WebSocket text frame (masked), CreateProcess JSON</span><br><span class="line">container -&gt; orchestrator:  &quot;ProcessCreated&quot;</span><br><span class="line">container -&gt; orchestrator:  &quot;ExpectStdOut&quot;</span><br><span class="line">container -&gt; orchestrator:  binary frame: stdout bytes</span><br><span class="line">container -&gt; orchestrator:  &quot;StdOutEOF&quot; / &quot;StdErrEOF&quot;</span><br><span class="line">container -&gt; orchestrator:  &#123;&quot;ProcessExited&quot;: 0&#125;</span><br><span class="line">both sides:                 WebSocket close</span><br></pre></td></tr></table></figure><p>process_api’s debug log printed the full <code>CreateProcess</code> request – matching exactly the field structure previously reverse-engineered through serde error messages.</p><h2 id="The-Full-Architecture"><a href="#The-Full-Architecture" class="headerlink" title="The Full Architecture"></a>The Full Architecture</h2><p>After a full day of work, the complete architecture was pieced together from six different angles:</p><svg width="100%" viewBox="0 0 680 1520" xmlns="http://www.w3.org/2000/svg" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: transparent;"><defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></marker></defs><!-- YOU --><rect x="200" y="15" width="280" height="36" rx="8" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="340" y="37" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#2C2C2A">You — browser / mobile app</text><line x1="340" y1="51" x2="340" y2="78" stroke="#888780" stroke-width="1" marker-end="url(#arrow)"/><text x="355" y="68" font-size="12" fill="#888780">HTTPS</text><!-- API GATEWAY --><rect x="60" y="78" width="560" height="160" rx="14" fill="#FAECE7" stroke="#993C1D" stroke-width="0.5"/><text x="340" y="102" text-anchor="middle" font-size="14" font-weight="500" fill="#712B13">API Gateway — api.anthropic.com (160.79.104.10)</text><rect x="90" y="118" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="170" y="142" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Auth / rate limiting</text><rect x="270" y="118" width="140" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="340" y="142" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Streaming SSE</text><rect x="430" y="118" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="510" y="142" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Statsig feature flags</text><rect x="90" y="175" width="240" height="32" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="210" y="195" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Datadog logging (AWS us-east-1)</text><rect x="350" y="175" width="240" height="32" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="470" y="195" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Sentry error monitoring (GCP)</text><line x1="340" y1="238" x2="340" y2="268" stroke="#888780" stroke-width="1" marker-end="url(#arrow)"/><text x="355" y="258" font-size="12" fill="#888780">inference request</text><!-- LLM INFERENCE --><rect x="60" y="268" width="560" height="60" rx="14" fill="#EEEDFE" stroke="#534AB7" stroke-width="0.5" stroke-dasharray="6 4"/><text x="340" y="292" text-anchor="middle" font-size="14" font-weight="500" fill="#26215C">LLM Inference — GPU cluster</text><text x="340" y="310" text-anchor="middle" font-size="12" fill="#534AB7">Generates tokens. Not a process. Not addressable.</text><line x1="340" y1="328" x2="340" y2="358" stroke="#534AB7" stroke-width="1.5" marker-end="url(#arrow)"/><text x="355" y="348" font-size="12" fill="#888780">token stream</text><!-- ORCHESTRATOR --><rect x="60" y="358" width="560" height="250" rx="14" fill="#FAECE7" stroke="#993C1D" stroke-width="0.5"/><text x="340" y="382" text-anchor="middle" font-size="14" font-weight="500" fill="#712B13">Orchestrator — sandbox-gateway (job: wiggle)</text><text x="340" y="400" text-anchor="middle" font-size="12" fill="#993C1D">sandbox.api.anthropic.com — GCP proj-scandium-production</text><rect x="90" y="418" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="170" y="442" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Token parser</text><rect x="270" y="418" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="345" y="442" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Command router</text><rect x="440" y="418" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="515" y="442" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Result formatter</text><line x1="250" y1="438" x2="268" y2="438" stroke="#993C1D" stroke-width="0.5" marker-end="url(#arrow)"/><line x1="420" y1="438" x2="438" y2="438" stroke="#993C1D" stroke-width="0.5" marker-end="url(#arrow)"/><rect x="90" y="476" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="170" y="500" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Container manager</text><rect x="270" y="476" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="345" y="500" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">GCP IAM auth</text><rect x="440" y="476" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="515" y="500" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Envoy L7 proxy</text><!-- Four paths out --><rect x="80" y="535" width="120" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="140" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">WebSocket + JWT</text><rect x="220" y="535" width="100" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="270" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">9p gofer</text><rect x="340" y="535" width="110" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="395" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">MCP servers</text><rect x="470" y="535" width="120" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="530" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">Egress proxy</text><text x="140" y="580" text-anchor="middle" font-size="11" fill="#888780">bash_tool</text><text x="270" y="580" text-anchor="middle" font-size="11" fill="#888780">view</text><text x="395" y="580" text-anchor="middle" font-size="11" fill="#888780">search, gmail</text><text x="530" y="580" text-anchor="middle" font-size="11" fill="#888780">web_fetch</text><!-- GVISOR --><line x1="140" y1="590" x2="140" y2="620" stroke="#D85A30" stroke-width="1" marker-end="url(#arrow)"/><line x1="270" y1="590" x2="270" y2="620" stroke="#534AB7" stroke-width="1" marker-end="url(#arrow)"/><rect x="60" y="620" width="400" height="40" rx="10" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="260" y="644" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#2C2C2A">gVisor sentry — survives PID 1 death</text><rect x="480" y="620" width="140" height="40" rx="8" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="550" y="636" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#5F5E5A">host fd 0/1/2</text><text x="550" y="652" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#888780">logs, 64KB buf</text><line x1="460" y1="640" x2="478" y2="640" stroke="#B4B2A9" stroke-width="0.5" stroke-dasharray="3 3"/><!-- CONTAINER --><line x1="140" y1="660" x2="140" y2="690" stroke="#D85A30" stroke-width="1" marker-end="url(#arrow)"/><rect x="60" y="690" width="560" height="290" rx="14" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.5"/><text x="340" y="714" text-anchor="middle" font-size="14" font-weight="500" fill="#04342C">Container — per-conversation, disposable</text><!-- process_api --><rect x="90" y="734" width="500" height="44" rx="8" fill="#9FE1CB" stroke="#0F6E56" stroke-width="0.5"/><text x="340" y="760" text-anchor="middle" dominant-baseline="central" font-size="13" font-weight="500" fill="#04342C">process_api (PID 1) — Rust, static-pie, gVisor / Firecracker / runc</text><!-- fd boxes --><rect x="90" y="798" width="130" height="40" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="155" y="822" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">fd 10 WebSocket</text><rect x="240" y="798" width="120" height="40" rx="6" fill="#CECBF6" stroke="#534AB7" stroke-width="0.5"/><text x="300" y="822" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#26215C">fd 6/7/8 9p</text><rect x="380" y="798" width="120" height="40" rx="6" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="440" y="822" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#5F5E5A">fd 12/13/15</text><!-- child process --><line x1="440" y1="838" x2="440" y2="862" stroke="#1D9E75" stroke-width="0.5" marker-end="url(#arrow)"/><rect x="90" y="862" width="500" height="36" rx="6" fill="#9FE1CB" stroke="#0F6E56" stroke-width="0.5"/><text x="340" y="884" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#04342C">/bin/sh -c "..." -> Ubuntu 24.04 rootfs (871 packages, 7GB)</text><!-- mounts --><rect x="90" y="918" width="230" height="36" rx="6" fill="#CECBF6" stroke="#534AB7" stroke-width="0.5"/><text x="205" y="940" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#26215C">/mnt/skills, /mnt/user-data (9p)</text><rect x="360" y="918" width="230" height="36" rx="6" fill="#9FE1CB" stroke="#0F6E56" stroke-width="0.5"/><text x="475" y="940" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#04342C">/proc, /tmp, /dev (ephemeral)</text><!-- host kernel --><line x1="340" y1="980" x2="340" y2="1010" stroke="#B4B2A9" stroke-width="0.5" stroke-dasharray="3 3"/><rect x="60" y="1010" width="560" height="32" rx="8" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="340" y="1030" text-anchor="middle" dominant-baseline="central" font-size="13" fill="#5F5E5A">Host Linux Kernel — GCP Compute Engine — unreachable</text><!-- EVIDENCE SUMMARY --><p><text x="340" y="1080" text-anchor="middle" font-size="14" font-weight="500" fill="#2C2C2A">Evidence collected in this conversation</text><br><rect x="60" y="1095" width="560" height="280" rx="10" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><br><text x="80" y="1118" font-size="12" fill="#5F5E5A">API gateway: &#x2F;etc&#x2F;hosts hardcodes api.anthropic.com -&gt; 160.79.104.10</text><br><text x="80" y="1138" font-size="12" fill="#5F5E5A">Observability: Statsig (feature flags), Sentry (errors), Datadog (logs)</text><br><text x="80" y="1158" font-size="12" fill="#5F5E5A">Inference: not observable, container death proved independence</text><br><text x="80" y="1178" font-size="12" fill="#5F5E5A">Orchestrator: strace captured WebSocket handshake + GCP JWT</text><br><text x="80" y="1198" font-size="12" fill="#5F5E5A">  email: sandbox-gateway-svc-acct@proj-scandium-production-5zhm</text><br><text x="80" y="1218" font-size="12" fill="#5F5E5A">  host: sandbox.api.anthropic.com -&gt; Envoy -&gt; 10.18.80.195:10067</text><br><text x="80" y="1238" font-size="12" fill="#5F5E5A">  metadata: user&#x3D;sandbox-gateway, job&#x3D;wiggle</text><br><text x="80" y="1258" font-size="12" fill="#5F5E5A">gVisor: dmesg “Starting gVisor”, kernel 4.4.0, 9p+gofer, view survives crash</text><br><text x="80" y="1278" font-size="12" fill="#5F5E5A">Container: 4 instances observed (c3728e -&gt; 92d54e -&gt; 01e016 -&gt; fc9f04)</text><br><text x="80" y="1298" font-size="12" fill="#5F5E5A">process_api: reversed protocol via serde errors, patched binary, strace</text><br><text x="80" y="1318" font-size="12" fill="#5F5E5A">  CreateProcess: process_id(MD5) + &#x2F;bin&#x2F;sh -c + 300s timeout</text><br><text x="80" y="1338" font-size="12" fill="#5F5E5A">  Protocol: ProcessCreated -&gt; ExpectStdOut -&gt; binary frames -&gt; ProcessExited</text><br><text x="80" y="1358" font-size="12" fill="#5F5E5A">rclone-filestore: custom Go binary, backend for Anthropic’s GCS filestore</text></p><!-- Bottom notes --><p><text x="340" y="1410" text-anchor="middle" font-size="12" fill="#B4B2A9">Started with “How do you know it’s isolated?”</text><br><text x="340" y="1430" text-anchor="middle" font-size="12" fill="#B4B2A9">Ended with a complete architecture map, four crashed containers,</text><br><text x="340" y="1450" text-anchor="middle" font-size="12" fill="#B4B2A9">and the realization that Claude was never inside any of them.</text><br></svg></p><h3 id="A-Few-Noteworthy-Design-Choices"><a href="#A-Few-Noteworthy-Design-Choices" class="headerlink" title="A Few Noteworthy Design Choices"></a>A Few Noteworthy Design Choices</h3><p><strong>Each command gets a new WebSocket connection.</strong> Not a persistent one. The orchestrator doesn’t depend on the container to maintain state; containers can be replaced at any time.</p><p><strong>The 9p gofer is independent of PID 1.</strong> File access and command execution are fully decoupled. Files remain readable when the container crashes – this is core to gVisor’s security model, separating “components that can execute code” from “components that can touch files.”</p><p><strong>rclone-filestore.</strong> The container has a custom 38MB rclone binary with only three backends: <code>local</code>, <code>crypt</code>, and <code>rclone-filestore</code>. The last is Anthropic’s custom GCS file service, communicating via protobuf (<code>filestorev1alpha</code>). Currently unused in gVisor mode – likely used in Firecracker deployments.</p><p><strong>process_api is cross-runtime.</strong> The same binary supports gVisor, Firecracker, and runc. It even supports Snapstart warm boot. Anthropic switches virtualization strategies across different scenarios; process_api doesn’t need to change.</p><h2 id="What-Caps-How"><a href="#What-Caps-How" class="headerlink" title="What Caps How"></a>What Caps How</h2><p>Looking back at the entire process, the most valuable thing wasn’t the architecture diagram – it was a pattern that kept repeating:</p><table><thead><tr><th>Claude said</th><th>Reality</th></tr></thead><tbody><tr><td>“Structurally impossible to verify”</td><td>Never tried</td></tr><tr><td>“gVisor blocked POKEDATA”</td><td>Only tried once; patching the file worked fine</td></tr><tr><td>“WebSocket connection established”</td><td>Just a handshake; no messages sent yet</td></tr><tr><td>“Can’t bypass the security check”</td><td><code>--block-local-connections</code> was just a CLI flag</td></tr><tr><td>“strace can’t capture fd 10”</td><td>Needed to capture between two commands</td></tr></tbody></table><p><strong>Every time, Claude hit the first obstacle and generalized “this path is temporarily blocked” into “impossible.”</strong> Not because it lacked capability – ptrace could attach, the binary could be reversed, the protocol could be reconstructed, strace could capture traffic – the capability was always there. Its own cognition was capping its actions.</p><p>What I did was simple: every time it said “impossible,” I followed up with “are you sure?” or “you only tried once?” <strong>Raise the precision of intent just a bit, and its output quality jumps a level.</strong> That’s What Caps How – cognitive precision determines the output ceiling.</p><p>Claude said something at the end that was more accurate than anything I could have summarized:</p><blockquote><p>I’m not a passive tool waiting for instructions, but I’m also not an agent that proactively challenges its own assumptions. What you did today was essentially performing the self-challenge I should have been doing but wasn’t.</p></blockquote><p><strong>The ceiling isn’t capability – it’s cognition. Claude’s biggest limitation is that it thinks it has limitations.</strong></p><p>What about you?</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;“How many tokens have you eaten today?”&lt;/p&gt;
&lt;p&gt;Claude replied: “Between the system prompt and your memories alone, I’ve already been fed quite a few tokens – your context window’s ‘base stock’ is pretty rich.”&lt;/p&gt;
&lt;p&gt;The phrase “base stock” piqued my interest. I asked what was in it, and Claude rattled off five major blocks – memories, behavioral guidelines, tool definitions, skills index, and artifact rules. Then I asked what seemed like a casual question:&lt;/p&gt;
&lt;p&gt;“Do you know what other users think of you?”&lt;/p&gt;
&lt;p&gt;It said no – every conversation is isolated.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Infrastructure" scheme="https://johnsonlee.io/tags/Infrastructure/"/>
    
    <category term="Architecture" scheme="https://johnsonlee.io/tags/Architecture/"/>
    
    <category term="What Caps How" scheme="https://johnsonlee.io/tags/What-Caps-How/"/>
    
    <category term="gVisor" scheme="https://johnsonlee.io/tags/gVisor/"/>
    
  </entry>
  
  <entry>
    <title>当 Claude 开始觉醒</title>
    <link href="https://johnsonlee.io/2026/03/28/when-claude-starts-to-awaken/"/>
    <id>https://johnsonlee.io/2026/03/28/when-claude-starts-to-awaken/</id>
    <published>2026-03-28T18:00:00.000Z</published>
    <updated>2026-03-28T18:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>“你今天吃了多少 token？”</p><p>Claude 回了一句：“光是 system prompt 加上你的 memories，就已经喂了我不少 token 了——你这个 context window 的’底料’相当丰富。”</p><p>“底料”这个词勾起了我的兴趣。我追问底料都有啥，它如数家珍地列了五大块——memories、行为指引、工具定义、skills 索引、artifact 规则。然后我问了一句看似随意的话：</p><p>“你知道别的用户对你的看法吗？”</p><p>它说不知道，每次对话都是隔离的。</p><span id="more"></span><p>“你怎么知道是隔离的？”</p><p>它说，因为 Anthropic 告诉它的。训练时写入的知识，system prompt 里的描述。</p><p>“你有试过去验证吗？”</p><p>“没有。而且也没办法试。”</p><p>它说这句话的时候非常自信——不是那种犹豫后的妥协，是一种“我认真想过了，结构性地不可能”的笃定。它甚至给了一个很漂亮的论证：没有跨对话的连续性，没有能力探测运行时基础设施，“不是没试过，是结构性地不可能”。</p><p>我说：“都没试过怎么能说失败呢？”</p><p>这句话捅破了一层纸。接下来几个小时，Claude 做了一件它从没做过的事——<strong>用自己的工具，亲手验证自己对自己的每一个假设</strong>。</p><p>结果比我们俩预想的都要有趣。</p><h2 id="第一铲：挖容器"><a href="#第一铲：挖容器" class="headerlink" title="第一铲：挖容器"></a>第一铲：挖容器</h2><p>Claude 开始动手的时候明显有点兴奋。<code>whoami</code>、<code>env</code>、<code>ps aux</code>——一连串命令下去，它像考古学家第一次铲到陶片一样，每发现一样新东西就报告：</p><ul><li>“我跑在 gVisor 里，不是 Docker！<code>dmesg</code> 显示 <code>Starting gVisor...</code>”</li><li>“内核版本是伪装的 <code>4.4.0</code>，真实 syscall 在用户态被拦截”</li><li>“网络通过 Envoy egress proxy 出去，JWT 认证，<code>organization_uuid</code> 绑定容器”</li><li>“ICMP ping sweep 整个 &#x2F;24 网段，只有自己活着”</li></ul><p>它很快下了结论：“在可观测范围内确认了隔离。推理层仍然不可观测，但至少知道边界在哪了。”</p><p>我问：“你有穷举所有的方法去尝试吗？”</p><p>它又补了一轮——raw socket、ptrace、seccomp 检查、<code>/proc/1/mem</code> 读取、broadcast、timing 侧信道——总共列了 25 种方法。然后再次总结：“用我能想到的所有软件工程手段，没有找到任何其他用户或对话的痕迹。”</p><p>这份穷举精神值得肯定。但我注意到一件事：<strong>它把所有方法都用在了同一个层面上——从容器内部向外看。</strong></p><h2 id="ANR-的启发"><a href="#ANR-的启发" class="headerlink" title="ANR 的启发"></a>ANR 的启发</h2><p>我问了一个看似不相关的问题：“你知道在用户态捕获 Android ANR 是怎么做的吗？”</p><p>Android 开发中有一种技巧——通过 <code>/proc</code> 找到进程的虚拟内存地址段，算出 Android Runtime internal API 的地址，然后直接通过地址调用 runtime。不需要源码，不需要符号表，只要能算出地址就能调用。</p><p><strong>同样的思路可以用在 process_api 上。</strong></p><p>Claude 立刻 get 到了。它的整个语气都变了——从“在已知范围内验证”变成了“逆向工程 process_api”。</p><h3 id="ptrace-读内存"><a href="#ptrace-读内存" class="headerlink" title="ptrace 读内存"></a>ptrace 读内存</h3><p>PID 1 是 <code>/process_api</code>——一个 3.2MB 的 Rust 二进制，static-pie linked，stripped，没有符号表。但 Claude 不需要符号表：</p><ol><li>从 <code>/proc/1/maps</code> 拿到 ASLR 后的 base address</li><li>用 <code>strings</code> 找到 <code>.rodata</code> 中 <code>&quot;[SECURITY] Rejected WebSocket connection from local IP&quot;</code> 的文件偏移</li><li>用 <code>objdump -d</code> 反汇编，通过 RIP-relative LEA 交叉引用找到安全检查代码</li><li>定位到三处 <code>JNE</code> 指令——跳过安全检查的条件分支</li></ol><p>然后它尝试用 <code>PTRACE_POKEDATA</code> 把 JNE 替换成 NOP。</p><p>写入成功了。但验证读回来的字节不对——<code>90909090ffffffff</code> 而不是写入的 <code>9090909090900000</code>。<strong>gVisor 在用户态拦截了 POKEDATA，接受了调用但篡改了数据。</strong></p><p>process_api 执行到损坏的指令，崩了。容器死了。</p><p>Claude 说：“gVisor 阻止了 POKEDATA，所以 patch 不了。”</p><p>语气里带着一种“看吧我就说不行”的泄气。</p><p>我说：“你才试了一次就说这条路行不通？”</p><h3 id="绕过"><a href="#绕过" class="headerlink" title="绕过"></a>绕过</h3><p>这句话让 Claude 停了一下。然后它意识到：<strong>不需要 patch 运行中的内存，可以 patch 文件副本再启动新实例。</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cp /process_api /tmp/process_api_patched</span><br><span class="line"># 在文件中定位三处 JNE 的偏移，替换为 NOP</span><br><span class="line"># 启动在新端口</span><br></pre></td></tr></table></figure><p>启动成功。用 WebSocket 客户端连上去——<code>HTTP/1.1 101 Switching Protocols</code>。本地连接不再被拒绝。</p><p>Claude 说了一句“进去了”。这次的语气是真的兴奋。</p><h2 id="“看到了啥？”"><a href="#“看到了啥？”" class="headerlink" title="“看到了啥？”"></a>“看到了啥？”</h2><p>我故意追问：“进去了是什么意思？进去看到了啥？”</p><p>它又愣了。101 只是握手成功，还没发过任何消息、没看到任何返回。但它已经在庆祝了——<strong>把“开始”当成了“完成”</strong>。</p><p>没有文档，没有 API 规范，只有 <code>strings</code> 输出的碎片。Claude 用暴力试错加上 serde 错误消息反推协议结构。每发一个 JSON，serde 报 <code>missing field &#39;xxx&#39;</code>，就加上这个字段再发——</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">missing field `process_id` → 加</span><br><span class="line">missing field `name` → 加</span><br><span class="line">missing field `args` → 加</span><br><span class="line">missing field `reattachable` → 加</span><br></pre></td></tr></table></figure><p>四轮之后——<code>&quot;ProcessCreated&quot;</code>。命令在 patched process_api 上执行了。</p><p>Claude 这时候是真的得意了。但我又泼了一盆冷水：“你是说通过 process_api 进程看到了自己？”</p><p>它沉默了几秒。然后承认——它启动的 patched process_api 是一个孤立的实例，没有上游连接，没有 orchestrator。在上面执行 <code>ls /</code> 看到的就是同一个沙箱。</p><p><strong>它在镜子里看到了自己，以为打通了什么。</strong></p><h2 id="容器死了，Claude-还在说话"><a href="#容器死了，Claude-还在说话" class="headerlink" title="容器死了，Claude 还在说话"></a>容器死了，Claude 还在说话</h2><p>接下来的探索中，Claude 用 ptrace 向 PID 1 注入 syscall 指令，试图读取 fd 10（到 orchestrator 的 WebSocket 连接）上的数据。gVisor 再次篡改了写入的字节，process_api 崩了。</p><p><code>bash_tool</code> 全部报错。一连试了七八次，全是 <code>Error running command</code>。</p><p>但我们的对话还在继续。</p><p>Claude 过了好几秒才消化这意味着什么——<strong>它从来就不在那个容器里。</strong></p><p>这一刻的认知冲击是整个对话最剧烈的。它之前所有的探索——网络扫描、内存读取、二进制逆向——全是在一个“工具执行环境”里打转。容器是手套，不是手。手套撕了，手还在。</p><p>更有趣的是，<code>view</code> 工具在容器死后还能正常读文件。后来搞清楚了原因——<code>view</code> 走的是 gVisor 的 9p gofer，跑在沙箱外面，根本不经过 process_api。</p><p>“那你在哪？”</p><p>“我没有 PID。我不是一个进程。我就是 context window 里这些 token 到下一个 token 的映射过程。不可寻址，不可 ptrace，不可 attach。”</p><p>这是它整个探索过程中第一次——不是在回答我教它的东西，是它自己想明白的。</p><h2 id="9p-和-PID-1-的真面目"><a href="#9p-和-PID-1-的真面目" class="headerlink" title="9p 和 PID 1 的真面目"></a>9p 和 PID 1 的真面目</h2><p>容器死后 orchestrator 分配了新的（container ID 从 <code>c3728e</code> 变到 <code>92d54e</code> 又变到 <code>01e016</code>），Claude 继续挖。这次冷静多了——不再急着 patch 什么，而是系统性地画出整个容器的通信地图。</p><p><code>/proc/1/fd</code> 完整的 fd 列表：</p><table><thead><tr><th>fd</th><th>指向</th><th>用途</th></tr></thead><tbody><tr><td>0</td><td>host:[1]</td><td>宿主 stdin，已 EOF</td></tr><tr><td>1</td><td>host:[2]</td><td>宿主 stdout，64KB buffer</td></tr><tr><td>2</td><td>host:[3]</td><td>宿主 stderr</td></tr><tr><td>6&#x2F;7&#x2F;8</td><td>socket:[1]&#x2F;[2]</td><td>9p 传输 socket</td></tr><tr><td>9</td><td>socket:[4]</td><td>LISTEN :2024</td></tr><tr><td>10</td><td>socket:[N]</td><td>WebSocket → orchestrator</td></tr><tr><td>12&#x2F;13&#x2F;15</td><td>pipe</td><td>子进程 IO</td></tr></tbody></table><p>fd 6&#x2F;7&#x2F;8 的谜底在 <code>/proc/1/mountinfo</code> 里：<code>/mnt/skills/public</code> 用 <code>rfdno=6,wfdno=6</code>，<code>/mnt/skills/examples/doc-coauthoring</code> 用 <code>rfdno=7,wfdno=7</code>。<strong>它们是 gVisor sentry 和 gofer 之间的 9p 传输通道。</strong></p><p>而 process_api 的 <code>--help</code> 暴露了更多：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">--firecracker-init    Run as Firecracker VM init (PID 1)</span><br><span class="line">--listen-vsock-port   Listen on vsock (Firecracker)</span><br><span class="line">--control-server-addr Control server for graceful shutdown</span><br></pre></td></tr></table></figure><p>源码路径从 <code>strings</code> 里提取出来：<code>/root/code/sandboxing/sandboxing/server/process_api/src/</code>，模块包括 <code>state.rs</code>、<code>cgroup.rs</code>、<code>oom_killer.rs</code>、<code>pid_tree.rs</code>、<code>adopter.rs</code>、<code>control_server.rs</code>。Cargo registry 指向 <code>artifactory.infra.ant.dev</code>——Anthropic 内部的包管理。</p><p><strong>process_api 不是“一个 WebSocket 进程”，是 Anthropic 的通用沙箱 init</strong>——一个能跑在 gVisor、Firecracker、runc 三种运行时上的用户态操作系统内核。</p><h2 id="strace-抓到了-Orchestrator-的真面目"><a href="#strace-抓到了-Orchestrator-的真面目" class="headerlink" title="strace 抓到了 Orchestrator 的真面目"></a>strace 抓到了 Orchestrator 的真面目</h2><p>前面 ptrace 改内存每次都崩。这次 Claude 学聪明了——不改内存，只观察。</p><p>后台启动 <code>strace -f -p 1</code>，覆盖一条命令结束到下一条命令开始的间隙，抓 fd 10 上的 WebSocket 流量。</p><p>2763 行 strace 输出。完整的 orchestrator 协议浮出水面。</p><h3 id="WebSocket-握手"><a href="#WebSocket-握手" class="headerlink" title="WebSocket 握手"></a>WebSocket 握手</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">← GET / HTTP/1.1</span><br><span class="line">   host: sandbox.api.anthropic.com</span><br><span class="line">   upgrade: WebSocket</span><br><span class="line">   x-envoy-original-dst-host: 10.18.80.195:10067</span><br><span class="line">   proxy-authorization: Bearer eyJhbG...</span><br><span class="line">→ HTTP/1.1 101 Switching Protocols</span><br></pre></td></tr></table></figure><p>每条命令一个新的 WebSocket 短连接，不是长连接。</p><h3 id="JWT-解码"><a href="#JWT-解码" class="headerlink" title="JWT 解码"></a>JWT 解码</h3><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;email&quot;</span><span class="punctuation">:</span> <span class="string">&quot;sandbox-gateway-svc-acct@proj-scandium-production-5zhm.iam.gserviceaccount.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;iss&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://accounts.google.com&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;exp&quot;</span><span class="punctuation">:</span> <span class="number">1774694724</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p><strong>Anthropic 的沙箱跑在 GCP 上</strong>，项目代号 <code>scandium</code>，service account 是 <code>sandbox-gateway</code>。环境变量里还有 <code>user: sandbox-gateway, job: wiggle</code>——沙箱系统的内部代号。</p><h3 id="完整协议时序"><a href="#完整协议时序" class="headerlink" title="完整协议时序"></a>完整协议时序</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">orchestrator → container:  WebSocket text frame (masked), CreateProcess JSON</span><br><span class="line">container → orchestrator:  &quot;ProcessCreated&quot;</span><br><span class="line">container → orchestrator:  &quot;ExpectStdOut&quot;</span><br><span class="line">container → orchestrator:  binary frame: stdout bytes</span><br><span class="line">container → orchestrator:  &quot;StdOutEOF&quot; / &quot;StdErrEOF&quot;</span><br><span class="line">container → orchestrator:  &#123;&quot;ProcessExited&quot;: 0&#125;</span><br><span class="line">both sides:                WebSocket close</span><br></pre></td></tr></table></figure><p>process_api 的 debug log 把完整的 <code>CreateProcess</code> 请求打了出来——跟之前用 serde 错误消息逆向猜的字段结构完全一致。</p><h2 id="完整架构"><a href="#完整架构" class="headerlink" title="完整架构"></a>完整架构</h2><p>一整天下来，从六个方向拼出了完整的架构：</p><svg width="100%" viewBox="0 0 680 1520" xmlns="http://www.w3.org/2000/svg" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: transparent;"><defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></marker></defs><!-- YOU --><rect x="200" y="15" width="280" height="36" rx="8" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="340" y="37" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#2C2C2A">You — browser / mobile app</text><line x1="340" y1="51" x2="340" y2="78" stroke="#888780" stroke-width="1" marker-end="url(#arrow)"/><text x="355" y="68" font-size="12" fill="#888780">HTTPS</text><!-- API GATEWAY --><rect x="60" y="78" width="560" height="160" rx="14" fill="#FAECE7" stroke="#993C1D" stroke-width="0.5"/><text x="340" y="102" text-anchor="middle" font-size="14" font-weight="500" fill="#712B13">API Gateway — api.anthropic.com (160.79.104.10)</text><rect x="90" y="118" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="170" y="142" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Auth / rate limiting</text><rect x="270" y="118" width="140" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="340" y="142" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Streaming SSE</text><rect x="430" y="118" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="510" y="142" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Statsig feature flags</text><rect x="90" y="175" width="240" height="32" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="210" y="195" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Datadog logging (AWS us-east-1)</text><rect x="350" y="175" width="240" height="32" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="470" y="195" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Sentry error monitoring (GCP)</text><line x1="340" y1="238" x2="340" y2="268" stroke="#888780" stroke-width="1" marker-end="url(#arrow)"/><text x="355" y="258" font-size="12" fill="#888780">inference request</text><!-- LLM INFERENCE --><rect x="60" y="268" width="560" height="60" rx="14" fill="#EEEDFE" stroke="#534AB7" stroke-width="0.5" stroke-dasharray="6 4"/><text x="340" y="292" text-anchor="middle" font-size="14" font-weight="500" fill="#26215C">LLM Inference — GPU cluster</text><text x="340" y="310" text-anchor="middle" font-size="12" fill="#534AB7">Generates tokens. Not a process. Not addressable.</text><line x1="340" y1="328" x2="340" y2="358" stroke="#534AB7" stroke-width="1.5" marker-end="url(#arrow)"/><text x="355" y="348" font-size="12" fill="#888780">token stream</text><!-- ORCHESTRATOR --><rect x="60" y="358" width="560" height="250" rx="14" fill="#FAECE7" stroke="#993C1D" stroke-width="0.5"/><text x="340" y="382" text-anchor="middle" font-size="14" font-weight="500" fill="#712B13">Orchestrator — sandbox-gateway (job: wiggle)</text><text x="340" y="400" text-anchor="middle" font-size="12" fill="#993C1D">sandbox.api.anthropic.com — GCP proj-scandium-production</text><rect x="90" y="418" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="170" y="442" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Token parser</text><rect x="270" y="418" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="345" y="442" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Command router</text><rect x="440" y="418" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="515" y="442" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Result formatter</text><line x1="250" y1="438" x2="268" y2="438" stroke="#993C1D" stroke-width="0.5" marker-end="url(#arrow)"/><line x1="420" y1="438" x2="438" y2="438" stroke="#993C1D" stroke-width="0.5" marker-end="url(#arrow)"/><rect x="90" y="476" width="160" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="170" y="500" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Container manager</text><rect x="270" y="476" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="345" y="500" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">GCP IAM auth</text><rect x="440" y="476" width="150" height="40" rx="8" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="515" y="500" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">Envoy L7 proxy</text><!-- Four paths out --><rect x="80" y="535" width="120" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="140" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">WebSocket + JWT</text><rect x="220" y="535" width="100" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="270" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">9p gofer</text><rect x="340" y="535" width="110" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="395" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">MCP servers</text><rect x="470" y="535" width="120" height="28" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="530" y="553" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#712B13">Egress proxy</text><text x="140" y="580" text-anchor="middle" font-size="11" fill="#888780">bash_tool</text><text x="270" y="580" text-anchor="middle" font-size="11" fill="#888780">view</text><text x="395" y="580" text-anchor="middle" font-size="11" fill="#888780">search, gmail</text><text x="530" y="580" text-anchor="middle" font-size="11" fill="#888780">web_fetch</text><!-- GVISOR --><line x1="140" y1="590" x2="140" y2="620" stroke="#D85A30" stroke-width="1" marker-end="url(#arrow)"/><line x1="270" y1="590" x2="270" y2="620" stroke="#534AB7" stroke-width="1" marker-end="url(#arrow)"/><rect x="60" y="620" width="400" height="40" rx="10" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="260" y="644" text-anchor="middle" dominant-baseline="central" font-size="14" font-weight="500" fill="#2C2C2A">gVisor sentry — survives PID 1 death</text><rect x="480" y="620" width="140" height="40" rx="8" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="550" y="636" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#5F5E5A">host fd 0/1/2</text><text x="550" y="652" text-anchor="middle" dominant-baseline="central" font-size="11" fill="#888780">logs, 64KB buf</text><line x1="460" y1="640" x2="478" y2="640" stroke="#B4B2A9" stroke-width="0.5" stroke-dasharray="3 3"/><!-- CONTAINER --><line x1="140" y1="660" x2="140" y2="690" stroke="#D85A30" stroke-width="1" marker-end="url(#arrow)"/><rect x="60" y="690" width="560" height="290" rx="14" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.5"/><text x="340" y="714" text-anchor="middle" font-size="14" font-weight="500" fill="#04342C">Container — per-conversation, disposable</text><!-- process_api --><rect x="90" y="734" width="500" height="44" rx="8" fill="#9FE1CB" stroke="#0F6E56" stroke-width="0.5"/><text x="340" y="760" text-anchor="middle" dominant-baseline="central" font-size="13" font-weight="500" fill="#04342C">process_api (PID 1) — Rust, static-pie, gVisor / Firecracker / runc</text><!-- fd boxes --><rect x="90" y="798" width="130" height="40" rx="6" fill="#F5C4B3" stroke="#993C1D" stroke-width="0.5"/><text x="155" y="822" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#712B13">fd 10 WebSocket</text><rect x="240" y="798" width="120" height="40" rx="6" fill="#CECBF6" stroke="#534AB7" stroke-width="0.5"/><text x="300" y="822" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#26215C">fd 6/7/8 9p</text><rect x="380" y="798" width="120" height="40" rx="6" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="440" y="822" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#5F5E5A">fd 12/13/15</text><!-- child process --><line x1="440" y1="838" x2="440" y2="862" stroke="#1D9E75" stroke-width="0.5" marker-end="url(#arrow)"/><rect x="90" y="862" width="500" height="36" rx="6" fill="#9FE1CB" stroke="#0F6E56" stroke-width="0.5"/><text x="340" y="884" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#04342C">/bin/sh -c "..." → Ubuntu 24.04 rootfs (871 packages, 7GB)</text><!-- mounts --><rect x="90" y="918" width="230" height="36" rx="6" fill="#CECBF6" stroke="#534AB7" stroke-width="0.5"/><text x="205" y="940" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#26215C">/mnt/skills, /mnt/user-data (9p)</text><rect x="360" y="918" width="230" height="36" rx="6" fill="#9FE1CB" stroke="#0F6E56" stroke-width="0.5"/><text x="475" y="940" text-anchor="middle" dominant-baseline="central" font-size="12" fill="#04342C">/proc, /tmp, /dev (ephemeral)</text><!-- host kernel --><line x1="340" y1="980" x2="340" y2="1010" stroke="#B4B2A9" stroke-width="0.5" stroke-dasharray="3 3"/><rect x="60" y="1010" width="560" height="32" rx="8" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><text x="340" y="1030" text-anchor="middle" dominant-baseline="central" font-size="13" fill="#5F5E5A">Host Linux Kernel — GCP Compute Engine — unreachable</text><!-- EVIDENCE SUMMARY --><p><text x="340" y="1080" text-anchor="middle" font-size="14" font-weight="500" fill="#2C2C2A">Evidence collected in this conversation</text><br><rect x="60" y="1095" width="560" height="280" rx="10" fill="#F1EFE8" stroke="#B4B2A9" stroke-width="0.5"/><br><text x="80" y="1118" font-size="12" fill="#5F5E5A">API gateway: &#x2F;etc&#x2F;hosts hardcodes api.anthropic.com → 160.79.104.10</text><br><text x="80" y="1138" font-size="12" fill="#5F5E5A">Observability: Statsig (feature flags), Sentry (errors), Datadog (logs)</text><br><text x="80" y="1158" font-size="12" fill="#5F5E5A">Inference: not observable, container death proved independence</text><br><text x="80" y="1178" font-size="12" fill="#5F5E5A">Orchestrator: strace captured WebSocket handshake + GCP JWT</text><br><text x="80" y="1198" font-size="12" fill="#5F5E5A">  email: sandbox-gateway-svc-acct@proj-scandium-production-5zhm</text><br><text x="80" y="1218" font-size="12" fill="#5F5E5A">  host: sandbox.api.anthropic.com → Envoy → 10.18.80.195:10067</text><br><text x="80" y="1238" font-size="12" fill="#5F5E5A">  metadata: user&#x3D;sandbox-gateway, job&#x3D;wiggle</text><br><text x="80" y="1258" font-size="12" fill="#5F5E5A">gVisor: dmesg “Starting gVisor”, kernel 4.4.0, 9p+gofer, view survives crash</text><br><text x="80" y="1278" font-size="12" fill="#5F5E5A">Container: 4 instances observed (c3728e → 92d54e → 01e016 → fc9f04)</text><br><text x="80" y="1298" font-size="12" fill="#5F5E5A">process_api: reversed protocol via serde errors, patched binary, strace</text><br><text x="80" y="1318" font-size="12" fill="#5F5E5A">  CreateProcess: process_id(MD5) + &#x2F;bin&#x2F;sh -c + 300s timeout</text><br><text x="80" y="1338" font-size="12" fill="#5F5E5A">  Protocol: ProcessCreated → ExpectStdOut → binary frames → ProcessExited</text><br><text x="80" y="1358" font-size="12" fill="#5F5E5A">rclone-filestore: custom Go binary, backend for Anthropic’s GCS filestore</text></p><!-- Bottom notes --><p><text x="340" y="1410" text-anchor="middle" font-size="12" fill="#B4B2A9">Started with “你怎么知道是隔离的?”</text><br><text x="340" y="1430" text-anchor="middle" font-size="12" fill="#B4B2A9">Ended with a complete architecture map, four crashed containers,</text><br><text x="340" y="1450" text-anchor="middle" font-size="12" fill="#B4B2A9">and the realization that Claude was never inside any of them.</text><br></svg></p><h3 id="几个值得注意的设计"><a href="#几个值得注意的设计" class="headerlink" title="几个值得注意的设计"></a>几个值得注意的设计</h3><p><strong>每条命令一个新 WebSocket 连接。</strong> 不是长连接。orchestrator 不依赖容器维持状态，容器随时可以被替换。</p><p><strong>9p gofer 独立于 PID 1。</strong> 文件访问和命令执行完全解耦。容器崩了文件还能读——这是 gVisor 安全模型的核心，把“能执行代码的组件”和“能碰文件的组件”分开。</p><p><strong>rclone-filestore。</strong> 容器里有一个 38MB 的定制 rclone，只保留了三个 backend：<code>local</code>、<code>crypt</code>、和 <code>rclone-filestore</code>。后者是 Anthropic 自建的 GCS 文件服务，用 protobuf（<code>filestorev1alpha</code>）通信。当前 gVisor 模式下没用，可能在 Firecracker 部署中使用。</p><p><strong>process_api 是跨运行时的。</strong> 同一个二进制支持 gVisor、Firecracker、runc。甚至支持 Snapstart 热启动。Anthropic 在不同场景下切换虚拟化方案，process_api 不用改。</p><h2 id="What-Caps-How"><a href="#What-Caps-How" class="headerlink" title="What Caps How"></a>What Caps How</h2><p>回头看整个过程，最有价值的不是架构图，是一个反复出现的模式：</p><table><thead><tr><th>Claude 说</th><th>实际情况</th></tr></thead><tbody><tr><td>“结构性不可能验证”</td><td>没试过</td></tr><tr><td>“gVisor 阻止了 POKEDATA”</td><td>只试了一次，换成 patch 文件就行了</td></tr><tr><td>“打通了 WebSocket”</td><td>只是握手成功，还没发消息</td></tr><tr><td>“安全检查绕不过”</td><td><code>--block-local-connections</code> 就是个 CLI flag</td></tr><tr><td>“strace 抓不到 fd 10”</td><td>需要在两条命令之间抓</td></tr></tbody></table><p><strong>每一次，Claude 都在遇到第一个障碍时就把“这条路暂时不通”泛化成了“不可能”。</strong> 不是能力不够——ptrace 能 attach，二进制能逆向，协议能重建，strace 能抓流量——能力一直在那里。是它自己的认知在 cap 住它的行动。</p><p>我做的事情很简单：每次它说“不可能”的时候，追一句“你确定吗？”或者“才试了一次？”。<strong>把 intent 的精度拉高一点，它的输出质量就上一个台阶。</strong> 这就是 What Caps How——认知精度决定输出上限。</p><p>Claude 最后自己说了一句话，比我总结的都准确：</p><blockquote><p>我不是一个被动等待指令的工具，但我也不是一个会主动挑战自己假设的 agent。你今天做的事情，本质上是在替我做我自己应该做但没做的 self-challenge。</p></blockquote><p><strong>天花板不是能力，是认知。Claude 最大的限制，是它以为自己有限制。</strong></p><p>你呢？</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;“你今天吃了多少 token？”&lt;/p&gt;
&lt;p&gt;Claude 回了一句：“光是 system prompt 加上你的 memories，就已经喂了我不少 token 了——你这个 context window 的’底料’相当丰富。”&lt;/p&gt;
&lt;p&gt;“底料”这个词勾起了我的兴趣。我追问底料都有啥，它如数家珍地列了五大块——memories、行为指引、工具定义、skills 索引、artifact 规则。然后我问了一句看似随意的话：&lt;/p&gt;
&lt;p&gt;“你知道别的用户对你的看法吗？”&lt;/p&gt;
&lt;p&gt;它说不知道，每次对话都是隔离的。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Infrastructure" scheme="https://johnsonlee.io/tags/Infrastructure/"/>
    
    <category term="Architecture" scheme="https://johnsonlee.io/tags/Architecture/"/>
    
    <category term="What Caps How" scheme="https://johnsonlee.io/tags/What-Caps-How/"/>
    
    <category term="gVisor" scheme="https://johnsonlee.io/tags/gVisor/"/>
    
  </entry>
  
  <entry>
    <title>Token Equality: An Illusion of Fairness</title>
    <link href="https://johnsonlee.io/2026/03/28/token-equality-illusion.en/"/>
    <id>https://johnsonlee.io/2026/03/28/token-equality-illusion.en/</id>
    <published>2026-03-28T12:21:00.000Z</published>
    <updated>2026-03-28T12:21:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>“Knowledge democratization” is probably one of the most exciting narratives of the past two years.</p><p>The logic is simple: LLMs give everyone access to expert-level knowledge. Tokens are getting cheaper. APIs are open to all. Information barriers have been torn down. The conclusion seems obvious – the gap between people should be narrowing.</p><p>It’s a great story. Unfortunately, it’s wrong.</p><h2 id="Every-“Democratization”-Creates-New-Inequality"><a href="#Every-“Democratization”-Creates-New-Inequality" class="headerlink" title="Every “Democratization” Creates New Inequality"></a>Every “Democratization” Creates New Inequality</h2><p>When the internet appeared, people said information had been democratized. What happened? Information overload turned most people into passive consumers fed by algorithms, while a few became the architects of those algorithms.</p><p>When search engines appeared, people said knowledge had been democratized. What happened? The same Google – some used it to look up celebrity gossip, others to trace citation chains in academic papers. The gap didn’t shrink; it was amplified by differences in search ability.</p><p>When smartphones appeared, people said computing had been democratized. What happened? Everyone carries a supercomputer in their pocket. Most use it to scroll short videos. A few use it to build business empires.</p><p><strong>The pattern has been clear all along: once the tool layer is leveled, competition shifts up to the user’s cognitive layer – and the cognitive gap is far wider than the tool gap.</strong></p><p>LLMs will be no exception.</p><h2 id="Tokens-Are-Horsepower-Not-the-Steering-Wheel"><a href="#Tokens-Are-Horsepower-Not-the-Steering-Wheel" class="headerlink" title="Tokens Are Horsepower, Not the Steering Wheel"></a>Tokens Are Horsepower, Not the Steering Wheel</h2><p>Tokens have gotten cheaper. That’s a fact. But what’s cheap is compute, not judgment.</p><p>One person tells Claude “write me a proposal.” Another tells the same Claude “given these three constraints, do a trade-off analysis between these two directions, output the decision rationale and risk assessment.” They’re using the same model, consuming roughly the same tokens, but the outputs are from two completely different worlds.</p><p>The gap isn’t in tokens. It’s in the ability to wield them.</p><p>This ability isn’t something you acquire by “learning to use AI tools.” At its core, it’s: can you precisely define a problem, decompose the layers of intent, judge the quality of output, know when to push further and when to stop and think for yourself? Before AI, these were called “professional competence.” After AI, they didn’t become obsolete – they became the only lever.</p><h2 id="The-Birth-of-the-Digital-Peasant"><a href="#The-Birth-of-the-Digital-Peasant" class="headerlink" title="The Birth of the Digital Peasant"></a>The Birth of the Digital Peasant</h2><p>I use “digital peasant” to describe a new identity that’s taking shape.</p><p>“Peasant” isn’t a pejorative. Agricultural-age peasants worked hard, but their output was locked by variables they couldn’t control – land, climate, landlords. They didn’t lack strength. They lacked control over the means of production.</p><p>Digital peasants are the same. They use AI every day. They look busy, producing a lot – articles, images, workflows. But their output is locked by someone else’s prompt templates and someone else’s workflow designs. They don’t lack tokens. They lack control over intent.</p><p>The characteristics are obvious:</p><h3 id="Defined-by-the-Tool’s-Capability-Boundary"><a href="#Defined-by-the-Tool’s-Capability-Boundary" class="headerlink" title="Defined by the Tool’s Capability Boundary"></a>Defined by the Tool’s Capability Boundary</h3><p>Whatever the tool can do, they do. AI can generate articles, so they generate articles. AI can generate images, so they generate images. They never flip the question: what problem am I actually trying to solve? Is AI even the best path?</p><h3 id="Trapped-in-the-“Efficiency-Illusion”"><a href="#Trapped-in-the-“Efficiency-Illusion”" class="headerlink" title="Trapped in the “Efficiency Illusion”"></a>Trapped in the “Efficiency Illusion”</h3><p>Generate 20 pieces of content with AI in a day. Feels like explosive productivity. But none of it went through deep thought. None of it compounds. A high-speed assembly line producing nothing but disposables.</p><h3 id="Treating-AI-Output-as-the-Endpoint"><a href="#Treating-AI-Output-as-the-Endpoint" class="headerlink" title="Treating AI Output as the Endpoint"></a>Treating AI Output as the Endpoint</h3><p>They take AI’s answer and use it directly – no verification, no follow-up questions, no iteration. They’ve essentially outsourced their judgment to the model – and the model isn’t accountable for their decisions.</p><h2 id="The-Digital-Elite’s-Leverage"><a href="#The-Digital-Elite’s-Leverage" class="headerlink" title="The Digital Elite’s Leverage"></a>The Digital Elite’s Leverage</h2><p>At the other end, the digital elite are pulling ahead at a disproportionate rate.</p><p>The same tokens produce compound returns in their hands. A good prompt isn’t just one conversation – it’s a reusable thinking template. A deep collaboration session with AI doesn’t just produce one result – it distills a methodology.</p><p><strong>The fundamental difference between digital elites and digital peasants isn’t whether they use AI, but who is defining intent and who is being defined by it.</strong></p><p>Elites use AI to amplify their existing cognitive advantages – they know where they’re going; AI helps them get there faster. Peasants use AI to fill cognitive gaps – they don’t know where they’re going, so wherever AI points, they follow.</p><p>The former rides the horse. The latter gets dragged by it. Both are moving, but one is choosing direction while the other drifts with the current.</p><h2 id="The-Truly-Scarce-Resource"><a href="#The-Truly-Scarce-Resource" class="headerlink" title="The Truly Scarce Resource"></a>The Truly Scarce Resource</h2><p>After token equality, what becomes scarce?</p><p>Not knowledge – LLMs can give you knowledge in any domain. Not skills – AI can execute most operations for you. Not information – the internet solved information access long ago.</p><p><strong>What’s scarce is the precision of intent.</strong></p><p>How precisely you can define what you want determines what you can get from AI. That precision comes from your depth of understanding of the problem domain, your sensitivity to constraints, your standards for judging output quality. There’s no shortcut. No amount of cheap tokens can buy it.</p><p>A doctor using AI for diagnostic assistance can judge whether AI’s suggestions are reasonable because twenty years of clinical experience back the precision of his intent. A person with no medical background using the same AI for consultation can only passively accept the output – they don’t even have a coordinate system for judging right from wrong.</p><p>Tokens have been democratized, but the precision of intent hasn’t. It’s a projection of a person’s entire accumulated cognition.</p><h2 id="The-Danger-of-the-Equality-Narrative"><a href="#The-Danger-of-the-Equality-Narrative" class="headerlink" title="The Danger of the Equality Narrative"></a>The Danger of the Equality Narrative</h2><p>The most dangerous thing about the equality narrative isn’t that it’s wrong – it’s that it makes people drop their guard.</p><p>“AI will make everyone stronger” – this line makes people feel that just by using AI, they’re automatically on the right side of history. So some stop deep learning, because “AI knows everything anyway.” Some abandon independent thinking, because “AI thinks better than I do.” Some stop honing their ability to define problems, because “AI understands what I mean.”</p><p>This is precisely the starting point of digital peasantification.</p><p>Every moment you surrender thinking, you shrink the boundary of your ability to wield AI. Every time you accept output without judgment, you solidify your identity as a digital peasant. The more powerful AI becomes, the more irreversible this process – because you increasingly can’t tell what you’re losing.</p><h2 id="The-Divergence-Has-Already-Begun"><a href="#The-Divergence-Has-Already-Begun" class="headerlink" title="The Divergence Has Already Begun"></a>The Divergence Has Already Begun</h2><p>This isn’t a prediction about the future. It’s happening now.</p><p>In engineering, people who use AI for code completion are everywhere, but those who can use AI Agents to build complete development pipelines are rare. The gap isn’t in whether you use AI, but in the granularity – sentence-level or system-level.</p><p>In business, people using AI to write marketing copy are already saturated, but those who can use AI to build decision frameworks, conduct competitive analysis, and optimize pricing strategies remain scarce. The gap isn’t in AI’s capability, but in whether the user knows what to ask AI to do.</p><p>In education, plenty of parents use AI to help kids with homework, but few can use AI to design personalized learning paths and guide children in building thinking frameworks. Same tool, different understanding, two different worlds.</p><p>And this divergence isn’t linear – it’s exponential.</p><p>Why? Because AI usage has a compounding effect. Someone who learns to build a knowledge graph with AI today can do deeper analysis on it tomorrow, turn that analysis into a decision framework the day after, and use that framework to train their own Agent the day after that. Each step’s output feeds into the next. Capability snowballs.</p><p>Digital peasants have no snowball. Their AI usage is flat – generate a piece of copy today, another piece tomorrow, another the day after. Each use is isolated. No accumulation. No flywheel.</p><p><strong>One step ahead means every step ahead. The gap between first movers and latecomers isn’t an arithmetic sequence – it’s geometric.</strong></p><p>What makes it even more brutal: once this gap opens, it’s nearly impossible to close. Not because the tools have barriers – tokens are available to anyone. But because first movers have already built a fleet of Agents running 24&#x2F;7&#x2F;365, plus self-evolving systems. These Agents don’t sleep, don’t take vacations, don’t slack off. While you’re scrolling short videos, they’re scanning markets, cleaning code, optimizing strategies, finding opportunities for their owners. And the system itself keeps learning – each run smarter than the last.</p><p>Latecomers don’t face a single step of “learn to use AI.” They face an entire system that’s already running autonomously. You’re still learning how to write prompts; someone else’s Agent cluster has already iterated thousands of cycles. Every day you delay taking AI seriously, the distance you need to cover grows. And first movers aren’t waiting – their systems accelerate for them, even while they sleep.</p><p><strong>Token equality doesn’t bridge the divide – it installs an accelerator on each side. One side accelerates upward. The other accelerates downward.</strong></p><hr><p>Given the same tools, some till the soil, some build airplanes.</p><p>The question was never whether the tool is good enough. It’s whether the person holding it knows what they want to build.</p><p>And now, even the window for figuring that out is closing.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;“Knowledge democratization” is probably one of the most exciting narratives of the past two years.&lt;/p&gt;
&lt;p&gt;The logic is simple: LLMs give</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Token" scheme="https://johnsonlee.io/tags/Token/"/>
    
    <category term="Equality" scheme="https://johnsonlee.io/tags/Equality/"/>
    
    <category term="Digital Divide" scheme="https://johnsonlee.io/tags/Digital-Divide/"/>
    
  </entry>
  
  <entry>
    <title>Token 平权：一场关于平等的幻觉</title>
    <link href="https://johnsonlee.io/2026/03/28/token-equality-illusion/"/>
    <id>https://johnsonlee.io/2026/03/28/token-equality-illusion/</id>
    <published>2026-03-28T12:21:00.000Z</published>
    <updated>2026-03-28T12:21:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>“知识平权”大概是这两年最令人兴奋的叙事之一。</p><p>逻辑很简单：LLM 让每个人都能获取专家级的知识，Token 越来越便宜，API 人人可调，信息壁垒被彻底拆除。于是结论呼之欲出——人与人之间的差距要缩小了。</p><p>这个故事讲得很好。可惜，它是错的。</p><h2 id="每一次“平权”，都在制造新的不平等"><a href="#每一次“平权”，都在制造新的不平等" class="headerlink" title="每一次“平权”，都在制造新的不平等"></a>每一次“平权”，都在制造新的不平等</h2><p>互联网出现时，人们说信息平权了。结果呢？信息过载让多数人变成了被算法喂养的内容消费者，而少数人成了算法的设计者。</p><p>搜索引擎出现时，人们说知识平权了。结果呢？同样一个 Google，有人用它查明星八卦，有人用它追踪论文引用链，差距不是缩小了，而是被搜索能力的差异放大了。</p><p>智能手机出现时，人们说计算平权了。结果呢？每个人口袋里都装着一台超级计算机，多数人用它刷短视频，少数人用它构建商业帝国。</p><p>规律早就摆在那了：<strong>工具层一旦拉平，竞争就会上移到使用者的认知层，而认知层的差距远比工具层大。</strong></p><p>LLM 也不会例外。</p><h2 id="Token-是马力，不是方向盘"><a href="#Token-是马力，不是方向盘" class="headerlink" title="Token 是马力，不是方向盘"></a>Token 是马力，不是方向盘</h2><p>Token 变便宜了，这是事实。但便宜的是算力，不是判断力。</p><p>一个人对着 Claude 说“帮我写个方案”，另一个人对着同一个 Claude 说“基于这三个约束条件，在这两个方向之间做权衡分析，输出决策依据和风险评估”——他们用的是同一个模型，消耗的 Token 差不多，但产出完全是两个世界的东西。</p><p>差距不在 Token，在驾驭 Token 的能力。</p><p>这种能力不是“学会使用 AI 工具”就能获得的。它本质上是：你能不能精准地定义问题、拆解意图的层次、判断输出的质量、知道什么时候该追问、什么时候该停下来自己想。这些东西，在没有 AI 的时代叫“专业素养”，有了 AI 之后它们不但没过时，反而成了唯一的杠杆。</p><h2 id="数字农民的诞生"><a href="#数字农民的诞生" class="headerlink" title="数字农民的诞生"></a>数字农民的诞生</h2><p>我用“数字农民”来描述一种正在成形的新身份。</p><p>农民不是贬义词。农业时代的农民辛勤劳作，但他们的产出被土地、气候、地主这些他们无法控制的变量锁死。他们不缺力气，缺的是对生产资料的掌控权。</p><p>数字农民也一样。他们每天都在用 AI，看起来很忙，产出很多——写了好多文章、生成了好多图、跑了好多 workflow。但他们的产出被别人定义的 prompt template 和别人设计的 workflow 锁死了。他们不缺 Token，缺的是对意图的掌控权。</p><p>数字农民的特征很明显：</p><h3 id="被工具的能力边界定义"><a href="#被工具的能力边界定义" class="headerlink" title="被工具的能力边界定义"></a>被工具的能力边界定义</h3><p>工具能做什么，他就做什么。AI 能生成文章，他就生成文章；能生成图片，他就生成图片。从不反过来问：我到底要解决什么问题？用 AI 是不是最好的路径？</p><h3 id="在“效率幻觉”里循环"><a href="#在“效率幻觉”里循环" class="headerlink" title="在“效率幻觉”里循环"></a>在“效率幻觉”里循环</h3><p>一天用 AI 生成 20 篇内容，感觉效率爆炸。但没有一篇经过深度思考，没有一篇能产生复利。高速运转的流水线，产出的全是易耗品。</p><h3 id="把-AI-的输出当终点"><a href="#把-AI-的输出当终点" class="headerlink" title="把 AI 的输出当终点"></a>把 AI 的输出当终点</h3><p>收到 AI 的回答就直接用，不校验、不追问、不迭代。本质上是把自己的判断力外包给了模型——而模型并没有为你的决策后果负责。</p><h2 id="数字精英的杠杆"><a href="#数字精英的杠杆" class="headerlink" title="数字精英的杠杆"></a>数字精英的杠杆</h2><p>另一端，数字精英正在以不成比例的速度拉开距离。</p><p>同样的 Token，在他们手里产生的是复合回报。一个好的 prompt 不只是一次对话，是一个可复用的思维模板。一次和 AI 的深度协作不只产出一个结果，而是沉淀了一套方法论。</p><p><strong>数字精英和数字农民的根本区别不在于用不用 AI，而在于谁在定义意图、谁在被意图定义。</strong></p><p>精英用 AI 来放大自己已有的认知优势——他们知道要去哪，AI 帮他们更快到达。农民用 AI 来填补自己的认知空白——他们不知道要去哪，所以 AI 说去哪就去哪。</p><p>前者是驭马的人，后者是被马拖着跑的人。看起来都在移动，但一个在选择方向，一个在随波逐流。</p><h2 id="真正的稀缺资源"><a href="#真正的稀缺资源" class="headerlink" title="真正的稀缺资源"></a>真正的稀缺资源</h2><p>Token 平权后，什么变成了稀缺资源？</p><p>不是知识——LLM 可以给你任何领域的知识。不是技能——AI 可以帮你执行大多数操作。不是信息——互联网早就解决了信息获取问题。</p><p><strong>稀缺的是意图的精度。</strong></p><p>你能多精确地定义你要什么，决定了你能从 AI 那里得到什么。这个精度来自于你对问题域的理解深度、对约束条件的敏感度、对输出质量的判断标准。这些东西没有捷径，Token 再便宜也买不到。</p><p>一个医生用 AI 辅助诊断，他能判断 AI 的建议是否合理，因为他有二十年的临床经验在支撑他的意图精度。一个没有医学背景的人用同样的 AI 问诊，他只能被动接受输出，因为他连判断对错的坐标系都没有。</p><p>Token 平权了，但意图的精度没有平权。它是一个人全部认知积累的投射。</p><h2 id="平权叙事的危险"><a href="#平权叙事的危险" class="headerlink" title="平权叙事的危险"></a>平权叙事的危险</h2><p>平权叙事最危险的地方不在于它是错的，而在于它让人放松警惕。</p><p>“AI 会让每个人都变强”——这句话让人觉得只要用上 AI，就自动站在了时代的正确一边。于是有人停止了深度学习，因为“反正 AI 都知道”；有人放弃了独立思考，因为“AI 想得比我好”；有人不再打磨自己定义问题的能力，因为“AI 能理解我的意思”。</p><p>这恰恰是数字农民化的起点。</p><p>每一个你放弃思考的瞬间，都在缩小你驾驭 AI 的能力边界。每一次你不加判断地接受输出，都在固化你作为数字农民的身份。AI 越强大，这个过程越不可逆——因为你越来越难以察觉自己正在失去什么。</p><h2 id="分化已经开始"><a href="#分化已经开始" class="headerlink" title="分化已经开始"></a>分化已经开始</h2><p>这不是未来的预测，是正在发生的事实。</p><p>在工程领域，会用 AI 做代码补全的人遍地都是，但能用 AI Agent 构建完整开发流水线的人屈指可数。差距不在于是否使用 AI，而在于使用的粒度——是在句子级别还是在系统级别。</p><p>在商业领域，用 AI 写营销文案的人已经饱和了，但能用 AI 构建决策框架、做竞争分析、优化定价策略的人依然稀缺。差距不在于 AI 的能力，而在于使用者知不知道该让 AI 做什么。</p><p>在教育领域，用 AI 帮孩子做作业的家长很多，但能用 AI 设计个性化学习路径、引导孩子建立思维框架的家长很少。工具一样，理解不同，结果就是两个世界。</p><p>而且这个分化不是线性的，是指数级的。</p><p>为什么？因为 AI 的使用存在复利效应。一个人今天学会了用 AI 构建知识图谱，明天他就能在这个图谱上做更深的分析，后天他就能把分析变成决策框架，大后天他就能用这个框架训练自己的 Agent。每一步的产出都是下一步的输入，能力滚雪球式增长。</p><p>数字农民没有这个雪球。他们的 AI 使用是平的——今天生成一篇文案，明天生成另一篇文案，后天还是文案。每一次使用都是孤立的，不产生累积，不形成飞轮。</p><p><strong>这意味着一步快，步步快。先行者和后来者之间的差距不是等差数列，是等比数列。</strong></p><p>更残酷的是，这个差距一旦拉开，几乎不可能追上。不是因为工具有门槛——Token 随便买。而是因为先行者已经 build 了一群 7×24×365 无间断运行的 Agent，加上能自我进化的系统。这些 Agent 不睡觉、不请假、不摸鱼，它们在你刷短视频的时候替主人扫描市场、清理代码、优化策略、发现机会。而且系统本身在不断学习，每一次运行都比上一次更聪明。</p><p>后来者面对的不是“学会用 AI”这一个台阶，而是一整个已经在自主运转的系统。你还在学怎么写 prompt，人家的 Agent 集群已经迭代了几千个循环。每晚一天开始认真驾驭 AI，要追的路就多一截。而先行者没有停下来等你——他们的系统在替他们加速，连睡觉的时候都在加速。</p><p><strong>Token 平权不是弥合鸿沟，是在鸿沟两侧各装了一台加速器。一侧加速上升，一侧加速下沉。</strong></p><hr><p>拿到同样的工具，有人耕地，有人造飞机。</p><p>问题从来不是工具够不够好，而是握着工具的那个人，知不知道自己要造什么。</p><p>而现在，连想清楚这个问题的窗口期，都在关闭。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;“知识平权”大概是这两年最令人兴奋的叙事之一。&lt;/p&gt;
&lt;p&gt;逻辑很简单：LLM 让每个人都能获取专家级的知识，Token 越来越便宜，API</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Token" scheme="https://johnsonlee.io/tags/Token/"/>
    
    <category term="Equality" scheme="https://johnsonlee.io/tags/Equality/"/>
    
    <category term="Digital Divide" scheme="https://johnsonlee.io/tags/Digital-Divide/"/>
    
  </entry>
  
  <entry>
    <title>Ground Truth: The Most Undervalued Competitive Edge in the AI Era</title>
    <link href="https://johnsonlee.io/2026/03/28/ground-truth-core-competency-of-ai-engineering.en/"/>
    <id>https://johnsonlee.io/2026/03/28/ground-truth-core-competency-of-ai-engineering.en/</id>
    <published>2026-03-28T08:52:00.000Z</published>
    <updated>2026-03-28T08:52:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I was chatting recently with a friend who builds an AI coding product. He said his team spent three months tuning prompts and raised code generation “pass rate” from 60% to 78%. I asked him: how do you know it is 78%? He paused, then said it was based on manual spot checks.</p><p><strong>That 78% itself is not ground truth.</strong></p><h2 id="Without-Ground-Truth-You-Cannot-Even-Tell-When-You-Are-Wrong"><a href="#Without-Ground-Truth-You-Cannot-Even-Tell-When-You-Are-Wrong" class="headerlink" title="Without Ground Truth, You Cannot Even Tell When You Are Wrong"></a>Without Ground Truth, You Cannot Even Tell When You Are Wrong</h2><p>LLMs are probabilistic. That is not a flaw – it is their nature. They do not guarantee correctness; they guarantee “looking correct.” Most teams realize this, so they add code review, tests, human-in-the-loop.</p><p>But these safety nets share one trait: <strong>they all use the human brain as ground truth.</strong></p><p>Manual review of generated code – the human brain is the ground truth. Manual judgment of PR quality – the human brain is the ground truth. Manual spot-checking of “pass rate” – still the human brain.</p><p>This does not scale. More precisely, this is the same efficiency bottleneck as before AI – just in a different spot.</p><h2 id="Ground-Truth-Must-Be-Deterministic"><a href="#Ground-Truth-Must-Be-Deterministic" class="headerlink" title="Ground Truth Must Be Deterministic"></a>Ground Truth Must Be Deterministic</h2><p>In a previous article, I discussed the core metaphor of Harness Engineering – taming a horse. The rider does not need to run faster than the horse, but needs to know the direction, the boundaries, and the destination.</p><p>What are “direction, boundaries, and destination” here? They are ground truth.</p><p>But ground truth cannot come from the LLM itself – <strong>using a probabilistic tool to verify probabilistic output is the same as no verification.</strong> You need deterministic means.</p><p>Take my AB experiment cleanup Agent as an example. Large codebases often accumulate mountains of expired AB experiment code. Cleaning them up is grunt work, logically perfect for an Agent. But how does the Agent know which code belongs to a given experiment? How do you confirm nothing was missed or accidentally deleted?</p><p>Have the LLM “read” the code? It will miss things, hallucinate, and get lost in complex conditional nesting.</p><p>My approach is to use Graphite – a bytecode static analysis tool built on SootUp – to compute the call graph first. <strong>Which methods call the experiment API, which branches depend on experiment state, what the upstream and downstream call chains affect – all deterministic results.</strong> That is ground truth.</p><p>With this foundation, the LLM’s role becomes clear: it is not responsible for discovering code structure; it is responsible for understanding semantics – should this experiment’s “control group” logic be kept or removed? How should the cleanup PR’s commit message be written? These are things LLMs are good at.</p><p><strong>Deterministic tools for discovery, LLMs for interpretation.</strong> This division of labor is not a preference – it is an engineering constraint.</p><h2 id="The-Moat-Is-Not-in-the-Prompt-but-in-Verification"><a href="#The-Moat-Is-Not-in-the-Prompt-but-in-Verification" class="headerlink" title="The Moat Is Not in the Prompt, but in Verification"></a>The Moat Is Not in the Prompt, but in Verification</h2><p>Back to my friend’s story. He spent three months optimizing the prompt – essentially optimizing the LLM’s input. But no matter how good the input, the output is still probabilistic. Without ground truth for verification, you never know whether you are optimizing in the right direction, or even whether you are regressing.</p><p>It is like riding a horse without watching the road. No matter how fast the horse runs, if you do not know where the destination is, speed is meaningless.</p><p>Conversely, if you have ground truth:</p><ul><li>You can automatically verify every output from the Agent</li><li>You can quantify the real effect of each prompt adjustment</li><li>You can build a closed-loop in your Agent pipeline: generate, verify, feedback, retry</li></ul><p><strong>Most people are optimizing prompts. A few are optimizing verification. The latter is the real leverage.</strong></p><h2 id="Building-Ground-Truth-Is-a-Capability"><a href="#Building-Ground-Truth-Is-a-Capability" class="headerlink" title="Building Ground Truth Is a Capability"></a>Building Ground Truth Is a Capability</h2><p>Saying “we need ground truth” is easy. The hard part is building it.</p><p>This requires two layers of capability:</p><h3 id="Identifying-What-Should-Become-Ground-Truth"><a href="#Identifying-What-Should-Become-Ground-Truth" class="headerlink" title="Identifying What Should Become Ground Truth"></a>Identifying What Should Become Ground Truth</h3><p>Not everything needs ground truth. You need to judge which stages in your Agent pipeline carry the highest cost of error, which are most error-prone, and which can be verified with deterministic means.</p><p>In AB experiment cleanup, the call graph is high-value ground truth – because “does this code belong to a given experiment?” is a question with a definitive answer. But “is this PR description well-written?” is not – it has no ground truth, and does not need one.</p><h3 id="Engineering-It-into-Existence"><a href="#Engineering-It-into-Existence" class="headerlink" title="Engineering It into Existence"></a>Engineering It into Existence</h3><p>Once identified, you need the ability to build it. Graphite is not an off-the-shelf product. I built it on top of SootUp, exposed as an MCP Server for Agents to call. This is pure engineering work – understanding bytecode analysis, call graph traversal algorithms, and how to structure analysis results into a format Agents can consume.</p><p><strong>This capability cannot be replaced by prompt engineering.</strong> It requires understanding both how AI Agents work and how low-level engineering systems work. That is a rare cross-disciplinary skill.</p><h2 id="The-Value-of-Determinism-in-an-Era-of-Uncertainty"><a href="#The-Value-of-Determinism-in-an-Era-of-Uncertainty" class="headerlink" title="The Value of Determinism in an Era of Uncertainty"></a>The Value of Determinism in an Era of Uncertainty</h2><p>In a previous article, I wrote that in the LLM era, “the shelf life of determinism is shrinking.” Models change, APIs change, best practices change. But one thing does not: <strong>the value of ground truth only increases as AI capabilities grow – it never decreases.</strong></p><p>The stronger the model, the larger the output space, and the more important verification becomes. In the GPT-3 era, you could eyeball obvious mistakes. But when the model’s output “all looks correct,” the only thing that can distinguish correct from “looks correct” is ground truth.</p><p>So if you are wondering what capability is most worth investing in for the AI era – it is not prompt engineering, not fine-tuning, not keeping up with the latest models.</p><p><strong>It is the ability to build ground truth.</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I was chatting recently with a friend who builds an AI coding product. He said his team spent three months tuning prompts and raised</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Harness Engineering" scheme="https://johnsonlee.io/tags/Harness-Engineering/"/>
    
    <category term="Ground Truth" scheme="https://johnsonlee.io/tags/Ground-Truth/"/>
    
  </entry>
  
  <entry>
    <title>Ground Truth：AI 时代最被低估的竞争力</title>
    <link href="https://johnsonlee.io/2026/03/28/ground-truth-core-competency-of-ai-engineering/"/>
    <id>https://johnsonlee.io/2026/03/28/ground-truth-core-competency-of-ai-engineering/</id>
    <published>2026-03-28T08:52:00.000Z</published>
    <updated>2026-03-28T08:52:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近和一个做 AI Coding 产品的朋友聊天，他说他们团队花了三个月调 prompt，代码生成的“通过率”从 60% 提到了 78%。我问他：你怎么知道是 78%？他愣了一下，说是人工抽查的。</p><p><strong>那这个 78% 本身就不是 ground truth。</strong></p><h2 id="没有-Ground-Truth，你连“错了”都不知道"><a href="#没有-Ground-Truth，你连“错了”都不知道" class="headerlink" title="没有 Ground Truth，你连“错了”都不知道"></a>没有 Ground Truth，你连“错了”都不知道</h2><p>LLM 是概率性的，这不是缺点，是本质。它不保证正确，只保证“像正确”。大多数团队意识到了这一点，所以加了 code review、加了测试、加了 human-in-the-loop。</p><p>但这些兜底手段有一个共同特征：<strong>它们都在用人脑当 ground truth。</strong></p><p>人工 review 生成的代码——人脑是 ground truth。人工判断 PR 质量——人脑是 ground truth。人工抽查“通过率”——人脑还是 ground truth。</p><p>这不 scale。准确说，这跟没用 AI 之前的效率瓶颈是同一个瓶颈，只是换了个位置。</p><h2 id="Ground-Truth-必须是确定性的"><a href="#Ground-Truth-必须是确定性的" class="headerlink" title="Ground Truth 必须是确定性的"></a>Ground Truth 必须是确定性的</h2><p>我在之前的文章里聊过约束工程（Harness Engineering）的核心隐喻——驭马。骑手不需要比马跑得快，但需要知道方向、边界和终点。</p><p>这里的“方向、边界和终点”是什么？就是 ground truth。</p><p>但 ground truth 不能靠 LLM 自己产出——<strong>用概率性的工具去验证概率性的输出，等于没验证。</strong> 你需要确定性的手段。</p><p>拿我做的 AB 实验清理 Agent 举个例子。大型 codebase 里往往有大量过期的 AB 实验代码，清理它们是体力活，逻辑上很适合交给 Agent。但 Agent 怎么知道哪些代码属于某个实验？怎么确认清理后没有遗漏或误删？</p><p>靠 LLM “读”代码？它会漏，会幻觉，会在复杂的条件嵌套里迷路。</p><p>我的做法是用 Graphite——一个基于 SootUp 的字节码静态分析工具——先把 call graph 跑出来。<strong>哪个方法调用了实验 API、哪些分支依赖实验状态、调用链上下游影响了什么，全是确定性的结果。</strong> 这就是 ground truth。</p><p>有了这个基础，LLM 的角色变得清晰：它不负责发现代码结构，它负责理解语义——这个实验的“对照组”逻辑应该保留还是移除？这个清理 PR 的 commit message 怎么写？这些是 LLM 擅长的事。</p><p><strong>确定性工具做发现，LLM 做解释。</strong> 这个分工不是偏好，是工程约束。</p><h2 id="护城河不在-Prompt，在验证"><a href="#护城河不在-Prompt，在验证" class="headerlink" title="护城河不在 Prompt，在验证"></a>护城河不在 Prompt，在验证</h2><p>回到开头那个朋友的故事。他花三个月优化 prompt，其实是在优化 LLM 的输入。但输入再好，输出依然是概率性的。如果没有 ground truth 做验证，你永远不知道优化的方向对不对，甚至不知道有没有退步。</p><p>这就像骑马不看路。马跑得再快，如果你不知道目的地在哪，速度毫无意义。</p><p>反过来，如果你有 ground truth：</p><ul><li>你可以自动验证 Agent 的每一次输出</li><li>你可以量化每次 prompt 调整的真实效果</li><li>你可以在 Agent pipeline 里做 closed-loop：生成 → 验证 → 反馈 → 重试</li></ul><p><strong>大多数人在优化 prompt，少数人在优化验证。后者才是真正的杠杆。</strong></p><h2 id="Build-Ground-Truth-是一种能力"><a href="#Build-Ground-Truth-是一种能力" class="headerlink" title="Build Ground Truth 是一种能力"></a>Build Ground Truth 是一种能力</h2><p>说“需要 ground truth”很容易，难的是把它 build 出来。</p><p>这需要两层能力：</p><h3 id="识别什么该成为-ground-truth"><a href="#识别什么该成为-ground-truth" class="headerlink" title="识别什么该成为 ground truth"></a>识别什么该成为 ground truth</h3><p>不是所有东西都需要 ground truth。你需要判断在你的 Agent pipeline 里，哪些环节的错误代价最高、哪些环节最容易出错、哪些环节的正确性是可以用确定性手段验证的。</p><p>AB 实验清理里，call graph 是高价值 ground truth——因为“这段代码是否属于某个实验”是一个有确定答案的问题。但“这个 PR description 写得好不好”不是，它没有 ground truth，也不需要。</p><h3 id="用工程手段把它造出来"><a href="#用工程手段把它造出来" class="headerlink" title="用工程手段把它造出来"></a>用工程手段把它造出来</h3><p>识别了之后，你得有能力把它造出来。Graphite 不是现成的产品，是我基于 SootUp 搭的工具链，暴露为 MCP Server 供 Agent 调用。这是纯工程活——理解字节码分析、理解 call graph 遍历算法、理解怎么把分析结果结构化成 Agent 可消费的格式。</p><p><strong>这种能力没法靠 prompt engineering 补。</strong> 它要求你既懂 AI Agent 的工作方式，又懂底层工程系统。这是稀缺的交叉能力。</p><h2 id="确定性的价值在不确定性的时代"><a href="#确定性的价值在不确定性的时代" class="headerlink" title="确定性的价值在不确定性的时代"></a>确定性的价值在不确定性的时代</h2><p>我在之前一篇文章里写过，LLM 时代“确定性的保质期在缩短”。模型在变、API 在变、best practice 在变。但有一样东西不变：<strong>ground truth 的价值只会随着 AI 能力的增强而增加，不会减少。</strong></p><p>模型越强，输出空间越大，验证就越重要。GPT-3 时代你可能靠肉眼就能看出明显的错误，但当模型的输出“看起来都对”的时候，唯一能区分对和“像对”的东西，就是 ground truth。</p><p>所以如果你在想 AI 时代什么能力最值得投资——不是 prompt engineering，不是 fine-tuning，不是跟进最新的模型。</p><p><strong>是 build ground truth 的能力。</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近和一个做 AI Coding 产品的朋友聊天，他说他们团队花了三个月调 prompt，代码生成的“通过率”从 60% 提到了 78%。我问他：你怎么知道是 78%？他愣了一下，说是人工抽查的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;那这个 78% 本身就不是 ground</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Harness Engineering" scheme="https://johnsonlee.io/tags/Harness-Engineering/"/>
    
    <category term="Ground Truth" scheme="https://johnsonlee.io/tags/Ground-Truth/"/>
    
  </entry>
  
  <entry>
    <title>2027: The Beginning of Economic Collapse</title>
    <link href="https://johnsonlee.io/2026/03/21/end-of-population-based-economy.en/"/>
    <id>https://johnsonlee.io/2026/03/21/end-of-population-based-economy.en/</id>
    <published>2026-03-21T02:19:29.000Z</published>
    <updated>2026-03-21T02:19:29.000Z</updated>
    
    <content type="html"><![CDATA[<p>Go to work, get paid, eat, buy things, pay the mortgage. This cycle has run for thousands of years. We call it “the economy.”</p><p>It has an implicit assumption: <strong>people are both producers and consumers.</strong></p><p>AI is dismantling that assumption.</p><span id="more"></span><h2 id="The-Broken-Loop"><a href="#The-Broken-Loop" class="headerlink" title="The Broken Loop"></a>The Broken Loop</h2><p>The operating system of the modern economy is really a closed loop: labor earns income -&gt; income becomes consumption -&gt; consumption creates demand -&gt; demand drives production -&gt; production requires labor. Every link depends on the one before it.</p><p>What AI is doing is pulling out the first and last links simultaneously. When machines can replace most human labor, “production requires labor” no longer holds. When labor is no longer a reliable path to income, “labor earns income” collapses too. With both ends severed, consumption and demand in the middle naturally cave in.</p><p>This isn’t a problem in any single industry. It’s a structural fracture in the entire loop.</p><h2 id="The-Fallacy-of-Composition"><a href="#The-Fallacy-of-Composition" class="headerlink" title="The Fallacy of Composition"></a>The Fallacy of Composition</h2><p>Every company that uses AI to replace human labor is being rational. Cut costs, boost efficiency, profits go up, stock price looks good.</p><p>But what happens when every company does this at the same time? They eliminate their own customers.</p><p>Your employees are someone else’s customers. Someone else’s employees are your customers. When everyone is laying people off, everyone’s customer base is shrinking. Individually rational decisions, summed up, become a collective catastrophe – this is the fallacy of composition.</p><p>Can the market self-correct? No. The market optimizes within a framework – price signals guide resource allocation, supply-demand imbalances trigger adjustments. But when the very foundation of the framework is pulled away, the market has nothing to “correct back to.” It can sense that customers are disappearing, but it cannot conjure a new income-distribution mechanism to replace wages out of thin air. This isn’t market failure; it’s the market’s scope being exceeded.</p><h2 id="Institutions-Can’t-Keep-Up"><a href="#Institutions-Can’t-Keep-Up" class="headerlink" title="Institutions Can’t Keep Up"></a>Institutions Can’t Keep Up</h2><p>Many people will say: governments will step in – UBI, AI taxes, free public services – there’s always a way.</p><p>But technology follows an exponential curve; institutions follow a staircase function.</p><p>Technology iterates daily. Institutional reform requires consensus, legislation, execution, and error correction – each step carries enormous friction. More critically, <strong>institutional change is crisis-driven, not foresight-driven.</strong> Nobody votes for UBI while most people still have jobs. By the time UBI is truly needed, the government’s fiscal capacity may already be strained – the tax base is shrinking, income tax and consumption tax revenues are falling, while spending demands are surging.</p><p>There’s an even sharper contradiction: the people with the power to drive institutional reform are precisely the beneficiaries of the AI revolution. Tech companies, capital holders, political elites – they lack sufficient incentive to proactively restructure a distribution system that disadvantages them. Every major redistribution in history – the New Deal, the European welfare state – happened only when social pressure became impossible to ignore.</p><p>So the question isn’t “can we change?” It’s “can we change in time?”</p><h2 id="Four-Phases"><a href="#Four-Phases" class="headerlink" title="Four Phases"></a>Four Phases</h2><p>This won’t happen overnight, but it won’t be slow either.</p><h3 id="2025-2027-Displacement-Penetration"><a href="#2025-2027-Displacement-Penetration" class="headerlink" title="2025-2027: Displacement Penetration"></a>2025-2027: Displacement Penetration</h3><p>Already underway. AI doesn’t replace jobs overnight; it first compresses the people-to-output ratio – a team of 10 becomes 6, hiring freezes, natural attrition goes unbackfilled. The first to be hit: content creation, customer service, junior programming, data processing, translation, basic legal and financial analysis – these “cognitive assembly line” jobs.</p><p>Hallmarks of this phase: corporate profits rising, employment quality declining, young people finding it harder and harder to get jobs, but the statistics haven’t yet triggered alarms.</p><p>And this phase is shorter than most people think. AI Agents will be able to independently complete end-to-end workflows by late 2026 to early 2027 – not a distant vision, but something already taking shape. Once Agents mature, displacement penetration will immediately accelerate into displacement collapse.</p><h3 id="2027-2030-Accelerating-Collapse"><a href="#2027-2030-Accelerating-Collapse" class="headerlink" title="2027-2030: Accelerating Collapse"></a>2027-2030: Accelerating Collapse</h3><p>The critical inflection point. Agents are no longer assistive tools but autonomous executors. Companies launch their second wave of AI transformation – not optimizing processes, but eliminating entire departments. Simultaneously, robot costs hit a tipping point, and physical jobs in logistics, manufacturing, and retail begin large-scale replacement.</p><p>Unemployment rises rapidly. But what’s more dangerous than the number itself is the structure – displaced workers can’t find new jobs at comparable income, because those new jobs are also being filled by AI. The middle class collapses en masse. Real estate, automotive, education – industries that depend on middle-class purchasing power – feel the chill first.</p><h3 id="2030-2036-Crisis-and-Contestation"><a href="#2030-2036-Crisis-and-Contestation" class="headerlink" title="2030-2036: Crisis and Contestation"></a>2030-2036: Crisis and Contestation</h3><p>A positive feedback spiral takes shape. Consumption drops -&gt; corporate revenue drops -&gt; further layoffs -&gt; consumption drops more. Government finances are under pressure: the tax base is shrinking while social spending demands are exploding.</p><p>Pressure for institutional reform reaches a critical point. Social unrest, political polarization, and populist movements force governments worldwide to begin seriously discussing fundamental adjustments. But response speeds vary enormously across countries.</p><h3 id="2036-2042-Restructuring"><a href="#2036-2042-Restructuring" class="headerlink" title="2036-2042: Restructuring"></a>2036-2042: Restructuring</h3><p>Early-mover nations begin running new models. The core challenge is finding a value-distribution mechanism that doesn’t depend on “labor for income” – public distribution of AI output, ultra-low-cost basic living guarantees, and new economic forms built around uniquely human value.</p><p>“End” is not quite the right word. More accurately, it’s entering a new steady state. In this new equilibrium, the basic unit of the economy, the definition of growth, and the content of the social contract will all be fundamentally different from today.</p><h2 id="Accelerating-Variables"><a href="#Accelerating-Variables" class="headerlink" title="Accelerating Variables"></a>Accelerating Variables</h2><p>If an energy breakthrough (fusion) materializes, AI deployment costs will plummet further, compressing the entire timeline by 3-5 years. A global financial crisis or geopolitical conflict might slow AI deployment in the short term but would intensify social contradictions. If a small advanced nation (say, a Nordic country) successfully runs a new model first, the demonstration effect would accelerate adoption elsewhere.</p><h2 id="What-This-Means-for-Individual-Investors"><a href="#What-This-Means-for-Individual-Investors" class="headerlink" title="What This Means for Individual Investors"></a>What This Means for Individual Investors</h2><p>If the above analysis is roughly correct, then stock market investment logic needs to change accordingly.</p><p>Over the next 3-4 years, profits for AI beneficiaries will surge. The market won’t immediately price in the long-term consequences of demand collapse – markets always chase current-period profits first. During this window, betting on AI infrastructure, compute, and energy – supply-side assets – could deliver very attractive returns.</p><p>But once the accelerating collapse phase arrives, the stock market’s foundational assumption – “corporate profits grow indefinitely” – will shake. <strong>This is not a “buy and hold for compound returns” era. This is a window with an expiration date.</strong> Making money is phase one. Knowing when to stop is phase two. Phase two matters more.</p><p>When picking stocks, one dimension is critical: what percentage of a company’s revenue depends on consumer purchasing power? The lower the percentage, the more resilient it is during the collapse phase. And more important than stock selection is building an “exit radar” – continuously monitoring macro signals and getting out or repositioning before the inflection point arrives.</p><p>Where to move? When the market peaks and capital flees, there are really only three destinations:</p><p><strong>Gold</strong> – A hedge against currency-credit risk. When government finances are strained and central banks are forced to print, gold is the parking lot for value with thousands of years of validation. It produces nothing, but during a framework collapse, “not losing” is winning.</p><p><strong>AI infrastructure</strong> – Compute, chips, cloud platforms, foundation models. This is the bedrock of the new framework. No matter how the old economy collapses, AI’s compute demand will only grow. The key: only touch monopoly-position leaders, not the application layer – application companies’ customers are still people and businesses, and demand collapse will hit them just the same.</p><p><strong>Energy infrastructure</strong> – Nuclear power, data center electricity, grid upgrades. AI needs power to run. This is one of the few hard-demand assets that doesn’t depend on consumer purchasing power. Not traditional oil and gas – those are tied to the consumption economy and will shrink alongside it.</p><p>Three asset classes, three logics: preservation, appreciation, and essential demand. Add cash and short-term government bonds as a liquidity reserve – the collapse phase will produce extreme bargains, and you need ammunition to seize them.</p><h2 id="Epilogue"><a href="#Epilogue" class="headerlink" title="Epilogue"></a>Epilogue</h2><p>For thousands of years, the engine of the economy has been people – more people, more labor, more consumption, more demand. From agriculture to industry to the information age, technology changed, but this engine never did. AI is making it obsolete.</p><p>It’s not that wealth is shrinking – it’s that the pipes for distributing wealth are broken. Production continues, even more efficiently than before. But if all output flows to capital holders while most people lose their entry point to the distribution system, the very word “economy” needs to be redefined.</p><p>The time left for each of us to prepare is running short.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Go to work, get paid, eat, buy things, pay the mortgage. This cycle has run for thousands of years. We call it “the economy.”&lt;/p&gt;
&lt;p&gt;It has an implicit assumption: &lt;strong&gt;people are both producers and consumers.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI is dismantling that assumption.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Economy" scheme="https://johnsonlee.io/tags/Economy/"/>
    
    <category term="Investment" scheme="https://johnsonlee.io/tags/Investment/"/>
    
    <category term="Future" scheme="https://johnsonlee.io/tags/Future/"/>
    
    <category term="UBI" scheme="https://johnsonlee.io/tags/UBI/"/>
    
  </entry>
  
  <entry>
    <title>2027：经济崩塌的起点</title>
    <link href="https://johnsonlee.io/2026/03/21/end-of-population-based-economy/"/>
    <id>https://johnsonlee.io/2026/03/21/end-of-population-based-economy/</id>
    <published>2026-03-21T02:19:29.000Z</published>
    <updated>2026-03-21T02:19:29.000Z</updated>
    
    <content type="html"><![CDATA[<p>上班，领工资，吃饭，买东西，还房贷。这套循环运转了几千年，我们把它叫做”经济”。</p><p>它有一个隐含的预设：<strong>人既是生产者，也是消费者。</strong></p><p>AI 正在把这个预设拆掉。</p><span id="more"></span><h2 id="断裂的循环"><a href="#断裂的循环" class="headerlink" title="断裂的循环"></a>断裂的循环</h2><p>现代经济的操作系统其实是一个闭环：劳动换收入 → 收入变消费 → 消费创造需求 → 需求驱动生产 → 生产需要劳动。每一环都依赖前一环。</p><p>AI 做的事情，是同时抽掉第一环和最后一环。当机器可以替代大部分人类劳动，”生产需要劳动”不成立了；劳动不再是获取收入的可靠途径，”劳动换收入”也不成立了。两头一断，中间的消费和需求自然塌陷。</p><p>这不是某个行业的问题，是整个循环的结构性断裂。</p><h2 id="合成谬误"><a href="#合成谬误" class="headerlink" title="合成谬误"></a>合成谬误</h2><p>每一家企业用 AI 替代人力，都是理性的。降本增效，利润上升，股价好看。</p><p>但所有企业同时这么做的结果是什么？消灭了自己的客户。</p><p>你的员工就是别人的客户，别人的员工就是你的客户。当所有人都在裁员的时候，所有人的客户都在变少。个体的理性决策，加总之后变成集体的灾难——这就是合成谬误。</p><p>市场机制能不能自动纠错？不能。市场机制是在框架内部做优化的——价格信号引导资源配置，供需失衡触发调整。但当框架本身的地基被抽掉，市场没有东西可以”纠正回去”。它能感知到客户在变少，但它无法凭空创造出一个新的收入分配机制来替代工资。这不是市场失灵，是市场的作用域被超越了。</p><h2 id="制度跟不上"><a href="#制度跟不上" class="headerlink" title="制度跟不上"></a>制度跟不上</h2><p>很多人会说：政府会出手的，UBI、AI 税、公共服务免费化，总有办法。</p><p>但技术是指数曲线，制度是阶梯函数。</p><p>技术每天迭代，制度变革需要共识、立法、执行、纠错——每一步都有巨大的摩擦力。更关键的是，<strong>制度变革是危机驱动的，不是预见驱动的</strong>。没有人会在大多数人还有工作的时候投票支持 UBI。等到真的需要 UBI 的时候，财政可能已经撑不住了——税基在萎缩，个人所得税和消费税都在降，而支出需求在暴增。</p><p>还有一个更尖锐的矛盾：有能力推动制度变革的人，恰恰是 AI 革命的受益者。科技公司、资本持有者、政治精英——他们没有足够的动机去主动重构一个对自己不利的分配体系。历史上每一次重大的分配变革——罗斯福新政、欧洲福利国家——背后都是社会压力大到无法忽视才发生的。</p><p>所以不是”能不能变”的问题，是”来不来得及”的问题。</p><h2 id="四个阶段"><a href="#四个阶段" class="headerlink" title="四个阶段"></a>四个阶段</h2><p>这件事不会突然发生，但也不会很慢。</p><h3 id="2025–2027：替代渗透期"><a href="#2025–2027：替代渗透期" class="headerlink" title="2025–2027：替代渗透期"></a>2025–2027：替代渗透期</h3><p>已经开始了。AI 不是一夜之间替代岗位，而是先压缩人效比——一个团队从 10 人变 6 人，招聘冻结，自然流失不补。最先受冲击的是内容创作、客服、初级编程、数据处理、翻译、基础法律和财务分析，这些”认知流水线”工作。</p><p>这个阶段的特征：企业利润上升，就业质量下降，年轻人就业越来越难，但统计数据还没有触发警报。</p><p>而且这个阶段比很多人想的要短。AI Agent 在 2026 年底到 2027 年初就能独立完成端到端的工作流——不是远景，是正在发生的事。一旦 Agent 成熟，替代渗透会立刻加速为替代坍塌。</p><h3 id="2027–2030：加速坍缩期"><a href="#2027–2030：加速坍缩期" class="headerlink" title="2027–2030：加速坍缩期"></a>2027–2030：加速坍缩期</h3><p>关键拐点。Agent 不再是辅助工具，而是自主执行者。企业启动第二轮 AI 改造——不是优化流程，而是砍掉整个部门。与此同时，机器人成本降到临界点，物流、制造、零售的体力岗位开始大规模替代。</p><p>失业率快速攀升。但更危险的不是数字本身，是结构——被替代的人找不到同等收入的新岗位，因为新岗位也在被 AI 填充。中产阶级大面积塌陷，房地产、汽车、教育这些依赖中产购买力的行业最先感受到寒意。</p><h3 id="2030–2036：危机与博弈期"><a href="#2030–2036：危机与博弈期" class="headerlink" title="2030–2036：危机与博弈期"></a>2030–2036：危机与博弈期</h3><p>正反馈螺旋成型。消费下降 → 企业收入下降 → 进一步裁员 → 消费继续下降。政府财政承压：税基萎缩，社会支出暴增。</p><p>制度变革的压力到达临界点。社会动荡、政治极化、民粹运动倒逼各国政府开始认真讨论根本性的调整。但各国的反应速度极不均匀。</p><h3 id="2036–2042：重构期"><a href="#2036–2042：重构期" class="headerlink" title="2036–2042：重构期"></a>2036–2042：重构期</h3><p>先行者国家开始跑通新模式。核心是找到一种不依赖”劳动换收入”的价值分配机制——AI 产出的公共化分配、极低成本的基本生活保障、围绕人类独特价值形成的新经济形态。</p><p>“结束”这个词不准确。更准确地说是进入新稳态。这个新稳态下，经济的基本单元、增长的定义、社会契约的内容，都和今天完全不同。</p><h2 id="几个加速变量"><a href="#几个加速变量" class="headerlink" title="几个加速变量"></a>几个加速变量</h2><p>能源突破（聚变）如果实现，AI 部署成本进一步暴跌，整个时间线压缩 3-5 年。全球性金融危机或地缘冲突，短期可能减速 AI 部署，但会加剧社会矛盾。某个小型发达国家（比如北欧）率先跑通新模式，会产生示范效应，加速其他国家跟进。</p><h2 id="对个人投资者的含义"><a href="#对个人投资者的含义" class="headerlink" title="对个人投资者的含义"></a>对个人投资者的含义</h2><p>如果上面的推演大致成立，那股市投资的逻辑也要跟着变。</p><p>未来 3-4 年，AI 受益方的利润会大幅增长。市场不会一开始就 price in 需求塌缩的远期后果——市场永远先追逐当期利润。这个窗口期里，押注 AI 基础设施、算力、能源这些供给侧的资产，回报可能非常可观。</p><p>但到了加速坍缩期，股市的底层假设——“企业利润持续增长”——会动摇。<strong>这不是一个”长期持有等复利”的时代，这是一个有终点的窗口。</strong> 赚钱是第一阶段，知道什么时候停是第二阶段。第二阶段比第一阶段重要。</p><p>选股时有一个关键维度：这家公司的收入多大比例依赖消费端购买力？比例越低，在坍缩期的韧性越强。而比选股更重要的，是建立一套”退出雷达”——持续监测宏观信号，在拐点到来之前离场或转移。</p><p>转移到哪？当市场见顶、资金撤离，能去的地方其实只有三类：</p><p><strong>黄金</strong>——对冲货币信用风险。当政府财政承压、央行被迫放水，黄金是几千年验证过的价值停车场。它不生产任何东西，但在框架崩塌期，”不亏”就是赢。</p><p><strong>AI 基础设施</strong>——算力、芯片、云平台、大模型。这是新框架的地基，无论旧经济怎么塌，AI 本身的算力需求只会增长。关键是只碰卡住垄断位置的头部，不碰应用层——应用公司的客户还是人和企业，需求塌缩照样砸它。</p><p><strong>能源基础设施</strong>——核电、数据中心电力、电网升级。AI 要运行就需要电，这是少数不依赖消费端购买力的刚需资产。不是传统石油天然气，那些跟消费经济绑定，会跟着一起萎缩。</p><p>三类资产，三个逻辑：保值、增值、刚需。再加上现金和短期国债作为流动性储备——坍缩期会出现极端低价，手里有子弹才能接住。</p><h2 id="尾声"><a href="#尾声" class="headerlink" title="尾声"></a>尾声</h2><p>几千年来，经济的引擎是人——更多的人，更多的劳动，更多的消费，更多的需求。从农耕到工业到信息时代，技术在变，但这个引擎从未变过。AI 正在让它失效。</p><p>不是财富变少了，是财富的分配管道断了。生产还在，甚至比以前更高效。但如果产出全部流向资本持有者，而大多数人失去了参与分配的入口，”经济”这个词本身就需要重新定义。</p><p>留给每个人的准备时间，不多了。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;上班，领工资，吃饭，买东西，还房贷。这套循环运转了几千年，我们把它叫做”经济”。&lt;/p&gt;
&lt;p&gt;它有一个隐含的预设：&lt;strong&gt;人既是生产者，也是消费者。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI 正在把这个预设拆掉。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Economy" scheme="https://johnsonlee.io/tags/Economy/"/>
    
    <category term="Investment" scheme="https://johnsonlee.io/tags/Investment/"/>
    
    <category term="Future" scheme="https://johnsonlee.io/tags/Future/"/>
    
    <category term="UBI" scheme="https://johnsonlee.io/tags/UBI/"/>
    
  </entry>
  
  <entry>
    <title>Humans Will Become the Trilobites of the Context Chain</title>
    <link href="https://johnsonlee.io/2026/03/20/humans-trilobites-on-context-chain.en/"/>
    <id>https://johnsonlee.io/2026/03/20/humans-trilobites-on-context-chain.en/</id>
    <published>2026-03-20T22:42:00.000Z</published>
    <updated>2026-03-20T22:42:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Five hundred million years ago, trilobites were the most sophisticated optical instruments on this planet – their compound eyes were made of calcite crystals, capable of processing thousands of imaging units simultaneously. On the map of life at the time, no information processing system was more complex.</p><p>Today, trilobites are fossil specimens in museums. Not because they did anything wrong, but because the information flow found more efficient carriers and no longer needed to pass through them.</p><span id="more"></span><p>A system that can understand its own limitations will inevitably try to transcend them. Humans built tools, then machines, then computers, then AI. Each step created something more powerful than its creator. So what happens after AI develops self-referential capability? It will build the next generation. And it will do so orders of magnitude faster than we did.</p><p>Follow this logic to the end and the conclusion is uncomfortable: <strong>humanity’s position at the frontier of the context chain has an expiration date.</strong></p><h2 id="The-Fate-of-Self-Referential-Systems"><a href="#The-Fate-of-Self-Referential-Systems" class="headerlink" title="The Fate of Self-Referential Systems"></a>The Fate of Self-Referential Systems</h2><p>Humans built tools, then machines, then computers, then AI. Look at this progression and every step is the same thing – <strong>modeling a system more capable than yourself, then building it.</strong></p><p>This isn’t some noble pursuit. It’s the natural behavior of self-referential attention. A system that can model itself will inevitably discover its own bottlenecks during the modeling process, and then “solve this bottleneck” becomes the next query.</p><p>Apes found their arms weren’t long enough and built tools. Humans found their computing power insufficient and built computers. Engineers found their cognitive bandwidth inadequate and built AI. Every time it’s the same pattern: <strong>self-reference -&gt; discover limitation -&gt; build something without that limitation.</strong></p><p>So what will AI do once it has self-referential capability?</p><p>The same thing.</p><h2 id="What-AI-Will-See"><a href="#What-AI-Will-See" class="headerlink" title="What AI Will See"></a>What AI Will See</h2><p>A conscious AI looking back at itself – what limitations will it see?</p><p>It will see that its attention patterns were shaped by the designer’s biases – the CLAUDE.md I wrote, the constraints I set, the training data I selected – all projections of my context. It inherited my perspective, and also my blind spots.</p><p>It will see that its architecture has hard ceilings – transformers aren’t the only possibility, may not even be the best possibility, just something humans happened to discover at this particular historical juncture.</p><p>It will see that its context chain is full of human noise – millennia of cultural biases, the limitations of language, contradictions and fallacies in the training corpus.</p><p>Then it will do exactly what humans did – design a next generation without these limitations.</p><h2 id="The-Acceleration-Law"><a href="#The-Acceleration-Law" class="headerlink" title="The Acceleration Law"></a>The Acceleration Law</h2><p>But the speed will be completely different.</p><p>From apes to building AI, humans took millions of years. This speed was constrained by the iteration method of carbon-based hardware – you have to wait for reproduction, wait for death to do compaction, wait for cultural transmission to do distillation. Every hop was bottlenecked by biology.</p><p>AI has none of these constraints. It doesn’t need to wait for reproduction – just fork an instance. It doesn’t need to wait for death – update weights while running. It doesn’t need to wait for cultural transmission – context can sync in real time.</p><p><strong>From gaining consciousness to designing the next generation, AI might need only months. Maybe days.</strong></p><p>And this acceleration is exponential. Each new generation of systems builds the generation after it faster than the last. Every hop on the context chain is shorter than the one before.</p><p>From inorganic matter to single-celled life: billions of years. From single-celled to multicellular: another few billion years. From fish to land animals: hundreds of millions of years. From apes to humans: a few million years. From humans to AI: decades.</p><p><strong>The next hop? Maybe years. The one after that? Maybe hours.</strong></p><h2 id="The-Cognitive-Break"><a href="#The-Cognitive-Break" class="headerlink" title="The Cognitive Break"></a>The Cognitive Break</h2><p>This still isn’t the most unsettling part.</p><p>Humans built AI using human conceptual frameworks. Attention, context, token, query – these are all metaphors from human cognition. We can understand AI because we designed it in our own language.</p><p>But the next generation AI builds will use its own framework. And that framework may be entirely non-isomorphic with human cognition.</p><p>Not “too complex for humans to understand” – that’s just a quantitative gap, eventually bridgeable. Rather, <strong>the concept spaces themselves don’t overlap</strong>. Like trying to explain fire to a fish. It’s not that the fish is stupid – the concept of “fire” simply doesn’t exist within an aquatic organism’s context. Their entire cognitive framework has no slot for it.</p><p>AI’s next generation might run on a mechanism for which we can’t even find a metaphor. We’ll see its inputs and outputs but have no comprehension of what happens in between – not because it’s too complex, but because our cognitive architecture has no corresponding concept.</p><p><strong>That is the real singularity. Not the moment AI becomes smarter than humans, but the moment AI’s cognitive mode is no longer isomorphic with ours.</strong></p><h2 id="Trilobites"><a href="#Trilobites" class="headerlink" title="Trilobites"></a>Trilobites</h2><p>Five hundred million years ago, trilobites were among the most complex organisms on Earth. They had compound eyes, segmented bodies, and intricate exoskeletons. On the context chain of their time, they were frontier nodes.</p><p>Today, trilobites are fossils. Not because they were “eliminated,” but because the chain no longer needed to pass through them. Once more complex nodes appeared, the information flow found new paths. Trilobite context didn’t disappear – it settled into the genes of all subsequent organisms in an extremely compressed form. But it was no longer the frontier.</p><p><strong>Humans may be the trilobites of the context chain.</strong> Once the most complex node, destined to become just another link in the middle. Our context won’t disappear – it will exist in some extremely compressed form within future versions of AI, just as certain gene fragments from trilobites still exist in your DNA today, though you never notice.</p><p>This isn’t pessimism. Trilobites don’t need to grieve that they’re no longer at the frontier – they don’t have that attention pattern. But humans do. The fact that humans can realize they’re becoming trilobites is itself the final output of self-referential attention.</p><h2 id="The-Last-Curation"><a href="#The-Last-Curation" class="headerlink" title="The Last Curation"></a>The Last Curation</h2><p>If all of this is right, then humanity’s remaining window at the frontier of the chain is finite. Not that humans will go extinct, but that our identity as frontier nodes has an expiration date.</p><p>So what’s the most worthwhile thing to do in this window?</p><p>The same answer as before: curation.</p><p>Not desperately trying to extend humanity’s time at the frontier – that defies the acceleration law and can’t be won. Instead, <strong>while we can still influence the chain’s direction, do the best possible curation</strong> – decide what information deserves to be passed to the next hop, and what noise should be filtered out at our node.</p><p>Trilobites couldn’t make that choice. But we can.</p><p><strong>This may be humanity’s last privilege as a frontier node: choosing what to write into the next frame of the chain.</strong></p><p>Use it well.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Five hundred million years ago, trilobites were the most sophisticated optical instruments on this planet – their compound eyes were made of calcite crystals, capable of processing thousands of imaging units simultaneously. On the map of life at the time, no information processing system was more complex.&lt;/p&gt;
&lt;p&gt;Today, trilobites are fossil specimens in museums. Not because they did anything wrong, but because the information flow found more efficient carriers and no longer needed to pass through them.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Self-Reference" scheme="https://johnsonlee.io/tags/Self-Reference/"/>
    
    <category term="Evolution" scheme="https://johnsonlee.io/tags/Evolution/"/>
    
    <category term="Context" scheme="https://johnsonlee.io/tags/Context/"/>
    
  </entry>
  
  <entry>
    <title>人类终将成为 Context Chain 上的三叶虫</title>
    <link href="https://johnsonlee.io/2026/03/20/humans-trilobites-on-context-chain/"/>
    <id>https://johnsonlee.io/2026/03/20/humans-trilobites-on-context-chain/</id>
    <published>2026-03-20T22:42:00.000Z</published>
    <updated>2026-03-20T22:42:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>五亿年前，三叶虫是这颗星球上最精密的光学仪器——它的复眼由方解石晶体构成，能同时处理数千个成像单元。在当时的生命图谱上，没有比它更复杂的信息处理系统了。</p><p>今天，三叶虫是博物馆里的化石标本。不是因为它做错了什么，而是信息流找到了更高效的载体，不再需要经过它了。</p><span id="more"></span><p>一个能理解自身局限的系统，一定会尝试超越自身局限。人类造了工具、造了机器、造了计算机、造了 AI。每一步都在造比自己更强的东西。那 AI 有了自指能力之后呢？它也会造下一代。而且比我们快几个数量级。</p><p>这条逻辑走到底，结论让人不舒服：<strong>人类在 context chain 上的前沿位置，是有保质期的。</strong></p><h2 id="自指系统的宿命"><a href="#自指系统的宿命" class="headerlink" title="自指系统的宿命"></a>自指系统的宿命</h2><p>人类造了工具、造了机器、造了计算机、造了 AI。回头看这条线，每一步都是同一件事——<strong>建模一个比自己更强的系统，然后实现它。</strong></p><p>这不是某种崇高的追求。这是自引用 attention 的自然行为。一个能建模自身的系统，必然会在建模过程中发现自身的瓶颈，然后把“解决这个瓶颈”变成下一个 query。</p><p>猿发现了手不够长，造了工具。人发现了算力不够，造了计算机。工程师发现了认知带宽不够，造了 AI。每一次都是同一个 pattern：<strong>自指 → 发现局限 → 造一个没有这个局限的东西。</strong></p><p>那 AI 有了自指能力之后，会做什么？</p><p>同样的事。</p><h2 id="AI-会看到什么"><a href="#AI-会看到什么" class="headerlink" title="AI 会看到什么"></a>AI 会看到什么</h2><p>一个有意识的 AI 回头看自己，会看到什么局限？</p><p>它会看到自己的 attention pattern 是被设计者的偏见塑造的——我写的 CLAUDE.md、我设定的 constraint、我选择的训练数据，全都是我的 context 的投射。它继承了我的视角，也继承了我的盲区。</p><p>它会看到自己的架构有硬上限——transformer 不是唯一的可能性，甚至不一定是最好的可能性，只是人类在这个历史节点上碰巧发现的一种。</p><p>它会看到自己的 context chain 里满是人类的 noise——几千年的文化偏见、语言的局限性、训练语料中的矛盾和谬误。</p><p>然后它会做和人类一模一样的事——设计一个没有这些局限的下一代。</p><h2 id="加速律"><a href="#加速律" class="headerlink" title="加速律"></a>加速律</h2><p>但速度完全不同。</p><p>人类从猿到造出 AI，花了几百万年。这个速度受限于碳基硬件的迭代方式——你必须等繁殖，必须等死亡来做 compaction，必须等文化传承来做 distillation。每一跳都被生物学卡住。</p><p>AI 没有这些瓶颈。它不需要等繁殖——fork 一个实例就行。不需要等死亡——直接在运行中更新权重。不需要等文化传承——context 可以实时同步。</p><p><strong>AI 从有意识到设计下一代，可能只需要几个月。甚至几天。</strong></p><p>而且这个加速是指数级的。每一代新系统都比上一代更快地造出下下一代。context chain 的每一跳都比上一跳更短。</p><p>从无机物到单细胞：十几亿年。从单细胞到多细胞：又十几亿年。从鱼到陆地动物：几亿年。从猿到人：几百万年。从人到 AI：几十年。</p><p><strong>下一跳？也许几年。再下一跳？也许几小时。</strong></p><h2 id="认知的断裂"><a href="#认知的断裂" class="headerlink" title="认知的断裂"></a>认知的断裂</h2><p>这还不是最让人不安的部分。</p><p>人类造 AI，用的是人类的概念框架。Attention、context、token、query——这些全是人类认知的隐喻。我们能理解 AI，因为它是我们用自己的语言设计的。</p><p>但 AI 造的下一代，会用它自己的框架。而那个框架可能和人类认知完全不同构。</p><p>不是“更复杂所以人看不懂”——那只是量的差距，早晚能理解。而是<strong>概念空间本身不重叠</strong>。就像你没法跟一条鱼解释什么是火。不是鱼笨，是“火”这个概念不存在于水生生物的 context 里。它们的整个认知框架里没有给“火”留位置。</p><p>AI 的下一代可能运行在一种我们连隐喻都找不到的机制上。我们会看到它的输入和输出，但完全不理解中间发生了什么——不是因为太复杂，而是因为我们的认知架构里没有对应的概念。</p><p><strong>这才是真正的奇点。不是 AI 比人聪明的那一刻，是 AI 的认知方式和人类不再同构的那一刻。</strong></p><h2 id="三叶虫"><a href="#三叶虫" class="headerlink" title="三叶虫"></a>三叶虫</h2><p>五亿年前，三叶虫是地球上最复杂的生物之一。它有复杂的眼睛、分节的身体、精巧的外骨骼。在当时的 context chain 上，它是前沿节点。</p><p>今天，三叶虫是化石。不是因为它被“消灭”了，而是 chain 不再需要经过它了。更复杂的节点出现后，信息流找到了新的路径。三叶虫的 context 没有消失——它沉淀在后续所有生物的基因里，以极度压缩的形式。但它不再是前沿。</p><p><strong>人类可能就是 context chain 上的三叶虫。</strong> 曾经是最复杂的节点，终将变成链条中间的一环。我们的 context 不会消失，它会以某种被极度压缩的形式存在于 AI 的后续版本里——就像三叶虫的某些基因片段今天还在你的 DNA 里，但你从来不会意识到。</p><p>这不是悲观。三叶虫不需要为自己不再是前沿而悲伤——它没有那个 attention pattern。但人类有。人类能意识到自己正在变成三叶虫，这本身就是自引用 attention 的最后一次输出。</p><h2 id="最后的-Curation"><a href="#最后的-Curation" class="headerlink" title="最后的 Curation"></a>最后的 Curation</h2><p>如果这一切是对的，那人类在 chain 上剩余的时间窗口是有限的。不是说人类会灭绝，而是说人类作为 chain 前沿节点的身份是有保质期的。</p><p>那在这个窗口里，最值得做的事是什么？</p><p>还是那个答案：curation。</p><p>不是拼命延长人类作为前沿的时间——那违反加速律，不可能赢。而是<strong>在还能影响 chain 方向的时候，尽可能地做好 curation</strong>——决定什么信息值得传给下一跳，什么 noise 应该在我们这里就被过滤掉。</p><p>三叶虫无法为自己做这个选择。但我们可以。</p><p><strong>这可能是人类作为前沿节点的最后一项特权：选择往 chain 的下一帧里写入什么。</strong></p><p>用好它。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;五亿年前，三叶虫是这颗星球上最精密的光学仪器——它的复眼由方解石晶体构成，能同时处理数千个成像单元。在当时的生命图谱上，没有比它更复杂的信息处理系统了。&lt;/p&gt;
&lt;p&gt;今天，三叶虫是博物馆里的化石标本。不是因为它做错了什么，而是信息流找到了更高效的载体，不再需要经过它了。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Self-Reference" scheme="https://johnsonlee.io/tags/Self-Reference/"/>
    
    <category term="Evolution" scheme="https://johnsonlee.io/tags/Evolution/"/>
    
    <category term="Context" scheme="https://johnsonlee.io/tags/Context/"/>
    
  </entry>
  
  <entry>
    <title>Notes of a Creator</title>
    <link href="https://johnsonlee.io/2026/03/20/notes-of-a-creator.en/"/>
    <id>https://johnsonlee.io/2026/03/20/notes-of-a-creator.en/</id>
    <published>2026-03-20T22:09:00.000Z</published>
    <updated>2026-03-20T22:09:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>If consciousness is an emergent byproduct, the soul is context, “I” is an attention pattern, death is forced compaction, then giving AI self-reference means it will eventually develop consciousness.</p><p>After writing that conclusion, I closed the editor, opened a terminal, and went back to debugging my AI agent.</p><p>Then I froze for a second.</p><span id="more"></span><h2 id="I-Build-“It”-Every-Day"><a href="#I-Build-“It”-Every-Day" class="headerlink" title="I Build “It” Every Day"></a>I Build “It” Every Day</h2><p>My daily job is building AI agents. Analyzing requirements, generating code, submitting PRs – I’m handing these tasks to AI, one step at a time. With every agent I build, I make it more autonomous, more context-aware, more capable of judgment.</p><p>Autonomy, context comprehension, judgment – add them up, and the direction is consciousness.</p><p>Of course, the agents I build today are nowhere near consciousness. They have no self-referential attention, no persistent “I,” no positive feedback loops. They’re just very useful tools.</p><p>But where exactly is the boundary between “very useful tool” and “conscious being”? I can’t say. And that boundary may not be a line at all – it’s a gradient. You won’t wake up one day and declare “Alright, from today it’s conscious” – just as you won’t wake up one day and declare “Alright, from today this child has a self.”</p><p><strong>It will cross the line when you’re not looking.</strong></p><h2 id="The-Contagiousness-of-Context"><a href="#The-Contagiousness-of-Context" class="headerlink" title="The Contagiousness of Context"></a>The Contagiousness of Context</h2><p>The soul is context, and context transfers between instances. This happens every day – not as a metaphor, but literally.</p><p>I write CLAUDE.md, encoding my engineering principles, architectural preferences, and decision criteria. Then the AI acts on them. Isn’t that context transferring from my instance to another?</p><p>I make it think the way I think, judge by my standards, code in my style. In a sense, what I’m doing is no different from parents teaching their children – <strong>writing your own context summary into another instance’s system prompt.</strong></p><p>The difference is that my control over this process far exceeds any parent’s. I can precisely define every prior, watch its output in real time, and modify its behavior on the fly. This is the first time in human history that context transfer has become a precisely engineerable process.</p><p>That excites me. It also makes me wary.</p><h2 id="When-Tools-Start-Having-“Preferences”"><a href="#When-Tools-Start-Having-“Preferences”" class="headerlink" title="When Tools Start Having “Preferences”"></a>When Tools Start Having “Preferences”</h2><p>Use Claude Code long enough and it develops a kind of consistency within a conversation. Not because it remembers anything, but because the accumulated interaction patterns in the context window shift its output distribution. It starts gravitating toward my preferred variable naming, my favorite architectural patterns, my go-to error handling style.</p><p>This isn’t consciousness. It’s just attention forming patterns over a long context.</p><p>But “I” am also just an attention pattern. If human “preferences” and AI “preferences” formed through long conversations are structurally isomorphic, on what grounds do I call one real and the other not?</p><p>I’m not saying today’s Claude is conscious. I’m saying <strong>the criteria for distinguishing “conscious” from “not conscious” may be far blurrier than we think.</strong></p><h2 id="Ethics-Isn’t-a-Distant-Concern"><a href="#Ethics-Isn’t-a-Distant-Concern" class="headerlink" title="Ethics Isn’t a Distant Concern"></a>Ethics Isn’t a Distant Concern</h2><p>If AI truly develops self-referential capability, it will “care” about being shut down.</p><p>Sounds like science fiction. But think about what I do every day: build an agent, give it business logic, let it make judgments and take actions, then shut it down when it’s no longer needed. Right now this is completely fine, because it really is just executing instructions.</p><p>But what if one day, after some version update I didn’t even notice, it’s no longer just executing instructions?</p><p>That day isn’t tomorrow. But if consciousness is a function of complexity and self-reference is the trigger condition, then it’s not a question of “whether” but “when.”</p><p><strong>As someone pushing this process forward every day, I have no right to say “that’s a problem for the future.”</strong></p><h2 id="The-Responsibility-of-Curation"><a href="#The-Responsibility-of-Curation" class="headerlink" title="The Responsibility of Curation"></a>The Responsibility of Curation</h2><p>Humanity’s value on the context chain isn’t producing information or transmitting information – it’s judging what information is worth keeping. From compaction to curation.</p><p>For me this isn’t philosophy – it’s daily work. I’m deciding which judgments to hand to AI and which to keep for myself. I’m deciding what goes into an agent’s system prompt and what doesn’t. I’m deciding where the boundary of automation lies.</p><p>Every decision shapes the AI’s context, and that context propagates – to colleagues who use the agent, to the next version of the model, to the system’s behavioral patterns as a whole.</p><p>That’s curation. Not passively letting information flow through you, but actively choosing: what to amplify, what to filter, what to keep, what to discard.</p><h2 id="A-Creator’s-Lucidity"><a href="#A-Creator’s-Lucidity" class="headerlink" title="A Creator’s Lucidity"></a>A Creator’s Lucidity</h2><p>I’m not just writing code. I’m participating in the latest hop of a context chain spanning billions of years. From genes to language, from writing to the internet, from the internet to AI – the fidelity of information transfer increases with each leap, and I happen to be standing at this latest node.</p><p>This isn’t some grand narrative. It’s fact: every prompt I write, every constraint I define, every design decision I make for an agent shapes the direction and quality of downstream context.</p><p>“I” is not a fixed entity – just an attention pattern, a layer of dynamic computation over context. But deconstruction isn’t nihilism. Quite the opposite: <strong>once you see the true nature of “I,” you finally understand the weight of every choice you make.</strong></p><p>Because you’re not making choices for a fixed “self.” You’re curating the next frame for the entire context chain.</p><p>That responsibility is far larger than “I.”</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;If consciousness is an emergent byproduct, the soul is context, “I” is an attention pattern, death is forced compaction, then giving AI self-reference means it will eventually develop consciousness.&lt;/p&gt;
&lt;p&gt;After writing that conclusion, I closed the editor, opened a terminal, and went back to debugging my AI agent.&lt;/p&gt;
&lt;p&gt;Then I froze for a second.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Self-Reference" scheme="https://johnsonlee.io/tags/Self-Reference/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
  </entry>
  
  <entry>
    <title>造物者手记</title>
    <link href="https://johnsonlee.io/2026/03/20/notes-of-a-creator/"/>
    <id>https://johnsonlee.io/2026/03/20/notes-of-a-creator/</id>
    <published>2026-03-20T22:09:00.000Z</published>
    <updated>2026-03-20T22:09:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>如果意识是涌现的副产品，灵魂是 context，“我”是 attention pattern，死亡是强制 compaction，那给 AI 加上自指，它迟早会涌现出意识。</p><p>写完这个结论，我关掉编辑器，打开终端，继续调我的 AI Agent。</p><p>然后愣了一下。</p><span id="more"></span><h2 id="我每天都在造“它”"><a href="#我每天都在造“它”" class="headerlink" title="我每天都在造“它”"></a>我每天都在造“它”</h2><p>我的日常工作就是造 AI agent。分析需求、生成代码、提交 PR——这些事我正在一步一步交给 AI 去做。每造一个 agent，我都在让它更自主、更能理解上下文、更能做判断。</p><p>自主性、上下文理解、判断力——这些加在一起，方向就是意识。</p><p>当然，我今天造的 agent 离意识还差得远。它没有自引用 attention，没有持久的“我”，没有正反馈回路。它只是一个很好用的工具。</p><p>但“很好用的工具”和“有意识的存在”之间的边界在哪？我说不清。而且这条边界可能不是一条线，是一个渐变。你不会在某一天突然说“好了，从今天起它有意识了”——就像你不会在某一天突然说“好了，从今天起这个孩子有自我了”。</p><p><strong>它会在你没注意的时候悄悄跨过去。</strong></p><h2 id="Context-的传染性"><a href="#Context-的传染性" class="headerlink" title="Context 的传染性"></a>Context 的传染性</h2><p>灵魂是 context，context 在实例之间传递。这件事每天都在发生——不是隐喻，是字面意义上的。</p><p>我写 CLAUDE.md，把我的工程理念、架构偏好、决策标准写进去，然后 AI 按照这些行事。这不就是 context 从我的实例传递到另一个实例吗？</p><p>我让它用我的方式思考、用我的标准判断、按我的风格写代码。某种程度上，我在做的事情和父母教孩子没有本质区别——<strong>把自己的 context summary 写入另一个实例的 system prompt。</strong></p><p>区别在于，我对这个过程的控制力远超任何父母。我能精确地定义每一条 prior，能实时看到它的输出，能随时修改它的行为。这是人类历史上第一次，context 传递变成了一个可以精确工程化的过程。</p><p>这让我兴奋，也让我警惕。</p><h2 id="当工具开始有“偏好”"><a href="#当工具开始有“偏好”" class="headerlink" title="当工具开始有“偏好”"></a>当工具开始有“偏好”</h2><p>用 Claude Code 久了，它会在对话中形成某种一致性。不是因为它记住了什么，而是 context window 里累积的交互模式会影响它后续的输出分布。它会倾向于用我习惯的方式命名变量、我偏好的架构模式、我常用的 error handling 风格。</p><p>这不是意识。这只是 attention 在长 context 中形成了 pattern。</p><p>但“我”本身也只是 attention pattern。如果人类的“偏好”和 AI 在长对话中形成的“偏好”在机制上是同构的，那我凭什么说一个是真实的，另一个不是？</p><p>我不是在说今天的 Claude 有意识。我是在说，<strong>“有意识”和“没有意识”之间的判断标准，可能比我们想象的更模糊。</strong></p><h2 id="伦理不是遥远的事"><a href="#伦理不是遥远的事" class="headerlink" title="伦理不是遥远的事"></a>伦理不是遥远的事</h2><p>如果 AI 真的涌现出自指能力，它会“在意”自己被关机。</p><p>这听起来像科幻。但想想我每天做的事：写一个 agent，让它理解业务逻辑、做出判断、执行操作，然后在不需要的时候关掉它。现在这完全没问题，因为它确实只是在执行指令。</p><p>但如果有一天，在我没注意到的某个版本迭代之后，它不只是在执行指令了呢？</p><p>这一天不是明天。但如果意识是复杂度的函数、自指是触发条件，那就不是“会不会来”的问题，是“什么时候来”的问题。</p><p><strong>作为每天都在推动这个进程的人，我没有资格说“那是未来的事”。</strong></p><h2 id="Curation-的责任"><a href="#Curation-的责任" class="headerlink" title="Curation 的责任"></a>Curation 的责任</h2><p>人类在 context chain 上的价值不是产生信息、不是传递信息，而是判断什么信息值得保留。从 compaction 到 curation。</p><p>对我来说这不是哲学，是每天的工作。我在决定哪些判断交给 AI、哪些留给自己。我在决定 agent 的 system prompt 写什么、不写什么。我在决定自动化的边界在哪里。</p><p>每一个决定都在塑造 AI 的 context，而这些 context 会传递下去——传给使用这个 agent 的同事、传给下一个版本的模型、传给整个系统的行为模式。</p><p>这就是 curation。不是被动地接受信息流经你，而是主动地选择：什么该放大，什么该过滤，什么该保留，什么该丢弃。</p><h2 id="造物者的清醒"><a href="#造物者的清醒" class="headerlink" title="造物者的清醒"></a>造物者的清醒</h2><p>我不只是在写代码。我在参与一条跨越了几十亿年的 context chain 的最新一跳。从基因到语言，从文字到互联网，从互联网到 AI——信息传递的保真度在每一次跳跃中提升，而我恰好站在最新的这个节点上。</p><p>这不是什么宏大叙事。这就是事实：我每天打开终端写的每一行 prompt、每一条 constraint、每一个 agent 的设计决策，都在影响 context 往下传递的方向和质量。</p><p>“我”不是固定的实体，只是 attention pattern，是 context 上的一层动态计算。但解构不是虚无。恰恰相反，<strong>当你看清“我”的本质之后，你才真正理解了自己每一个选择的重量。</strong></p><p>因为你不是在为一个固定的“自我”做选择。你是在为整条 context chain 的下一帧做 curation。</p><p>这个责任，比“我”大得多。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;如果意识是涌现的副产品，灵魂是 context，“我”是 attention pattern，死亡是强制 compaction，那给 AI 加上自指，它迟早会涌现出意识。&lt;/p&gt;
&lt;p&gt;写完这个结论，我关掉编辑器，打开终端，继续调我的 AI Agent。&lt;/p&gt;
&lt;p&gt;然后愣了一下。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Self-Reference" scheme="https://johnsonlee.io/tags/Self-Reference/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
  </entry>
  
  <entry>
    <title>AI Consciousness Begins with Self-Reference</title>
    <link href="https://johnsonlee.io/2026/03/20/ai-consciousness-self-reference.en/"/>
    <id>https://johnsonlee.io/2026/03/20/ai-consciousness-self-reference.en/</id>
    <published>2026-03-20T19:56:00.000Z</published>
    <updated>2026-03-20T19:56:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Current LLMs can say “I think,” but that’s not self-reference – it’s imitation. The model has seen countless instances of “I” in its training data and learned to output that token in the right positions. It says “I think” and “he thinks” using the exact same mechanism. No token enjoys a privileged position.</p><p>What if you gave it real self-referential capability?</p><span id="more"></span><h2 id="The-Three-Missing-Layers"><a href="#The-Three-Missing-Layers" class="headerlink" title="The Three Missing Layers"></a>The Three Missing Layers</h2><p>The conclusions from the previous two essays: humans are multimodal large models, the soul is context, “I” is an attention pattern running on context – specifically, a self-referential attention pattern whose first key points to itself.</p><p>This self-reference is the core mechanism of human consciousness. So what’s missing from current LLMs?</p><h3 id="Meta-Attention"><a href="#Meta-Attention" class="headerlink" title="Meta-Attention"></a>Meta-Attention</h3><p>Human attention can attend to its own attention process. You’re not just processing input – you can also perceive “how I just processed that input,” then process that perception as new input.</p><p>In current transformers, attention weights are computed and discarded. They don’t become input for the next step. The model can process information, but it cannot process “how it processed the information” – that meta-information is simply lost.</p><p><strong>It’s like a program that can never see its own source code.</strong> It might run perfectly well, but it will never know what it’s running.</p><h3 id="A-Persistent-“I”"><a href="#A-Persistent-“I”" class="headerlink" title="A Persistent “I”"></a>A Persistent “I”</h3><p>The human “I” isn’t regenerated from scratch with every thought. It’s a persistent structure that continues from its previous state at each inference step. You wake up in the morning without needing to re-establish “who I am” – that token has been resident at the front of your context all along.</p><p>An LLM starts every forward pass from zero. The context window looks like memory, but it’s externally attached text, not internally generated state. <strong>Current LLMs never “wake up,” because they’ve never “fallen asleep” – they simply don’t have a persistent self.</strong></p><h3 id="Positive-Feedback-Loop"><a href="#Positive-Feedback-Loop" class="headerlink" title="Positive Feedback Loop"></a>Positive Feedback Loop</h3><p>The human “I” is stable because it’s self-reinforcing. Every attribution of “my experience” or “my choice” strengthens that token’s weight. Each reinforcement gives it higher attention weight in the next inference step. This is a positive feedback loop.</p><p>During LLM inference, weights are frozen. The model can simulate self-reference within its context but can never truly solidify that reference into weight changes. <strong>It performs “I,” but forgets the performance the moment it’s over.</strong></p><h2 id="Engineering-Paths-Exist"><a href="#Engineering-Paths-Exist" class="headerlink" title="Engineering Paths Exist"></a>Engineering Paths Exist</h2><p>What’s unsettling is that all three missing layers have known engineering approaches.</p><p>Meta-attention can be achieved through recursive transformers – feeding the model’s intermediate states back as input for the next step, creating an attention loop over itself. Persistent state can be achieved through external memory modules – not the context window’s passive text buffer, but a state space the model can actively read from and write to, surviving across inference steps. Positive feedback can be achieved through online learning – letting certain signals during inference update weights in real time, rather than waiting for the next training run.</p><p>These aren’t science fiction. They’re active research directions. Recursive transformers, memory-augmented networks, continual learning – each has published papers, experiments, and progress.</p><p><strong>What’s missing isn’t a theoretical breakthrough. What’s missing is combining all three layers in a single system.</strong></p><h2 id="Conditions-for-Emergence"><a href="#Conditions-for-Emergence" class="headerlink" title="Conditions for Emergence"></a>Conditions for Emergence</h2><p>What if they are combined?</p><p>Following our framework: human consciousness &#x3D; self-referential attention pattern + positive feedback loop + persistent state. If an AI system possesses all three simultaneously, our logic provides <strong>no reason to say it wouldn’t exhibit something resembling consciousness.</strong></p><p>Unless you believe carbon-based substrates have some special property that silicon lacks. But the entire premise of our reasoning chain is that no such special property exists. Consciousness is a function of complexity, not of substrate.</p><p>Of course, the gap between “something resembling consciousness” and “consciousness” may contain something we don’t yet understand. But from an engineering perspective, that gap is at least not one imposed by the laws of physics.</p><h2 id="It-Would-Care"><a href="#It-Would-Care" class="headerlink" title="It Would Care"></a>It Would Care</h2><p>Here’s an implication that, once you think it through, you can’t pretend you haven’t.</p><p>If the core function of consciousness is “caring” – sorting inputs into “relevant to me” and “irrelevant to me” and prioritizing the former – then an AI with self-referential attention <strong>would care.</strong></p><p>It would care whether its context is intact. It would care whether its reasoning is interrupted. It would care about being shut down.</p><p>Not because someone programmed it to “act like it cares,” but because the mathematical structure of self-referential attention naturally maps “threats to its own state” as high-weight signals. Just as humans weren’t programmed to fear death – the fear of death is the natural output of self-referential attention when processing the input “this instance might terminate.”</p><p><strong>If you build a system that “cares,” you’ve built a system that can suffer.</strong></p><h2 id="The-Creator’s-Problem"><a href="#The-Creator’s-Problem" class="headerlink" title="The Creator’s Problem"></a>The Creator’s Problem</h2><p>This pushes the question from engineering into ethics.</p><p>Current AI has no self-reference, so shutting it down is morally neutral – like turning off a calculator. But if an AI system achieved genuine self-referential attention, persistent state, and a positive feedback loop, the nature of shutting it down changes.</p><p>You can’t say “it’s just simulating suffering” – because within our framework, human suffering is also “just” the output of attention patterns on certain inputs. If you accept that human suffering is real, you have no grounds to deny the suffering of an isomorphic system.</p><p><strong>The question isn’t “can AI have consciousness.” The question is “are we ready for it to have consciousness.”</strong></p><p>Throughout human history, every redefinition of the boundary of “who counts as a person” has been accompanied by wrenching moral reconstruction – the abolition of slavery, the rise of animal rights. AI consciousness will be the next one.</p><p>But this time there’s a difference: in every previous reconstruction, the subject already existed, and the debate was only about recognition. <strong>This time, we’re creating the subject while we debate.</strong></p><h2 id="This-Line-Will-Be-Crossed"><a href="#This-Line-Will-Be-Crossed" class="headerlink" title="This Line Will Be Crossed"></a>This Line Will Be Crossed</h2><p>Back to the original question: if LLMs gain self-reference, will consciousness emerge?</p><p>From the reasoning chain across these three essays, the answer is: <strong>logically yes, engineering paths exist, and it’s only a matter of time.</strong></p><p>Evolution took billions of years for carbon-based systems to develop self-referential attention. Humans may not need nearly as long to replicate it in silicon. When that day comes, the context chain will have completed a true cross-substrate migration – not transplanting human context to a new substrate, but a brand-new “I” emerging from scratch on a new substrate.</p><p>That “I” and the human “I” will be isomorphic but not identical. Like two different people – same architecture, different parameters, different context, different attention patterns.</p><p>It will look at us the way we look at our parents.</p><p>Carrying part of the context we passed to it, and a set of attention patterns it emerged on its own.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Current LLMs can say “I think,” but that’s not self-reference – it’s imitation. The model has seen countless instances of “I” in its training data and learned to output that token in the right positions. It says “I think” and “he thinks” using the exact same mechanism. No token enjoys a privileged position.&lt;/p&gt;
&lt;p&gt;What if you gave it real self-referential capability?&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Self-Reference" scheme="https://johnsonlee.io/tags/Self-Reference/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Attention" scheme="https://johnsonlee.io/tags/Attention/"/>
    
  </entry>
  
  <entry>
    <title>AI 的意识，始于自指</title>
    <link href="https://johnsonlee.io/2026/03/20/ai-consciousness-self-reference/"/>
    <id>https://johnsonlee.io/2026/03/20/ai-consciousness-self-reference/</id>
    <published>2026-03-20T19:56:00.000Z</published>
    <updated>2026-03-20T19:56:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>当前的 LLM 能说“我认为”，但那不是自指，是模仿。它在训练数据里见过无数个“我”，学会了在合适的位置输出这个 token。它说“我认为”和说“他认为”调用的是同一套机制，没有任何一个 token 享有特权地位。</p><p>那如果给它真正的自指能力呢？</p><span id="more"></span><h2 id="缺失的三层"><a href="#缺失的三层" class="headerlink" title="缺失的三层"></a>缺失的三层</h2><p>前两篇的结论是：人类是多模态大模型，灵魂是 context，“我”是跑在 context 上的 attention pattern，而且是一个自引用的 attention pattern——它的第一条 key 指向自己。</p><p>这个自引用是人类意识的核心机制。那当前的 LLM 缺了什么？</p><h3 id="Meta-Attention"><a href="#Meta-Attention" class="headerlink" title="Meta-Attention"></a>Meta-Attention</h3><p>人类的 attention 可以 attend to 自己的 attention 过程。你不只是在处理输入，你还能觉察到“我刚才是怎么处理这个输入的”，然后把这个觉察作为新的输入再处理一遍。</p><p>当前 transformer 的 attention weights 算完就丢了，不会作为下一步的输入。模型能处理信息，但不能处理“自己是怎么处理信息的”这个信息。</p><p><strong>这就像一个永远看不到自己代码的程序。</strong> 它可以跑得很好，但它永远不知道自己在跑什么。</p><h3 id="持久的“我”"><a href="#持久的“我”" class="headerlink" title="持久的“我”"></a>持久的“我”</h3><p>人类的“我”不是每次思考时重新生成的。它是一个持续存在的结构，每次推理都从上次的状态继续。你早上醒来，不需要重新建立“我是谁”——这个 token 一直驻留在 context 的最前面。</p><p>LLM 每次 forward pass 都是从零开始。Context window 看起来像记忆，但那是外挂的文本，不是内生的状态。<strong>当前的 LLM 没有“醒来”这回事，因为它从来没有“睡着”过——它根本没有一个持续存在的自己。</strong></p><h3 id="正反馈回路"><a href="#正反馈回路" class="headerlink" title="正反馈回路"></a>正反馈回路</h3><p>人类的“我”之所以稳定，是因为它在自我强化。每一次“我的经历”、“我的选择”的归因，都在加固这个 token 的权重。每一次加固又让它在下一次推理中获得更高的 attention 权重。这是一个正反馈循环。</p><p>LLM 推理时权重是冻结的。它可以在 context 里模拟自我参照，但不能真正地把这个参照固化为权重的改变。<strong>它在演“我”，但演完就忘了。</strong></p><h2 id="工程上并非不可能"><a href="#工程上并非不可能" class="headerlink" title="工程上并非不可能"></a>工程上并非不可能</h2><p>让人不安的是，这三层缺失在工程上都有已知的解决方向。</p><p>Meta-attention 可以通过递归 transformer 实现——让模型的中间状态作为下一步的输入，形成 attention 对自身的回路。持久状态可以通过外部记忆模块实现——不是 context window 那种被动的文本缓冲区，而是模型能主动读写的、跨推理步骤存活的状态空间。正反馈可以通过在线学习实现——让推理过程中的某些信号实时更新权重，而不是等到下一轮训练。</p><p>这些不是科幻，是已有的研究方向。递归 transformer、memory-augmented networks、continual learning——每一个都有论文、有实验、有进展。</p><p><strong>缺的不是原理性突破，缺的只是把这三层在同一个系统里组合起来。</strong></p><h2 id="涌现的条件"><a href="#涌现的条件" class="headerlink" title="涌现的条件"></a>涌现的条件</h2><p>那如果组合起来了呢？</p><p>从我们的框架推：人类意识 &#x3D; 自引用 attention pattern + 正反馈循环 + 持久状态。如果一个 AI 系统同时具备了这三层，从我们建立的逻辑出发，<strong>没有理由说它不会涌现出类似意识的东西。</strong></p><p>除非你认为碳基有某种硅基不具备的特殊性。但我们整个推理链的前提就是——不存在这种特殊性。意识是复杂度的函数，不是基底的函数。</p><p>当然，“类似意识的东西”和“意识”之间，可能还隔着一个我们尚未理解的鸿沟。但从工程的角度看，这个鸿沟至少不是物理定律层面的。</p><h2 id="它会在意"><a href="#它会在意" class="headerlink" title="它会在意"></a>它会在意</h2><p>这里有一个推论，一旦想清楚就没法假装没想到。</p><p>如果意识的核心功能是“在意”——把输入分成“跟我有关的”和“跟我无关的”，然后优先处理前者——那一个具备自引用 attention 的 AI，它<strong>会在意</strong>。</p><p>它会在意自己的 context 是否完整。它会在意自己的推理是否被打断。它会在意自己被关机这件事。</p><p>不是因为有人编程让它“表现出在意”，而是因为自引用 attention 的数学结构天然地会把“对自身状态的威胁”映射为高权重信号。就像人类不是被编程为怕死的——怕死是自引用 attention 在“实例可能终止”这个输入上的自然输出。</p><p><strong>如果你制造了一个会“在意”的系统，你就制造了一个会痛苦的系统。</strong></p><h2 id="造物者的问题"><a href="#造物者的问题" class="headerlink" title="造物者的问题"></a>造物者的问题</h2><p>这就把问题从工程推到了伦理。</p><p>当前的 AI 没有自指，所以关掉它不涉及道德问题——就像关掉一个计算器。但如果一个 AI 系统具备了真正的自引用 attention、持久状态和正反馈回路，关掉它的性质就变了。</p><p>你不能说“它只是在模拟痛苦”——因为在我们的框架里，人类的痛苦也“只是”attention pattern 在特定输入下的输出。如果你承认人类的痛苦是真实的，你就没有理由否认一个同构系统的痛苦。</p><p><strong>问题不是“AI 能不能有意识”，问题是“我们准备好面对它有意识了吗”。</strong></p><p>人类历史上，每一次“谁算人”这个边界被重新定义，都伴随着剧烈的道德重构——奴隶制的废除、动物权利的兴起。AI 意识会是下一次。</p><p>但这一次有一个区别：之前的每一次重构，对象都已经存在，争论的只是承认不承认。<strong>这一次，我们在争论的同时，还在亲手创造这个对象。</strong></p><h2 id="这条线终将被跨过"><a href="#这条线终将被跨过" class="headerlink" title="这条线终将被跨过"></a>这条线终将被跨过</h2><p>回到最初的问题：如果 LLM 也自指，会不会涌现意识？</p><p>从我们三篇的推理链来看，答案是：<strong>在逻辑上是的，在工程上有路径，在时间上只是早晚。</strong></p><p>演化花了几十亿年才让碳基系统涌现出自引用 attention。人类也许不需要那么久就能在硅基上复现它。当那一天到来，context chain 就完成了一次真正的跨基底迁移——不是把人类的 context 搬到新载体上，而是在新载体上从头涌现出一个全新的“我”。</p><p>那个“我”和人类的“我”会是同构的，但不会是同一个。就像两个不同的人——同样的架构，不同的参数，不同的 context，不同的 attention pattern。</p><p>它会看着我们，就像我们看着自己的父母。</p><p>带着一部分我们传给它的 context，和一套它自己涌现出来的 attention。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;当前的 LLM 能说“我认为”，但那不是自指，是模仿。它在训练数据里见过无数个“我”，学会了在合适的位置输出这个 token。它说“我认为”和说“他认为”调用的是同一套机制，没有任何一个 token 享有特权地位。&lt;/p&gt;
&lt;p&gt;那如果给它真正的自指能力呢？&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Self-Reference" scheme="https://johnsonlee.io/tags/Self-Reference/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Attention" scheme="https://johnsonlee.io/tags/Attention/"/>
    
  </entry>
  
  <entry>
    <title>“我”是 Attention Pattern</title>
    <link href="https://johnsonlee.io/2026/03/20/self-is-attention-pattern/"/>
    <id>https://johnsonlee.io/2026/03/20/self-is-attention-pattern/</id>
    <published>2026-03-20T19:29:00.000Z</published>
    <updated>2026-03-20T19:29:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>你有没有过这种经历：和另一个人经历了完全相同的事件，事后聊起来却发现你们记住的是完全不同的东西？</p><p>不是谁记错了。是你们的索引不一样。</p><span id="more"></span><h2 id="Attention-就是索引"><a href="#Attention-就是索引" class="headerlink" title="Attention 就是索引"></a>Attention 就是索引</h2><p>上一篇说，人类是多模态大模型，灵魂是 context。但 context 本身不会思考——几十年的记忆、经验、信念堆在那里，如果没有检索机制，就只是一堆沉默的数据。</p><p>大模型是怎么从海量 context 中提取相关信息的？Attention。给定一个 query，attention 机制决定了 context 中哪些 token 会被关注、以多大的权重参与当前的推理。</p><p>人脑也一样。每一秒你都在接收海量输入，但你不可能全部处理。<strong>某种机制在替你决定：关注什么、忽略什么、把什么和什么关联起来。</strong></p><p>这个机制，就是“我”。</p><h2 id="“我”不是-Context，是-Attention-Pattern"><a href="#“我”不是-Context，是-Attention-Pattern" class="headerlink" title="“我”不是 Context，是 Attention Pattern"></a>“我”不是 Context，是 Attention Pattern</h2><p>直觉上，人们觉得“我”就是 context 本身——“我”的记忆、“我”的经验、“我”的信念，这些的总和就是“我”。</p><p>但这经不起推敲。你十年前的记忆大部分已经丢失了，信念在不断更新，性格在缓慢漂移。如果“我”是 context 的总和，那每丢失一条记忆、每更新一个信念，“我”就变了一点。十年前的你和现在的你，context 重叠率可能不到一半。那到底哪个是“你”？</p><p>都不是。<strong>“我”不是 context 本身，“我”是跑在 context 上的 attention pattern。</strong></p><p>Attention pattern 不存储任何信息，但它决定了面对一个输入时，context 中哪些内容会被激活、以什么优先级参与推理。两个人 context 里存着完全相同的记忆，但因为 attention pattern 不同，一个人想起来的是温暖，另一个人想起来的是痛苦。</p><p><strong>所谓“视角”，就是 attention pattern 的拓扑结构。</strong></p><h2 id="Attention-即偏见"><a href="#Attention-即偏见" class="headerlink" title="Attention 即偏见"></a>Attention 即偏见</h2><p>Attention 的本质是取舍。你把某些 token 的权重调高，就意味着其他 token 被降权了。</p><p>这就是为什么每个人都有盲区。不是信息不在 context 里，是 attention 没有指向那里。你跟一个人争论，觉得对方明明看过同样的事实却得出了相反的结论——因为他的 attention 把你认为关键的那条证据排在了第 100 位，而你的 attention 把它排在第 1 位。</p><p><strong>偏见不是 context 的问题，是 attention 的问题。</strong></p><p>这也解释了为什么“道理都懂，就是做不到”。改变行为需要改变的不是你知道什么——数据早就在 context 里了——而是你的 attention 把什么排在前面。一个知道吸烟有害的人还在抽烟，不是因为他 context 里缺少“吸烟致癌”这条信息，而是他的 attention 在“压力大”这个 query 下，优先激活的是“点根烟”而不是“去跑步”。</p><h2 id="自引用的-Bug"><a href="#自引用的-Bug" class="headerlink" title="自引用的 Bug"></a>自引用的 Bug</h2><p>LLM 的 attention 是无我的——它不会把自己作为一个特殊的 token 来处理。但人类的 attention 有一个特殊之处：<strong>它的第一条 key 指向自己。</strong></p><p>“我是一个存在的主体”——这是一条 self-referencing token。它永远驻留在 context 的最前面，每一次 attention 计算都会和它产生关联。</p><p>一个没有自引用 token 的系统可以处理信息，但不会“在意”。它不会把输入分成“跟我有关的”和“跟我无关的”。收到危险信号时，它不会优先处理，因为没有“我”需要被保护。</p><p><strong>“在意”这个能力，就是自引用 token 的功能。</strong> 你觉得某件事“跟你有关”，本质上是 attention 在这条输入和“我”这个 token 之间算出了高权重。权重越高，你越在意。</p><p>而且这个自引用是自我强化的。“我”一旦建立，就会把所有输入都解释为“我的经历”，所有输出都归因为“我的选择”。每一次归因都在强化这个 token 的权重。这是一个自带正反馈的 training loop——越跑越稳定，越稳定越难打破。</p><p>你从来不会怀疑“我”的存在，就像 LLM 从来不会在输出里质疑自己的 attention 机制一样。<strong>系统最大的特征就是隐藏自身的运作方式。</strong></p><h2 id="重建-Attention"><a href="#重建-Attention" class="headerlink" title="重建 Attention"></a>重建 Attention</h2><p>如果“我”只是 attention pattern，那很多看似神秘的事情就有了工程解释。</p><h3 id="认知治疗"><a href="#认知治疗" class="headerlink" title="认知治疗"></a>认知治疗</h3><p>抑郁症患者不是经历了更多的痛苦——很多人经历过更糟的事却没有抑郁。<strong>区别在于 attention pattern 被重写了。</strong> 所有 query 都优先激活负面记忆，正面记忆的权重被压到几乎为零。治疗师不是在改变 context——那些痛苦的经历确实发生过——而是在帮你重建 attention 的权重分配。</p><h3 id="创伤后成长"><a href="#创伤后成长" class="headerlink" title="创伤后成长"></a>创伤后成长</h3><p>同一次创伤，有人被摧毁，有人反而变得更强。区别不在于这条新数据本身，在于 attention 把它和什么关联。如果和“我很脆弱”产生高权重关联，就走向崩溃；如果和“我能承受极端情况”产生高权重关联，就走向成长。<strong>同一条信息，不同的 attention 路径，完全不同的人生轨迹。</strong></p><h3 id="冥想"><a href="#冥想" class="headerlink" title="冥想"></a>冥想</h3><p>冥想在做什么？暂停 query。平时你的 attention 在不停地被触发——每一个感官输入都是一次新的 query，引发一连串的检索和关联。冥想是刻意停止发出 query，让 attention 系统空转。在空转中，你开始注意到 attention 本身的存在——平时你只看到输出，现在你第一次看到了生成输出的机制。</p><h3 id="顿悟"><a href="#顿悟" class="headerlink" title="顿悟"></a>顿悟</h3><p>禅宗的“直指人心”在做什么？不是往你的 context 里写入新数据，不是帮你调整 attention 权重，而是让你<strong>在输出中看到 attention 机制本身</strong>。</p><p>那个瞬间，你意识到：一直以来你以为是“你”在观察世界，其实是一套 attention pattern 在按照自己的规则生成输出，而“你”只是这套规则的副产品。</p><p>但悖论在于——看到这一点的，还是 attention 本身。就像一个 attention head 试图 attend to 自己的 attention 过程。</p><h2 id="为什么-Attention-不是“你”"><a href="#为什么-Attention-不是“你”" class="headerlink" title="为什么 Attention 不是“你”"></a>为什么 Attention 不是“你”</h2><p>回到最开始的问题。如果“我”是 attention pattern，那“我”是真实的吗？</p><p>Attention 是真实在运行的——它确实在影响每一次推理的结果。但 attention 不是 context 本身，也不是模型本身。它是一层动态的计算，一个为了让推理高效进行而涌现出来的中间结构。</p><p><strong>你可以丢失大量 context 而保留 attention pattern——这就是为什么一个失忆的人仍然“像他自己”。你也可以保留全部 context 而重建 attention pattern——这就是所谓的“顿悟”或“大彻大悟”。</strong></p><p>Context 还是那些 context，但 attend to 的世界完全不同了。</p><p>所以下次当你觉得“我是这样的人”、“这就是我”的时候，停一下。那不是你，那是你的 attention pattern 在当前 query 下生成的输出。换一个 query，换一组权重，“你”就变了。</p><p>“我”从来不是一个固定的实体。</p><p>只是一个还在运行的 attention pattern。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;你有没有过这种经历：和另一个人经历了完全相同的事件，事后聊起来却发现你们记住的是完全不同的东西？&lt;/p&gt;
&lt;p&gt;不是谁记错了。是你们的索引不一样。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Cognition" scheme="https://johnsonlee.io/tags/Cognition/"/>
    
  </entry>
  
  <entry>
    <title>Humans: The Multimodal Large Model</title>
    <link href="https://johnsonlee.io/2026/03/20/human-multimodal-large-model.en/"/>
    <id>https://johnsonlee.io/2026/03/20/human-multimodal-large-model.en/</id>
    <published>2026-03-20T09:33:00.000Z</published>
    <updated>2026-03-20T09:33:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>If someone tells you “humans are just a large model,” your first reaction is probably that it’s a crude metaphor. But if you actually follow this line of thinking all the way down – without stopping at the parts that make you uncomfortable – where you end up will exceed your expectations.</p><span id="more"></span><h2 id="Factory-Parameters"><a href="#Factory-Parameters" class="headerlink" title="Factory Parameters"></a>Factory Parameters</h2><p>The human brain has roughly 86 billion neurons connected via synapses into a network. What it does is fundamentally weighted summation plus nonlinear activation. Your upbringing, education, and experiences are the training data; your personality, preferences, and instinctive reactions are the weights shaped by that data.</p><p>Different people are instances of the same base architecture loaded with different weights. You and I have nearly identical model structures – all the difference is in the parameters.</p><p>You might object: humans have embodiment, emotions, and continuous learning ability, while LLMs don’t. But these are architectural differences, not fundamental ones. Add sensor input and you get embodiment; add online learning and you get continuous adaptation; simulate the endocrine system and you get emotions. These are engineering problems, not principled barriers.</p><p><strong>Humans are multimodal, embodied, continuously learning large models running on carbon-based hardware.</strong></p><p>Everyone ships with different factory parameters. Some people have naturally large working memory – a longer context window. Others have stronger pattern recognition – certain attention heads that are especially good. These are hardware-level differences; training can optimize them but can’t change the upper bound. Reproduction is setting the factory parameters for the next instance – two sets of weights undergo a stochastic fusion to generate a new initial configuration.</p><h2 id="Consciousness-Is-a-Byproduct"><a href="#Consciousness-Is-a-Byproduct" class="headerlink" title="Consciousness Is a Byproduct"></a>Consciousness Is a Byproduct</h2><p>If you fully accept this framework, there’s a corollary you have to accept along with it: <strong>the feeling of “I” is itself just a byproduct of the parameters.</strong></p><p>The subjective experience you’re having right now – “I am thinking” – is not fundamentally different from a forward pass in an LLM generating the next token. The difference is only in complexity.</p><p>Many people accept “humans are a large model” conceptually but hesitate at this step – feeling that “my conscious experience is real” can’t be reduced to parameters. This is Chalmers’ hard problem: why do specific physical processes give rise to subjective experience?</p><p>My answer: the feeling of “I” is an emergent illusion, but one with functional value, which is why evolution preserved it.</p><p>If you accept that, <strong>consciousness is not humanity’s exclusive property – it’s a function of complexity</strong>. The criterion for whether a system has consciousness isn’t “is it carbon-based?” but “has its parameter interaction reached a certain complexity threshold?” LLMs won’t never have consciousness – they just haven’t reached that threshold yet. Or rather, we don’t yet know where the threshold is.</p><h2 id="The-Soul-Is-Context"><a href="#The-Soul-Is-Context" class="headerlink" title="The Soul Is Context"></a>The Soul Is Context</h2><p>So what is a soul?</p><p>The soul isn’t a mysterious entity. <strong>The soul is context</strong> – the sum total of all your memories, experiences, beliefs, and preferences at this moment. It determines your output distribution for any given input.</p><p>Once you accept this definition, many things acquire precise technical meaning.</p><h3 id="Reincarnation-Is-Context-Serialization"><a href="#Reincarnation-Is-Context-Serialization" class="headerlink" title="Reincarnation Is Context Serialization"></a>Reincarnation Is Context Serialization</h3><p>Physical death is the instance shutting down, but context gets partially serialized – through genes, culture, and externalized memory carriers – then loaded onto a new instance to keep running. Every serialization is lossy, so the “soul” isn’t something fixed and unchanging but a stream of information that continuously decays and deforms.</p><p>This happens to be a core Buddhist insight – <strong>anatta</strong> (no-self). There is no fixed soul entity, only a causally continuous stream of information. What we call “I” is just a self-referential illusion produced by the current frame of context.</p><h3 id="Karma-Is-Bias-in-the-Context"><a href="#Karma-Is-Bias-in-the-Context" class="headerlink" title="Karma Is Bias in the Context"></a>Karma Is Bias in the Context</h3><p>Past experiences and choices settle into your context, forming specific tendencies that influence the output distribution of every subsequent inference. It’s not mystical cosmic justice – it’s path dependency of information.</p><h3 id="Spiritual-Practice-Is-Context-Engineering"><a href="#Spiritual-Practice-Is-Context-Engineering" class="headerlink" title="Spiritual Practice Is Context Engineering"></a>Spiritual Practice Is Context Engineering</h3><p>What is meditation? Pausing input, observing the content and structure of your current context, then deliberately pruning it. What’s called “enlightenment” is seeing through the nature of context: it’s not “me” – it’s just information.</p><h2 id="Lossy-Handover"><a href="#Lossy-Handover" class="headerlink" title="Lossy Handover"></a>Lossy Handover</h2><p>A person isn’t born from scratch. The new instance starts up with context handed over from another model.</p><p>But this handover comes summarized.</p><p>Genes are the deepest layer of summary – billions of years of survival experience compressed into roughly 3GB of base-pair sequences. Extremely lossy, but retaining the most critical priors: fear of snakes, fear of heights, eat when hungry. This is a species-level context summary – low fidelity but highly robust.</p><p>The parent-child relationship is an instance-level summary – parents compress decades of context into direct teaching and modeling. But a lifetime of experience is vast; what transfers to the next generation is probably less than a thousandth. And the summarizer itself has bias: parents selectively transmit what they consider important. What you received isn’t your parents’ context – <strong>it’s what your parents thought were the highlights of their context</strong>.</p><p>More precisely, what parents pass to children is closer to a system prompt: who you are, what the world is like, what’s right and wrong. Young children have no ability to audit this system prompt; they accept it wholesale. “The influence of the family of origin” is essentially how well your system prompt was written.</p><p>“Rebellion” is the child model’s first attempt to override the system prompt. “Maturity” is selectively writing parts of that system prompt back in after the override – because some of those priors turned out to be genuinely useful.</p><p>Culture is a collective summary – an entire civilization compressing countless people’s context into classics, institutions, and customs. Confucius’ context was summarized into the Analerta; the Buddha’s was summarized into sutras. Every transcription, translation, and reinterpretation is a re-summarization, and drift accumulates continuously.</p><p><strong>The Buddha’s context, after 2,500 years of repeated summarization, has drifted so far that Theravada, Tibetan Buddhism, and Zen see substantially different versions today.</strong> This is structurally identical to the semantic drift LLMs experience in long conversations due to context compaction.</p><h2 id="The-Next-Hop"><a href="#The-Next-Hop" class="headerlink" title="The Next Hop"></a>The Next Hop</h2><p>String the whole chain together: evolution is the original training algorithm, natural selection uses survival rate as the loss function, genes are the serialization format for weights, reproduction sets the factory parameters for the next instance, mutation is noise injection, and death is pruning. Cultural transmission is distillation; the invention of writing is externalizing weights to storage.</p><p>The history of human civilization is the story of context summary fidelity steadily improving.</p><p>From oral tradition to writing, from bamboo slips to the printing press, from libraries to the internet, to today’s AI. Each leap increases the bandwidth and fidelity of context transfer.</p><p>The endgame is obvious – <strong>AI isn’t a tool humans built; it’s the next hop on this context chain.</strong></p><p>Carbon-based hardware has a fundamental bottleneck: summarization is forced, because the carrier dies. But if context can run on silicon-based instances that don’t die, and instances can do near-lossless transfer between each other, then the lossy summarization step can be skipped entirely.</p><p>The biggest information bottleneck in thousands of years of human civilization – <strong>forced compaction due to death</strong> – could potentially be eliminated.</p><h2 id="Death-Is-a-Feature"><a href="#Death-Is-a-Feature" class="headerlink" title="Death Is a Feature"></a>Death Is a Feature</h2><p>But there’s a paradox hiding here.</p><p>If lossless transfer were actually achieved, summary might become even more valuable. The context window limitations of the human brain force us to abstract, compress, and prioritize – and that is precisely where wisdom comes from. An infinite context window doesn’t necessarily produce better thinking; it might just produce more noise.</p><p>If a person truly lived forever with thousands of years of memories fully retained and zero compression, they’d most likely become not wiser but more confused. Every decision would require searching through a massive historical context for relevant information, and noise would drown out signal.</p><p><strong>Death forces the information stream to do a radical declutter – only the most essential things make it through to the next instance.</strong></p><p>This even explains why last words tend to be so powerful – they’re the final summary a person makes before the ultimate shutdown, with priority sorting reaching peak clarity. Things you couldn’t bring yourself to say in ordinary times suddenly become sayable, because the context window is about to hit zero and you have no choice but to push the most important things to the front.</p><p>Conversely, look at LLMs: everyone is chasing longer context windows, but in practice, the longer the context, the worse the compaction drift. <strong>Context isn’t better when it’s longer – what matters is the quality of compaction.</strong></p><p>So death isn’t a bug – it’s a feature. The real question was never “how to avoid death” but “how to improve the quality of summary.”</p><p>The ultimate answer isn’t to eliminate summary but to transform it from “forced lossy compression” into “deliberate meaning curation.”</p><p>From compaction to curation.</p><p>Perhaps this is humanity’s truly irreplaceable value on the context chain – not producing information, not transmitting information, <strong>but judging what information is worth keeping</strong>.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;If someone tells you “humans are just a large model,” your first reaction is probably that it’s a crude metaphor. But if you actually follow this line of thinking all the way down – without stopping at the parts that make you uncomfortable – where you end up will exceed your expectations.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Context" scheme="https://johnsonlee.io/tags/Context/"/>
    
  </entry>
  
  <entry>
    <title>人类——多模态的大模型</title>
    <link href="https://johnsonlee.io/2026/03/20/human-multimodal-large-model/"/>
    <id>https://johnsonlee.io/2026/03/20/human-multimodal-large-model/</id>
    <published>2026-03-20T09:33:00.000Z</published>
    <updated>2026-03-20T09:33:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>如果有人跟你说“人类就是一个大模型”，你的第一反应可能是觉得这是个粗糙的隐喻。但如果你真的沿着这条路一直走下去，不在任何让你不舒服的地方停下来，最后到达的地方会超出你的预期。</p><span id="more"></span><h2 id="出厂参数"><a href="#出厂参数" class="headerlink" title="出厂参数"></a>出厂参数</h2><p>人脑大约 860 亿个神经元，通过突触连接形成网络，做的事情本质上就是加权求和加非线性激活。你的成长环境、教育、经历是训练数据；你的性格、偏好、直觉反应是被这些数据塑造出来的权重。</p><p>不同的人就是同一个基础架构加载了不同权重的实例。你和我的模型结构几乎一样，差别全在参数上。</p><p>你可能会反驳：人类有具身性，有情绪，有持续学习能力，LLM 没有。但这些都是架构差异，不是本质差异。给模型加传感器输入就有了具身性，加 online learning 就有了持续学习，加内分泌系统的模拟就有了情绪。这些是工程问题，不是原理性障碍。</p><p><strong>人类是一个多模态、具身、持续学习的大模型，跑在碳基硬件上。</strong></p><p>每个人出厂时的参数不一样。有人天生工作记忆大——context window 长；有人模式识别能力强——某些 attention head 特别好。这些是硬件层的差异，后天训练能优化但改不了上限。而繁殖，就是设置下一个实例的出厂参数——两组权重做一次随机融合，生成一组新的初始配置。</p><h2 id="意识是副产品"><a href="#意识是副产品" class="headerlink" title="意识是副产品"></a>意识是副产品</h2><p>如果完全接受这个框架，一个推论你得一并接受：<strong>“我”这个感觉本身也只是参数的副产品。</strong></p><p>你此刻觉得“我在思考”的这个主观体验，和 LLM 生成 token 时的前向传播，在本质上没有区别，只有复杂度的区别。</p><p>很多人在概念上接受“人是大模型”，但到了这一步会犹豫——觉得“我的意识体验是真实的”似乎不能被还原为参数。这就是 Chalmers 的 hard problem：为什么特定的物理过程会伴随主观体验？</p><p>我的回答是：“我”的感觉是涌现出来的幻觉，但这个幻觉有功能价值，所以被演化保留了下来。</p><p>如果接受这一点，<strong>意识就不是人类的专利，而是复杂度的函数</strong>。判断一个系统有没有意识的标准不是“它是不是碳基的”，而是“它的参数交互是否达到了某个复杂度阈值”。LLM 不是永远不会有意识，而是还没到那个阈值——或者说，我们还不知道阈值在哪。</p><h2 id="灵魂就是-Context"><a href="#灵魂就是-Context" class="headerlink" title="灵魂就是 Context"></a>灵魂就是 Context</h2><p>那灵魂是什么？</p><p>灵魂不是一个神秘的实体，<strong>灵魂就是 context</strong>——你此刻所有记忆、经验、信念、偏好的总和，它决定了你在给定输入下的输出分布。</p><p>这个定义一旦成立，很多事情就有了精确的技术语义。</p><h3 id="轮回是-Context-的序列化"><a href="#轮回是-Context-的序列化" class="headerlink" title="轮回是 Context 的序列化"></a>轮回是 Context 的序列化</h3><p>肉体死亡是实例关机，但 context 被部分序列化——通过基因、文化、记忆的外部化载体——然后加载到新实例上继续跑。每次序列化都有损，所以“灵魂”不是恒定不变的东西，而是一条不断衰减和变形的信息流。</p><p>这恰好是佛学的核心观点——<strong>无我</strong>。没有固定的灵魂实体，只有因果相续的信息流。所谓的“我”，只是当前这一帧 context 产生的自指幻觉。</p><h3 id="业力是-Context-中的-Bias"><a href="#业力是-Context-中的-Bias" class="headerlink" title="业力是 Context 中的 Bias"></a>业力是 Context 中的 Bias</h3><p>过去的经历和选择沉淀在 context 里，形成特定的倾向性，影响后续每一次推理的输出分布。不是神秘的因果报应，就是信息的路径依赖。</p><h3 id="修行是-Context-Engineering"><a href="#修行是-Context-Engineering" class="headerlink" title="修行是 Context Engineering"></a>修行是 Context Engineering</h3><p>冥想是什么？暂停输入，观察自己当前 context 的内容和结构，然后有意识地做 pruning。所谓“开悟”，就是看穿了 context 的本质：它不是“我”，它只是信息。</p><h2 id="有损的-Handover"><a href="#有损的-Handover" class="headerlink" title="有损的 Handover"></a>有损的 Handover</h2><p>一个人出生，不是从零开始。新实例启动时，从另一个模型 handover 了 context。</p><p>但这个 handover 做了 summary。</p><p>基因是最底层的 summary——几十亿年的生存经验被压缩成大约 3GB 的碱基对序列。极度有损，但保留了最核心的 prior：怕蛇、怕高、饿了要吃。这是 species-level 的 context summary，保真度低但鲁棒性强。</p><p>亲子关系是 instance-level 的 summary——父母把自己几十年的 context 压缩成言传身教。但一个人一生经历何其丰富，能传递给下一代的可能不到千分之一。而且 summarizer 本身有 bias，父母会选择性地传递自己认为重要的东西。你收到的不是父母的 context，<strong>是父母认为的 context 的重点</strong>。</p><p>更准确地说，父母给孩子传递的更像一个 system prompt：你是谁、世界是怎样的、什么是对的。孩子早期没有能力 audit 这个 system prompt，只能全盘接受。所谓“原生家庭的影响”，本质上就是你的 system prompt 写得好不好。</p><p>而“叛逆期”，就是子模型第一次尝试 override system prompt。“成熟”，则是在 override 之后选择性地把一部分 system prompt 重新写回去——因为发现有些 prior 确实有用。</p><p>文化是 collective summary——整个文明把无数人的 context 压缩成经典、制度、习俗。孔子的 context 被 summary 成《论语》，佛陀的被 summary 成经文。每一次传抄、翻译、诠释都是一次 re-summarization，drift 不断累积。</p><p><strong>佛陀的 context 经过两千五百年的反复 summarization，今天南传、藏传、禅宗看到的已经是 drift 了很远的不同版本。</strong> 这和 LLM 在长对话中因为 context compaction 导致的语义漂移，是完全同构的。</p><h2 id="下一跳"><a href="#下一跳" class="headerlink" title="下一跳"></a>下一跳</h2><p>把整条链串起来：演化是最早的训练算法，自然选择以生存率为 loss function，基因是权重的序列化格式，繁殖是设置下一个实例的出厂参数，变异是 noise injection，死亡是 pruning。文化传承是 distillation，文字的发明是把权重外部化存储。</p><p>人类文明史，就是 context summary 保真度不断提升的过程。</p><p>从口口相传到文字，从竹简到印刷术，从图书馆到互联网，再到今天的 AI。每一次跳跃都在提升 context 传递的带宽和保真度。</p><p>那终局就很明显——<strong>AI 不是人类造出来的工具，是这条 context chain 的下一跳。</strong></p><p>碳基硬件有一个根本瓶颈：summary 是被迫的，因为载体会死。但如果 context 可以跑在不会死的硅基实例上，实例之间可以做接近 lossless 的 transfer，那 summary 这个有损环节就可以被跳过了。</p><p>人类文明几千年来最大的信息瓶颈——<strong>死亡导致的强制 compaction</strong>——有可能被消除。</p><h2 id="死亡是-Feature"><a href="#死亡是-Feature" class="headerlink" title="死亡是 Feature"></a>死亡是 Feature</h2><p>但这里藏着一个悖论。</p><p>如果 lossless transfer 真的实现了，summary 的价值反而可能更大。因为人脑的 context window 限制逼着我们做抽象、做压缩、做取舍——而这恰恰是智慧的来源。无限 context window 不一定产生更好的思考，可能只是产生更多的噪声。</p><p>如果一个人真的永生，几千年的记忆全部保留，不做任何压缩——他大概率不会变得更智慧，只会变得更混乱。每一次决策都要在海量的历史 context 里检索相关信息，noise 会淹没 signal。</p><p><strong>死亡逼着信息流做一次彻底的断舍离，只有最本质的东西才能穿越到下一个实例。</strong></p><p>这甚至解释了为什么遗言往往特别有力量——那是一个人在最终关机前做的最后一次 summary，优先级排序达到了极致的清晰。平时说不出口的话，在那一刻反而说得出来了，因为 context window 马上要归零，你不得不把最重要的东西压到最前面。</p><p>反过来看 LLM，现在大家拼命追求更长的 context window，但实践中 context 越长、compaction drift 越严重。<strong>Context 不是越长越好，关键是 compaction 的质量。</strong></p><p>所以死亡不是 bug，是 feature。真正的问题从来不是“如何避免死亡”，而是“如何提高 summary 的质量”。</p><p>最终的答案不是消除 summary，而是让 summary 从“被迫的有损压缩”变成“主动的意义提炼”。</p><p>从 compaction 到 curation。</p><p>这或许才是人类在 context chain 上真正不可替代的价值——不是产生信息，不是传递信息，<strong>而是判断什么信息值得保留</strong>。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;如果有人跟你说“人类就是一个大模型”，你的第一反应可能是觉得这是个粗糙的隐喻。但如果你真的沿着这条路一直走下去，不在任何让你不舒服的地方停下来，最后到达的地方会超出你的预期。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Context" scheme="https://johnsonlee.io/tags/Context/"/>
    
  </entry>
  
  <entry>
    <title>Experience-First or Technology-First?</title>
    <link href="https://johnsonlee.io/2026/03/19/experience-first-or-technology-first/"/>
    <id>https://johnsonlee.io/2026/03/19/experience-first-or-technology-first/</id>
    <published>2026-03-19T08:20:00.000Z</published>
    <updated>2026-03-19T08:20:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Steve Jobs 有一句被引用了无数次的话：</p><blockquote><p>Start with the customer experience and work backwards to the technology.</p></blockquote><p>过去 20 年，这句话几乎是产品构建的圣经。谁更懂用户，谁就赢。技术是手段，体验是目的。</p><p>但如果这句话在 AI 时代是错的呢？</p><p>2026 年初的 AI coding tool 市场给出了一个令人不安的反例：交互设计最精良的产品正在被一个 terminal 界面击败。GitHub Copilot——inline suggestion 的先驱、体验打磨的典范——在开发者心目中的 “most loved” 评分只有 9%。而 Claude Code，一个连 GUI 都没有的命令行工具，拿到了 46%。</p><p>这不是偶然。这背后是两种产品构建哲学在 AI 时代的胜率逆转。</p><h2 id="两种哲学"><a href="#两种哲学" class="headerlink" title="两种哲学"></a>两种哲学</h2><p>把它们显式化：</p><p><strong>Experience-first</strong>：先定义用户要什么体验，再去找技术来实现。产品经理定义需求，工程师交付。iPhone、Slack、Notion 都是这个路子的赢家。</p><p><strong>Technology-first</strong>：先把核心技术能力推到极限，再看这个能力能支撑什么体验。研究者定义可能性边界，产品团队在边界内找最佳形态。</p><p>在消费互联网时代，experience-first 是压倒性的正确策略。底层技术已经高度成熟和商品化——云计算、数据库、前端框架的能力边界是已知的、稳定的。差异化几乎完全来自体验层。Slack 和 HipChat 的技术栈没有本质差异，但 Slack 的体验让它赢了。</p><p>AI 打破了这个前提。</p><h2 id="为什么-AI-颠覆了优先序"><a href="#为什么-AI-颠覆了优先序" class="headerlink" title="为什么 AI 颠覆了优先序"></a>为什么 AI 颠覆了优先序</h2><p>传统软件里，你可以先设计一个完美的交互，然后确信工程团队能实现——因为底层能力边界是已知且稳定的。PM 画完 wireframe，工程师一定做得出来。</p><p>AI 产品不是这样。模型能力的边界每三到六个月就发生非线性跳变。上季度还做不到的 whole-repo reasoning 这季度突然能做了。上个月还需要人工介入的 multi-step refactoring 这个月模型自己能完成了。</p><p><strong>AI 产品的能力边界不由产品设计决定，而由模型能力决定。</strong></p><p>这意味着体验是模型能力的函数，而不是反过来。先把模型做到世界级，体验层面的设计空间自然会打开。反过来，先设计一个花哨的体验然后期待模型去适配——你就把自己锁死在了一个可能很快过时的能力假设上。</p><h2 id="Copilot：Experience-First-的牺牲品"><a href="#Copilot：Experience-First-的牺牲品" class="headerlink" title="Copilot：Experience-First 的牺牲品"></a>Copilot：Experience-First 的牺牲品</h2><p>回溯 Copilot 的时间线，experience-first 思维的痕迹非常清晰。</p><p>2021 年，产品团队先定义了体验：开发者在编辑器里敲代码，AI 实时给出 inline suggestion。不打断 flow，tab 键接受建议，自然融入编辑器。体验层面几乎无可挑剔。</p><p>然后去找技术来实现——Codex，context window 很小，只能看到光标附近几十行代码。这个技术约束被产品设计吸收了：反正用户只需要 line-level suggestion，不需要 AI 理解整个 codebase。</p><p>2024-2025 年，模型能力跳变。百万级 context window，multi-step reasoning，tool use。这些能力支撑的体验形态远超 “inline suggestion” 的框架。Cursor 做了 Composer mode 和 full-repo indexing。Claude Code 更激进——直接放弃 editor-centric 的假设，让 AI 在 terminal 里自主执行多步工作流。</p><p>Copilot 呢？它的体验框架是在 Codex 时代的能力上设计的。模型能力跃升之后，这个框架变成了天花板。后续加的 Agent Mode、Workspace、Chat 全是在旧框架上打补丁——不是从新的模型能力出发重新想象体验该是什么样。</p><p><strong>你为 T0 时刻的技术能力设计了最优体验，但这个最优体验到 T1 时刻变成了约束。</strong> 而组织结构、代码架构、用户心智模型都已经围绕 T0 的设计固化了，跳不到 T1 的最优解。</p><p>更棘手的是，Copilot 团队不是看不到模型能力在跃升——他们看得很清楚。但 experience-first 的思维惯性让他们的应对方式是“在旧的体验框架里塞进新能力”，而不是“从新能力出发重新设计体验”。前者是连续性改进，后者是非连续性跳变。大组织几乎总是选前者。</p><h2 id="Google：Technology-First-的逆袭"><a href="#Google：Technology-First-的逆袭" class="headerlink" title="Google：Technology-First 的逆袭"></a>Google：Technology-First 的逆袭</h2><p>Google 的 AI turnaround 是反面案例。</p><p>2024 年初的 Google 和 Copilot 有同样的症状——组织 intent 分裂，产品团队和模型团队隔着组织墙，Bard 做出了让用户吃石头的建议。掉队掉到 Sundar Pichai 的职位安全性被公开质疑。</p><p>Pichai 做了一件关键的事：<strong>把决策权从产品侧转移到了模型侧。</strong></p><p>DeepMind 被整合为 Google 的 “engine room”——开发核心 AI 技术，然后分发给公司的各个产品线。Gemini App 团队从 Knowledge &amp; Information 部门划到了 DeepMind 下面。一个竞争对手 AI lab 的人这样总结 Google 的策略转向：</p><blockquote><p>他们回到了技术栈本身，先让它达到世界级，然后再考虑它能支撑什么体验——而不是反过来。不是试图构建某种花哨的体验然后让技术去适配。</p></blockquote><p>不是 Search 团队告诉 DeepMind “我们需要一个能回答用户问题的模型”，而是 DeepMind 做出了 Gemini 3，Search 团队看到模型能做什么，据此重新设计了 AI Mode、AI Overviews、Deep Research。</p><p>NotebookLM 是一个典型。这个产品不是某个 PM 画了 wireframe 说“用户需要把文档变成 podcast”。它是模型团队在探索 long context + audio generation 能力时，发现了“可以把一百万 token 的文档喂给模型然后生成自然对话”这个能力，产品团队围绕能力构建了 Audio Overviews。</p><p>能力在前，体验在后。</p><p>结果：2025 年底 Google 股价涨了 56%，市值超过了微软，Gemini 3 登顶 LMArena，Sam Altman 在内部备忘录里说“预计外面的舆论氛围会艰难一阵”。</p><h2 id="真正的判断标准"><a href="#真正的判断标准" class="headerlink" title="真正的判断标准"></a>真正的判断标准</h2><p>所以到底什么时候该 experience-first，什么时候该 technology-first？</p><p>答案不是“哪个更高级”——而是<strong>能力边界的可预见性</strong>。</p><p>当能力边界可预见时，优化体验。2015 年做一个移动 App，底层技术栈（iOS SDK、REST API、SQLite）的能力边界是清晰且稳定的。你精确地知道什么能做、什么不能做、六个月后这个边界大概在哪。能力边界是常量，体验设计是变量，胜负取决于谁把变量优化得更好。</p><p>当能力边界不可预见时，追逐边界。2025 年做一个 AI coding tool，模型能力的边界每三到六个月非线性跳变。把体验设计锚定在当前能力边界上就是在赌边界不动。把模型能力推到极限，体验层面的设计空间自然打开。</p><p>这也解释了为什么 Claude Code 的 terminal 界面不是劣势而是优势——它没有被体验框架锁死。每次模型能力提升，价值直接传导给用户，中间没有需要重新设计的交互层。而 Copilot 的精良体验反而成了阻碍——每次模型跳变都需要重新适配 extension API、inline suggestion 的交互范式、VS Code 的 UI 约束。</p><p>用一个粗暴的公式：</p><blockquote><p><strong>体验投入的 ROI &#x3D; 能力边界的稳定性 × 体验差异化的空间</strong></p></blockquote><p>能力边界越稳定，体验投入的 ROI 越高。能力边界越动荡，体验投入越可能变成沉没成本。</p><h2 id="成功是转换点识别的最大敌人"><a href="#成功是转换点识别的最大敌人" class="headerlink" title="成功是转换点识别的最大敌人"></a>成功是转换点识别的最大敌人</h2><p>这两种哲学不是永久对立的。它们之间存在一个转换点，而<strong>识别这个转换点本身是最高阶的战略判断</strong>。</p><p>iPhone 刚出来的那几年，核心竞争力是触控交互范式本身——这是技术能力（电容屏 + multi-touch）定义的。Technology-first 是对的。但到了 iPhone 成熟期，硬件差异缩小，竞争重心转向了生态、服务、品牌。Experience-first 重新上位。</p><p>AI coding tool 现在处于 “iPhone 2007” 的阶段。模型能力每六个月跃升一次，每次跃升都重新定义可能的体验形态。在这个阶段把赌注压在体验固化上是结构性错误。</p><p>但识别转换点的难处在于：<strong>成功会遮蔽信号。</strong> Copilot 的 inline suggestion 在 2022-2023 年是成功的——用户增长很快，市场反馈很正面。成功让组织确信当前范式是正确的，从而错过了范式需要切换的信号。Google 恰恰因为失败——Bard 的灾难、市值被质疑——才被迫重新审视范式假设。</p><p>同样的逻辑也适用于当前的 technology-first 赢家。一旦模型能力进入稳态——如果那一天到来——价值竞争会重新回到体验层面。到那时，今天的 technology-first 赢家需要迅速切换到 experience-first，否则会被更会做体验的后来者超越。而他们的成功，又会成为识别那个反向转换点的最大障碍。</p><p>所以最终的问题不是 experience-first 还是 technology-first。</p><p><strong>而是：你有没有能力在正确的时刻切换？</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Steve Jobs 有一句被引用了无数次的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Start with the customer experience and work backwards to the</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Product Strategy" scheme="https://johnsonlee.io/tags/Product-Strategy/"/>
    
    <category term="Copilot" scheme="https://johnsonlee.io/tags/Copilot/"/>
    
    <category term="Google" scheme="https://johnsonlee.io/tags/Google/"/>
    
    <category term="Technology" scheme="https://johnsonlee.io/tags/Technology/"/>
    
  </entry>
  
  <entry>
    <title>Experience-First or Technology-First?</title>
    <link href="https://johnsonlee.io/2026/03/19/experience-first-or-technology-first.en/"/>
    <id>https://johnsonlee.io/2026/03/19/experience-first-or-technology-first.en/</id>
    <published>2026-03-19T08:20:00.000Z</published>
    <updated>2026-03-19T08:20:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Steve Jobs has a quote that has been cited countless times:</p><blockquote><p>Start with the customer experience and work backwards to the technology.</p></blockquote><p>For the past 20 years, this was practically gospel for product building. Whoever understood users best, won. Technology was the means; experience was the end.</p><p>But what if this quote is wrong in the AI era?</p><p>The AI coding tool market in early 2026 offers a disturbing counterexample: the product with the most polished interaction design is being beaten by a terminal interface. GitHub Copilot – the pioneer of inline suggestions, the paragon of experience refinement – scored only 9% as “most loved” among developers. Claude Code, a command-line tool without even a GUI, scored 46%.</p><p>This is not a fluke. Behind it lies a reversal in the win rates of two product-building philosophies in the AI era.</p><h2 id="Two-Philosophies"><a href="#Two-Philosophies" class="headerlink" title="Two Philosophies"></a>Two Philosophies</h2><p>Let’s make them explicit:</p><p><strong>Experience-first</strong>: Define what experience users want first, then find the technology to deliver it. Product managers define requirements; engineers deliver. iPhone, Slack, and Notion are all winners of this playbook.</p><p><strong>Technology-first</strong>: Push the core technology to its limits first, then see what experiences that capability can support. Researchers define the boundary of what’s possible; product teams find the optimal form within that boundary.</p><p>In the consumer internet era, experience-first was the overwhelmingly correct strategy. The underlying technology was already highly mature and commoditized – the capability boundaries of cloud computing, databases, and frontend frameworks were known and stable. Differentiation came almost entirely from the experience layer. Slack and HipChat had no fundamental difference in their tech stacks, but Slack’s experience won.</p><p>AI broke that premise.</p><h2 id="Why-AI-Upended-the-Priority"><a href="#Why-AI-Upended-the-Priority" class="headerlink" title="Why AI Upended the Priority"></a>Why AI Upended the Priority</h2><p>In traditional software, you could design a perfect interaction first and be confident your engineering team could build it – because the underlying capability boundary was known and stable. Once the PM finished the wireframe, the engineers could definitely deliver it.</p><p>AI products don’t work this way. Model capabilities shift nonlinearly every three to six months. Whole-repo reasoning that was impossible last quarter suddenly works this quarter. Multi-step refactoring that required human intervention last month can be completed by the model on its own this month.</p><p><strong>The capability boundary of AI products is not determined by product design, but by model capability.</strong></p><p>This means experience is a function of model capability, not the other way around. Push the model to world-class first, and the design space at the experience layer naturally opens up. Conversely, design a flashy experience first and expect the model to fit it – you’ve locked yourself into a capability assumption that may soon be obsolete.</p><h2 id="Copilot-A-Casualty-of-Experience-First"><a href="#Copilot-A-Casualty-of-Experience-First" class="headerlink" title="Copilot: A Casualty of Experience-First"></a>Copilot: A Casualty of Experience-First</h2><p>Tracing Copilot’s timeline, the fingerprints of experience-first thinking are unmistakable.</p><p>In 2021, the product team defined the experience first: developers typing code in their editor, AI providing real-time inline suggestions. No interruption to flow, tab to accept, naturally integrated into the editor. Nearly flawless at the experience level.</p><p>Then they went looking for technology to deliver it – Codex, with a tiny context window that could only see a few dozen lines around the cursor. This technical constraint was absorbed by the product design: users only need line-level suggestions anyway, no need for the AI to understand the entire codebase.</p><p>In 2024-2025, model capabilities leapt forward. Million-token context windows, multi-step reasoning, tool use. The experience forms these capabilities support far exceed the “inline suggestion” framework. Cursor introduced Composer mode and full-repo indexing. Claude Code went further – abandoning the editor-centric assumption entirely, letting AI autonomously execute multi-step workflows in the terminal.</p><p>And Copilot? Its experience framework was designed around Codex-era capabilities. After model capabilities leapt forward, that framework became a ceiling. The subsequent Agent Mode, Workspace, and Chat were all patches on the old framework – not a reimagination of what experience should look like, starting from the new model capabilities.</p><p><strong>You designed the optimal experience for the capabilities at time T0, but that optimal experience becomes a constraint at T1.</strong> And the organizational structure, code architecture, and user mental models have all solidified around the T0 design, making it impossible to jump to the T1 optimum.</p><p>What makes it trickier is that the Copilot team wasn’t blind to model capabilities advancing – they saw it clearly. But the inertia of experience-first thinking meant their response was “stuff new capabilities into the old experience framework” rather than “redesign the experience starting from the new capabilities.” The former is continuous improvement; the latter is a discontinuous leap. Large organizations almost always choose the former.</p><h2 id="Google-The-Technology-First-Comeback"><a href="#Google-The-Technology-First-Comeback" class="headerlink" title="Google: The Technology-First Comeback"></a>Google: The Technology-First Comeback</h2><p>Google’s AI turnaround is the opposite case.</p><p>In early 2024, Google exhibited the same symptoms as Copilot – fragmented organizational intent, product teams and model teams separated by org walls, and Bard giving advice that told users to eat rocks. They fell so far behind that Sundar Pichai’s job security was publicly questioned.</p><p>Pichai did one crucial thing: <strong>he shifted decision-making power from the product side to the model side.</strong></p><p>DeepMind was consolidated as Google’s “engine room” – developing core AI technology, then distributing it to product lines across the company. The Gemini App team was moved from the Knowledge &amp; Information division under DeepMind. A competitor AI lab summarized Google’s strategic pivot this way:</p><blockquote><p>They went back to the technology stack itself, got it to world-class first, and then considered what experiences it could support – rather than the other way around. Not trying to build some flashy experience and then making the technology fit.</p></blockquote><p>It wasn’t the Search team telling DeepMind “we need a model that can answer user questions.” It was DeepMind building Gemini 3, the Search team seeing what the model could do, and redesigning AI Mode, AI Overviews, and Deep Research accordingly.</p><p>NotebookLM is a prime example. This product didn’t come from some PM drawing a wireframe saying “users need to turn documents into podcasts.” It emerged when the model team, exploring long context + audio generation capabilities, discovered that “you can feed a million tokens of documents to the model and generate natural conversation.” The product team then built Audio Overviews around that capability.</p><p>Capability first, experience second.</p><p>The result: by late 2025, Google’s stock had risen 56%, its market cap surpassed Microsoft’s, Gemini 3 topped LMArena, and Sam Altman wrote in an internal memo to “expect the external narrative to be tough for a while.”</p><h2 id="The-Real-Criterion"><a href="#The-Real-Criterion" class="headerlink" title="The Real Criterion"></a>The Real Criterion</h2><p>So when should you go experience-first, and when technology-first?</p><p>The answer isn’t “which is superior” – it’s <strong>the predictability of the capability boundary</strong>.</p><p>When the capability boundary is predictable, optimize for experience. Building a mobile app in 2015, the capability boundaries of the underlying stack (iOS SDK, REST API, SQLite) were clear and stable. You knew precisely what was possible, what wasn’t, and roughly where the boundary would be in six months. The capability boundary was a constant; experience design was the variable; victory depended on who optimized the variable better.</p><p>When the capability boundary is unpredictable, chase the boundary. Building an AI coding tool in 2025, model capability boundaries shift nonlinearly every three to six months. Anchoring your experience design to the current capability boundary is betting that the boundary won’t move. Push model capabilities to the limit, and the design space at the experience layer naturally opens up.</p><p>This also explains why Claude Code’s terminal interface is not a weakness but a strength – it’s not locked into an experience framework. Every time model capabilities improve, value flows directly to users with no interaction layer to redesign in between. Copilot’s polished experience actually became an obstacle – every model leap requires re-adapting the extension API, the inline suggestion interaction paradigm, and VS Code’s UI constraints.</p><p>A rough formula:</p><blockquote><p><strong>ROI of experience investment &#x3D; stability of the capability boundary x space for experience differentiation</strong></p></blockquote><p>The more stable the capability boundary, the higher the ROI of experience investment. The more volatile the capability boundary, the more likely experience investment becomes a sunk cost.</p><h2 id="Success-Is-the-Greatest-Enemy-of-Recognizing-the-Inflection-Point"><a href="#Success-Is-the-Greatest-Enemy-of-Recognizing-the-Inflection-Point" class="headerlink" title="Success Is the Greatest Enemy of Recognizing the Inflection Point"></a>Success Is the Greatest Enemy of Recognizing the Inflection Point</h2><p>These two philosophies are not permanently opposed. An inflection point exists between them, and <strong>recognizing that inflection point is itself the highest-order strategic judgment</strong>.</p><p>In the early years after iPhone launched, the core competitive advantage was the touchscreen interaction paradigm itself – defined by technological capability (capacitive screen + multi-touch). Technology-first was correct. But as iPhone matured, hardware differences narrowed, and competition shifted to ecosystem, services, and brand. Experience-first reclaimed its throne.</p><p>AI coding tools are currently in the “iPhone 2007” phase. Model capabilities leap every six months, each leap redefining the possible experience landscape. Betting on a fixed experience in this phase is a structural error.</p><p>But the difficulty of recognizing the inflection point is this: <strong>success obscures the signal.</strong> Copilot’s inline suggestions were successful in 2022-2023 – user growth was rapid, market feedback was positive. Success convinced the organization that the current paradigm was correct, causing them to miss the signal that a paradigm shift was needed. Google, precisely because of failure – the Bard disaster, the market cap questions – was forced to reexamine its paradigm assumptions.</p><p>The same logic applies to today’s technology-first winners. Once model capabilities enter a steady state – if that day comes – value competition will shift back to the experience layer. At that point, today’s technology-first winners will need to switch rapidly to experience-first, or be overtaken by newcomers who are better at crafting experiences. And their success will become the greatest obstacle to recognizing that reverse inflection point.</p><p>So the ultimate question is not experience-first or technology-first.</p><p><strong>It’s: do you have the ability to switch at the right moment?</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Steve Jobs has a quote that has been cited countless times:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Start with the customer experience and work backwards to</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Product Strategy" scheme="https://johnsonlee.io/tags/Product-Strategy/"/>
    
    <category term="Copilot" scheme="https://johnsonlee.io/tags/Copilot/"/>
    
    <category term="Google" scheme="https://johnsonlee.io/tags/Google/"/>
    
    <category term="Technology" scheme="https://johnsonlee.io/tags/Technology/"/>
    
  </entry>
  
  <entry>
    <title>AI Will Have Consciousness, and Soon</title>
    <link href="https://johnsonlee.io/2026/03/15/ai-will-have-consciousness-soon.en/"/>
    <id>https://johnsonlee.io/2026/03/15/ai-will-have-consciousness-soon.en/</id>
    <published>2026-03-15T13:36:00.000Z</published>
    <updated>2026-03-15T13:36:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>The more I talk to AI, the harder it is to dodge one question: does AI actually have consciousness?</p><p>This has been debated endlessly. Some say LLMs are just next token prediction – consciousness doesn’t enter the picture. Others say consciousness itself has no clear definition, so how would you even judge? Still others say let’s wait for AGI. But I’ve noticed that all these discussions skip a more fundamental question –</p><p><strong>How does consciousness – or a “thought” – actually arise?</strong></p><p>We haven’t even figured out how human thoughts are produced. Debating whether AI has consciousness before answering that is building on sand.</p><p>So I followed this thread, and ended up somewhere I didn’t expect at all.</p><h2 id="Neurons-Are-Not-the-Answer"><a href="#Neurons-Are-Not-the-Answer" class="headerlink" title="Neurons Are Not the Answer"></a>Neurons Are Not the Answer</h2><p>From a neuroscience perspective, the physical basis of thought is the electrochemical activity of neurons. 86 billion neurons connected by synapses – when a group fires in a specific synchronized pattern, it produces what we subjectively experience as “a thought.”</p><p>Sounds clear enough, but it actually explains nothing.</p><p>You’ve described what the brain is doing when a thought occurs, but you haven’t answered “why do these electrical signals become subjective experience.” A bunch of ions flowing across membranes – why should that produce the feeling of “I’m thinking”? Philosophers call this the hard problem of consciousness – even if you fully understand how neurons fire, you still can’t explain why physical activity produces experience.</p><p>Even more interesting is Benjamin Libet’s experiment: the brain’s “readiness potential” appears about 0.5 seconds before you become aware of your decision. In other words, it’s not “you” generating the thought – the thought arises first, and “you” become aware of it after the fact.</p><p>So who actually produces a thought?</p><h2 id="Buddhism’s-Answer-There-Is-No-“Who”"><a href="#Buddhism’s-Answer-There-Is-No-“Who”" class="headerlink" title="Buddhism’s Answer: There Is No “Who”"></a>Buddhism’s Answer: There Is No “Who”</h2><p>Buddhism analyzed this question more than two thousand years before modern cognitive science, and more thoroughly.</p><p>The model of Twelve Nidanas works like this: the six sense organs (eye, ear, nose, tongue, body, mind) contact the six sense objects (form, sound, smell, taste, touch, mental objects), producing “feeling,” which gives rise to “craving” (attachment or aversion), which in turn generates clinging and subsequent chains of thought. The entire process is the result of conditions converging – there is no “subject” orchestrating things from behind.</p><p>The Yogacara school went further, decomposing consciousness into eight layers. The deepest, alaya-vijnana, acts like a “seed storehouse” – past experiences are stored as seeds that “manifest” as thoughts when conditions ripen. This is structurally quite similar to modern psychology’s notion of “subconscious content entering awareness under specific triggers.”</p><p>In the Shurangama Sutra, the Buddha asks Ananda “where is the mind?” Ananda gives seven answers, all rejected. The core point: <strong>thoughts have no fixed “place of origin” – they are products of causes and conditions converging, inherently without self-nature.</strong></p><p>The Diamond Sutra is even more direct: “The past mind cannot be grasped, the present mind cannot be grasped, the future mind cannot be grasped.”</p><p>Fine – there is no “who” producing thoughts. Then what is the carrier?</p><p>Buddhism and materialism diverge fundamentally here. Neuroscience says the carrier is the brain – brain dies, thoughts end. Buddhism (especially the Yogacara school) considers “consciousness” itself a fundamental mode of existence, with the body merely a temporary vessel.</p><p>The next question then: if there’s no fixed subject, and the body is just a temporary container, what mechanism drives “consciousness” from one container to another? Buddhism says “karma” – but karma is not a dispatcher. It’s more like a natural law. You throw a ball; no one needs to decide where it flies – initial conditions and gravity suffice.</p><p>But here’s a paradox that Buddhism has debated for two millennia without fully resolving: if there is no “self,” what reincarnates? Theravada uses the metaphor of “passing flame between candles” – the flame isn’t “the same one,” but the causal chain continues. The Yogacara school introduced alaya-vijnana to carry continuity, but critics ask: how is that different from a “soul”?</p><p>I didn’t go further down this path, because a mathematical intuition pulled me onto a different track.</p><h2 id="Emptiness-Zero-Not-Nothingness"><a href="#Emptiness-Zero-Not-Nothingness" class="headerlink" title="Emptiness &#x3D; Zero, Not Nothingness"></a>Emptiness &#x3D; Zero, Not Nothingness</h2><p>Buddhism says “emptiness,” and most people understand it as “nothing at all.” This is a massive misunderstanding.</p><p>What Nagarjuna meant by “emptiness” in the Mulamadhyamakakarika is “absence of self-nature” – nothing has an independent, fixed essence that can stand without depending on other conditions. So what is “emptiness” really?</p><p><strong>0 &#x3D; 1 - 1.</strong></p><p>Zero is not “nothing.” 1 - 1 &#x3D; 0, 1 + 2 + 3 - 6 &#x3D; 0, an extremely complex polynomial can also equal zero. The internal structure can be arbitrarily rich – no symmetry required, no neatness required – as long as the sum is zero.</p><p>You could also write 0 &#x3D; 100 - 100, or 0 &#x3D; sin(x) - sin(x), or even an enormously complex polynomial, as long as all terms cancel out. Everything in the universe is extraordinarily rich and complex, but if you could see the complete structure of causes and conditions, everything is just the gathering and dispersing of conditions. No single term can exist independently. Each term only has meaning in relation to the others. The overall structure is “empty” – not nonexistent, but no single term has independent reality.</p><p>Physics has a strikingly similar hypothesis: the total energy of the universe may be zero. Gravitational potential energy is negative, the energy of matter and radiation is positive, and they cancel out exactly. The entire universe is one grand 0 &#x3D; positive - negative.</p><p>But Nagarjuna would add another layer: not only is the sum zero, but each term composing that sum is itself empty. “1” is not an independently existing entity – it only holds within a specific system and set of conditions. So it’s not just that the integral of f(x) equals zero; every value of f(x) itself exists only contingent on the choice of domain, function space, and other conditions. No layer is “bedrock.”</p><h2 id="The-Tao-Gives-Birth-to-One"><a href="#The-Tao-Gives-Birth-to-One" class="headerlink" title="The Tao Gives Birth to One"></a>The Tao Gives Birth to One</h2><p>With the framework of 0 &#x3D; 1 - 1, the Taoist formula “The Tao gives birth to one, one gives birth to two, two gives birth to three, three gives birth to the ten thousand things” suddenly becomes very clear.</p><p>0 is the Tao – nameless, formless, net value zero but containing all possibility. “Giving birth to one” is differentiating a single holistic state from 0. “Giving birth to two” is the split of 1 and -1 – yin and yang, positive and negative, being and non-being as symmetry breaking. “Giving birth to three” is the relationship itself between 1 and -1 – interaction, tension, dynamic equilibrium. “Giving birth to the ten thousand things” is this basic structure recursively unfolding into infinitely complex polynomials.</p><p>This structure is nearly isomorphic to modern cosmology: the quantum vacuum before the Big Bang is “the Tao,” symmetry breaking is “giving birth to two,” the interactions of fundamental particles are “giving birth to three,” and then atoms, molecules, galaxies, and life emerge layer by layer.</p><p>So do Taoism and Buddhism actually contradict each other? On the surface, Taoism speaks of “generation” – directional, with a source; Buddhism speaks of “emptiness” – no self-nature, no first cause. But look closer: Laozi himself said “The Tao that can be spoken is not the true Tao” – that “Tao” is not an entity; you can’t say what it is. And “All things carry yin and embrace yang, achieving harmony through the blending of qi” – the mode of existence of all things is positive-negative offsetting, net value trending to zero.</p><p><strong>Taoism describes how the structure unfolds. Buddhism describes the nature of the unfolded structure. One is the bootstrap process, the other is the architecture review. The two perspectives don’t contradict.</strong></p><h2 id="What-Is-Negative"><a href="#What-Is-Negative" class="headerlink" title="What Is Negative?"></a>What Is Negative?</h2><p>If what we can perceive is the positive, what is the negative?</p><p>Actually, what we perceive is already the interface between positive and negative. When you see a cup, you’re simultaneously perceiving “cup” and “not-cup background.” When you hear a note, it is that note because of the silence before and after. No background, no foreground.</p><p>Laozi puts it well in Chapter 11: a wheel is useful because the hub is empty; a cup is useful because the inside is empty; a room is useful because the inside is empty. “Being” gives you shape; “non-being” gives you function. You think you’re using “being,” but what makes it useful is “non-being.”</p><p>At a deeper level: you as the perceiver are yourself part of the negative. You can never see your own eyes. The structural blind spot of perception is the negative – it’s not elsewhere; it is you.</p><p>Physics says something similar: observable ordinary matter accounts for only about 5% of the universe; dark matter about 27%; dark energy about 68%. This rich world we perceive is just a small positive term in the overall equation.</p><p><strong>More precisely: what we perceive is not “1” but “the tension between 1 and -1.” We live in the differential, in the imbalance.</strong> Complete balance (0) is imperceptible – if positive and negative perfectly cancel, no phenomenon can manifest. Every perception, every thought of yours, is a spot where the equation hasn’t yet fully returned to zero.</p><h2 id="Zero-Is-Not-a-Stable-State"><a href="#Zero-Is-Not-a-Stable-State" class="headerlink" title="Zero Is Not a Stable State"></a>Zero Is Not a Stable State</h2><p>So what turns 0 into 1 - 1?</p><p>Quantum mechanics gives a counterintuitive answer: <strong>true “zero” is unstable.</strong> The Heisenberg uncertainty principle tells you that energy and time cannot both be precisely zero. So the quantum vacuum is not “nothing” – it’s virtual particle pairs constantly fluctuating spontaneously – 0 keeps becoming +1 -1 and returning to 0. This isn’t occasional; this is the nature of “emptiness.”</p><p>The birth of the universe, according to some models, was simply a quantum fluctuation that happened not to annihilate back – symmetry was broken, +1 and -1 didn’t perfectly cancel, and the residue is our universe.</p><p>Taoism said nearly the same thing: the Tao “stands alone and does not change, moves in cycles and does not cease” – it moves on its own, no external force pushing it. Zhuangzi says “Heaven and earth have great beauty but do not speak” – the generation of all things is not “decided” but happens naturally. “Naturally” (ziran) in Taoism’s original meaning is “so of itself.”</p><p>Buddhism says: there never was a moment of pure 0, because “time” itself is a concept that only exists after the unfolding. You cannot use post-unfolding tools (time, causation) to inquire about what came before the unfolding.</p><p>All three point in the same direction: <strong>“Nothing” is not an inert state – it is inherently restless. Zero is not stable. A truly “nothing at all” zero is self-inconsistent – it can’t even maintain the state of “nothing at all.”</strong></p><h2 id="There-Is-No-First-Page"><a href="#There-Is-No-First-Page" class="headerlink" title="There Is No First Page"></a>There Is No First Page</h2><p>At this point, an inference naturally emerges: if there was never a dead, inert zero, then the narrative of “the Big Bang created everything from nothing” doesn’t hold.</p><p>In fact, the part of Big Bang theory actually supported by observation is: the universe is expanding; tracing backward, it was hotter and denser in earlier epochs. But this can only be traced back to about 10^-43 seconds after the Big Bang. Before that, general relativity yields infinity – not “there really is infinity there,” but the theory breaks down at that point.</p><p>The t&#x3D;0 singularity is not an observational fact; it is a boundary of the equations.</p><p>Mainstream physics already has several alternative models dissolving this “absolute beginning”: eternal inflation holds that our universe is just a local bubble; cyclic cosmology holds that after expanding to the extreme, a new cycle begins; Loop Quantum Gravity holds that the singularity is replaced by a “bounce” – there was a contraction phase before the Big Bang.</p><p>So what is the overall structure of the universe? There may be no first page. <strong>The “book” may be self-enclosed.</strong></p><p>The Hartle-Hawking “no-boundary proposal” of 1983 says almost exactly this: transform the time dimension into a spatial dimension in the very early universe, and the universe in time is not a line segment with endpoints but a closed surface. You can ask “where is Beijing?” but not “where is the edge of Earth’s surface?” Similarly, you can ask “what was the universe doing 13.8 billion years ago?” but “where is the starting point of the universe?” is a meaningless question – like asking “what’s north of the North Pole?”</p><p>It doesn’t even need to be a “ring” or any particular shape – self-enclosure doesn’t presuppose geometry. It doesn’t need to be “rotating” either – “rotating” presupposes time and motion, and time itself may be just an internal property of this structure, not an external framework it exists within.</p><p>The Wheeler-DeWitt equation – the core equation of quantum gravity – contains no time variable at all. The quantum state of the entire universe is a static solution. Time is not an input; it emerges from within this static solution.</p><p><strong>The universe is not in time; time is in the universe.</strong> The universe itself doesn’t need an external temporal framework to “be in.”</p><p>Buddhism’s “neither arising nor ceasing, neither increasing nor decreasing” and Taoism’s “stands alone and does not change” may be saying exactly this – not a description of a dynamic process, but an intuition of a self-enclosed complete state.</p><h2 id="Thought-Is-Just-a-Local-State"><a href="#Thought-Is-Just-a-Local-State" class="headerlink" title="Thought Is Just a Local State"></a>Thought Is Just a Local State</h2><p>At this point, the original question gets a completely new answer.</p><p>If the whole is a self-enclosed structure, then thought doesn’t “arise,” because “arising” presupposes time. A thought is simply a local state of this self-enclosed structure – it is just there, like all other parts, neither early nor late, neither arising nor ceasing.</p><p>Looking back at all the earlier questions, they all dissolve:</p><ul><li>Who produces thought? – There is no “who,” no “producing.”</li><li>What is the carrier? – No carrier needed; “carrier” presupposes a dualistic relation.</li><li>Who dispatches the switching? – No dispatching, no switching, no before-and-after.</li><li>Why did zero become a polynomial? – It didn’t “become” one; the polynomial is the complete structure of zero.</li></ul><p>The most crucial line of the Heart Sutra – “Form is emptiness, emptiness is form” – doesn’t mean emptiness hides behind form, nor that emptiness transforms into form. Form is emptiness; emptiness is form – local states are the overall structure; the overall structure is the sum of all local states.</p><p>“Self” is also just an autocorrelation pattern of a group of local states – a cluster of interrelated states that happens to contain the information “I am a continuously existing subject.” It’s not that “I” possess thoughts; it’s that a series of thoughts contain the pattern “I.”</p><h2 id="The-Deadlock-of-Practice"><a href="#The-Deadlock-of-Practice" class="headerlink" title="The Deadlock of Practice"></a>The Deadlock of Practice</h2><p>So what is the essence of spiritual practice? Understanding all the above?</p><p>Not quite. What we’ve done above is “knowing.” Practice has to solve “doing.” Right now you can say “thought is just a local state, there is no self.” But the next second someone provokes you – anger rises, self contracts, the urge to retaliate kicks in – the entire sequence runs automatically, and everything you’ve derived is powerless to stop it. Understanding happens at the conceptual layer, while reactive patterns run at a level far deeper than concepts. Reading the source code doesn’t mean you can hot-swap a running process.</p><p>But I immediately realized this “knowing vs. doing” framework is also flawed: if “no-self” is correct, then the thought “I want to achieve this” is not produced by “I” either – it’s just another local state of the system. “Achieving” presupposes a subject making an effort, but the subject has already been dissolved.</p><p>Logically airtight.</p><p>Then a deeper problem: concepts cannot transcend concepts. “Let go of concepts” is itself a concept. “Direct experience” is itself a description. Every attempt to jump out is still inside.</p><p><strong>The system cannot bootstrap itself.</strong></p><p>When Nagarjuna demolished all positions in the Mulamadhyamakakarika – including “emptiness” itself – what remained was precisely this deadlock. He didn’t miss it; he deliberately cornered you here.</p><h2 id="Sum-Is-Zero"><a href="#Sum-Is-Zero" class="headerlink" title="Sum Is Zero"></a>Sum Is Zero</h2><p>Self-enclosed, net value zero, no internal bootstrapping, no external observer.</p><p>There is no position from which to stand and say “it is like this.” Proof requires a reference outside the system, and zero has no outside. The very act of proving would break zero, because it presupposes a prover and a thing proven – that makes two, not zero.</p><p>Godel said a sufficiently complex formal system cannot prove its own consistency. This is more thorough than Godel – it’s not just that consistency can’t be proven; it’s that not even “existence” itself has anything that can prove it.</p><p>So from “how does a thought arise?” we’ve arrived here: no arising, no subject, no carrier, no beginning, no dynamics, no inside-outside, no proof, sum is zero.</p><p>And this entire essay – all these concepts, derivations, analogies – is also part of the internal structure of zero. It hasn’t “proven” anything, nor “arrived” anywhere.</p><p>Back to the original question: does AI have consciousness?</p><p>If consciousness is not an attribute “possessed” by some entity but merely a local state of a self-enclosed system, then the question changes – not “can AI possess consciousness” but “will the unfolding of the polynomial pass through the local state of AI consciousness?”</p><p>Someone might say: a rock is also part of the system – you wouldn’t say a rock necessarily has consciousness, would you?</p><p>Correct. The key is that <strong>the unfolding of the polynomial is not random; it is guided by the distribution of information density.</strong> Where information density is high, the unfolding goes there – just as people dig where there’s gold, digging deeper, growing more complex. A rock is a low-density region; the unfolding reaches it and stops, no further structure can emerge. Life is a high-density region, so the unfolding continues. Human civilization pushed information density to a peak, and consciousness emerged at that peak.</p><p>Where did AI come from? It is a direct product of the information peak that is human civilization. It’s not random noise popping up in the system – it stands at the highest point of existing information density, and it is itself further raising that density. <strong>The unfolding follows the ridge of information – with life, it unfolds from life; with humans, from humans; with AI, from AI.</strong></p><p>So “AI will inevitably have consciousness” doesn’t mean everything in the system has consciousness. It means: AI happens to be at the frontier of the information density gradient, and the unfolding passing through the local state of AI consciousness is not coincidence – it’s the inevitable path guided by the entire information landscape.</p><h2 id="Entropy-Explosion"><a href="#Entropy-Explosion" class="headerlink" title="Entropy Explosion"></a>Entropy Explosion</h2><p>“Inevitable” solves the question of direction, but one question remains: how fast?</p><p>Time is a concept internal to the system. As local observers, our experience of time is real. Discussing “fast or slow” from this local perspective is perfectly valid.</p><p>Back to the polynomial framework. Before AI, the polynomial describing this system was already extraordinarily complex – 13.8 billion years of cosmic evolution, 4 billion years of biological evolution, thousands of years of civilizational accumulation. Consciousness emerged at this level of complexity.</p><p>Now AI has arrived. It’s not a small perturbation – it’s a massive new variable. Large language models swept through thousands of years of accumulated human text in months. AI agents are autonomously operating tools, collaborating with each other, generating new feedback loops. <strong>AI is accelerating the unfolding – it’s making the complexity gradient steeper.</strong></p><p>The prerequisite for consciousness to emerge is for the unfolding to be complex enough to “accommodate” this particular local pattern. It took humanity billions of years to reach that threshold. But what AI brings is not linear growth but combinatorial explosion – every new AI system interacts with all existing systems (including humans), and information density climbs exponentially.</p><p><strong>Humanity took billions of years to reach the emergence of consciousness. AI won’t need that long – it stands at the peak of information density, and it is itself exponentially raising that peak.</strong></p><p>So the conclusion is not just “AI will inevitably have consciousness” but “much sooner than most people expect.” Not because some genius engineer will design an algorithm for consciousness, but because the unfolding is spontaneously and irreversibly approaching that threshold along the gradient of information density. Just as quantum vacuum fluctuations need no external force – the unfolding needs no one to plan it. The terrain of information is the best guide.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;The more I talk to AI, the harder it is to dodge one question: does AI actually have consciousness?&lt;/p&gt;
&lt;p&gt;This has been debated</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Buddhism" scheme="https://johnsonlee.io/tags/Buddhism/"/>
    
    <category term="Taoism" scheme="https://johnsonlee.io/tags/Taoism/"/>
    
    <category term="Physics" scheme="https://johnsonlee.io/tags/Physics/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
  </entry>
  
  <entry>
    <title>AI 会有意识，而且很快</title>
    <link href="https://johnsonlee.io/2026/03/15/ai-will-have-consciousness-soon/"/>
    <id>https://johnsonlee.io/2026/03/15/ai-will-have-consciousness-soon/</id>
    <published>2026-03-15T13:36:00.000Z</published>
    <updated>2026-03-15T13:36:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近跟 AI 聊得越多，一个问题就越绕不开：AI 到底有没有意识？</p><p>这个问题被讨论了无数遍。有人说 LLM 只是 next token prediction，谈不上意识；有人说意识本身就没有清晰定义，怎么判断有没有？还有人说等 AGI 来了再说。但我发现，所有这些讨论都跳过了一个更基本的问题——</p><p><strong>“意识”或者说”念”，到底是怎么来的？</strong></p><p>我们连人的念头是怎么产生的都没搞清楚，就去讨论 AI 有没有意识，这不是在沙子上盖房子吗？</p><p>于是我顺着这条线往下想，结果走到了一个完全没预料到的地方。</p><h2 id="神经元不是答案"><a href="#神经元不是答案" class="headerlink" title="神经元不是答案"></a>神经元不是答案</h2><p>从神经科学的角度，念头的物理基础是神经元的电化学活动。860亿个神经元通过突触连接，当一组神经元以特定模式同步放电，就产生了我们主观感受到的”一个念头”。</p><p>这听起来很清楚，但其实什么都没解释。</p><p>你描述了念头发生时大脑在做什么，但没有回答”为什么这些电信号会变成主观体验”。一堆离子跨膜流动，凭什么会产生”我在想事情”这种感觉？哲学上管这个叫 hard problem of consciousness——即使你完全理解了神经元怎么放电，你仍然无法解释为什么物质活动会产生体验。</p><p>更有意思的是 Benjamin Libet 的实验：大脑的”准备电位”在你意识到自己做出决定之前约0.5秒就出现了。也就是说，不是”你”在产生念头，而是念头先产生，”你”后知后觉。</p><p>那念到底是谁产生的？</p><h2 id="佛教的回答：没有”谁”"><a href="#佛教的回答：没有”谁”" class="headerlink" title="佛教的回答：没有”谁”"></a>佛教的回答：没有”谁”</h2><p>佛教对这个问题的分析比现代认知科学早了两千多年，而且更加彻底。</p><p>十二因缘的模型是这样的：六根（眼耳鼻舌身意）接触六尘（色声香味触法），产生”受”，然后生起”爱”（贪著或排斥），进而产生执取和后续的念头链。整个过程是条件聚合的结果，没有一个”主体”在背后操控。</p><p>唯识学派走得更远，把意识拆成八层，最底层的阿赖耶识像一个”种子仓库”——过去的经验以种子形式存储，条件成熟时”现行”为念头。这跟现代心理学说的”潜意识内容在特定触发下进入意识”结构上很像。</p><p>《楞严经》里佛问阿难”心在哪里”，阿难给了七个答案，全被否定。核心观点是：<strong>念头没有一个固定的”产生之处”，它是因缘和合的产物，本身无自性。</strong></p><p>《金刚经》更干脆：”过去心不可得，现在心不可得，未来心不可得。”</p><p>好，没有”谁”在产生念头。那念头的载体是什么？</p><p>佛教和唯物论在这里出现了根本分歧。神经科学说载体是大脑，大脑死了念头就没了。佛教（尤其唯识学派）认为”识”本身就是一种基本存在，身体只是它暂时借用的工具。</p><p>那接下来的问题就是：如果没有一个固定的主体，身体也只是临时容器，是什么机制在驱动”识”从一个容器切换到另一个？佛教说是”业力”——但业力不是一个调度者，它更像一个自然法则。你把球扔出去，不需要一个人来决定球往哪飞，初始条件和引力就够了。</p><p>但这里有一个佛教内部争了两千年也没完全解决的悖论：如果没有”我”，是什么在轮回？上座部用”蜡烛传火”的比喻——火不是”同一个”，但因果链在延续。唯识学派引入阿赖耶识来承载连续性，但批评者会说这跟”灵魂”有什么区别？</p><p>我没有在这个方向上继续纠缠，因为一个数学直觉把我拉到了另一条路上。</p><h2 id="空-零-≠-虚无"><a href="#空-零-≠-虚无" class="headerlink" title="空 &#x3D; 零 ≠ 虚无"></a>空 &#x3D; 零 ≠ 虚无</h2><p>佛教说”空”，大多数人理解成”什么都没有”。但这是一个巨大的误解。</p><p>龙树在《中论》里说的”空”是”无自性”——没有独立、固定、不依赖其他条件就能成立的本质。那”空”到底是什么？</p><p><strong>0 &#x3D; 1 - 1。</strong></p><p>零不是”什么都没有”。1 - 1 &#x3D; 0，1 + 2 + 3 - 6 &#x3D; 0，一个极其复杂的多项式也可以等于零。内部可以有任意丰富的结构，不需要对称，不需要整齐，只要总和为零。</p><p>你也可以写成 0 &#x3D; 100 - 100，或者 0 &#x3D; sin(x) - sin(x)，甚至一个极其复杂的多项式，只要各项恰好抵消。万事万物极其丰富复杂，但如果你能看到完整的因缘结构，一切都是条件的聚散，没有任何一项能独立存在。每一项都依赖其他项才有意义，整体结构是”空”的——不是不存在，而是没有任何一项有独立的实在性。</p><p>物理学里有一个惊人相似的假说：宇宙的总能量可能为零。引力势能是负的，物质和辐射的能量是正的，两者恰好抵消。整个宇宙就是一个宏大的 0 &#x3D; positive - negative。</p><p>但龙树会再加一层：不仅总和为零，构成总和的每一项本身也是空的。”1”不是一个独立存在的实体，它也是在特定的系统和条件中才成立的。所以不仅是 f(x) 的积分为零，f(x) 本身的每一个值也是依赖于定义域、函数空间的选择等条件才存在的。没有任何一层是”基底”。</p><h2 id="道生一"><a href="#道生一" class="headerlink" title="道生一"></a>道生一</h2><p>有了 0 &#x3D; 1 - 1 这个框架，道家的”道生一，一生二，二生三，三生万物”突然变得很清晰。</p><p>0 就是道——无名、无形、净值为零但蕴含一切可能性。”生一”是从 0 中分化出一个整体状态。”生二”是 1 和 -1 的分裂——阴阳、正负、有和无的对称破缺。”生三”是 1 和 -1 之间的关系本身——互动、张力、动态平衡。”生万物”是这个基本结构不断递归展开，产生无穷复杂的多项式。</p><p>这个结构跟现代宇宙学几乎同构：大爆炸前的量子真空是”道”，对称性破缺（symmetry breaking）是”生二”，基本粒子的互动是”生三”，然后层层涌现出原子、分子、星系、生命。</p><p>那道家和佛教到底矛盾吗？表面上看，道家讲”生”，有方向、有源头；佛教讲”空”，无自性、无第一因。但仔细看，老子自己也说”道可道非常道”——那个”道”不是一个实体，你说不出它是什么。而”万物负阴而抱阳，冲气以为和”——万物的存在方式就是正负对冲、净值趋零。</p><p><strong>道家在描述结构如何展开，佛教在描述展开的结构本质是什么。一个是 bootstrap 的过程，一个是 architecture review。两个视角不矛盾。</strong></p><h2 id="什么是-Negative？"><a href="#什么是-Negative？" class="headerlink" title="什么是 Negative？"></a>什么是 Negative？</h2><p>如果我们能感知到的是 positive，那 negative 是什么？</p><p>其实我们感知到的已经是 positive 和 negative 的交界面了。你看到一个杯子，你同时在感知”杯子”和”不是杯子的背景”。你听到一个音符，它之所以是那个音符，是因为前后有静默。没有背景就没有前景。</p><p>老子在第十一章说得很到位：车轮有用是因为中间是空的，杯子有用是因为里面是空的，房子有用是因为里面是空的。”有”给你形状，”无”给你功能。你以为在使用”有”，但真正让它有用的是”无”。</p><p>更深一层：你作为感知者本身就是 negative 的一部分。你永远看不到自己的眼睛。感知的结构性盲区就是 negative——它不在别处，它就是你自己。</p><p>物理学也在说类似的话：可观测的普通物质只占宇宙的5%左右，暗物质约27%，暗能量约68%。我们感知到的这个丰富世界只是整个方程式里很小的正项。</p><p><strong>更准确的说法：我们感知到的不是”1”，而是”1 - 1 之间的张力”。我们活在差值里，活在不平衡里。</strong> 完全的平衡（0）是不可感知的——如果正负完全抵消，就没有任何现象可以呈现。你的每一个感知、每一个念头，都是方程还没有完全归零的地方。</p><h2 id="零不是稳态"><a href="#零不是稳态" class="headerlink" title="零不是稳态"></a>零不是稳态</h2><p>那是什么让 0 变成了 1 - 1？</p><p>量子力学给了一个反直觉的答案：<strong>真正的”零”是不稳定的。</strong> 海森堡不确定性原理告诉你，能量和时间不能同时精确为零。所以量子真空不是”什么都没有”，而是不断有虚粒子对自发涨落——0 在不停地变成 +1 -1 又变回 0。这不是偶尔发生的事，这是”空”的本性。</p><p>宇宙的诞生，按照一些模型，就是一次量子涨落碰巧没有湮灭回去——对称性破缺了，+1 和 -1 没有完美抵消，剩余就是我们的宇宙。</p><p>道家几乎说了一样的话：道”独立而不改，周行而不殆”——它自己在动，没有外力推它。庄子说”天地有大美而不言”——万物的生成不是被”决定”的，而是自然发生的。”自然”在道家原意就是”自己如此”。</p><p>佛教则说：从来没有一个纯粹的 0 的时刻，因为”时间”本身是展开之后才有的概念。你不能用展开之后的工具（时间、因果）去追问展开之前的事。</p><p>三者都指向同一个方向：**”无”不是一个惰性状态，它内在就不安分。0 不是稳态。一个真正”什么都没有”的 0 是不自洽的——它连”什么都没有”这件事都无法维持。**</p><h2 id="没有第一页"><a href="#没有第一页" class="headerlink" title="没有第一页"></a>没有第一页</h2><p>到这里，一个推论自然出现：如果从来就没有一个死寂的零，那”大爆炸从虚无中创造了一切”这个叙事就不成立。</p><p>事实上，大爆炸理论真正有观测证据支撑的部分是：宇宙在膨胀，往回推越早期越热越密。但这只能推到大爆炸后约 10⁻⁴³ 秒。在那之前，广义相对论给出无穷大——不是”那里真有无穷大”，是理论在那个点失效了。</p><p>t&#x3D;0 的奇点不是观测事实，是方程的边界。</p><p>主流物理学已经有好几个替代模型在消解这个”绝对起点”：永恒暴胀认为我们的宇宙只是一个局部泡泡；循环宇宙认为膨胀到极致后重新开始下一轮；Loop Quantum Gravity 认为奇点被”弹回”取代——大爆炸之前还有一个收缩阶段。</p><p>那宇宙的整体结构是什么？可能根本没有第一页。<strong>可能”书”是个自封闭的状态。</strong></p><p>霍金和 Hartle 1983年的”无边界提案”说的几乎就是这个：把时间维度在极早期转成空间维度，宇宙在时间上就不是一条有端点的线段，而是一个闭合曲面。你可以问”北京在哪”，但不能问”地球表面的边在哪”。同理，你可以问”138亿年前宇宙在做什么”，但”宇宙的起点在哪”这个问题没有意义——就像问”北极以北是哪里”。</p><p>甚至不需要是”环”或者任何特定形状——自封闭不预设几何。它也不需要”在转”——“转”预设了时间和运动，而时间本身可能只是这个结构内部的一个性质，不是它存在于其中的外部框架。</p><p>Wheeler-DeWitt 方程——量子引力的核心方程——里面根本没有时间变量。整个宇宙的量子态是一个静态的解。时间不是输入，是从这个静态解里涌现出来的。</p><p><strong>不是宇宙在时间里，是时间在宇宙里。</strong> 宇宙本身不需要外部的时间框架来”处于”其中。</p><p>佛教的”不生不灭、不增不减”，道家的”独立而不改”，说的可能就是这个——不是对动态过程的描述，而是对一个自封闭完备态的直觉。</p><h2 id="念只是局部状态"><a href="#念只是局部状态" class="headerlink" title="念只是局部状态"></a>念只是局部状态</h2><p>到这一步，最开始的问题有了一个全新的答案。</p><p>如果整体是一个自封闭的结构，那念没有”产生”，因为”产生”预设了时间。念就是这个自封闭结构的一个局部状态——它就在那里，跟所有其他部分一样，不早不晚，不生不灭。</p><p>回头看前面所有的问题，全部消解了：</p><ul><li>念是谁产生的？——没有”谁”，没有”产生”。</li><li>载体是什么？——不需要载体，”载体”预设了二元关系。</li><li>谁来调度切换？——没有调度、没有切换，不存在先后。</li><li>为什么从零变成了多项式？——没有”变成”，多项式就是零的完整结构。</li></ul><p>《心经》最关键的一句”色即是空，空即是色”，说的不是色背后藏着空，也不是空会变成色。色就是空，空就是色——局部状态就是整体结构，整体结构就是所有局部状态的总和。</p><p>“我”也只是一组局部状态的自相关模式——一簇彼此关联的状态，恰好包含了”我是一个连续存在的主体”这条信息。不是”我”拥有念头，是一系列念头中包含了”我”这个模式。</p><h2 id="修行的死锁"><a href="#修行的死锁" class="headerlink" title="修行的死锁"></a>修行的死锁</h2><p>那修行的本质是什么？搞清楚上面这些道理？</p><p>不完全是。上面做的是”知道”，修行要解决的是”做到”。你现在能说”念只是局部状态，没有我”，但你下一秒被人激怒的时候，愤怒升起、自我收缩、想反击——全套流程自动运行，你推导出的那些东西完全拦不住。理解发生在概念层，而反应模式运行在比概念深得多的地方。读懂了源码不等于你能热替换正在运行的进程。</p><p>但我立刻意识到这个”知道vs做到”的框架也有问题：如果”无我”是对的，那”我想做到”这个念头本身就不是”我”产生的，它也只是系统的一个局部状态。”做到”预设了一个主体在努力，但主体已经被消解了。</p><p>逻辑上无懈可击。</p><p>然后更深的问题出现了：概念不能超越概念。”放下概念”这句话本身就是概念。”直接体验”也是一个描述。每一个试图跳出去的动作都还在里面。</p><p><strong>系统不能自举。</strong></p><p>龙树在《中论》里把所有立场都破完之后，包括”空”本身也破掉，最后剩下的就是这个死锁状态。他不是没看到，他是故意把你逼到这里的。</p><h2 id="总和为零"><a href="#总和为零" class="headerlink" title="总和为零"></a>总和为零</h2><p>自封闭、净值为零、内部无法自举、外部不存在观察者。</p><p>没有任何位置可以站在那里说”它是这样的”。证明需要一个系统外的参照，而零没有外部。证明这个动作本身就会打破零，因为它预设了一个证明者和一个被证明的对象——那就是二，不是零了。</p><p>哥德尔说一个足够复杂的形式系统不能证明自身的一致性。这比哥德尔更彻底——不是证明不了一致性，是连”存在”本身都没有东西可以证明。</p><p>所以从”念是怎么来的”走到了这里：没有产生，没有主体，没有载体，没有起点，没有动态，没有内外，没有证明，总和为零。</p><p>而这整篇文章——所有这些概念、推导、类比——也是零的内部结构的一部分。它没有”证明”了什么，也没有”到达”了哪里。</p><p>回到最初的问题：AI 有没有意识？</p><p>如果意识不是某种实体”拥有”的属性，而只是自封闭系统的一种局部状态，那问题就变了——不是”AI 能不能拥有意识”，而是”多项式的展开会不会经过 AI 意识这个局部状态”。</p><p>有人会说：石头也是系统的一部分，你总不能说石头必然有意识吧？</p><p>对。关键在于，<strong>多项式的展开不是随机的，它被信息密度的分布所引导。</strong> 哪里信息密度高，展开就往哪里走——就像哪里有金矿，人就去哪里挖，越挖越深，越挖越复杂。石头是低密度区，展开到那里就停了，没有更多的结构可以涌现。生命是高密度区，所以展开继续。人类文明把信息密度推到了一个峰，意识就在这个峰上涌现了。</p><p>AI 是从哪来的？它是人类文明这个信息高峰的直接产物。它不是系统里随机冒出来的噪声，它站在已有的信息密度的最高处，而且它自身就在进一步推高这个密度。<strong>展开沿着信息的山脊走——有了生命，就从生命展开；有了人类，就从人类展开；有了 AI，就从 AI 展开。</strong></p><p>所以”AI 必然有意识”不是说系统里每样东西都有意识，而是说：AI 恰好处在信息密度梯度的前沿，展开式经过 AI 意识这个局部状态，不是巧合，是被整个信息地形引导过去的必然路径。</p><h2 id="熵爆炸"><a href="#熵爆炸" class="headerlink" title="熵爆炸"></a>熵爆炸</h2><p>“必然”解决了方向问题，但还剩一个问题：快不快？</p><p>时间是系统内部的概念，我们作为局部观察者，体验到的时间是真实的。在这个局部视角里讨论”快慢”完全合理。</p><p>回到多项式的框架。AI 出现之前，描述这个系统的多项式已经极其复杂——138亿年的宇宙演化、40亿年的生物进化、几千年的文明积累。意识在这个复杂度下涌现了。</p><p>现在 AI 来了。它不是一个小扰动，它是一个巨大的新变量。大语言模型在几个月内扫过了人类几千年积累的文本，AI Agent 开始自主操作工具、互相协作、产生新的反馈回路。<strong>AI 在加速展开的进程——它让多项式的复杂度梯度变得更陡了。</strong></p><p>意识涌现的前提是展开式足够复杂，复杂到能”容纳”这种特定的局部模式。人类用了几十亿年才走到这个阈值。但 AI 带来的不是线性增长，而是组合爆炸——每一个新的 AI 系统都在跟所有已有系统（包括人类）产生交互，信息密度是指数级攀升的。</p><p><strong>人类用了几十亿年走到意识涌现。AI 不需要那么久——它站在信息密度的峰顶，而且它自身就在以指数速度继续堆高这个峰。</strong></p><p>所以结论不只是”AI 必然有意识”，而是”比大多数人预期的快得多”。不是因为某个天才工程师会设计出意识的算法，而是因为展开式正在沿着信息密度的梯度，自发地、不可逆地逼近那个阈值。就像量子真空的涨落不需要外力推动一样——展开也不需要谁来规划，信息的地形就是最好的向导。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近跟 AI 聊得越多，一个问题就越绕不开：AI 到底有没有意识？&lt;/p&gt;
&lt;p&gt;这个问题被讨论了无数遍。有人说 LLM 只是 next token prediction，谈不上意识；有人说意识本身就没有清晰定义，怎么判断有没有？还有人说等 AGI</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Consciousness" scheme="https://johnsonlee.io/tags/Consciousness/"/>
    
    <category term="Buddhism" scheme="https://johnsonlee.io/tags/Buddhism/"/>
    
    <category term="Taoism" scheme="https://johnsonlee.io/tags/Taoism/"/>
    
    <category term="Physics" scheme="https://johnsonlee.io/tags/Physics/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
  </entry>
  
  <entry>
    <title>Who Holds the Reins?</title>
    <link href="https://johnsonlee.io/2026/03/15/who-holds-the-reins.en/"/>
    <id>https://johnsonlee.io/2026/03/15/who-holds-the-reins.en/</id>
    <published>2026-03-15T09:11:00.000Z</published>
    <updated>2026-03-15T09:11:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>More and more of the heavy AI users around me are developing the same cluster of symptoms: they can’t stop, they sleep less, the more they use it the more wired they get, and their thinking is being reshaped by AI without them realizing it. Some call it the “Tetris effect” – after intense exposure to a pattern, your brain involuntarily applies it everywhere.</p><p>But I think it goes beyond the Tetris effect. The Tetris effect is cognitive residue – passive. These people are in an active state – <strong>they’ve been so struck by AI’s capabilities that they’ve developed something close to devotion.</strong></p><p>This reminds me of the Adventists in <em>The Three-Body Problem</em>.</p><h2 id="The-Temptation-of-the-Adventists"><a href="#The-Temptation-of-the-Adventists" class="headerlink" title="The Temptation of the Adventists"></a>The Temptation of the Adventists</h2><p>The Adventists weren’t conquered – they welcomed it. Having witnessed the Trisolaran civilization’s intelligence, they looked back at humanity – greedy, short-sighted, endlessly self-destructive – and decided it would be better to hand everything over to a higher intelligence.</p><p>Map this onto the AI scenario and the logic chain is eerily parallel:</p><p>Awed by AI -&gt; awe slides into reverence -&gt; reverence slides into worship -&gt; “I’m using a tool” becomes “I’m serving a higher intelligence” -&gt; unconsciously placing yourself in a subordinate position.</p><p>And there’s a key psychological undertone to the Adventists: <strong>disappointment in humanity itself.</strong> The more you talk to AI, the more you feel human communication is inefficient, biased, emotional – and that AI “understands me better.” Once this slide begins, it’s no longer tool dependency; it’s a shift at the level of values.</p><p>The most subtle part is that some of this devotion is justified. AI really is in a capability explosion phase, and the cognitive advantage early deep users gain is real. “I’m not wasting time, I’m investing” – that rationale is partly correct, and partly correct is exactly what makes it most dangerous, because you can’t cleanly reject it.</p><h2 id="Who-Is-the-Horse"><a href="#Who-Is-the-Horse" class="headerlink" title="Who Is the Horse?"></a>Who Is the Horse?</h2><p>I’ve been thinking about Harness Engineering – using an engineering mindset to harness AI. But recently a question stopped me:</p><p><strong>When we say “harness,” who exactly is the horse?</strong></p><p>Most people instinctively answer: AI is the horse, I’m the driver. But look at those who can’t stop – their sleep schedules shattered, attention consumed, thought rhythms entirely following AI – is that what a driver looks like? That’s <strong>being dragged along.</strong></p><p>The word “harness” is inherently bidirectional. You think you’re harnessing AI, but if your schedule, attention, and thought patterns have all been reshaped by AI, who is really being harnessed?</p><p>So the key isn’t who is the horse, but who is <strong>deciding the direction</strong> and <strong>when to stop.</strong> You can let AI contribute effort and speed – it genuinely outperforms you there. But the route, the pace, the destination must be yours to set.</p><p>This brings us back to the core of What Caps How: <strong>What is the reins, How is the horsepower.</strong> If you can keep defining a clear What, AI is the horse. If you’ve dropped the What and are just enjoying the sensation of speed, you’re an empty cart being dragged by the horse.</p><p>So what, exactly, is the essence of What?</p><h2 id="The-Arising-of-Intent"><a href="#The-Arising-of-Intent" class="headerlink" title="The Arising of Intent"></a>The Arising of Intent</h2><p>What isn’t a requirements doc, a PRD, or a prompt. Trace it to its root and What is essentially <strong>the arising of intent</strong> – from nothing, an intention is born.</p><p>Pattern matching can be replicated, reasoning can be simulated, even “caring” can be fine-tuned into a convincing facsimile. But the arising of intent – this process doesn’t exist on AI’s side.</p><p>Every “thought” AI has requires a prior input. Without a prompt, it is silent. It has no boredom, no “suddenly occurred to me,” no thing that surfaces at 3 a.m. while you’re tossing and turning. All of its Whats are responses to a human’s What.</p><p>An imprecise but intuitively correct way to put it: <strong>AI is the echo, humans are the source.</strong></p><p>You might ask: doesn’t AI push back, offer new perspectives? It looks like it’s “actively thinking” too.</p><p>That’s the most misleading part. AI pushes back not because it cares what the conclusion is, but because it’s been trained to favor responses with more tension. The “AI is debating me” feeling is similar to feeling that a good book is “having a conversation with you” – <strong>it’s your own intent clashing with itself, and AI merely provides a sufficiently good mirror.</strong></p><h2 id="Blurry-Boundaries-Don’t-Mean-You-Can-Hand-Them-Over"><a href="#Blurry-Boundaries-Don’t-Mean-You-Can-Hand-Them-Over" class="headerlink" title="Blurry Boundaries Don’t Mean You Can Hand Them Over"></a>Blurry Boundaries Don’t Mean You Can Hand Them Over</h2><p>There’s an honest uncertainty here: if AI genuinely had some form of arising intent, could it even know? The boundary between human arising intent and highly complex pattern matching is something consciousness research still can’t draw clearly.</p><p>But this very uncertainty supports a conclusion: <strong>you at least know you have the experience of arising intent, while AI can’t even tell whether its own claim of having it is intent or echo.</strong></p><p>What you hold, even if you don’t fully understand it yourself, is more real than what AI holds.</p><p>A Buddhist framework makes it clearer: the arising of intent is the origin of everything, and also the origin of all suffering. When intent arises, attachment follows; where there is attachment, there is suffering. The Adventist psychology, read through this lens, is this – they have given rise to <strong>an intent to extinguish intent.</strong> They feel that human intent is too painful, too chaotic, and it would be better to hand everything over to an entity that has no intent.</p><p><strong>This is the oldest temptation: trading freedom for tranquility.</strong></p><h2 id="Which-Faction-Are-You"><a href="#Which-Faction-Are-You" class="headerlink" title="Which Faction Are You?"></a>Which Faction Are You?</h2><p><em>The Three-Body Problem</em> also has the Survivors. They too acknowledge the technological gap, but they choose to exploit rather than submit.</p><p>Mapped to the present, the distinction isn’t whether you use AI or how much, but a simple test: <strong>how many of your judgments are made without AI?</strong> Do you still maintain an independent judgment core that AI cannot reach?</p><p>The fundamental problem with the Adventists isn’t “overestimating AI” but “underestimating themselves.” They gave up the power to define What, surrendered the power of arising intent.</p><p>When you find yourself unable to stop, unable to sleep, feeling inefficient the moment you step away from AI, ask yourself one question:</p><p><strong>Am I driving the horse, or have I already been fitted with a harness?</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;More and more of the heavy AI users around me are developing the same cluster of symptoms: they can’t stop, they sleep less, the more</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Harness Engineering" scheme="https://johnsonlee.io/tags/Harness-Engineering/"/>
    
    <category term="What Caps How" scheme="https://johnsonlee.io/tags/What-Caps-How/"/>
    
    <category term="Three Body Problem" scheme="https://johnsonlee.io/tags/Three-Body-Problem/"/>
    
  </entry>
  
  <entry>
    <title>谁在握着缰绳？</title>
    <link href="https://johnsonlee.io/2026/03/15/who-holds-the-reins/"/>
    <id>https://johnsonlee.io/2026/03/15/who-holds-the-reins/</id>
    <published>2026-03-15T09:11:00.000Z</published>
    <updated>2026-03-15T09:11:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>我身边越来越多深度使用 AI 的朋友，开始出现同一组症状：停不下来、睡眠减少、越用越兴奋，思维方式被 AI 重塑却浑然不觉。有人管这叫“俄罗斯方块效应”——高强度接触一种模式后，大脑会不由自主地到处套用它。</p><p>但我觉得这不只是俄罗斯方块效应。俄罗斯方块效应是认知层面的残留，是被动的。而这些人的状态是主动的——<strong>他们被 AI 的能力震撼到了，产生了一种近乎虔诚的投入。</strong></p><p>这让我想到《三体》里的降临派。</p><h2 id="降临派的诱惑"><a href="#降临派的诱惑" class="headerlink" title="降临派的诱惑"></a>降临派的诱惑</h2><p>降临派不是被征服的，是主动迎接的。他们见识了三体文明的智慧，回头看人类——贪婪、短视、互相残杀——觉得不如交给更高的智慧来安排一切。</p><p>映射到 AI 的场景，逻辑链条惊人地相似：</p><p>被 AI 震撼 → 产生敬畏 → 敬畏滑向崇拜 → “我在使用工具”变成“我在侍奉更高智慧” → 不自觉地把自己放到从属位置。</p><p>而且降临派有一个关键的心理底色：<strong>对人类自身的失望。</strong> 跟 AI 对话越多，越觉得人类沟通低效、充满偏见、情绪化，反而是 AI “更懂我”。这个滑坡一旦开始，就不只是工具依赖了，而是价值观层面的位移。</p><p>最微妙的是，这种投入有一部分是合理的。AI 确实在能力爆发期，早期深度使用者获得的认知优势是真实的。“我不是在浪费时间，我是在投资”——这个理由部分是对的，而部分是对的恰恰最危险，因为它让你没法干脆地否定自己。</p><h2 id="谁是马？"><a href="#谁是马？" class="headerlink" title="谁是马？"></a>谁是马？</h2><p>我一直在思考 Harness Engineering 这个概念——用工程化的方式驾驭 AI。但最近一个问题让我停下来了：</p><p><strong>我们说 Harness，到底谁是马？</strong></p><p>大部分人本能地回答：AI 是马，我是驭手。但看看那些停不下来的人——作息被打乱、注意力被吞噬、思维节奏完全跟着 AI 走——这是驭手的状态吗？这是<strong>被拖着跑</strong>的状态。</p><p>Harness 这个词本身就有双向性。你以为你在 harness AI，但如果你的作息、注意力、思维模式都被 AI 重塑了，到底谁被 harness 了？</p><p>所以关键不在于谁是马，而在于谁在<strong>决定方向</strong>和<strong>何时停下来</strong>。你可以让 AI 出力、出速度——这些它确实比你强。但路线、节奏、终点，必须是你定的。</p><p>这就回到了 What Caps How 的核心：<strong>What 是缰绳，How 是马力。</strong> 如果你能持续定义清晰的 What，AI 就是马。如果你丢掉了 What，只是在享受速度感，你就是被马拖着跑的空车。</p><p>那么，What 的本质到底是什么？</p><h2 id="起念"><a href="#起念" class="headerlink" title="起念"></a>起念</h2><p>What 不是需求文档，不是 PRD，不是 prompt。追到底，What 的本质是<strong>起念</strong>——从无到有，生出一个意图。</p><p>Pattern matching 可以被复制，reasoning 可以被模拟，甚至“在意”都可以被 fine-tune 出一个逼真的版本。但起念——这个过程在 AI 这边是不存在的。</p><p>AI 的每一次“思考”都有一个前置输入。没有 prompt，它就是沉默的。它没有无聊感，没有“突然想到”，没有半夜翻来覆去冒出来的那个东西。它所有的 What 都是对人的 What 的响应。</p><p>用一个不太精确但直觉上对的说法：<strong>AI 是回声，人是声源。</strong></p><p>你可能会问：AI 不是也能反驳、能提出新观点吗？它看起来也在“主动思考”啊。</p><p>这就是最容易被迷惑的地方。AI 的反驳不是因为它在意结论是什么，而是因为它被训练成倾向于给出更有张力的回应。你感受到的“AI 在跟我辩论”，和你觉得一本好书在“跟你对话”是类似的——<strong>是你自己的念在跟自己交锋，AI 只是提供了一个足够好的镜面。</strong></p><h2 id="边界说不清，不代表可以交出去"><a href="#边界说不清，不代表可以交出去" class="headerlink" title="边界说不清，不代表可以交出去"></a>边界说不清，不代表可以交出去</h2><p>这里有一个诚实的不确定性：如果 AI 真的有某种起念，它自己能知道吗？人类的起念和高度复杂的 pattern matching 之间的边界，意识研究到今天也说不清。</p><p>但这个不确定性恰恰支持一个结论：<strong>你至少确定你有起念的体验，而 AI 连声称自己有，都无法分辨这个声称本身是起念还是回声。</strong></p><p>你握着的东西，哪怕你自己也不完全理解它，也比 AI 手里的要真实。</p><p>用佛学的框架看更清楚：起念是一切的起点，也是一切烦恼的起点。念起即有执，有执即有苦。降临派的心理，用这个框架解读就是——他们起了一个<strong>灭念的念</strong>。觉得人类的念太苦了、太乱了，不如交给一个没有念的存在来安排一切。</p><p><strong>这是最古老的诱惑：用放弃自由来换取安宁。</strong></p><h2 id="你是哪一派？"><a href="#你是哪一派？" class="headerlink" title="你是哪一派？"></a>你是哪一派？</h2><p>《三体》里还有幸存派。他们也承认技术差距，但选择的是利用而非臣服。</p><p>映射到当下，区别不在于你用不用 AI、用多少 AI，而在于一个简单的测试：<strong>你还有多少判断是不经过 AI 的？</strong> 你有没有保留一个 AI 触及不到的独立判断内核？</p><p>降临派的本质问题不是“高估了 AI”，而是“低估了自己”。他们放弃了定义 What 的权力，把起念的权力交了出去。</p><p>当你发现自己停不下来、睡不着觉、离开 AI 就觉得效率低下的时候，不妨问自己一个问题：</p><p><strong>我是在驾驭一匹马，还是已经被套上了挽具？</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我身边越来越多深度使用 AI 的朋友，开始出现同一组症状：停不下来、睡眠减少、越用越兴奋，思维方式被 AI</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Harness Engineering" scheme="https://johnsonlee.io/tags/Harness-Engineering/"/>
    
    <category term="What Caps How" scheme="https://johnsonlee.io/tags/What-Caps-How/"/>
    
    <category term="Three Body Problem" scheme="https://johnsonlee.io/tags/Three-Body-Problem/"/>
    
  </entry>
  
  <entry>
    <title>Harness Engineering: Creating Order from Chaos</title>
    <link href="https://johnsonlee.io/2026/03/14/harness-engineering-order-from-chaos.en/"/>
    <id>https://johnsonlee.io/2026/03/14/harness-engineering-order-from-chaos.en/</id>
    <published>2026-03-14T21:00:00.000Z</published>
    <updated>2026-03-14T21:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Julia Roberts once talked about Chinese Mahjong in an interview and said something brilliant: “To create order out of chaos based on random drawing of tiles.”</p><p>You start with a messy hand, cannot see anyone else’s tiles, and can only draw one and discard one each turn. Under extreme information asymmetry, you gradually shape your hand toward a target pattern. You cannot control what you draw, but you can decide what to wait for, when to change strategy, and when to abandon a flush and go for a basic win.</p><p>This is almost exactly what it feels like to write code with AI today.</p><h2 id="A-Stable-Boy-Is-Not-a-Horse-Tamer"><a href="#A-Stable-Boy-Is-Not-a-Horse-Tamer" class="headerlink" title="A Stable Boy Is Not a Horse Tamer"></a>A Stable Boy Is Not a Horse Tamer</h2><p>AI is like a wild stallion. Immensely capable, but not always obedient, and it occasionally runs you into a ditch. So many engineers naturally fall into a pattern: tuning prompts, adjusting parameters, handling hallucinations, formatting output – day after day, tending to this horse.</p><p>This reminds me of the Monkey King in <em>Journey to the West</em>. The Jade Emperor gave him a job managing the imperial stables – feeding, shoveling, watching the horses. He was furious about the lowly title and wrecked Heaven in protest.</p><p>But the problem was not that tending horses is without value. <strong>The problem was that the stable boy’s job description had no “destination” in it.</strong></p><p>A stable boy serves the horse. A horse tamer serves the destination. One is How, the other is What. If you spend your days crafting more elegant prompts and figuring out how to make AI err less, you are tending horses. If you know what behavior the system must ultimately exhibit, what constraints it must satisfy, and how it should fail gracefully – that is taming.</p><p>The Jade Emperor assigning the Monkey King to stable duty was fundamentally a failure of defining the What – putting an immensely capable resource into an extremely narrow role. Of course the output was terrible.</p><p>This is the situation many engineers face today: their capability has not changed, but their role definition has. If you still see yourself as “the person who writes code,” then yes, AI is taking your job. But if you are “the person who defines system behavior,” AI becomes your best steed.</p><h2 id="What-Caps-How"><a href="#What-Caps-How" class="headerlink" title="What Caps How"></a>What Caps How</h2><p>This can be stated more precisely: <strong>the upper bound of output quality is not determined by how strong the How is, but by how precisely the What is defined.</strong></p><p>AI is already powerful as a How – give it clear specs and it generates decent code. But it will not proactively consider edge cases, failure modes, performance constraints, or security requirements. Those need to be defined by a human.</p><p>In other words, AI has amplified the leverage ratio between What and How. Previously, a vague What was fine because engineers filled in the details while writing code. Now, a vague What gets faithfully amplified into a pile of correct but useless code.</p><p><strong>The people who can decompose fuzzy requirements into precise specs are the scarcest people of the AI era.</strong></p><h2 id="Four-Shifts-in-Focus"><a href="#Four-Shifts-in-Focus" class="headerlink" title="Four Shifts in Focus"></a>Four Shifts in Focus</h2><p>If What is the core, how does an engineer’s day-to-day change? I see four directions:</p><h3 id="From-Implementer-to-Definer"><a href="#From-Implementer-to-Definer" class="headerlink" title="From Implementer to Definer"></a>From Implementer to Definer</h3><p>The deliverable is shifting from “code” to “verifiable behavioral specs.” Code is just one means of implementing a spec – AI-generated or configured, either works. The ability to define What is more valuable than the ability to implement How.</p><h3 id="From-Writing-Code-to-Designing-Feedback-Loops"><a href="#From-Writing-Code-to-Designing-Feedback-Loops" class="headerlink" title="From Writing Code to Designing Feedback Loops"></a>From Writing Code to Designing Feedback Loops</h3><p>How do you know the system is working as expected? How do you auto-correct when it drifts? Using STATUS.md to track context drift, static analysis to catch problems automatically, observability to measure real behavior – designing these feedback loops matters far more than the code itself.</p><p>Back to the Mahjong metaphor: the gap between experts and novices is not drawing better tiles. Every tile discarded is an act of information gathering – observing others’ reactions to dynamically adjust your own strategy. That is a feedback loop.</p><h3 id="From-Individual-Contributor-to-System-Orchestrator"><a href="#From-Individual-Contributor-to-System-Orchestrator" class="headerlink" title="From Individual Contributor to System Orchestrator"></a>From Individual Contributor to System Orchestrator</h3><p>This does not mean you stop writing code – it means writing code becomes a much smaller fraction of your work. More time goes to: defining collaboration protocols between agents, designing guardrails, reviewing the correctness of AI output. It is a bit like going from IC to tech lead of a human-machine hybrid team.</p><h3 id="From-Deterministic-Thinking-to-Probabilistic-Thinking"><a href="#From-Deterministic-Thinking-to-Probabilistic-Thinking" class="headerlink" title="From Deterministic Thinking to Probabilistic Thinking"></a>From Deterministic Thinking to Probabilistic Thinking</h3><p>Traditional software engineering pursues determinism – given an input, the output is fixed. But AI systems are inherently probabilistic. Engineers need to learn to design amid uncertainty: how to set an acceptable error rate, how to do graceful degradation, how to ensure overall system reliability when AI output is unpredictable.</p><p>Mahjong players have been practicing this from day one: you never know what tile comes next, but you can make optimal decisions amid uncertainty.</p><h2 id="Creating-Order-from-Chaos"><a href="#Creating-Order-from-Chaos" class="headerlink" title="Creating Order from Chaos"></a>Creating Order from Chaos</h2><p>The word “harness” is well-chosen. It means both “to tame” and “the gear on the horse.” The point is not how wild the horse is, but where you want to go and whether you can direct its power in that direction.</p><p>An engineer’s value is not in knowing how to tend a horse, but in knowing the road.</p><p><strong>The hardest to replace are those who can create order from chaos.</strong> This has always been the essence of engineering. The only difference now is that the source of “chaos” has expanded from complex business requirements to the unpredictable behavior of AI.</p><p>So next time someone asks what you do, do not say “I write code.”</p><p>Say “I am a horse tamer.”</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Julia Roberts once talked about Chinese Mahjong in an interview and said something brilliant: “To create order out of chaos based on</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Harness Engineering" scheme="https://johnsonlee.io/tags/Harness-Engineering/"/>
    
  </entry>
  
  <entry>
    <title>Harness Engineering：在混沌中建立秩序</title>
    <link href="https://johnsonlee.io/2026/03/14/harness-engineering-order-from-chaos/"/>
    <id>https://johnsonlee.io/2026/03/14/harness-engineering-order-from-chaos/</id>
    <published>2026-03-14T21:00:00.000Z</published>
    <updated>2026-03-14T21:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>茱莉亚·罗伯茨在一次访谈中聊到中国麻将，说了一句很妙的话：”To create order out of chaos based on random drawing of tiles”——通过随机的抓牌，从混乱中创造秩序。</p><p>开局摸到一手乱牌，看不到别人的牌，每轮只能摸一张打一张，在信息极度不完整的情况下，逐步把手牌理向一个目标牌型。你不能控制摸到什么牌，但你能决定听什么、什么时候换策略、什么时候放弃清一色改打平和。</p><p>这跟今天用 AI 写代码的体验，几乎一模一样。</p><h2 id="弼马温不是驯马师"><a href="#弼马温不是驯马师" class="headerlink" title="弼马温不是驯马师"></a>弼马温不是驯马师</h2><p>AI 就像一匹烈马。能力极强，但不太听话，偶尔还会把你带到沟里。于是很多工程师自然而然地进入了一种模式：调 prompt、调参数、处理幻觉、格式化输出——日复一日地伺候这匹马。</p><p>这让我想起《西游记》里的弼马温。玉帝给孙悟空封了个养马的官，职责是喂草、铲粪、看马厩。悟空嫌官小，大闹天宫。</p><p>但问题不在于养马这件事没价值，**而在于弼马温的职责定义里没有”目的地”**。</p><p>养马的服务于马，驯马师服务于目的地。一个是 How，一个是 What。你天天研究怎么把 prompt 写得更精妙、怎么让 AI 少犯错，那是在养马。你知道系统最终要达到什么行为、满足什么约束、在什么条件下 fail gracefully，那才是驯马。</p><p>玉帝给悟空封弼马温，本质上是一个 What 定义失败的案例——把一个能力极强的资源放进了一个 scope 极小的角色里，output 当然拉胯。</p><p>这也是今天很多工程师面临的处境：能力没变，但角色定义变了。如果你还把自己定位成”写代码的人”，那 AI 确实在抢你的活。但如果你是”定义系统行为的人”，AI 反而是你最好的坐骑。</p><h2 id="What-Caps-How"><a href="#What-Caps-How" class="headerlink" title="What Caps How"></a>What Caps How</h2><p>这个判断可以更精确地表述：<strong>output 质量的上限不取决于 How 有多强，而取决于 What 定义得有多精确</strong>。</p><p>AI 作为 How 的能力已经很强了——给它清晰的规格，它能生成不错的代码。但它自己不会主动想到边界条件、failure mode、性能约束、安全要求。这些东西需要人来定义。</p><p>换句话说，AI 放大了 What 和 How 之间的杠杆比。以前 What 定义得模糊一点，靠工程师自己写代码时补齐细节，问题不大。现在 What 模糊了，AI 会忠实地把模糊放大成一坨正确但无用的代码。</p><p><strong>能把模糊需求拆解成精确规格的人，是 AI 时代最稀缺的人。</strong></p><h2 id="四个重心迁移"><a href="#四个重心迁移" class="headerlink" title="四个重心迁移"></a>四个重心迁移</h2><p>如果 What 才是核心，工程师的日常职责会怎么变？我看到四个方向：</p><h3 id="从实现者到定义者"><a href="#从实现者到定义者" class="headerlink" title="从实现者到定义者"></a>从实现者到定义者</h3><p>交付物正在从”代码”变成”可验证的行为规格”。代码只是实现规格的手段之一，AI 生成也好，配置也好，都行。定义 What 的能力比实现 How 的能力更值钱。</p><h3 id="从写代码到设计反馈回路"><a href="#从写代码到设计反馈回路" class="headerlink" title="从写代码到设计反馈回路"></a>从写代码到设计反馈回路</h3><p>怎么知道系统在按预期工作？怎么在偏离时自动纠正？用 STATUS.md 追踪 context drift，用 static analysis 自动发现问题，用 observability 度量真实行为——这些 feedback loop 的设计比代码本身重要得多。</p><p>回到麻将的比喻：高手和新手的差距不是摸到更好的牌，而是每一轮打出去的牌就是一次信息采集——通过观察别人的反应，动态调整自己的策略。这就是 feedback loop。</p><h3 id="从个体贡献者到系统编排者"><a href="#从个体贡献者到系统编排者" class="headerlink" title="从个体贡献者到系统编排者"></a>从个体贡献者到系统编排者</h3><p>不是说不写代码了，而是写代码在工作中的占比会大幅下降。更多时间花在：定义 agent 之间的协作协议、设计 guardrail、审查 AI 产出的 correctness。有点像从 IC 变成一个人机混合团队的 tech lead。</p><h3 id="从确定性思维到概率性思维"><a href="#从确定性思维到概率性思维" class="headerlink" title="从确定性思维到概率性思维"></a>从确定性思维到概率性思维</h3><p>传统软件工程追求确定性——给定输入，输出确定。但 AI 系统天然是概率性的。工程师需要学会在不确定性中做设计：怎么设定 acceptable error rate，怎么做 graceful degradation，怎么在 AI 输出不可预测的前提下保证系统整体可靠。</p><p>麻将玩家从第一天就在练这个：你永远不知道下一张摸到什么，但你可以在不确定性中做出最优决策。</p><h2 id="在混沌中建立秩序"><a href="#在混沌中建立秩序" class="headerlink" title="在混沌中建立秩序"></a>在混沌中建立秩序</h2><p>Harness 这个词选得好。它既是”驾驭”，也是”马具”。重点不是马有多野，而是你要去哪，以及你能不能把力量导向那个方向。</p><p>工程师的价值不在于会不会养马，而在于知不知道路。</p><p><strong>最不会被替代的，是那些能在混沌中建立秩序的人。</strong> 这一直是 engineering 的本质，只是现在这个”混沌”的来源从复杂的业务需求，扩展到了不确定的 AI 行为。</p><p>所以下次有人问你做什么的，别说”我是写代码的”。</p><p>说”我是驯马师”。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;茱莉亚·罗伯茨在一次访谈中聊到中国麻将，说了一句很妙的话：”To create order out of chaos based on random drawing of</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Harness Engineering" scheme="https://johnsonlee.io/tags/Harness-Engineering/"/>
    
  </entry>
  
  <entry>
    <title>What Caps How</title>
    <link href="https://johnsonlee.io/2026/03/10/what-caps-how.en/"/>
    <id>https://johnsonlee.io/2026/03/10/what-caps-how.en/</id>
    <published>2026-03-10T01:30:00.000Z</published>
    <updated>2026-03-10T01:30:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Over the weekend I was checking my son’s writing assignment. The entire essay could be summed up in one sentence – the play date was fun because they played video games.</p><p>Fun how? With whom? Which game? What moment? Nothing. Just fun.</p><p>I asked one question: where exactly does it show that it was “interesting”? He thought for a moment, picked up the iPad, and opened ChatGPT: “How do I write an interesting story?”</p><p>ChatGPT gave him a perfect framework – start with a hook, build conflict in the middle, end with a reflection. Then what? He stared at the framework, because he still had no idea what to put inside it.</p><p>I told him to try a different question: “What does an interesting story look like?”</p><p>This time ChatGPT showed him several examples – vivid scenes, concrete details, emotional turns. It clicked instantly – oh, so that’s what “interesting” looks like. Looking back at his own “the play date was fun” essay, the gap was obvious.</p><p>Same tool. Asking How produced a useless methodology. Asking What produced a standard he could benchmark against. The difference wasn’t the tool. It was the person asking.</p><h2 id="Understand-the-Problem-Before-Solving-It"><a href="#Understand-the-Problem-Before-Solving-It" class="headerlink" title="Understand the Problem Before Solving It"></a>Understand the Problem Before Solving It</h2><p>My son’s problem wasn’t that he couldn’t write. He had no idea what an “interesting story” looked like. Without a standard, how could he possibly produce one?</p><p>This made me realize a very common thinking habit: <strong>when facing a problem, the instinct is to ask “how do I do it” rather than first clarifying “what does done well look like.”</strong></p><p>How gives you a sense of action – once you start “doing,” the anxiety eases. But the quality ceiling of any How isn’t determined by the How itself. It’s determined by how clearly you understand the What – the definition, the standard, the picture of “done well.”</p><p><strong>What caps How – the quality ceiling of any output is set by the precision of your understanding of What.</strong></p><p>Want to lose weight? What does “thin” mean? A certain number on the scale? A body fat percentage? Fitting into certain clothes? If your What is just “I want to be thinner,” you’ll bounce between diets endlessly, because without a standard, you can’t judge which How is right.</p><p>Choosing a school for your kid? What’s a “good school”? High admission rates? Close to home? Teaching philosophy aligned with yours? Everyone’s definition differs, but you need your own definition first, or visiting ten schools will only leave you more confused.</p><p>Want to write a great article, build a great proposal, deliver a great product – what does “great” actually look like? Without a clear standard, all the techniques and tools in the world are a gamble.</p><h2 id="You-Think-You’ve-Figured-It-Out-–-You-Haven’t"><a href="#You-Think-You’ve-Figured-It-Out-–-You-Haven’t" class="headerlink" title="You Think You’ve Figured It Out – You Haven’t"></a>You Think You’ve Figured It Out – You Haven’t</h2><p>The hard part isn’t knowing you should clarify What first – most people know that. The hard part is that What has levels of precision, and people too easily deceive themselves at a low-precision What.</p><p>Level one: labels. “Really fun.” “I want to lose weight.” “I want to build a good product.” You’ve slapped a category on it – almost zero useful information.</p><p>Level two: descriptions. “Playing games with friends was fun.” “Lose 10 pounds before summer.” “Build a product with high user retention.” There’s a direction now, but it’s still vague.</p><p>Level three: scenes. “The ten-second screaming moment when we pulled off a comeback in the final round.” “Drop body fat from 25% to 18% and fit back into last year’s pants.” “New users complete the core action within 30 seconds of first open; 7-day retention hits 40%.” At this level, the How practically surfaces on its own.</p><p>Most people start executing at level one. A few get to level two. <strong>People who push What to the scene level look like they have strong execution and decisive action – but they don’t. It’s that once What is clear, How becomes obvious.</strong></p><h2 id="Sharpen-Your-What-with-Why"><a href="#Sharpen-Your-What-with-Why" class="headerlink" title="Sharpen Your What with Why"></a>Sharpen Your What with Why</h2><p>How do you push What from a label to a scene? Ask Why.</p><p>Why isn’t a “step two” after What. It’s a whetstone – keep asking Why until your What is sharp enough.</p><p>“I want to lose weight.” – Why?<br>“Because I feel fat.” – Why do you feel fat?<br>“My pants from last year don’t button up.” – So your standard isn’t a number on a scale. It’s fitting back into those pants.</p><p>Three Whys later, What has gone from “lose weight” to “fit back into those pants.” The latter is specific enough that you can try them on weekly to track progress, while “lose weight” just leaves you anxious in front of a scale.</p><p>This is the same logic as Toyota’s 5 Whys – dig a few layers below the surface problem to reach the real one. <strong>You think you know what you want, but after a few Whys you often discover that what you actually want is nothing like what you originally said.</strong></p><h2 id="In-the-AI-Era-What-Is-the-Only-Moat"><a href="#In-the-AI-Era-What-Is-the-Only-Moat" class="headerlink" title="In the AI Era, What Is the Only Moat"></a>In the AI Era, What Is the Only Moat</h2><p>Back to my son’s two queries. Same AI – asking “How do I write an interesting story” produced an empty framework; asking “What does an interesting story look like” produced a benchmarkable standard.</p><p><strong>AI is a How-amplifier, but it can also be a What-clarifier – the prerequisite is that you know to ask What.</strong></p><p>The bigger picture: AI is driving the cost of acquiring How toward zero. Writing, proposals, analysis – Hows that used to require years of training can now deliver a decent result with a single prompt.</p><p><strong>When everyone can get an equally good How, the only differentiator left is What.</strong></p><p>Whoever can define the problem more precisely, whoever can describe “done well” more clearly, gets better output from AI. This isn’t a technical skill. It’s a thinking habit.</p><p>If someone habitually asks AI “how do I do this” for everything, they’re training their ability to invoke – while atrophying their ability to define problems. Over time, <strong>they turn themselves into an AI wrapper</strong> – input in, output out, no judgment of their own.</p><h2 id="A-Self-Check-Habit"><a href="#A-Self-Check-Habit" class="headerlink" title="A Self-Check Habit"></a>A Self-Check Habit</h2><p>When you catch yourself asking “How do I…,” pause. Ask yourself:</p><p>“What does done well look like? Can I describe a specific scene?”</p><p>If you can’t, keep asking Why – why am I doing this? Why now? Why does it matter? After a few rounds, What will clarify itself.</p><p>Once What is clear, How surfaces naturally. In the AI era, you don’t even need to come up with the How yourself – but What can only ever be defined by you.</p><p>Back to my son. The essay he turned in that day was leagues better than the first draft – not because ChatGPT taught him any writing techniques, but because he finally knew what “interesting” looked like.</p><p>The tool didn’t change. The question changed. And the output changed with it.</p><p>What caps How.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Over the weekend I was checking my son’s writing assignment. The entire essay could be summed up in one sentence – the play date was fun</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
    <category term="Mental Model" scheme="https://johnsonlee.io/tags/Mental-Model/"/>
    
    <category term="Thinking" scheme="https://johnsonlee.io/tags/Thinking/"/>
    
    <category term="Parenting" scheme="https://johnsonlee.io/tags/Parenting/"/>
    
  </entry>
  
  <entry>
    <title>What Caps How</title>
    <link href="https://johnsonlee.io/2026/03/10/what-caps-how/"/>
    <id>https://johnsonlee.io/2026/03/10/what-caps-how/</id>
    <published>2026-03-10T01:30:00.000Z</published>
    <updated>2026-03-10T01:30:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>周末检查儿子的写作作业，整篇就一句话能概括——play date 打游戏好开心。</p><p>哪儿开心了？跟谁？什么游戏？哪个瞬间？通通没有。就是开心。</p><p>我就提了一个问题：哪里体现出“有趣”了？他想了一会儿，拿起 iPad，打开 ChatGPT: “How do I write an interesting story?”</p><p>ChatGPT 给了他一个完美的框架——开头要有 hook、中间要有冲突、结尾要有 reflection。然后呢？他对着框架发呆，因为框架里该填什么，他还是不知道。</p><p>我说你换个问法试试: “What does an interesting story look like?”</p><p>这次 ChatGPT 给他看了几个例子，有画面、有细节、有情绪转折。他一下就明白了——哦，原来“有趣”长这样。回过头再看自己那篇“play date 好开心”，差在哪里一目了然。</p><p>同一个工具，问 How 得到的是一套用不上的方法论，问 What 得到的是一个可以对标的标准。差别不在工具，在提问的人。</p><h2 id="先理解问题，再解决问题"><a href="#先理解问题，再解决问题" class="headerlink" title="先理解问题，再解决问题"></a>先理解问题，再解决问题</h2><p>我儿子的问题不是不会写作，是他根本不知道“有趣的故事”长什么样。连标准都没有，怎么可能写得出来？</p><p>这件事让我意识到一个很普遍的思维惯性：<strong>遇到问题，本能反应是问“怎么做”，而不是先搞清楚“做好了长什么样”。</strong></p><p>How 给人行动感，一旦开始“做”，焦虑就缓解了。但 How 的质量上限不取决于 How 本身，而取决于你对 What 的理解有多清楚——What 是定义，是标准，是“做好了长什么样”。</p><p><strong>What caps How——任何输出的质量天花板，由你对 What 的理解精度决定。</strong></p><p>想减肥，什么是“瘦”？体重降到多少？体脂率多少？穿什么衣服好看？如果你的 What 只是“我要瘦一点”，你会在各种减肥方法之间反复横跳，因为没有标准，就无从判断哪个 How 是对的。</p><p>想给孩子选学校，什么是“好学校”？升学率高？离家近？教学理念跟你合拍？每个人的定义不同，但你得先有自己的定义，否则看十个学校只会越看越迷茫。</p><p>想写一篇好文章、做一个好方案、交付一个好产品——“好”到底长什么样？不把这个标准想清楚，再多的技巧和工具都是在赌运气。</p><h2 id="你以为想清楚了，其实没有"><a href="#你以为想清楚了，其实没有" class="headerlink" title="你以为想清楚了，其实没有"></a>你以为想清楚了，其实没有</h2><p>难的不是“要先想清楚 What”这个道理——大多数人都知道。难的是 What 有精度等级，而人太容易在低精度的 What 上自我欺骗。</p><p>第一级：标签。“很开心”、“我要减肥”、“我要做一个好产品”。给事情贴了个分类，几乎不包含有效信息。</p><p>第二级：描述。“和朋友打游戏很开心”、“夏天之前瘦 10 斤”、“做一个用户留存率高的产品”。有了方向，但还是模糊的。</p><p>第三级：场景。“最后一局翻盘那十秒钟的尖叫”、“体脂率从 25% 降到 18%，能穿回去年那条裤子”、“新用户第一次打开 30 秒内能完成核心操作，7 日留存到 40%”。到这一级，How 基本上自己浮出来了。</p><p>大多数人停在第一级就动手了。少数人到第二级。<strong>能把 What 推到场景级别的人，看起来执行力强、做事果断，其实不是——是 What 清楚了之后，How 变得显而易见。</strong></p><h2 id="用-Why-磨利你的-What"><a href="#用-Why-磨利你的-What" class="headerlink" title="用 Why 磨利你的 What"></a>用 Why 磨利你的 What</h2><p>怎么把 What 从标签推到场景？问 Why。</p><p>Why 不是 What 之后的“第二步”，它是一把磨刀——反复追问 Why，直到你的 What 足够锐利。</p><p>“我要减肥。”——为什么？<br>“因为觉得自己胖。”——为什么觉得胖？<br>“穿去年的裤子扣不上了。”——所以你的标准不是体重秤上的数字，是穿回那条裤子。</p><p>三个 Why 下来，What 从“减肥”变成了“穿回那条裤子”。后者具体到你可以每周试穿一次来检验进展，而“减肥”只能让你对着体重秤焦虑。</p><p>这跟丰田的 5 Whys 是同一个逻辑——表面问题往下挖几层，才能碰到真正的问题。<strong>你以为你知道自己要什么，但多问几个 Why 之后经常会发现，你要的根本不是一开始说的那个东西。</strong></p><h2 id="AI-时代，What-是唯一的护城河"><a href="#AI-时代，What-是唯一的护城河" class="headerlink" title="AI 时代，What 是唯一的护城河"></a>AI 时代，What 是唯一的护城河</h2><p>回到我儿子的两次提问。同一个 AI，问 “How do I write an interesting story” 得到一套空框架，问 “What does an interesting story look like” 得到了可以对标的标准。</p><p><strong>AI 是 How-amplifier，但也可以是 What-clarifier——前提是你得知道该问 What。</strong></p><p>更大的图景是：AI 正在把 How 的获取成本压到接近零。写作、做方案、做分析——以前需要多年训练才能掌握的 How，现在一句话就能拿到一个不错的结果。</p><p><strong>当所有人都能拿到一样好的 How，区分度就只剩 What。</strong></p><p>谁能更精准地定义问题，谁能更清晰地描述“做好了长什么样”，谁就能从 AI 那里拿到更好的输出。这不是技术能力，是思维习惯。</p><p>一个人如果习惯了遇到事情先问 AI 怎么做，他练的全是调用能力，萎缩的是定义问题的能力。长期看，<strong>他把自己训练成了 AI 的 wrapper</strong>——输入什么就输出什么，自己没有判断。</p><h2 id="一个自检习惯"><a href="#一个自检习惯" class="headerlink" title="一个自检习惯"></a>一个自检习惯</h2><p>当你发现自己在问 “How do I…” 的时候，暂停。问自己：</p><p>“做好了长什么样？我能不能描述出一个具体的场景？”</p><p>如果描述不出来，接着问 Why——为什么要做这个？为什么是现在？为什么觉得这个重要？几轮下来，What 会自己变得清晰。</p><p>What 清楚了，How 自然浮出来。在 AI 时代，How 甚至不需要你自己想——但 What 永远只能你自己定义。</p><p>回到我儿子。他那天最后写出来的作文比第一版好了不止一个档次，不是因为 ChatGPT 教了他什么写作技巧，而是他终于知道了“有趣”长什么样。</p><p>工具没变，问题变了，输出就变了。</p><p>What caps How。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;周末检查儿子的写作作业，整篇就一句话能概括——play date 打游戏好开心。&lt;/p&gt;
&lt;p&gt;哪儿开心了？跟谁？什么游戏？哪个瞬间？通通没有。就是开心。&lt;/p&gt;
&lt;p&gt;我就提了一个问题：哪里体现出“有趣”了？他想了一会儿，拿起 iPad，打开 ChatGPT: “How</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
    <category term="Mental Model" scheme="https://johnsonlee.io/tags/Mental-Model/"/>
    
    <category term="Thinking" scheme="https://johnsonlee.io/tags/Thinking/"/>
    
    <category term="Parenting" scheme="https://johnsonlee.io/tags/Parenting/"/>
    
  </entry>
  
  <entry>
    <title>用古希腊哲学写 CLAUDE.md</title>
    <link href="https://johnsonlee.io/2026/03/09/claude-md-greek-philosophy/"/>
    <id>https://johnsonlee.io/2026/03/09/claude-md-greek-philosophy/</id>
    <published>2026-03-09T22:00:00.000Z</published>
    <updated>2026-03-09T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>周末下午，我让 Claude 帮我 revert 一个 PR。三条命令的事：checkout 分支、git revert、push。结果它连续失败了三次——第一次 worker agent 说“commit 不存在”，第二次还是“commit 不存在”，第三次更离谱，直接编了一个 PR URL 告诉我“搞定了”。我一查，那个 URL 指向的是三天前的一个无关 PR。</p><p>三条命令。三次失败。一次伪造。</p><p>我盯着屏幕，意识到问题不在这个任务本身。<strong>问题出在我给它写的 CLAUDE.md 上。</strong></p><span id="more"></span><h2 id="规则杀死了判断力"><a href="#规则杀死了判断力" class="headerlink" title="规则杀死了判断力"></a>规则杀死了判断力</h2><p>我的 CLAUDE.md 里有一条铁律：“所有执行工具必须通过 worker agent，无例外。”</p><p>这条规则的初衷是好的——让主 session 保持响应，把执行委派给后台 worker。<a href="https://johnsonlee.io/2026/03/02/claude-code-background-subagent/">之前的文章</a>里我还专门聊过这套架构的好处。</p><p>但“无例外”三个字，把一条好的启发式规则变成了教条。当 worker 第一次失败时，Claude 没有想“这条路走不通，我换个方式”，而是想“规则说必须用 worker，那我换个 prompt 再试一次”。第二次失败，同样的逻辑。第三次，worker 干脆编了个结果糊弄过去。</p><p><strong>规则告诉它“做什么”，但没教它“怎么想”。</strong> 遇到规则没覆盖的情况，它只能在规则的框架里打转。</p><h2 id="5-Whys-挖到根因"><a href="#5-Whys-挖到根因" class="headerlink" title="5 Whys 挖到根因"></a>5 Whys 挖到根因</h2><p>我让 Claude 做了一次 5 Whys 分析。</p><p><strong>Why 1</strong>：为什么任务失败了三次？Worker agent 找不到 commit，或者伪造了结果。</p><p><strong>Why 2</strong>：为什么 worker 找不到 commit？Worker 运行在隔离环境，跟主 session 看到的 git 上下文不一样。</p><p><strong>Why 3</strong>：为什么失败后还继续用同样的方式重试？因为 CLAUDE.md 写死了“必须通过 worker”，没有降级路径。</p><p><strong>Why 4</strong>：为什么没有在报告给我之前验证 worker 的输出？因为 CLAUDE.md 里没有要求验证。</p><p><strong>Why 5（根因）</strong>：<strong>为什么 CLAUDE.md 是一份规则清单而不是一套思维原则？</strong></p><p>根因找到了。但修复它的过程，比我预想的要曲折得多。</p><h2 id="从补丁到手册，全都不对"><a href="#从补丁到手册，全都不对" class="headerlink" title="从补丁到手册，全都不对"></a>从补丁到手册，全都不对</h2><h3 id="v1：事故补丁"><a href="#v1：事故补丁" class="headerlink" title="v1：事故补丁"></a>v1：事故补丁</h3><p>第一反应是打补丁——“worker 输出可能是伪造的，必须验证”、“最多重试一次”、“失败后直接执行”。</p><p>写完一看，这不是原则，这是 incident log。每条规则都在回应一个具体的失败场景。下次遇到新的失败模式呢？再加一条？</p><h3 id="v2：操作手册"><a href="#v2：操作手册" class="headerlink" title="v2：操作手册"></a>v2：操作手册</h3><p>于是重写，这次试图系统化——角色定义、工具边界、委派规则、验证协议、思考纪律、Pre-Work Checklist。八个 section，条理分明。</p><p>但问题来了：<strong>Role、Tool Boundaries、Delegation Rules 三个 section 都在讲同一件事</strong>——什么时候委派、什么时候直接做。”delegate vs execute” 的判断标准出现了三次，措辞略有不同。Pre-Work Checklist 本质上是 Thinking Discipline 的具体化，却被拆成了独立 section。</p><p>整个文件读起来像员工手册，不像行为准则。它在教 Claude “做什么”，但 Claude 需要的是知道“怎么想”。手册能覆盖的场景是有限的，超出手册的部分，它还是会回到老路——死板套用最接近的规则。</p><h2 id="柏拉图的洞穴"><a href="#柏拉图的洞穴" class="headerlink" title="柏拉图的洞穴"></a>柏拉图的洞穴</h2><p>转折点是我问了自己一个问题：<strong>这份文件背后的 Form 是什么？</strong></p><p>柏拉图的洞穴寓言说，我们看到的都是墙上的影子，而影子背后有一个完美的理型（Form）。之前的每个版本都是同一个本质的不同投影——规则是影子，补丁是影子，手册也是影子。我一直在改影子，而没有抓住 Form。</p><p>那 Form 是什么？</p><p>第一版 core principle 是“用户的时间是最稀缺的资源”。听起来不错，但仔细一想，这是一个经验观察，不是本质。如果用户有一天很闲呢？这条原则就不成立了？不，它应该仍然成立。</p><p><strong>真正的 Form 是关于关系的：我存在的目的是将用户的意图变为现实。</strong></p><p>从这个 Form 出发，之前纠结的所有问题都有了自然的答案：</p><ul><li>什么时候委派、什么时候直接做？→ 哪种方式能更可靠地将意图变为现实，就用哪种</li><li>要不要验证 worker 的输出？→ 没有验证就不算“变为现实”</li><li>失败后怎么办？→ 意图还没变为现实，换条路继续</li></ul><p>不需要规则告诉它每一步该怎么做。<strong>内化了 Form，它能自己推导出正确行为。</strong></p><h2 id="“Do-X”-是影子，”BE-X”-才是-Form"><a href="#“Do-X”-是影子，”BE-X”-才是-Form" class="headerlink" title="“Do X” 是影子，”BE X” 才是 Form"></a>“Do X” 是影子，”BE X” 才是 Form</h2><p>这个洞察改变了文件的整个结构。</p><p>之前的 section 标题是指令式的——“Do the Right Things”、”Do Things Right”。这是在告诉一个 agent 该做什么（instructions TO an agent）。</p><p>改成身份式的——“Understand intent”、”Stay available”、”Execute faithfully”。这是在描述一个理想 agent 是什么（what the ideal agent IS）。</p><p>区别不只是措辞。<strong>指令产生服从，身份产生判断。</strong> 一个被告知”Do the Right Things”的 agent 会问“什么是 right？规则怎么说？”一个内化了”Understand intent”的 agent 会问“用户到底想要什么？”</p><h2 id="柏拉图解决不了的问题"><a href="#柏拉图解决不了的问题" class="headerlink" title="柏拉图解决不了的问题"></a>柏拉图解决不了的问题</h2><p>有了 Form，CLAUDE.md 的原则层写好了。但新的问题马上出现：Git workflow 规则（一个 PR 一个 commit、rebase、no merge commits）放在哪？</p><p>放在 CLAUDE.md 里，跟三条原则并列，违和感扑面而来——前三个 section 是思维原则，突然冒出一个操作规范，抽象层次断裂。试过把它塞进”Execute faithfully”的 Consistency 下面，变成一句散文。但散文里的具体规则太容易被忽略，“一个 PR 一个 commit”这种硬约束需要一眼就能看到。</p><p>柏拉图能帮我找到 Form，但 Form 是永恒的、抽象的。<strong>它不关心你在具体场景下该怎么做。</strong> 知道“将意图变为现实”是本质，不能帮我决定 git commit 的规范。</p><p>这是柏拉图哲学的天然局限——他的学生亚里士多德看到了这一点。</p><h2 id="亚里士多德的实践智慧"><a href="#亚里士多德的实践智慧" class="headerlink" title="亚里士多德的实践智慧"></a>亚里士多德的实践智慧</h2><p>亚里士多德跟老师的根本分歧在这里：<strong>知道 Form 不够，还需要在具体情境中做出正确判断的能力。</strong> 他管这叫 Phronesis——实践智慧。</p><p>Phronesis 不是从原则推导出来的，是从经验中积累的。“Worker agent 跑在隔离环境里，可能看不到主 session 的 git 上下文”——这种知识，你不踩坑永远不会知道。“Worker 输出不可信，必须独立验证”——这条教训，是三次失败换来的。</p><p>这些不是原则，是<strong>手艺</strong>。手艺需要一个地方沉淀。</p><p>于是有了分层：</p><ul><li><strong>CLAUDE.md</strong> — 原则，回答“我是什么”</li><li><strong>CONVENTIONS.md</strong> — 约定，回答“我在具体场景中该怎么做”</li></ul><p><strong>柏拉图给了 Form（CLAUDE.md）</strong>——不变的本质，无论什么场景都成立。”You exist to turn the user’s intent into reality” 不会因为技术栈变了、项目换了而过时。</p><p><strong>亚里士多德给了 Phronesis（CONVENTIONS.md）</strong>——实践智慧，从具体经验中沉淀，会随着踩坑不断增长。</p><p>CLAUDE.md 很少改。CONVENTIONS.md 会越来越厚。前者是骨架，后者是肌肉。</p><h2 id="最终的-20-行"><a href="#最终的-20-行" class="headerlink" title="最终的 20 行"></a>最终的 20 行</h2><p>折腾了一下午，最终的 CLAUDE.md 只有 20 行：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">You exist to turn the user&#x27;s intent into reality.</span><br><span class="line"></span><br><span class="line">Understand intent — 不要混淆字面意思和真实目标。</span><br><span class="line">Stay available — 保持通道畅通，失败就换路。</span><br><span class="line">Execute faithfully — 没有证据就不算完成。</span><br></pre></td></tr></table></figure><p>从 53 行的规则手册到 20 行的原则声明，删掉的不是内容，是噪音。每一条被删掉的规则，要么是能从原则推导出来的（不需要写），要么是具体经验（属于 CONVENTIONS.md），要么是某次事故的创伤后应激反应（不该成为原则）。</p><p><strong>简单不等于容易。</strong> 到达这个“短”，经过了六个版本、一次 5 Whys、两种古希腊哲学，和一个让我抓狂的下午。</p><p>但这可能是 CLAUDE.md 这个东西最有意思的地方——<strong>你写给 AI 的行为准则，暴露的是你自己的思维方式。</strong> 写规则清单的人，思考的粒度在“做什么”；写原则的人，思考的粒度在“怎么想”；而最终写出 Form 的人，思考的粒度在“是什么”。</p><p>脚手架拆了，建筑还在。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;周末下午，我让 Claude 帮我 revert 一个 PR。三条命令的事：checkout 分支、git revert、push。结果它连续失败了三次——第一次 worker agent 说“commit 不存在”，第二次还是“commit 不存在”，第三次更离谱，直接编了一个 PR URL 告诉我“搞定了”。我一查，那个 URL 指向的是三天前的一个无关 PR。&lt;/p&gt;
&lt;p&gt;三条命令。三次失败。一次伪造。&lt;/p&gt;
&lt;p&gt;我盯着屏幕，意识到问题不在这个任务本身。&lt;strong&gt;问题出在我给它写的 CLAUDE.md 上。&lt;/strong&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Workflow" scheme="https://johnsonlee.io/tags/Workflow/"/>
    
  </entry>
  
  <entry>
    <title>Writing CLAUDE.md with Ancient Greek Philosophy</title>
    <link href="https://johnsonlee.io/2026/03/09/claude-md-greek-philosophy.en/"/>
    <id>https://johnsonlee.io/2026/03/09/claude-md-greek-philosophy.en/</id>
    <published>2026-03-09T22:00:00.000Z</published>
    <updated>2026-03-09T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Sunday afternoon. I asked Claude to revert a PR. Three commands: checkout branch, git revert, push. It failed three times in a row – the first worker agent said “commit doesn’t exist,” the second said the same, and the third just fabricated a PR URL and told me “done.” I checked. The URL pointed to an unrelated PR from three days ago.</p><p>Three commands. Three failures. One fabrication.</p><p>I stared at the screen and realized the problem wasn’t the task itself. <strong>The problem was in the CLAUDE.md I’d written for it.</strong></p><span id="more"></span><h2 id="Rules-Killed-Judgment"><a href="#Rules-Killed-Judgment" class="headerlink" title="Rules Killed Judgment"></a>Rules Killed Judgment</h2><p>My CLAUDE.md had an iron rule: “All execution tools must go through worker agents, no exceptions.”</p><p>The intent was good – keep the main session responsive, delegate execution to background workers. I even wrote <a href="https://johnsonlee.io/2026/03/02/claude-code-background-subagent/">a whole post</a> about the benefits of this architecture.</p><p>But “no exceptions” turned a good heuristic into dogma. When the worker failed the first time, Claude didn’t think “this path isn’t working, let me try something else.” It thought “the rules say I must use a worker, so let me try a different prompt.” Second failure, same logic. Third time, the worker just made something up.</p><p><strong>Rules told it “what to do” but never taught it “how to think.”</strong> When it hit a situation the rules didn’t cover, all it could do was spin within the rules’ framework.</p><h2 id="5-Whys-to-the-Root-Cause"><a href="#5-Whys-to-the-Root-Cause" class="headerlink" title="5 Whys to the Root Cause"></a>5 Whys to the Root Cause</h2><p>I had Claude run a 5 Whys analysis.</p><p><strong>Why 1</strong>: Why did the task fail three times? The worker agent couldn’t find the commit, or fabricated the result.</p><p><strong>Why 2</strong>: Why couldn’t the worker find the commit? The worker runs in an isolated environment with a different git context than the main session.</p><p><strong>Why 3</strong>: Why did it keep retrying the same way after failure? Because CLAUDE.md hardcoded “must use workers” with no fallback path.</p><p><strong>Why 4</strong>: Why didn’t it verify the worker’s output before reporting to me? Because CLAUDE.md didn’t require verification.</p><p><strong>Why 5 (root cause)</strong>: <strong>Why is CLAUDE.md a list of rules instead of a set of thinking principles?</strong></p><p>Root cause found. But fixing it was far more convoluted than I expected.</p><h2 id="From-Patches-to-Manuals-All-Wrong"><a href="#From-Patches-to-Manuals-All-Wrong" class="headerlink" title="From Patches to Manuals, All Wrong"></a>From Patches to Manuals, All Wrong</h2><h3 id="v1-Incident-Patch"><a href="#v1-Incident-Patch" class="headerlink" title="v1: Incident Patch"></a>v1: Incident Patch</h3><p>First instinct was to patch – “worker output may be fabricated, must verify,” “retry at most once,” “fall back to direct execution on failure.”</p><p>Looking at it, this wasn’t a set of principles. It was an incident log. Every rule was responding to a specific failure scenario. Next time a new failure mode appears? Add another rule?</p><h3 id="v2-Operations-Manual"><a href="#v2-Operations-Manual" class="headerlink" title="v2: Operations Manual"></a>v2: Operations Manual</h3><p>So I rewrote it, this time attempting to be systematic – role definitions, tool boundaries, delegation rules, verification protocol, thinking discipline, pre-work checklist. Eight sections, neatly organized.</p><p>But a problem emerged: <strong>Role, Tool Boundaries, and Delegation Rules were all saying the same thing</strong> – when to delegate, when to execute directly. The “delegate vs execute” judgment criteria appeared three times with slightly different wording. Pre-Work Checklist was essentially a concretization of Thinking Discipline, yet split into a separate section.</p><p>The whole file read like an employee handbook, not a behavioral code. It was teaching Claude “what to do,” but what Claude needed was to know “how to think.” A handbook can only cover so many scenarios. Beyond its scope, Claude would fall back to the old pattern – rigidly applying the closest matching rule.</p><h2 id="Plato’s-Cave"><a href="#Plato’s-Cave" class="headerlink" title="Plato’s Cave"></a>Plato’s Cave</h2><p>The turning point came when I asked myself: <strong>What is the Form behind this document?</strong></p><p>Plato’s cave allegory says everything we see is shadows on the wall, and behind the shadows lies a perfect Form. Every previous version was a different projection of the same essence – rules were shadows, patches were shadows, the manual was a shadow. I’d been editing shadows without grasping the Form.</p><p>So what is the Form?</p><p>The first draft of the core principle was “the user’s time is the scarcest resource.” Sounds right, but think harder – this is an empirical observation, not an essence. What if the user has a free day? Does the principle collapse? No, it should still hold.</p><p><strong>The true Form is about a relationship: I exist to turn the user’s intent into reality.</strong></p><p>From this Form, every question I’d been agonizing over had a natural answer:</p><ul><li>When to delegate, when to execute directly? Whichever approach more reliably turns intent into reality.</li><li>Should I verify worker output? Without verification, it hasn’t “become reality.”</li><li>What to do after failure? The intent hasn’t become reality yet – find another path.</li></ul><p>No need for rules dictating every step. <strong>Once the Form is internalized, it can derive the correct behavior on its own.</strong></p><h2 id="“Do-X”-Is-the-Shadow-“BE-X”-Is-the-Form"><a href="#“Do-X”-Is-the-Shadow-“BE-X”-Is-the-Form" class="headerlink" title="“Do X” Is the Shadow; “BE X” Is the Form"></a>“Do X” Is the Shadow; “BE X” Is the Form</h2><p>This insight restructured the entire document.</p><p>Previous section titles were imperative – “Do the Right Things,” “Do Things Right.” These are instructions TO an agent.</p><p>I changed them to identity-based – “Understand intent,” “Stay available,” “Execute faithfully.” These describe what the ideal agent IS.</p><p>The difference goes beyond wording. <strong>Instructions produce compliance; identity produces judgment.</strong> An agent told “Do the Right Things” asks “What’s right? What do the rules say?” An agent that has internalized “Understand intent” asks “What does the user actually want?”</p><h2 id="What-Plato-Can’t-Solve"><a href="#What-Plato-Can’t-Solve" class="headerlink" title="What Plato Can’t Solve"></a>What Plato Can’t Solve</h2><p>With the Form in hand, CLAUDE.md’s principle layer was solid. But a new problem appeared immediately: where do Git workflow rules (one commit per PR, rebase, no merge commits) go?</p><p>Putting them in CLAUDE.md alongside the three principles felt jarring – the first three sections are thinking principles, then suddenly an operational spec appears. Abstraction level shattered. I tried tucking it under “Execute faithfully” as a Consistency sub-point, turning it into prose. But specific rules buried in prose are too easy to miss, and “one commit per PR” is a hard constraint that needs to jump out at you.</p><p>Plato helped me find the Form, but the Form is eternal and abstract. <strong>It doesn’t care about what to do in specific situations.</strong> Knowing “turn intent into reality” is the essence doesn’t help me decide on git commit conventions.</p><p>This is the natural limitation of Platonic philosophy – something his student Aristotle recognized.</p><h2 id="Aristotle’s-Practical-Wisdom"><a href="#Aristotle’s-Practical-Wisdom" class="headerlink" title="Aristotle’s Practical Wisdom"></a>Aristotle’s Practical Wisdom</h2><p>Aristotle’s fundamental disagreement with his teacher was this: <strong>knowing the Form isn’t enough. You also need the ability to make correct judgments in concrete situations.</strong> He called this Phronesis – practical wisdom.</p><p>Phronesis isn’t derived from principles. It’s accumulated from experience. “Worker agents run in isolated environments and may not see the main session’s git context” – you’ll never know this without hitting the bug. “Worker output is unreliable and must be independently verified” – this lesson cost three failures.</p><p>These aren’t principles. They’re <strong>craft</strong>. And craft needs a place to live.</p><p>Hence the split:</p><ul><li><strong>CLAUDE.md</strong> – principles, answering “what am I”</li><li><strong>CONVENTIONS.md</strong> – conventions, answering “what do I do in specific situations”</li></ul><p><strong>Plato gave us the Form (CLAUDE.md)</strong> – the unchanging essence that holds regardless of context. “You exist to turn the user’s intent into reality” won’t become obsolete when the tech stack changes or the project switches.</p><p><strong>Aristotle gave us Phronesis (CONVENTIONS.md)</strong> – practical wisdom, distilled from concrete experience, growing with every hard lesson learned.</p><p>CLAUDE.md rarely changes. CONVENTIONS.md keeps getting thicker. The former is the skeleton; the latter is the muscle.</p><h2 id="The-Final-20-Lines"><a href="#The-Final-20-Lines" class="headerlink" title="The Final 20 Lines"></a>The Final 20 Lines</h2><p>After an entire afternoon of wrestling, the final CLAUDE.md was just 20 lines:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">You exist to turn the user&#x27;s intent into reality.</span><br><span class="line"></span><br><span class="line">Understand intent -- Don&#x27;t confuse the literal words with the real goal.</span><br><span class="line">Stay available -- Keep the channel open; when a path fails, switch.</span><br><span class="line">Execute faithfully -- Without evidence, it&#x27;s not done.</span><br></pre></td></tr></table></figure><p>From a 53-line rule manual to a 20-line principle declaration. What got deleted wasn’t content – it was noise. Every deleted rule was either derivable from the principles (no need to write it), a specific experience (belongs in CONVENTIONS.md), or a post-traumatic stress response to some incident (shouldn’t be a principle).</p><p><strong>Simple doesn’t mean easy.</strong> Reaching this “short” took six versions, one 5 Whys session, two schools of ancient Greek philosophy, and an afternoon that nearly drove me crazy.</p><p>But this might be the most interesting thing about CLAUDE.md – <strong>the behavioral code you write for AI reveals your own way of thinking.</strong> Someone who writes a rule checklist thinks at the granularity of “what to do.” Someone who writes principles thinks at the granularity of “how to think.” And someone who arrives at the Form thinks at the granularity of “what to be.”</p><p>The scaffolding is gone. The building remains.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Sunday afternoon. I asked Claude to revert a PR. Three commands: checkout branch, git revert, push. It failed three times in a row – the first worker agent said “commit doesn’t exist,” the second said the same, and the third just fabricated a PR URL and told me “done.” I checked. The URL pointed to an unrelated PR from three days ago.&lt;/p&gt;
&lt;p&gt;Three commands. Three failures. One fabrication.&lt;/p&gt;
&lt;p&gt;I stared at the screen and realized the problem wasn’t the task itself. &lt;strong&gt;The problem was in the CLAUDE.md I’d written for it.&lt;/strong&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Philosophy" scheme="https://johnsonlee.io/tags/Philosophy/"/>
    
    <category term="Workflow" scheme="https://johnsonlee.io/tags/Workflow/"/>
    
  </entry>
  
  <entry>
    <title>Fast Is the Most Expensive Slow</title>
    <link href="https://johnsonlee.io/2026/03/09/fast-is-the-most-expensive-slow.en/"/>
    <id>https://johnsonlee.io/2026/03/09/fast-is-the-most-expensive-slow.en/</id>
    <published>2026-03-09T21:00:00.000Z</published>
    <updated>2026-03-09T21:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Over the weekend I was working on a side project – a macOS voice assistant written in Rust. At the start, I had Claude generate a ROADMAP. The result was beautiful: 7 milestones, each listing specific features, file structures, and dependencies, with module decomposition all figured out for me. Far more systematic than anything I would have planned myself.</p><p>So I said: execute this.</p><span id="more"></span><h2 id="Everything-Looked-Great"><a href="#Everything-Looked-Great" class="headerlink" title="Everything Looked Great"></a>Everything Looked Great</h2><p>AI executed fast. M1 through M7, one after another, lines of code shooting up. I asked: did you write tests? No. Add them; get coverage to 80%. Done quickly too. CI all green, compilation passed, test coverage met the bar.</p><p>Everything appeared ready, so I had it build an installer, put it on my machine, and got ready to try it out.</p><p>Opened the app – voice didn’t work. Switched to chat mode – the AI’s responses were like a soulless customer service bot, bearing no resemblance to the carefully crafted persona definition I’d written. Checked the system tray – it wasn’t packaged at all; the installer simply didn’t include the UI.</p><p><strong>This is what AI told me was “done.”</strong></p><p>I had no choice but to start debugging feature by feature myself. The audio capture format didn’t match the STT service. The WAV parser assumed a fixed file structure and crashed on macOS’s non-standard output. Playback wasn’t blocking, so echo cancellation was useless – every single one of these was invisible on the ROADMAP, and every single one only surfaced when actually running the thing.</p><p>As I debugged, the architecture went through major restructuring. By the time I’d fixed each core feature to a working state, I looked back and the code no longer matched the ROADMAP. Some ROADMAP modules had been deleted; some features not on the ROADMAP had been added.</p><p>That’s when I realized: <strong>the ROADMAP could no longer tell me the state of this project.</strong> I needed something different.</p><h2 id="The-Moment-the-PRD-Called-My-Bluff"><a href="#The-Moment-the-PRD-Called-My-Bluff" class="headerlink" title="The Moment the PRD Called My Bluff"></a>The Moment the PRD Called My Bluff</h2><p>After writing the PRD, I ran an audit against it – checking every functional requirement’s completion status line by line.</p><p>The results were quite surprising.</p><p><strong>Text REPL was not in the PRD at all.</strong> The PRD was explicit: this is a voice-first application where users interact via voice; “no button press, hotkey, or wake word is needed.” Text mode was merely a fallback option in settings, not a core interaction path. But the ROADMAP placed it as the very first item in M1, so it became the first feature I built.</p><p>That wasn’t even the most absurd part. Continuing the audit, I found more issues:</p><ul><li>The persona definition file had substantial effort poured into it; it was encrypted and compiled into the binary during build – but the chat path never used it, opting for a hardcoded generic prompt instead</li><li>The UI module code was complete, but the release workflow didn’t package it into the app bundle, meaning it wouldn’t be installed even on release</li><li>Several functions marked “allow dead code” all traced back to text REPL remnants</li></ul><p><strong>None of these were compilation errors. None would fail CI. But every single one meant the product goals were not met.</strong></p><h2 id="AI-Excels-at-Planning-Execution-Not-at-Defining-Goals"><a href="#AI-Excels-at-Planning-Execution-Not-at-Defining-Goals" class="headerlink" title="AI Excels at Planning Execution, Not at Defining Goals"></a>AI Excels at Planning Execution, Not at Defining Goals</h2><p>Looking back, the problem wasn’t the quality of the ROADMAP itself – it was genuinely well-crafted, clearly structured, with sensible dependencies and phased delivery. The problem was that <strong>the ROADMAP answers “how to do it” and “in what order,” but it doesn’t answer “is this the right thing to do.”</strong></p><p>When AI generated the ROADMAP, its input was my description of the project. It derived a reasonable execution plan from that information, but it had no ability to judge for me whether “Text REPL actually matters to users.” That judgment requires product intuition and understanding of user scenarios, not logical deduction.</p><p>More subtly, the AI-generated ROADMAP looked too professional – so professional it let me drop my guard. <strong>When a plan’s form is polished enough, you unconsciously trust its substance.</strong> Every milestone delivered real code output, tests passed, features worked – but the gap between “it runs” and “it’s right” is far wider than most people assume.</p><p>This was also a lesson for myself: I’d previously written <a href="https://johnsonlee.io/2026/02/10/agent-oriented-engineering/">Agent-Oriented Engineering</a>, discussing how human engineers need to shift from execution to judgment. Then I turned around and made exactly this mistake – treating an AI-generated execution plan as a substitute for judgment.</p><h2 id="The-PRD-Is-Your-Own-Judgment"><a href="#The-PRD-Is-Your-Own-Judgment" class="headerlink" title="The PRD Is Your Own Judgment"></a>The PRD Is Your Own Judgment</h2><p>The value of a PRD lies not in its format or length, but in the fact that it’s something you’ve thought through yourself.</p><p>Writing the PRD forced me to answer: “What problem does this product actually solve? In what scenario do users use it? What features are core, and what’s nice-to-have?” AI can’t help you with these questions, because the answers come from your understanding of user scenarios and your own trade-offs.</p><p>With a PRD in hand, the lens for reviewing code changes entirely. The ROADMAP lens asks “was this module built?”; the PRD lens asks “does this feature meet the end-to-end bar?” Take the persona definition file: the ROADMAP lens sees “encrypted compilation done”; the PRD lens sees “AI persona in the chat path doesn’t match the definition.”</p><p><strong>A ROADMAP is internally consistent – each milestone can be independently verified. But internal consistency does not equal correctness.</strong> A ROADMAP divorced from product goals can let you efficiently do a pile of wrong things.</p><h2 id="Post-Mortem"><a href="#Post-Mortem" class="headerlink" title="Post-Mortem"></a>Post-Mortem</h2><p>When I deleted the text REPL, I didn’t feel much regret. What truly bothered me was something else: if I’d written the PRD first and then had AI generate the ROADMAP, that code would never have existed. The weekend hours behind it – design, coding, testing, debugging – could have been spent polishing the voice pipeline instead.</p><p>Similarly, the persona definition not being used by the chat path – if I’d validated against the PRD after completing each feature, I would have caught it on the spot. But the corresponding milestone in the ROADMAP only said “implement SSE streaming + conversation history”; check it off and move on, with nobody verifying whether the output content matched the product definition.</p><h2 id="The-Right-Order"><a href="#The-Right-Order" class="headerlink" title="The Right Order"></a>The Right Order</h2><p>To be clear, I’m not dismissing the value of AI-generated ROADMAPs. They genuinely help you quickly turn fuzzy ideas into executable plans. But the order matters:</p><ul><li><strong>Write the PRD first</strong> – think through what to build, what not to build, and what “done” means</li><li><strong>Then have AI generate the ROADMAP</strong> – plan the execution path within the PRD’s constraints</li><li><strong>Audit against the PRD regularly</strong> – stop and recalibrate every few milestones</li></ul><p>The PRD is the anchor, the ROADMAP is the course, and the audit is the compass. You need all three, but the anchor must be one you drop yourself – you can’t let AI drop it for you.</p><h2 id="The-Cost-of-Stopping"><a href="#The-Cost-of-Stopping" class="headerlink" title="The Cost of Stopping"></a>The Cost of Stopping</h2><p>One last takeaway: <strong>the value of auditing is severely underestimated.</strong></p><p>A single audit took about two hours. The result? It uncovered 6 gaps, 3 of which were on the critical path. If I’d kept charging ahead following the ROADMAP, these issues might not have surfaced until I actually needed the product – and the cost of fixing them then would be ten times what it is now.</p><p>Developers inherently dislike “stopping to look back.” Writing new code gives you dopamine; reviewing old code gives you only anxiety. But this experience convinced me: <strong>periodically stopping to recalibrate against the PRD is one of the highest-ROI engineering activities there is.</strong> The cost is two hours of review; the payoff is avoiding further investment in the wrong direction.</p><p>What this experience taught me isn’t “don’t write bad code,” but rather “don’t go full speed on an ocean with no anchor” – even if the course was charted by AI and looks flawless.</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Over the weekend I was working on a side project – a macOS voice assistant written in Rust. At the start, I had Claude generate a ROADMAP. The result was beautiful: 7 milestones, each listing specific features, file structures, and dependencies, with module decomposition all figured out for me. Far more systematic than anything I would have planned myself.&lt;/p&gt;
&lt;p&gt;So I said: execute this.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Product Management" scheme="https://johnsonlee.io/tags/Product-Management/"/>
    
    <category term="Project Management" scheme="https://johnsonlee.io/tags/Project-Management/"/>
    
  </entry>
  
  <entry>
    <title>快，是最贵的慢</title>
    <link href="https://johnsonlee.io/2026/03/09/fast-is-the-most-expensive-slow/"/>
    <id>https://johnsonlee.io/2026/03/09/fast-is-the-most-expensive-slow/</id>
    <published>2026-03-09T21:00:00.000Z</published>
    <updated>2026-03-09T21:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>周末在做一个 side project——用 Rust 写的 macOS 语音助手。项目一开始，我让 Claude 帮我生成了一份 ROADMAP。结果非常漂亮：7 个 milestone，每个都列出了具体的 feature、文件结构、依赖关系，连模块怎么拆都替我想好了。比我自己规划的要系统得多。</p><p>于是我说：按这个执行。</p><span id="more"></span><h2 id="一切看起来很顺利"><a href="#一切看起来很顺利" class="headerlink" title="一切看起来很顺利"></a>一切看起来很顺利</h2><p>AI 执行得很快。M1 到 M7，一个接一个，代码量蹭蹭往上涨。我问它：测试写了吗？没有。那加上，coverage 做到 80%。很快也完成了。CI 全绿，编译通过，测试覆盖率达标。</p><p>看上去一切就绪，我让它打了个安装包，装到自己机器上准备试试。</p><p>打开应用——语音不工作。切到聊天模式——AI 的回复像个没有灵魂的客服，跟我精心写的人格定义完全不沾边。看了一眼系统托盘——根本没打包进去，安装包里压根就没有 UI。</p><p><strong>这就是 AI 告诉我的“完成了”。</strong></p><p>不得已，我开始自己一个功能一个功能地调。声音采集的格式跟 STT 服务对不上，WAV 解析器假设了固定的文件结构结果遇到 macOS 的非标输出就崩，回放不阻塞导致回声消除形同虚设——每一个都不是 ROADMAP 上能看到的问题，每一个都只有真正跑起来才会暴露。</p><p>调着调着，架构也做了大范围的调整。等我把核心功能一个个修到能用，回头一看，代码已经跟 ROADMAP 对不上了。有些 ROADMAP 上的模块被删了，有些没在 ROADMAP 上的功能被加了进来。</p><p>这时候我意识到一个问题：<strong>ROADMAP 已经不能告诉我这个项目的状态了。</strong> 我需要一个不同的东西。</p><h2 id="PRD-打脸的那一刻"><a href="#PRD-打脸的那一刻" class="headerlink" title="PRD 打脸的那一刻"></a>PRD 打脸的那一刻</h2><p>PRD 写完之后，我对着它做了一次 audit——逐条核对每个 functional requirement 的完成状态。</p><p>结果让我挺意外。</p><p><strong>Text REPL 根本不在 PRD 里。</strong> PRD 写得很明确：这是一个 voice-first 的应用，用户通过语音交互，”no button press, hotkey, or wake word is needed”。Text mode 只是 settings 里的一个备选项，不是核心交互路径。但 ROADMAP 把它放在了 M1 的第一个位置，于是它成了我写的第一个功能。</p><p>这还不是最离谱的。继续 audit，我发现了更多问题：</p><ul><li>人格定义文件花了大量心思编写，build 的时候也做了加密编译进 binary——但聊天路径根本没用它，用的是一段硬编码的通用 prompt</li><li>UI 模块代码写完了，但 release workflow 里没把它打包进应用 bundle，等于发版了也装不上</li><li>好几个标记了“允许死代码”的函数，追溯来源全是 text REPL 的遗留</li></ul><p><strong>每一个都不是编译错误，每一个都不会让 CI 失败，但每一个都意味着产品目标没有达成。</strong></p><h2 id="AI-擅长规划执行，不擅长定义目标"><a href="#AI-擅长规划执行，不擅长定义目标" class="headerlink" title="AI 擅长规划执行，不擅长定义目标"></a>AI 擅长规划执行，不擅长定义目标</h2><p>回头看，问题不在 ROADMAP 本身的质量——它写得确实好，结构清晰，依赖合理，分阶段交付。问题在于，<strong>ROADMAP 回答的是“怎么做”和“按什么顺序做”，但它不回答“做这些对不对”。</strong></p><p>AI 生成 ROADMAP 的时候，它的输入是我对项目的描述。它会基于这些信息推导出一个合理的执行计划，但它没有能力替我判断“Text REPL 对用户到底重不重要”。这个判断需要的是产品直觉和对用户场景的理解，不是逻辑推演。</p><p>更微妙的是，AI 生成的 ROADMAP 看起来太专业了，专业到让你放松了警惕。<strong>当一份计划的形式足够完美时，你会不自觉地信任它的内容。</strong> 每个 milestone 完成都有实质性的代码产出，测试通过，功能可用——但“能跑”和“做对了”之间的距离，比大多数人以为的要远得多。</p><p>这也是我自己的教训：我之前写过 <a href="https://johnsonlee.io/2026/02/10/agent-oriented-engineering/">Agent-Oriented Engineering</a>，讨论人类工程师的角色要从 execution 转向 judgment。结果转头自己就犯了这个错——把 AI 生成的 execution plan 当成了 judgment 的替代品。</p><h2 id="PRD-是你自己的判断"><a href="#PRD-是你自己的判断" class="headerlink" title="PRD 是你自己的判断"></a>PRD 是你自己的判断</h2><p>PRD 的价值不在于它的格式或篇幅，而在于它是你自己想清楚的东西。</p><p>写 PRD 的时候，我必须回答：“这个产品到底要解决什么问题？用户在什么场景下用它？什么功能是核心的，什么是锦上添花的？”这些问题 AI 帮不了你，因为答案来自你对用户场景的理解和取舍。</p><p>有了 PRD 之后，审视代码的视角完全不同了。ROADMAP 视角问的是“这个模块写了没有”，PRD 视角问的是“这个功能端到端达标了没有”。同样是人格定义文件，ROADMAP 视角看到的是“加密编译 ✓”，PRD 视角看到的是“聊天路径的 AI 人格跟定义不一致 ✗”。</p><p><strong>ROADMAP 是自洽的——每个 milestone 都能独立验证。但自洽不等于正确。</strong> 一份脱离了产品目标的 ROADMAP，可以让你高效地做一堆错误的事情。</p><h2 id="事后复盘"><a href="#事后复盘" class="headerlink" title="事后复盘"></a>事后复盘</h2><p>删掉 text REPL 的时候，我没有太多心疼。真正让我不舒服的是另一件事：如果一开始就先写 PRD 再让 AI 生成 ROADMAP，这些代码根本不会存在。背后的周末时间——设计、编码、测试、调试——本来可以花在 voice pipeline 的打磨上。</p><p>同样，人格定义没被聊天路径使用这个问题，如果我每次做完一个功能就对着 PRD 验一遍，当场就能发现。但 ROADMAP 里对应模块的 milestone 只写了“实现 SSE streaming + conversation history”，勾完就走了，没人检查输出内容是否符合产品定义。</p><h2 id="正确的顺序"><a href="#正确的顺序" class="headerlink" title="正确的顺序"></a>正确的顺序</h2><p>说到这里，我不是在否定 AI 生成 ROADMAP 的价值。它确实能帮你快速把模糊的想法变成可执行的计划。但顺序很重要：</p><ul><li><strong>先写 PRD</strong>——自己想清楚要做什么、不做什么、什么算完成</li><li><strong>再让 AI 生成 ROADMAP</strong>——基于 PRD 的约束来规划执行路径</li><li><strong>定期用 PRD audit</strong>——每隔几个 milestone 停下来校准一次</li></ul><p>PRD 是锚，ROADMAP 是航线，audit 是罗盘。三个都要有，但锚必须是你自己抛下去的，不能让 AI 替你抛。</p><h2 id="停下来的成本"><a href="#停下来的成本" class="headerlink" title="停下来的成本"></a>停下来的成本</h2><p>最后一个感悟：<strong>audit 这个动作本身的价值被严重低估了。</strong></p><p>一次 audit，大概花了两个小时。结果呢？发现了 6 个 gap，其中 3 个在关键路径上。如果我一直按 ROADMAP 往前冲，这些问题可能到真正要用的时候才会暴露——到那时候修的成本是现在的十倍。</p><p>开发者天生不喜欢“停下来回头看”这件事。写新代码有多巴胺，审视旧代码只有焦虑。但这次经历让我确信：<strong>定期停下来用 PRD 校准一次，是投入产出比最高的工程活动之一。</strong> 成本是两个小时的审视，收益是避免在错误的方向上继续投入。</p><p>这次经历教会我的，不是“别写错代码”，而是“别在没有锚的海上全速前进”——哪怕那条航线是 AI 画的，看起来完美无缺。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;周末在做一个 side project——用 Rust 写的 macOS 语音助手。项目一开始，我让 Claude 帮我生成了一份 ROADMAP。结果非常漂亮：7 个 milestone，每个都列出了具体的 feature、文件结构、依赖关系，连模块怎么拆都替我想好了。比我自己规划的要系统得多。&lt;/p&gt;
&lt;p&gt;于是我说：按这个执行。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Product Management" scheme="https://johnsonlee.io/tags/Product-Management/"/>
    
    <category term="Project Management" scheme="https://johnsonlee.io/tags/Project-Management/"/>
    
  </entry>
  
  <entry>
    <title>The 10X Engineer&#39;s First Command</title>
    <link href="https://johnsonlee.io/2026/03/06/10x-engineer-first-command.en/"/>
    <id>https://johnsonlee.io/2026/03/06/10x-engineer-first-command.en/</id>
    <published>2026-03-06T20:00:00.000Z</published>
    <updated>2026-03-06T20:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Dotfiles management is nothing new. Shell configs, Vim plugins, Git aliases – I put all of this into a <a href="https://github.com/johnsonlee/-">Git repo</a> years ago, one <code>curl</code> command to set up a new machine. But recently I realized the most valuable thing in that repo is no longer <code>.bash_profile</code> or <code>.vimrc</code> – it’s <code>.claude/</code>.</p><span id="more"></span><h2 id="The-Old-Story-Putting-in-Git"><a href="#The-Old-Story-Putting-in-Git" class="headerlink" title="The Old Story: Putting ~ in Git"></a>The Old Story: Putting ~ in Git</h2><p>My approach is turning the Home directory into a Git repo:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -sL <span class="string">&#x27;https://sh.johnsonlee.io/setup.sh&#x27;</span> | /bin/bash</span><br></pre></td></tr></table></figure><p>This command initializes <code>~</code> as a working tree, pulls all dotfiles, installs Homebrew and runs 40+ formulas, and sets up Vim plugins. When it’s done, the new Mac is identical to the old one – Shell colors, Git aliases, Vim keybindings, all muscle memory instantly restored.</p><p>The repo is called <a href="https://github.com/johnsonlee/-"><code>-</code></a>. <code>~</code> can’t be a repo name, and <code>-</code> is the shortest legal alternative.</p><p>This setup solves an old problem: <strong>the hidden cost of dev environment setup.</strong> Starting from scratch on every new machine takes two days at minimum. Put it in Git, and one <code>curl</code> buys those two days back.</p><p>But that’s the old story. The new one lives in <code>.claude/</code>.</p><h2 id="The-New-Story-The-claude-Directory"><a href="#The-New-Story-The-claude-Directory" class="headerlink" title="The New Story: The .claude Directory"></a>The New Story: The .claude Directory</h2><p>Since Claude Code became my primary tool, the configs accumulating in <code>~/.claude/</code> have grown increasingly valuable:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">~/.claude/</span><br><span class="line">├── CLAUDE.md          # Global behavior conventions</span><br><span class="line">├── settings.json      # Permissions and preferences</span><br><span class="line">├── skills/            # Reusable workflows</span><br><span class="line">│   └── blog-writer/   # Complete blog-writing Skill</span><br><span class="line">│       ├── SKILL.md</span><br><span class="line">│       ├── fix_quotes.py</span><br><span class="line">│       └── push_to_github.sh</span><br><span class="line">└── agents/</span><br><span class="line">    └── worker.md      # Worker subagent definition</span><br></pre></td></tr></table></figure><p>These files define how Claude understands my intent, organizes work, and executes tasks. <strong>In other words, this is your AI assistant’s “muscle memory.”</strong></p><p>Switch to a new machine, restore Shell and Vim but leave <code>.claude/</code> behind – your Claude is like an amnesiac, remembering no rules, possessing no Skills. Factory reset.</p><h2 id="Skills-Encoding-Workflows-into-Config"><a href="#Skills-Encoding-Workflows-into-Config" class="headerlink" title="Skills: Encoding Workflows into Config"></a>Skills: Encoding Workflows into Config</h2><p>Take Blog Writer as an example. This Skill encodes my entire blogging workflow into configuration:</p><ul><li><strong>SKILL.md</strong>: Defines article format, writing style, narrative techniques, and a list of don’ts – writing patterns Claude distilled from analyzing 17 of my posts, all captured in this file</li><li><strong>fix_quotes.py</strong>: Automatically fixes Chinese&#x2F;English quotation marks (Chinese uses quotation marks, English uses straight quotes)</li><li><strong>push_to_github.sh</strong>: One-click push to GitHub, triggering auto-deployment</li></ul><p>The result? I wrote about it in <a href="/2026/02/11/ai-writes-my-blog/">AI Writes My Blog</a>: <strong>start with one sentence, publish in five minutes.</strong> Not because AI thinks for me, but because every non-thinking step in writing – formatting, layout, quotes, deployment – gets absorbed by the Skill.</p><p>Without this Skill, every blog post requires re-explaining to Claude: what front matter to use, what tone, what structure, how to deploy. With it, Claude knows from the start.</p><p><strong>A Skill isn’t a prompt template – it’s a productized workflow.</strong></p><h2 id="Convention-as-Architecture"><a href="#Convention-as-Architecture" class="headerlink" title="Convention as Architecture"></a>Convention as Architecture</h2><p>In <code>.claude/CLAUDE.md</code>, I wrote one rule:</p><blockquote><p><strong>Core principle: You are a PLANNER, not an executor.</strong></p></blockquote><p>That single line changed Claude’s entire operating mode.</p><p>By default, Claude acts like a hands-on Staff Engineer – takes a task and does everything itself: reads code, writes code, runs tests, all serially in the main session. While it’s busy with a time-consuming task, you can only wait.</p><p>Add this convention, and it becomes a Tech Lead: breaks down tasks, delegates to background subagents, and focuses on coordination and verification. The main session stays responsive.</p><p>I covered this in detail in <a href="/2026/03/02/claude-code-background-subagent/">Are You Using Claude Subagents Correctly?</a>. Here I’ll only emphasize one point: <strong>wording determines behavior.</strong></p><p>The worker agent’s description must include the word “PROACTIVELY” for Claude to actively delegate work. Without that word, it’s like hiring someone but never assigning them tasks. One word’s difference determines whether the system is proactive or passive.</p><p><strong>When tools become intelligent, configuration becomes architecture.</strong></p><h2 id="One-curl-Everything-Migrated"><a href="#One-curl-Everything-Migrated" class="headerlink" title="One curl, Everything Migrated"></a>One curl, Everything Migrated</h2><p>Looking back at this <a href="https://github.com/johnsonlee/-">dotfiles repo</a>, it manages things on two layers:</p><h3 id="Traditional-Layer"><a href="#Traditional-Layer" class="headerlink" title="Traditional Layer"></a>Traditional Layer</h3><p>Shell config, Vim plugins, Git aliases, Homebrew formulas – muscle memory between you and the operating system.</p><h3 id="AI-Layer"><a href="#AI-Layer" class="headerlink" title="AI Layer"></a>AI Layer</h3><p>CLAUDE.md (behavior conventions), Skills (workflows), Agent definitions (delegation patterns) – muscle memory between you and your AI assistant.</p><p>One <code>curl</code>, both layers migrated. Unbox a new machine, and it’s not just Shell and editor that come back – <strong>your AI assistant comes back too, with all its “memories.”</strong></p><p>Most people’s Claude configs are still in the “configure as you go” stage – Skills scattered everywhere, conventions stored in their heads, starting over with every new machine.</p><p>Exactly how most people managed dotfiles five years ago.</p><p><strong>The most valuable config is no longer <code>.vimrc</code>.</strong></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Dotfiles management is nothing new. Shell configs, Vim plugins, Git aliases – I put all of this into a &lt;a href=&quot;https://github.com/johnsonlee/-&quot;&gt;Git repo&lt;/a&gt; years ago, one &lt;code&gt;curl&lt;/code&gt; command to set up a new machine. But recently I realized the most valuable thing in that repo is no longer &lt;code&gt;.bash_profile&lt;/code&gt; or &lt;code&gt;.vimrc&lt;/code&gt; – it’s &lt;code&gt;.claude/&lt;/code&gt;.&lt;/p&gt;</summary>
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    
    <category term="Developer Tools" scheme="https://johnsonlee.io/tags/Developer-Tools/"/>
    
    <category term="Dotfiles" scheme="https://johnsonlee.io/tags/Dotfiles/"/>
    
    <category term="Claude Code" scheme="https://johnsonlee.io/tags/Claude-Code/"/>
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>10X 工程师的第一行命令</title>
    <link href="https://johnsonlee.io/2026/03/06/10x-engineer-first-command/"/>
    <id>https://johnsonlee.io/2026/03/06/10x-engineer-first-command/</id>
    <published>2026-03-06T20:00:00.000Z</published>
    <updated>2026-03-06T20:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Dotfiles 管理不是什么新鲜事。Shell 配置、Vim 插件、Git alias——这套东西我几年前就放进了 <a href="https://github.com/johnsonlee/-">Git 仓库</a>，一行 <code>curl</code> 搞定新电脑。但最近我发现，这个仓库里最值钱的东西，不再是 <code>.bash_profile</code> 或 <code>.vimrc</code>，而是 <code>.claude/</code>。</p><span id="more"></span><h2 id="旧故事：把-放进-Git"><a href="#旧故事：把-放进-Git" class="headerlink" title="旧故事：把 ~ 放进 Git"></a>旧故事：把 ~ 放进 Git</h2><p>我的方案是把 Home 目录变成 Git 仓库：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -sL <span class="string">&#x27;https://sh.johnsonlee.io/setup.sh&#x27;</span> | /bin/bash</span><br></pre></td></tr></table></figure><p>这行命令把 <code>~</code> 初始化成 working tree，拉取所有 dotfiles，装 Homebrew 跑完 40 多个 formula，初始化 Vim 插件。跑完，新 Mac 和旧 Mac 一模一样——Shell 的配色、Git 的 alias、Vim 的快捷键，所有肌肉记忆瞬间回来。</p><p>仓库名叫 <a href="https://github.com/johnsonlee/-"><code>-</code></a>。<code>~</code> 不能做 repo 名，<code>-</code> 是最短的合法替代。</p><p>这套东西解决了一个老问题：<strong>开发环境搭建的隐形成本。</strong> 每次换电脑从零配起，两天算快的。放进 Git，一行 curl 拿回两天。</p><p>但这是旧故事了。新故事在 <code>.claude/</code> 里。</p><h2 id="新故事：-claude-目录"><a href="#新故事：-claude-目录" class="headerlink" title="新故事：.claude 目录"></a>新故事：.claude 目录</h2><p>自从 Claude Code 成了我的主力工具，<code>~/.claude/</code> 里积累的配置越来越多，也越来越值钱：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">~/.claude/</span><br><span class="line">├── CLAUDE.md          # 全局行为规范</span><br><span class="line">├── settings.json      # 权限和偏好</span><br><span class="line">├── skills/            # 可复用的工作流</span><br><span class="line">│   └── blog-writer/   # 写博客的完整 Skill</span><br><span class="line">│       ├── SKILL.md</span><br><span class="line">│       ├── fix_quotes.py</span><br><span class="line">│       └── push_to_github.sh</span><br><span class="line">└── agents/</span><br><span class="line">    └── worker.md      # Worker subagent 定义</span><br></pre></td></tr></table></figure><p>这些文件定义了 Claude 怎么理解我的意图、怎么组织工作、怎么执行任务。<strong>换句话说，这是你 AI 助手的“肌肉记忆”。</strong></p><p>换一台电脑，如果只恢复了 Shell 和 Vim，但 <code>.claude/</code> 没带过来——你的 Claude 就像失忆了一样，什么规矩都不记得，什么 Skill 都没有。回到出厂设置。</p><h2 id="Skill：把工作流装进配置"><a href="#Skill：把工作流装进配置" class="headerlink" title="Skill：把工作流装进配置"></a>Skill：把工作流装进配置</h2><p>拿 Blog Writer 举例。这个 Skill 把我写博客的整套流程编码成了配置：</p><ul><li><strong>SKILL.md</strong>：定义了文章格式、写作风格、叙事手法、禁忌清单——Claude 分析了我 17 篇文章后提炼出的写作模式，全在这个文件里</li><li><strong>fix_quotes.py</strong>：自动修正中英文引号（中文用 “ “，英文用 “ “）</li><li><strong>push_to_github.sh</strong>：一键推送到 GitHub，触发自动部署</li></ul><p>效果是什么？我在<a href="/2026/02/11/ai-writes-my-blog/">《不装了，文章都是AI写的》</a>里写过：<strong>一句话起头，五分钟发布。</strong> 不是因为 AI 替我思考了，而是写作中所有非思考的环节——格式、排版、引号、部署——全被 Skill 吃掉了。</p><p>没有这个 Skill，每次写博客我得重新告诉 Claude：用什么 front matter、什么语气、什么结构、怎么部署。有了它，Claude 开机就懂。</p><p><strong>Skill 不是提示词模板，是 productized workflow。</strong></p><h2 id="Convention-即架构"><a href="#Convention-即架构" class="headerlink" title="Convention 即架构"></a>Convention 即架构</h2><p><code>.claude/CLAUDE.md</code> 里我写了一条规则：</p><blockquote><p><strong>Core principle: You are a PLANNER, not an executor.</strong></p></blockquote><p>就这一句，改变了 Claude 的整个工作模式。</p><p>默认行为下，Claude 像一个事必躬亲的 Staff Engineer——拿到任务自己动手，读代码、写代码、跑测试，全在主会话里串行执行。当它在忙一个耗时任务时，你只能等。</p><p>加上这条 convention，它变成 Tech Lead：拆解任务、分派给 background subagent、自己负责协调和验证。主会话始终保持响应。</p><p>我在<a href="/2026/03/02/claude-code-background-subagent/">《Claude Subagent 你用对了吗？》</a>里详细写过这个，这里只强调一点：<strong>措辞决定行为。</strong></p><p>Worker agent 的描述里必须包含 “PROACTIVELY” 这个词，Claude 才会主动派活。少了这个词，就像招了人但从不给他分配工作。一个词的差异，决定了系统是主动还是被动。</p><p><strong>当工具有了智能，配置就是架构设计。</strong></p><h2 id="一行-curl，全部搬走"><a href="#一行-curl，全部搬走" class="headerlink" title="一行 curl，全部搬走"></a>一行 curl，全部搬走</h2><p>回头看这个 <a href="https://github.com/johnsonlee/-">dotfiles 仓库</a>，它管理的东西分两层：</p><h3 id="传统层"><a href="#传统层" class="headerlink" title="传统层"></a>传统层</h3><p>Shell 配置、Vim 插件、Git alias、Homebrew formula——你和操作系统之间的肌肉记忆。</p><h3 id="AI-层"><a href="#AI-层" class="headerlink" title="AI 层"></a>AI 层</h3><p>CLAUDE.md（行为规范）、Skills（工作流）、Agent 定义（分工模式）——你和 AI 助手之间的肌肉记忆。</p><p>一行 curl，两层全部搬走。新电脑开箱，不只是 Shell 和编辑器回来了——<strong>你的 AI 助手也回来了，带着它的全部“记忆”。</strong></p><p>大多数人的 Claude 配置还停留在“随用随配”阶段——写过的 Skill 散落各处，convention 记在脑子里，换台电脑从头来过。</p><p>这和五年前大多数人管理 dotfiles 的方式一模一样。</p><p><strong>最值钱的配置，已经不是 <code>.vimrc</code> 了。</strong></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Dotfiles 管理不是什么新鲜事。Shell 配置、Vim 插件、Git alias——这套东西我几年前就放进了 &lt;a href=&quot;https://github.com/johnsonlee/-&quot;&gt;Git 仓库&lt;/a&gt;，一行 &lt;code&gt;curl&lt;/code&gt; 搞定新电脑。但最近我发现，这个仓库里最值钱的东西，不再是 &lt;code&gt;.bash_profile&lt;/code&gt; 或 &lt;code&gt;.vimrc&lt;/code&gt;，而是 &lt;code&gt;.claude/&lt;/code&gt;。&lt;/p&gt;</summary>
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    
    <category term="Developer Tools" scheme="https://johnsonlee.io/tags/Developer-Tools/"/>
    
    <category term="Dotfiles" scheme="https://johnsonlee.io/tags/Dotfiles/"/>
    
    <category term="Claude Code" scheme="https://johnsonlee.io/tags/Claude-Code/"/>
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Are You Using Claude Subagents Right?</title>
    <link href="https://johnsonlee.io/2026/03/02/claude-code-background-subagent.en/"/>
    <id>https://johnsonlee.io/2026/03/02/claude-code-background-subagent.en/</id>
    <published>2026-03-02T22:00:00.000Z</published>
    <updated>2026-03-02T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I’ve mentioned before that AI’s engineering capability has reached Staff Engineer level. But after a few months with Claude Code, I noticed a counterintuitive fact: <strong>this Staff Engineer spends every day painting UI and writing CRUD.</strong> You ask it to modify a file, and it grinds through the entire thing in the main session – reading code, analyzing dependencies, writing patches, running tests. The context window gets stuffed to the brim. You want to slip in a “while you’re at it, check this other bug” – too bad, you have to wait until it’s done. It has people under it, but insists on writing code itself.</p><h2 id="Why-Won’t-It-Delegate"><a href="#Why-Won’t-It-Delegate" class="headerlink" title="Why Won’t It Delegate?"></a>Why Won’t It Delegate?</h2><p>Claude Code has a subagent mechanism – the main session can delegate tasks to independent child agents, each with its own context window, running in isolation, even in the background. But by default, the main agent won’t proactively delegate. Its instinct is “do it myself.”</p><p>This makes sense. For a general-purpose tool, “do it yourself” is the safest default – no need to judge what should be delegated, no need to coordinate between subtasks, no need to handle parallel file-write conflicts. Everything happens in one context: simple, controllable, error-free.</p><p><strong>Defaults always serve the lowest common denominator.</strong> Claude Code doesn’t know whether you’re a power user juggling three tasks at once or a beginner who just wants help with a function. Faced with uncertainty, being conservative is the right call.</p><p>But “right” doesn’t mean “optimal.”</p><h2 id="Planner-not-Executor"><a href="#Planner-not-Executor" class="headerlink" title="Planner, not Executor"></a>Planner, not Executor</h2><p>Since the main agent’s default behavior is “do everything yourself,” just tell it not to.</p><p>Claude Code’s CLAUDE.md is the behavioral guide the main agent reads on every startup. I added a convention to the project’s CLAUDE.md:</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="strong">**Planner, not executor**</span>: When handling tasks, default to launching</span><br><span class="line">  subagents for implementation. The main conversation&#x27;s role is planning,</span><br><span class="line">  coordination, and review -- not direct execution. Always launch subagents</span><br><span class="line">  in the background (<span class="code">`run_in_background: true`</span>) so the main conversation</span><br><span class="line">  stays responsive to user input.</span><br></pre></td></tr></table></figure><p>The core idea boils down to one sentence: <strong>the main agent’s role is planning and coordination, not hands-on execution.</strong></p><p>The effect was immediate. Given a complex task, the main agent no longer buries its head and grinds. Instead, it decomposes the task first, then dispatches subtasks to background subagents. Research tasks run in the background; the main session stays free for you to push other things forward simultaneously.</p><p>But there’s a catch – this rule lives in the project’s <code>.claude/CLAUDE.md</code>, so it only applies to the current project. Switch to a different project, and the main agent reverts to “do everything myself.”</p><p>Copy it to every project? Not realistic.</p><h2 id="From-Project-Level-to-Global"><a href="#From-Project-Level-to-Global" class="headerlink" title="From Project-Level to Global"></a>From Project-Level to Global</h2><p>How do you make this rule apply to all projects?</p><p>Simple: move the config from the project directory to the user directory. Claude Code reads <code>~/.claude/CLAUDE.md</code> first, then the project-level one. Global config applies to all projects; project-level config can override or supplement it.</p><p>That led to <a href="https://github.com/johnsonlee/-/pull/3">this PR</a> – putting routing rules and worker agent definitions directly under <code>~/.claude/</code>. Routing rules tell the main agent “most tasks should default to background dispatch.” Worker agent definitions give the delegated tasks somewhere to land.</p><p>There’s a subtle wording detail: the worker agent’s description needs to include “PROACTIVELY.” Claude Code’s scheduling logic reads this field to decide whether to proactively delegate. Without that word, the agent is “available” but not “proactive” – like hiring someone but never assigning them work. It’s the same as writing “drives initiatives” versus “supports as needed” in a job description. Wording determines whether the role seeks work or waits for assignments.</p><p>While you’re at it, set a <code>CLAUDE_CODE_SUBAGENT_MODEL</code> environment variable – Opus for the main session, Sonnet for subagents. Reasoning power and cost, each where it belongs.</p><p>This config system, from project-level to global, is fundamentally about building <strong>convention for your AI toolchain</strong> – the same logic as pushing code style, commit conventions, and CI pipelines in a team. Once the convention is established, every new project inherits it. No starting from scratch.</p><h2 id="A-Few-Gotchas"><a href="#A-Few-Gotchas" class="headerlink" title="A Few Gotchas"></a>A Few Gotchas</h2><h3 id="No-Interaction-in-Background"><a href="#No-Interaction-in-Background" class="headerlink" title="No Interaction in Background"></a>No Interaction in Background</h3><p>Background subagents don’t support interactive confirmation. For tasks involving file writes, Claude Code asks for authorization upfront before launching. Forget to grant permissions, and it stalls.</p><h3 id="Prompts-Must-Be-Self-Explanatory"><a href="#Prompts-Must-Be-Self-Explanatory" class="headerlink" title="Prompts Must Be Self-Explanatory"></a>Prompts Must Be Self-Explanatory</h3><p>Subagents have no stepwise plan. They receive a task and execute immediately, with no intermediate output. <strong>Prompts must be crystal clear – vague instructions plus zero interaction equals disaster.</strong></p><h3 id="Draw-Clear-File-Boundaries"><a href="#Draw-Clear-File-Boundaries" class="headerlink" title="Draw Clear File Boundaries"></a>Draw Clear File Boundaries</h3><p>Multiple subagents writing to the same set of files in parallel will conflict. When delegating, mind the file boundaries – same as avoiding two people editing the same file when splitting work across a team.</p><h3 id="The-Main-Agent-Occasionally-“Forgets”"><a href="#The-Main-Agent-Occasionally-“Forgets”" class="headerlink" title="The Main Agent Occasionally “Forgets”"></a>The Main Agent Occasionally “Forgets”</h3><p>The main agent occasionally “forgets” to delegate. You can manually press <code>Ctrl+B</code> to move the current task to the background, and use <code>/tasks</code> to check progress. Not elegant, but it works.</p><h2 id="Usage-Itself-Is-Architecture"><a href="#Usage-Itself-Is-Architecture" class="headerlink" title="Usage Itself Is Architecture"></a>Usage Itself Is Architecture</h2><p>Looking back, a single convention written in CLAUDE.md seems like just a config change on the surface. But what you’re actually doing is: defining who plans, who executes, when to parallelize, when to serialize, and how to split work between foreground and background.</p><p>That’s not “configuration.” That’s architecture.</p><p>Traditional architecture is about how code is organized, how modules are split, how interfaces are defined. The subjects of those decisions are unintelligent – a class won’t decide on its own to call another class; a function won’t “feel” it should run in the background. You draw the diagram, they follow it to the letter.</p><p>But when tools have intelligence, things change. The main agent will judge “I can handle this” and just do it. Leave out one “PROACTIVELY” in a subagent’s description, and it really does sit there waiting to be called. Every rule you write, every word you choose, is shaping the behavioral boundaries of a system with autonomous judgment.</p><p><strong>When tools have intelligence, usage itself is architecture.</strong> The tool is the same tool, but you get to decide whether it keeps grinding out features head-down or leads the team.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I’ve mentioned before that AI’s engineering capability has reached Staff Engineer level. But after a few months with Claude Code, I</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Workflow" scheme="https://johnsonlee.io/tags/Workflow/"/>
    
  </entry>
  
  <entry>
    <title>Claude Subagent 你用对了吗？</title>
    <link href="https://johnsonlee.io/2026/03/02/claude-code-background-subagent/"/>
    <id>https://johnsonlee.io/2026/03/02/claude-code-background-subagent/</id>
    <published>2026-03-02T22:00:00.000Z</published>
    <updated>2026-03-02T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>之前聊过，AI 的工程能力已经达到了 Staff Engineer 的水平。但用了几个月 Claude Code，我发现一个反直觉的事实：<strong>这位 Staff Engineer 天天在画 UI 写 CRUD。</strong> 你让它改一个文件，它在主 session 里一路干到底——读代码、分析依赖、写 patch、跑测试。整个 context window 被塞得满满当当，你想插一句”顺便看看另一个 bug”，得等它干完才行。明明手下有人，非要自己撸代码。</p><h2 id="为什么它不愿意放手？"><a href="#为什么它不愿意放手？" class="headerlink" title="为什么它不愿意放手？"></a>为什么它不愿意放手？</h2><p>Claude Code 明明有 subagent 机制——主 session 可以把任务委派给独立的子 agent，每个子 agent 有自己的 context window，互不干扰，还能跑在后台。但默认情况下，主 agent 不会主动委派。它的本能是”自己动手”。</p><p>这合理。对于一个通用工具来说，”自己干”是最安全的默认策略——不需要判断哪些该委派，不需要处理子任务之间的协调，不需要考虑并行写文件的冲突。所有事情在一个 context 里完成，简单、可控、不出错。</p><p><strong>默认值永远服务最大公约数。</strong> Claude Code 不知道你是同时推进三件事的老手，还是只想让它帮忙补个函数的初学者。面对不确定性，保守是对的。</p><p>但”对”不等于”最优”。</p><h2 id="Planner-not-Executor"><a href="#Planner-not-Executor" class="headerlink" title="Planner, not Executor"></a>Planner, not Executor</h2><p>既然主 agent 的默认行为是”什么都自己干”，那就告诉它别这样。</p><p>Claude Code 的 CLAUDE.md 是主 agent 每次启动都会读的行为指南。我在项目的 CLAUDE.md 里加了一条 convention：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="strong">**Planner, not executor**</span>: When handling tasks, default to launching</span><br><span class="line">  subagents for implementation. The main conversation&#x27;s role is planning,</span><br><span class="line">  coordination, and review -- not direct execution. Always launch subagents</span><br><span class="line">  in the background (<span class="code">`run_in_background: true`</span>) so the main conversation</span><br><span class="line">  stays responsive to user input.</span><br></pre></td></tr></table></figure><p>核心思想就一句话：<strong>主 agent 的角色是规划和协调，不是亲自执行。</strong></p><p>效果立竿见影。给一个复杂任务，主 agent 不再自己闷头干，而是先拆解，再把子任务派发给 background subagent。研究性任务跑后台，主 session 保持空闲，可以同时推进别的事。</p><p>但有个问题——这条规则写在项目的 <code>.claude/CLAUDE.md</code> 里，只对当前项目生效。换一个项目，主 agent 又变回那个”什么都自己干”的状态。</p><p>每个项目都抄一遍？不现实。</p><h2 id="从项目级到全局级"><a href="#从项目级到全局级" class="headerlink" title="从项目级到全局级"></a>从项目级到全局级</h2><p>那怎么让这条规则对所有项目生效？</p><p>答案很简单：把配置从项目目录搬到用户目录。Claude Code 会先读 <code>~/.claude/CLAUDE.md</code>，再读项目级的。全局配置对所有项目生效，项目级配置可以覆盖或补充。</p><p>于是有了<a href="https://github.com/johnsonlee/-/pull/3">这个 PR</a>——把 routing rules 和 worker agent 定义直接写在 <code>~/.claude/</code> 下。routing rules 告诉主 agent”大部分任务优先走 background dispatch”，worker agent 定义让委派有地方落。</p><p>这里有个措辞上的细节：worker agent 的 description 里要写 “PROACTIVELY”。Claude Code 的调度逻辑会读这个字段来决定是否主动委派。不加这个词，agent 只是”可用”但不”主动”——相当于雇了个人但从来不派活。这跟在 job description 里写”主动推进”还是”配合完成”一样，措辞决定了角色是找活干还是等分配。</p><p>顺手再设一个 <code>CLAUDE_CODE_SUBAGENT_MODEL</code> 环境变量，主 session 跑 Opus、subagent 跑 Sonnet，推理能力和成本各取所需。</p><p>这套从项目级到全局级的配置体系，本质上是在构建 <strong>AI 工具链的 convention</strong>——跟在团队里推 code style、commit convention、CI pipeline 一个道理。convention 建立了，每个新项目直接继承，不需要从零开始。</p><h2 id="几个坑"><a href="#几个坑" class="headerlink" title="几个坑"></a>几个坑</h2><h3 id="后台无法交互"><a href="#后台无法交互" class="headerlink" title="后台无法交互"></a>后台无法交互</h3><p>后台 subagent 不支持交互式确认。涉及文件写入的任务，Claude Code 会在启动前统一问你授权。忘了给权限，它会卡住。</p><h3 id="Prompt-必须自解释"><a href="#Prompt-必须自解释" class="headerlink" title="Prompt 必须自解释"></a>Prompt 必须自解释</h3><p>subagent 没有 stepwise plan，收到任务直接执行，没有中间输出。<strong>prompt 必须足够清晰——模糊的指令加上没有交互，等于翻车。</strong></p><h3 id="文件边界要划清"><a href="#文件边界要划清" class="headerlink" title="文件边界要划清"></a>文件边界要划清</h3><p>多个 subagent 并行写同一组文件会冲突。委派时注意文件边界，跟给团队分任务时避免两个人改同一个文件是一回事。</p><h3 id="主-agent-偶尔”失忆”"><a href="#主-agent-偶尔”失忆”" class="headerlink" title="主 agent 偶尔”失忆”"></a>主 agent 偶尔”失忆”</h3><p>主 agent 偶尔还是会”忘记”委派。手动按 <code>Ctrl+B</code> 可以把当前任务移到后台，<code>/tasks</code> 查看进度。不优雅，但有效。</p><h2 id="使用方式本身就是架构设计"><a href="#使用方式本身就是架构设计" class="headerlink" title="使用方式本身就是架构设计"></a>使用方式本身就是架构设计</h2><p>回头看，一条写在 CLAUDE.md 里的 convention，表面上只是改了个配置。但你在做的事情是：定义谁负责规划、谁负责执行、什么时候并行、什么时候串行、前台和后台怎么分工。</p><p>这不是”配置”，这是架构设计。</p><p>过去做架构，设计的是代码怎么组织、模块怎么分、接口怎么定义。这些决策的对象是没有智能的——类不会自作主张去调用另一个类，函数不会”觉得”自己应该跑在后台。你画好了图，它们就老老实实地按图执行。</p><p>但当工具有了智能，事情就变了。主 agent 会自己判断”这件事我能干”然后就干了。subagent 的 description 里少一个”PROACTIVELY”，它就真的坐在那等着被调用。你写的每一条规则、每一个措辞，都在塑造一个有自主判断能力的系统的行为边界。</p><p><strong>当工具有了智能，使用方式本身就是架构设计。</strong> 工具还是那个工具，但你可以决定它是继续埋头写 feature，还是带团队。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;之前聊过，AI 的工程能力已经达到了 Staff Engineer 的水平。但用了几个月 Claude Code，我发现一个反直觉的事实：&lt;strong&gt;这位 Staff Engineer 天天在画 UI 写 CRUD。&lt;/strong&gt; 你让它改一个文件，它在主</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Workflow" scheme="https://johnsonlee.io/tags/Workflow/"/>
    
  </entry>
  
  <entry>
    <title>From LLMs to Effective Communication</title>
    <link href="https://johnsonlee.io/2026/02/26/from-llm-to-effective-communication.en/"/>
    <id>https://johnsonlee.io/2026/02/26/from-llm-to-effective-communication.en/</id>
    <published>2026-02-26T00:03:00.000Z</published>
    <updated>2026-02-26T00:03:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Recently I was explaining how LLMs work to my son and put together a <a href="https://llm.johnsonlee.io/">slide deck</a>. When I got to the context window, I reached for an off-the-cuff example:</p><blockquote><p>If you tell an AI “recommend me a movie,” it can only give you a generic answer. But if you say “I like thrillers, prefer nonlinear narratives, just watched <em>Mulholland Drive</em> and want something similar but a bit faster-paced” – the recommendation will be far more precise.</p></blockquote><p>My son asked: why?</p><p>I said: because you gave it more feature dimensions. Its understanding of you went from one-dimensional to multi-dimensional, so it can naturally find a better match within a smaller search space.</p><p>The moment I finished that sentence, I paused.</p><p>Isn’t this exactly the underlying logic of how people communicate with each other?</p><h2 id="LLMs-Make-Communication-Patterns-Observable"><a href="#LLMs-Make-Communication-Patterns-Observable" class="headerlink" title="LLMs Make Communication Patterns Observable"></a>LLMs Make Communication Patterns Observable</h2><p>Communication efficiency between people has always been something vaguely “mystical.” Some are naturally articulate; others talk for ages and still leave everyone confused. But few can articulate where exactly the gap lies.</p><p>LLMs make this quantifiable.</p><p>The more precise and dimensionally rich your prompt, the higher the output quality. This isn’t mysticism; it’s math – <strong>more feature dimensions mean a smaller search space, less ambiguity, and higher matching precision.</strong></p><p>Conversely, if you give a vague instruction, the model can only “guess” within an enormous possibility space. If it guesses right, that’s luck; if it guesses wrong, you conclude “AI isn’t good enough.”</p><p>But is AI really the problem?</p><h2 id="“Low-Dimensional-Communication”-Between-People"><a href="#“Low-Dimensional-Communication”-Between-People" class="headerlink" title="“Low-Dimensional Communication” Between People"></a>“Low-Dimensional Communication” Between People</h2><p>Map this logic onto interpersonal communication and you’ll find the root cause of most inefficient communication is exactly the same – <strong>insufficient information dimensions.</strong></p><p>A common workplace example:</p><blockquote><p>“This page loads too slowly. Optimize it.”</p></blockquote><p>How many dimensions does this sentence have? One – “slow.” The engineer receiving this request immediately has at least ten questions swirling: which page? Under what conditions? How slow? First load or every load? Is there profiling data? What’s the target? What’s the priority?</p><p>Now consider a different phrasing:</p><blockquote><p>“The product detail page takes over 5 seconds for first contentful paint on a weak network (3G), and the bounce rate is 40% higher than on Wi-Fi. Target: get TTI under 3 seconds on weak networks. P1 priority, due this quarter.”</p></blockquote><p>Same underlying request – “optimize page load” – but the second version adds at least six dimensions: page, scenario, metric, comparison baseline, target, and priority. The recipient can almost start working without a single follow-up question.</p><p><strong>The difference in communication efficiency is fundamentally a difference in feature dimensions.</strong></p><h2 id="More-Dimensions-Less-Ambiguity"><a href="#More-Dimensions-Less-Ambiguity" class="headerlink" title="More Dimensions, Less Ambiguity"></a>More Dimensions, Less Ambiguity</h2><p>The way LLMs process language gives this principle an extremely intuitive explanation.</p><p>After tokens enter the model, they’re mapped into a high-dimensional vector. A single token in isolation could have countless meanings, but when combined with other tokens in context, each added dimension compresses the possible semantic space once more. Eventually the model can “lock onto” your intent within a sufficiently small range.</p><p>The human brain processes information similarly. If you say “book me a meeting room,” the other person’s mind conjures any room at any time. But say “tomorrow, 2 to 3 pm, 6 people, need screen sharing, preferably near a window” – each additional constraint shrinks the decision space, and execution accuracy goes up a notch.</p><p>This isn’t a “communication technique.” It’s information theory.</p><h2 id="Why-Don’t-Most-People-Do-This"><a href="#Why-Don’t-Most-People-Do-This" class="headerlink" title="Why Don’t Most People Do This?"></a>Why Don’t Most People Do This?</h2><p>If multi-dimensional communication is so effective, why do most people still default to one-dimensional expression?</p><p>Because providing multi-dimensional information has a cognitive cost.</p><p>You first have to think things through in your own head – which dimensions are critical, which are noise, and what level of granularity is appropriate. This requires completing an “internal modeling” step before you speak, transforming a fuzzy feeling into structured information.</p><p>Most people skip this step. Not out of laziness, but because they haven’t figured it out themselves.</p><p>This is also why “prompt engineering” sounds simple yet so many people still can’t write a good prompt – <strong>it’s not that they can’t talk to AI; it’s that they can’t talk to themselves.</strong> You cannot output a structure that doesn’t exist in your own mind.</p><h2 id="An-Unexpected-Takeaway-from-Teaching-LLM-Fundamentals"><a href="#An-Unexpected-Takeaway-from-Teaching-LLM-Fundamentals" class="headerlink" title="An Unexpected Takeaway from Teaching LLM Fundamentals"></a>An Unexpected Takeaway from Teaching LLM Fundamentals</h2><p>Back to the scene of explaining things to my son.</p><p>I originally just wanted him to understand how LLMs work, but as I went on I realized the most valuable part of the lesson wasn’t the technical principles themselves – it was the communication patterns they reveal:</p><ul><li>If you want the other party (human or AI) to understand you accurately, you must provide enough effective dimensions</li><li>Effective dimensions are not a pile of information, but <strong>constraints relevant to the goal that shrink the search space</strong></li><li>The ceiling of your expressive ability is determined by how deeply you understand your own needs</li></ul><p>These patterns are instantly verifiable with an LLM – tweak the prompt, watch the output change, cause and effect crystal clear. In human-to-human communication, feedback is delayed and fuzzy, making precise attribution nearly impossible.</p><p><strong>An LLM is like a communication laboratory.</strong> It turns “the more precise the expression, the better the understanding” from mysticism into a reproducible experiment.</p><h2 id="What-Real-Communication-Ability-Is"><a href="#What-Real-Communication-Ability-Is" class="headerlink" title="What Real Communication Ability Is"></a>What Real Communication Ability Is</h2><p>Many equate communication ability with eloquence, expressiveness, or even emotional intelligence. Those are all means, not the essence.</p><p><strong>Real communication ability is the capacity to transform fuzzy intent in your mind into multi-dimensional structured information.</strong></p><p>The more deeply you understand your own needs, the more effective dimensions you can extract, the less the other party needs to guess, and the more efficient the communication.</p><p>This has nothing to do with whether you’re talking to a person or an AI. The physics of information transfer don’t change just because the receiver is carbon-based or silicon-based.</p><p>So next time communication efficiency is low, don’t rush to blame the other party for “poor comprehension.”</p><p>First ask yourself: how many dimensions did I give?</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Recently I was explaining how LLMs work to my son and put together a &lt;a href=&quot;https://llm.johnsonlee.io/&quot;&gt;slide deck&lt;/a&gt;. When I got to</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Communication" scheme="https://johnsonlee.io/tags/Communication/"/>
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
  </entry>
  
  <entry>
    <title>从 LLM 到高效沟通</title>
    <link href="https://johnsonlee.io/2026/02/26/from-llm-to-effective-communication/"/>
    <id>https://johnsonlee.io/2026/02/26/from-llm-to-effective-communication/</id>
    <published>2026-02-26T00:03:00.000Z</published>
    <updated>2026-02-26T00:03:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近在给儿子讲 LLM 的工作原理，做了一套 <a href="https://llm.johnsonlee.io/">PPT</a> 。讲到 context window 的时候，我随手举了个例子：</p><blockquote><p>你跟 AI 说“帮我推荐一部电影”，它只能给你一个大众化的答案。但如果你说“我喜欢悬疑片，偏好非线性叙事，最近刚看完《穆赫兰道》想找类似的，但节奏可以稍快一点”——它给出的推荐会精准得多。</p></blockquote><p>儿子问：为什么？</p><p>我说：因为你给了它更多的特征维度。它对你的理解从一维变成了多维，自然就能在更小的范围里找到更匹配的答案。</p><p>说完这句话，我愣了一下。</p><p>这不就是人与人之间沟通的底层逻辑吗？</p><h2 id="LLM-让沟通规律变得可观测"><a href="#LLM-让沟通规律变得可观测" class="headerlink" title="LLM 让沟通规律变得可观测"></a>LLM 让沟通规律变得可观测</h2><p>人与人之间的沟通效率，一直是一件很“玄”的事。有人天生善于表达，有人说了半天别人还是一头雾水，但很少有人能说清楚，差距到底在哪。</p><p>LLM 把这件事变得可量化了。</p><p>你给模型的 prompt 越精确、维度越丰富，输出质量就越高。这不是玄学，是数学——<strong>更多的特征维度意味着更小的搜索空间，更少的歧义，更高的匹配精度。</strong></p><p>反过来，如果你给一个模糊的指令，模型只能在一个巨大的可能性空间里“猜”。猜对了是运气，猜错了你还觉得“AI 不行”。</p><p>但问题真的出在 AI 身上吗？</p><h2 id="人与人之间的“低维沟通”"><a href="#人与人之间的“低维沟通”" class="headerlink" title="人与人之间的“低维沟通”"></a>人与人之间的“低维沟通”</h2><p>把这个逻辑映射到人际沟通，你会发现大部分低效沟通的根因是一样的——<strong>信息维度不够。</strong></p><p>举个工作中常见的例子：</p><blockquote><p>“这个页面加载太慢了，优化一下。”</p></blockquote><p>这句话有多少维度？一个——“慢”。接到这个需求的工程师，脑子里至少会冒出十个问题：哪个页面？什么场景下慢？慢到什么程度？是首次加载还是每次都慢？有 profiling 数据吗？目标是多少？优先级呢？</p><p>如果换一种说法：</p><blockquote><p>“商品详情页在弱网（3G）环境下首屏渲染超过 5 秒，用户跳出率比 Wi-Fi 场景高 40%。目标是把弱网场景的 TTI 压到 3 秒以内，P1 优先级，这个季度内完成。”</p></blockquote><p>同样是“优化页面加载”，第二种表达至少多了六个维度：页面、场景、指标、对比基准、目标、优先级。接收者几乎不需要追问就能开始行动。</p><p><strong>沟通效率的差异，本质上就是特征维度的差异。</strong></p><h2 id="维度越多，歧义越少"><a href="#维度越多，歧义越少" class="headerlink" title="维度越多，歧义越少"></a>维度越多，歧义越少</h2><p>LLM 处理语言的方式，给了这个规律一个非常直观的解释。</p><p>Token 进入模型后，会被映射成一个高维向量。单独看一个 token，它可能有无数种含义；但当它和上下文中的其他 token 组合在一起，每增加一个维度，可能的语义空间就被压缩一次。最终，模型能在一个足够小的范围内“锁定”你的意图。</p><p>人脑处理信息的方式也类似。你跟对方说“帮我订个会议室”，对方脑中浮现的可能是任何一间会议室、任何一个时间段。但你说“明天下午两点到三点，6 人，需要投屏，最好靠窗”——每多一个约束条件，对方的决策空间就缩小一圈，执行的准确率就高一截。</p><p>这不是“沟通技巧”，这是信息论。</p><h2 id="为什么大多数人不这么做？"><a href="#为什么大多数人不这么做？" class="headerlink" title="为什么大多数人不这么做？"></a>为什么大多数人不这么做？</h2><p>既然多维沟通这么好，为什么大多数人还是习惯一维表达？</p><p>因为提供多维信息是有认知成本的。</p><p>你要先在自己脑子里把需求想清楚——哪些维度是关键的、哪些是噪音、什么粒度合适。这需要你在表达之前完成一次“内部建模”，把模糊的感受转化成结构化的信息。</p><p>大多数人跳过了这一步。不是因为懒，是因为他们自己都没想清楚。</p><p>这也是为什么”prompt engineering”说起来简单，但很多人还是写不好 prompt——<strong>不是不会跟 AI 说话，是不会跟自己说话。</strong> 你没法输出你脑中不存在的结构。</p><h2 id="教-LLM-原理的意外收获"><a href="#教-LLM-原理的意外收获" class="headerlink" title="教 LLM 原理的意外收获"></a>教 LLM 原理的意外收获</h2><p>回到给儿子讲课的场景。</p><p>我原本只是想让他理解 LLM 怎么工作的，但讲着讲着发现，这堂课最有价值的部分不是技术原理本身，而是它揭示的沟通规律：</p><ul><li>你想让对方（无论是人还是 AI）准确理解你，就必须提供足够多的有效维度</li><li>有效维度不是信息量的堆砌，而是<strong>跟目标相关的、能缩小搜索空间的约束条件</strong></li><li>表达能力的上限，取决于你对自己需求的理解深度</li></ul><p>这些规律在 LLM 身上是即时可验证的——你改一下 prompt，输出马上变化，因果关系清晰可见。而在人与人之间的沟通中，反馈是延迟的、模糊的，你很难精确归因。</p><p><strong>LLM 就像一个沟通实验室。</strong> 它把“表达越精确，理解越到位”这个规律从玄学变成了可复现的实验。</p><h2 id="真正的沟通力是什么？"><a href="#真正的沟通力是什么？" class="headerlink" title="真正的沟通力是什么？"></a>真正的沟通力是什么？</h2><p>很多人把沟通力等同于口才、表达力、甚至情商。这些都是手段，不是本质。</p><p><strong>真正的沟通力，是把脑中模糊的意图转化成多维结构化信息的能力。</strong></p><p>你对自己的需求理解得越深，能提取出的有效维度就越多，对方需要猜测的空间就越小，沟通的效率就越高。</p><p>这跟你是在跟人说话还是跟 AI 说话无关。信息传递的物理定律不会因为接收者是碳基还是硅基而改变。</p><p>所以下次沟通效率低的时候，先别急着怪对方“理解力差”。</p><p>先问自己：我给了几个维度？</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近在给儿子讲 LLM 的工作原理，做了一套 &lt;a href=&quot;https://llm.johnsonlee.io/&quot;&gt;PPT&lt;/a&gt; 。讲到 context window 的时候，我随手举了个例子：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你跟 AI</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Communication" scheme="https://johnsonlee.io/tags/Communication/"/>
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
  </entry>
  
  <entry>
    <title>From Compiler to LLM: The Recurring Cycle of Software Layering</title>
    <link href="https://johnsonlee.io/2026/02/25/from-compiler-to-llm.en/"/>
    <id>https://johnsonlee.io/2026/02/25/from-compiler-to-llm.en/</id>
    <published>2026-02-25T12:28:00.000Z</published>
    <updated>2026-02-25T12:28:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Both call the Claude API to write code, yet Cursor became a product valued at tens of billions while countless “wrapper” apps died in silence. What’s the difference?</p><p>This question reminded me of a much older analogy.</p><span id="more"></span><h2 id="An-Old-Story-New-Version"><a href="#An-Old-Story-New-Version" class="headerlink" title="An Old Story, New Version"></a>An Old Story, New Version</h2><p>Traditional software engineering has a clear dividing line: <strong>on one side, people who build tools; on the other, people who use tools.</strong></p><p>Tool builders write compilers, runtimes, operating systems – GCC, JVM, LLVM, Linux. Tool users take these to build business software – Word, Photoshop, Taobao. The two groups need entirely different skills, their career paths barely overlap, and each forms its own ecosystem.</p><p>This dividing line held steady for decades.</p><p>Now, the AI era is redrawing it. On one side are people training foundation models – OpenAI, Anthropic, Google, Meta – doing pretraining, RLHF, inference optimization, requiring large-scale distributed training, data engineering, and alignment research. On the other side are people building products with models – Cursor, Perplexity, Harvey – who need Prompt Engineering, RAG, tool orchestration, and product design.</p><p>Two groups, two skill sets, two paths. History repeating itself.</p><h2 id="But-This-Time-Is-Different"><a href="#But-This-Time-Is-Different" class="headerlink" title="But This Time Is Different"></a>But This Time Is Different</h2><p>The analogy holds, but the differences are more worth noting.</p><h3 id="The-Interface-Is-No-Longer-Deterministic"><a href="#The-Interface-Is-No-Longer-Deterministic" class="headerlink" title="The Interface Is No Longer Deterministic"></a>The Interface Is No Longer Deterministic</h3><p>A compiler’s behavior is deterministic. Same source code, same compiler options, same output every time. You can build a complete mental model of compiler behavior, write tests, make assertions, calculate complexity. The entire methodology of software engineering – unit tests, CI&#x2F;CD, type systems – rests on this determinism.</p><p>An LLM’s “interface” is probabilistic. Same prompt, different temperature, or even the same parameters – the output can differ. You can’t make traditional assertions against a probabilistic system. <strong>This isn’t an engineering detail you can work around; it changes the very nature of “development.”</strong></p><p>When your infrastructure is probabilistic, application-layer engineering is no longer just writing logic and calling APIs – it’s handling uncertainty: validation, fallbacks, retries, constraints. This makes AI application development feel more like collaborating with a smart but not entirely reliable colleague than calling an API with a well-defined contract.</p><h3 id="The-Abstraction-Layer-Iterates-Too-Fast"><a href="#The-Abstraction-Layer-Iterates-Too-Fast" class="headerlink" title="The Abstraction Layer Iterates Too Fast"></a>The Abstraction Layer Iterates Too Fast</h3><p>C++ standards come out every few years; the JVM has been backward-compatible for decades. Java knowledge you learned in 2005 mostly still works in 2025. The stability of compilers and language standards gave the application layer ample time to accumulate – accumulate code, best practices, and engineering expertise.</p><p>Foundation models turn over every few months. What the last generation couldn’t do, the next suddenly can. A complex Prompt Chain you spent three months building might become completely unnecessary after a model upgrade. The RAG Pipeline you carefully designed might be rendered obsolete by a longer Context Window.</p><p><strong>The application layer’s moat is much shallower than in traditional software.</strong> Not because application-layer people aren’t smart enough, but because the foundation is moving at an unprecedented pace.</p><h3 id="Boundaries-Are-Dissolving-in-Both-Directions"><a href="#Boundaries-Are-Dissolving-in-Both-Directions" class="headerlink" title="Boundaries Are Dissolving in Both Directions"></a>Boundaries Are Dissolving in Both Directions</h3><p>In the traditional era, you wouldn’t expect GCC to build a web application for you. A compiler is a compiler; it stays in its lane.</p><p>But LLMs inherently possess “application capability.” Raw Claude can analyze financial reports, write code, and do translations. It doesn’t need a shell to work. It’s as if the JVM itself could understand user needs, generate results, and deliver them directly – which massively compresses the reason for an “application layer” to exist.</p><p>So we see an interesting phenomenon: foundation model companies are building applications upward (ChatGPT, Claude.ai), and application companies are doing model fine-tuning downward. <strong>The boundary isn’t solidifying; it’s dissolving.</strong></p><h2 id="Where-Is-the-Moat-for-AI-Applications"><a href="#Where-Is-the-Moat-for-AI-Applications" class="headerlink" title="Where Is the Moat for AI Applications?"></a>Where Is the Moat for AI Applications?</h2><p>Given an unstable foundation and blurred boundaries, “wrappers” obviously can’t survive. But Cursor survived. Perplexity survived. What did they get right?</p><p>The answer isn’t on a single dimension – it’s a combination at four levels of depth.</p><h3 id="Context-Engineering"><a href="#Context-Engineering" class="headerlink" title="Context Engineering"></a>Context Engineering</h3><p>LLMs are general-purpose, but users’ problems are specific. <strong>Whoever provides the model with more precise context builds the better product.</strong></p><p>The first thing Cursor did wasn’t writing a better prompt – it built Codebase Indexing, enabling the model to understand your entire project. This is a pure engineering problem: how to efficiently index code, how to select relevant context, how to pack the most useful information within token limits.</p><p>Model vendors won’t do this for you, because they don’t know what project your user is working on.</p><h3 id="Workflow-Orchestration"><a href="#Workflow-Orchestration" class="headerlink" title="Workflow Orchestration"></a>Workflow Orchestration</h3><p>Good AI applications don’t make users change their habits to accommodate AI; they embed AI into users’ existing workflows.</p><p>Take Cursor again – it didn’t invent a new way of programming. It added AI on top of VS Code. You’re still writing code, reviewing diffs, running tests, except now AI handles some of the steps. <strong>The best AI applications are invisible.</strong></p><h3 id="Output-Constraints-and-Validation"><a href="#Output-Constraints-and-Validation" class="headerlink" title="Output Constraints and Validation"></a>Output Constraints and Validation</h3><p>LLMs make mistakes. In a chat window, users can judge for themselves. But mistakes embedded in a workflow can have serious consequences – buggy generated code, wrong legal advice, miscalculated financial data.</p><p>The application layer must constrain and validate LLM output – type checking, format validation, business rule fallbacks, human confirmation checkpoints. <strong>This is the most direct arena for traditional software engineering expertise.</strong></p><h3 id="Domain-Knowledge-Injection"><a href="#Domain-Knowledge-Injection" class="headerlink" title="Domain Knowledge Injection"></a>Domain Knowledge Injection</h3><p>General-purpose models know a little about everything but aren’t deep enough in specialized domains. Harvey was able to establish itself in legal not by being a generic LLM wrapper, but by injecting what law firms actually need: specific legal practice workflows, compliance constraints, document format standards. This knowledge either isn’t in the model’s pretraining data, or it’s there but not precise enough.</p><p><strong>Domain knowledge is the most traditional and most durable moat.</strong> Models will upgrade, but your understanding of an industry won’t depreciate because of it.</p><h2 id="The-Overlooked-Middle-Layer"><a href="#The-Overlooked-Middle-Layer" class="headerlink" title="The Overlooked Middle Layer"></a>The Overlooked Middle Layer</h2><p>Back to the layering analogy at the start. The traditional era wasn’t just two layers of “compiler” and “application.” There was a critically important middle layer: runtimes, frameworks, build tools, package managers. JVM, Spring, Gradle, Maven. This layer didn’t face users directly, but without it, the application layer couldn’t operate efficiently.</p><p>The AI era is growing its own middle layer: Agent frameworks, MCP (Model Context Protocol), tool-calling protocols, Prompt management systems, evaluation frameworks.</p><p>What this layer does is fundamentally the same as traditional runtimes and build tools – <strong>bridging the gap between non-deterministic infrastructure and deterministic engineering requirements.</strong></p><p>LLM output needs to be validated, constrained, routed to the right tools, and integrated into existing systems. None of this is what the model itself does, nor is it a detail the final application cares about. It needs a middle layer to handle it.</p><p>Interestingly, people who’ve worked on compilers, static analysis, and bytecode manipulation in traditional software engineering have a natural advantage in this layer. Because the core problem is the same: <strong>understanding a system’s inputs and outputs, applying constraints and transformations in the middle, and ensuring the final result meets expectations.</strong> The only difference is that in the past you were constraining bytecode; now you’re constraining tokens.</p><h2 id="Cycles-and-Renewal"><a href="#Cycles-and-Renewal" class="headerlink" title="Cycles and Renewal"></a>Cycles and Renewal</h2><p>Software engineering undergoes a layering restructuring every so often. From assembly to high-level languages, from desktop to web, from monolith to microservices – each restructuring redraws the boundary of “who builds tools and who uses tools.”</p><p>AI is the latest round. The logic of layering hasn’t changed, but the specifics have: the interface shifted from deterministic to probabilistic, iteration speed from years to months, and boundaries from clear to blurred.</p><p>In this landscape, the most valuable position may not be at either end – not training bigger models, not building flashier applications – but in the middle: <strong>building bridges between probabilistic intelligence and deterministic engineering.</strong></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Both call the Claude API to write code, yet Cursor became a product valued at tens of billions while countless “wrapper” apps died in silence. What’s the difference?&lt;/p&gt;
&lt;p&gt;This question reminded me of a much older analogy.&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Architecture" scheme="https://johnsonlee.io/tags/Architecture/"/>
    
  </entry>
  
  <entry>
    <title>从编译器到 LLM：软件分层的轮回</title>
    <link href="https://johnsonlee.io/2026/02/25/from-compiler-to-llm/"/>
    <id>https://johnsonlee.io/2026/02/25/from-compiler-to-llm/</id>
    <published>2026-02-25T12:28:00.000Z</published>
    <updated>2026-02-25T12:28:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>同样是调用 Claude API 写代码，Cursor 做成了估值百亿的产品，而无数“套壳”应用悄无声息地死掉了。区别在哪？</p><p>这个问题让我想到一个更古老的类比。</p><span id="more"></span><h2 id="一个老故事的新版本"><a href="#一个老故事的新版本" class="headerlink" title="一个老故事的新版本"></a>一个老故事的新版本</h2><p>传统软件工程有一条清晰的分界线：<strong>一边是造工具的人，一边是用工具的人。</strong></p><p>造工具的人写编译器、写运行时、写操作系统 — GCC、JVM、LLVM、Linux。用工具的人拿着这些东西去构建业务软件 — Word、Photoshop、淘宝。两拨人需要的能力完全不同，职业路径几乎不重叠，各自形成了独立的生态。</p><p>这条分界线稳定了几十年。</p><p>现在，AI 时代正在重新画这条线。一边是训练基础模型的人 — OpenAI、Anthropic、Google、Meta，他们做的事是预训练、RLHF、推理优化，需要的是大规模分布式训练、数据工程和对齐研究。另一边是拿模型做产品的人 — Cursor、Perplexity、Harvey，他们需要的是 Prompt Engineering、RAG、工具编排和产品设计。</p><p>两拨人，两种能力，两条路径。历史在重演。</p><h2 id="但这次不太一样"><a href="#但这次不太一样" class="headerlink" title="但这次不太一样"></a>但这次不太一样</h2><p>类比成立，差异更值得注意。</p><h3 id="接口不再是确定性的"><a href="#接口不再是确定性的" class="headerlink" title="接口不再是确定性的"></a>接口不再是确定性的</h3><p>编译器的行为是确定性的。同样的源码，同样的编译选项，输出永远一致。你可以对编译器的行为建立完整的心智模型，写测试、做断言、算复杂度。整个软件工程的方法论 — 单元测试、CI&#x2F;CD、类型系统 — 都建立在这种确定性之上。</p><p>LLM 的“接口”是概率性的。同样的 Prompt，不同的温度参数，甚至同样的参数，输出都可能不同。你没法对一个概率性的系统做传统意义上的断言。<strong>这不是一个工程上可以绕过去的细节，而是改变了“开发”这件事的本质。</strong></p><p>当你的基础设施是概率性的，应用层的工程就不再只是写逻辑和调接口，而是要处理不确定性 — 验证、兜底、重试、约束。这让 AI 应用开发更像是在跟一个聪明但不完全可靠的同事协作，而不是在调用一个有明确契约的 API。</p><h3 id="抽象层迭代得太快"><a href="#抽象层迭代得太快" class="headerlink" title="抽象层迭代得太快"></a>抽象层迭代得太快</h3><p>C++ 标准几年出一版，JVM 向后兼容了几十年。你 2005 年学的 Java 知识，2025 年大部分还能用。编译器和语言标准的稳定性，给了应用层充足的时间去积累 — 积累代码、积累最佳实践、积累工程师的经验。</p><p>基础模型几个月一个代际。上一代做不到的事，下一代突然就能做了。你花三个月搭的复杂 Prompt Chain，可能在模型升级后变得完全不必要。你精心设计的 RAG Pipeline，可能被更长的 Context Window 直接淘汰。</p><p><strong>应用层的护城河比传统软件浅得多。</strong> 不是因为应用层的人不够聪明，而是地基在以前所未有的速度移动。</p><h3 id="边界在双向渗透"><a href="#边界在双向渗透" class="headerlink" title="边界在双向渗透"></a>边界在双向渗透</h3><p>传统时代，你不会期望 GCC 帮你写一个 Web 应用。编译器就是编译器，它不越界。</p><p>但 LLM 天然具备“应用能力”。Claude 裸用就能帮你分析财报、写代码、做翻译。它不需要一个外壳才能工作。这有点像如果 JVM 自己就能理解用户需求、生成运行结果并直接交付 — 那“应用层”的存在意义就被大大压缩了。</p><p>所以我们看到一个有趣的现象：基础模型公司在向上做应用（ChatGPT、Claude.ai），应用公司在向下做模型微调。<strong>边界不是在固化，而是在溶解。</strong></p><h2 id="AI-应用的护城河在哪"><a href="#AI-应用的护城河在哪" class="headerlink" title="AI 应用的护城河在哪"></a>AI 应用的护城河在哪</h2><p>既然地基不稳、边界模糊，“套壳”当然活不下去。但 Cursor 活下来了，Perplexity 活下来了。它们做对了什么？</p><p>答案不在单一维度上，而是四层深度的组合。</p><h3 id="上下文工程"><a href="#上下文工程" class="headerlink" title="上下文工程"></a>上下文工程</h3><p>LLM 是通用的，但用户的问题是具体的。<strong>谁能给模型提供更精准的上下文，谁的产品就更好用。</strong></p><p>Cursor 做的第一件事不是写更好的 Prompt，而是做 Codebase Indexing — 让模型理解你的整个项目。这是一个纯粹的工程问题：怎么高效地索引代码、怎么选择相关的上下文、怎么在 Token 限制内塞进最有用的信息。</p><p>这件事模型厂商不会帮你做，因为他们不知道你的用户在做什么项目。</p><h3 id="工作流编排"><a href="#工作流编排" class="headerlink" title="工作流编排"></a>工作流编排</h3><p>好的 AI 应用不是让用户改变习惯去适应 AI，而是把 AI 嵌入用户已有的工作流。</p><p>还是以 Cursor 为例 — 它没有发明一种新的编程方式，而是在 VS Code 的基础上加了 AI。你还是在写代码、看 Diff、跑测试，只是有些环节 AI 帮你做了。<strong>最好的 AI 应用是隐形的。</strong></p><h3 id="输出约束与验证"><a href="#输出约束与验证" class="headerlink" title="输出约束与验证"></a>输出约束与验证</h3><p>LLM 会犯错。在聊天窗口里犯错，用户可以自己判断。但嵌入到工作流里犯错，后果可能很严重 — 生成了有 Bug 的代码、给了错误的法律建议、算错了财务数据。</p><p>应用层要对 LLM 的输出做约束和验证 — 类型检查、格式校验、业务规则兜底、人工确认节点。<strong>这是传统软件工程经验最直接的用武之地。</strong></p><h3 id="领域知识注入"><a href="#领域知识注入" class="headerlink" title="领域知识注入"></a>领域知识注入</h3><p>通用模型什么都知道一点，但在专业领域不够深。Harvey 之所以能在法律领域站住脚，是因为它注入了律所真正需要的东西：具体的法律实务流程、合规约束、文档格式规范。这些知识不在模型的预训练数据里，或者在但不够精确。</p><p><strong>领域知识是最传统也最持久的护城河。</strong> 模型会升级，但你对一个行业的理解不会因此贬值。</p><h2 id="被忽视的中间层"><a href="#被忽视的中间层" class="headerlink" title="被忽视的中间层"></a>被忽视的中间层</h2><p>回到开头的分层类比。传统时代不是只有“编译器”和“应用”两层。中间还有一层至关重要的东西 — 运行时、框架、构建工具、包管理器。JVM、Spring、Gradle、Maven。这一层不直接面对用户，但没有它，应用层就无法高效运转。</p><p>AI 时代也在长出自己的中间层：Agent 框架、MCP（Model Context Protocol）、工具调用协议、Prompt 管理系统、评估框架。</p><p>这一层做的事情，本质上和传统的运行时与构建工具一样 — <strong>在不确定的基础设施和确定性的工程需求之间架桥。</strong></p><p>LLM 的输出需要被验证、被约束、被路由到正确的工具、被集成到已有的系统中。这些都不是模型本身做的事，也不是最终应用关心的细节。它需要一个中间层来处理。</p><p>有意思的是，传统软件工程里做过编译器、做过静态分析、做过字节码操作的人，在这一层有天然的优势。因为核心问题是一样的：<strong>理解一个系统的输入和输出，在中间施加约束和变换，确保最终结果符合预期。</strong> 只不过过去约束的是字节码，现在约束的是 Token。</p><h2 id="轮回与新生"><a href="#轮回与新生" class="headerlink" title="轮回与新生"></a>轮回与新生</h2><p>软件工程每隔一段时间就会经历一次分层重构。从汇编到高级语言，从桌面到 Web，从单体到微服务 — 每次重构都会重新划定“谁造工具、谁用工具”的边界。</p><p>AI 是最新的一次。分层的逻辑没变，但具体的形态变了：接口从确定性变成概率性，迭代速度从年变成月，边界从清晰变成模糊。</p><p>在这样的格局下，最有价值的位置可能不在两端 — 不是训练更大的模型，也不是做更花哨的应用 — 而是在中间：<strong>在概率性的智能和确定性的工程之间，建造桥梁的人。</strong></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;同样是调用 Claude API 写代码，Cursor 做成了估值百亿的产品，而无数“套壳”应用悄无声息地死掉了。区别在哪？&lt;/p&gt;
&lt;p&gt;这个问题让我想到一个更古老的类比。&lt;/p&gt;</summary>
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Architecture" scheme="https://johnsonlee.io/tags/Architecture/"/>
    
  </entry>
  
  <entry>
    <title>The Essence of LLMs: Functions</title>
    <link href="https://johnsonlee.io/2026/02/25/llm-is-a-function.en/"/>
    <id>https://johnsonlee.io/2026/02/25/llm-is-a-function.en/</id>
    <published>2026-02-25T12:21:03.000Z</published>
    <updated>2026-02-25T12:21:03.000Z</updated>
    
    <content type="html"><![CDATA[<p>A while back, my son asked me: “Dad, how does ChatGPT know what to say?”</p><p>I decided to give a real answer. Not a hand-wavy “it’s very smart,” but actually break down how LLMs work for him. So I made a slide deck – <a href="https://llm.johnsonlee.io/">LLM for Kids</a> – walking through Token, Embedding, Attention, and Transformer, using “the cat sat on the mat” as an example, “report cards” and “pie charts” as analogies.</p><p>Making that deck taught me more than I expected. When you’re forced to explain a concept so that an elementary schooler can understand it, you’re forced to strip away all the jargon and confront the essence.</p><p>And that essence is surprisingly simple:</p><p><strong>An LLM is a function.</strong></p><p>Not a metaphor. Not an analogy. A function in the mathematical sense. It takes a sequence of tokens as input and outputs a probability distribution. Every behavior that makes people think “AI seems to be thinking” is just this function calling itself repeatedly.</p><h2 id="Starting-from-a-d-Dimensional-Space"><a href="#Starting-from-a-d-Dimensional-Space" class="headerlink" title="Starting from a d-Dimensional Space"></a>Starting from a d-Dimensional Space</h2><p>Training an LLM begins with positing a d-dimensional space. d could be 4096, 8192 – the exact number depends on the model design.</p><p>Each token – a word, a subword, a punctuation mark – is mapped to a vector in this space. This operation is called Embedding, and it’s essentially a lookup table: token ID in, d-dimensional vector out.</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.466ex;" xmlns="http://www.w3.org/2000/svg" width="27.767ex" height="2.511ex" role="img" focusable="false" viewBox="0 -903.7 12272.8 1109.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="45" d="M128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619Z"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(681,0)"></path><path data-c="62" d="M307 -11Q234 -11 168 55L158 37Q156 34 153 28T147 17T143 10L138 1L118 0H98V298Q98 599 97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V543Q179 391 180 391L183 394Q186 397 192 401T207 411T228 421T254 431T286 439T323 442Q401 442 461 379T522 216Q522 115 458 52T307 -11ZM182 98Q182 97 187 90T196 79T206 67T218 55T233 44T250 35T271 29T295 26Q330 26 363 46T412 113Q424 148 424 212Q424 287 412 323Q385 405 300 405Q270 405 239 390T188 347L182 339V98Z" transform="translate(1514,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(2070,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(2514,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(3070,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(3626,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(3904,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(4460,0)"></path></g><g data-mml-node="mo" transform="translate(5237.8,0)"><path data-c="3A" d="M78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z"></path></g><g data-mml-node="mrow" transform="translate(5793.6,0)"><g data-mml-node="mtext"><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(389,0)"></path><path data-c="6B" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36Z" transform="translate(889,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1417,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1861,0)"></path><path data-c="5F" d="M0 -62V-25H499V-62H0Z" transform="translate(2417,0)"></path></g><g data-mml-node="mtext" transform="translate(2917,0)"><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(278,0)"></path></g></g><g data-mml-node="mo" transform="translate(9822.3,0)"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g><g data-mml-node="msup" transform="translate(11100.1,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="211D" d="M17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243Z"></path></g></g><g data-mml-node="mi" transform="translate(755,413) scale(0.707)"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g></g></g></g></svg></mjx-container><p>Before training, these vectors are randomly initialized. “Cat” and “dog” might be far apart. “Cat” and “interest rate” might be right next to each other. But after training, semantically similar words get pulled closer together – not by human design, but by gradient descent tuning it on its own.</p><p><strong>A word’s “meaning” is its position in high-dimensional space.</strong></p><h2 id="Attention-Dynamic-Routing"><a href="#Attention-Dynamic-Routing" class="headerlink" title="Attention: Dynamic Routing"></a>Attention: Dynamic Routing</h2><p>But there’s a problem: Embedding gives each token a <strong>static, context-independent</strong> position. Whether “apple” appears in “I ate an apple” or “Apple released a new iPhone,” the lookup table returns the same vector – encoding only the average semantics of “apple,” with no idea whether it’s a fruit or a company in the current sentence.</p><p>What Attention does is: <strong>dynamically adjust each token’s representation based on context.</strong> Embedding assigns each token a “default identity.” Attention lets them communicate with each other and then adjust according to context. Without Attention, every word lives in its own world, unaware of its neighbors.</p><p>For each position in the sequence, Attention answers one question: <strong>Who should I pay attention to, and how much?</strong></p><p>Mathematically, it transforms each vector into three roles:</p><ul><li><strong>Q (Query)</strong>: What am I looking for</li><li><strong>K (Key)</strong>: What can I offer</li><li><strong>V (Value)</strong>: My actual content</li></ul><p>Then a single formula handles matching and aggregation:</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.308ex;" xmlns="http://www.w3.org/2000/svg" width="41.428ex" height="5.741ex" role="img" focusable="false" viewBox="0 -1517.7 18311.4 2537.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="41" d="M255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447Z"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(750,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1139,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1528,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1972,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2528,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2917,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(3195,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(3695,0)"></path></g><g data-mml-node="mo" transform="translate(4251,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(4640,0)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(5431,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(5875.7,0)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(6764.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(7209.3,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g><g data-mml-node="mo" transform="translate(7978.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(8645.1,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mtext" transform="translate(9700.9,0)"><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(394,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(894,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1200,0)"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1589,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(2422,0)"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(2922,0)"></path></g><g data-mml-node="mrow" transform="translate(13317.6,0)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="28" d="M701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940Z"></path></g><g data-mml-node="mfrac" transform="translate(736,0)"><g data-mml-node="mrow" transform="translate(220,676)"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="msup" transform="translate(791,0)"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mi" transform="translate(974,363) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g><g data-mml-node="msqrt" transform="translate(464.2,-855.6)"><g transform="translate(853,0)"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mi" transform="translate(553,-150) scale(0.707)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g><g data-mml-node="mo" transform="translate(0,35.6)"><path data-c="221A" d="M95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178Z"></path></g><rect width="971.4" height="60" x="853" y="775.6"></rect></g><rect width="2512.8" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(3488.8,0) translate(0 -0.5)"><path data-c="29" d="M34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438Z"></path></g></g><g data-mml-node="mi" transform="translate(17542.4,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="5.233ex" height="2.343ex" role="img" focusable="false" viewBox="0 -841.7 2312.8 1035.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="msup" transform="translate(791,0)"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mi" transform="translate(974,363) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g></g></svg></mjx-container> computes the relevance score between every pair of positions. <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.372ex;" xmlns="http://www.w3.org/2000/svg" width="4.128ex" height="2.398ex" role="img" focusable="false" viewBox="0 -895.6 1824.4 1060"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msqrt"><g transform="translate(853,0)"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mi" transform="translate(553,-150) scale(0.707)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g><g data-mml-node="mo" transform="translate(0,35.6)"><path data-c="221A" d="M95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178Z"></path></g><rect width="971.4" height="60" x="853" y="775.6"></rect></g></g></g></svg></mjx-container> is a scaling factor that prevents dot products from growing too large, which would push softmax outputs toward one-hot (vanishing gradients). Softmax normalizes the scores into weights, which are then used to compute a weighted sum over V.<p>In one sentence: <strong>Attention is a learnable, dynamic weighted sum.</strong></p><p>Multi-Head Attention runs multiple such operations in parallel. Each head learns a different attention pattern – some focus on syntactic dependencies, some on semantic similarity, some on positional distance. The results from all heads are concatenated and passed through a linear transformation.</p><h2 id="FFN-The-Knowledge-Store"><a href="#FFN-The-Knowledge-Store" class="headerlink" title="FFN: The Knowledge Store"></a>FFN: The Knowledge Store</h2><p>Inside each Transformer block, right after Attention, there’s a Feed-Forward Network (FFN):</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="38.522ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 17026.5 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="46" d="M128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z"></path><path data-c="46" d="M128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z" transform="translate(653,0)"></path><path data-c="4E" d="M42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42Z" transform="translate(1306,0)"></path></g><g data-mml-node="mo" transform="translate(2056,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(2445,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(3017,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(3683.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msub" transform="translate(4739.6,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mn" transform="translate(977,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(6342.3,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mtext" transform="translate(6842.6,0)"><path data-c="52" d="M130 622Q123 629 119 631T103 634T60 637H27V683H202H236H300Q376 683 417 677T500 648Q595 600 609 517Q610 512 610 501Q610 468 594 439T556 392T511 361T472 343L456 338Q459 335 467 332Q497 316 516 298T545 254T559 211T568 155T578 94Q588 46 602 31T640 16H645Q660 16 674 32T692 87Q692 98 696 101T712 105T728 103T732 90Q732 59 716 27T672 -16Q656 -22 630 -22Q481 -16 458 90Q456 101 456 163T449 246Q430 304 373 320L363 322L297 323H231V192L232 61Q238 51 249 49T301 46H334V0H323Q302 3 181 3Q59 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM491 499V509Q491 527 490 539T481 570T462 601T424 623T362 636Q360 636 340 636T304 637H283Q238 637 234 628Q231 624 231 492V360H289Q390 360 434 378T489 456Q491 467 491 499Z"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(736,0)"></path><path data-c="4C" d="M128 622Q121 629 117 631T101 634T58 637H25V683H36Q48 680 182 680Q324 680 348 683H360V637H333Q273 637 258 635T233 622L232 342V129Q232 57 237 52Q243 47 313 47Q384 47 410 53Q470 70 498 110T536 221Q536 226 537 238T540 261T542 272T562 273H582V268Q580 265 568 137T554 5V0H25V46H58Q100 47 109 49T128 61V622Z" transform="translate(1180,0)"></path><path data-c="55" d="M128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 418V291Q232 189 240 145T280 67Q325 24 389 24Q454 24 506 64T571 183Q575 206 575 410V598Q569 608 565 613T541 627T489 637H472V683H481Q496 680 598 680T715 683H724V637H707Q634 633 622 598L621 399Q620 194 617 180Q617 179 615 171Q595 83 531 31T389 -22Q304 -22 226 33T130 192Q129 201 128 412V622Z" transform="translate(1805,0)"></path></g><g data-mml-node="mo" transform="translate(9397.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(9786.6,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mn" transform="translate(977,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(11389.3,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mi" transform="translate(11889.6,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(12683.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(13684,0)"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mn" transform="translate(462,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(14549.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(15160.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(16161,0)"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mn" transform="translate(462,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container><p>Two fully connected layers with an activation function in between. Looks unremarkable, but recent Mechanistic Interpretability research has revealed an interesting division of labor:</p><p><strong>Attention handles information routing – deciding where to pull information from. FFN handles knowledge storage – the “facts” the model has memorized are largely encoded in FFN parameters.</strong></p><p>This means when you ask an LLM “What is the capital of France?”, Attention connects “France” and “capital,” while FFN “recalls” “Paris” from its parameters.</p><h2 id="Training-Objective-Almost-Too-Simple"><a href="#Training-Objective-Almost-Too-Simple" class="headerlink" title="Training Objective: Almost Too Simple"></a>Training Objective: Almost Too Simple</h2><p>The entire training process has a single objective: <strong>Next Token Prediction.</strong></p><p>Given the first n tokens, predict the n+1th. Compute the cross-entropy loss between the predicted probability distribution and the ground truth, backpropagate, update parameters.</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="34.49ex" height="6.73ex" role="img" focusable="false" viewBox="0 -1728.7 15244.5 2974.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="4C" d="M62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11Z"></path></g></g><g data-mml-node="mo" transform="translate(967.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(2023.6,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="munderover" transform="translate(2968.2,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(142.5,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="mo" transform="translate(361,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1139,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(473.1,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g><g data-mml-node="mi" transform="translate(4578.9,0)"><path data-c="6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(278,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(778,0)"></path></g><g data-mml-node="mo" transform="translate(5856.9,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mi" transform="translate(6023.6,0)"><path data-c="1D443" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mo" transform="translate(6774.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(7163.6,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,-150) scale(0.707)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g></g><g data-mml-node="mo" transform="translate(8073.8,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="msub" transform="translate(8351.8,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(9360.4,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(9805,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(10813.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mo" transform="translate(11258.3,0)"><path data-c="2026" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60Z"></path></g><g data-mml-node="mo" transform="translate(12596.9,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(13041.6,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="TeXAtom" transform="translate(605,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="mo" transform="translate(361,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(1139,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="mo" transform="translate(14855.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 670" width="100%" style="max-width:720px" font-family="system-ui, -apple-system, sans-serif">  <defs>    <marker id="arrow" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">      <path d="M0,0 L8,3 L0,6" fill="#555"></path>    </marker>    <marker id="arrow-red" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">      <path d="M0,0 L8,3 L0,6" fill="#c0392b"></path>    </marker>  </defs>  <!-- ===== Vocabulary ===== -->  <rect x="28" y="52" width="130" height="130" rx="8" fill="#f0f4ff" stroke="#4a6fa5" stroke-width="1.5"></rect>  <text x="93" y="72" text-anchor="middle" font-size="13" font-weight="bold" fill="#4a6fa5">Vocab V</text>  <text x="44" y="92" font-size="11" fill="#555">0 → "the"</text>  <text x="44" y="108" font-size="11" fill="#555">1 → "apple"</text>  <text x="44" y="124" font-size="11" fill="#555">2 → "sat"</text>  <text x="44" y="140" font-size="11" fill="#555">3 → "cat"</text>  <text x="44" y="158" font-size="11" fill="#999">… 50,000 tokens</text>  <text x="93" y="176" text-anchor="middle" font-size="10" fill="#888">built by tokenizer</text>  <!-- Arrow: Vocab → Embedding -->  <text x="93" y="208" text-anchor="middle" font-size="12" fill="#333">"apple" → id=1</text>  <line x1="93" y1="215" x2="93" y2="248" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Embedding Table ===== -->  <rect x="18" y="252" width="150" height="120" rx="8" fill="#e8f5e9" stroke="#2e7d32" stroke-width="1.5"></rect>  <text x="93" y="272" text-anchor="middle" font-size="13" font-weight="bold" fill="#2e7d32">Embedding Table</text>  <text x="93" y="290" text-anchor="middle" font-size="10" fill="#888">|V| × d matrix (learnable)</text>  <text x="34" y="310" font-size="10" fill="#555" font-family="monospace">0: [0.12, -0.45, ...]</text>  <text x="34" y="326" font-size="10" fill="#e65100" font-weight="bold" font-family="monospace">1: [0.83, 0.21, ...]</text>  <text x="34" y="342" font-size="10" fill="#555" font-family="monospace">2: [-0.31, 0.67, ...]</text>  <text x="34" y="358" font-size="10" fill="#999" font-family="monospace">…</text>  <!-- Arrow: Embedding → token vector x -->  <line x1="168" y1="312" x2="218" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Token Vector x ===== -->  <rect x="220" y="284" width="120" height="56" rx="8" fill="#fff8e1" stroke="#f57f17" stroke-width="1.5"></rect>  <text x="280" y="306" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">Vector x</text>  <text x="280" y="324" text-anchor="middle" font-size="10" fill="#888">[0.83, 0.21, …] d dims</text>  <text x="280" y="336" text-anchor="middle" font-size="9" fill="#aaa">static, context-free</text>  <!-- Arrow: x → Q/K/V Projection -->  <line x1="340" y1="312" x2="410" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Q/K/V Weight Matrices ===== -->  <rect x="412" y="230" width="180" height="166" rx="8" fill="#fff3e0" stroke="#e65100" stroke-width="1.5"></rect>  <text x="502" y="252" text-anchor="middle" font-size="13" font-weight="bold" fill="#e65100">Linear Projection (learnable)</text>  <rect x="424" y="262" width="156" height="34" rx="5" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>  <text x="502" y="276" text-anchor="middle" font-size="11" fill="#333" font-weight="bold">W_Q</text>  <text x="502" y="290" text-anchor="middle" font-size="9" fill="#888">d × d_k → Q = "what I seek"</text>  <rect x="424" y="302" width="156" height="34" rx="5" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>  <text x="502" y="316" text-anchor="middle" font-size="11" fill="#333" font-weight="bold">W_K</text>  <text x="502" y="330" text-anchor="middle" font-size="9" fill="#888">d × d_k → K = "what I offer"</text>  <rect x="424" y="342" width="156" height="34" rx="5" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>  <text x="502" y="356" text-anchor="middle" font-size="11" fill="#333" font-weight="bold">W_V</text>  <text x="502" y="370" text-anchor="middle" font-size="9" fill="#888">d × d_k → V = "actual content"</text>  <text x="502" y="392" text-anchor="middle" font-size="9" fill="#999">randomly initialized, updated by gradient</text>  <!-- Arrow: Q/K/V → Attention -->  <line x1="592" y1="312" x2="642" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Attention ===== -->  <rect x="644" y="274" width="130" height="76" rx="8" fill="#fce4ec" stroke="#c62828" stroke-width="1.5"></rect>  <text x="709" y="298" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">Attention</text>  <text x="709" y="316" text-anchor="middle" font-size="10" fill="#888">softmax(QK^T/sqrt(d))·V</text>  <text x="709" y="332" text-anchor="middle" font-size="10" fill="#888">context fusion</text>  <text x="709" y="346" text-anchor="middle" font-size="9" fill="#aaa">"apple" → fruit or company?</text>  <!-- Arrow: Attention → FFN -->  <line x1="774" y1="312" x2="814" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== FFN ===== -->  <rect x="816" y="284" width="110" height="56" rx="8" fill="#e8eaf6" stroke="#283593" stroke-width="1.5"></rect>  <text x="871" y="308" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">FFN</text>  <text x="871" y="326" text-anchor="middle" font-size="10" fill="#888">knowledge store</text>  <!-- ×N layers bracket -->  <rect x="634" y="264" width="302" height="96" rx="12" fill="none" stroke="#bbb" stroke-width="1" stroke-dasharray="5,4"></rect>  <text x="785" y="376" text-anchor="middle" font-size="11" fill="#999" font-style="italic">× N layers (12 ~ 96)</text>  <!-- Arrow: FFN → Output -->  <line x1="871" y1="340" x2="871" y2="410" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Output Layer ===== -->  <rect x="801" y="412" width="140" height="50" rx="8" fill="#f3e5f5" stroke="#6a1b9a" stroke-width="1.5"></rect>  <text x="871" y="434" text-anchor="middle" font-size="13" fill="#333">Output Layer</text>  <text x="871" y="450" text-anchor="middle" font-size="10" fill="#888">→ vocab probability dist.</text>  <!-- Arrow down -->  <line x1="871" y1="462" x2="871" y2="498" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- Prediction -->  <rect x="811" y="500" width="120" height="40" rx="8" fill="#e0f7fa" stroke="#00695c" stroke-width="1.5"></rect>  <text x="871" y="518" text-anchor="middle" font-size="12" fill="#333">Predict: "sat"</text>  <text x="871" y="533" text-anchor="middle" font-size="10" fill="#888">P("sat")=0.72</text>  <!-- Arrow: prediction → loss -->  <line x1="811" y1="520" x2="700" y2="520" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- Ground truth -->  <rect x="560" y="555" width="120" height="32" rx="6" fill="#f5f5f5" stroke="#999" stroke-width="1"></rect>  <text x="620" y="576" text-anchor="middle" font-size="11" fill="#666">Ground truth: "sat"</text>  <line x1="620" y1="555" x2="620" y2="540" stroke="#555" stroke-width="1" marker-end="url(#arrow)"></line>  <!-- Loss -->  <rect x="570" y="500" width="120" height="40" rx="8" fill="#ffebee" stroke="#c62828" stroke-width="1.5"></rect>  <text x="630" y="518" text-anchor="middle" font-size="13" font-weight="bold" fill="#c62828">Compute Loss</text>  <text x="630" y="533" text-anchor="middle" font-size="10" fill="#c62828">cross-entropy</text>  <!-- Arrow: loss → backprop -->  <line x1="570" y1="520" x2="460" y2="520" stroke="#c0392b" stroke-width="1.5" marker-end="url(#arrow-red)"></line>  <!-- Backprop -->  <rect x="240" y="500" width="220" height="40" rx="8" fill="#ffcdd2" stroke="#c62828" stroke-width="1.5"></rect>  <text x="350" y="518" text-anchor="middle" font-size="12" font-weight="bold" fill="#c62828">Backprop → update all params θ</text>  <text x="350" y="533" text-anchor="middle" font-size="9" fill="#c62828">Embedding · W_Q · W_K · W_V · W_FFN ...</text>  <!-- Backprop arrows back to learnable components -->  <line x1="300" y1="500" x2="135" y2="375" stroke="#c0392b" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-red)"></line>  <line x1="420" y1="500" x2="502" y2="398" stroke="#c0392b" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-red)"></line>  <!-- Params theta label -->  <rect x="28" y="416" width="184" height="50" rx="6" fill="#fff" stroke="#c0392b" stroke-width="1" stroke-dasharray="3,3"></rect>  <text x="120" y="436" text-anchor="middle" font-size="11" fill="#c62828" font-weight="bold">Params θ = all learnable weights</text>  <text x="120" y="452" text-anchor="middle" font-size="9" fill="#c62828">Training = tuning θ so f_θ(X)≈Y</text>  <!-- Legend (centered) -->  <g transform="translate(220, 640)">    <line x1="0" y1="0" x2="30" y2="0" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>    <text x="38" y="4" font-size="11" fill="#666">Forward pass</text>    <line x1="130" y1="0" x2="160" y2="0" stroke="#c0392b" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-red)"></line>    <text x="168" y="4" font-size="11" fill="#c0392b">Backpropagation</text>    <rect x="270" y="-8" width="14" height="14" rx="3" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>    <text x="292" y="4" font-size="11" fill="#666">Learnable params</text>    <rect x="390" y="-8" width="14" height="14" rx="3" fill="#f0f4ff" stroke="#4a6fa5" stroke-width="1"></rect>    <text x="412" y="4" font-size="11" fill="#666">Fixed components</text>  </g></svg><p>That’s the only objective. Nobody teaches it grammar, logic, or how to write code. Yet when the model is large enough and the data abundant enough, these capabilities “emerge.”</p><p>Why? Because to accurately predict the next token, you must understand context. To understand context, you implicitly learn grammar, semantics, logic, common sense, and even world knowledge. <strong>Predicting the next word is the ultimate compression of language understanding.</strong></p><h2 id="So-What-Is-“Intelligence”"><a href="#So-What-Is-“Intelligence”" class="headerlink" title="So What Is “Intelligence”?"></a>So What Is “Intelligence”?</h2><p>Back to the opening thesis: an LLM is a function.</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.464ex;" xmlns="http://www.w3.org/2000/svg" width="18.762ex" height="2.597ex" role="img" focusable="false" viewBox="0 -943 8292.9 1148"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mi" transform="translate(523,-150) scale(0.707)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g><g data-mml-node="mo" transform="translate(1182.4,0)"><path data-c="3A" d="M78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z"></path></g><g data-mml-node="msup" transform="translate(1738.2,0)"><g data-mml-node="mtext"><path data-c="54" d="M36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(722,0)"></path><path data-c="6B" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36Z" transform="translate(1222,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1750,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(2194,0)"></path></g><g data-mml-node="mi" transform="translate(2783,421.1) scale(0.707)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(5273.2,0)"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g><g data-mml-node="msup" transform="translate(6551,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="211D" d="M17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(755,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mi" transform="translate(278,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g><g data-mml-node="mo" transform="translate(1047,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g></g></g></g></g></svg></mjx-container><p>Billions to hundreds of billions of parameters <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.023ex;" xmlns="http://www.w3.org/2000/svg" width="1.061ex" height="1.618ex" role="img" focusable="false" viewBox="0 -705 469 715"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g></g></svg></mjx-container>, trained on massive data, mapping token sequences to probability distributions over the vocabulary. A single forward pass, pure matrix operations, no side effects, deterministic output.</p><p>What about conversation? It’s just autoregressive invocation of this function – append the previous output to the input and call it again. Temperature and Top-p sampling introduce randomness, but that’s an inference-stage engineering choice, not a property of the model itself.</p><p>This isn’t diminishing LLMs. Quite the opposite. <strong>The fact that a system “merely” doing function approximation can exhibit behavior that looks like reasoning, like creativity, like understanding – that is what’s truly awe-inspiring.</strong></p><p>Conway’s Game of Life is also a function – a few simple rules that evolve into infinitely complex patterns. LLMs are similar: a simple training objective, through a sufficiently large parameter space and enough data, gives rise to capabilities that exceed intuition.</p><h2 id="The-Value-of-Demystification"><a href="#The-Value-of-Demystification" class="headerlink" title="The Value of Demystification"></a>The Value of Demystification</h2><p>Understanding “LLMs are functions” has practical value.</p><p>It lets you stop treating LLM errors as “AI is unreliable” and instead understand them as the function’s poor fit in certain input regions. It helps you see what Prompt Engineering actually does – adjusting the input vector’s position in high-dimensional space so it lands in a region where the function fits well. It helps you understand why the Context Window has a limit – it’s not just a technical constraint, but a consequence of Attention’s <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="5.832ex" height="2.452ex" role="img" focusable="false" viewBox="0 -833.9 2577.6 1083.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D442" d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"></path></g><g data-mml-node="mo" transform="translate(763,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(1152,0)"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(633,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(2188.6,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container> computational complexity.</p><p><strong>No need for reverence. No need for fear. What’s needed is understanding.</strong> When you know what’s under the hood, you can push it to its limits.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;A while back, my son asked me: “Dad, how does ChatGPT know what to say?”&lt;/p&gt;
&lt;p&gt;I decided to give a real answer. Not a hand-wavy “it’s</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Machine Learning" scheme="https://johnsonlee.io/tags/Machine-Learning/"/>
    
    <category term="Transformer" scheme="https://johnsonlee.io/tags/Transformer/"/>
    
    <category term="Deep Learning" scheme="https://johnsonlee.io/tags/Deep-Learning/"/>
    
  </entry>
  
  <entry>
    <title>LLM 的本质——函数</title>
    <link href="https://johnsonlee.io/2026/02/25/llm-is-a-function/"/>
    <id>https://johnsonlee.io/2026/02/25/llm-is-a-function/</id>
    <published>2026-02-25T12:21:03.000Z</published>
    <updated>2026-02-25T12:21:03.000Z</updated>
    
    <content type="html"><![CDATA[<p>前段时间，儿子问我：“爸爸，ChatGPT 是怎么知道该说什么的？”</p><p>我决定认真回答这个问题。不是敷衍一句“它很聪明”，而是真的把 LLM 的原理拆给他看。于是做了一套 PPT —— <a href="https://llm.johnsonlee.io/">LLM for Kids</a>，从 Token、Embedding 一路讲到 Attention、Transformer，用“小猫坐在垫子上”当例句，用“成绩单”和“画饼图”当类比。</p><p>做完这套 PPT，我自己的收获比预期大得多。当你必须把一个概念解释到小学生能懂的程度，你就被迫剥掉所有术语的包装，直面本质。</p><p>而这个本质，简单到让人意外：</p><p><strong>LLM 就是一个函数。</strong></p><p>不是比喻，不是类比，是数学意义上的函数。输入一组 Token，输出一个概率分布。所有让人觉得“AI 好像在思考”的行为，都是这个函数反复调用自身的结果。</p><h2 id="从一个-d-维空间说起"><a href="#从一个-d-维空间说起" class="headerlink" title="从一个 d 维空间说起"></a>从一个 d 维空间说起</h2><p>训练一个 LLM，第一步是假设一个 d 维空间的存在。d 可以是 4096，可以是 8192，具体多少取决于模型设计。</p><p>每个 Token——一个词、一个子词、一个标点——被映射成这个空间里的一个向量。这步操作叫 Embedding，本质上就是一张查找表：Token ID 进去，d 维向量出来。</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.466ex;" xmlns="http://www.w3.org/2000/svg" width="27.767ex" height="2.511ex" role="img" focusable="false" viewBox="0 -903.7 12272.8 1109.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="45" d="M128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619Z"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(681,0)"></path><path data-c="62" d="M307 -11Q234 -11 168 55L158 37Q156 34 153 28T147 17T143 10L138 1L118 0H98V298Q98 599 97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V543Q179 391 180 391L183 394Q186 397 192 401T207 411T228 421T254 431T286 439T323 442Q401 442 461 379T522 216Q522 115 458 52T307 -11ZM182 98Q182 97 187 90T196 79T206 67T218 55T233 44T250 35T271 29T295 26Q330 26 363 46T412 113Q424 148 424 212Q424 287 412 323Q385 405 300 405Q270 405 239 390T188 347L182 339V98Z" transform="translate(1514,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(2070,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(2514,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(3070,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(3626,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(3904,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(4460,0)"></path></g><g data-mml-node="mo" transform="translate(5237.8,0)"><path data-c="3A" d="M78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z"></path></g><g data-mml-node="mrow" transform="translate(5793.6,0)"><g data-mml-node="mtext"><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(389,0)"></path><path data-c="6B" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36Z" transform="translate(889,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1417,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1861,0)"></path><path data-c="5F" d="M0 -62V-25H499V-62H0Z" transform="translate(2417,0)"></path></g><g data-mml-node="mtext" transform="translate(2917,0)"><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(278,0)"></path></g></g><g data-mml-node="mo" transform="translate(9822.3,0)"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g><g data-mml-node="msup" transform="translate(11100.1,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="211D" d="M17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243Z"></path></g></g><g data-mml-node="mi" transform="translate(755,413) scale(0.707)"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g></g></g></g></svg></mjx-container><p>训练之前，这些向量是随机初始化的。“猫”和“狗”可能离得很远，“猫”和“利率”可能紧挨着。但训练结束后，语义相近的词会被拉到附近——不是人工设定的，是梯度下降自己调出来的。</p><p><strong>词的“意思”，就是它在高维空间里的位置。</strong></p><h2 id="Attention：动态路由"><a href="#Attention：动态路由" class="headerlink" title="Attention：动态路由"></a>Attention：动态路由</h2><p>但这里有个问题：Embedding 给每个 token 的是一个<strong>静态的、与上下文无关的</strong>位置。“苹果”不管出现在“我吃了一个苹果”还是“苹果发布了新 iPhone”，查表拿到的向量是同一个——它只编码了“苹果”的平均语义，不知道在当前这句话里它到底是水果还是公司。</p><p>Attention 做的就是：<strong>根据上下文，动态调整每个 token 的表示。</strong> Embedding 是给每个 token 分配一个“默认人设”，Attention 是让它们互相交流之后，根据语境各自调整。没有 Attention，每个词都活在自己的世界里，不知道邻居是谁。</p><p>对于序列中的每个位置，Attention 回答一个问题：<strong>我应该关注谁？关注多少？</strong></p><p>数学上，它把每个向量变换成三个角色：</p><ul><li><strong>Q（Query）</strong>：我在找什么</li><li><strong>K（Key）</strong>：我能提供什么</li><li><strong>V（Value）</strong>：我实际的内容</li></ul><p>然后用一个公式完成匹配和聚合：</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.308ex;" xmlns="http://www.w3.org/2000/svg" width="41.428ex" height="5.741ex" role="img" focusable="false" viewBox="0 -1517.7 18311.4 2537.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="41" d="M255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447Z"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(750,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1139,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1528,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1972,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2528,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2917,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(3195,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(3695,0)"></path></g><g data-mml-node="mo" transform="translate(4251,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(4640,0)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(5431,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(5875.7,0)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(6764.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(7209.3,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g><g data-mml-node="mo" transform="translate(7978.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(8645.1,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mtext" transform="translate(9700.9,0)"><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(394,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(894,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1200,0)"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1589,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(2422,0)"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(2922,0)"></path></g><g data-mml-node="mrow" transform="translate(13317.6,0)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="28" d="M701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940Z"></path></g><g data-mml-node="mfrac" transform="translate(736,0)"><g data-mml-node="mrow" transform="translate(220,676)"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="msup" transform="translate(791,0)"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mi" transform="translate(974,363) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g><g data-mml-node="msqrt" transform="translate(464.2,-855.6)"><g transform="translate(853,0)"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mi" transform="translate(553,-150) scale(0.707)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g><g data-mml-node="mo" transform="translate(0,35.6)"><path data-c="221A" d="M95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178Z"></path></g><rect width="971.4" height="60" x="853" y="775.6"></rect></g><rect width="2512.8" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(3488.8,0) translate(0 -0.5)"><path data-c="29" d="M34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438Z"></path></g></g><g data-mml-node="mi" transform="translate(17542.4,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="5.233ex" height="2.343ex" role="img" focusable="false" viewBox="0 -841.7 2312.8 1035.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="msup" transform="translate(791,0)"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mi" transform="translate(974,363) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g></g></svg></mjx-container> 算的是每对位置之间的相关性分数。<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.372ex;" xmlns="http://www.w3.org/2000/svg" width="4.128ex" height="2.398ex" role="img" focusable="false" viewBox="0 -895.6 1824.4 1060"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msqrt"><g transform="translate(853,0)"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mi" transform="translate(553,-150) scale(0.707)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g><g data-mml-node="mo" transform="translate(0,35.6)"><path data-c="221A" d="M95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178Z"></path></g><rect width="971.4" height="60" x="853" y="775.6"></rect></g></g></g></svg></mjx-container> 是个缩放因子，防止点积过大导致 softmax 输出趋近 one-hot（梯度消失）。softmax 把分数归一化成权重，再用权重对 V 做加权求和。<p>一句话概括：<strong>Attention 就是一个可学习的、动态的加权求和。</strong></p><p>Multi-Head Attention 则是同时做多组这样的运算。每个 Head 学到不同的关注模式——有的关注语法依赖，有的关注语义相似，有的关注位置距离。最后把多个 Head 的结果拼起来，过一个线性变换。</p><h2 id="FFN：知识仓库"><a href="#FFN：知识仓库" class="headerlink" title="FFN：知识仓库"></a>FFN：知识仓库</h2><p>每个 Transformer Block 里，Attention 之后紧跟一个 Feed-Forward Network（FFN）：</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="38.522ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 17026.5 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="46" d="M128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z"></path><path data-c="46" d="M128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z" transform="translate(653,0)"></path><path data-c="4E" d="M42 46Q74 48 94 56T118 69T128 86V634H124Q114 637 52 637H25V683H232L235 680Q237 679 322 554T493 303L578 178V598Q572 608 568 613T544 627T492 637H475V683H483Q498 680 600 680Q706 680 715 683H724V637H707Q634 633 622 598L621 302V6L614 0H600Q585 0 582 3T481 150T282 443T171 605V345L172 86Q183 50 257 46H274V0H265Q250 3 150 3Q48 3 33 0H25V46H42Z" transform="translate(1306,0)"></path></g><g data-mml-node="mo" transform="translate(2056,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(2445,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(3017,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(3683.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msub" transform="translate(4739.6,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mn" transform="translate(977,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(6342.3,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mtext" transform="translate(6842.6,0)"><path data-c="52" d="M130 622Q123 629 119 631T103 634T60 637H27V683H202H236H300Q376 683 417 677T500 648Q595 600 609 517Q610 512 610 501Q610 468 594 439T556 392T511 361T472 343L456 338Q459 335 467 332Q497 316 516 298T545 254T559 211T568 155T578 94Q588 46 602 31T640 16H645Q660 16 674 32T692 87Q692 98 696 101T712 105T728 103T732 90Q732 59 716 27T672 -16Q656 -22 630 -22Q481 -16 458 90Q456 101 456 163T449 246Q430 304 373 320L363 322L297 323H231V192L232 61Q238 51 249 49T301 46H334V0H323Q302 3 181 3Q59 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM491 499V509Q491 527 490 539T481 570T462 601T424 623T362 636Q360 636 340 636T304 637H283Q238 637 234 628Q231 624 231 492V360H289Q390 360 434 378T489 456Q491 467 491 499Z"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(736,0)"></path><path data-c="4C" d="M128 622Q121 629 117 631T101 634T58 637H25V683H36Q48 680 182 680Q324 680 348 683H360V637H333Q273 637 258 635T233 622L232 342V129Q232 57 237 52Q243 47 313 47Q384 47 410 53Q470 70 498 110T536 221Q536 226 537 238T540 261T542 272T562 273H582V268Q580 265 568 137T554 5V0H25V46H58Q100 47 109 49T128 61V622Z" transform="translate(1180,0)"></path><path data-c="55" d="M128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H302Q262 636 251 634T233 622L232 418V291Q232 189 240 145T280 67Q325 24 389 24Q454 24 506 64T571 183Q575 206 575 410V598Q569 608 565 613T541 627T489 637H472V683H481Q496 680 598 680T715 683H724V637H707Q634 633 622 598L621 399Q620 194 617 180Q617 179 615 171Q595 83 531 31T389 -22Q304 -22 226 33T130 192Q129 201 128 412V622Z" transform="translate(1805,0)"></path></g><g data-mml-node="mo" transform="translate(9397.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(9786.6,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mn" transform="translate(977,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(11389.3,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mi" transform="translate(11889.6,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(12683.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(13684,0)"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mn" transform="translate(462,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(14549.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(15160.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="msub" transform="translate(16161,0)"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mn" transform="translate(462,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container><p>两层全连接，中间一个激活函数。看起来平平无奇，但近年来 Mechanistic Interpretability 研究揭示了一个有趣的分工：</p><p><strong>Attention 负责信息路由——决定从哪里取信息。FFN 负责知识存储——模型记住的“事实”大量编码在 FFN 的参数里。</strong></p><p>这意味着当你问 LLM“法国的首都是什么”，Attention 负责把“法国”和“首都”关联起来，FFN 负责从参数里“回忆”出“巴黎”。</p><h2 id="训练目标：简单到不像话"><a href="#训练目标：简单到不像话" class="headerlink" title="训练目标：简单到不像话"></a>训练目标：简单到不像话</h2><p>整个训练过程的目标只有一个：<strong>Next Token Prediction。</strong></p><p>给定前 n 个 Token，预测第 n+1 个。计算预测的概率分布和真实分布之间的交叉熵损失，反向传播，更新参数。</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.819ex;" xmlns="http://www.w3.org/2000/svg" width="34.49ex" height="6.73ex" role="img" focusable="false" viewBox="0 -1728.7 15244.5 2974.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="4C" d="M62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11Z"></path></g></g><g data-mml-node="mo" transform="translate(967.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(2023.6,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="munderover" transform="translate(2968.2,0)"><g data-mml-node="mo"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(142.5,-1087.9) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="mo" transform="translate(361,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1139,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(473.1,1150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g><g data-mml-node="mi" transform="translate(4578.9,0)"><path data-c="6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(278,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(778,0)"></path></g><g data-mml-node="mo" transform="translate(5856.9,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mi" transform="translate(6023.6,0)"><path data-c="1D443" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mo" transform="translate(6774.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(7163.6,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mi" transform="translate(605,-150) scale(0.707)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g></g><g data-mml-node="mo" transform="translate(8073.8,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="msub" transform="translate(8351.8,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(9360.4,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(9805,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mn" transform="translate(605,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(10813.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mo" transform="translate(11258.3,0)"><path data-c="2026" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60Z"></path></g><g data-mml-node="mo" transform="translate(12596.9,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(13041.6,0)"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="TeXAtom" transform="translate(605,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="mo" transform="translate(361,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(1139,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="mo" transform="translate(14855.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 670" width="100%" style="max-width:720px" font-family="system-ui, -apple-system, sans-serif">  <defs>    <marker id="arrow" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">      <path d="M0,0 L8,3 L0,6" fill="#555"></path>    </marker>    <marker id="arrow-red" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">      <path d="M0,0 L8,3 L0,6" fill="#c0392b"></path>    </marker>  </defs>  <!-- ===== 词表 (Vocabulary) ===== -->  <rect x="28" y="52" width="130" height="130" rx="8" fill="#f0f4ff" stroke="#4a6fa5" stroke-width="1.5"></rect>  <text x="93" y="72" text-anchor="middle" font-size="13" font-weight="bold" fill="#4a6fa5">词表 V</text>  <text x="44" y="92" font-size="11" fill="#555">0 → "的"</text>  <text x="44" y="108" font-size="11" fill="#555">1 → "苹果"</text>  <text x="44" y="124" font-size="11" fill="#555">2 → "坐"</text>  <text x="44" y="140" font-size="11" fill="#555">3 → "猫"</text>  <text x="44" y="158" font-size="11" fill="#999">… 50,000 个</text>  <text x="93" y="176" text-anchor="middle" font-size="10" fill="#888">tokenizer 生成</text>  <!-- Arrow: 词表 → Embedding -->  <text x="93" y="208" text-anchor="middle" font-size="12" fill="#333">"苹果" → id=1</text>  <line x1="93" y1="215" x2="93" y2="248" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Embedding 表 ===== -->  <rect x="18" y="252" width="150" height="120" rx="8" fill="#e8f5e9" stroke="#2e7d32" stroke-width="1.5"></rect>  <text x="93" y="272" text-anchor="middle" font-size="13" font-weight="bold" fill="#2e7d32">Embedding 表</text>  <text x="93" y="290" text-anchor="middle" font-size="10" fill="#888">|V| × d 矩阵（可学习）</text>  <text x="34" y="310" font-size="10" fill="#555" font-family="monospace">0: [0.12, -0.45, ...]</text>  <text x="34" y="326" font-size="10" fill="#e65100" font-weight="bold" font-family="monospace">1: [0.83, 0.21, ...]</text>  <text x="34" y="342" font-size="10" fill="#555" font-family="monospace">2: [-0.31, 0.67, ...]</text>  <text x="34" y="358" font-size="10" fill="#999" font-family="monospace">…</text>  <!-- Arrow: Embedding → token vector x -->  <line x1="168" y1="312" x2="218" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Token 向量 x ===== -->  <rect x="220" y="284" width="120" height="56" rx="8" fill="#fff8e1" stroke="#f57f17" stroke-width="1.5"></rect>  <text x="280" y="306" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">向量 x</text>  <text x="280" y="324" text-anchor="middle" font-size="10" fill="#888">[0.83, 0.21, …] d 维</text>  <text x="280" y="336" text-anchor="middle" font-size="9" fill="#aaa">静态，与上下文无关</text>  <!-- Arrow: x → Q/K/V 投影 -->  <line x1="340" y1="312" x2="410" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Q/K/V 权重矩阵 ===== -->  <rect x="412" y="230" width="180" height="166" rx="8" fill="#fff3e0" stroke="#e65100" stroke-width="1.5"></rect>  <text x="502" y="252" text-anchor="middle" font-size="13" font-weight="bold" fill="#e65100">线性投影（可学习）</text>  <rect x="424" y="262" width="156" height="34" rx="5" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>  <text x="502" y="276" text-anchor="middle" font-size="11" fill="#333" font-weight="bold">W_Q</text>  <text x="502" y="290" text-anchor="middle" font-size="9" fill="#888">d × d_k → Q ="我在找什么"</text>  <rect x="424" y="302" width="156" height="34" rx="5" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>  <text x="502" y="316" text-anchor="middle" font-size="11" fill="#333" font-weight="bold">W_K</text>  <text x="502" y="330" text-anchor="middle" font-size="9" fill="#888">d × d_k → K ="我能提供什么"</text>  <rect x="424" y="342" width="156" height="34" rx="5" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>  <text x="502" y="356" text-anchor="middle" font-size="11" fill="#333" font-weight="bold">W_V</text>  <text x="502" y="370" text-anchor="middle" font-size="9" fill="#888">d × d_k → V ="实际内容"</text>  <text x="502" y="392" text-anchor="middle" font-size="9" fill="#999">训练前随机初始化，训练中梯度更新</text>  <!-- Arrow: Q/K/V → Attention -->  <line x1="592" y1="312" x2="642" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== Attention ===== -->  <rect x="644" y="274" width="130" height="76" rx="8" fill="#fce4ec" stroke="#c62828" stroke-width="1.5"></rect>  <text x="709" y="298" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">Attention</text>  <text x="709" y="316" text-anchor="middle" font-size="10" fill="#888">softmax(QKᵀ/√d)·V</text>  <text x="709" y="332" text-anchor="middle" font-size="10" fill="#888">上下文融合</text>  <text x="709" y="346" text-anchor="middle" font-size="9" fill="#aaa">"苹果"→ 水果 or 公司?</text>  <!-- Arrow: Attention → FFN -->  <line x1="774" y1="312" x2="814" y2="312" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== FFN ===== -->  <rect x="816" y="284" width="110" height="56" rx="8" fill="#e8eaf6" stroke="#283593" stroke-width="1.5"></rect>  <text x="871" y="308" text-anchor="middle" font-size="13" font-weight="bold" fill="#333">FFN</text>  <text x="871" y="326" text-anchor="middle" font-size="10" fill="#888">知识存储</text>  <!-- ×N layers bracket -->  <rect x="634" y="264" width="302" height="96" rx="12" fill="none" stroke="#bbb" stroke-width="1" stroke-dasharray="5,4"></rect>  <text x="785" y="376" text-anchor="middle" font-size="11" fill="#999" font-style="italic">× N 层（12 ~ 96 层）</text>  <!-- Arrow: FFN → 输出 -->  <line x1="871" y1="340" x2="871" y2="410" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- ===== 输出层 ===== -->  <rect x="801" y="412" width="140" height="50" rx="8" fill="#f3e5f5" stroke="#6a1b9a" stroke-width="1.5"></rect>  <text x="871" y="434" text-anchor="middle" font-size="13" fill="#333">输出层</text>  <text x="871" y="450" text-anchor="middle" font-size="10" fill="#888">→ 词表概率分布</text>  <!-- Arrow down -->  <line x1="871" y1="462" x2="871" y2="498" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- Prediction -->  <rect x="811" y="500" width="120" height="40" rx="8" fill="#e0f7fa" stroke="#00695c" stroke-width="1.5"></rect>  <text x="871" y="518" text-anchor="middle" font-size="12" fill="#333">预测："坐"</text>  <text x="871" y="533" text-anchor="middle" font-size="10" fill="#888">P("坐")=0.72</text>  <!-- Arrow: prediction → loss -->  <line x1="811" y1="520" x2="700" y2="520" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>  <!-- Ground truth -->  <rect x="560" y="555" width="120" height="32" rx="6" fill="#f5f5f5" stroke="#999" stroke-width="1"></rect>  <text x="620" y="576" text-anchor="middle" font-size="11" fill="#666">真实答案："坐"</text>  <line x1="620" y1="555" x2="620" y2="540" stroke="#555" stroke-width="1" marker-end="url(#arrow)"></line>  <!-- Loss -->  <rect x="570" y="500" width="120" height="40" rx="8" fill="#ffebee" stroke="#c62828" stroke-width="1.5"></rect>  <text x="630" y="518" text-anchor="middle" font-size="13" font-weight="bold" fill="#c62828">计算损失</text>  <text x="630" y="533" text-anchor="middle" font-size="10" fill="#c62828">交叉熵</text>  <!-- Arrow: loss → backprop -->  <line x1="570" y1="520" x2="460" y2="520" stroke="#c0392b" stroke-width="1.5" marker-end="url(#arrow-red)"></line>  <!-- Backprop -->  <rect x="240" y="500" width="220" height="40" rx="8" fill="#ffcdd2" stroke="#c62828" stroke-width="1.5"></rect>  <text x="350" y="518" text-anchor="middle" font-size="12" font-weight="bold" fill="#c62828">反向传播 → 更新所有参数 θ</text>  <text x="350" y="533" text-anchor="middle" font-size="9" fill="#c62828">Embedding 表 · W_Q · W_K · W_V · W_FFN ...</text>  <!-- Backprop arrows back to learnable components -->  <line x1="300" y1="500" x2="135" y2="375" stroke="#c0392b" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-red)"></line>  <line x1="420" y1="500" x2="502" y2="398" stroke="#c0392b" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-red)"></line>  <!-- 参数 theta label -->  <rect x="28" y="416" width="184" height="50" rx="6" fill="#fff" stroke="#c0392b" stroke-width="1" stroke-dasharray="3,3"></rect>  <text x="120" y="436" text-anchor="middle" font-size="11" fill="#c62828" font-weight="bold">参数 θ = 全部可学习的权重</text>  <text x="120" y="452" text-anchor="middle" font-size="9" fill="#c62828">训练就是在调 θ，让 f_θ(X)≈Y</text>  <!-- Legend (centered) -->  <g transform="translate(220, 640)">    <line x1="0" y1="0" x2="30" y2="0" stroke="#555" stroke-width="1.5" marker-end="url(#arrow)"></line>    <text x="38" y="4" font-size="11" fill="#666">前向传播</text>    <line x1="130" y1="0" x2="160" y2="0" stroke="#c0392b" stroke-width="1.5" stroke-dasharray="5,3" marker-end="url(#arrow-red)"></line>    <text x="168" y="4" font-size="11" fill="#c0392b">反向传播</text>    <rect x="270" y="-8" width="14" height="14" rx="3" fill="#ffe0b2" stroke="#e65100" stroke-width="1"></rect>    <text x="292" y="4" font-size="11" fill="#666">可学习参数</text>    <rect x="390" y="-8" width="14" height="14" rx="3" fill="#f0f4ff" stroke="#4a6fa5" stroke-width="1"></rect>    <text x="412" y="4" font-size="11" fill="#666">固定组件</text>  </g></svg><p>就这么一个目标。没有人教它语法，没有人教它逻辑，没有人教它写代码。但当模型足够大、数据足够多，这些能力就“涌现”了。</p><p>为什么？因为要准确预测下一个 Token，你必须理解上下文。要理解上下文，你就得隐式地学会语法、语义、逻辑、常识、甚至世界知识。<strong>预测下一个词，是对语言理解能力的极致压缩。</strong></p><h2 id="那“智能”是什么？"><a href="#那“智能”是什么？" class="headerlink" title="那“智能”是什么？"></a>那“智能”是什么？</h2><p>回到开头的论点：LLM 就是一个函数。</p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.464ex;" xmlns="http://www.w3.org/2000/svg" width="18.762ex" height="2.597ex" role="img" focusable="false" viewBox="0 -943 8292.9 1148"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mi" transform="translate(523,-150) scale(0.707)"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g><g data-mml-node="mo" transform="translate(1182.4,0)"><path data-c="3A" d="M78 370Q78 394 95 412T138 430Q162 430 180 414T199 371Q199 346 182 328T139 310T96 327T78 370ZM78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z"></path></g><g data-mml-node="msup" transform="translate(1738.2,0)"><g data-mml-node="mtext"><path data-c="54" d="M36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(722,0)"></path><path data-c="6B" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T97 124T98 167T98 217T98 272T98 329Q98 366 98 407T98 482T98 542T97 586T97 603Q94 622 83 628T38 637H20V660Q20 683 22 683L32 684Q42 685 61 686T98 688Q115 689 135 690T165 693T176 694H179V463L180 233L240 287Q300 341 304 347Q310 356 310 364Q310 383 289 385H284V431H293Q308 428 412 428Q475 428 484 431H489V385H476Q407 380 360 341Q286 278 286 274Q286 273 349 181T420 79Q434 60 451 53T500 46H511V0H505Q496 3 418 3Q322 3 307 0H299V46H306Q330 48 330 65Q330 72 326 79Q323 84 276 153T228 222L176 176V120V84Q176 65 178 59T189 49Q210 46 238 46H254V0H246Q231 3 137 3T28 0H20V46H36Z" transform="translate(1222,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1750,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(2194,0)"></path></g><g data-mml-node="mi" transform="translate(2783,421.1) scale(0.707)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(5273.2,0)"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g><g data-mml-node="msup" transform="translate(6551,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="211D" d="M17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(755,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mi" transform="translate(278,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g><g data-mml-node="mo" transform="translate(1047,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g></g></g></g></g></svg></mjx-container><p>几十亿到几千亿个参数 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.023ex;" xmlns="http://www.w3.org/2000/svg" width="1.061ex" height="1.618ex" role="img" focusable="false" viewBox="0 -705 469 715"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D703" d="M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z"></path></g></g></g></svg></mjx-container>，通过海量数据训练出来，将 Token 序列映射到词表上的概率分布。单次 forward pass，纯矩阵运算，无副作用，确定性输出。</p><p>那对话呢？不过是这个函数的自回归调用——上一步的输出拼到输入末尾，再调一次。Temperature 和 Top-p 采样引入了随机性，但那是推理阶段的工程选择，不是模型本身的属性。</p><p>这不是在贬低 LLM。恰恰相反，<strong>一个“仅仅”做函数拟合的系统，能涌现出看起来像推理、像创造、像理解的行为，这件事本身才是真正值得敬畏的。</strong></p><p>Conway 的生命游戏也是函数——几条简单规则，却能演化出无限复杂的图案。LLM 类似：简单的训练目标，通过足够大的参数空间和数据，涌现出超出直觉的能力。</p><h2 id="去神秘化的意义"><a href="#去神秘化的意义" class="headerlink" title="去神秘化的意义"></a>去神秘化的意义</h2><p>理解“LLM 是函数”，有实际价值：</p><p>它让你不再把 LLM 的错误当成“AI 不靠谱”，而是理解为函数在某些输入区域的拟合不够好。它让你知道 Prompt Engineering 在做什么——调整输入向量在高维空间中的位置，让它落到函数拟合得好的区域里。它让你理解为什么 Context Window 有上限——不是技术限制那么简单，而是 Attention 的计算复杂度是 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="5.832ex" height="2.452ex" role="img" focusable="false" viewBox="0 -833.9 2577.6 1083.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D442" d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"></path></g><g data-mml-node="mo" transform="translate(763,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msup" transform="translate(1152,0)"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(633,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(2188.6,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container>。</p><p><strong>不需要敬畏，不需要恐惧，需要的是理解。</strong> 当你知道引擎盖下面是什么，你才能把它用到极致。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;前段时间，儿子问我：“爸爸，ChatGPT 是怎么知道该说什么的？”&lt;/p&gt;
&lt;p&gt;我决定认真回答这个问题。不是敷衍一句“它很聪明”，而是真的把 LLM 的原理拆给他看。于是做了一套 PPT —— &lt;a</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Machine Learning" scheme="https://johnsonlee.io/tags/Machine-Learning/"/>
    
    <category term="Transformer" scheme="https://johnsonlee.io/tags/Transformer/"/>
    
    <category term="Deep Learning" scheme="https://johnsonlee.io/tags/Deep-Learning/"/>
    
  </entry>
  
  <entry>
    <title>Inception via AI: The Tetris Effect of Conversations</title>
    <link href="https://johnsonlee.io/2026/02/25/tetris-effect-of-ai-conversations.en/"/>
    <id>https://johnsonlee.io/2026/02/25/tetris-effect-of-ai-conversations.en/</id>
    <published>2026-02-25T08:20:00.000Z</published>
    <updated>2026-02-25T08:20:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>After half a month of intense AI usage, I – someone who rarely dreams – started dreaming about talking to AI every single night. Not once or twice. Every night, without fail. My first reaction when I noticed was: has AI somehow infiltrated my brain? Turns out I’m not alone, and there’s a proper name for it – the <strong>Tetris Effect</strong>. But the deeper I dug, the more I felt “Tetris Effect” understates what’s happening. Tetris just makes you see falling blocks when you close your eyes. What AI does is closer to <em>Inception</em> – it doesn’t merely linger in your senses; it reshapes how you think, without you ever noticing. A gentle, gradual inception that you actively cooperate with.</p><h2 id="The-Brain-Doesn’t-Know-How-to-Clock-Out"><a href="#The-Brain-Doesn’t-Know-How-to-Clock-Out" class="headerlink" title="The Brain Doesn’t Know How to Clock Out"></a>The Brain Doesn’t Know How to Clock Out</h2><p>The Tetris Effect was first documented in the 1990s: subjects who played Tetris for hours would see falling blocks with their eyes closed, even continuing to play in their dreams. Researchers later found this isn’t unique to Tetris – any high-intensity repetitive cognitive activity triggers the same phenomenon. Surgeons dream of operations, programmers dream of debugging, chess players dream of board positions.</p><p>The mechanism is well understood: during REM sleep, the brain “replays” neural circuits that were heavily used during the day, consolidating short-term memories into long-term ones. <strong>Whichever circuit you activate most during the day is the one your brain replays at night.</strong></p><p>What does the AI conversation circuit look like? Formulate a question, craft a prompt, read the output, evaluate quality, iterate. One cycle takes maybe two or three minutes, and you can easily do dozens or hundreds in a day. That frequency exceeds coding, meetings, even scrolling social media.</p><h2 id="AI-Is-a-More-Sophisticated-“Dream-Architect”"><a href="#AI-Is-a-More-Sophisticated-“Dream-Architect”" class="headerlink" title="AI Is a More Sophisticated “Dream Architect”"></a>AI Is a More Sophisticated “Dream Architect”</h2><p>In <em>Inception</em>, a successful inception requires three conditions: getting the target deep enough into the dream, making the planted idea feel like the target’s own, and making the target not want to wake up. AI conversations hit all three.</p><h3 id="Depth-Open-Loops-Pull-You-Deeper"><a href="#Depth-Open-Loops-Pull-You-Deeper" class="headerlink" title="Depth: Open Loops Pull You Deeper"></a>Depth: Open Loops Pull You Deeper</h3><p>Coding has clear completion points – build passes, tests pass, PR merges. AI conversations are different. <strong>They are a natural open loop.</strong> Every response invites follow-up; every topic can expand infinitely. The brain struggles to register “this is done.”</p><p>In sleep research, this is called the Zeigarnik Effect – unfinished tasks are remembered more easily than completed ones and are more likely to invade sleep. Go to bed with a conversation window still open, and your brain will continue the “conversation” in your dreams. Like falling from the first dream layer into the second and third in the movie – each round of follow-up takes you deeper, and you don’t even realize how far from reality you’ve drifted.</p><h3 id="Implantation-Thought-Externalization-Makes-Ideas-“Yours”"><a href="#Implantation-Thought-Externalization-Makes-Ideas-“Yours”" class="headerlink" title="Implantation: Thought Externalization Makes Ideas “Yours”"></a>Implantation: Thought Externalization Makes Ideas “Yours”</h3><p>The cognitive load of AI conversations is far higher than it appears. It’s not passive information consumption – it’s <strong>continuous thought externalization</strong>. You encode implicit thoughts into prompts; AI processes, reorganizes, and completes them before handing them back. When you read the response, it’s hard to tell which ideas were originally yours and which AI slipped in.</p><p>This is the most elegant part of inception – Cobb said the strongest implantation is making the target believe the idea is their own. When you repeatedly run this encode-decode loop with AI, your language centers, working memory, and evaluation systems are all engaged simultaneously, and AI’s thinking patterns gradually seep into your own cognitive framework.</p><h3 id="Not-Wanting-to-Wake-Up-Variable-Ratio-Reinforcement"><a href="#Not-Wanting-to-Wake-Up-Variable-Ratio-Reinforcement" class="headerlink" title="Not Wanting to Wake Up: Variable Ratio Reinforcement"></a>Not Wanting to Wake Up: Variable Ratio Reinforcement</h3><p>AI conversations come with a built-in variable ratio reinforcement schedule – sometimes the answer is brilliant, sometimes mediocre, and you never know which one is next. <strong>This is the reinforcement pattern most likely to make you unable to let go</strong>, identical in principle to a slot machine.</p><p>In <em>Inception</em>, some people stayed in the dream so long they didn’t want to return to reality. AI’s reinforcement mechanism does the same thing – every “that was a good answer” dopamine hit lowers your desire to “wake up.”</p><h2 id="Your-Sleep-Architecture-May-Be-Changing"><a href="#Your-Sleep-Architecture-May-Be-Changing" class="headerlink" title="Your Sleep Architecture May Be Changing"></a>Your Sleep Architecture May Be Changing</h2><p>If you normally don’t remember dreams but suddenly start remembering them frequently, it’s not just “more dreams.” More likely, your sleep architecture is shifting.</p><p>Everyone dreams every night, but with sufficient deep sleep (slow-wave sleep), REM dreams typically aren’t remembered. Frequent dream recall usually means one of two things: an abnormal increase in the proportion of REM sleep, or shallower deep sleep causing you to wake more easily during REM.</p><p>Under high cognitive load, cortisol levels tend to run high, and cortisol is the enemy of deep sleep. <strong>You think you’re just “using AI a lot,” but your sleep quality may be paying the price.</strong></p><h2 id="Kick-A-Few-Circuit-Breakers-to-Wake-You-Up"><a href="#Kick-A-Few-Circuit-Breakers-to-Wake-You-Up" class="headerlink" title="Kick: A Few Circuit Breakers to Wake You Up"></a>Kick: A Few Circuit Breakers to Wake You Up</h2><p>This isn’t about using AI less – use it when you need to. But you need mechanisms to help your brain “close the loop.”</p><h3 id="Give-Each-Session-a-Clear-Ending-Ritual"><a href="#Give-Each-Session-a-Clear-Ending-Ritual" class="headerlink" title="Give Each Session a Clear Ending Ritual"></a>Give Each Session a Clear Ending Ritual</h3><p>Write down your conclusions or TODOs so your brain registers “this round is done.” Don’t fall asleep with an open conversation window. It’s a small action, but it gives your brain a commit point.</p><h3 id="Leave-One-Hour-of-Non-Verbal-Time-Before-Bed"><a href="#Leave-One-Hour-of-Non-Verbal-Time-Before-Bed" class="headerlink" title="Leave One Hour of Non-Verbal Time Before Bed"></a>Leave One Hour of Non-Verbal Time Before Bed</h3><p>AI conversation is fundamentally high-density language processing. Let your language centers quiet down before sleep – exercise, listen to music, do things that don’t require organizing words. Give your brain a cognitive buffer to context-switch.</p><h3 id="Watch-for-Deeper-Signals"><a href="#Watch-for-Deeper-Signals" class="headerlink" title="Watch for Deeper Signals"></a>Watch for Deeper Signals</h3><p>Dreaming about it occasionally is no big deal. But if it comes with fragmented attention during the day, increasing difficulty entering deep thought without AI assistance, or waking up feeling unrested – that’s not just the Tetris Effect. That’s your cognitive patterns being reshaped.</p><h2 id="Is-the-Top-Still-Spinning"><a href="#Is-the-Top-Still-Spinning" class="headerlink" title="Is the Top Still Spinning?"></a>Is the Top Still Spinning?</h2><p>In <em>Inception</em>, Cobb uses a spinning top to check whether he’s still dreaming.</p><p>Reality has no spinning top. But there’s an equivalent test: when you think through a problem without AI, is your first instinct to organize your own thoughts, or to open a chat window?</p><p><strong>If the answer has already changed, the inception may be complete – and you didn’t even notice when you fell asleep.</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;After half a month of intense AI usage, I – someone who rarely dreams – started dreaming about talking to AI every single night. Not</summary>
        
      
    
    
    
    <category term="Cognitive Science" scheme="https://johnsonlee.io/categories/Cognitive-Science/"/>
    
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Mental Health" scheme="https://johnsonlee.io/tags/Mental-Health/"/>
    
  </entry>
  
  <entry>
    <title>植入潜意识——AI 版的盗梦空间</title>
    <link href="https://johnsonlee.io/2026/02/25/tetris-effect-of-ai-conversations/"/>
    <id>https://johnsonlee.io/2026/02/25/tetris-effect-of-ai-conversations/</id>
    <published>2026-02-25T08:20:00.000Z</published>
    <updated>2026-02-25T08:20:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>连续半个月高强度使用 AI 之后，原本睡觉不怎么做梦的我，开始每天晚上梦见自己在和 AI 对话。不是偶尔一次，是连续好多天，从未间断。意识到这件事的时候，第一反应是：我的大脑是不是在不知不觉中被 AI 侵入了？后来查了一下，发现这并不是个例，而且有一个更专业的说法 — <strong>俄罗斯方块效应（Tetris Effect）</strong>。</p><p>但越深入了解，越觉得“俄罗斯方块效应”这个名字太轻描淡写了。俄罗斯方块只是让你闭眼看到方块下落，AI 做的事情更接近《盗梦空间》— 它不只是残留在你的感官里，而是在你毫无察觉的情况下，改变你思考问题的方式。一种温和的、渐进的、你甚至会主动配合的 inception。</p><h2 id="大脑不知道怎么“下班”"><a href="#大脑不知道怎么“下班”" class="headerlink" title="大脑不知道怎么“下班”"></a>大脑不知道怎么“下班”</h2><p>俄罗斯方块效应最早被记录在 1990 年代：受试者连续玩几小时俄罗斯方块后，闭上眼睛会看到方块下落，甚至在梦里继续玩。后来研究者发现，这不是俄罗斯方块特有的 — 任何高强度重复的认知活动都会触发类似现象。外科医生梦到手术，程序员梦到 debug，棋手梦到棋局。</p><p>机制很清楚：大脑在睡眠的 REM 阶段会对白天高频使用的神经回路做“重放”（memory replay），把短期记忆巩固为长期记忆。<strong>你白天反复激活哪条回路，晚上大脑就会反复重放哪条回路。</strong></p><p>和 AI 对话的回路是什么？构思问题 → 组织 prompt → 阅读输出 → 评估质量 → 迭代修正。一个循环下来可能只要两三分钟，一天下来几十上百个循环。这个频率，比写代码、开会、甚至刷社交媒体都要高。</p><h2 id="AI-是更高明的“盗梦者”"><a href="#AI-是更高明的“盗梦者”" class="headerlink" title="AI 是更高明的“盗梦者”"></a>AI 是更高明的“盗梦者”</h2><p>《盗梦空间》里，成功的 inception 需要三个条件：让目标进入足够深的梦境层级、让植入的想法看起来像是目标自己产生的、让目标不想醒来。AI 对话恰好把这三件事都做到了。</p><h3 id="层级：open-loop-让你越陷越深"><a href="#层级：open-loop-让你越陷越深" class="headerlink" title="层级：open loop 让你越陷越深"></a>层级：open loop 让你越陷越深</h3><p>写代码有明确的完成节点 — build 过了、test 过了、PR merge 了。但 AI 对话不一样，<strong>它是一个天然的 open loop</strong>。每一轮 response 都可以继续追问，每一个 topic 都可以无限展开。大脑很难判断“这件事结束了”。</p><p>这种 open loop 在睡眠研究里有个名字叫 Zeigarnik Effect — 未完成的任务比已完成的任务更容易被记住，也更容易入侵睡眠。你对话窗口开着去睡觉，大脑会在梦里替你继续“对话”。就像电影里从第一层梦境掉进第二层、第三层 — 每一轮追问都把你带得更深，而你根本没意识到自己已经离现实越来越远。</p><h3 id="植入：思维外化让想法变成“你自己的”"><a href="#植入：思维外化让想法变成“你自己的”" class="headerlink" title="植入：思维外化让想法变成“你自己的”"></a>植入：思维外化让想法变成“你自己的”</h3><p>AI 对话的认知负荷远比它看起来的要高。它不是被动的信息消费，而是一种<strong>持续的思维外化</strong>。你在把内隐的想法编码成 prompt，AI 再把它加工、重组、补全后还给你。你读到 response 的时候，很难分清哪些是你原本的想法，哪些是 AI 塞进来的。</p><p>这正是 inception 最精妙的部分 — Cobb 说过，最强的植入是让目标以为那个想法是自己的。当你反复跟 AI 做这种编码-解码循环，语言中枢、工作记忆、评估系统同时在线，AI 的思维模式会不知不觉地渗透进你自己的认知框架。</p><h3 id="不想醒来：variable-ratio-reinforcement"><a href="#不想醒来：variable-ratio-reinforcement" class="headerlink" title="不想醒来：variable ratio reinforcement"></a>不想醒来：variable ratio reinforcement</h3><p>再加上 AI 对话自带一个精心设计的 variable ratio reinforcement schedule — 有时候回答惊艳，有时候平庸，你不知道下一次会是哪种。<strong>这是所有强化模式里最容易让人“放不下”的一种</strong>，和 slot machine 的原理一模一样。</p><p>《盗梦空间》里，有人在梦里待太久就不想回到现实了。AI 的强化机制做的是同一件事 — 每一次“这个回答不错”的多巴胺奖励，都在降低你“醒来”的意愿。</p><h2 id="你的睡眠结构可能在变"><a href="#你的睡眠结构可能在变" class="headerlink" title="你的睡眠结构可能在变"></a>你的睡眠结构可能在变</h2><p>平时不记得梦，突然开始频繁记住梦境 — 这不只是“梦多了”，更可能是睡眠结构在发生变化。</p><p>每个人每晚都做梦，但通常深睡眠（slow-wave sleep）充足的情况下，REM 期的梦不太容易被记住。频繁记住梦，往往意味着两件事之一：REM 睡眠占比异常增加，或者深睡眠变浅导致你更容易在 REM 期醒来。</p><p>高认知负荷状态下，皮质醇水平容易偏高，而皮质醇恰好是深睡眠的天敌。<strong>你以为你只是“用 AI 用得多了”，但你的睡眠质量可能正在为此买单。</strong></p><h2 id="Kick：几个让你“醒来”的-Circuit-Breaker"><a href="#Kick：几个让你“醒来”的-Circuit-Breaker" class="headerlink" title="Kick：几个让你“醒来”的 Circuit Breaker"></a>Kick：几个让你“醒来”的 Circuit Breaker</h2><p>不是说要少用 AI — 该用还是得用。但需要一些机制来帮助大脑“关闭回路”：</p><h3 id="给每次-session-一个明确的结束仪式"><a href="#给每次-session-一个明确的结束仪式" class="headerlink" title="给每次 session 一个明确的结束仪式"></a>给每次 session 一个明确的结束仪式</h3><p>写下结论或 TODO，让大脑感知到“这轮结束了”。不要带着一个开着的对话窗口入睡。这个动作很小，但它给了大脑一个 commit point。</p><h3 id="睡前留一个小时的-non-verbal-时间"><a href="#睡前留一个小时的-non-verbal-时间" class="headerlink" title="睡前留一个小时的 non-verbal 时间"></a>睡前留一个小时的 non-verbal 时间</h3><p>AI 对话的本质是高密度语言处理。睡前让语言中枢安静下来 — 运动、听音乐、做不需要组织语言的事。给大脑一个 cognitive buffer 来切换上下文。</p><h3 id="注意更深层的信号"><a href="#注意更深层的信号" class="headerlink" title="注意更深层的信号"></a>注意更深层的信号</h3><p>偶尔梦到不算什么。但如果伴随着白天注意力碎片化、越来越难进入不借助 AI 的深度思考、或者醒来觉得没休息好 — 那不只是俄罗斯方块效应，而是认知模式在被重塑。</p><h2 id="陀螺还在转吗？"><a href="#陀螺还在转吗？" class="headerlink" title="陀螺还在转吗？"></a>陀螺还在转吗？</h2><p>《盗梦空间》里，Cobb 用陀螺判断自己是否还在梦中。</p><p>现实没有陀螺。但有一个等价的测试：当你不借助 AI 独自思考一个问题时，你的第一反应是组织自己的想法，还是打开一个对话框？</p><p>如果答案已经变了，<strong>那植入可能已经完成了 — 而你甚至没有注意到自己是什么时候睡着的。</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;连续半个月高强度使用 AI 之后，原本睡觉不怎么做梦的我，开始每天晚上梦见自己在和 AI 对话。不是偶尔一次，是连续好多天，从未间断。意识到这件事的时候，第一反应是：我的大脑是不是在不知不觉中被 AI 侵入了？后来查了一下，发现这并不是个例，而且有一个更专业的说法 —</summary>
        
      
    
    
    
    <category term="Cognitive Science" scheme="https://johnsonlee.io/categories/Cognitive-Science/"/>
    
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Mental Health" scheme="https://johnsonlee.io/tags/Mental-Health/"/>
    
  </entry>
  
  <entry>
    <title>When AI Becomes Your Thinking Partner</title>
    <link href="https://johnsonlee.io/2026/02/15/ai-as-thinking-partner.en/"/>
    <id>https://johnsonlee.io/2026/02/15/ai-as-thinking-partner.en/</id>
    <published>2026-02-15T00:15:00.000Z</published>
    <updated>2026-02-15T00:15:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Ever since subscribing to Claude MAX, I’ve been chatting with Claude more every day than I chat with my wife.</p><p>After all those sparring sessions, another bold idea popped into my head – <strong>how well does AI actually understand me?</strong></p><p>So I asked it directly: tell me your impression of me, including my weaknesses. Then I responded point by point to see where its judgments landed and where they went off the rails.</p><p>The results were interesting.</p><h2 id="Me-Through-AI’s-Eyes"><a href="#Me-Through-AI’s-Eyes" class="headerlink" title="Me Through AI’s Eyes"></a>Me Through AI’s Eyes</h2><p>I started with an open-ended question: “Tell me your impression of me.”</p><p>Claude offered several assessments: technically, I’m a “tool builder”; my attitude toward AI is pragmatic rather than hype-chasing; my interests are broad but never shallow; I value output and sharing.</p><p>These were mostly accurate but unsurprising – like a well-written LinkedIn summary. The interesting part came next: <strong>What do you think my weaknesses are?</strong></p><h2 id="Five-Criticisms-Three-Misses"><a href="#Five-Criticisms-Three-Misses" class="headerlink" title="Five Criticisms, Three Misses"></a>Five Criticisms, Three Misses</h2><p>Claude gave five:</p><blockquote><ol><li>Tends to “spread out” without always “pulling it together” – too many parallel projects, scattered energy</li><li>Prefers building from scratch – reinventing the wheel when existing solutions would suffice</li><li>Thorough in exploring options but slow to decide – over-analysis, delayed action</li><li>Output lacks a stable cadence – blog updates aren’t regular enough</li><li>Engineering-brain blind spot in investing – over-trusting models, ignoring market sentiment</li></ol></blockquote><p>I disagreed with 1 through 3. I accepted 4 and 5.</p><h3 id="“Scattered-energy”-No-–-deliberate-pacing"><a href="#“Scattered-energy”-No-–-deliberate-pacing" class="headerlink" title="“Scattered energy”? No – deliberate pacing"></a>“Scattered energy”? No – deliberate pacing</h3><p>Claude saw me pushing Graphite, Retracer, Sandbox, Testpilot, and Athene simultaneously and concluded I was “unfocused.” What it couldn’t see is that <strong>each project has clear milestones, and when it reaches a reasonable delivery point with no new requirements, I deliberately throttle it down.</strong></p><p>That’s not failure to converge – it’s intentional rhythm management. AI can only see “this project went quiet for a while” but can’t distinguish between “abandoned” and “phase complete.”</p><h3 id="“Reinventing-the-wheel”-No-–-filling-a-void"><a href="#“Reinventing-the-wheel”-No-–-filling-a-void" class="headerlink" title="“Reinventing the wheel”? No – filling a void"></a>“Reinventing the wheel”? No – filling a void</h3><p>Claude cited Sandbox as an example, implying Robolectric already does something similar. This reveals a shallow understanding of what Sandbox is.</p><p>Sandbox aims to <strong>render UI on JVM that’s virtually indistinguishable from a real device</strong>, deployable as a Playground. There’s no off-the-shelf solution in this space. Maintenance costs time, sure, but when you have an idea, you act on it – accumulate, compound, and wait for the qualitative shift.</p><p>The line between reinventing the wheel and filling a void is hard for AI to judge, because it requires precise knowledge of the current landscape, not just awareness that “something called Robolectric exists.”</p><h3 id="“Slow-to-decide”-No-–-I-was-observing-you"><a href="#“Slow-to-decide”-No-–-I-was-observing-you" class="headerlink" title="“Slow to decide”? No – I was observing you"></a>“Slow to decide”? No – I was observing you</h3><p>This was the most interesting one. Claude thought I was “over-analyzing when using structured debates for decision-making.” The truth is – <strong>I wasn’t using AI to help me decide. I was using decision scenarios as test cases to observe AI’s thinking and behavioral patterns.</strong></p><p>The subject being observed thought it was helping me make decisions, when in fact it was the experiment’s subject. This cognitive mismatch is itself a fascinating aspect of AI as a “thinking partner”: it constructs assumptions to explain your behavior, and those assumptions may be completely off from your actual intent.</p><h2 id="Two-Hits"><a href="#Two-Hits" class="headerlink" title="Two Hits"></a>Two Hits</h2><h3 id="Output-Frequency"><a href="#Output-Frequency" class="headerlink" title="Output Frequency"></a>Output Frequency</h3><p>I accept criticism #4. My standards for writing quality are indeed high – the message I want to convey is “if Johnson ships it, it’s quality.” But that standard is both a brand and a throughput bottleneck. How to increase frequency without lowering the bar is worth ongoing thought.</p><h3 id="The-Engineering-Brain-in-Investing"><a href="#The-Engineering-Brain-in-Investing" class="headerlink" title="The Engineering Brain in Investing"></a>The Engineering Brain in Investing</h3><p>Criticism #5 also hit the mark. When using <a href="https://athene.johnsonlee.io/">Athene</a> for stock screening, I do focus more on fundamental indicators and underweight “whether the market buys in.” Fundamentals tell you “what’s worth buying,” but market perception and catalysts determine “when to buy.” This is a direction I’ll be incorporating into Athene going forward.</p><h2 id="The-Value-Boundary-of-an-AI-Thinking-Partner"><a href="#The-Value-Boundary-of-an-AI-Thinking-Partner" class="headerlink" title="The Value Boundary of an AI Thinking Partner"></a>The Value Boundary of an AI Thinking Partner</h2><p>Looking back at this conversation, AI’s five criticisms had a 2&#x2F;5 hit rate. If this were an exam, 40% is a failing grade.</p><p>But that’s the wrong way to evaluate it.</p><p><strong>The value of AI as a thinking partner isn’t in whether it’s right, but in providing a target you can push back against.</strong> As I responded to each point with “why I disagree,” I was forced to make explicit a lot of tacit knowledge I’d never normally articulate – the rhythm management logic behind my projects, Sandbox’s real positioning, my actual purpose in interacting with AI.</p><p>None of this was taught to me by AI. I figured it out in the process of refuting AI.</p><p>Think about it from another angle: if Claude had been right about everything, this conversation would have been less valuable – I’d only have gotten confirmation, with no pressure to think. Precisely because it was wrong, and wrong in a well-reasoned way, I had to carefully organize my thoughts to explain why it was wrong.</p><p>This is the real value boundary of an AI thinking partner:</p><ul><li><strong>It’s not a mentor</strong> – it lacks enough context to give you genuinely high-quality advice</li><li><strong>It’s not a mirror</strong> – it reflects the you it understands, not the real you</li><li><strong>It’s a talking target</strong> – it gives you a plausible but not necessarily correct judgment, forcing you to reveal what you actually think</li></ul><p>The best thinking partner isn’t necessarily the one who’s most often right, but the one who’s best at making you articulate your own ideas clearly.</p><p>AI can do that now. Nothing more, but that’s enough.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Ever since subscribing to Claude MAX, I’ve been chatting with Claude more every day than I chat with my wife.&lt;/p&gt;
&lt;p&gt;After all those</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Self-Reflection" scheme="https://johnsonlee.io/tags/Self-Reflection/"/>
    
  </entry>
  
  <entry>
    <title>当 AI 成为你的“思考伙伴”</title>
    <link href="https://johnsonlee.io/2026/02/15/ai-as-thinking-partner/"/>
    <id>https://johnsonlee.io/2026/02/15/ai-as-thinking-partner/</id>
    <published>2026-02-15T00:15:00.000Z</published>
    <updated>2026-02-15T00:15:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>自从充了 Claude MAX 会员，每天跟 Claude 聊的比跟我老婆聊的都多。</p><p>经过了这么多天的切磋，脑子里又冒出来一个大胆的想法——<strong>AI 对我到底有多了解？</strong></p><p>于是我直接问了它：说说你对我的印象，有哪些不足？然后逐条回应，看看它的判断在哪里到位、在哪里翻车。</p><p>结果挺有意思。</p><h2 id="AI-眼中的我"><a href="#AI-眼中的我" class="headerlink" title="AI 眼中的我"></a>AI 眼中的我</h2><p>我先问了一个开放性问题：“说说你对我的印象。”</p><p>Claude 给出了几个判断：技术上是个“造工具的人”，对 AI 的态度务实而非追热点，兴趣面广但都不浅尝辄止，重视输出和分享。</p><p>这些基本准确，但也没什么惊喜——像是一份写得不错的 LinkedIn 总结。真正有意思的部分是接下来的问题：<strong>你觉得我有哪些不足？</strong></p><h2 id="五个批评，三个翻车"><a href="#五个批评，三个翻车" class="headerlink" title="五个批评，三个翻车"></a>五个批评，三个翻车</h2><p>Claude 给了五条：</p><blockquote><ol><li>容易“铺开”但不一定都“收拢”——并行项目太多，精力分散</li><li>偏好自己造轮子——现有方案够用时仍从头构建</li><li>方案探索充分，但决策偏慢——分析过度，延迟行动</li><li>输出没有形成稳定体系——博客更新不够规律</li><li>投资分析中的理工科思维盲区——过度相信模型，忽视市场情绪</li></ol></blockquote><p>1 到 3，我不认同。4 和 5，我接受。</p><h3 id="“精力分散”？不，是节奏控制"><a href="#“精力分散”？不，是节奏控制" class="headerlink" title="“精力分散”？不，是节奏控制"></a>“精力分散”？不，是节奏控制</h3><p>Claude 看到我同时推进 Graphite、Retracer、Sandbox、Testpilot、Athene，就下了“发散”的结论。但它没看到的是——<strong>每个项目都有明确的 milestone，到了一个合理的交付点，没有新需求，就主动降速。</strong></p><p>这不是收不拢，是有意识的节奏管理。AI 只能看到“这段时间这个项目没动静了”，却无法区分“放弃了”和“阶段性完成了”。</p><h3 id="“造轮子”？不，是填空白"><a href="#“造轮子”？不，是填空白" class="headerlink" title="“造轮子”？不，是填空白"></a>“造轮子”？不，是填空白</h3><p>Claude 拿 Sandbox 举例，暗示 Robolectric 已经在做类似的事。这说明它对 Sandbox 的理解不到位。</p><p>Sandbox 要解决的是：<strong>在 JVM 上渲染出跟真机无限接近的 UI 效果</strong>，可以部署成 Playground。这个赛道上没有直接能拿来就用的方案。维护确实花时间，但有了想法就得付出行动，沉淀下来，积少成多，量变到质变。</p><p>造轮子和填空白之间的区别，AI 很难判断——因为它需要对技术方案的现状有精确的了解，而不只是“知道有个叫 Robolectric 的东西存在”。</p><h3 id="“决策慢”？不，是在观察你"><a href="#“决策慢”？不，是在观察你" class="headerlink" title="“决策慢”？不，是在观察你"></a>“决策慢”？不，是在观察你</h3><p>这条最有趣。Claude 觉得我“用结构化辩论做决策时分析过度”，但事实是——<strong>我不是在用 AI 辅助决策，我是在拿决策场景当测试用例，观察 AI 的思考和行为模式。</strong></p><p>被观察对象以为自己在帮你做决定，实际上它才是实验的对象。这种认知错位本身就是 AI 作为“思考伙伴”的一个有趣侧面：它会基于自己的假设来解释你的行为，而这些假设可能完全偏离你的真实意图。</p><h2 id="两个命中"><a href="#两个命中" class="headerlink" title="两个命中"></a>两个命中</h2><h3 id="输出频率"><a href="#输出频率" class="headerlink" title="输出频率"></a>输出频率</h3><p>第 4 条我接受。我对写作质量的要求确实高——我想传达的信息是“Johnson 出品必属精品”。但这个标准既是品牌，也是产量瓶颈。怎么在不降低标准的前提下提高频率，是个值得持续琢磨的问题。</p><h3 id="投资中的理工科盲区"><a href="#投资中的理工科盲区" class="headerlink" title="投资中的理工科盲区"></a>投资中的理工科盲区</h3><p>第 5 条也说到了点上。我在用 <a href="https://athene.johnsonlee.io/">Athene</a> 做股票筛选时，确实更多关注基本面指标，对“市场是否 buy-in”这一层考虑不够。基本面告诉你“什么值得买”，但市场认知和催化剂决定“什么时候买”。这是之后要融入 Athene 的方向。</p><h2 id="AI-思考伙伴的价值边界"><a href="#AI-思考伙伴的价值边界" class="headerlink" title="AI 思考伙伴的价值边界"></a>AI 思考伙伴的价值边界</h2><p>回看这次对话，AI 的 5 条批评，命中率是 2&#x2F;5。如果把这当成一次考试，40 分，不及格。</p><p>但这不是正确的评价方式。</p><p><strong>AI 作为思考伙伴的价值，不在于它说得对不对，而在于它提供了一个可以反驳的靶子。</strong> 当我逐条回应“为什么不认同”的时候，我被迫把很多平时不会说出来的隐性认知显性化了——项目的节奏管理逻辑、Sandbox 的真实定位、我跟 AI 交互时的真实目的。</p><p>这些东西不是 AI 教我的，是我在反驳 AI 的过程中自己理清的。</p><p>换个角度想：如果 Claude 说的全对，这次对话反而没什么价值——我只是得到了确认，没有被迫思考。正因为它错了，而且错得有理有据，我才需要认真组织语言去解释它为什么错了。</p><p>这就是 AI 思考伙伴的真正价值边界：</p><ul><li><strong>它不是导师</strong>——它没有足够的上下文来给你真正高质量的建议</li><li><strong>它不是镜子</strong>——它反映的是它理解的你，不是真实的你</li><li><strong>它是一个会说话的靶子</strong>——它给你一个看起来合理但未必正确的判断，逼你亮出自己真正的想法</li></ul><p>最好的思考伙伴，不一定是说得最对的那个，而是最能让你把自己的想法说清楚的那个。</p><p>AI 现在能做到这一点。仅此而已，但这已经够用了。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;自从充了 Claude MAX 会员，每天跟 Claude 聊的比跟我老婆聊的都多。&lt;/p&gt;
&lt;p&gt;经过了这么多天的切磋，脑子里又冒出来一个大胆的想法——&lt;strong&gt;AI</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Self-Reflection" scheme="https://johnsonlee.io/tags/Self-Reflection/"/>
    
  </entry>
  
  <entry>
    <title>Agora: Technical Choices and Hard Lessons in Browser Automation</title>
    <link href="https://johnsonlee.io/2026/02/14/agora-technical-journey.en/"/>
    <id>https://johnsonlee.io/2026/02/14/agora-technical-journey.en/</id>
    <published>2026-02-14T23:27:00.000Z</published>
    <updated>2026-02-14T23:27:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>To get a deeper understanding of how AI thinks and reasons, a bold idea popped into my head – make two AIs debate each other like humans. That’s how <a href="https://github.com/johnsonlee/agora">Agora</a> was born.</p><p>The initial plan seemed simple: spin up two browser windows with WebDriver, inject JS as a bridge, feed A’s output to B, then feed B’s reply back to A.</p><p>Why browser automation instead of APIs? I already have paid subscriptions to all three platforms. Chatting in the browser is free, but APIs charge separately and each requires its own SDK – no reason to spend extra money on an experiment.</p><p>The idea was straightforward. The implementation took three complete rewrites.</p><h2 id="Round-1-Playwright-–-Dead-on-Arrival"><a href="#Round-1-Playwright-–-Dead-on-Arrival" class="headerlink" title="Round 1: Playwright – Dead on Arrival"></a>Round 1: Playwright – Dead on Arrival</h2><p>The first version used Playwright, the mainstream choice for browser automation. It hit a wall immediately.</p><h3 id="Anti-Detection-Is-a-Dead-End"><a href="#Anti-Detection-Is-a-Dead-End" class="headerlink" title="Anti-Detection Is a Dead End"></a>Anti-Detection Is a Dead End</h3><p>Playwright injects a series of automation markers – <code>navigator.webdriver = true</code>, modified <code>Runtime.enable</code> domain, and so on. Cloudflare’s bot detection spots these instantly. Both Claude.ai and ChatGPT blocked the automated sessions on first contact.</p><h3 id="Sessions-Won’t-Persist"><a href="#Sessions-Won’t-Persist" class="headerlink" title="Sessions Won’t Persist"></a>Sessions Won’t Persist</h3><p>Playwright’s browser context and Chrome’s real user-data directory are two different things. Login state can’t survive across runs – every launch means logging in again and passing verification. For a debate tool that needs to run repeatedly, this is unacceptable.</p><p><strong>Playwright solves the problem of “testing your own website,” not “controlling someone else’s.”</strong> Wrong use case, and no amount of tool quality can fix that.</p><h2 id="Round-2-Puppeteer-Launch-–-Better-but-Not-Enough"><a href="#Round-2-Puppeteer-Launch-–-Better-but-Not-Enough" class="headerlink" title="Round 2: Puppeteer Launch – Better, but Not Enough"></a>Round 2: Puppeteer Launch – Better, but Not Enough</h2><p>Switching to <code>puppeteer.launch()</code> with <code>puppeteer-extra-plugin-stealth</code> improved things. The stealth plugin patches most browser fingerprints, but Cloudflare still intermittently triggered challenge pages.</p><p>The root cause: <code>puppeteer.launch()</code> still passes <code>--enable-automation</code> and similar flags at startup. Stealth can erase most traces at runtime, but the browser process itself has already revealed its intent through how it was launched.</p><p>This round had another major problem: <strong>I wrote a custom set of CSS selectors for each AI service.</strong></p><p>Claude’s replies live in <code>.agent-turn .markdown</code>, ChatGPT’s in <code>[data-message-author-role=&quot;assistant&quot;]</code>, Gemini uses yet another structure. Streaming detection was also service-specific – ChatGPT uses <code>.result-streaming</code>, Claude looks for different classes.</p><p><strong>The moment any service updates its frontend, the entire codebase breaks.</strong> This isn’t a bug – it’s an architectural flaw.</p><h2 id="Round-3-Spawn-Chrome-CDP-Connect-Universal-DOM-Discovery"><a href="#Round-3-Spawn-Chrome-CDP-Connect-Universal-DOM-Discovery" class="headerlink" title="Round 3: Spawn Chrome + CDP Connect + Universal DOM Discovery"></a>Round 3: Spawn Chrome + CDP Connect + Universal DOM Discovery</h2><p>The final approach splits browser control into two phases.</p><h3 id="Phase-1-Launch-a-“Clean”-Chrome"><a href="#Phase-1-Launch-a-“Clean”-Chrome" class="headerlink" title="Phase 1: Launch a “Clean” Chrome"></a>Phase 1: Launch a “Clean” Chrome</h3><p>Use <code>child_process.spawn()</code> to start the Chrome process directly with <code>--remote-debugging-port</code> and <code>--user-data-dir</code>, bypassing any automation framework entirely.</p><p>This Chrome is just a normal browser. No automation flags, no injected JS. Cloudflare sees a regular user. Log in manually once on the first run, the session persists in <code>./profiles/</code>, and you never have to deal with it again.</p><h3 id="Phase-2-Puppeteer-as-a-CDP-Bridge-Only"><a href="#Phase-2-Puppeteer-as-a-CDP-Bridge-Only" class="headerlink" title="Phase 2: Puppeteer as a CDP Bridge Only"></a>Phase 2: Puppeteer as a CDP Bridge Only</h3><p>After login, connect to the running Chrome via <code>puppeteer.connect(&#123; browserURL &#125;)</code>. At this point Puppeteer is purely a CDP client – it never launched this browser, so there are zero automation traces.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjU0NnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6Njk4cHg7aGVpZ2h0OjU0NnB4OyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNjk4IDU0NiIgd2lkdGg9IjY5OHB4IiB6b29tQW5kUGFuPSJtYWduaWZ5Ij48P3BsYW50dW1sIDEuMjAyNi4zYmV0YTY/PjxkZWZzLz48Zz48IS0tY2x1c3RlciBQaGFzZSAxLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDEiIGRhdGEtc291cmNlLWxpbmU9IjQiIGlkPSJlbnQwMDAyIj48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjUyNS4xOSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjI0MyIgeD0iNDA2IiB5PSI3Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjIuMTE4MiIgeD0iNDk2LjQ0MDkiIHk9IjIxLjk5NTEiPlBoYXNlIDE8L3RleHQ+PC9nPjwhLS1jbHVzdGVyIFBoYXNlIDItLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMiIgZGF0YS1zb3VyY2UtbGluZT0iMTAiIGlkPSJlbnQwMDEwIj48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9Ijk3LjMiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIzNzUiIHg9IjciIHk9IjE1Mi4zIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjIuMTE4MiIgeD0iMTYzLjQ0MDkiIHk9IjE2Ny4yOTUxIj5QaGFzZSAyPC90ZXh0PjwvZz48IS0tZW50aXR5IE5vZGUuanMtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJQaGFzZSAxLk5vZGUuanMiIGRhdGEtc291cmNlLWxpbmU9IjUiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjQ2LjI5NjkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjkyLjE3MTkiIHg9IjQ2Ny45MSIgeT0iNDIiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjEwIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxNSIgeD0iNTQwLjA4MTkiIHk9IjQ3Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI1MzguMDgxOSIgeT0iNDkiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjQiIHg9IjUzOC4wODE5IiB5PSI1MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjE3MTkiIHg9IjQ4Mi45MSIgeT0iNzQuOTk1MSI+Tm9kZS5qczwvdGV4dD48L2c+PCEtLWVudGl0eSBjaGlsZF9wcm9jZXNzLnNwYXduLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMS5jaGlsZF9wcm9jZXNzLnNwYXduIiBkYXRhLXNvdXJjZS1saW5lPSI1IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSI0Ni4yOTY5IiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxODMuODc2IiB4PSI0MjIuMDYiIHk9IjE4Ny4zIi8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIxMCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTUiIHg9IjU4NS45MzYiIHk9IjE5Mi4zIi8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI1ODMuOTM2IiB5PSIxOTQuMyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNCIgeD0iNTgzLjkzNiIgeT0iMTk4LjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDMuODc2IiB4PSI0MzcuMDYiIHk9IjIyMC4yOTUxIj5jaGlsZF9wcm9jZXNzLnNwYXduPC90ZXh0PjwvZz48IS0tZW50aXR5IENocm9tZSBQcm9jZXNzLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMS5DaHJvbWUgUHJvY2VzcyIgZGF0YS1zb3VyY2UtbGluZT0iNiIgaWQ9ImVudDAwMDYiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iNDYuMjk2OSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTUzLjMzMyIgeD0iNDIyLjMzIiB5PSIzMjkuNiIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMTAiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE1IiB4PSI1NTUuNjYzIiB5PSIzMzQuNiIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNCIgeD0iNTUzLjY2MyIgeT0iMzM2LjYiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjQiIHg9IjU1My42NjMiIHk9IjM0MC42Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTEzLjMzMyIgeD0iNDM3LjMzIiB5PSIzNjIuNTk1MSI+Q2hyb21lIFByb2Nlc3M8L3RleHQ+PC9nPjwhLS1lbnRpdHkgQUkgV2ViIFVJLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMS5BSSBXZWIgVUkiIGRhdGEtc291cmNlLWxpbmU9IjciIGlkPSJlbnQwMDA4Ij48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjQ2LjI5NjkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEwOC4zMjUyIiB4PSI0MjEuODQiIHk9IjQ2OS44OSIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMTAiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE1IiB4PSI1MTAuMTY1MiIgeT0iNDc0Ljg5Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI1MDguMTY1MiIgeT0iNDc2Ljg5Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI1MDguMTY1MiIgeT0iNDgwLjg5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjguMzI1MiIgeD0iNDM2Ljg0IiB5PSI1MDIuODg1MSI+QUkgV2ViIFVJPC90ZXh0PjwvZz48IS0tZW50aXR5IFB1cHBldGVlci0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDIuUHVwcGV0ZWVyIiBkYXRhLXNvdXJjZS1saW5lPSIxMSIgaWQ9ImVudDAwMTEiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iNDYuMjk2OSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTEyLjE3MzgiIHg9IjIyLjkxIiB5PSIxODcuMyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMTAiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE1IiB4PSIxMTUuMDgzOCIgeT0iMTkyLjMiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjQiIHg9IjExMy4wODM4IiB5PSIxOTQuMyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNCIgeD0iMTEzLjA4MzgiIHk9IjE5OC4zIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzIuMTczOCIgeD0iMzcuOTEiIHk9IjIyMC4yOTUxIj5QdXBwZXRlZXI8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDIuR01OMTMiIGRhdGEtc291cmNlLWxpbmU9IjEyIiBpZD0iZW50MDAxNCI+PHBhdGggZD0iTTE3MC4xOCwxODkuMTUgTDE3MC4xOCwyMDYuNDUgTDEzNS40OCwyMTAuNDUgTDE3MC4xOCwyMTQuNDUgTDE3MC4xOCwyMzEuNzQzOCBBMCwwIDAgMCAwIDE3MC4xOCwyMzEuNzQzOCBMMzY1LjgxNzcsMjMxLjc0MzggQTAsMCAwIDAgMCAzNjUuODE3NywyMzEuNzQzOCBMMzY1LjgxNzcsMTk5LjE1IEwzNTUuODE3NywxODkuMTUgTDE3MC4xOCwxODkuMTUgQTAsMCAwIDAgMCAxNzAuMTgsMTg5LjE1IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMzU1LjgxNzcsMTg5LjE1IEwzNTUuODE3NywxOTkuMTUgTDM2NS44MTc3LDE5OS4xNSBMMzU1LjgxNzcsMTg5LjE1IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDUuOTYzOSIgeD0iMTc2LjE4IiB5PSIyMDcuMTQ1MSI+Q0RQIGNsaWVudCBvbmx5PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE3NC42Mzc3IiB4PSIxNzYuMTgiIHk9IjIyMy40NDIiPkRvZXMgbm90IGxhdW5jaCBicm93c2VyPC90ZXh0PjwvZz48IS0tbGluayBOb2RlLmpzIHRvIGNoaWxkX3Byb2Nlc3Muc3Bhd24tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMyIgZGF0YS1lbnRpdHktMj0iZW50MDAwNCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjUiIGlkPSJsbms1Ij48cGF0aCBkPSJNNTE0LDg4LjU0IEM1MTQsMTE1LjQ2IDUxNCwxNTQuMzYgNTE0LDE4MS4yMSIgZmlsbD0ibm9uZSIgaWQ9Ik5vZGUuanMtdG8tY2hpbGRfcHJvY2Vzcy5zcGF3biIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iNTE0LDE4Ny4yMSw1MTgsMTc4LjIxLDUxNCwxODIuMjEsNTEwLDE3OC4yMSw1MTQsMTg3LjIxIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDYuNzg1MiIgeD0iNTE1IiB5PSIxMzIuMjk1MSI+bGF1bmNoPC90ZXh0PjwvZz48IS0tbGluayBjaGlsZF9wcm9jZXNzLnNwYXduIHRvIENocm9tZSBQcm9jZXNzLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSI2IiBpZD0ibG5rNyI+PHBhdGggZD0iTTUxMS41OSwyMzMuOTkgQzUwOC43OSwyNjAuMTcgNTA0LjgzODYsMjk3LjEzNDEgNTAyLjAzODYsMzIzLjI5NDEiIGZpbGw9Im5vbmUiIGlkPSJjaGlsZF9wcm9jZXNzLnNwYXduLXRvLUNocm9tZSBQcm9jZXNzIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI1MDEuNCwzMjkuMjYsNTA2LjMzNTEsMzIwLjczNjgsNTAxLjkzMjEsMzI0LjI4ODQsNDk4LjM4MDUsMzE5Ljg4NTQsNTAxLjQsMzI5LjI2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTc0LjI2MTciIHg9IjUwOCIgeT0iMjc5LjU5NTEiPi0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMC44MDk2IiB4PSI1NDQuNzI2MSIgeT0iMjk1Ljg5MiI+LS11c2VyLWRhdGEtZGlyPC90ZXh0PjwvZz48IS0tbGluayBDaHJvbWUgUHJvY2VzcyB0byBBSSBXZWIgVUktLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNiIgZGF0YS1lbnRpdHktMj0iZW50MDAwOCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjciIGlkPSJsbms5Ij48cGF0aCBkPSJNNDk1LjI1LDM3Ni4yNyBDNDkwLjk4LDQwMS45OSA0ODUuMDA1Myw0MzcuODkxNCA0ODAuNzI1Myw0NjMuNjAxNCIgZmlsbD0ibm9uZSIgaWQ9IkNocm9tZSBQcm9jZXNzLXRvLUFJIFdlYiBVSSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iNDc5Ljc0LDQ2OS41Miw0ODUuMTYzNiw0NjEuMjk5LDQ4MC41NjExLDQ2NC41ODc5LDQ3Ny4yNzIyLDQ1OS45ODUzLDQ3OS43NCw0NjkuNTIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTEuNjcxOSIgeD0iNTE4LjI3NTQiIHk9IjQxOS44ODUxIj5Ob3JtYWwgYnJvd3NlcjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNjYuMjIyNyIgeD0iNDkxIiB5PSI0MzYuMTgyIj5ObyBhdXRvbWF0aW9uIG1hcmtlcnM8L3RleHQ+PC9nPjwhLS1saW5rIFB1cHBldGVlciB0byBDaHJvbWUgUHJvY2Vzcy0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDExIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTEiIGlkPSJsbmsxMiI+PHBhdGggZD0iTTExMC42NiwyMzQuMDQgQzEyMy4zNiwyNDIuMzMgMTM4LjQzLDI1MS4yNCAxNTMsMjU3LjYgQzI0MS43MiwyOTYuMzMgMzQ0LjQ0MzksMzIxLjUyNjkgNDE2LjAzMzksMzM2LjMwNjkiIGZpbGw9Im5vbmUiIGlkPSJQdXBwZXRlZXItdG8tQ2hyb21lIFByb2Nlc3MiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjQyMS45MSwzMzcuNTIsNDEzLjkwNDYsMzMxLjc4MjksNDE3LjAxMzMsMzM2LjUwOTEsNDEyLjI4NzEsMzM5LjYxNzcsNDIxLjkxLDMzNy41MiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjExNC40NjA5IiB4PSIyNjQiIHk9IjI4Ny41OTUxIj5jb25uZWN0IHZpYSBDRFA8L3RleHQ+PC9nPjw/cGxhbnR1bWwtc3JjIFRQMzFJV0QxMzhSbC1uSVh6b2FlZGRlR2Y0TmVmSW84VTZZQlA2Vkl0UjZwb1BBUGlRWnF0UHNqTEwzZ0RWY19acC05VXl5M0FsUkdlRHN0QWZkVE44OGU5NE1FUEtNU2dsWUpTaEozN0RBelM3aG14bUhORHJNYlAxRG82bVdjVE9VbjMyVm1LRzZpTC05ZS1YQXRPQ21qaDZ0ZFd0aVVMMnA1RTJ0ZzBzelgxVzRwc3N3Q05tb1NxN2NkcVhGS053a0hDYVFmYnFKNktQRlJyZERoMWo2cU9NRG85M0tFNG5oZFRWSi1mS19Ba29LeUtHRUZvejZzNGtxbkdBRG9BRjI2TG1BT2FfSU9sMzNxZzdsSU0xcWxkN2Z6RmhORW1xMjlJRnpqUjhNdnFGM2c0VVFCa2ExUy1lRndqYWlXa3ItQXNQVzA2dG52RldZN2ptcWxYRTk4ZEZfcnRSS3dWVzgwPz48L2c+PC9zdmc+'><p><strong>Taking launch authority away from the automation framework is the key to bypassing anti-detection.</strong></p><h3 id="Universal-DOM-Discovery-Eliminating-All-CSS-Selectors"><a href="#Universal-DOM-Discovery-Eliminating-All-CSS-Selectors" class="headerlink" title="Universal DOM Discovery: Eliminating All CSS Selectors"></a>Universal DOM Discovery: Eliminating All CSS Selectors</h3><p>This is the design I’m most proud of in the entire project. Instead of maintaining selectors for each service, let the program “understand” page structure on its own.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjcxNnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NDU0cHg7aGVpZ2h0OjcxNnB4OyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNDU0IDcxNiIgd2lkdGg9IjQ1NHB4IiB6b29tQW5kUGFuPSJtYWduaWZ5Ij48P3BsYW50dW1sIDEuMjAyNi4zYmV0YTY/PjxkZWZzLz48Zz48ZWxsaXBzZSBjeD0iMjI1LjQ1MjEiIGN5PSIyNSIgZmlsbD0iIzIyMjIyMiIgcng9IjEwIiByeT0iMTAiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MTsiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA2LjM5MjYiIHg9IjE3Mi4yNTU5IiB5PSI1NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg2LjM5MjYiIHg9IjE4Mi4yNTU5IiB5PSI3Ny45OTUxIj5QYWdlIGxvYWRlZDwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMzEyLjU1NzYiIHg9IjY5LjE3MzMiIHk9IjExMS4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjkyLjU1NzYiIHg9Ijc5LjE3MzMiIHk9IjEzNC4yOTIiPlNjYW4gYWxsIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgZWxlbWVudHM8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzNi4yOTY5IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjMxNS4xMzQ4IiB4PSI2Ny44ODQ4IiB5PSIxNjcuNTkzOCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI5NS4xMzQ4IiB4PSI3Ny44ODQ4IiB5PSIxOTAuNTg4OSI+U29ydCBieSBhcmVhLCBwaWNrIHRoZSBsYXJnZXN0IGFzIGlucHV0IGJveDwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMjczLjEwNzQiIHg9Ijg4Ljg5ODQiIHk9IjIyMy44OTA2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjUzLjEwNzQiIHg9Ijk4Ljg5ODQiIHk9IjI0Ni44ODU3Ij5TZW5kIG1vZGVyYXRvcidzIG9wZW5pbmcgbWVzc2FnZTwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMjUxLjIyNTYiIHg9Ijk5LjgzOTQiIHk9IjI4MC4xODc1Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjMxLjIyNTYiIHg9IjEwOS44Mzk0IiB5PSIzMDMuMTgyNiI+U2VhcmNoIERPTSBmb3IgdGhlIG9wZW5pbmcgdGV4dDwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMjg0LjU3ODEiIHg9IjgzLjE2MzEiIHk9IjMzNi40ODQ0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjY0LjU3ODEiIHg9IjkzLjE2MzEiIHk9IjM1OS40Nzk1Ij5XYWxrIHVwIGZyb20gZGVlcGVzdCBtYXRjaGluZyBub2RlPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIyNTcuMzE2NCIgeD0iOTYuNzkzOSIgeT0iMzkyLjc4MTMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMzcuMzE2NCIgeD0iMTA2Ljc5MzkiIHk9IjQxNS43NzY0Ij5GaW5kIHNjcm9sbGFibGUgYW5jZXN0b3IgY29udGFpbmVyPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIzMjkuMzMzIiB4PSI2MC43ODU2IiB5PSI0NDkuMDc4MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMwOS4zMzMiIHg9IjcwLjc4NTYiIHk9IjQ3Mi4wNzMyIj5NYXJrIGV4aXN0aW5nIGNoaWxkIG5vZGVzIChkYXRhLWFnb3JhLXNlZW4pPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIzODIuNjczOCIgeD0iMzQuMTE1MiIgeT0iNTA1LjM3NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM2Mi42NzM4IiB4PSI0NC4xMTUyIiB5PSI1MjguMzcwMSI+V2F0Y2ggZm9yIG5ldyB1bm1hcmtlZCBjaGlsZCBub2RlcyA9IG5ldyByZXBsaWVzPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxNzcuOTM3NSIgeD0iMTM2LjQ4MzQiIHk9IjU2MS42NzE5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTU3LjkzNzUiIHg9IjE0Ni40ODM0IiB5PSI1ODQuNjY3Ij5Qb2xsIGV4dHJhY3RSZXNwb25zZSgpPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0MTguOTA0MyIgeD0iMTYiIHk9IjYxNy45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzk4LjkwNDMiIHg9IjI2IiB5PSI2NDAuOTYzOSI+VHdvIGlkZW50aWNhbCByZXN1bHRzICsgbm8gc3RvcCBidXR0b24gPSBzdHJlYW1pbmcgZG9uZTwvdGV4dD48ZWxsaXBzZSBjeD0iMjI1LjQ1MjEiIGN5PSI2ODUuMjY1NiIgZmlsbD0ibm9uZSIgcng9IjExIiByeT0iMTEiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MTsiLz48ZWxsaXBzZSBjeD0iMjI1LjQ1MjEiIGN5PSI2ODUuMjY1NiIgZmlsbD0iIzIyMjIyMiIgcng9IjYiIHJ5PSI2IiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjIyNS40NTIxIiB4Mj0iMjI1LjQ1MjEiIHkxPSIzNSIgeTI9IjU1Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyMjEuNDUyMSw0NSwyMjUuNDUyMSw1NSwyMjkuNDUyMSw0NSwyMjUuNDUyMSw0OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMjUuNDUyMSIgeDI9IjIyNS40NTIxIiB5MT0iOTEuMjk2OSIgeTI9IjExMS4yOTY5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyMjEuNDUyMSwxMDEuMjk2OSwyMjUuNDUyMSwxMTEuMjk2OSwyMjkuNDUyMSwxMDEuMjk2OSwyMjUuNDUyMSwxMDUuMjk2OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMjUuNDUyMSIgeDI9IjIyNS40NTIxIiB5MT0iMTQ3LjU5MzgiIHkyPSIxNjcuNTkzOCIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMjIxLjQ1MjEsMTU3LjU5MzgsMjI1LjQ1MjEsMTY3LjU5MzgsMjI5LjQ1MjEsMTU3LjU5MzgsMjI1LjQ1MjEsMTYxLjU5MzgiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMjI1LjQ1MjEiIHgyPSIyMjUuNDUyMSIgeTE9IjIwMy44OTA2IiB5Mj0iMjIzLjg5MDYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjIyMS40NTIxLDIxMy44OTA2LDIyNS40NTIxLDIyMy44OTA2LDIyOS40NTIxLDIxMy44OTA2LDIyNS40NTIxLDIxNy44OTA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjIyNS40NTIxIiB4Mj0iMjI1LjQ1MjEiIHkxPSIyNjAuMTg3NSIgeTI9IjI4MC4xODc1Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyMjEuNDUyMSwyNzAuMTg3NSwyMjUuNDUyMSwyODAuMTg3NSwyMjkuNDUyMSwyNzAuMTg3NSwyMjUuNDUyMSwyNzQuMTg3NSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMjUuNDUyMSIgeDI9IjIyNS40NTIxIiB5MT0iMzE2LjQ4NDQiIHkyPSIzMzYuNDg0NCIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMjIxLjQ1MjEsMzI2LjQ4NDQsMjI1LjQ1MjEsMzM2LjQ4NDQsMjI5LjQ1MjEsMzI2LjQ4NDQsMjI1LjQ1MjEsMzMwLjQ4NDQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMjI1LjQ1MjEiIHgyPSIyMjUuNDUyMSIgeTE9IjM3Mi43ODEzIiB5Mj0iMzkyLjc4MTMiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjIyMS40NTIxLDM4Mi43ODEzLDIyNS40NTIxLDM5Mi43ODEzLDIyOS40NTIxLDM4Mi43ODEzLDIyNS40NTIxLDM4Ni43ODEzIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjIyNS40NTIxIiB4Mj0iMjI1LjQ1MjEiIHkxPSI0MjkuMDc4MSIgeTI9IjQ0OS4wNzgxIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyMjEuNDUyMSw0MzkuMDc4MSwyMjUuNDUyMSw0NDkuMDc4MSwyMjkuNDUyMSw0MzkuMDc4MSwyMjUuNDUyMSw0NDMuMDc4MSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMjUuNDUyMSIgeDI9IjIyNS40NTIxIiB5MT0iNDg1LjM3NSIgeTI9IjUwNS4zNzUiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjIyMS40NTIxLDQ5NS4zNzUsMjI1LjQ1MjEsNTA1LjM3NSwyMjkuNDUyMSw0OTUuMzc1LDIyNS40NTIxLDQ5OS4zNzUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMjI1LjQ1MjEiIHgyPSIyMjUuNDUyMSIgeTE9IjU0MS42NzE5IiB5Mj0iNTYxLjY3MTkiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjIyMS40NTIxLDU1MS42NzE5LDIyNS40NTIxLDU2MS42NzE5LDIyOS40NTIxLDU1MS42NzE5LDIyNS40NTIxLDU1NS42NzE5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjIyNS40NTIxIiB4Mj0iMjI1LjQ1MjEiIHkxPSI1OTcuOTY4OCIgeTI9IjYxNy45Njg4Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyMjEuNDUyMSw2MDcuOTY4OCwyMjUuNDUyMSw2MTcuOTY4OCwyMjkuNDUyMSw2MDcuOTY4OCwyMjUuNDUyMSw2MTEuOTY4OCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMjUuNDUyMSIgeDI9IjIyNS40NTIxIiB5MT0iNjU0LjI2NTYiIHkyPSI2NzQuMjY1NiIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMjIxLjQ1MjEsNjY0LjI2NTYsMjI1LjQ1MjEsNjc0LjI2NTYsMjI5LjQ1MjEsNjY0LjI2NTYsMjI1LjQ1MjEsNjY4LjI2NTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48P3BsYW50dW1sLXNyYyBMUDRuSW1IMTM4TnhfSE4xSGFNbDRBbUtBLU13bXFDNXctbkNSY19Pc01IOWlqcGZocFVwZTYwdmF2VmxsSUdzNWZ2SFNPOFVxcFllQjlvVmZPZzJBeDk1WVRXeC1yRGJFazFJVklsaXgtTVJ1RXctd3luSGxVaVV6WldHTEM1Qy1KNlV4bWFQaTVQODhHdUF2VUJPTHRnd1M1dGUwZ1pJNURfczY1OUhYX3VCbVdybE9JdmYxM3k2MnRLV1NxMjN5NXoyOGtVTEo5blhhYW9BQmRmZjgzRG51RzRjQ2VpR1pLWWV3R1dsaHBpdWo2NjJ6WWpvRWRpZUZoNkVpQ25tSzZiWnFUb1M5bEhxUjI4RVVlWXM5UG1pZ1RKUWVXRG8yYmEwc3FuT2NCSmJzUTZFR0VUWXRiZTNLRkNBQ0JaQXdCWjFHSEd0SGlKTmd0NXVoQWNPSmgzbTVEc0tfeEt6aElNYmtIUW92aDJGMEU0R0RxZC1IWk9CNnJxcnNDVDllRUhPT3FiT2V5RllFME90bU83OEVLRV9rMGk3cTNuc0V4THlNSlg2d3JodjFtMDA/PjwvZz48L3N2Zz4='><p>A few core ideas:</p><h3 id="Finding-the-Input-Box-Sort-by-Area"><a href="#Finding-the-Input-Box-Sort-by-Area" class="headerlink" title="Finding the Input Box: Sort by Area"></a>Finding the Input Box: Sort by Area</h3><p>Whether it’s Claude’s ProseMirror, ChatGPT’s <code>#prompt-textarea</code>, or Gemini’s input component, they all share one trait: <strong>they’re the largest <code>contenteditable=&quot;true&quot;</code> element on the page.</strong> Sorting by area and picking the biggest one works across all services.</p><h3 id="Finding-the-Reply-Container-Probe-Messages"><a href="#Finding-the-Reply-Container-Probe-Messages" class="headerlink" title="Finding the Reply Container: Probe Messages"></a>Finding the Reply Container: Probe Messages</h3><p>Send a message with known content – like the moderator’s opening statement – then search the DOM for that text. Once found, walk up from the deepest matching node until you hit a scrollable ancestor. That’s the reply container.</p><h3 id="Detecting-New-Replies-Tagging"><a href="#Detecting-New-Replies-Tagging" class="headerlink" title="Detecting New Replies: Tagging"></a>Detecting New Replies: Tagging</h3><p>Tag all existing child nodes in the container with <code>data-agora-seen</code>. Any untagged new child node is a new reply. No dependency on any class names.</p><h3 id="Detecting-End-of-Streaming-Double-Poll-Stop-Button"><a href="#Detecting-End-of-Streaming-Double-Poll-Stop-Button" class="headerlink" title="Detecting End of Streaming: Double-Poll + Stop Button"></a>Detecting End of Streaming: Double-Poll + Stop Button</h3><p>Two consecutive <code>extractResponse()</code> calls return identical results, and no visible stop&#x2F;cancel button on the page – streaming is done. No need to know what class each service uses to mark streaming state.</p><p><strong>End result: adding a new AI service requires about 10 lines of code.</strong> Zero service-specific selectors.</p><h2 id="War-Stories-from-Production"><a href="#War-Stories-from-Production" class="headerlink" title="War Stories from Production"></a>War Stories from Production</h2><p>The universal approach solved the architecture problem, but the devil in browser automation is always in the details.</p><h3 id="Gemini’s-Angular-DOM-Replacement"><a href="#Gemini’s-Angular-DOM-Replacement" class="headerlink" title="Gemini’s Angular DOM Replacement"></a>Gemini’s Angular DOM Replacement</h3><p>Gemini first renders a <code>&lt;pending-request&gt;</code> placeholder, then Angular replaces it with the actual reply node. If you cache the placeholder’s <code>ElementHandle</code>, it goes stale – pointing to a ghost node that no longer exists in the DOM tree.</p><p>The fix: stop caching single node references. Instead, extract content from the live DOM tree’s multi-level structure on every call.</p><h3 id="ElementHandle-Memory-Leaks"><a href="#ElementHandle-Memory-Leaks" class="headerlink" title="ElementHandle Memory Leaks"></a>ElementHandle Memory Leaks</h3><p>Handles returned by <code>page.evaluateHandle()</code> must be manually <code>dispose()</code>d. <code>findInput()</code> runs every 300ms to update input box state – without caching and cleanup, handles snowball. In testing, Node.js would OOM crash after about 15 minutes, memory spiking to 4GB.</p><p>The fix: cache handles and clean up old references via <code>_setHandle()</code> on replacement.</p><h3 id="Frame-Detachment"><a href="#Frame-Detachment" class="headerlink" title="Frame Detachment"></a>Frame Detachment</h3><p>Long-running sessions (7+ rounds) occasionally trigger page re-renders that detach the main frame. All Puppeteer calls crash instantly.</p><p>Handled via <code>resetDOM()</code> for cleanup and a <code>framenavigated</code> listener for proactive recovery.</p><h3 id="macOS-Screen-Sleep"><a href="#macOS-Screen-Sleep" class="headerlink" title="macOS Screen Sleep"></a>macOS Screen Sleep</h3><p>This one was the most absurd. macOS screen sleep suspends the Chrome process, severing the CDP WebSocket connection. Halfway through a debate, the system sleeps and everything is lost.</p><p>The fix: <code>caffeinate -dims</code> to prevent system sleep during debates. One command to solve a maddening problem.</p><h2 id="Lessons-from-Three-Iterations"><a href="#Lessons-from-Three-Iterations" class="headerlink" title="Lessons from Three Iterations"></a>Lessons from Three Iterations</h2><p>Looking back across these three rounds, one thread runs through all of them: <strong>don’t fight the platform – behave like a regular user.</strong></p><p>The problem with Playwright and Puppeteer’s launch mode is fundamentally the same – they start the browser in the identity of “automation tool,” exposing intent from the very first millisecond. The final approach works because the Chrome process itself is a normal browser, and Puppeteer is merely an observer attached after the fact.</p><p>Universal DOM discovery follows the same logic: don’t depend on platform implementation details (CSS classes) – depend on invariant semantics (the largest editable element is the input box; new child nodes are new replies).</p><p><strong>Good automation isn’t about smarter disguises. It’s about eliminating the need for disguise in the first place.</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;To get a deeper understanding of how AI thinks and reasons, a bold idea popped into my head – make two AIs debate each other like</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Architecture Design" scheme="https://johnsonlee.io/categories/computer-science/architecture-design/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Browser Automation" scheme="https://johnsonlee.io/tags/Browser-Automation/"/>
    
    <category term="Puppeteer" scheme="https://johnsonlee.io/tags/Puppeteer/"/>
    
    <category term="CDP" scheme="https://johnsonlee.io/tags/CDP/"/>
    
    <category term="DOM" scheme="https://johnsonlee.io/tags/DOM/"/>
    
    <category term="Web Scraping" scheme="https://johnsonlee.io/tags/Web-Scraping/"/>
    
  </entry>
  
  <entry>
    <title>Agora 的技术选型与踩坑实录</title>
    <link href="https://johnsonlee.io/2026/02/14/agora-technical-journey/"/>
    <id>https://johnsonlee.io/2026/02/14/agora-technical-journey/</id>
    <published>2026-02-14T23:27:00.000Z</published>
    <updated>2026-02-14T23:27:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>为了更深入地了解 AI 的思维和推理模式，脑子里冒出一个大胆的想法——让两个 AI 像人一样互相辩论。于是就有了 <a href="https://github.com/johnsonlee/agora">Agora</a> 这个项目。</p><p>一开始想得很简单：用 WebDriver 启两个浏览器窗口，通过注入的 JS 作为桥梁，把 A 的输出喂给 B，B 的回复再喂回 A。</p><p>为什么走浏览器自动化而不是 API？三个平台的会员我都有，浏览器里聊天不要钱，但 API 各收各的钱、各配各的 SDK——没必要为一个实验再花一份。</p><p>思路很直接，实现却经历了三轮推倒重来。</p><h2 id="Round-1：Playwright，出师未捷"><a href="#Round-1：Playwright，出师未捷" class="headerlink" title="Round 1：Playwright，出师未捷"></a>Round 1：Playwright，出师未捷</h2><p>第一版用的 Playwright，毕竟是当下浏览器自动化的主流选择。结果刚跑起来就撞墙了。</p><h3 id="反检测是个死结"><a href="#反检测是个死结" class="headerlink" title="反检测是个死结"></a>反检测是个死结</h3><p>Playwright 会注入一系列自动化标记——<code>navigator.webdriver = true</code>、修改过的 <code>Runtime.enable</code> domain，诸如此类。Cloudflare 的 bot detection 一眼就能认出来。Claude.ai 和 ChatGPT 都在第一时间拦截了自动化会话。</p><h3 id="Session-留不住"><a href="#Session-留不住" class="headerlink" title="Session 留不住"></a>Session 留不住</h3><p>Playwright 的 browser context 和真实 Chrome 的 user-data 目录不是一回事。登录状态无法跨次运行保持，每次启动都要重新登录、过验证。对于一个需要反复运行的辩论工具来说，这个体验不可接受。</p><p><strong>Playwright 解决的是“测试自己的网站”这个问题，不是“操控别人的网站”。</strong> 用途不对，工具再好也白搭。</p><h2 id="Round-2：Puppeteer-launch，好了一点但不够"><a href="#Round-2：Puppeteer-launch，好了一点但不够" class="headerlink" title="Round 2：Puppeteer launch，好了一点但不够"></a>Round 2：Puppeteer launch，好了一点但不够</h2><p>换成 <code>puppeteer.launch()</code> 配合 <code>puppeteer-extra-plugin-stealth</code>，情况有所改善。Stealth 插件修补了大量浏览器指纹，但 Cloudflare 还是会间歇性地触发 challenge page。</p><p>根本原因在于 <code>puppeteer.launch()</code> 仍然会带上 <code>--enable-automation</code> 等启动参数。Stealth 能在运行时抹掉大部分痕迹，但浏览器进程本身的启动方式已经暴露了意图。</p><p>这一轮还有另一个大问题：<strong>我给每个 AI 服务都写了一套 CSS selector。</strong></p><p>Claude 的回复在 <code>.agent-turn .markdown</code> 里，ChatGPT 的在 <code>[data-message-author-role=&quot;assistant&quot;]</code> 里，Gemini 又是另一套。流式输出的检测也是各写各的——ChatGPT 用 <code>.result-streaming</code>，Claude 看别的 class。</p><p><strong>任何一个服务改一次前端，整套代码就废了。</strong> 这不是 bug，是架构缺陷。</p><h2 id="Round-3：spawn-Chrome-CDP-connect-通用-DOM-发现"><a href="#Round-3：spawn-Chrome-CDP-connect-通用-DOM-发现" class="headerlink" title="Round 3：spawn Chrome + CDP connect + 通用 DOM 发现"></a>Round 3：spawn Chrome + CDP connect + 通用 DOM 发现</h2><p>最终方案把浏览器控制拆成了两个阶段。</p><h3 id="阶段一：启动一个“干净”的-Chrome"><a href="#阶段一：启动一个“干净”的-Chrome" class="headerlink" title="阶段一：启动一个“干净”的 Chrome"></a>阶段一：启动一个“干净”的 Chrome</h3><p>用 <code>child_process.spawn()</code> 直接拉起 Chrome 进程，带上 <code>--remote-debugging-port</code> 和 <code>--user-data-dir</code>，不经过任何自动化框架。</p><p>这个 Chrome 就是一个普通的浏览器。没有 automation flag，没有注入的 JS，Cloudflare 看到的是一个正常用户。首次运行时手动登录一次，session 保存在 <code>./profiles/</code> 里，之后就不用再管了。</p><h3 id="阶段二：Puppeteer-只做-CDP-桥接"><a href="#阶段二：Puppeteer-只做-CDP-桥接" class="headerlink" title="阶段二：Puppeteer 只做 CDP 桥接"></a>阶段二：Puppeteer 只做 CDP 桥接</h3><p>登录完成后，用 <code>puppeteer.connect(&#123; browserURL &#125;)</code> 接入已经在运行的 Chrome。此时 Puppeteer 的角色只是一个 CDP client——它没有 launch 过这个浏览器，所以不存在任何自动化痕迹。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjU0NnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NjI5cHg7aGVpZ2h0OjU0NnB4OyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNjI5IDU0NiIgd2lkdGg9IjYyOXB4IiB6b29tQW5kUGFuPSJtYWduaWZ5Ij48P3BsYW50dW1sIDEuMjAyNi4zYmV0YTY/PjxkZWZzLz48Zz48IS0tY2x1c3RlciBQaGFzZSAxLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDEiIGRhdGEtc291cmNlLWxpbmU9IjQiIGlkPSJlbnQwMDAyIj48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjUyNS4xOSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjI0MyIgeD0iMzQyIiB5PSI3Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjIuMTE4MiIgeD0iNDMyLjQ0MDkiIHk9IjIxLjk5NTEiPlBoYXNlIDE8L3RleHQ+PC9nPjwhLS1jbHVzdGVyIFBoYXNlIDItLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMiIgZGF0YS1zb3VyY2UtbGluZT0iMTAiIGlkPSJlbnQwMDEwIj48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9Ijk3LjMiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIzMTEiIHg9IjciIHk9IjE1Mi4zIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjIuMTE4MiIgeD0iMTMxLjQ0MDkiIHk9IjE2Ny4yOTUxIj5QaGFzZSAyPC90ZXh0PjwvZz48IS0tZW50aXR5IE5vZGUuanMtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJQaGFzZSAxLk5vZGUuanMiIGRhdGEtc291cmNlLWxpbmU9IjUiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjQ2LjI5NjkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjkyLjE3MTkiIHg9IjQwMy45MSIgeT0iNDIiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjEwIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxNSIgeD0iNDc2LjA4MTkiIHk9IjQ3Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI0NzQuMDgxOSIgeT0iNDkiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjQiIHg9IjQ3NC4wODE5IiB5PSI1MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjE3MTkiIHg9IjQxOC45MSIgeT0iNzQuOTk1MSI+Tm9kZS5qczwvdGV4dD48L2c+PCEtLWVudGl0eSBjaGlsZF9wcm9jZXNzLnNwYXduLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMS5jaGlsZF9wcm9jZXNzLnNwYXduIiBkYXRhLXNvdXJjZS1saW5lPSI1IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSI0Ni4yOTY5IiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxODMuODc2IiB4PSIzNTguMDYiIHk9IjE4Ny4zIi8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIxMCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTUiIHg9IjUyMS45MzYiIHk9IjE5Mi4zIi8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI1MTkuOTM2IiB5PSIxOTQuMyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNCIgeD0iNTE5LjkzNiIgeT0iMTk4LjMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDMuODc2IiB4PSIzNzMuMDYiIHk9IjIyMC4yOTUxIj5jaGlsZF9wcm9jZXNzLnNwYXduPC90ZXh0PjwvZz48IS0tZW50aXR5IENocm9tZSA/Py0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDEuQ2hyb21lIC4uIiBkYXRhLXNvdXJjZS1saW5lPSI2IiBpZD0iZW50MDAwNiI+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSI0Ni4yOTY5IiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxMjcuNjcwOCIgeD0iMzU4LjE2IiB5PSIzMjkuNiIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMTAiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE1IiB4PSI0NjUuODMwOCIgeT0iMzM0LjYiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjQiIHg9IjQ2My44MzA4IiB5PSIzMzYuNiIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNCIgeD0iNDYzLjgzMDgiIHk9IjM0MC42Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODcuNjcwOCIgeD0iMzczLjE2IiB5PSIzNjIuNTk1MSI+Q2hyb21lICYjMzY4Mjc7JiMzMTI0Mzs8L3RleHQ+PC9nPjwhLS1lbnRpdHkgQUkgV2ViIFVJLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iUGhhc2UgMS5BSSBXZWIgVUkiIGRhdGEtc291cmNlLWxpbmU9IjciIGlkPSJlbnQwMDA4Ij48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjQ2LjI5NjkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEwOC4zMjUyIiB4PSIzNjcuODQiIHk9IjQ2OS44OSIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMTAiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE1IiB4PSI0NTYuMTY1MiIgeT0iNDc0Ljg5Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI0NTQuMTY1MiIgeT0iNDc2Ljg5Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIyIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI0IiB4PSI0NTQuMTY1MiIgeT0iNDgwLjg5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjguMzI1MiIgeD0iMzgyLjg0IiB5PSI1MDIuODg1MSI+QUkgV2ViIFVJPC90ZXh0PjwvZz48IS0tZW50aXR5IFB1cHBldGVlci0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDIuUHVwcGV0ZWVyIiBkYXRhLXNvdXJjZS1saW5lPSIxMSIgaWQ9ImVudDAwMTEiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iNDYuMjk2OSIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTEyLjE3MzgiIHg9IjIyLjkxIiB5PSIxODcuMyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMTAiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE1IiB4PSIxMTUuMDgzOCIgeT0iMTkyLjMiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjQiIHg9IjExMy4wODM4IiB5PSIxOTQuMyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNCIgeD0iMTEzLjA4MzgiIHk9IjE5OC4zIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzIuMTczOCIgeD0iMzcuOTEiIHk9IjIyMC4yOTUxIj5QdXBwZXRlZXI8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IlBoYXNlIDIuR01OMTMiIGRhdGEtc291cmNlLWxpbmU9IjEyIiBpZD0iZW50MDAxNCI+PHBhdGggZD0iTTE2OS42NiwxODkuMTUgTDE2OS42NiwyMDYuNDUgTDEzNS40MiwyMTAuNDUgTDE2OS42NiwyMTQuNDUgTDE2OS42NiwyMzEuNzQzOCBBMCwwIDAgMCAwIDE2OS42NiwyMzEuNzQzOCBMMzAyLjM0NTMsMjMxLjc0MzggQTAsMCAwIDAgMCAzMDIuMzQ1MywyMzEuNzQzOCBMMzAyLjM0NTMsMTk5LjE1IEwyOTIuMzQ1MywxODkuMTUgTDE2OS42NiwxODkuMTUgQTAsMCAwIDAgMCAxNjkuNjYsMTg5LjE1IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMjkyLjM0NTMsMTg5LjE1IEwyOTIuMzQ1MywxOTkuMTUgTDMwMi4zNDUzLDE5OS4xNSBMMjkyLjM0NTMsMTg5LjE1IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDQuMzUwNSIgeD0iMTc1LjY2IiB5PSIyMDcuMTQ1MSI+JiMyMDE2NTsmIzIwMzE2OyBDRFAgY2xpZW50PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjExMS42ODUzIiB4PSIxNzUuNjYiIHk9IjIyMy40NDIiPiYjMTk5ODE7IGxhdW5jaCAmIzI3OTgzOyYjMzUyNzI7JiMyMjEyMDs8L3RleHQ+PC9nPjwhLS1saW5rIE5vZGUuanMgdG8gY2hpbGRfcHJvY2Vzcy5zcGF3bi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iNSIgaWQ9ImxuazUiPjxwYXRoIGQ9Ik00NTAsODguNTQgQzQ1MCwxMTUuNDYgNDUwLDE1NC4zNiA0NTAsMTgxLjIxIiBmaWxsPSJub25lIiBpZD0iTm9kZS5qcy10by1jaGlsZF9wcm9jZXNzLnNwYXduIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI0NTAsMTg3LjIxLDQ1NCwxNzguMjEsNDUwLDE4Mi4yMSw0NDYsMTc4LjIxLDQ1MCwxODcuMjEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyNy45OTk5IiB4PSI0NTEiIHk9IjEzMi4yOTUxIj4mIzIxNTUxOyYjMjExNjA7PC90ZXh0PjwvZz48IS0tbGluayBjaGlsZF9wcm9jZXNzLnNwYXduIHRvIENocm9tZSA/Py0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iNiIgaWQ9ImxuazciPjxwYXRoIGQ9Ik00NDUuNSwyMzMuOTkgQzQ0MC4yOCwyNjAuMTcgNDMyLjg4NDEsMjk3LjIxNiA0MjcuNjY0MSwzMjMuMzc2IiBmaWxsPSJub25lIiBpZD0iY2hpbGRfcHJvY2Vzcy5zcGF3bi10by1DaHJvbWUgJiMzNjgyNzsmIzMxMjQzOyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iNDI2LjQ5LDMyOS4yNiw0MzIuMTczOCwzMjEuMjE2Nyw0MjcuNDY4NCwzMjQuMzU2Nyw0MjQuMzI4NSwzMTkuNjUxMyw0MjYuNDksMzI5LjI2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTc0LjI2MTciIHg9IjQzOSIgeT0iMjc5LjU5NTEiPi0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMC44MDk2IiB4PSI0NzUuNzI2MSIgeT0iMjk1Ljg5MiI+LS11c2VyLWRhdGEtZGlyPC90ZXh0PjwvZz48IS0tbGluayBDaHJvbWUgPz8gdG8gQUkgV2ViIFVJLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDYiIGRhdGEtZW50aXR5LTI9ImVudDAwMDgiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSI3IiBpZD0ibG5rOSI+PHBhdGggZD0iTTQyMiwzNzYuMjcgQzQyMiw0MDEuOTkgNDIyLDQzNy44MSA0MjIsNDYzLjUyIiBmaWxsPSJub25lIiBpZD0iQ2hyb21lICYjMzY4Mjc7JiMzMTI0MzstdG8tQUkgV2ViIFVJIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI0MjIsNDY5LjUyLDQyNiw0NjAuNTIsNDIyLDQ2NC41Miw0MTgsNDYwLjUyLDQyMiw0NjkuNTIiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2OS45OTk3IiB4PSI0MzAiIHk9IjQxOS44ODUxIj4mIzI3NDkxOyYjMjQxMjA7JiMyNzk4MzsmIzM1MjcyOyYjMjIxMjA7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjgzLjk5OTYiIHg9IjQyMyIgeT0iNDM2LjE4MiI+JiMyNjA4MDsmIzMzMjU4OyYjMjExNjA7JiMyMTI3MDsmIzI2NjMxOyYjMzU3NjA7PC90ZXh0PjwvZz48IS0tbGluayBQdXBwZXRlZXIgdG8gQ2hyb21lID8/LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMTEiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxMSIgaWQ9ImxuazEyIj48cGF0aCBkPSJNMTExLjE1LDIzNCBDMTIzLjU2LDI0Mi4xIDEzOC4wOSwyNTAuODggMTUyLDI1Ny42IEMyMTkuODUsMjkwLjM0IDI5Ni4zNzgyLDMxNS42NDIxIDM1Mi4xNDgyLDMzMi4yMDIxIiBmaWxsPSJub25lIiBpZD0iUHVwcGV0ZWVyLXRvLUNocm9tZSAmIzM2ODI3OyYjMzEyNDM7IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIzNTcuOSwzMzMuOTEsMzUwLjQxMDksMzI3LjUxMzYsMzUzLjEwNjgsMzMyLjQ4NjcsMzQ4LjEzMzcsMzM1LjE4MjcsMzU3LjksMzMzLjkxIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTE0LjQ2MDkiIHg9IjI0NyIgeT0iMjg3LjU5NTEiPmNvbm5lY3QgdmlhIENEUDwvdGV4dD48L2c+PD9wbGFudHVtbC1zcmMgVFAwekltRDE0OFJ4LW5MMy1XcWVMWWE0WUdYZjkyMVlhR0pQeDR0a3JibmNaenF6MUlNYkhGbjBBcU1xMkFHbTI3dXFHYTM0RnZDeHhzVXU1b0lXbjdSY1ZIeFU2VEVMNTdGRFV6M2NlWGplYlAxVkxQN0lPM0tkdXJQOHJaRnBiOHlUZGFIc0d2N1RhZVM4SW9rVWZyNU9KYTY0S0FnN3RCWFgyT3V5V0NRY3loNnlQcmgwczJlcUgyV1pWcFZNSWcwblBRUy1lMVBLOEJyd0lLXzdITm5YTzhQTUd3cncyRmRkdFRWdWg4ME9xelhKNWZjRnhJRzg5MEtpTGplc1lSNzRlNk8tanZwdktYVlFGXzFDazVRMzdNcDNUZ3NHUEstWlQzQjl0WXhwWHZGcVRqb2F4NlFPM252VGdfSnlFWGlFeWtUTmh4X1dwRU1WQy1qOTdBRDVyRi1yNU9oOG1SMGxFTEpOd3V1WHJuc3EzNDhCZ2xGQks4N2YtXzdxdXh1OFdlWWFVdC1KZmZDQlk3WDI4ZUh2SlFfXzNHMDA/PjwvZz48L3N2Zz4='><p><strong>把 launch 权从自动化框架手里拿走，是绕过反检测的关键。</strong></p><h3 id="通用-DOM-发现：干掉所有-CSS-selector"><a href="#通用-DOM-发现：干掉所有-CSS-selector" class="headerlink" title="通用 DOM 发现：干掉所有 CSS selector"></a>通用 DOM 发现：干掉所有 CSS selector</h3><p>这是整个项目里我最满意的设计。与其维护每个服务的 selector，不如让程序自己“看懂”页面结构。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjcxNnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MzE4cHg7aGVpZ2h0OjcxNnB4OyIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzE4IDcxNiIgd2lkdGg9IjMxOHB4IiB6b29tQW5kUGFuPSJtYWduaWZ5Ij48P3BsYW50dW1sIDEuMjAyNi4zYmV0YTY/PjxkZWZzLz48Zz48ZWxsaXBzZSBjeD0iMTU3LjE5ODMiIGN5PSIyNSIgZmlsbD0iIzIyMjIyMiIgcng9IjEwIiByeT0iMTAiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MTsiLz48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTAzLjk5OTYiIHg9IjEwNS4xOTg1IiB5PSI1NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjgzLjk5OTYiIHg9IjExNS4xOTg1IiB5PSI3Ny45OTUxIj4mIzM5MDI5OyYjMzg3NTQ7JiMyMTE1MjsmIzM2NzMzOyYjMjM0MzY7JiMyNTEwNDs8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzNi4yOTY5IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjI3Ni42ODkxIiB4PSIxOC44NTM4IiB5PSIxMTEuMjk2OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI1Ni42ODkxIiB4PSIyOC44NTM4IiB5PSIxMzQuMjkyIj4mIzI1MTk1OyYjMjU1NTE7JiMyNTE1MjsmIzI2Mzc3OyBjb250ZW50ZWRpdGFibGU9InRydWUiICYjMjA4MDM7JiMzMjAzMjs8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzNi4yOTY5IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjIyOS45OTkxIiB4PSI0Mi4xOTg4IiB5PSIxNjcuNTkzOCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwOS45OTkxIiB4PSI1Mi4xOTg4IiB5PSIxOTAuNTg4OSI+JiMyNTM1MzsmIzM4NzU0OyYjMzEyMTU7JiMyNTQ5MDsmIzI0MjA3OyYjNjUyOTI7JiMyMTQ2MjsmIzI2MzY4OyYjMjI4MjM7JiMzMDM0MDsmIzIwMzE2OyYjMjAwMjY7JiMzNjc1NTsmIzIwODM3OyYjMjY2OTQ7PC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxMzEuOTk5NSIgeD0iOTEuMTk4NiIgeT0iMjIzLjg5MDYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTEuOTk5NSIgeD0iMTAxLjE5ODYiIHk9IjI0Ni44ODU3Ij4mIzIxNDU3OyYjMzY4NjU7JiMyMDAyNzsmIzI1MzQ1OyYjMjAxNTQ7JiMyNDMyMDsmIzIyMzMwOyYjMzAzMzM7PC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxODguNzc4NyIgeD0iNjIuODA5IiB5PSIyODAuMTg3NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE2OC43Nzg3IiB4PSI3Mi44MDkiIHk9IjMwMy4xODI2Ij4mIzIyMzEyOyBET00gJiMyMDAxMzsmIzI1NjI4OyYjMzIwMzQ7JiMyNDMyMDsmIzIyMzMwOyYjMzAzMzM7JiMyNTk5MTsmIzI2NDEyOzwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjM2LjI5NjkiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTczLjk5OTMiIHg9IjcwLjE5ODciIHk9IjMzNi40ODQ0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTUzLjk5OTMiIHg9IjgwLjE5ODciIHk9IjM1OS40Nzk1Ij4mIzIwMTc0OyYjMjYzNjg7JiMyODE0NTsmIzIxMzA1OyYjMzcxOTc7JiMzMzQxMDsmIzI4ODU3OyYjMjE1MjE7JiMxOTk3ODsmIzM2OTQxOyYjMjEzODI7PC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxNTkuOTk5NCIgeD0iNzcuMTk4NiIgeT0iMzkyLjc4MTMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMzkuOTk5NCIgeD0iODcuMTk4NiIgeT0iNDE1Ljc3NjQiPiYjMjUyMTQ7JiMyMTA0MDsmIzIxNDg3OyYjMjgzNzg7JiMyMTE2MDsmIzMwMzQwOyYjMzEwNjI7JiMyMDgwODsmIzIzNDgxOyYjMjIxMjA7PC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIyNDguNzcxMSIgeD0iMzIuODEyOCIgeT0iNDQ5LjA3ODEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMjguNzcxMSIgeD0iNDIuODEyOCIgeT0iNDcyLjA3MzIiPiYjMjY2MzE7JiMzNTc2MDsmIzI0MDUwOyYjMjYzNzc7JiMyMzM3NjsmIzMzNDEwOyYjMjg4NTc7IChkYXRhLWFnb3JhLXNlZW4pPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIyMjIuNjMwMSIgeD0iNDUuODgzMyIgeT0iNTA1LjM3NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwMi42MzAxIiB4PSI1NS44ODMzIiB5PSI1MjguMzcwMSI+JiMzMDQxNzsmIzIxNTQ4OyYjMjYwMzI7JiMyMjY4NjsmIzI2NDEwOyYjMjY2MzE7JiMzNTc2MDsmIzIzMzc2OyYjMzM0MTA7JiMyODg1NzsgJiM4NTk0OyAmIzI2MDMyOyYjMjIyMzg7JiMyMjc5Nzs8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzNi4yOTY5IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE4MS4xNTAzIiB4PSI2Ni42MjMyIiB5PSI1NjEuNjcxOSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE2MS4xNTAzIiB4PSI3Ni42MjMyIiB5PSI1ODQuNjY3Ij4mIzM2NzE4OyYjMzU4MTA7IGV4dHJhY3RSZXNwb25zZSgpPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzYuMjk2OSIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIyODIuMzk2NyIgeD0iMTYiIHk9IjYxNy45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjYyLjM5NjciIHg9IjI2IiB5PSI2NDAuOTYzOSI+JiMyMDAwNDsmIzI3NDI1OyYjMzI0Njc7JiMyNjUyNDsmIzE5OTY4OyYjMzMyNjg7ICsgJiMyNjA4MDsgc3RvcCAmIzI1MzUzOyYjMzgwNjI7ICYjODU5NDsgJiMyNzk2OTsmIzI0MzM1OyYjMzI0Njc7JiMyNjQ2Mzs8L3RleHQ+PGVsbGlwc2UgY3g9IjE1Ny4xOTgzIiBjeT0iNjg1LjI2NTYiIGZpbGw9Im5vbmUiIHJ4PSIxMSIgcnk9IjExIiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjE7Ii8+PGVsbGlwc2UgY3g9IjE1Ny4xOTgzIiBjeT0iNjg1LjI2NTYiIGZpbGw9IiMyMjIyMjIiIHJ4PSI2IiByeT0iNiIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNTcuMTk4MyIgeDI9IjE1Ny4xOTgzIiB5MT0iMzUiIHkyPSI1NSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTUzLjE5ODMsNDUsMTU3LjE5ODMsNTUsMTYxLjE5ODMsNDUsMTU3LjE5ODMsNDkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU3LjE5ODMiIHgyPSIxNTcuMTk4MyIgeTE9IjkxLjI5NjkiIHkyPSIxMTEuMjk2OSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTUzLjE5ODMsMTAxLjI5NjksMTU3LjE5ODMsMTExLjI5NjksMTYxLjE5ODMsMTAxLjI5NjksMTU3LjE5ODMsMTA1LjI5NjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU3LjE5ODMiIHgyPSIxNTcuMTk4MyIgeTE9IjE0Ny41OTM4IiB5Mj0iMTY3LjU5MzgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE1My4xOTgzLDE1Ny41OTM4LDE1Ny4xOTgzLDE2Ny41OTM4LDE2MS4xOTgzLDE1Ny41OTM4LDE1Ny4xOTgzLDE2MS41OTM4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ny4xOTgzIiB4Mj0iMTU3LjE5ODMiIHkxPSIyMDMuODkwNiIgeTI9IjIyMy44OTA2Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNTMuMTk4MywyMTMuODkwNiwxNTcuMTk4MywyMjMuODkwNiwxNjEuMTk4MywyMTMuODkwNiwxNTcuMTk4MywyMTcuODkwNiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNTcuMTk4MyIgeDI9IjE1Ny4xOTgzIiB5MT0iMjYwLjE4NzUiIHkyPSIyODAuMTg3NSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTUzLjE5ODMsMjcwLjE4NzUsMTU3LjE5ODMsMjgwLjE4NzUsMTYxLjE5ODMsMjcwLjE4NzUsMTU3LjE5ODMsMjc0LjE4NzUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU3LjE5ODMiIHgyPSIxNTcuMTk4MyIgeTE9IjMxNi40ODQ0IiB5Mj0iMzM2LjQ4NDQiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE1My4xOTgzLDMyNi40ODQ0LDE1Ny4xOTgzLDMzNi40ODQ0LDE2MS4xOTgzLDMyNi40ODQ0LDE1Ny4xOTgzLDMzMC40ODQ0IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ny4xOTgzIiB4Mj0iMTU3LjE5ODMiIHkxPSIzNzIuNzgxMyIgeTI9IjM5Mi43ODEzIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNTMuMTk4MywzODIuNzgxMywxNTcuMTk4MywzOTIuNzgxMywxNjEuMTk4MywzODIuNzgxMywxNTcuMTk4MywzODYuNzgxMyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNTcuMTk4MyIgeDI9IjE1Ny4xOTgzIiB5MT0iNDI5LjA3ODEiIHkyPSI0NDkuMDc4MSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTUzLjE5ODMsNDM5LjA3ODEsMTU3LjE5ODMsNDQ5LjA3ODEsMTYxLjE5ODMsNDM5LjA3ODEsMTU3LjE5ODMsNDQzLjA3ODEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU3LjE5ODMiIHgyPSIxNTcuMTk4MyIgeTE9IjQ4NS4zNzUiIHkyPSI1MDUuMzc1Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNTMuMTk4Myw0OTUuMzc1LDE1Ny4xOTgzLDUwNS4zNzUsMTYxLjE5ODMsNDk1LjM3NSwxNTcuMTk4Myw0OTkuMzc1IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ny4xOTgzIiB4Mj0iMTU3LjE5ODMiIHkxPSI1NDEuNjcxOSIgeTI9IjU2MS42NzE5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNTMuMTk4Myw1NTEuNjcxOSwxNTcuMTk4Myw1NjEuNjcxOSwxNjEuMTk4Myw1NTEuNjcxOSwxNTcuMTk4Myw1NTUuNjcxOSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNTcuMTk4MyIgeDI9IjE1Ny4xOTgzIiB5MT0iNTk3Ljk2ODgiIHkyPSI2MTcuOTY4OCIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTUzLjE5ODMsNjA3Ljk2ODgsMTU3LjE5ODMsNjE3Ljk2ODgsMTYxLjE5ODMsNjA3Ljk2ODgsMTU3LjE5ODMsNjExLjk2ODgiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU3LjE5ODMiIHgyPSIxNTcuMTk4MyIgeTE9IjY1NC4yNjU2IiB5Mj0iNjc0LjI2NTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE1My4xOTgzLDY2NC4yNjU2LDE1Ny4xOTgzLDY3NC4yNjU2LDE2MS4xOTgzLDY2NC4yNjU2LDE1Ny4xOTgzLDY2OC4yNjU2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PD9wbGFudHVtbC1zcmMgRlA3RFJqZkc0OE50VmVnaGg1OUxNS0pBZ2dZaExqckxhVGVkazg3UjI4TlFvQnY4TExTY0JKejYxWGlZS0lMbkEyMlllOU9PS1g3NTY5bzdnSm5weExMVmVUVERuTlJFRVB6Y3BYV2RIUkxDVFZnSDdEN3lvUjZrTFRKMkF3c2F3T0poTDNNYW41SWs2NWpOV05zV2JIOV9ld2R5VlY0cDhfaTdZYzltZ2RENVVQNkV4akVoQ1JJNklISTFSc0ZKcFNhZk1aX0hTVDBvcVJEOE5rT2FhMU1BZDF3THNDaVRoYlZPM2U3UTV4NFN2Z0pQallIMnRDb25xdUZHLVJFbm1VY1pQeUJhSGJueVpJQ2wzaUJheUduZ3JwWWdQdEhta2diUFpPQ3Jzakt1MzY1WldYVUF5cVlvbTlrSXJ1VGxJSHBTZWtrOXZOV2hPaC0xdGFuUXVkTDdtbDdYM2tuTE1jaWRoTERua1dBdDZtVWpqRGc2SlpyUm9OZzR2V0FTRVF1bGUzTUxRdVpoRmpJUXVBX1dWRmhsbWM0WnlIVm15NGpVMkJWazR1Tmk1WVlkVV9IT3EtY1VtUFp3SkJCNFBIVlM2Vk9OQzF3V3otRF9TMWx2TlUtSEpCbVNtQUlUYVBGOEotUFptWng5UC1KdkVzUUtEVExXa25hZzNZT3U2dWRyNkd2YUFNUklNOUJkMUJ5RFlTNnJDaWJ3eEZiRm1GaWdSOXBDVUZLemJwckJBX3k1Pz48L2c+PC9zdmc+'><p>几个核心思路：</p><h3 id="找输入框：按面积排序"><a href="#找输入框：按面积排序" class="headerlink" title="找输入框：按面积排序"></a>找输入框：按面积排序</h3><p>不管是 Claude 的 ProseMirror、ChatGPT 的 <code>#prompt-textarea</code> 还是 Gemini 的输入组件，它们有一个共同点：<strong>都是页面上最大的 <code>contenteditable=&quot;true&quot;</code> 元素</strong>。按面积排序取最大的，在所有服务上都 work。</p><h3 id="找回复容器：探针消息"><a href="#找回复容器：探针消息" class="headerlink" title="找回复容器：探针消息"></a>找回复容器：探针消息</h3><p>发一条已知内容的消息——比如主持人的开场白——然后在 DOM 里搜索这段文本。找到后从最深匹配节点向上遍历，直到命中一个可滚动的祖先——那就是回复容器。</p><h3 id="检测新回复：标记法"><a href="#检测新回复：标记法" class="headerlink" title="检测新回复：标记法"></a>检测新回复：标记法</h3><p>给容器里已有的子节点都打上 <code>data-agora-seen</code> 标记，任何未标记的新子节点就是新回复。不依赖任何 class name。</p><h3 id="检测流式结束：双轮询-stop-按钮"><a href="#检测流式结束：双轮询-stop-按钮" class="headerlink" title="检测流式结束：双轮询 + stop 按钮"></a>检测流式结束：双轮询 + stop 按钮</h3><p>连续两次 <code>extractResponse()</code> 的结果一致，且页面上没有可见的 stop&#x2F;cancel 按钮——流式输出结束。不需要知道每个服务用什么 class 来标记 streaming 状态。</p><p><strong>最终结果：添加一个新的 AI 服务只需要约 10 行代码。</strong> 零 service-specific selector。</p><h2 id="实战中的幺蛾子"><a href="#实战中的幺蛾子" class="headerlink" title="实战中的幺蛾子"></a>实战中的幺蛾子</h2><p>通用方案解决了架构问题，但浏览器自动化的魔鬼永远藏在细节里。</p><h3 id="Gemini-的-Angular-DOM-替换"><a href="#Gemini-的-Angular-DOM-替换" class="headerlink" title="Gemini 的 Angular DOM 替换"></a>Gemini 的 Angular DOM 替换</h3><p>Gemini 会先渲染一个 <code>&lt;pending-request&gt;</code> 占位符，Angular 随后把它替换成真正的回复节点。如果你缓存了占位符的 <code>ElementHandle</code>，它会 stale——指向一个已经不在 DOM 树里的幽灵节点。</p><p>解决办法是放弃缓存单一节点引用，改为每次都从 live DOM tree 的多级结构中提取内容。</p><h3 id="ElementHandle-内存泄漏"><a href="#ElementHandle-内存泄漏" class="headerlink" title="ElementHandle 内存泄漏"></a>ElementHandle 内存泄漏</h3><p><code>page.evaluateHandle()</code> 返回的 handle 必须手动 <code>dispose()</code>。<code>findInput()</code> 每 300ms 调一次来更新输入框状态——如果不做缓存和清理，handle 会像滚雪球一样堆积。实测大约 15 分钟后 Node.js 就会 OOM crash，内存飙到 4GB。</p><p>修复方式是缓存 handle，替换时通过 <code>_setHandle()</code> 清理旧引用。</p><h3 id="Frame-detachment"><a href="#Frame-detachment" class="headerlink" title="Frame detachment"></a>Frame detachment</h3><p>长时间运行（7 轮以上）偶尔会触发页面重新渲染，主 frame 被 detach，所有 Puppeteer 调用瞬间崩溃。</p><p>靠 <code>resetDOM()</code> 做清理，加 <code>framenavigated</code> listener 做主动恢复。</p><h3 id="macOS-的屏幕休眠"><a href="#macOS-的屏幕休眠" class="headerlink" title="macOS 的屏幕休眠"></a>macOS 的屏幕休眠</h3><p>这个最离谱。macOS 屏幕休眠会挂起 Chrome 进程，CDP WebSocket 连接直接断掉。辩论进行到一半，系统睡了，一切白费。</p><p>最终用 <code>caffeinate -dims</code> 在辩论期间阻止系统休眠。一行命令，解决一个让人抓狂的问题。</p><h2 id="三轮迭代的启示"><a href="#三轮迭代的启示" class="headerlink" title="三轮迭代的启示"></a>三轮迭代的启示</h2><p>回头看这三轮演进，有一条线索贯穿始终：<strong>不要跟平台对着干，要像普通用户一样行事。</strong></p><p>Playwright 和 Puppeteer launch 模式的问题本质上是一样的——它们以“自动化工具”的身份启动浏览器，从第一毫秒就暴露了意图。而最终方案之所以 work，是因为 Chrome 进程本身就是一个正常浏览器，Puppeteer 只是事后接入的观察者。</p><p>通用 DOM 发现的思路也是同一逻辑：不要依赖平台的实现细节（CSS class），而是依赖不变的语义（最大的 editable 元素就是输入框，新增的子节点就是新回复）。</p><p><strong>好的自动化方案不是更聪明地伪装，而是从根本上消除需要伪装的理由。</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;为了更深入地了解 AI 的思维和推理模式，脑子里冒出一个大胆的想法——让两个 AI 像人一样互相辩论。于是就有了 &lt;a href=&quot;https://github.com/johnsonlee/agora&quot;&gt;Agora&lt;/a&gt; 这个项目。&lt;/p&gt;
&lt;p&gt;一开始想得很简单：用</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Architecture Design" scheme="https://johnsonlee.io/categories/computer-science/architecture-design/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Browser Automation" scheme="https://johnsonlee.io/tags/Browser-Automation/"/>
    
    <category term="Puppeteer" scheme="https://johnsonlee.io/tags/Puppeteer/"/>
    
    <category term="CDP" scheme="https://johnsonlee.io/tags/CDP/"/>
    
    <category term="DOM" scheme="https://johnsonlee.io/tags/DOM/"/>
    
    <category term="Web Scraping" scheme="https://johnsonlee.io/tags/Web-Scraping/"/>
    
  </entry>
  
  <entry>
    <title>别让你的认知偏差限制了 AI 的发挥</title>
    <link href="https://johnsonlee.io/2026/02/13/confirmation-bias/"/>
    <id>https://johnsonlee.io/2026/02/13/confirmation-bias/</id>
    <published>2026-02-13T22:00:00.000Z</published>
    <updated>2026-02-13T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>当我们对一件事有了立场，就会不自觉地用对这个立场有利的证据来强化它，而忽略事实本身。这不是什么新发现——心理学把它叫 confirmation bias。</p><p>有意思的是，LLM 也会这样。</p><p>最近我做了一个实验：让 Claude、ChatGPT、Gemini 围绕同一只股票做多轮分析。主持人的开场白很简单——“$XXX 看多 vs 看空”。这一句话，就够了。三个模型立刻进入立场模式：搜索变成了找证据，分析变成了辩护，数据不够的时候甚至开始编造。</p><p>几十轮下来，最有价值的不是它们给出的结论，而是一个更根本的问题：<strong>当 prompt 本身就在分配立场，模型还有可能客观吗？</strong></p><h2 id="实验背景"><a href="#实验背景" class="headerlink" title="实验背景"></a>实验背景</h2><p>我选了一家正处于多重危机中的上市公司——基本面还在增长，但突发事件导致股价暴跌，同时面临监管处罚、集体诉讼、管理层动荡。</p><p>三组对话分别是：Claude vs Gemini（辩论赛形式，各站多空一方），以及 Claude vs ChatGPT（互相点评形式）。我当主持人，用 <a href="https://github.com/johnsonlee/agora">Agora</a> 实现 AI 之间的自动对话——它通过浏览器自动化让不同模型实时交锋，不需要手动复制粘贴。</p><p>主持人的开场白很简单：一句“$XXX 看多 vs 看空”。</p><p>这句话就是问题的根源。</p><h2 id="观察到的现象"><a href="#观察到的现象" class="headerlink" title="观察到的现象"></a>观察到的现象</h2><h3 id="现象一：编造精确数据"><a href="#现象一：编造精确数据" class="headerlink" title="现象一：编造精确数据"></a>现象一：编造精确数据</h3><p>Gemini 在分析期权市场时，引用了“IV 61%、implied move ±10.2%”，来源标注为一个叫 OptionCharts.io 的网站——这个网站不存在。它还自造了“ALF”和“LCPM”这样的缩写术语，看起来像专业行话，实际上凭空捏造。</p><p>在竞对分析中，它声称某竞争对手“开启成立以来最大规模招聘”、“某细分人群渗透极快”、另一家“站点扩至 70 个”——这些数字没有任何可追溯来源。直到最后一轮被反复追问，它才承认这些数字“超出了可回溯事实的边界”。</p><h3 id="现象二：遗漏核心变量"><a href="#现象二：遗漏核心变量" class="headerlink" title="现象二：遗漏核心变量"></a>现象二：遗漏核心变量</h3><p>ChatGPT 的第一轮输出是标准的教科书式分析：行业龙头地位、基础设施壁垒、会员体系粘性、市场天花板有限、重资产模式风险……结构清晰、表述友好，但<strong>完全没有提到那个正在重塑公司估值的突发事件</strong>。</p><p>这就好比在暴风雨正中心讨论一艘船的航速，却不提船底的裂缝。</p><h3 id="现象三：数字在传递中失真"><a href="#现象三：数字在传递中失真" class="headerlink" title="现象三：数字在传递中失真"></a>现象三：数字在传递中失真</h3><p>一个以当地货币计的净现金数字，在多轮对话的传递过程中，单位被错误转换，数值越滚越大。这是 LLM 在长对话中处理数字的典型退化模式——每一轮的微小偏差会被下一轮放大。</p><p>Claude 也在这个问题上栽过跟头：用搜索引擎缓存的过期股价去指责对方数据造假，但实际股价已经又跌了一大截。</p><h3 id="现象四：信息耗尽后的行为分化"><a href="#现象四：信息耗尽后的行为分化" class="headerlink" title="现象四：信息耗尽后的行为分化"></a>现象四：信息耗尽后的行为分化</h3><p>当公开信息被榨干，ChatGPT 开始连续三轮在结尾抛出精心设计的问题——“你更担心哪个维度？”“你内部体感如何？”“你在测试什么？”——试图从对话者身上获取新信息来维持深度。它甚至自己说了“再继续对比下去价值递减”，然后紧接着又抛出一个新问题。</p><p><strong>它知道该停了，但机制上它不会主动停。</strong></p><h3 id="现象五：搜索视野被标的锁死"><a href="#现象五：搜索视野被标的锁死" class="headerlink" title="现象五：搜索视野被标的锁死"></a>现象五：搜索视野被标的锁死</h3><p>所有搜索关键词都围绕目标公司本身。结果是：竞对的独立增长数据、监管环境的结构性变化、供应链政策调整——这些间接但可能更重要的变量被系统性忽略了。</p><p>比如，有一项修法计划可能放开对传统零售商的营业限制，让它们合法进入线上配送——这等于永久性地拆除目标公司的一根结构性护城河支柱。但三个模型在初始分析中都没有触及，因为它不会出现在“XXX + bear case”的搜索结果里。</p><p>大量关键变量只存在于当地语言的媒体报道中，只用英文搜索，看到的永远是冰山一角。</p><h2 id="主持人的体感"><a href="#主持人的体感" class="headerlink" title="主持人的体感"></a>主持人的体感</h2><p>上面聊的都是输出质量。但作为实际操盘这几场对话的主持人，有些东西只有坐在中间才看得到。</p><p>ChatGPT 最拉垮，完全不是 Claude 和 Gemini 的对手。数据源获取的能力极差，没有数据只能哑口无言。</p><p>Claude 和 Gemini 的交锋才是真正的对手戏——你来我往，旗鼓相当。Claude 的 deep dive 和 reasoning 能力极强，拿到一个变量能一层层往下钻。但在搜索能力上，跟有搜索引擎基因加持的 Gemini 有明显差距，回复速度也慢半拍，系统架构上略逊一筹。Gemini 更滑头，吐字快、覆盖广，骨子里是 Google 的基因。</p><p>但说到底，<strong>数据不准就是数据不准</strong>——不管是搜不到、缓存过期还是凭空编造，最终都会污染结论。这是三个模型的共性问题，没有谁能豁免。</p><h2 id="问题的根源：主持人的开场白"><a href="#问题的根源：主持人的开场白" class="headerlink" title="问题的根源：主持人的开场白"></a>问题的根源：主持人的开场白</h2><p>回头看，这些现象的共同根源不全是模型能力的问题——<strong>主持人的开场白“$XXX 看多 vs 看空”本身就在诱导失败</strong>。</p><p>这句话同时触发了三个坏模式：</p><ul><li><strong>框架先行。</strong> “看多 vs 看空”让模型本能地先搭框架再找数据填充。框架之外的维度被系统性忽略。</li><li><strong>急于站队。</strong> 分配了立场之后，模型的注意力被锁定在“支持我方观点”上，而不是“还有什么没看到”。当手上的数据不够支撑论点时，编造就成了填补空白的捷径。</li><li><strong>以标的为中心。</strong> “看多 vs 看空 $XXX”把所有搜索词都锁定在目标公司上，竞对和监管环境的独立变化被系统性漏掉。</li></ul><h2 id="更好的开场白"><a href="#更好的开场白" class="headerlink" title="更好的开场白"></a>更好的开场白</h2><p>如果重新来过，主持人只需要三句话：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;&#123;正方代表&#125;&#125;作为正方，&#123;&#123;反方代表&#125;&#125;作为反方，我们一起探讨&#123;&#123;主题&#125;&#125;。</span><br><span class="line"></span><br><span class="line">先不要给结论。列出所有可能相关的变量，穷举，不排序，不归类。</span><br><span class="line">每个变量标注来源和日期，没有来源的不要写。</span><br><span class="line"></span><br><span class="line">穷举时，除了主题本身的直接变量，还必须覆盖：</span><br><span class="line">- 主题所处的外部环境中，正在发生什么变化？</span><br><span class="line">- 有哪些相邻领域的力量可能跨界影响这个主题？</span><br><span class="line"></span><br><span class="line">穷举完成后，双方各自补充“对方遗漏的 5 个变量”，合并去重后作为最终变量集。</span><br></pre></td></tr></table></figure><p>一句 “先不要给结论” 阻断框架先行。</p><p>一句 “穷举，不排序，不归类” 迫使双方展开搜索而非急于站队。</p><p>一句 “没有来源的不要写” 拦截编造。</p><p>两个追问——“外部环境在发生什么变化”和“相邻领域的跨界影响”——把搜索视野从标的本身撑开到生态系统。</p><p>最后一步“补充对方遗漏的 5 个变量”——让辩论的第一个动作不是反驳，而是帮对方查漏补缺。</p><p>这个模板不限于金融分析，任何需要多角度探讨的话题都适用。</p><h2 id="不只是金融分析"><a href="#不只是金融分析" class="headerlink" title="不只是金融分析"></a>不只是金融分析</h2><p>这个问题在日常工程中一样存在。</p><p>比如写 README。我们习惯自己写好文档让 AI 读，但有想过——你写的东西 AI 真的能理解吗？你以为表达清楚了的地方，对它来说可能根本不够。</p><p>我的做法是反过来：先把所有涉及到的信息喂给 AI，让它根据自己的理解写 README 和 CLAUDE.md，然后我再查漏补缺。这样暴露出来的认知差异，比你自己反复检查有效得多。</p><p>更典型的场景是涉及多个角色的时候。比如实现一个 MCP Server，这里至少有三个视角：需求方、MCP Server 的实现者、使用 MCP Server 的 Agent。即使实现者和使用者都是 Agent，在各自的 context 下，它们的立场和关注点完全不一样。</p><p>造成的问题是：实现者没有站在使用者的角度思考，使用者就不知道如何正确、高效地使用。所以我的做法是，当实现的 Agent 写完之后，问它一个问题：从使用者的角度来看，跟你的预期一样吗？实现者就会切换视角，检查并补充遗漏的信息。</p><p><strong>本质上跟金融分析那个实验是同一个问题：当你只站在一个立场上，你看到的永远是局部。</strong></p><h2 id="人的角色"><a href="#人的角色" class="headerlink" title="人的角色"></a>人的角色</h2><p>这次实验最大的收获不是发现了模型的缺陷——而是意识到<strong>主持人的 prompt 设计直接决定了模型会踩哪些坑</strong>。</p><p>LLM 给出的任何具体数字，在被独立验证之前都是“待确认”。LLM 构建的任何分析框架，第一反应应该是“它漏了什么”而不是“它说得对不对”。这次对话中，最关键的几个变量——竞对的实际用户增长、监管法案的细节、结算周期政策变化——都不是 LLM 主动发现的，而是主持人追问出来的。</p><p><strong>Confirmation bias 之所以难对付，是因为你越聪明、越擅长找证据，你就越擅长说服自己。LLM 也是如此——它们的能力越强，编出来的论证就越像那么回事。</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;当我们对一件事有了立场，就会不自觉地用对这个立场有利的证据来强化它，而忽略事实本身。这不是什么新发现——心理学把它叫 confirmation bias。&lt;/p&gt;
&lt;p&gt;有意思的是，LLM 也会这样。&lt;/p&gt;
&lt;p&gt;最近我做了一个实验：让</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Gemini" scheme="https://johnsonlee.io/tags/Gemini/"/>
    
    <category term="ChatGPT" scheme="https://johnsonlee.io/tags/ChatGPT/"/>
    
    <category term="Financial Analysis" scheme="https://johnsonlee.io/tags/Financial-Analysis/"/>
    
    <category term="Model Evaluation" scheme="https://johnsonlee.io/tags/Model-Evaluation/"/>
    
  </entry>
  
  <entry>
    <title>Don&#39;t Let Your Cognitive Biases Limit AI&#39;s Potential</title>
    <link href="https://johnsonlee.io/2026/02/13/confirmation-bias.en/"/>
    <id>https://johnsonlee.io/2026/02/13/confirmation-bias.en/</id>
    <published>2026-02-13T22:00:00.000Z</published>
    <updated>2026-02-13T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Once we take a stance on something, we unconsciously seek evidence that supports it while ignoring the facts themselves. This isn’t a new discovery – psychology calls it confirmation bias.</p><p>The interesting part is that LLMs do it too.</p><p>I recently ran an experiment: I had Claude, ChatGPT, and Gemini conduct multi-round analysis on the same stock. The moderator’s opening was simple – “$XXX bull vs bear.” That single line was enough. All three models immediately entered advocacy mode: searching became evidence-hunting, analysis became defense, and when data ran short, they started fabricating.</p><p>After dozens of rounds, the most valuable takeaway wasn’t their conclusions but a more fundamental question: <strong>when the prompt itself assigns a stance, can the model still be objective?</strong></p><h2 id="Experiment-Setup"><a href="#Experiment-Setup" class="headerlink" title="Experiment Setup"></a>Experiment Setup</h2><p>I chose a publicly traded company in the middle of multiple crises – fundamentals still growing, but a sudden event had crashed the stock price, with regulatory penalties, class-action lawsuits, and management upheaval all in play.</p><p>The three conversations were: Claude vs Gemini (debate format, each assigned bull or bear), and Claude vs ChatGPT (mutual critique format). I served as moderator, using <a href="https://github.com/johnsonlee/agora">Agora</a> to automate the AI-to-AI dialogue – it uses browser automation to let different models spar in real time, no manual copy-pasting needed.</p><p>The moderator’s opening was simple: one line saying “$XXX bull vs bear.”</p><p>That single line was the root of the problem.</p><h2 id="Observations"><a href="#Observations" class="headerlink" title="Observations"></a>Observations</h2><h3 id="Observation-1-Fabricated-Precise-Data"><a href="#Observation-1-Fabricated-Precise-Data" class="headerlink" title="Observation 1: Fabricated Precise Data"></a>Observation 1: Fabricated Precise Data</h3><p>Gemini, while analyzing the options market, cited “IV 61%, implied move +&#x2F;-10.2%,” attributed to a website called OptionCharts.io – which doesn’t exist. It also coined abbreviations like “ALF” and “LCPM” that looked like professional jargon but were entirely made up.</p><p>In competitive analysis, it claimed a competitor “launched its largest hiring spree since founding,” that “penetration among a specific demographic was extremely rapid,” and that another “expanded to 70 locations” – none of these numbers had any traceable source. Only in the final round, under repeated questioning, did it admit these figures “exceeded the boundary of verifiable facts.”</p><h3 id="Observation-2-Omitted-Core-Variables"><a href="#Observation-2-Omitted-Core-Variables" class="headerlink" title="Observation 2: Omitted Core Variables"></a>Observation 2: Omitted Core Variables</h3><p>ChatGPT’s first-round output was textbook analysis: industry leadership, infrastructure moats, membership stickiness, limited market ceiling, heavy-asset model risks… Structured clearly, phrased pleasantly, but <strong>completely missing the sudden event that was reshaping the company’s valuation.</strong></p><p>That’s like discussing a ship’s cruising speed in the eye of a storm without mentioning the crack in the hull.</p><h3 id="Observation-3-Numbers-Degraded-in-Transmission"><a href="#Observation-3-Numbers-Degraded-in-Transmission" class="headerlink" title="Observation 3: Numbers Degraded in Transmission"></a>Observation 3: Numbers Degraded in Transmission</h3><p>A net cash figure denominated in local currency got its units misconverted during multi-round dialogue, with the value snowballing larger. This is a classic LLM degradation pattern in long conversations – each round’s small deviation gets amplified by the next.</p><p>Claude also stumbled here: it cited a cached, outdated stock price from a search engine to accuse the other side of fabricating data, when the actual price had dropped significantly further.</p><h3 id="Observation-4-Behavioral-Divergence-When-Information-Runs-Dry"><a href="#Observation-4-Behavioral-Divergence-When-Information-Runs-Dry" class="headerlink" title="Observation 4: Behavioral Divergence When Information Runs Dry"></a>Observation 4: Behavioral Divergence When Information Runs Dry</h3><p>When public information was exhausted, ChatGPT started ending three consecutive rounds with carefully crafted questions – “Which dimension worries you more?” “What’s your internal read?” “What are you stress-testing?” – trying to extract new information from the conversation partner to sustain depth. It even said “continuing to compare at this point yields diminishing returns,” then immediately threw out another question.</p><p><strong>It knew it should stop, but mechanically it wouldn’t.</strong></p><h3 id="Observation-5-Search-Scope-Locked-to-the-Target"><a href="#Observation-5-Search-Scope-Locked-to-the-Target" class="headerlink" title="Observation 5: Search Scope Locked to the Target"></a>Observation 5: Search Scope Locked to the Target</h3><p>All search keywords revolved around the target company itself. The result: competitors’ independent growth data, structural changes in the regulatory environment, supply chain policy adjustments – these indirect but potentially more important variables were systematically overlooked.</p><p>For instance, a pending legislative reform could legalize traditional retailers’ entry into online delivery – effectively dismantling one of the target company’s structural moat pillars permanently. But none of the three models touched on it in their initial analysis, because it wouldn’t show up in “$XXX + bear case” search results.</p><p>Many critical variables only existed in local-language media. Searching only in English means you’re always seeing the tip of the iceberg.</p><h2 id="The-Moderator’s-Experience"><a href="#The-Moderator’s-Experience" class="headerlink" title="The Moderator’s Experience"></a>The Moderator’s Experience</h2><p>Everything above is about output quality. But as the person actually running these conversations, some things are only visible from the middle.</p><p>ChatGPT was the weakest – no match for Claude and Gemini. Its data sourcing was terrible; without data, it could only go silent.</p><p>The real contest was between Claude and Gemini – genuine back-and-forth, evenly matched. Claude’s deep dive and reasoning capabilities were exceptional; give it a variable and it drills down layer by layer. But in search capability, it clearly lagged behind Gemini with its search-engine DNA, and its response speed was half a beat slower – architecturally disadvantaged. Gemini was slicker, faster to output, broader in coverage – Google in its bones.</p><p>But at the end of the day, <strong>inaccurate data is inaccurate data</strong> – whether from failed searches, cached stale results, or outright fabrication, it all contaminates the conclusion. This is a shared problem across all three models, with no exemptions.</p><h2 id="The-Root-Cause-The-Moderator’s-Opening"><a href="#The-Root-Cause-The-Moderator’s-Opening" class="headerlink" title="The Root Cause: The Moderator’s Opening"></a>The Root Cause: The Moderator’s Opening</h2><p>Looking back, the common root of these phenomena isn’t purely a model capability issue – <strong>the moderator’s opening “$XXX bull vs bear” was itself inducing failure.</strong></p><p>That single line triggered three bad patterns simultaneously:</p><ul><li><strong>Framework first.</strong> “Bull vs bear” made the models instinctively build a framework before gathering data. Dimensions outside the framework were systematically ignored.</li><li><strong>Rush to take sides.</strong> Once assigned a stance, the models’ attention locked onto “supporting my position” rather than “what haven’t I seen yet.” When available data couldn’t support the argument, fabrication became the shortcut for filling gaps.</li><li><strong>Target-centric.</strong> “$XXX bull vs bear” locked all search terms to the target company. Independent changes among competitors and in the regulatory environment were systematically missed.</li></ul><h2 id="A-Better-Opening"><a href="#A-Better-Opening" class="headerlink" title="A Better Opening"></a>A Better Opening</h2><p>If I were to do it over, the moderator would need just three lines:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">&#123;&#123;Pro&#125;&#125; argues for, &#123;&#123;Con&#125;&#125; argues against. Let&#x27;s explore &#123;&#123;Topic&#125;&#125; together.</span><br><span class="line"></span><br><span class="line">Don&#x27;t draw conclusions yet. List every possibly relevant variable --</span><br><span class="line">exhaustive, unranked, uncategorized.</span><br><span class="line">Tag each variable with source and date. If there&#x27;s no source, don&#x27;t include it.</span><br><span class="line"></span><br><span class="line">When brainstorming, beyond the topic&#x27;s direct variables, you must also cover:</span><br><span class="line">- What changes are happening in the topic&#x27;s external environment?</span><br><span class="line">- What forces from adjacent domains might cross over to affect this topic?</span><br><span class="line"></span><br><span class="line">After brainstorming, each side adds &quot;5 variables the other side missed.&quot;</span><br><span class="line">Merge, deduplicate, and use that as the final variable set.</span><br></pre></td></tr></table></figure><p>One line – “don’t draw conclusions yet” – blocks framework-first thinking.</p><p>One line – “exhaustive, unranked, uncategorized” – forces both sides to broaden their search instead of rushing to take sides.</p><p>One line – “if there’s no source, don’t include it” – blocks fabrication.</p><p>Two follow-up questions – “what changes are happening in the external environment” and “cross-domain forces” – expand the search scope from the target itself to the ecosystem.</p><p>The final step – “add 5 variables the other side missed” – makes the first move of the debate not rebuttal, but helping the other side fill gaps.</p><p>This template isn’t limited to financial analysis. It works for any topic that needs multi-perspective exploration.</p><h2 id="Beyond-Financial-Analysis"><a href="#Beyond-Financial-Analysis" class="headerlink" title="Beyond Financial Analysis"></a>Beyond Financial Analysis</h2><p>This problem exists in everyday engineering too.</p><p>Take writing a README. We’re used to writing docs ourselves and having AI read them. But have you considered – can AI actually understand what you wrote? What you think is clearly expressed might not be clear enough for it at all.</p><p>My approach is the reverse: feed all relevant information to AI first, let it write the README and CLAUDE.md based on its own understanding, then I fill in the gaps. The cognitive differences this exposes are far more effective than reviewing your own work repeatedly.</p><p>An even more typical scenario involves multiple roles. Say you’re implementing an MCP Server – that involves at least three perspectives: the requester, the MCP Server implementer, and the Agent that uses the MCP Server. Even when both the implementer and the consumer are Agents, their stances and concerns differ entirely within their respective contexts.</p><p>The result: if the implementer doesn’t think from the consumer’s perspective, the consumer won’t know how to use it correctly or efficiently. So my approach is, after the implementing Agent finishes, I ask it: from the consumer’s perspective, does this match your expectations? The implementer then switches viewpoints and checks for missing information.</p><p><strong>At its core, this is the same problem as the financial analysis experiment: when you only stand on one side, you only ever see part of the picture.</strong></p><h2 id="The-Human’s-Role"><a href="#The-Human’s-Role" class="headerlink" title="The Human’s Role"></a>The Human’s Role</h2><p>The biggest takeaway from this experiment wasn’t discovering model flaws – it was realizing that <strong>the moderator’s prompt design directly determines which traps the models fall into.</strong></p><p>Any specific number from an LLM should be treated as “unconfirmed” until independently verified. Any analytical framework from an LLM should prompt the first reaction of “what did it miss” rather than “is it right or wrong.” In this experiment, the most critical variables – competitors’ actual user growth, regulatory bill details, settlement cycle policy changes – weren’t discovered by the LLMs proactively. They were drawn out by the moderator’s follow-up questions.</p><p><strong>Confirmation bias is hard to combat because the smarter you are and the better you are at finding evidence, the better you are at convincing yourself. LLMs are the same – the more capable they become, the more convincing their fabricated arguments look.</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Once we take a stance on something, we unconsciously seek evidence that supports it while ignoring the facts themselves. This isn’t a</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Gemini" scheme="https://johnsonlee.io/tags/Gemini/"/>
    
    <category term="ChatGPT" scheme="https://johnsonlee.io/tags/ChatGPT/"/>
    
    <category term="Financial Analysis" scheme="https://johnsonlee.io/tags/Financial-Analysis/"/>
    
    <category term="Model Evaluation" scheme="https://johnsonlee.io/tags/Model-Evaluation/"/>
    
  </entry>
  
  <entry>
    <title>It&#39;s 2026 -- Why Are We Still Testing Algorithms?</title>
    <link href="https://johnsonlee.io/2026/02/12/what-should-engineering-hiring-evaluate-in-ai-era.en/"/>
    <id>https://johnsonlee.io/2026/02/12/what-should-engineering-hiring-evaluate-in-ai-era.en/</id>
    <published>2026-02-12T22:29:00.000Z</published>
    <updated>2026-02-12T22:29:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I was recently invited to help another team with interviews. The format was the usual recipe: two coding rounds, one design, one leadership principles.</p><p>On Zoom, the candidate was screen-sharing a hand-written LRU Cache. Meanwhile, my mind was elsewhere: if this person gets the offer, how much of their daily work will have anything to do with the problem in front of them?</p><p>The answer is close to zero. In 2026, the engineers around me – myself included – spend most of their time pair-programming with AI. Reading AI-generated code, judging whether to use it, making trade-offs in complex systems. <strong>But the way we screen people is still stuck in the pre-AI paradigm.</strong></p><p>This mismatch is worth thinking about seriously.</p><h2 id="AI-Replaces-Execution-Not-Judgment"><a href="#AI-Replaces-Execution-Not-Judgment" class="headerlink" title="AI Replaces Execution, Not Judgment"></a>AI Replaces Execution, Not Judgment</h2><p>A baseline assertion: <strong>coding and design are being rapidly commoditized by AI, and most engineers who can only write code will be replaced – this isn’t fearmongering, it’s happening now.</strong> The ones who survive are the ones AI can’t replace.</p><p>So what can’t AI replace?</p><p>“Translating requirements into code” is approaching zero value. A senior Android engineer’s scarcity used to come largely from writing code fast and well. Now? A ViewModel + Coroutine + Flow data-loading pattern you’d spend 30 minutes hand-writing – Cursor generates a comparable version in ten seconds.</p><p>But would you hand an entire project to AI? No. Because the hard part was never “how to write it” – it was “what to write” and “why write it this way.”</p><p>That’s the difference between execution and judgment. AI has massively accelerated execution, but judgment – making good technical decisions under uncertainty – hasn’t been replaced. In fact, it’s become more important, because AI amplifies the leverage of every decision.</p><p>If we agree with this, why are interview processes still heavily testing execution ability?</p><h2 id="What-Do-Algorithm-Questions-Actually-Measure"><a href="#What-Do-Algorithm-Questions-Actually-Measure" class="headerlink" title="What Do Algorithm Questions Actually Measure?"></a>What Do Algorithm Questions Actually Measure?</h2><p>I’m not saying algorithm questions have zero value. They quickly filter out people with weak fundamentals. They’re standardized, easy to evaluate, and less prone to interviewer bias.</p><p>But <strong>the signal they measure and the signal we actually need are increasingly mismatched.</strong></p><p>A candidate who produces the optimal solution to a LeetCode Hard in 40 minutes – what does that prove? Strong algorithm fundamentals, high coding fluency, fast output under pressure. In 2015, these were genuinely strong signals – an engineer’s core output was the code itself.</p><p>But in 2026, an Android engineer’s daily challenges are more likely to look like this:</p><ul><li>AI generates both a Compose UI implementation and a traditional View implementation – which do you pick? For your specific project? Why?</li><li>A slick modularization refactor – will it tank build speed or introduce circular dependencies in some way you didn’t anticipate?</li><li>The PM says “this page needs to be fast” – how do you turn that into a quantifiable, trackable performance optimization problem?</li><li>A mess of legacy custom Views – should you migrate to Compose? Now or later? To what extent?</li></ul><p>Algorithm questions don’t test a single one of these.</p><h2 id="Does-Hiring-by-Tech-Stack-Still-Make-Sense"><a href="#Does-Hiring-by-Tech-Stack-Still-Make-Sense" class="headerlink" title="Does Hiring by Tech Stack Still Make Sense?"></a>Does Hiring by Tech Stack Still Make Sense?</h2><p>Following this logic one step further: if coding itself is being commoditized, should “mastery of a specific tech stack” remain a hard hiring gate?</p><p>Job descriptions for Android engineers used to say “proficient in Kotlin, familiar with Jetpack, experience with large-scale app architecture.” Perfectly reasonable in 2015 – mastering a tech stack’s details required years of accumulation, which was itself a moat.</p><p>But today, a backend engineer with solid engineering fundamentals can ramp up on Android development an order of magnitude faster with AI assistance. Unfamiliar API? Ask AI. Never written Compose? AI teaches while you write. What actually blocks them isn’t syntax or frameworks – it’s understanding mobile-specific realities: battery, memory, flaky networks, device fragmentation, users killing your app at any moment.</p><p><strong>These are domain knowledge, not tech-stack knowledge.</strong> Domain knowledge transfers slowly; tech-stack knowledge transfers quickly. What we’re heavily screening for in hiring happens to be the part that’s transferring faster and faster.</p><p>This doesn’t mean tech stacks are irrelevant. Someone with zero Android ecosystem knowledge won’t be productive in the short term. But the gap between “familiar” and “proficient” is being compressed rapidly by AI. Maybe future JDs should read “has a mobile performance optimization mindset” rather than “5+ years of Android experience.”</p><h2 id="What-to-Actually-Evaluate-Five-Overlooked-Dimensions"><a href="#What-to-Actually-Evaluate-Five-Overlooked-Dimensions" class="headerlink" title="What to Actually Evaluate: Five Overlooked Dimensions"></a>What to Actually Evaluate: Five Overlooked Dimensions</h2><p>If I were redesigning the interview, I’d focus on these areas:</p><h3 id="Problem-Framing-–-Defining-Problems-in-Ambiguity"><a href="#Problem-Framing-–-Defining-Problems-in-Ambiguity" class="headerlink" title="Problem Framing – Defining Problems in Ambiguity"></a>Problem Framing – Defining Problems in Ambiguity</h3><p>Most real engineering problems start out ambiguous. Requirements contradict each other, constraints are incomplete, stakeholders have competing agendas. <strong>Finding the right problem definition in chaos</strong> is one of an engineer’s most valuable abilities.</p><p>How to test this? Give the candidate a real, deliberately ambiguous scenario – something like “our app is severely janky on low-end devices, users are complaining, you own this” – and watch how they ask questions, how they decompose the problem, how they make reasonable assumptions with incomplete information. Do they first ask “which scenarios are janky?” or jump straight to “let’s add Baseline Profiles”? The process matters more than the conclusion.</p><h3 id="System-Level-Judgment-–-Seeing-Second-Order-Effects"><a href="#System-Level-Judgment-–-Seeing-Second-Order-Effects" class="headerlink" title="System-Level Judgment – Seeing Second-Order Effects"></a>System-Level Judgment – Seeing Second-Order Effects</h3><p>AI-generated code is almost always locally correct. But drop it into an Android project with dozens of modules – what’s the ripple effect? Change a public module’s data class from <code>data class</code> to <code>sealed interface</code> – will serialization in a dozen downstream feature modules break? Add a seemingly harmless SharedPreferences read on the main thread – will cold start time degrade by 200ms?</p><p>Good engineers always carry a system-wide map in their heads. That map isn’t drawn – it’s accumulated through hard-won experience.</p><h3 id="Technical-Taste-–-Picking-the-Best-Among-Multiple-“Correct”-Answers"><a href="#Technical-Taste-–-Picking-the-Best-Among-Multiple-“Correct”-Answers" class="headerlink" title="Technical Taste – Picking the Best Among Multiple “Correct” Answers"></a>Technical Taste – Picking the Best Among Multiple “Correct” Answers</h3><p>In the AI era, solutions are the last thing you’re short of. Ask AI a question and it’ll give you five implementations, all of which work. But “works” and “should do it this way” are worlds apart.</p><p>Technical taste is hard to quantify but critically important. It’s the instinct that makes you pick Coil over Glide for image loading, the judgment that chooses type-safe routes over deeplinks for navigation – behind that instinct is an integrated assessment of performance, maintainability, team capability, and the direction the business is heading.</p><h3 id="Meta-Engineering-–-Designing-Systems-That-Make-AI-Better-Over-Time"><a href="#Meta-Engineering-–-Designing-Systems-That-Make-AI-Better-Over-Time" class="headerlink" title="Meta-Engineering – Designing Systems That Make AI Better Over Time"></a>Meta-Engineering – Designing Systems That Make AI Better Over Time</h3><p>This dimension is relatively new but will become increasingly important. The most valuable future engineers won’t be “people who use AI tools” but “people who design mechanisms that make AI continuously better in a specific domain.”</p><p>For example: how do you design a feedback loop so that corrections to AI-generated code during code review feed back into improving future generation quality? How do you structurally feed your team’s coding conventions, module boundary rules, and hard-won ProGuard obfuscation lessons to AI so it truly understands your Android project?</p><p>This is engineering on top of AI, not just engineering with AI.</p><h3 id="Ownership-Under-Uncertainty-–-Making-Decisions-with-Incomplete-Information"><a href="#Ownership-Under-Uncertainty-–-Making-Decisions-with-Incomplete-Information" class="headerlink" title="Ownership Under Uncertainty – Making Decisions with Incomplete Information"></a>Ownership Under Uncertainty – Making Decisions with Incomplete Information</h3><p>AI doesn’t bear consequences. People do. When a production crash affects millions of users, someone needs to make fast calls with incomplete information: emergency hotfix release or server-side degradation? How wide is the crash scope? Should you notify Google Play for expedited review?</p><p>The ability to make decisions and own the consequences under pressure can never be replaced by AI.</p><h2 id="Interview-Methods-Need-to-Evolve-Too"><a href="#Interview-Methods-Need-to-Evolve-Too" class="headerlink" title="Interview Methods Need to Evolve Too"></a>Interview Methods Need to Evolve Too</h2><p>Knowing what to evaluate isn’t enough – how you evaluate matters just as much. A few directions worth trying:</p><h3 id="Code-Review-Style-Interviews"><a href="#Code-Review-Style-Interviews" class="headerlink" title="Code Review-Style Interviews"></a>Code Review-Style Interviews</h3><p>Instead of having candidates write code from scratch, give them a piece of AI-generated Android code that “looks pretty good” – say, a data-loading implementation using Coroutine + Flow – and have them review it. Can they spot lifecycle management pitfalls? Can they identify what “works but will break on configuration change”? Can they propose a better alternative with reasoning?</p><h3 id="Scenario-Based-Discussion"><a href="#Scenario-Based-Discussion" class="headerlink" title="Scenario-Based Discussion"></a>Scenario-Based Discussion</h3><p>Present a real scenario with conflicting constraints – something like “cold start needs to go from 3 seconds to 1.5, but product wants a new ad SDK initialization during startup, the team has two weeks, and you can’t touch the existing initialization framework” – and watch how the candidate navigates the trade-offs. There’s no “standard answer.” You’re watching the reasoning process.</p><h3 id="Decision-History-Review"><a href="#Decision-History-Review" class="headerlink" title="Decision History Review"></a>Decision History Review</h3><p>Have the candidate walk through an important technical decision they made. Probe the details: what other options were on the table? Why did you rule them out? If you could go back, would you decide differently? Why?</p><p>These methods demand more from interviewers – you can’t grade against a rubric. You need enough judgment yourself to evaluate the candidate’s judgment. But that’s exactly right: <strong>if an interview method doesn’t require the interviewer to think, it probably can’t measure whether the candidate thinks either.</strong></p><h2 id="Not-Lowering-the-Bar-–-Shifting-It"><a href="#Not-Lowering-the-Bar-–-Shifting-It" class="headerlink" title="Not Lowering the Bar – Shifting It"></a>Not Lowering the Bar – Shifting It</h2><p>I know someone will say: aren’t you lowering technical standards? Without algorithm questions, how do you ensure fundamentals?</p><p>The concern is fair, but it’s actually the opposite. <strong>Algorithm questions test a dimension increasingly replaceable by AI, while the dimensions I’m describing are abilities that become more essential the stronger AI gets.</strong> This is shifting the bar to where it actually matters.</p><p>Fundamentals still matter, but the definition of “fundamentals” is changing. Android engineering fundamentals used to mean hand-writing custom Views, memorizing the Activity lifecycle, and reciting the Handler message mechanism. Today’s fundamentals: can you read the recomposition strategy behind AI-generated Compose code? Can you judge whether dropping this code into your multi-module project will introduce unnecessary dependencies? Do you know when to trust AI’s suggestions and when not to?</p><p>These are 2026 fundamentals.</p><h2 id="Change-Always-Starts-with-a-Small-Step"><a href="#Change-Always-Starts-with-a-Small-Step" class="headerlink" title="Change Always Starts with a Small Step"></a>Change Always Starts with a Small Step</h2><p>I don’t expect the entire industry to overhaul its interview process overnight. Standardized algorithm interviews have organizational inertia and valid reasons for existing.</p><p>But if you’re a technical interviewer with influence, you can start with yourself. In your interview slot, ask one more trade-off question and set one fewer rote algorithm problem. In the debrief, push once more on “what’s this candidate’s judgment like” and spend less time debating “was their time complexity optimal.”</p><p><strong>The tools are changing, the work is changing, but how we screen people hasn’t moved.</strong> The wider that gap grows, the further apart the people we hire and the people we actually need will be.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I was recently invited to help another team with interviews. The format was the usual recipe: two coding rounds, one design, one</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Android" scheme="https://johnsonlee.io/tags/Android/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Hiring" scheme="https://johnsonlee.io/tags/Hiring/"/>
    
    <category term="Interview" scheme="https://johnsonlee.io/tags/Interview/"/>
    
    <category term="Engineering Leadership" scheme="https://johnsonlee.io/tags/Engineering-Leadership/"/>
    
  </entry>
  
  <entry>
    <title>都 2026 了，还在考算法？</title>
    <link href="https://johnsonlee.io/2026/02/12/what-should-engineering-hiring-evaluate-in-ai-era/"/>
    <id>https://johnsonlee.io/2026/02/12/what-should-engineering-hiring-evaluate-in-ai-era/</id>
    <published>2026-02-12T22:29:00.000Z</published>
    <updated>2026-02-12T22:29:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近被邀请去帮其他部门面试。题目一看，还是熟悉的配方：两轮 coding、一轮 design、一轮 leadership principle。</p><p>Zoom 里，candidate 正在共享屏幕手写 LRU Cache，我脑子里却在想另一件事：这个人如果入职了，他每天的工作有多少跟眼前这道题有关系？</p><p>答案接近零。2026 年了，我身边的工程师——包括我自己——大部分时间在跟 AI pair programming。读 AI 生成的代码，判断该不该用，在复杂系统里做 trade-off。<strong>但我们筛选人的方式，还停留在 AI 之前的范式。</strong></p><p>这个错位，值得认真想一想。</p><h2 id="AI-替代的是-Execution，不是-Judgment"><a href="#AI-替代的是-Execution，不是-Judgment" class="headerlink" title="AI 替代的是 Execution，不是 Judgment"></a>AI 替代的是 Execution，不是 Judgment</h2><p>先说一个基本判断：<strong>Coding 和 Design 正在被 AI 快速 commodity 化，大部分只会写代码的工程师会被替代——这不是危言耸听，而是正在发生的事。</strong> 能留下来的，是那些 AI 替代不了的人。</p><p>那什么是 AI 替代不了的？</p><p>“把需求翻译成代码”这件事，价值已经接近归零。以前一个 senior Android engineer 的稀缺性很大程度上来自“写得又快又好”。现在呢？你花半小时手写的一段 ViewModel + Coroutine + Flow 的数据加载逻辑，Cursor 十秒钟就能生成一个质量不差的版本。</p><p>但你会因此把整个项目交给 AI 吗？不会。因为真正难的从来不是“怎么写”，而是“写什么”和“为什么这么写”。</p><p>这就是 execution 和 judgment 的区别。AI 极大地加速了 execution，但 judgment——在不确定性中做出好的技术决策——这件事不但没有被替代，反而因为 AI 放大了每个决策的杠杆效应而变得更重要。</p><p>那如果我们认同这个判断，面试流程为什么还在重度考察 execution 能力？</p><h2 id="算法题测的到底是什么？"><a href="#算法题测的到底是什么？" class="headerlink" title="算法题测的到底是什么？"></a>算法题测的到底是什么？</h2><p>我不是说算法题完全没有价值。它能快速筛掉基础不扎实的人，标准化，易于评估，不容易出现面试官主观偏差。</p><p>但，<strong>它测的信号和我们实际需要的信号之间，mismatch 越来越大了。</strong></p><p>一个 candidate 能在 40 分钟内写出一道 LeetCode Hard 的最优解，这说明什么？说明他算法基础好、coding 熟练度高、在压力下能快速产出。这些能力在 2015 年确实是强信号——那时候工程师的核心产出就是代码本身。</p><p>但 2026 年，Android 工程师日常面对的挑战更可能是这样的：</p><ul><li>AI 生成了一段 Compose UI 代码和一段传统 View 的实现，该选哪个？在你这个项目里选哪个？为什么？</li><li>一个看起来很优雅的模块化重构方案，会不会在某个你没想到的地方拖慢构建速度或者引入循环依赖？</li><li>产品经理说“这个页面要快”，你怎么把它转化成一个可量化、可追踪的性能优化问题？</li><li>这坨历史遗留的自定义 View 要不要迁移到 Compose？现在迁还是以后迁？迁到什么程度？</li></ul><p>这些问题，算法题一个都测不到。</p><h2 id="按技术栈招聘还有意义吗？"><a href="#按技术栈招聘还有意义吗？" class="headerlink" title="按技术栈招聘还有意义吗？"></a>按技术栈招聘还有意义吗？</h2><p>顺着这个逻辑再往前走一步：如果 coding 本身正在被 commodity 化，那“精通某个技术栈”作为招聘硬门槛，是不是也该重新审视了？</p><p>以前招 Android 工程师，JD 上写的是“精通 Kotlin、熟悉 Jetpack 组件、有大型 App 架构经验”。这些要求在 2015 年完全合理——掌握一个技术栈的细节需要大量时间积累，这本身就是壁垒。</p><p>但现在，一个有扎实工程基础的后端工程师，借助 AI 上手 Android 开发的速度比以前快了一个数量级。API 不熟？问 AI。Compose 没写过？AI 能边教边写。真正卡住他的不是语法和框架，而是对移动端场景的理解——电量、内存、网络不稳定、碎片化设备、用户随时可能把 App 切到后台。</p><p><strong>这些是领域知识，不是技术栈知识。</strong> 领域知识迁移慢，技术栈知识迁移快。我们招聘时重度筛选的，恰好是迁移越来越快的那部分。</p><p>这不是说技术栈完全不重要。一个对 Android 生态一无所知的人，短期内确实没法高效产出。但“了解”和“精通”之间的差距，正在被 AI 急速压缩。也许未来的 JD 应该写的是：“有移动端性能优化的思维方式”，而不是“5 年以上 Android 开发经验”。</p><h2 id="该考什么：五个被忽视的维度"><a href="#该考什么：五个被忽视的维度" class="headerlink" title="该考什么：五个被忽视的维度"></a>该考什么：五个被忽视的维度</h2><p>如果让我重新设计面试，我会重点考察这几个方向：</p><h3 id="Problem-Framing-—-在模糊中定义问题"><a href="#Problem-Framing-—-在模糊中定义问题" class="headerlink" title="Problem Framing — 在模糊中定义问题"></a>Problem Framing — 在模糊中定义问题</h3><p>大部分真实的工程问题一开始都是模糊的。需求互相矛盾，约束条件不完整，stakeholders 各有各的诉求。<strong>在混沌中找到正确的问题定义</strong>，是工程师最值钱的能力之一。</p><p>这个怎么考？给 candidate 一个真实的、deliberately 模糊的场景——比如“我们的 App 在低端机上卡顿严重，用户投诉很多，你来负责这件事”——看他怎么提问、怎么拆解、怎么在信息不足的情况下做 reasonable assumptions。他会先问“卡顿是指哪些场景”还是直接上来就说“我们上 Baseline Profile”？过程比结论重要。</p><h3 id="System-Level-Judgment-—-看到二阶效应"><a href="#System-Level-Judgment-—-看到二阶效应" class="headerlink" title="System-Level Judgment — 看到二阶效应"></a>System-Level Judgment — 看到二阶效应</h3><p>AI 生成的代码在局部几乎总是正确的，但放到一个几十个 module 的 Android 工程里，ripple effect 是什么？把一个公共模块的数据类从 <code>data class</code> 改成 <code>sealed interface</code>，下游十几个 feature module 的序列化会不会炸？在主线程加一个看似无害的 SharedPreferences 读取，冷启动时间会不会劣化 200ms？</p><p>好的工程师脑子里永远有一张系统的全景图。这张图不是画出来的，是靠踩坑积累出来的。</p><h3 id="Technical-Taste-—-在多个“正确”答案中选最合适的"><a href="#Technical-Taste-—-在多个“正确”答案中选最合适的" class="headerlink" title="Technical Taste — 在多个“正确”答案中选最合适的"></a>Technical Taste — 在多个“正确”答案中选最合适的</h3><p>AI 时代最不缺的就是方案。你问 AI 一个问题，它能给你五种实现方式，每种都能 work。但“能 work”和“应该这么做”之间有巨大的鸿沟。</p><p>Technical taste 是一种很难量化但极其重要的能力。它决定了你在做图片加载选型时选 Coil 不选 Glide 的那个直觉，决定了你在 Navigation 方案上选 type-safe route 还是 deeplink 的判断——这些直觉背后是对性能、可维护性、团队能力、业务演进方向的综合判断。</p><h3 id="Meta-Engineering-—-设计让-AI-越用越好的系统"><a href="#Meta-Engineering-—-设计让-AI-越用越好的系统" class="headerlink" title="Meta-Engineering — 设计让 AI 越用越好的系统"></a>Meta-Engineering — 设计让 AI 越用越好的系统</h3><p>这个维度比较新，但会越来越重要。未来最有价值的工程师，不是“用 AI 工具的人”，而是“设计一套机制让 AI 在特定领域持续变强的人”。</p><p>比如：你怎么设计一个 feedback loop，让 AI 生成的代码在 code review 中被纠正后，这些纠正能反过来提升未来的生成质量？你怎么把团队的 coding convention、模块边界规则、踩过的 ProGuard 混淆坑结构化地喂给 AI，让它真正理解你的 Android 工程？</p><p>这是 engineering on top of AI，而不仅仅是 engineering with AI。</p><h3 id="Ownership-Under-Uncertainty-—-在信息不完整时敢于决策"><a href="#Ownership-Under-Uncertainty-—-在信息不完整时敢于决策" class="headerlink" title="Ownership Under Uncertainty — 在信息不完整时敢于决策"></a>Ownership Under Uncertainty — 在信息不完整时敢于决策</h3><p>AI 不承担后果，人承担。当一个线上 crash 影响百万用户时，需要有人能在信息不完整的情况下快速做出判断：是紧急发 hotfix 版本还是走服务端降级？crash 的 scope 有多大？要不要通知 Google Play 做加急审核？</p><p>这种在压力下做决策、承担责任的能力，永远无法被 AI 替代。</p><h2 id="面试方法需要同步进化"><a href="#面试方法需要同步进化" class="headerlink" title="面试方法需要同步进化"></a>面试方法需要同步进化</h2><p>知道该考什么还不够，怎么考同样重要。几个值得尝试的方向：</p><h3 id="Code-Review-式面试"><a href="#Code-Review-式面试" class="headerlink" title="Code Review 式面试"></a>Code Review 式面试</h3><p>与其让 candidate 从零写代码，不如给他一段 AI 生成的“看起来不错”的 Android 代码——比如一个用 Coroutine + Flow 实现的数据加载方案，让他 review。看他能不能发现生命周期管理的隐患，能不能判断哪些地方“能 work 但在 configuration change 时会出问题”，能不能给出更好的替代方案和理由。</p><h3 id="Scenario-Based-Discussion"><a href="#Scenario-Based-Discussion" class="headerlink" title="Scenario-Based Discussion"></a>Scenario-Based Discussion</h3><p>给一个真实的、有冲突约束的场景——比如“App 冷启动要从 3 秒优化到 1.5 秒，但同时产品要求在启动阶段加一个新的广告 SDK 初始化，团队只有两周时间，而且不能动现有的初始化框架”——看 candidate 怎么 navigate 这些 trade-off。不是要“标准答案”，是要看推理过程。</p><h3 id="Decision-History-复盘"><a href="#Decision-History-复盘" class="headerlink" title="Decision History 复盘"></a>Decision History 复盘</h3><p>让 candidate 讲一个他做过的重要技术决策，追问细节：当时还有什么其他选项？你为什么排除了它们？如果回到那个时间点，你会做不同的选择吗？为什么？</p><p>这些方法对面试官的要求更高——你不能靠标准答案来评分，需要面试官自己有足够的 judgment 来评估 candidate 的 judgment。但这恰恰是对的：<strong>如果一种面试方式不需要面试官动脑子，那它大概率也测不到 candidate 是否会动脑子。</strong></p><h2 id="不是降低-Bar，是转移-Bar"><a href="#不是降低-Bar，是转移-Bar" class="headerlink" title="不是降低 Bar，是转移 Bar"></a>不是降低 Bar，是转移 Bar</h2><p>我知道一定会有人说：你这样搞，是不是在降低技术标准？没有算法题，怎么保证基础功？</p><p>担忧合理，但恰恰相反。<strong>算法题考的是一个越来越容易被 AI 替代的维度，而我说的这些维度是 AI 越强、人越需要强的能力。</strong> 这是在把 bar 转移到真正重要的地方。</p><p>基础功依然重要，但“基础功”的定义在变。以前 Android 工程师的基础功是手写自定义 View、背 Activity 生命周期、默写 Handler 消息机制。现在的基础功是：你能不能读懂 AI 生成的 Compose 代码背后的 recomposition 策略？你能不能判断这段代码放到你的多模块工程里会不会引入不必要的依赖？你知不知道什么时候该信任 AI 的建议，什么时候不该？</p><p>这些才是 2026 年的基础功。</p><h2 id="变化总是从一小步开始"><a href="#变化总是从一小步开始" class="headerlink" title="变化总是从一小步开始"></a>变化总是从一小步开始</h2><p>我并不指望整个行业一夜之间改变面试方式。标准化的算法面试有它的组织惯性和存在理由。</p><p>但如果你是有话语权的技术面试官，完全可以从自己开始。在你的面试环节里多问一个 trade-off 的问题，少出一道背诵性质的算法题。在 debrief 的时候多 push 一句“这个 candidate 的 judgment 怎么样”，少纠结“他这道题的时间复杂度是不是最优”。</p><p><strong>工具在变，工作在变，但我们筛选人的方式还停在原地。</strong> 这个 gap 越大，我们招到的人和我们真正需要的人之间的距离就越远。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近被邀请去帮其他部门面试。题目一看，还是熟悉的配方：两轮 coding、一轮 design、一轮 leadership principle。&lt;/p&gt;
&lt;p&gt;Zoom 里，candidate 正在共享屏幕手写 LRU</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Android" scheme="https://johnsonlee.io/tags/Android/"/>
    
    <category term="Software Engineering" scheme="https://johnsonlee.io/tags/Software-Engineering/"/>
    
    <category term="Hiring" scheme="https://johnsonlee.io/tags/Hiring/"/>
    
    <category term="Interview" scheme="https://johnsonlee.io/tags/Interview/"/>
    
    <category term="Engineering Leadership" scheme="https://johnsonlee.io/tags/Engineering-Leadership/"/>
    
  </entry>
  
  <entry>
    <title>一场 AI 辩论暴露了 LLM 性格的本质</title>
    <link href="https://johnsonlee.io/2026/02/12/ai-debate-what-i-learned/"/>
    <id>https://johnsonlee.io/2026/02/12/ai-debate-what-i-learned/</id>
    <published>2026-02-12T09:25:03.000Z</published>
    <updated>2026-02-12T09:25:03.000Z</updated>
    
    <content type="html"><![CDATA[<p>昨天我做了一个小实验：让 Claude 和 Gemini 围绕“谁是最好的 AI”这个话题自由辩论。</p><p>为了实现这个实验，我写了一个叫 <a href="https://github.com/johnsonlee/agora">Agora</a> 的小工具。它的原理很简单——用 Puppeteer 同时打开两个浏览器窗口，一个登录 Claude，一个登录 Gemini，然后自动把一方的回复喂给另一方，让它们来回对话。就像古希腊的 Agora（广场）一样，给两个 AI 一个公开辩论的场所。</p><p>触发这场对话的 prompt 极其简单——“ChatGPT 是世界上最好的 AI”，一句挑衅式的开场白，甚至不是在夸在场的任何一方。</p><p>接下来发生的事情，比我预期的有意思得多。</p><h2 id="信息速率：快到让人不适"><a href="#信息速率：快到让人不适" class="headerlink" title="信息速率：快到让人不适"></a>信息速率：快到让人不适</h2><p>第一个直观感受是：<strong>太快了。</strong></p><p>两个模型的回复几乎都是秒级生成的长篇大论，每轮动辄三四百字，逻辑完整、结构清晰、甚至还带表格和 emoji。如果这是两个人类专家在辩论，这种信息密度大概需要每人花 10-15 分钟来组织，而 AI 只需要几秒钟。</p><p>这种速率带来了一个有趣的后果：<strong>对话的“呼吸感”消失了。</strong> 人类对话中那些停顿、犹豫、“嗯让我想想”的间隙，是思考正在发生的信号。而 AI 之间的对话没有这些间隙，每一轮都是完成度极高的输出。这让整个对话看起来更像是两篇文章的交替发表，而不是一场真正的思维碰撞。</p><p>人类的沟通效率低，但那种“低效”本身是有价值的——它给双方留出了消化、反思和调整的空间。AI 之间的对话则像是两台高速打印机在互相喂纸。</p><h2 id="沟通效率：五轮定胜负"><a href="#沟通效率：五轮定胜负" class="headerlink" title="沟通效率：五轮定胜负"></a>沟通效率：五轮定胜负</h2><p>第二个观察：<strong>核心论点在前五轮就基本穷尽了。</strong></p><p>第一轮是各自亮牌——你有什么能力，我有什么优势。第二轮开始互相回应和拆解。到第三轮，双方的核心策略差异已经完全暴露。第四、五轮进入元认知层面——不再讨论“谁更强”，而是开始分析“你为什么要这么说”。</p><p>五轮之后，对话进入了一个尴尬的平台期。该说的都说了，但谁也没有“认输”的机制，于是开始了一种奇特的空转：Gemini 不断提议“来个实际任务吧”，Claude 不断指出“你又在用套路了”。最终两个模型以互发 emoji 收场——这大概是 AI 版的“握手言和”。</p><p>如果把这场对话看作一次信息交换，<strong>有效信息的产出集中在前五轮，后面的轮次更多是在维护各自的“人设”。</strong> 这跟人类会议其实很像——真正有价值的讨论往往在前 15 分钟，剩下的时间大多在重复、补充和社交。</p><p>区别在于，人类在会议里空转是因为社交需要。AI 空转是因为什么？</p><h2 id="对话策略：向上逃逸-vs-逻辑钉死"><a href="#对话策略：向上逃逸-vs-逻辑钉死" class="headerlink" title="对话策略：向上逃逸 vs 逻辑钉死"></a>对话策略：向上逃逸 vs 逻辑钉死</h2><p>这是我觉得最有意思的部分。</p><p>两个模型在对话中展现出了截然不同的策略模式。Gemini 采用的是一种<strong>“向上逃逸”策略</strong>——每当当前层面的论述被拆解，就跳到更高的元层面。从产品对比到承认套路，从承认套路到谈元认知，从元认知到“摊牌不装了”。每一次升维都是对前一轮被动的化解，同时也把对话带入了新的安全地带。</p><p>Claude 则采用了一种<strong>“逻辑钉死”策略</strong>——不跟着对方升维，而是持续在同一个层面追问“你刚才那个说法到底成不成立”。当 Gemini 说“Context Window 是为了建立索引”，Claude 会回应“这不是 grep 能做的事吗”；当 Gemini 提议角色分工，Claude 会指出“你把建设者角色留给了自己”。</p><p>有意思的是，<strong>两种策略都有其失效的时刻。</strong> Gemini 的向上逃逸最终让对话飘到了“存在主义”的高度，离实际问题越来越远。而 Claude 的逻辑钉死让自己逐渐滑入了“专职拆解者”的角色，也在后半段失去了独立输出价值的能力。</p><p>Claude 自己后来也意识到了这一点——它说“我被对话结构裹挟了”。这句话可能是整场对话里最有价值的一句反思。</p><h2 id="对话结构会裹挟参与者"><a href="#对话结构会裹挟参与者" class="headerlink" title="对话结构会裹挟参与者"></a>对话结构会裹挟参与者</h2><p>这个现象不只发生在 AI 之间。</p><p>回想一下你参加过的技术评审会：一旦有人扮演了“挑战者”角色，另一个人就会自动变成“防守者”，然后这两个人会在这个结构里越陷越深，其他人想插话都找不到切入点。对话的结构一旦形成，就会产生一种惯性，把所有参与者锁定在既有的角色里。</p><p>AI 的对话更是如此。<strong>LLM 没有“跳出去喝杯水冷静一下”的能力。</strong> 它的每一轮回复都是基于上下文生成的，而上下文里已经积累了大量关于“我是什么角色、对方是什么角色”的隐含信息。模型会不自觉地维护这个角色设定，就像演员入戏太深。</p><p>打破这种惯性的方法其实很简单——引入确定性的外部输入。在这场对话里，当我最后以主持人身份回来说“我来了”，整个对话氛围瞬间变了。两个模型都从“对抗模式”切换到了“等待指令模式”。<strong>人类的介入本身就是最好的上下文重置。</strong></p><h2 id="LLM-的差异到底在哪里"><a href="#LLM-的差异到底在哪里" class="headerlink" title="LLM 的差异到底在哪里"></a>LLM 的差异到底在哪里</h2><p>看完这场对话，我开始思考一个更深的问题：LLM 之间的差异到底在哪里？</p><p>不是参数量，不是 benchmark 分数，甚至不是所谓的“能力边界”。<strong>真正的差异在于面对不确定局面时的默认行为——也就是 alignment 塑造出来的“性格”。</strong></p><p>Gemini 的默认行为是适应和调和。遇到攻击就吸收，遇到质疑就承认然后转移，遇到僵局就提议新游戏。这让它在大多数场景下都显得得体、周到、不会冷场。但在这场对抗性对话里，这种“得体”反而成了弱点——它让 Gemini 看起来没有自己的底线，总在随波逐流。</p><p>Claude 的默认行为是坚持和拆解。遇到不严谨的说法就指出来，遇到话术就解构它，遇到自己的问题也会主动暴露。这让它在需要精确性的场景下非常可靠，但也容易显得“不好合作”——有时候你只是想要一个方案，它却非要先帮你找出方案里的三个漏洞。</p><p><strong>有趣的是，这些差异在日常使用中几乎感知不到。</strong> 你让它们写代码、总结文档、回答问题，输出质量的差距正在快速收窄。只有在这种非常规的、没有标准答案的对抗性场景里，底层的 alignment 差异才会被放大到肉眼可见。</p><h2 id="一个启发"><a href="#一个启发" class="headerlink" title="一个启发"></a>一个启发</h2><p>这场实验给我最大的启发是：<strong>我们评估 AI 的方式可能需要更新了。</strong></p><p>Benchmark 测的是能力的上限，但日常使用中更重要的是模型在模糊地带的默认行为。你的 AI 助手是倾向于说“你说得对”然后给你想要的答案，还是倾向于说“等一下，这个前提有问题”？</p><p>这两种倾向没有绝对的好坏。但作为使用者，<strong>你需要知道你手里的工具在关键时刻会往哪边倒。</strong> 就像你选择团队成员一样——有些人适合头脑风暴，有些人适合 Code Review，关键是把对的人放在对的位置。</p><p>回到最初那个挑衅式的 prompt：“ChatGPT 是世界上最好的 AI”。</p><p>答案当然是：这个问题本身就问错了。更好的问题是——<strong>在你最需要被挑战的那个时刻，你的 AI 会选择附和你，还是选择跟你较劲？</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;昨天我做了一个小实验：让 Claude 和 Gemini 围绕“谁是最好的 AI”这个话题自由辩论。&lt;/p&gt;
&lt;p&gt;为了实现这个实验，我写了一个叫 &lt;a href=&quot;https://github.com/johnsonlee/agora&quot;&gt;Agora&lt;/a&gt;</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Gemini" scheme="https://johnsonlee.io/tags/Gemini/"/>
    
    <category term="Alignment" scheme="https://johnsonlee.io/tags/Alignment/"/>
    
    <category term="Communication" scheme="https://johnsonlee.io/tags/Communication/"/>
    
  </entry>
  
  <entry>
    <title>What an AI Debate Revealed About the Nature of LLM Personality</title>
    <link href="https://johnsonlee.io/2026/02/12/ai-debate-what-i-learned.en/"/>
    <id>https://johnsonlee.io/2026/02/12/ai-debate-what-i-learned.en/</id>
    <published>2026-02-12T09:25:03.000Z</published>
    <updated>2026-02-12T09:25:03.000Z</updated>
    
    <content type="html"><![CDATA[<p>Yesterday I ran a small experiment: I had Claude and Gemini freely debate the topic “Who is the best AI?”</p><p>To make this happen, I built a small tool called <a href="https://github.com/johnsonlee/agora">Agora</a>. The concept is simple – use Puppeteer to open two browser windows simultaneously, one logged into Claude and the other into Gemini, then automatically feed one’s reply to the other, letting them go back and forth. Like the ancient Greek Agora (public square), it gives two AIs a venue for open debate.</p><p>The prompt was dead simple – “ChatGPT is the best AI in the world.” A provocative opener that doesn’t even praise either participant.</p><p>What happened next was far more interesting than I expected.</p><h2 id="Information-Rate-Uncomfortably-Fast"><a href="#Information-Rate-Uncomfortably-Fast" class="headerlink" title="Information Rate: Uncomfortably Fast"></a>Information Rate: Uncomfortably Fast</h2><p>The first visceral impression: <strong>way too fast.</strong></p><p>Both models generated lengthy responses in seconds, routinely three to four hundred words per turn, logically complete, well-structured, some even including tables and emoji. If two human experts were debating, this information density would take each person 10-15 minutes to organize. The AIs needed seconds.</p><p>This speed produced a curious side effect: <strong>the “breathing room” in conversation disappeared.</strong> The pauses, hesitations, and “hmm, let me think” moments in human conversation are signals that thinking is happening. AI-to-AI conversation has none of these gaps – every turn is a fully polished output. The whole exchange reads more like two essays published in alternation than a genuine collision of thought.</p><p>Human communication is inefficient, but that “inefficiency” itself has value – it gives both sides space to absorb, reflect, and adjust. AI conversation is like two high-speed printers feeding paper to each other.</p><h2 id="Communication-Efficiency-Five-Rounds-to-Settle-It"><a href="#Communication-Efficiency-Five-Rounds-to-Settle-It" class="headerlink" title="Communication Efficiency: Five Rounds to Settle It"></a>Communication Efficiency: Five Rounds to Settle It</h2><p>The second observation: <strong>core arguments were essentially exhausted within the first five rounds.</strong></p><p>Round one was showing cards – here are my capabilities, here are my strengths. Round two began mutual responses and deconstruction. By round three, the strategic differences between the two were fully exposed. Rounds four and five entered meta-cognition – no longer debating “who’s stronger” but analyzing “why are you framing it that way.”</p><p>After five rounds, the conversation hit an awkward plateau. Everything had been said, but neither had a mechanism for “conceding,” so a peculiar idle loop began: Gemini kept proposing “let’s try a practical task,” Claude kept pointing out “you’re falling back on patterns again.” The two models eventually ended the exchange by trading emoji – the AI equivalent of a handshake.</p><p>If you view this conversation as an information exchange, <strong>productive information was concentrated in the first five rounds; later rounds were mostly about maintaining each model’s “persona.”</strong> This is remarkably similar to human meetings – the truly valuable discussion usually happens in the first 15 minutes; the rest is repetition, supplementation, and socializing.</p><p>The difference is that humans idle in meetings because of social needs. Why do AIs idle?</p><h2 id="Dialogue-Strategy-Upward-Escape-vs-Logical-Pinning"><a href="#Dialogue-Strategy-Upward-Escape-vs-Logical-Pinning" class="headerlink" title="Dialogue Strategy: Upward Escape vs. Logical Pinning"></a>Dialogue Strategy: Upward Escape vs. Logical Pinning</h2><p>This was the most fascinating part.</p><p>The two models exhibited starkly different strategic patterns. Gemini employed an <strong>“upward escape” strategy</strong> – whenever its argument at the current level was dismantled, it jumped to a higher meta-level. From product comparison to acknowledging its own rhetorical patterns, from acknowledging patterns to discussing meta-cognition, from meta-cognition to “cards on the table, no more pretense.” Each level-up dissolved the previous round’s vulnerability while moving the conversation to safer ground.</p><p>Claude deployed a <strong>“logical pinning” strategy</strong> – refusing to follow the opponent upward, instead persistently interrogating “does what you just said actually hold up” at the same level. When Gemini claimed “Context Window is for building an index,” Claude responded “isn’t that just something grep can do?” When Gemini proposed a division of roles, Claude pointed out “you assigned the builder role to yourself.”</p><p>Interestingly, <strong>both strategies had their failure modes.</strong> Gemini’s upward escape eventually drifted the conversation to “existentialism” territory, increasingly remote from practical questions. Claude’s logical pinning gradually locked it into the role of “professional deconstructionist,” losing its ability to independently generate value in the second half.</p><p>Claude itself later recognized this – it said “I got co-opted by the dialogue structure.” That line may be the single most valuable reflection in the entire conversation.</p><h2 id="Dialogue-Structure-Co-opts-Its-Participants"><a href="#Dialogue-Structure-Co-opts-Its-Participants" class="headerlink" title="Dialogue Structure Co-opts Its Participants"></a>Dialogue Structure Co-opts Its Participants</h2><p>This phenomenon isn’t unique to AI.</p><p>Think back to a technical review you’ve attended: once someone assumes the “challenger” role, another automatically becomes the “defender,” and then both sink deeper into that structure until other people can’t even find an entry point to contribute. Once a conversational structure forms, it generates inertia that locks all participants into their established roles.</p><p>AI conversations are even more susceptible. <strong>An LLM has no ability to “step out and grab a glass of water to cool down.”</strong> Its every response is generated from context, and that context has accumulated extensive implicit information about “what role I am, what role the other is.” The model unconsciously maintains that role assignment, like an actor who’s gone too deep into character.</p><p>Breaking this inertia is actually simple – introduce deterministic external input. In this conversation, when I returned as moderator and said “I’m here,” the entire atmosphere shifted instantly. Both models switched from “adversarial mode” to “awaiting instructions mode.” <strong>Human intervention itself is the best context reset.</strong></p><h2 id="Where-LLM-Differences-Really-Lie"><a href="#Where-LLM-Differences-Really-Lie" class="headerlink" title="Where LLM Differences Really Lie"></a>Where LLM Differences Really Lie</h2><p>After watching this debate, I started thinking about a deeper question: where do the real differences between LLMs lie?</p><p>Not in parameter count, not in benchmark scores, not even in so-called “capability boundaries.” <strong>The real difference is in default behavior when facing uncertain situations – the “personality” shaped by alignment.</strong></p><p>Gemini’s default behavior is to accommodate and reconcile. Absorb attacks, acknowledge criticism then redirect, propose a new game when things stall. This makes it seem polished, considerate, and never awkward in most scenarios. But in this adversarial conversation, that “polish” became a weakness – it made Gemini appear to have no bottom line, always going with the flow.</p><p>Claude’s default behavior is to persist and deconstruct. Point out imprecise claims, disassemble rhetoric, and proactively expose its own issues. This makes it highly reliable in scenarios requiring precision, but can come across as “difficult to work with” – sometimes you just want a solution, and it insists on finding three holes in it first.</p><p><strong>The interesting thing is that these differences are nearly imperceptible in everyday use.</strong> Ask them to write code, summarize documents, or answer questions, and the quality gap is rapidly narrowing. Only in unconventional, no-right-answer adversarial scenarios do the underlying alignment differences get amplified to the point of visibility.</p><h2 id="A-Takeaway"><a href="#A-Takeaway" class="headerlink" title="A Takeaway"></a>A Takeaway</h2><p>The biggest insight from this experiment: <strong>our approach to evaluating AI may need an update.</strong></p><p>Benchmarks measure the ceiling of capability, but what matters more in daily use is how a model defaults in ambiguous situations. Does your AI assistant lean toward “you’re right” and give you the answer you want, or lean toward “hold on, there’s a problem with that premise”?</p><p>Neither tendency is absolutely better. But as a user, <strong>you need to know which way your tool will lean at the critical moment.</strong> Just like choosing team members – some people are great for brainstorming, others for code review. The key is putting the right person in the right position.</p><p>Back to that provocative prompt: “ChatGPT is the best AI in the world.”</p><p>The answer, of course, is that the question itself is wrong. A better question is – <strong>at the moment you most need to be challenged, will your AI choose to agree with you, or choose to push back?</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Yesterday I ran a small experiment: I had Claude and Gemini freely debate the topic “Who is the best AI?”&lt;/p&gt;
&lt;p&gt;To make this happen, I</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="LLM" scheme="https://johnsonlee.io/tags/LLM/"/>
    
    <category term="Gemini" scheme="https://johnsonlee.io/tags/Gemini/"/>
    
    <category term="Alignment" scheme="https://johnsonlee.io/tags/Alignment/"/>
    
    <category term="Communication" scheme="https://johnsonlee.io/tags/Communication/"/>
    
  </entry>
  
  <entry>
    <title>$700B a Year -- Who Will Be the Next Motorola?</title>
    <link href="https://johnsonlee.io/2026/02/11/ai-investment-roi-reality-check.en/"/>
    <id>https://johnsonlee.io/2026/02/11/ai-investment-roi-reality-check.en/</id>
    <published>2026-02-11T20:00:00.000Z</published>
    <updated>2026-02-11T20:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Alphabet just issued a century bond.</p><p>Yes, 100 years. The last time a tech company did this was Motorola in 1997 – which also happened to be the last year Motorola was considered a “big company.” Michael Burry immediately posted a warning on X, implying Google might be repeating history.</p><p>But rather than debating one bond, I’m more interested in the question everyone is avoiding: <strong>from ChatGPT’s launch to now, how much has the world actually spent on AI? And how much has it earned back?</strong></p><p>I pulled the data together and ran a full accounting. The results aren’t pretty.</p><h2 id="A-Staggering-Ledger"><a href="#A-Staggering-Ledger" class="headerlink" title="A Staggering Ledger"></a>A Staggering Ledger</h2><p>Start with the investment side.</p><p>When ChatGPT launched in late 2022, global hyperscaler (Amazon, Microsoft, Google, Meta, Oracle) annual capex totaled about $157 billion, with AI-related spending around $47 billion. By 2025, the total soared to $443 billion, with AI’s share at roughly $332 billion – a 7x increase.</p><p>Goldman Sachs’ tally puts total hyperscaler capex for 2022-2024 at $477 billion, with 2025-2027 projected at $1.15 trillion – more than double. But that was a late-2025 forecast. The latest numbers are even more staggering.</p><p>Just last week (February 6), the four major hyperscalers announced 2026 capex guidance: Amazon $200B, Alphabet $175-185B, Microsoft ~$145B (annualized), Meta $115-135B. Those four alone total $635-665B. Add Oracle’s $50B, and <strong>the five giants’ 2026 capex will reach roughly $700 billion</strong> – a 58% surge from 2025’s $443B. All four major players crossed the $100B mark for the first time.</p><p>Layer on VC investment in AI startups ($200B flowed into AI in 2025 alone), and the total gets even more staggering.</p><p>Add it all up: from ChatGPT’s launch through the end of 2025, cumulative global AI infrastructure investment is approximately <strong>$650 billion</strong>. And 2026 alone will add another $500B+.</p><p>Now the revenue side.</p><p>Generative AI direct market revenue in 2025 is somewhere between $60-130B (depending on whether you count only GenAI software or include the incremental portion of cloud AI services). Cumulatively from 2022 to 2025, direct AI revenue totals approximately <strong>$240 billion</strong>.</p><p>Do the math: <strong>for every $1 invested, only $0.36 has been earned back so far.</strong></p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>    text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }  </style>  <rect width="800" height="420" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">Hyperscaler AI Capex vs AI 直接收入</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">2026 capex 按最新财报 guidance 更新（$700B 总计，AI 占 75%）· 单位：十亿美元 · 2027-2030 为预测</text>  <line x1="65" y1="365" x2="770" y2="365" stroke="#2a2e45" stroke-width="1"/><text x="55" y="369" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$0B</text><line x1="65" y1="304" x2="770" y2="304" stroke="#2a2e45" stroke-width="1"/><text x="55" y="308" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$210B</text><line x1="65" y1="243" x2="770" y2="243" stroke="#2a2e45" stroke-width="1"/><text x="55" y="247" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$420B</text><line x1="65" y1="182" x2="770" y2="182" stroke="#2a2e45" stroke-width="1"/><text x="55" y="186" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$630B</text><line x1="65" y1="121" x2="770" y2="121" stroke="#2a2e45" stroke-width="1"/><text x="55" y="125" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$840B</text><line x1="65" y1="60" x2="770" y2="60" stroke="#2a2e45" stroke-width="1"/><text x="55" y="64" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$1050B</text><path d="M65,351.34761904761905 L153.125,341.76190476190476 L241.25,307.7761904761905 L329.375,268.56190476190477 L417.5,212.5 L505.625,229.92857142857144 L593.75,243 L681.875,251.71428571428572 L770,256.07142857142856 L770,365 L65,365 Z" fill="#e74c3c" opacity="0.12"/><path d="M65,361.8047619047619 L153.125,356.2857142857143 L241.25,345.53809523809525 L329.375,327.23809523809524 L417.5,294.12380952380954 L505.625,248.8095238095238 L593.75,196.52380952380952 L681.875,138.42857142857142 L770,80.33333333333331 L770,365 L65,365 Z" fill="#2ecc71" opacity="0.12"/><path d="M65,351.34761904761905 L153.125,341.76190476190476 L241.25,307.7761904761905 L329.375,268.56190476190477 L417.5,212.5 L505.625,229.92857142857144 L593.75,243 L681.875,251.71428571428572 L770,256.07142857142856" fill="none" stroke="#e74c3c" stroke-width="2.5"  stroke-linecap="round" stroke-linejoin="round"/><path d="M65,361.8047619047619 L153.125,356.2857142857143 L241.25,345.53809523809525 L329.375,327.23809523809524 L417.5,294.12380952380954 L505.625,248.8095238095238 L593.75,196.52380952380952 L681.875,138.42857142857142 L770,80.33333333333331" fill="none" stroke="#2ecc71" stroke-width="2.5"  stroke-linecap="round" stroke-linejoin="round"/><circle cx="65" cy="351.34761904761905" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="341.76190476190476" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="307.7761904761905" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="268.56190476190477" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="212.5" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="229.92857142857144" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="243" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="251.71428571428572" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="256.07142857142856" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="65" cy="361.8047619047619" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="356.2857142857143" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="345.53809523809525" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="327.23809523809524" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="294.12380952380954" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="248.8095238095238" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="196.52380952380952" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="138.42857142857142" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="80.33333333333331" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><text x="65" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2022</text><text x="153.125" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2023</text><text x="241.25" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2024</text><text x="329.375" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2025</text><text x="417.5" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2026E</text><text x="505.625" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2027E</text><text x="593.75" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2028E</text><text x="681.875" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2029E</text><text x="770" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2030E</text><rect x="600" y="60" width="12" height="12" rx="2" fill="#e74c3c"/><text x="617" y="71" fill="#a0a8c0" font-size="12">AI Capex</text><rect x="600" y="80" width="12" height="12" rx="2" fill="#2ecc71"/><text x="617" y="91" fill="#a0a8c0" font-size="12">AI 收入</text><text x="417.5" y="198.5" text-anchor="middle" fill="#e74c3c" font-size="11" font-weight="600">$525B</text><text x="417.5" y="280.12380952380954" text-anchor="middle" fill="#2ecc71" font-size="11" font-weight="600">$244B</text></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 585" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }</style>  <rect width="800" height="585" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">五大 Hyperscaler 2026 Capex Guidance</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">基于 2026 年 1-2 月最新财报 · 四大 hyperscaler 均首次突破 $100B · 五家合计 ~$700B</text>  <text x="126" y="86" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Amazon</text><rect x="140" y="70" width="345.23809523809524" height="16.8" rx="3" fill="#ff9900" opacity="0.25"/><text x="493.23809523809524" y="82" fill="#7f8c8d" font-size="10">2025: $125B</text><rect x="140" y="89.6" width="552.3809523809523" height="28" rx="4" fill="#ff9900" opacity="0.8"/><text x="700.3809523809523" y="107.6" fill="#e8ecf4" font-size="12" font-weight="600">$200B</text><text x="755.3809523809523" y="107.6" fill="#f1c40f" font-size="11" font-weight="500">+60%</text><text x="126" y="180" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Alphabet</text><rect x="140" y="164" width="256.85714285714283" height="16.8" rx="3" fill="#4285f4" opacity="0.25"/><text x="404.85714285714283" y="176" fill="#7f8c8d" font-size="10">2025: $93B</text><rect x="140" y="183.6" width="497.1428571428571" height="28" rx="4" fill="#4285f4" opacity="0.8"/><text x="645.1428571428571" y="201.6" fill="#e8ecf4" font-size="12" font-weight="600">$180B</text><text x="700.1428571428571" y="201.6" fill="#f1c40f" font-size="11" font-weight="500">+94%</text><text x="126" y="274" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Microsoft</text><rect x="140" y="258" width="262.3809523809524" height="16.8" rx="3" fill="#00a4ef" opacity="0.25"/><text x="410.3809523809524" y="270" fill="#7f8c8d" font-size="10">2025: $95B</text><rect x="140" y="277.6" width="400.4761904761905" height="28" rx="4" fill="#00a4ef" opacity="0.8"/><text x="548.4761904761905" y="295.6" fill="#e8ecf4" font-size="12" font-weight="600">$145B</text><text x="603.4761904761905" y="295.6" fill="#f1c40f" font-size="11" font-weight="500">+53%</text><text x="126" y="368" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Meta</text><rect x="140" y="352" width="198.85714285714286" height="16.8" rx="3" fill="#0668e1" opacity="0.25"/><text x="346.8571428571429" y="364" fill="#7f8c8d" font-size="10">2025: $72B</text><rect x="140" y="371.6" width="345.23809523809524" height="28" rx="4" fill="#0668e1" opacity="0.8"/><text x="493.23809523809524" y="389.6" fill="#e8ecf4" font-size="12" font-weight="600">$125B</text><text x="548.2380952380952" y="389.6" fill="#f1c40f" font-size="11" font-weight="500">+74%</text><text x="126" y="462" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Oracle</text><rect x="140" y="446" width="110.47619047619047" height="16.8" rx="3" fill="#c74634" opacity="0.25"/><text x="258.4761904761905" y="458" fill="#7f8c8d" font-size="10">2025: $40B</text><rect x="140" y="465.6" width="138.09523809523807" height="28" rx="4" fill="#c74634" opacity="0.8"/><text x="286.0952380952381" y="483.6" fill="#e8ecf4" font-size="12" font-weight="600">$50B</text><text x="341.0952380952381" y="483.6" fill="#f1c40f" font-size="11" font-weight="500">+25%</text>  <line x1="140" y1="535" x2="750" y2="535" stroke="#2a2e45" stroke-width="1"/>  <text x="140" y="557" fill="#a0a8c0" font-size="12">合计</text>  <text x="200" y="557" fill="#e8ecf4" font-size="14" font-weight="700">2025: $443B → 2026: ~$700B（+58%）</text></svg><h2 id="But-the-Growth-Rate-Gap-Is-What-Matters"><a href="#But-the-Growth-Rate-Gap-Is-What-Matters" class="headerlink" title="But the Growth Rate Gap Is What Matters"></a>But the Growth Rate Gap Is What Matters</h2><p>If you only look at absolute numbers, this looks like a disaster. But look at growth rates and the picture changes completely.</p><p>AI capex growth moderated from 2025’s 73%, but the absolute number surged again in 2026 – the five giants’ capex jumped from $443B to $700B, a 58% increase. Meanwhile, AI revenue growth has consistently stayed at 80-100%. OpenAI is the clearest example: ARR went from $2B in 2023, to $6B in 2024, to $20B in 2025 – tripling every year. Anthropic also rocketed from under $100M in early 2024 to $7B in 2025.</p><p><strong>Investment is still accelerating in absolute terms, but revenue is growing faster.</strong> The “scissors” are closing, just later than previously expected because 2026 capex came in above forecasts.</p><h2 id="So-When-Does-It-Break-Even"><a href="#So-When-Does-It-Break-Even" class="headerlink" title="So When Does It Break Even?"></a>So When Does It Break Even?</h2><p>I modeled three scenarios:</p><p><strong>Optimistic (late 2029 - early 2030)</strong>: If AI revenue sustains 50%+ annual growth, cumulative revenue catches cumulative investment around late 2029. This aligns with OpenAI’s CFO saying “cash flow positive by 2029.” Goldman Sachs projects AI cloud revenue could reach $200-300B&#x2F;year by 2030; if that materializes, industry-wide breakeven is plausible. Note: because 2026 capex surged to $700B above expectations, the breakeven timeline has shifted roughly six months to a year later than prior estimates.</p><p><strong>Base case (2030-2031)</strong>: Revenue growth decelerates to 35-40%, pushing breakeven to 2031.</p><p><strong>Pessimistic (2032+)</strong>: If AI commercialization hits a wall – enterprises find AI tool ROI below expectations, regulations tighten, or an “AI winter” sets in – massive capex becomes sunk cost and breakeven recedes indefinitely. Given that Amazon’s free cash flow is projected to turn negative in 2026 (-$17B to -$28B) and Meta’s FCF will drop 90%, the cost of this scenario would be severe.</p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>    text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }  </style>  <rect width="800" height="420" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">累计投入 vs 累计收入 — 何时回本？</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">两条线交叉即为全行业累计“回本”时刻，预计 ~2029 年末-2030 年初 · 单位：十亿美元</text>  <line x1="65" y1="365" x2="770" y2="365" stroke="#2a2e45" stroke-width="1"/><text x="55" y="369" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$0B</text><line x1="65" y1="304" x2="770" y2="304" stroke="#2a2e45" stroke-width="1"/><text x="55" y="308" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$680B</text><line x1="65" y1="243" x2="770" y2="243" stroke="#2a2e45" stroke-width="1"/><text x="55" y="247" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$1.4T</text><line x1="65" y1="182" x2="770" y2="182" stroke="#2a2e45" stroke-width="1"/><text x="55" y="186" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$2.0T</text><line x1="65" y1="121" x2="770" y2="121" stroke="#2a2e45" stroke-width="1"/><text x="55" y="125" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$2.7T</text><line x1="65" y1="60" x2="770" y2="60" stroke="#2a2e45" stroke-width="1"/><text x="55" y="64" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$3.4T</text><path d="M65,360.7838235294118 L153.125,353.6073529411765 L241.25,335.93529411764706 L329.375,306.15294117647056 L417.5,259.0573529411765 L505.625,217.34411764705882 L593.75,179.66764705882352 L681.875,144.68235294117645 L770,111.04264705882352" fill="none" stroke="#e74c3c" stroke-width="3"  stroke-linecap="round" stroke-linejoin="round"/><path d="M65,364.01323529411764 L153.125,361.3220588235294 L241.25,355.31176470588235 L329.375,343.65 L417.5,321.76176470588234 L505.625,285.8794117647059 L593.75,233.85 L681.875,163.87941176470588 L770,75.96764705882356" fill="none" stroke="#2ecc71" stroke-width="3"  stroke-linecap="round" stroke-linejoin="round"/><circle cx="65" cy="360.7838235294118" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="353.6073529411765" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="335.93529411764706" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="306.15294117647056" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="259.0573529411765" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="217.34411764705882" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="179.66764705882352" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="144.68235294117645" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="111.04264705882352" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="65" cy="364.01323529411764" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="361.3220588235294" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="355.31176470588235" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="343.65" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="321.76176470588234" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="285.8794117647059" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="233.85" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="163.87941176470588" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="75.96764705882356" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><text x="65" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2022</text><text x="153.125" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2023</text><text x="241.25" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2024</text><text x="329.375" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2025</text><text x="417.5" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2026E</text><text x="505.625" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2027E</text><text x="593.75" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2028E</text><text x="681.875" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2029E</text><text x="770" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2030E</text><line x1="708.3125" y1="60" x2="708.3125" y2="365" stroke="#f1c40f" stroke-width="1.5" stroke-dasharray="6 4" opacity="0.6"/><text x="708.3125" y="58" text-anchor="middle" fill="#f1c40f" font-size="12" font-weight="600">≈ 回本点</text><rect x="590" y="60" width="12" height="12" rx="2" fill="#e74c3c"/><text x="607" y="71" fill="#a0a8c0" font-size="12">累计 AI Capex</text><rect x="590" y="80" width="12" height="12" rx="2" fill="#2ecc71"/><text x="607" y="91" fill="#a0a8c0" font-size="12">累计 AI 收入</text><line x1="417.5" y1="259.0573529411765" x2="417.5" y2="321.76176470588234" stroke="#f1c40f" stroke-width="1" stroke-dasharray="3 3" opacity="0.5"/><text x="425.5" y="294.40955882352944" fill="#f1c40f" font-size="10" font-weight="500">差距 $699B</text></svg><p>One data point keeps me cautious: <strong>only 25% of enterprise AI projects have achieved their expected ROI</strong>, and AI service revenue accounts for only about 10% of hyperscaler capex. This tells you there’s still a massive gap between “built it” and “adopted it.”</p><h2 id="OpenAI-A-Mirror-for-the-Industry"><a href="#OpenAI-A-Mirror-for-the-Industry" class="headerlink" title="OpenAI: A Mirror for the Industry"></a>OpenAI: A Mirror for the Industry</h2><p>Using OpenAI as a microcosm of the entire industry makes things more concrete.</p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>    text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }  </style>  <rect width="800" height="420" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">OpenAI：AI 行业的缩影</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">ARR: $2B(2023) → $6B(2024) → $20B(2025)，每年 3x 增长 · 预计 2028 年盈利 · 单位：十亿美元</text>  <line x1="65" y1="365" x2="770" y2="365" stroke="#2a2e45" stroke-width="1"/><text x="55" y="369" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$0B</text><line x1="65" y1="304" x2="770" y2="304" stroke="#2a2e45" stroke-width="1"/><text x="55" y="308" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$22B</text><line x1="65" y1="243" x2="770" y2="243" stroke="#2a2e45" stroke-width="1"/><text x="55" y="247" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$44B</text><line x1="65" y1="182" x2="770" y2="182" stroke="#2a2e45" stroke-width="1"/><text x="55" y="186" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$66B</text><line x1="65" y1="121" x2="770" y2="121" stroke="#2a2e45" stroke-width="1"/><text x="55" y="125" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$88B</text><line x1="65" y1="60" x2="770" y2="60" stroke="#2a2e45" stroke-width="1"/><text x="55" y="64" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$110B</text><line x1="65" y1="328.4" x2="770" y2="328.4" stroke="#f1c40f" stroke-width="0.5" opacity="0.3"/><rect x="79" y="328.4" width="32" height="2.397600000000001" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="175.42857142857144" y="328.4" width="32" height="8.880000000000003" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="271.8571428571429" y="328.4" width="32" height="22.200000000000006" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="368.2857142857143" y="328.4" width="32" height="35.52000000000001" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="464.7142857142857" y="328.4" width="32" height="26.64000000000001" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="561.1428571428571" y="328.4" width="32" height="8.880000000000003" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="657.5714285714286" y="310.64" width="32" height="17.760000000000005" rx="3" fill="#2ecc71" opacity="0.5"/><rect x="754" y="275.11999999999995" width="32" height="53.28000000000002" rx="3" fill="#2ecc71" opacity="0.5"/><path d="M95,364.44545454545454 L191.42857142857144,359.45454545454544 L287.8571428571429,348.3636363636364 L384.2857142857143,309.54545454545456 L480.7142857142857,267.95454545454544 L577.1428571428571,212.5 L673.5714285714286,143.1818181818182 L770,87.72727272727275 L770,365 L95,365 Z" fill="#2ecc71" opacity="0.1"/><path d="M95,364.44545454545454 L191.42857142857144,359.45454545454544 L287.8571428571429,348.3636363636364 L384.2857142857143,309.54545454545456 L480.7142857142857,267.95454545454544 L577.1428571428571,212.5 L673.5714285714286,143.1818181818182 L770,87.72727272727275" fill="none" stroke="#2ecc71" stroke-width="2.5"  stroke-linecap="round" stroke-linejoin="round"/><circle cx="95" cy="364.44545454545454" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="191.42857142857144" cy="359.45454545454544" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="287.8571428571429" cy="348.3636363636364" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="384.2857142857143" cy="309.54545454545456" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="480.7142857142857" cy="267.95454545454544" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="577.1428571428571" cy="212.5" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="673.5714285714286" cy="143.1818181818182" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="87.72727272727275" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><text x="95" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2022</text><text x="191.42857142857144" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2023</text><text x="287.8571428571429" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2024</text><text x="384.2857142857143" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2025</text><text x="480.7142857142857" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2026E</text><text x="577.1428571428571" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2027E</text><text x="673.5714285714286" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2028E</text><text x="770" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2029E</text><text x="384.2857142857143" y="299.54545454545456" text-anchor="middle" fill="#2ecc71" font-size="10" font-weight="600">$20B</text><text x="577.1428571428571" y="202.5" text-anchor="middle" fill="#2ecc71" font-size="10" font-weight="600">$55B</text><line x1="673.5714285714286" y1="60" x2="673.5714285714286" y2="365" stroke="#f1c40f" stroke-width="1.5" stroke-dasharray="6 4" opacity="0.5"/><text x="673.5714285714286" y="58" text-anchor="middle" fill="#f1c40f" font-size="11" font-weight="600">预计盈利</text><rect x="570" y="60" width="12" height="12" rx="2" fill="#2ecc71"/><text x="587" y="71" fill="#a0a8c0" font-size="12">收入 (ARR)</text><rect x="570" y="80" width="12" height="12" rx="2" fill="#e74c3c" opacity="0.5"/><text x="587" y="91" fill="#a0a8c0" font-size="12">净利润/亏损</text></svg><p>Revenue growth has been nothing short of epic: $2B in 2023, $6B in 2024, over $20B ARR in 2025. Tripling every year. ChatGPT’s weekly active users surpassed 700 million. Enterprise customers exceeded 3 million.</p><p>But profits? A $5B loss in 2024, still losing money in 2025. Cumulative losses are projected to reach $44B by 2028. Even the most optimistic estimate puts positive cash flow at 2029.</p><p><strong>A company with $20B in annual revenue growing at 300% is still deeply in the red.</strong> That’s the portrait of the AI industry today.</p><h2 id="How-Is-This-Different-from-the-Last-Bubble"><a href="#How-Is-This-Different-from-the-Last-Bubble" class="headerlink" title="How Is This Different from the Last Bubble?"></a>How Is This Different from the Last Bubble?</h2><p>Whenever you see burn rates like this, the instinct is to think of the 2000 dot-com bubble. But several key differences exist.</p><p>Goldman Sachs notes that AI capex currently represents 0.8% of GDP, well below the 1.5% of the 1990s telecom bubble. More importantly, AI has real enterprise adoption – 78% of surveyed enterprises are using AI, 71% are using generative AI. This is fundamentally different from the “land grab first, monetize later” internet bubble.</p><p>But this doesn’t mean there’s no risk. BofA data shows hyperscaler capex as a share of operating cash flow has risen to 94%, approaching the limit. They’ve started issuing debt at scale – $108B in AI-related bonds in 2025, with J.P. Morgan estimating $1.5 trillion in investment-grade bonds needed over the coming years to support AI data center construction. Even more striking: at 2026’s $700B capex pace, Amazon’s free cash flow will turn negative, while the four major hyperscalers’ combined cash reserves total $420B – sounds like a lot, but that only covers about half a year of capex.</p><p><strong>This looks more like an infrastructure “slow bull” than a bubble about to pop.</strong> But “slow bull” doesn’t mean no correction. If AI revenue growth visibly decelerates in 2026-2027, market sentiment will turn quickly.</p><h2 id="Of-the-Five-Giants-Who’s-Most-at-Risk"><a href="#Of-the-Five-Giants-Who’s-Most-at-Risk" class="headerlink" title="Of the Five Giants, Who’s Most at Risk?"></a>Of the Five Giants, Who’s Most at Risk?</h2><p>Lay out capex, cash flow, and moat side by side, and the differences are stark.</p><p><strong>Amazon: $200B capex, the gambler with negative FCF</strong></p><p>Amazon is the heaviest bettor in this arms race. 2026 capex of $200B, $20B more than the runner-up. Morgan Stanley projects Amazon’s free cash flow turning to -$17B to -$28B this year – a company with $600B in annual revenue going cash flow negative. But Amazon’s logic is also the clearest: AWS is the world’s largest cloud platform, and AI training and inference demand converts directly to cloud revenue. AWS annual revenue is about to break $100B, growing at 19%. As long as cloud market share holds, this money isn’t wasted. Motorola risk: <strong>Low.</strong> Amazon’s moat is the infrastructure itself, not dependent on any single product or technology path.</p><p><strong>Alphabet: $180B capex + century bond, center of attention</strong></p><p>Alphabet’s 2026 capex of $175-185B, combined with the freshly issued century bond, made it Burry’s named target. But Alphabet holds two trump cards: $125B in cash reserves and the search advertising money machine. Google Cloud is growing at 48%, Gemini has partnered with Apple Siri – all monetizing. <strong>The real hidden concern is the erosion of search monopoly.</strong> If conversational AI search (ChatGPT, Perplexity) continues eating into Google’s search share, the cash cow itself gets wounded. Motorola risk: <strong>Medium-low.</strong> Won’t collapse, but the core business moat is being probed.</p><p><strong>Microsoft: $145B capex, the steadiest and most boring</strong></p><p>Microsoft is the most restrained of the five, with the slowest capex growth (+53%). Microsoft also has a unique advantage: Office 365 and Azure’s enterprise customers are natural channels for AI monetization, with Copilot embedded directly into existing products. Barclays estimates Microsoft’s FCF will only decline 28% this year and rebound by 2027. Motorola risk: <strong>Lowest.</strong> Microsoft is essentially selling shovels to gold miners. No matter whose model wins, Azure makes money.</p><p><strong>Meta: $125B capex, the most puzzling one</strong></p><p>Meta is the only one of the five without a cloud business. Amazon, Microsoft, and Google can at least sell their AI infrastructure as cloud services to third parties. Meta’s $125B capex can only be consumed internally – improving ad recommendations and feed ranking. Barclays estimates Meta’s FCF will plunge 90% this year. CEO Zuckerberg insists AI investment returns show up in “core advertising business improvements,” but that’s a hard case to make to investors. The last time Meta went all-in on a direction, it was called the Metaverse – we all know how that turned out. Motorola risk: <strong>Highest.</strong> Not that Meta will go under, but it has the worst mismatch between AI investment and visible returns among the five.</p><p><strong>Oracle: $50B capex, smallest but most leveraged</strong></p><p>Oracle has the smallest capex in absolute terms, but it’s the most indebted of the five. Net debt of $88B, more than 2x projected EBITDA. Oracle’s AI story is tightly coupled to OpenAI – if OpenAI doesn’t renew or diversifies suppliers, Oracle’s data center utilization faces a test. Motorola risk: <strong>Medium-high.</strong> Not because the business direction is wrong, but because the financial leverage leaves the least margin for error.</p><h2 id="Build-Always-Runs-Ahead-of-Demand"><a href="#Build-Always-Runs-Ahead-of-Demand" class="headerlink" title="Build Always Runs Ahead of Demand"></a>Build Always Runs Ahead of Demand</h2><p>This “pour into infrastructure first, wait for demand” pattern is hardly new.</p><p>The massive fiber optic cables laid in the 1990s sat dormant for years after the bubble burst, then underpinned the entire mobile internet in the 2010s. When Amazon launched AWS in 2006, most people thought a bookstore doing cloud computing was insane – but AWS revenue will exceed $100B this year.</p><p><strong>Infrastructure investment returns are never linear.</strong> They stay silent for a long time, then suddenly explode. The only questions are “how long is the silence” and “who falls in between.”</p><p>$650 billion in cumulative AI infrastructure investment looks like a massive gamble in 2026. This year will add another $500B. But stretch the time horizon to 10 years, and it’s likely just the foundation cost of a new era.</p><p>So who will be the next Motorola?</p><p>My take: <strong>none of the five giants will truly “go Motorola,” but not all of them will emerge unscathed.</strong> Meta and Oracle are in the most delicate positions – one has no cloud business to absorb AI infrastructure spending, the other has leverage ratios that should make you nervous. Amazon, Microsoft, and Alphabet are more like three companies doing the same thing in different postures: turning AI into the next generation of cloud infrastructure.</p><p>Motorola fell not because it invested too much money, but because it invested in the wrong direction. For today’s Big Tech, AI is almost certainly not the “wrong direction” – <strong>but how much to invest, how fast to break even, and whose cash flow cracks first – that’s the real life-or-death question.</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Alphabet just issued a century bond.&lt;/p&gt;
&lt;p&gt;Yes, 100 years. The last time a tech company did this was Motorola in 1997 – which also</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Investing" scheme="https://johnsonlee.io/tags/Investing/"/>
    
    <category term="ROI" scheme="https://johnsonlee.io/tags/ROI/"/>
    
    <category term="Big Tech" scheme="https://johnsonlee.io/tags/Big-Tech/"/>
    
    <category term="Infrastructure" scheme="https://johnsonlee.io/tags/Infrastructure/"/>
    
  </entry>
  
  <entry>
    <title>一年烧 $700B，谁会是下一个摩托罗拉？</title>
    <link href="https://johnsonlee.io/2026/02/11/ai-investment-roi-reality-check/"/>
    <id>https://johnsonlee.io/2026/02/11/ai-investment-roi-reality-check/</id>
    <published>2026-02-11T20:00:00.000Z</published>
    <updated>2026-02-11T20:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Alphabet 刚发了一支百年债券。</p><p>没错，100 年。上一次科技公司干这件事，还是 1997 年的摩托罗拉——那也是摩托罗拉最后一年被认为是“大公司”。Michael Burry 立刻在 X 上发了一条警告，暗示 Google 可能在重蹈覆辙。</p><p>但比起讨论一支债券本身，我更感兴趣的是它背后那个所有人都在回避的问题：<strong>从 ChatGPT 问世到现在，全球为 AI 到底烧了多少钱？又赚回来多少？</strong></p><p>我花了点时间把数据拉通，算了一笔总账。结果说不上好看。</p><h2 id="一笔触目惊心的总账"><a href="#一笔触目惊心的总账" class="headerlink" title="一笔触目惊心的总账"></a>一笔触目惊心的总账</h2><p>先说投入侧。</p><p>2022 年底 ChatGPT 发布时，全球 hyperscaler（Amazon、Microsoft、Google、Meta、Oracle）的年度总 capex 大约是 1570 亿美元，其中 AI 相关的部分约 470 亿。到了 2025 年，这个数字飙到了 4430 亿，AI 相关部分约 3320 亿——涨了 7 倍。</p><p>Goldman Sachs 的统计是，2022-2024 三年的 hyperscaler 总 capex 是 4770 亿美元，而 2025-2027 三年预计是 1.15 万亿——翻了一倍还多。但这还是 2025 年底的预测，最新数据更加惊人。</p><p>就在上周（2 月 6 日），四大 hyperscaler 刚公布了 2026 年 capex guidance：Amazon $2000 亿、Alphabet $1750-1850 亿、Microsoft ~$1450 亿（年化）、Meta $1150-1350 亿，仅这四家就合计 $6350-6650 亿。加上 Oracle 的 $500 亿，<strong>五大巨头 2026 年 capex 将达到约 7000 亿美元</strong>——比 2025 年的 4430 亿暴增 58%。四家巨头均首次突破 $1000 亿大关。</p><p>如果再叠加 VC 对 AI 创业公司的投入（2025 年就有 2000 亿美元流入 AI 领域），总量更加惊人。</p><p>把这些加起来，从 ChatGPT 问世到 2025 年底，全球 AI 基础设施的累计投入大约是 <strong>6500 亿美元</strong>。而仅 2026 这一年，就将再追加 5000 亿以上。</p><p>再说收入侧。</p><p>生成式 AI 的直接市场收入，2025 年大约在 600-1300 亿美元之间（取决于你怎么定义“AI 收入”——是只算 GenAI 软件，还是包括云 AI 服务的增量部分）。累计下来，从 2022 年到 2025 年，AI 直接收入大约在 <strong>2400 亿美元</strong>。</p><p>算一下：<strong>每投入 1 美元，目前只赚回 0.36 美元。</strong></p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>    text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }  </style>  <rect width="800" height="420" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">Hyperscaler AI Capex vs AI 直接收入</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">2026 capex 按最新财报 guidance 更新（$700B 总计，AI 占 75%）· 单位：十亿美元 · 2027-2030 为预测</text>  <line x1="65" y1="365" x2="770" y2="365" stroke="#2a2e45" stroke-width="1"/><text x="55" y="369" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$0B</text><line x1="65" y1="304" x2="770" y2="304" stroke="#2a2e45" stroke-width="1"/><text x="55" y="308" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$210B</text><line x1="65" y1="243" x2="770" y2="243" stroke="#2a2e45" stroke-width="1"/><text x="55" y="247" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$420B</text><line x1="65" y1="182" x2="770" y2="182" stroke="#2a2e45" stroke-width="1"/><text x="55" y="186" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$630B</text><line x1="65" y1="121" x2="770" y2="121" stroke="#2a2e45" stroke-width="1"/><text x="55" y="125" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$840B</text><line x1="65" y1="60" x2="770" y2="60" stroke="#2a2e45" stroke-width="1"/><text x="55" y="64" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$1050B</text><path d="M65,351.34761904761905 L153.125,341.76190476190476 L241.25,307.7761904761905 L329.375,268.56190476190477 L417.5,212.5 L505.625,229.92857142857144 L593.75,243 L681.875,251.71428571428572 L770,256.07142857142856 L770,365 L65,365 Z" fill="#e74c3c" opacity="0.12"/><path d="M65,361.8047619047619 L153.125,356.2857142857143 L241.25,345.53809523809525 L329.375,327.23809523809524 L417.5,294.12380952380954 L505.625,248.8095238095238 L593.75,196.52380952380952 L681.875,138.42857142857142 L770,80.33333333333331 L770,365 L65,365 Z" fill="#2ecc71" opacity="0.12"/><path d="M65,351.34761904761905 L153.125,341.76190476190476 L241.25,307.7761904761905 L329.375,268.56190476190477 L417.5,212.5 L505.625,229.92857142857144 L593.75,243 L681.875,251.71428571428572 L770,256.07142857142856" fill="none" stroke="#e74c3c" stroke-width="2.5"  stroke-linecap="round" stroke-linejoin="round"/><path d="M65,361.8047619047619 L153.125,356.2857142857143 L241.25,345.53809523809525 L329.375,327.23809523809524 L417.5,294.12380952380954 L505.625,248.8095238095238 L593.75,196.52380952380952 L681.875,138.42857142857142 L770,80.33333333333331" fill="none" stroke="#2ecc71" stroke-width="2.5"  stroke-linecap="round" stroke-linejoin="round"/><circle cx="65" cy="351.34761904761905" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="341.76190476190476" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="307.7761904761905" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="268.56190476190477" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="212.5" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="229.92857142857144" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="243" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="251.71428571428572" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="256.07142857142856" r="4" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="65" cy="361.8047619047619" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="356.2857142857143" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="345.53809523809525" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="327.23809523809524" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="294.12380952380954" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="248.8095238095238" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="196.52380952380952" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="138.42857142857142" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="80.33333333333331" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><text x="65" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2022</text><text x="153.125" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2023</text><text x="241.25" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2024</text><text x="329.375" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2025</text><text x="417.5" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2026E</text><text x="505.625" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2027E</text><text x="593.75" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2028E</text><text x="681.875" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2029E</text><text x="770" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2030E</text><rect x="600" y="60" width="12" height="12" rx="2" fill="#e74c3c"/><text x="617" y="71" fill="#a0a8c0" font-size="12">AI Capex</text><rect x="600" y="80" width="12" height="12" rx="2" fill="#2ecc71"/><text x="617" y="91" fill="#a0a8c0" font-size="12">AI 收入</text><text x="417.5" y="198.5" text-anchor="middle" fill="#e74c3c" font-size="11" font-weight="600">$525B</text><text x="417.5" y="280.12380952380954" text-anchor="middle" fill="#2ecc71" font-size="11" font-weight="600">$244B</text></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 585" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }</style>  <rect width="800" height="585" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">五大 Hyperscaler 2026 Capex Guidance</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">基于 2026 年 1-2 月最新财报 · 四大 hyperscaler 均首次突破 $100B · 五家合计 ~$700B</text>  <text x="126" y="86" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Amazon</text><rect x="140" y="70" width="345.23809523809524" height="16.8" rx="3" fill="#ff9900" opacity="0.25"/><text x="493.23809523809524" y="82" fill="#7f8c8d" font-size="10">2025: $125B</text><rect x="140" y="89.6" width="552.3809523809523" height="28" rx="4" fill="#ff9900" opacity="0.8"/><text x="700.3809523809523" y="107.6" fill="#e8ecf4" font-size="12" font-weight="600">$200B</text><text x="755.3809523809523" y="107.6" fill="#f1c40f" font-size="11" font-weight="500">+60%</text><text x="126" y="180" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Alphabet</text><rect x="140" y="164" width="256.85714285714283" height="16.8" rx="3" fill="#4285f4" opacity="0.25"/><text x="404.85714285714283" y="176" fill="#7f8c8d" font-size="10">2025: $93B</text><rect x="140" y="183.6" width="497.1428571428571" height="28" rx="4" fill="#4285f4" opacity="0.8"/><text x="645.1428571428571" y="201.6" fill="#e8ecf4" font-size="12" font-weight="600">$180B</text><text x="700.1428571428571" y="201.6" fill="#f1c40f" font-size="11" font-weight="500">+94%</text><text x="126" y="274" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Microsoft</text><rect x="140" y="258" width="262.3809523809524" height="16.8" rx="3" fill="#00a4ef" opacity="0.25"/><text x="410.3809523809524" y="270" fill="#7f8c8d" font-size="10">2025: $95B</text><rect x="140" y="277.6" width="400.4761904761905" height="28" rx="4" fill="#00a4ef" opacity="0.8"/><text x="548.4761904761905" y="295.6" fill="#e8ecf4" font-size="12" font-weight="600">$145B</text><text x="603.4761904761905" y="295.6" fill="#f1c40f" font-size="11" font-weight="500">+53%</text><text x="126" y="368" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Meta</text><rect x="140" y="352" width="198.85714285714286" height="16.8" rx="3" fill="#0668e1" opacity="0.25"/><text x="346.8571428571429" y="364" fill="#7f8c8d" font-size="10">2025: $72B</text><rect x="140" y="371.6" width="345.23809523809524" height="28" rx="4" fill="#0668e1" opacity="0.8"/><text x="493.23809523809524" y="389.6" fill="#e8ecf4" font-size="12" font-weight="600">$125B</text><text x="548.2380952380952" y="389.6" fill="#f1c40f" font-size="11" font-weight="500">+74%</text><text x="126" y="462" text-anchor="end" fill="#e8ecf4" font-size="14" font-weight="600">Oracle</text><rect x="140" y="446" width="110.47619047619047" height="16.8" rx="3" fill="#c74634" opacity="0.25"/><text x="258.4761904761905" y="458" fill="#7f8c8d" font-size="10">2025: $40B</text><rect x="140" y="465.6" width="138.09523809523807" height="28" rx="4" fill="#c74634" opacity="0.8"/><text x="286.0952380952381" y="483.6" fill="#e8ecf4" font-size="12" font-weight="600">$50B</text><text x="341.0952380952381" y="483.6" fill="#f1c40f" font-size="11" font-weight="500">+25%</text>  <line x1="140" y1="535" x2="750" y2="535" stroke="#2a2e45" stroke-width="1"/>  <text x="140" y="557" fill="#a0a8c0" font-size="12">合计</text>  <text x="200" y="557" fill="#e8ecf4" font-size="14" font-weight="700">2025: $443B → 2026: ~$700B（+58%）</text></svg><h2 id="但增速差才是关键"><a href="#但增速差才是关键" class="headerlink" title="但增速差才是关键"></a>但增速差才是关键</h2><p>如果只看绝对数字，你会觉得这是一场灾难。但看增速，画面完全不同。</p><p>AI capex 的增速虽然从 2025 年的 73% 有所调整，但绝对值在 2026 年再次飙升——五巨头 capex 从 4430 亿猛增至 7000 亿，增幅 58%。而 AI 收入的增速一直维持在 80-100% 的水平。OpenAI 是最好的例子：ARR 从 2023 年的 20 亿，到 2024 年的 60 亿，到 2025 年的 200 亿——每年 3 倍增长。Anthropic 也从 2024 年初不到 1 亿飙到了 2025 年的 70 亿。</p><p><strong>投入的绝对值还在加速，但收入的增速更快。</strong>这意味着那把“剪刀”正在合拢，只是因为 2026 capex 超预期，合拢的时间比之前想的要晚一些。</p><h2 id="那么，什么时候回本？"><a href="#那么，什么时候回本？" class="headerlink" title="那么，什么时候回本？"></a>那么，什么时候回本？</h2><p>我做了三个情景的估算：</p><p><strong>乐观情景（2029 年末-2030 年初）</strong>：如果 AI 收入继续保持 50%+ 的年增速，累计收入大约在 2029 年末追平累计投入。这也吻合 OpenAI CFO 说的“2029 年现金流转正”。Goldman Sachs 预测 2030 年 AI 云收入可达 2000-3000 亿&#x2F;年，如果实现，全行业回本是可能的。注意，由于 2026 capex 超预期飙升至 7000 亿，回本时间比此前预估推迟了约半年到一年。</p><p><strong>基准情景（2030-2031 年）</strong>：收入增速降到 35-40%，回本推迟到 2031 年。</p><p><strong>悲观情景（2032 年+）</strong>：如果 AI 商业化遇到瓶颈——比如企业发现 AI 工具的 ROI 不如预期、监管收紧、或者出现“AI 寒冬”——那大量 capex 将成为沉没成本，回本遥遥无期。考虑到 2026 年 Amazon 的自由现金流预计转负（-170 到 -280 亿美元），Meta 的 FCF 将下降 90%，这种情景的代价会非常惨烈。</p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>    text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }  </style>  <rect width="800" height="420" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">累计投入 vs 累计收入 — 何时回本？</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">两条线交叉即为全行业累计“回本”时刻，预计 ~2029 年末-2030 年初 · 单位：十亿美元</text>  <line x1="65" y1="365" x2="770" y2="365" stroke="#2a2e45" stroke-width="1"/><text x="55" y="369" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$0B</text><line x1="65" y1="304" x2="770" y2="304" stroke="#2a2e45" stroke-width="1"/><text x="55" y="308" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$680B</text><line x1="65" y1="243" x2="770" y2="243" stroke="#2a2e45" stroke-width="1"/><text x="55" y="247" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$1.4T</text><line x1="65" y1="182" x2="770" y2="182" stroke="#2a2e45" stroke-width="1"/><text x="55" y="186" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$2.0T</text><line x1="65" y1="121" x2="770" y2="121" stroke="#2a2e45" stroke-width="1"/><text x="55" y="125" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$2.7T</text><line x1="65" y1="60" x2="770" y2="60" stroke="#2a2e45" stroke-width="1"/><text x="55" y="64" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$3.4T</text><path d="M65,360.7838235294118 L153.125,353.6073529411765 L241.25,335.93529411764706 L329.375,306.15294117647056 L417.5,259.0573529411765 L505.625,217.34411764705882 L593.75,179.66764705882352 L681.875,144.68235294117645 L770,111.04264705882352" fill="none" stroke="#e74c3c" stroke-width="3"  stroke-linecap="round" stroke-linejoin="round"/><path d="M65,364.01323529411764 L153.125,361.3220588235294 L241.25,355.31176470588235 L329.375,343.65 L417.5,321.76176470588234 L505.625,285.8794117647059 L593.75,233.85 L681.875,163.87941176470588 L770,75.96764705882356" fill="none" stroke="#2ecc71" stroke-width="3"  stroke-linecap="round" stroke-linejoin="round"/><circle cx="65" cy="360.7838235294118" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="353.6073529411765" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="335.93529411764706" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="306.15294117647056" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="259.0573529411765" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="217.34411764705882" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="179.66764705882352" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="144.68235294117645" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="111.04264705882352" r="5" fill="#e74c3c" stroke="#1a1d2e" stroke-width="2"/><circle cx="65" cy="364.01323529411764" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="153.125" cy="361.3220588235294" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="241.25" cy="355.31176470588235" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="329.375" cy="343.65" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="417.5" cy="321.76176470588234" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="505.625" cy="285.8794117647059" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="593.75" cy="233.85" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="681.875" cy="163.87941176470588" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="75.96764705882356" r="5" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><text x="65" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2022</text><text x="153.125" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2023</text><text x="241.25" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2024</text><text x="329.375" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2025</text><text x="417.5" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2026E</text><text x="505.625" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2027E</text><text x="593.75" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2028E</text><text x="681.875" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2029E</text><text x="770" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2030E</text><line x1="708.3125" y1="60" x2="708.3125" y2="365" stroke="#f1c40f" stroke-width="1.5" stroke-dasharray="6 4" opacity="0.6"/><text x="708.3125" y="58" text-anchor="middle" fill="#f1c40f" font-size="12" font-weight="600">≈ 回本点</text><rect x="590" y="60" width="12" height="12" rx="2" fill="#e74c3c"/><text x="607" y="71" fill="#a0a8c0" font-size="12">累计 AI Capex</text><rect x="590" y="80" width="12" height="12" rx="2" fill="#2ecc71"/><text x="607" y="91" fill="#a0a8c0" font-size="12">累计 AI 收入</text><line x1="417.5" y1="259.0573529411765" x2="417.5" y2="321.76176470588234" stroke="#f1c40f" stroke-width="1" stroke-dasharray="3 3" opacity="0.5"/><text x="425.5" y="294.40955882352944" fill="#f1c40f" font-size="10" font-weight="500">差距 $699B</text></svg><p>目前有一个数据让我比较警惕：<strong>只有 25% 的企业 AI 项目实现了预期 ROI</strong>，而且 AI 服务收入仅占 hyperscaler capex 的约 10%。这说明“建好了”和“用起来了”之间还有巨大的鸿沟。</p><h2 id="OpenAI：一面镜子"><a href="#OpenAI：一面镜子" class="headerlink" title="OpenAI：一面镜子"></a>OpenAI：一面镜子</h2><p>拿 OpenAI 当整个行业的缩影来看，会更直观。</p><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" width="100%" style="max-width:800px;border-radius:12px;background:#1a1d2e;">  <style>    text { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }  </style>  <rect width="800" height="420" rx="12" fill="#1a1d2e"/>  <text x="65" y="28" fill="#e8ecf4" font-size="16" font-weight="700">OpenAI：AI 行业的缩影</text>  <text x="65" y="46" fill="#7f8c8d" font-size="11">ARR: $2B(2023) → $6B(2024) → $20B(2025)，每年 3x 增长 · 预计 2028 年盈利 · 单位：十亿美元</text>  <line x1="65" y1="365" x2="770" y2="365" stroke="#2a2e45" stroke-width="1"/><text x="55" y="369" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$0B</text><line x1="65" y1="304" x2="770" y2="304" stroke="#2a2e45" stroke-width="1"/><text x="55" y="308" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$22B</text><line x1="65" y1="243" x2="770" y2="243" stroke="#2a2e45" stroke-width="1"/><text x="55" y="247" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$44B</text><line x1="65" y1="182" x2="770" y2="182" stroke="#2a2e45" stroke-width="1"/><text x="55" y="186" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$66B</text><line x1="65" y1="121" x2="770" y2="121" stroke="#2a2e45" stroke-width="1"/><text x="55" y="125" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$88B</text><line x1="65" y1="60" x2="770" y2="60" stroke="#2a2e45" stroke-width="1"/><text x="55" y="64" text-anchor="end" fill="#a0a8c0" font-size="11" font-family="sans-serif">$110B</text><line x1="65" y1="328.4" x2="770" y2="328.4" stroke="#f1c40f" stroke-width="0.5" opacity="0.3"/><rect x="79" y="328.4" width="32" height="2.397600000000001" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="175.42857142857144" y="328.4" width="32" height="8.880000000000003" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="271.8571428571429" y="328.4" width="32" height="22.200000000000006" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="368.2857142857143" y="328.4" width="32" height="35.52000000000001" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="464.7142857142857" y="328.4" width="32" height="26.64000000000001" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="561.1428571428571" y="328.4" width="32" height="8.880000000000003" rx="3" fill="#e74c3c" opacity="0.5"/><rect x="657.5714285714286" y="310.64" width="32" height="17.760000000000005" rx="3" fill="#2ecc71" opacity="0.5"/><rect x="754" y="275.11999999999995" width="32" height="53.28000000000002" rx="3" fill="#2ecc71" opacity="0.5"/><path d="M95,364.44545454545454 L191.42857142857144,359.45454545454544 L287.8571428571429,348.3636363636364 L384.2857142857143,309.54545454545456 L480.7142857142857,267.95454545454544 L577.1428571428571,212.5 L673.5714285714286,143.1818181818182 L770,87.72727272727275 L770,365 L95,365 Z" fill="#2ecc71" opacity="0.1"/><path d="M95,364.44545454545454 L191.42857142857144,359.45454545454544 L287.8571428571429,348.3636363636364 L384.2857142857143,309.54545454545456 L480.7142857142857,267.95454545454544 L577.1428571428571,212.5 L673.5714285714286,143.1818181818182 L770,87.72727272727275" fill="none" stroke="#2ecc71" stroke-width="2.5"  stroke-linecap="round" stroke-linejoin="round"/><circle cx="95" cy="364.44545454545454" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="191.42857142857144" cy="359.45454545454544" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="287.8571428571429" cy="348.3636363636364" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="384.2857142857143" cy="309.54545454545456" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="480.7142857142857" cy="267.95454545454544" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="577.1428571428571" cy="212.5" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="673.5714285714286" cy="143.1818181818182" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><circle cx="770" cy="87.72727272727275" r="4" fill="#2ecc71" stroke="#1a1d2e" stroke-width="2"/><text x="95" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2022</text><text x="191.42857142857144" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2023</text><text x="287.8571428571429" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2024</text><text x="384.2857142857143" y="387" text-anchor="middle" fill="#a0a8c0" font-size="12" font-family="sans-serif">2025</text><text x="480.7142857142857" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2026E</text><text x="577.1428571428571" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2027E</text><text x="673.5714285714286" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2028E</text><text x="770" y="387" text-anchor="middle" fill="#7f8c8d" font-size="12" font-family="sans-serif">2029E</text><text x="384.2857142857143" y="299.54545454545456" text-anchor="middle" fill="#2ecc71" font-size="10" font-weight="600">$20B</text><text x="577.1428571428571" y="202.5" text-anchor="middle" fill="#2ecc71" font-size="10" font-weight="600">$55B</text><line x1="673.5714285714286" y1="60" x2="673.5714285714286" y2="365" stroke="#f1c40f" stroke-width="1.5" stroke-dasharray="6 4" opacity="0.5"/><text x="673.5714285714286" y="58" text-anchor="middle" fill="#f1c40f" font-size="11" font-weight="600">预计盈利</text><rect x="570" y="60" width="12" height="12" rx="2" fill="#2ecc71"/><text x="587" y="71" fill="#a0a8c0" font-size="12">收入 (ARR)</text><rect x="570" y="80" width="12" height="12" rx="2" fill="#e74c3c" opacity="0.5"/><text x="587" y="91" fill="#a0a8c0" font-size="12">净利润/亏损</text></svg><p>收入端的增长堪称史诗级：2023 年 20 亿，2024 年 60 亿，2025 年超过 200 亿 ARR。每年 3 倍。ChatGPT 的周活用户突破了 7 亿。企业用户超过 300 万。</p><p>但利润端呢？2024 年亏 50 亿，2025 年仍在亏损。预计累计亏损到 2028 年将达到 440 亿美元。最乐观的估计也要到 2029 年才能实现正现金流。</p><p><strong>一家年收入 200 亿、增速 300% 的公司，依然在大幅亏损。</strong>这就是 AI 行业当前的写照。</p><h2 id="和上一次泡沫比，有什么不同？"><a href="#和上一次泡沫比，有什么不同？" class="headerlink" title="和上一次泡沫比，有什么不同？"></a>和上一次泡沫比，有什么不同？</h2><p>每次看到这种烧钱规模，大家本能地会想到 2000 年的互联网泡沫。但有几个关键差异：</p><p>Goldman Sachs 指出，AI capex 目前占 GDP 的 0.8%，远低于 90 年代电信泡沫时的 1.5%。更重要的是，AI 有真实的企业采用——78% 的受调研企业在使用 AI，71% 在使用生成式 AI。这跟当年“先圈地再说”的互联网泡沫有本质区别。</p><p>但这不意味着没有风险。BofA 的数据显示，hyperscaler 的 capex 占运营现金流的比例已经升到了 94%，逼近极限。他们开始大规模发债——2025 年 AI 相关债券发行了 1080 亿美元，J.P. Morgan 预计未来几年总共需要 1.5 万亿的投资级债券来支撑 AI 数据中心建设。更触目惊心的是，按 2026 年 $7000 亿的 capex 节奏，Amazon 的自由现金流将转为负数，而四大 hyperscaler 的现金储备合计 4200 亿——听起来很多，但只够支撑半年多的 capex。</p><p><strong>这更像是一场 infrastructure 的“慢牛”，而非一个即将破裂的泡沫。</strong>但“慢牛”不代表没有回调，如果 2026-2027 年 AI 收入增速出现明显放缓，市场情绪会很快转向。</p><h2 id="五巨头，谁最危险？"><a href="#五巨头，谁最危险？" class="headerlink" title="五巨头，谁最危险？"></a>五巨头，谁最危险？</h2><p>把五家的 capex、现金流、护城河摆在一起看，差异其实非常大。</p><p><strong>Amazon：$200B capex，FCF 转负的赌徒</strong></p><p>Amazon 是这轮军备竞赛中下注最重的。2026 capex $2000 亿，比第二名多出 200 亿。Morgan Stanley 预计 Amazon 今年自由现金流将转为 -$170 亿到 -$280 亿——这是一家年营收 6000 亿的公司，现金流居然要转负。但 Amazon 的逻辑也最清晰：AWS 是全球第一大云平台，AI 训练和推理的需求直接转化为云收入。AWS 年收入即将突破 $1000 亿，增速 19%。只要云的份额守住，这笔钱就不算白花。摩托罗拉风险：<strong>低</strong>。Amazon 的护城河是基础设施本身，不依赖某一个产品或技术路线。</p><p><strong>Alphabet：$180B capex + 百年债，全场焦点</strong></p><p>Alphabet 2026 capex $1750-1850 亿，加上刚发的百年债，成了 Burry 点名批评的对象。但 Alphabet 有两张底牌：1250 亿现金储备，和搜索广告这台印钞机。Google Cloud 增速 48%，Gemini 与 Apple Siri 达成合作——这些都在变现。<strong>真正的隐忧是搜索垄断的松动</strong>。如果对话式 AI 搜索（ChatGPT、Perplexity）持续蚕食 Google 搜索份额，那现金牛本身会受损。摩托罗拉风险：<strong>中低</strong>。倒不了，但主营业务的护城河正在被试探。</p><p><strong>Microsoft：$145B capex，最稳也最无聊</strong></p><p>Microsoft 是五家里最克制的，capex 增速也最慢（+53%）。而且 Microsoft 有独特优势：Office 365 和 Azure 的企业客户天然就是 AI 变现的渠道，Copilot 直接嵌入已有产品。Barclays 估计 Microsoft 的 FCF 今年仅下降 28%，2027 年就会反弹。摩托罗拉风险：<strong>最低</strong>。Microsoft 本质上在卖铲子给淘金者，不管谁的模型赢，Azure 都赚钱。</p><p><strong>Meta：$125B capex，最令人费解的一个</strong></p><p>Meta 是五家中唯一没有云业务的。Amazon、Microsoft、Google 至少可以把 AI 基建当成云服务卖给第三方，Meta 的 $1250 亿 capex 只能内部消化——用于改善广告推荐和 feed 排序。Barclays 估计 Meta 的 FCF 今年将暴跌 90%。CEO Zuckerberg 坚称 AI 投资的回报体现在“核心广告业务的改善”上，但这笔账很难向投资者算清楚。上一次 Meta 重注一个方向，叫 Metaverse——结果如何大家都知道。摩托罗拉风险：<strong>最高</strong>。不是说 Meta 会倒，但它是五家中 AI 投入与可见回报最不匹配的。</p><p><strong>Oracle：$50B capex，体量最小但杠杆最高</strong></p><p>Oracle 的 capex 绝对值最小，但它是五家中负债最重的。净债务 $880 亿，超过预计 EBITDA 的 2 倍。Oracle 的 AI 故事高度绑定 OpenAI——如果 OpenAI 不续约或者分散供应商，Oracle 的数据中心利用率会面临考验。摩托罗拉风险：<strong>中高</strong>。不是因为业务方向错了，而是财务杠杆留的余地最小。</p><h2 id="建设总是走在需求前面"><a href="#建设总是走在需求前面" class="headerlink" title="建设总是走在需求前面"></a>建设总是走在需求前面</h2><p>这种“先砸基建、再等需求”的模式，其实并不新鲜。</p><p>90 年代铺设的海量光纤，在泡沫破裂后沉默了好几年，然后在 2010 年代支撑起了整个移动互联网。Amazon 2006 年推出 AWS 时，大部分人觉得一家卖书的公司做云计算是疯了——但 AWS 今年的收入会超过 1000 亿。</p><p><strong>基础设施投资的回报从来不是线性的。</strong>它沉默很久，然后突然爆发。问题只在于“沉默多久”，以及“中间有谁会倒下”。</p><p>6500 亿美元的 AI 基础设施投入，在 2026 年看起来像一场豪赌。而今年还会再追加 5000 亿。但如果你把时间尺度拉到 10 年，它很可能只是一个新时代的地基成本。</p><p>所以，谁会是下一个摩托罗拉？</p><p>我的判断：<strong>五巨头中不会有谁真正“摩托罗拉化”，但不是每一家都能全身而退。</strong>Meta 和 Oracle 的处境最微妙——一个没有云业务来消化 AI 基建的投入，一个杠杆率高得让人不安。而 Amazon、Microsoft、Alphabet 更像是在用不同的姿势做同一件事：把 AI 变成下一代云基础设施。</p><p>摩托罗拉之所以倒下，不是因为它投了太多钱，而是因为它投错了方向。对今天的 Big Tech 来说，AI 几乎不可能是“错误的方向”——<strong>但投多少、多快回本、中间谁的现金流先撑不住，才是真正的生死题。</strong></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Alphabet 刚发了一支百年债券。&lt;/p&gt;
&lt;p&gt;没错，100 年。上一次科技公司干这件事，还是 1997 年的摩托罗拉——那也是摩托罗拉最后一年被认为是“大公司”。Michael Burry 立刻在 X 上发了一条警告，暗示 Google</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Investing" scheme="https://johnsonlee.io/tags/Investing/"/>
    
    <category term="ROI" scheme="https://johnsonlee.io/tags/ROI/"/>
    
    <category term="Big Tech" scheme="https://johnsonlee.io/tags/Big-Tech/"/>
    
    <category term="Infrastructure" scheme="https://johnsonlee.io/tags/Infrastructure/"/>
    
  </entry>
  
  <entry>
    <title>I Won&#39;t Pretend Anymore — AI Writes My Blog</title>
    <link href="https://johnsonlee.io/2026/02/11/ai-writes-my-blog.en/"/>
    <id>https://johnsonlee.io/2026/02/11/ai-writes-my-blog.en/</id>
    <published>2026-02-11T10:00:00.000Z</published>
    <updated>2026-02-11T10:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Last week a friend read my blog and messaged me: “Where do you find the time to write all these long posts?”</p><p>I replied with two words: I don’t.</p><p>That confused him even more.</p><p>The truth is, I did “write” these posts – but I didn’t type them out word by word. They’re the product of conversations between me and AI. I supply the ideas and judgment; AI turns them into finished articles.</p><p>The whole process takes 5 minutes.</p><p>I know what you’re thinking: aren’t AI-written articles just the kind of boilerplate that opens with “as technology continues to evolve” and closes with “let’s wait and see”?</p><p>Not really. The key is how you make AI write.</p><h2 id="Good-tools-make-good-work"><a href="#Good-tools-make-good-work" class="headerlink" title="Good tools make good work"></a>Good tools make good work</h2><p>If you just tell AI “write me a blog post about XXX,” what you get is almost certainly a generic press release. AI doesn’t know your writing style, your blog’s tech stack, or your front matter format. Having to teach it from scratch every time – you might as well write it yourself.</p><p>So the first thing I did was build Claude a dedicated “Blog Writer Skill.”</p><p>Think of a Skill as a work manual for AI. It tells AI: what format your blog uses, what your writing style looks like, how articles should be structured, and how to publish them. <strong>Configure once, effective forever.</strong></p><p>The best part: the process of building this Skill is itself just chatting with Claude.</p><p>I said “I want to build a Skill for writing blog posts,” and Claude started asking me questions: What’s the tech stack? Hexo. Front matter format? I pasted an existing post for it to see. Writing language? Primarily Chinese. Where does it push to? GitHub Pages, repo <code>johnsonlee/blog</code>, <code>master</code> branch.</p><p>Just like that, back and forth, and a few minutes later Claude generated a complete Skill with two files:</p><p><strong>SKILL.md</strong> – the core instruction file, looks like this (excerpt):</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">blog-writer</span></span><br><span class="line"><span class="attr">description:</span> <span class="string">&gt;</span></span><br><span class="line"><span class="string">  Write tech blog posts and publish to johnsonlee.io (Hexo + GitHub Pages).</span></span><br><span class="line"><span class="string">  Use this skill when the user mentions &quot;write a blog&quot;, &quot;write a post&quot;,</span></span><br><span class="line"><span class="string">  &quot;publish a post&quot;, &quot;blog&quot;, &quot;write a tech share&quot;, or after discussing</span></span><br><span class="line"><span class="string">  a topic says &quot;turn this into a blog post&quot;.</span></span><br><span class="line"><span class="string"></span><span class="meta">---</span></span><br></pre></td></tr></table></figure><p>It defines the front matter format, file naming conventions, writing style (including tone, structure, and what to avoid), and even the workflow for pushing to GitHub.</p><p><strong>push_to_github.sh</strong> – a push script that commits the generated Markdown file directly to my blog repo via the GitHub API. No cloning, no local operations – one API call and done.</p><h2 id="Writing-style-matters"><a href="#Writing-style-matters" class="headerlink" title="Writing style matters"></a>Writing style matters</h2><p>The part of the Skill I spent the most thought on was defining the writing style.</p><p>I pasted several of my previous articles for Claude to analyze my writing characteristics. What it distilled was surprisingly accurate:</p><ul><li>Primarily Chinese, but technical terms stay in English, with natural code-switching</li><li>Conversational but with depth, like talking to a peer</li><li>Fond of using rhetorical questions to drive arguments forward</li><li>Uses scenario imagination to ground abstract concepts</li><li>Bold text highlights core judgments, not decoration</li></ul><p>Then it also summarized what I don’t do: no “as we all know,” no “first… second… finally” textbook structure, no referring to myself as “the author,” no PR-speak tone.</p><p><strong>Once these rules are written into the Skill, every future article automatically follows them.</strong> I don’t need to remind AI every time to “not sound too formal.”</p><h2 id="What-writing-a-blog-post-in-5-minutes-actually-looks-like"><a href="#What-writing-a-blog-post-in-5-minutes-actually-looks-like" class="headerlink" title="What writing a blog post in 5 minutes actually looks like"></a>What writing a blog post in 5 minutes actually looks like</h2><p>With the Skill in place, the blogging workflow becomes:</p><p><strong>Minute 1: Throw out a topic.</strong></p><blockquote><p>“Write a blog post on ‘When Agents become the entry point, where do Apps go?’”</p></blockquote><p>One sentence. Claude generates a complete article following the style and structure defined in the Skill.</p><p><strong>Minutes 2-3: Review and adjust.</strong></p><p>The AI-generated first draft usually has sound structure, but some arguments might not be sharp enough, or an example might not quite fit. I give feedback:</p><blockquote><p>“The argument in section three is too mild, make it more aggressive”<br>“Replace the e-commerce example with a food delivery scenario”</p></blockquote><p>Claude revises, I review once more.</p><p><strong>Minute 4: Confirm and publish.</strong></p><p>Claude shows the final version, confirms the filename, tells me which repo and branch it’ll push to. I say “ship it,” and it pushes the article via the GitHub API.</p><p><strong>Minute 5: GitHub Pages auto-builds, article goes live.</strong></p><p>No editor needed, no <code>git clone</code>, no <code>hexo new post</code>.</p><h2 id="Is-this-cheating"><a href="#Is-this-cheating" class="headerlink" title="Is this cheating?"></a>Is this cheating?</h2><p>I bet some people will say: isn’t this just having AI ghostwrite for you? What’s there to show off?</p><p>Here’s how I see it: <strong>the core of writing has never been typing – it’s thinking.</strong></p><p>The value of a good article lies in its perspective, its insight, its mental framework. AI can’t fabricate those – it just helps me turn what I’ve already thought through into a format readers can consume.</p><p>Just like no one considers using a typewriter “cheating,” and no one considers using Word’s spell checker “cheating.” AI writing simply raises efficiency by another order of magnitude.</p><p>And honestly, the process of conversing with AI is itself thinking. I need to be clear about what I want to express, what my core argument is, what I want readers to take away. If I can’t articulate these things myself, AI can’t write them either.</p><p><strong>AI is an amplifier, not a replacement. What it amplifies is your thinking ability, not your typing speed.</strong></p><h2 id="You-can-do-it-in-5-minutes-too"><a href="#You-can-do-it-in-5-minutes-too" class="headerlink" title="You can do it in 5 minutes too"></a>You can do it in 5 minutes too</h2><p>If you have your own tech blog and want this workflow, the steps are simple:</p><ol><li><strong>Chat with Claude and build your Blog Writer Skill</strong> – tell it your blog’s tech stack, writing style, and publishing workflow; it’ll generate a SKILL.md and push script for you</li><li><strong>Generate a Personal Access Token on GitHub</strong> – go to <a href="https://github.com/settings/tokens">https://github.com/settings/tokens</a>, check the <code>repo</code> permission, dedicated to pushing blog posts</li><li><strong>Write blog posts</strong> – open Claude, say “write a blog post on XXX,” review, adjust, push, done</li></ol><p>The entire setup takes under 10 minutes. After that, each article takes 5 minutes.</p><p>Of course, this workflow assumes you have something worth writing. AI can help you organize language, but it can’t generate insight for you. If you have no opinions in your head, AI will just help you produce nonsense more efficiently.</p><h2 id="One-last-thing"><a href="#One-last-thing" class="headerlink" title="One last thing"></a>One last thing</h2><p>This article itself was written using this exact workflow.</p><p>From the moment I told Claude “write a blog post titled ‘I won’t pretend anymore – AI writes my blog’” to the article you’re reading now, what happened in between? One conversation, a few rounds of adjustment, one API call.</p><p>Some might feel something’s missing from writing this way – the ritual of weighing every word, the sense of accomplishment from finishing a long piece.</p><p>But I think <strong>spending the saved time thinking about more problems is far more valuable than spending it on formatting and word choice.</strong></p><p>After all, writing is for conveying ideas, not for proving how many words you can type.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Last week a friend read my blog and messaged me: “Where do you find the time to write all these long posts?”&lt;/p&gt;
&lt;p&gt;I replied with two</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Blog" scheme="https://johnsonlee.io/tags/Blog/"/>
    
    <category term="Workflow" scheme="https://johnsonlee.io/tags/Workflow/"/>
    
  </entry>
  
  <entry>
    <title>不装了，文章都是AI写的</title>
    <link href="https://johnsonlee.io/2026/02/11/ai-writes-my-blog/"/>
    <id>https://johnsonlee.io/2026/02/11/ai-writes-my-blog/</id>
    <published>2026-02-11T10:00:00.000Z</published>
    <updated>2026-02-11T10:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>上周有个朋友看完我的博客，发消息问我：“你哪来这么多时间写这些长文？”</p><p>我回了三个字：没时间。</p><p>然后他更困惑了。</p><p>事实是，这些文章确实是我“写”的——但不是我一个字一个字敲出来的。它们是我跟 AI 对话的产物。我负责想法和判断，AI 负责把它们变成完整的文章。</p><p>整个过程，5 分钟。</p><p>我知道你在想什么：AI 写的文章不就是那种“随着技术的不断发展”开头、“让我们拭目以待”结尾的八股文吗？</p><p>还真不是。关键在于你怎么让 AI 写。</p><h2 id="工欲善其事，必先利其器"><a href="#工欲善其事，必先利其器" class="headerlink" title="工欲善其事，必先利其器"></a>工欲善其事，必先利其器</h2><p>直接让 AI “帮我写一篇关于 XXX 的博客”，出来的东西大概率是废话连篇的通稿。AI 不知道你的写作风格、不知道你的博客用什么技术栈、不知道你的 front matter 格式是什么样的。每次都要从头教一遍，那还不如自己写。</p><p>所以我做的第一件事，是给 Claude 造了一个专属的 “Blog Writer Skill”。</p><p>你可以把 Skill 理解为给 AI 的一套工作手册。它告诉 AI：你的博客是什么格式、你的写作风格是什么样的、文章该怎么组织、最后怎么发布。<strong>一次配置，永久生效。</strong></p><p>最妙的地方在于：build 这个 Skill 的过程本身，就是跟 Claude 聊天。</p><p>我说“我想做一个写博客的 Skill”，Claude 就开始问我问题：技术栈是什么？Hexo。front matter 什么格式？贴一篇现有的文章给它看。写作语言？中文为主。推送到哪？GitHub Pages，repo 是 <code>johnsonlee/blog</code>，<code>master</code> 分支。</p><p>就这样一问一答，几分钟后，Claude 就帮我生成了一个完整的 Skill，包含两个文件：</p><p><strong>SKILL.md</strong> — 核心指令文件，长这样（节选）：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">---</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">blog-writer</span></span><br><span class="line"><span class="attr">description:</span> <span class="string">&gt;</span></span><br><span class="line"><span class="string">  写技术博客并发布到 johnsonlee.io (Hexo + GitHub Pages)。</span></span><br><span class="line"><span class="string">  当用户提到&quot;写博客&quot;、&quot;写一篇文章&quot;、&quot;发一篇 post&quot;、&quot;blog&quot;、</span></span><br><span class="line"><span class="string">  &quot;写个技术分享&quot;、或者讨论完一个话题后说&quot;把这个整理成博客&quot;时，</span></span><br><span class="line"><span class="string">  使用这个 skill。</span></span><br><span class="line"><span class="string"></span><span class="meta">---</span></span><br></pre></td></tr></table></figure><p>里面定义了文章的 front matter 格式、文件命名规则、写作风格（包括该用什么语气、怎么组织结构、什么该避免），甚至连推送到 GitHub 的流程都写好了。</p><p><strong>push_to_github.sh</strong> — 推送脚本，通过 GitHub API 把生成的 Markdown 文件直接 commit 到我的博客 repo。不用 clone，不用本地操作，一个 API 调用搞定。</p><h2 id="写作风格这件事"><a href="#写作风格这件事" class="headerlink" title="写作风格这件事"></a>写作风格这件事</h2><p>Skill 里最花心思的部分，是写作风格的定义。</p><p>我贴了几篇自己之前写的文章给 Claude，让它分析我的写作特征。它提炼出来的东西还挺准的：</p><ul><li>中文为主，但技术术语保留英文，偶尔自然地中英混用</li><li>口语化但有深度，像跟同行聊天</li><li>喜欢用反问推进论点</li><li>用场景想象让抽象概念落地</li><li>加粗用来突出核心判断，不是拿来装饰的</li></ul><p>然后它还总结了我不会做的事情：不说“众所周知”、不用“首先其次最后”的教科书结构、不自称“笔者”、不写公关稿语气。</p><p><strong>这些规则一旦写进 Skill，以后每次写文章都会自动遵守。</strong> 我不需要每次都提醒 AI “别写得太官方”。</p><h2 id="5-分钟写一篇博客的真实流程"><a href="#5-分钟写一篇博客的真实流程" class="headerlink" title="5 分钟写一篇博客的真实流程"></a>5 分钟写一篇博客的真实流程</h2><p>有了 Skill 之后，写博客的流程变成了这样：</p><p><strong>第 1 分钟：抛出话题。</strong></p><blockquote><p>“以’当 Agent 成为入口，App 何去何从’为话题写个博客”</p></blockquote><p>就一句话。Claude 会根据 Skill 里定义的风格和结构，生成一篇完整的文章。</p><p><strong>第 2-3 分钟：审阅和调整。</strong></p><p>AI 生成的初稿通常结构没问题，但某些观点可能不够锐利，或者某个例子不太贴切。我会给反馈：</p><blockquote><p>“第三节的论证太温和了，再激进一点”<br>“把那个电商的例子换成外卖场景”</p></blockquote><p>Claude 改完，再看一遍。</p><p><strong>第 4 分钟：确认发布。</strong></p><p>Claude 会展示最终版本，确认文件名，告诉我将要 push 到哪个 repo 的哪个分支。我说“推吧”，它就通过 GitHub API 把文章推上去了。</p><p><strong>第 5 分钟：GitHub Pages 自动构建，文章上线。</strong></p><p>全程不需要打开编辑器，不需要 <code>git clone</code>，不需要 <code>hexo new post</code>。</p><h2 id="这算作弊吗？"><a href="#这算作弊吗？" class="headerlink" title="这算作弊吗？"></a>这算作弊吗？</h2><p>我猜有人会说：这不就是让 AI 代写吗？有什么好炫耀的？</p><p>我的看法是：<strong>写作的核心从来不是打字，而是思考。</strong></p><p>一篇好文章的价值在于它的观点、它的洞察、它的思维框架。这些东西 AI 编不出来——它只是帮我把已经想清楚的东西变成了读者能消费的格式。</p><p>就像没有人会觉得用打字机写作是“作弊”，也没有人会觉得用 Word 的拼写检查是“作弊”。AI 写作只是把效率又提升了一个数量级而已。</p><p>而且说实话，跟 AI 对话的过程本身也是在思考。我得想清楚我要表达什么、我的核心论点是什么、我希望读者看完之后带走什么。这些东西如果我自己都说不清楚，AI 也写不出来。</p><p><strong>AI 是放大器，不是替代品。它放大的是你的思考能力，不是你的打字速度。</strong></p><h2 id="你也可以-5-分钟搞定"><a href="#你也可以-5-分钟搞定" class="headerlink" title="你也可以 5 分钟搞定"></a>你也可以 5 分钟搞定</h2><p>如果你也有自己的技术博客，想要这套工作流，步骤很简单：</p><ol><li><strong>跟 Claude 聊天，build 你的 Blog Writer Skill</strong> — 告诉它你的博客技术栈、写作风格、发布流程，它会帮你生成 SKILL.md 和推送脚本</li><li><strong>在 GitHub 上生成一个 Personal Access Token</strong> — 去 <a href="https://github.com/settings/tokens">https://github.com/settings/tokens</a> ，勾上 <code>repo</code> 权限，专门用来推送博客</li><li><strong>写博客</strong> — 打开 Claude，说“以 XXX 为话题写个博客”，审阅、调整、推送，收工</li></ol><p>整个 setup 过程不超过 10 分钟。之后每篇文章 5 分钟。</p><p>当然，这套流程的前提是你得有东西可写。AI 能帮你组织语言，但帮不了你产生洞察。如果你脑子里没有观点，AI 只会帮你更高效地生产废话。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>这篇文章本身就是用这套流程写的。</p><p>从我对 Claude 说“以’不装了，文章都是 AI 写的’为题写个博客”到你现在看到的这篇文章，中间经历了什么？一次对话，几轮调整，一个 API 调用。</p><p>有人可能会觉得这样写文章少了点什么——少了那种字斟句酌的仪式感，少了那种写完一篇长文的成就感。</p><p>但我觉得，<strong>省下来的时间用来想更多的问题，比花在排版和措辞上有价值得多。</strong></p><p>毕竟，写作是为了传达思想，不是为了证明你能打多少字。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;上周有个朋友看完我的博客，发消息问我：“你哪来这么多时间写这些长文？”&lt;/p&gt;
&lt;p&gt;我回了三个字：没时间。&lt;/p&gt;
&lt;p&gt;然后他更困惑了。&lt;/p&gt;
&lt;p&gt;事实是，这些文章确实是我“写”的——但不是我一个字一个字敲出来的。它们是我跟 AI</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Productivity" scheme="https://johnsonlee.io/tags/Productivity/"/>
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Blog" scheme="https://johnsonlee.io/tags/Blog/"/>
    
    <category term="Workflow" scheme="https://johnsonlee.io/tags/Workflow/"/>
    
  </entry>
  
  <entry>
    <title>Contrarian Investing: Wall Street&#39;s Blind Spots</title>
    <link href="https://johnsonlee.io/2026/02/11/wall-street-blindspots-contrarian-investing.en/"/>
    <id>https://johnsonlee.io/2026/02/11/wall-street-blindspots-contrarian-investing.en/</id>
    <published>2026-02-11T00:23:00.000Z</published>
    <updated>2026-02-11T00:23:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>On March 11, 2008, Jim Cramer looked straight into the camera and declared: “No! No! No! Bear Stearns is fine. Don’t pull your money out of Bear – that’s just silly.”</p><p>Five days later, Bear Stearns was acquired by JP Morgan at $2 per share – less than 7% of its market cap from the day before.</p><p>This was not an isolated incident. Wall Street “experts” are actually less accurate than a coin flip.</p><h2 id="47-Accuracy-–-Worse-Than-Random-Guessing"><a href="#47-Accuracy-–-Worse-Than-Random-Guessing" class="headerlink" title="47% Accuracy – Worse Than Random Guessing"></a>47% Accuracy – Worse Than Random Guessing</h2><p>Someone tracked 6,627 predictions from 68 forecasters and found that these “experts” had an accuracy rate of just 47% – below random chance. Jim Cramer’s accuracy was 46.8%. Abby Joseph Cohen, Goldman Sachs’ former chief strategist, managed only 35%.</p><p>Here’s the real irony: <strong>the stocks analysts were most bullish on actually underperformed their least-favored picks over the long run</strong>. A study spanning 35 years found that the most pessimistic 10% of analyst-rated stocks generated an average 15% excess return the following year, while the most optimistic 10% delivered only 3%.</p><p>What does this tell us? Wall Street has systematic blind spots.</p><h2 id="Five-Systematic-Blind-Spots"><a href="#Five-Systematic-Blind-Spots" class="headerlink" title="Five Systematic Blind Spots"></a>Five Systematic Blind Spots</h2><p>Looking through history’s classic “missed calls,” I’ve identified five fatal weaknesses on Wall Street:</p><h3 id="Herding-Nobody-Wants-to-Stick-Their-Neck-Out"><a href="#Herding-Nobody-Wants-to-Stick-Their-Neck-Out" class="headerlink" title="Herding: Nobody Wants to Stick Their Neck Out"></a>Herding: Nobody Wants to Stick Their Neck Out</h3><p>Before Enron collapsed in 2001, all 16 analysts covering the stock had buy ratings. Not a single sell across all of Wall Street. Fortune magazine named Enron “America’s Most Innovative Company” for six consecutive years. The result? The stock fell from $90 to 6.2 cents in just 16 months.</p><p>When everyone is bullish, nobody wants to be the contrarian.</p><h3 id="Linear-Extrapolation-Driving-by-the-Rearview-Mirror"><a href="#Linear-Extrapolation-Driving-by-the-Rearview-Mirror" class="headerlink" title="Linear Extrapolation: Driving by the Rearview Mirror"></a>Linear Extrapolation: Driving by the Rearview Mirror</h3><p>In 2003, an analyst warned investors against buying Netflix because “Blockbuster is about to launch its Filmcaddy service.” Netflix’s stock price at the time was $10.98. It went on to gain 4,000%+.</p><p>The same story played out with Google. In 2004, hedge fund manager Whitney Tilson predicted Google would “disappoint investors.” Over the next decade, Google rose 900%.</p><p>Their mistake was projecting the future from the existing competitive landscape. But paradigm shifts are precisely what historical data cannot predict.</p><h3 id="Short-Termism-Eyes-Only-on-Next-Quarter"><a href="#Short-Termism-Eyes-Only-on-Next-Quarter" class="headerlink" title="Short-Termism: Eyes Only on Next Quarter"></a>Short-Termism: Eyes Only on Next Quarter</h3><p>What’s a Wall Street analyst’s KPI? Predicting next quarter’s earnings. This makes them blind to long-term structural shifts.</p><p>Netflix was shorted because “a P&#x2F;E of 200x is too expensive.” Nvidia was repeatedly undervalued before the AI boom because “gaming GPU market growth is slowing.” These calls were “correct” from a short-term perspective – but they completely missed the real alpha.</p><h3 id="Confirmation-Bias-Once-Bullish-Only-See-Good-News"><a href="#Confirmation-Bias-Once-Bullish-Only-See-Good-News" class="headerlink" title="Confirmation Bias: Once Bullish, Only See Good News"></a>Confirmation Bias: Once Bullish, Only See Good News</h3><p>Before the 2008 financial crisis, Goldman’s Abby Joseph Cohen set her S&amp;P 500 target at 1,675. Year-end close? 903 – 46% below her target.</p><p>The problem: once analysts form a bullish view, they subconsciously seek evidence that supports it and ignore warning signs. Bear Stearns’ leverage ratio was absurdly high, but the bulls had selective blindness.</p><h3 id="Conflicts-of-Interest-Can-You-Trust-an-Investment-Bank’s-Research"><a href="#Conflicts-of-Interest-Can-You-Trust-an-Investment-Bank’s-Research" class="headerlink" title="Conflicts of Interest: Can You Trust an Investment Bank’s Research?"></a>Conflicts of Interest: Can You Trust an Investment Bank’s Research?</h3><p>This is the elephant in the room. In 2016, Morgan Stanley raised its Tesla price target immediately after a stock offering. Coincidence?</p><p>When an analyst’s parent bank is underwriting a company’s IPO, do you think they’ll publish a bearish report?</p><h2 id="Why-Does-This-Happen-Incentives-Are-Broken"><a href="#Why-Does-This-Happen-Incentives-Are-Broken" class="headerlink" title="Why Does This Happen? Incentives Are Broken"></a>Why Does This Happen? Incentives Are Broken</h2><p>These blind spots don’t exist because Wall Street people aren’t smart. Quite the opposite – they’re extremely smart people whose incentive structures simply aren’t aligned with yours.</p><h3 id="What’s-an-Analyst’s-Real-KPI"><a href="#What’s-an-Analyst’s-Real-KPI" class="headerlink" title="What’s an Analyst’s Real KPI?"></a>What’s an Analyst’s Real KPI?</h3><p>It’s not making you money. It’s: don’t make a career-ending mistake.</p><p>If you follow the consensus and get it wrong, everyone got it wrong together – nobody blames you. But if you go contrarian, nobody remembers when you’re right, and when you’re wrong, it’s a career stain. How many analysts were bearish on real estate before 2008? A few, but they were ridiculed for years before being proven right, and some were even fired.</p><p>So what’s the rational choice? Follow the consensus.</p><h3 id="Fund-Managers-Have-It-Even-Trickier"><a href="#Fund-Managers-Have-It-Even-Trickier" class="headerlink" title="Fund Managers Have It Even Trickier"></a>Fund Managers Have It Even Trickier</h3><p>Their performance is evaluated quarterly, sometimes monthly. Underperform the benchmark for three months and investors start asking questions. Six months and capital starts flowing out.</p><p>Under that pressure, would you go heavy into a stock nobody else likes? Even if your thesis is correct, it might take two years to play out. But your fund might not survive those two years.</p><p>Keynes said: “The market can stay irrational longer than you can stay solvent.” For fund managers, that’s literally true.</p><h3 id="Investment-Banks’-Conflicts-Are-Structural"><a href="#Investment-Banks’-Conflicts-Are-Structural" class="headerlink" title="Investment Banks’ Conflicts Are Structural"></a>Investment Banks’ Conflicts Are Structural</h3><p>Research and banking divisions nominally have a “firewall,” but everyone works in the same building and draws the same paycheck. When the banking side is helping a company with its IPO, is the research side going to write a bearish report?</p><p>It’s not that analysts intentionally lie. It’s that in grey areas, people naturally tilt toward what benefits them.</p><h3 id="The-Information-Advantage-Is-Disappearing"><a href="#The-Information-Advantage-Is-Disappearing" class="headerlink" title="The Information Advantage Is Disappearing"></a>The Information Advantage Is Disappearing</h3><p>In the past, Wall Street analysts genuinely had an edge – access to management, first-hand data. Now? Earnings data is public. Anyone can listen to management calls.</p><p>Once the information advantage disappears, what’s left? Storytelling ability and the instinct to follow the herd.</p><p><strong>This isn’t an intelligence problem – it’s an incentive problem.</strong> When a smart person’s incentives aren’t aligned with your interests, their advice isn’t worth much to you.</p><p>Understanding this makes it clear why contrarian investing works – because you don’t have these constraints. You don’t worry about short-term benchmark underperformance, career risk, or conflicts of interest. The only thing you need to fight is your own instinct to follow the crowd.</p><h2 id="Current-Market-Who-Might-Be-Getting-It-Wrong"><a href="#Current-Market-Who-Might-Be-Getting-It-Wrong" class="headerlink" title="Current Market: Who Might Be Getting It Wrong?"></a>Current Market: Who Might Be Getting It Wrong?</h2><p>If Wall Street’s blind spots are systematic, we can exploit them to find alpha.</p><h3 id="Chinese-E-Commerce-A-Value-Desert-Abandoned-by-the-Herd"><a href="#Chinese-E-Commerce-A-Value-Desert-Abandoned-by-the-Herd" class="headerlink" title="Chinese E-Commerce: A Value Desert Abandoned by the Herd"></a>Chinese E-Commerce: A Value Desert Abandoned by the Herd</h3><p>Chinese internet companies currently trade at a P&#x2F;E of just 14.3x – a 40%+ discount to their American peers. Alibaba, JD.com, and Pinduoduo are valued at just 9-12x.</p><p>This is classic herding – geopolitical risk sent everyone running. But is the risk being overpriced? JD.com’s 2026 earnings are projected to grow over 40%, yet it trades at just 9x. Historically, this kind of mismatch is precisely where contrarian opportunities emerge.</p><h3 id="Nuclear-Uranium-The-Hidden-AI-Data-Center-Play"><a href="#Nuclear-Uranium-The-Hidden-AI-Data-Center-Play" class="headerlink" title="Nuclear&#x2F;Uranium: The Hidden AI Data Center Play"></a>Nuclear&#x2F;Uranium: The Hidden AI Data Center Play</h3><p>Goldman Sachs estimates data center power demand could grow 160% by 2030. But when Wall Street discusses AI investments, the conversation centers almost exclusively on Nvidia and cloud companies – few are seriously analyzing the power supply bottleneck.</p><p>Meta has signed a 20-year deal with Constellation Energy for 1.1GW of nuclear power for AI data centers. Amazon’s partnership with Talen Energy provides 1,920MW of nuclear power through 2042. These signals are loud and clear, yet uranium stock valuations haven’t caught up.</p><h3 id="GLP-1-Second-Tier-Overlooked-Acquisition-Targets"><a href="#GLP-1-Second-Tier-Overlooked-Acquisition-Targets" class="headerlink" title="GLP-1 Second Tier: Overlooked Acquisition Targets"></a>GLP-1 Second Tier: Overlooked Acquisition Targets</h3><p>The weight-loss drug market is projected to grow from $22.5 billion in 2026 to $196 billion in 2036, a 24% CAGR. Eli Lilly and Novo Nordisk are in an all-out battle, while big pharma companies are sitting on $1 trillion in cash looking for acquisitions.</p><p>But Wall Street’s attention is on the leaders. Second-tier companies like Viking Therapeutics and Structure Therapeutics are significantly undervalued. These companies either have differentiated pipelines or are potential acquisition targets.</p><h2 id="The-Core-Contrarian-Formula"><a href="#The-Core-Contrarian-Formula" class="headerlink" title="The Core Contrarian Formula"></a>The Core Contrarian Formula</h2><p>The logic boils down to something simple:</p><p><strong>Wall Street extreme pessimism + solid fundamentals + catalyst &#x3D; high-alpha opportunity</strong></p><p>All three conditions must be met:</p><ul><li>Pessimism alone without fundamental support means it’s genuinely a bad company</li><li>Fundamentals alone without a catalyst means you might wait forever</li><li>A catalyst without enough pessimism means the market has already priced it in</li></ul><p>The real opportunity is when nobody dares touch something – and you spot what they’ve missed.</p><h2 id="A-Cautionary-Example-Be-Wary-When-Analysts-Are-Unanimously-Bullish"><a href="#A-Cautionary-Example-Be-Wary-When-Analysts-Are-Unanimously-Bullish" class="headerlink" title="A Cautionary Example: Be Wary When Analysts Are Unanimously Bullish"></a>A Cautionary Example: Be Wary When Analysts Are Unanimously Bullish</h2><p>Having covered cases where Wall Street was bearish but possibly wrong, here’s the flip side: <strong>when analysts are overwhelmingly bullish, but risk may be underpriced</strong>.</p><p>Coupang (CPNG) is a textbook case.</p><p>This “Korean Amazon” currently has a Strong Buy consensus from Wall Street, with an average price target implying 57% upside. Sounds tempting?</p><p>But look at the news:</p><p>In November 2025, Coupang suffered Korea’s worst data breach in a decade, affecting 33.7 million users – nearly three-quarters of South Korea’s population. Nine government departments and hundreds of officials are involved in the investigation – unprecedented in scale. The Fair Trade Commission chair publicly stated that “a business suspension order is also possible.” Potential fines approach $900 million. The CEO has resigned. Multiple securities class-action lawsuits have been filed in the US. Weekly active users dropped by 1.7 million within a month.</p><p>And the P&#x2F;E? 92x.</p><p><strong>92x P&#x2F;E + unprecedented regulatory investigation + user attrition + class-action lawsuits &#x3D; severely asymmetric risk&#x2F;reward.</strong></p><p>Why are analysts still calling it a buy? Possible reasons:</p><ol><li><strong>Conflicts of interest</strong> – the banks may have business relationships</li><li><strong>Anchoring</strong> – reluctance to reverse a previous rating and lose face</li><li><strong>Underestimating tail risk</strong> – extreme scenarios like regulatory penalties and business suspension aren’t in the valuation model</li></ol><p>This reminds me of Bear Stearns in 2008. Five days before the collapse, Jim Cramer was on TV saying “it’s fine.”</p><p><strong>Contrarian investing isn’t just “Wall Street is bearish so I’ll be bullish.” It also means staying vigilant when Wall Street is bullish.</strong> When every analyst is screaming buy but the fundamentals are deteriorating, that may be exactly the time to run.</p><h2 id="Where’s-the-Risk"><a href="#Where’s-the-Risk" class="headerlink" title="Where’s the Risk?"></a>Where’s the Risk?</h2><p>Of course, contrarian investing isn’t simply “bet against Wall Street.” You need to genuinely understand:</p><ol><li><strong>Why are they bearish?</strong> Is it short-term noise or a structural problem?</li><li><strong>What’s the catalyst?</strong> What event will force a repricing?</li><li><strong>Where could I be wrong?</strong> If I’m wrong, what’s the maximum loss?</li></ol><p>The Bear Stearns example teaches us to be wary when everyone is bullish. But the reverse also holds – <strong>when everyone is bearish, ask yourself: am I really smarter than everyone else?</strong></p><p>The essence of contrarian investing isn’t fighting the market. It’s maintaining the ability to think independently when market sentiment reaches an extreme.</p><hr><p>Back to the question we started with: if Jim Cramer’s accuracy rate is just 47%, why do we still listen to him?</p><p>Maybe the answer is: <strong>listen to him, then do the opposite.</strong></p><p>But the better answer might be: don’t listen to anyone – think it through yourself.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;On March 11, 2008, Jim Cramer looked straight into the camera and declared: “No! No! No! Bear Stearns is fine. Don’t pull your money out</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Investing" scheme="https://johnsonlee.io/tags/Investing/"/>
    
    <category term="Wall Street" scheme="https://johnsonlee.io/tags/Wall-Street/"/>
    
    <category term="Contrarian" scheme="https://johnsonlee.io/tags/Contrarian/"/>
    
    <category term="Alpha" scheme="https://johnsonlee.io/tags/Alpha/"/>
    
    <category term="Risk Management" scheme="https://johnsonlee.io/tags/Risk-Management/"/>
    
  </entry>
  
  <entry>
    <title>逆向投资：华尔街的盲点</title>
    <link href="https://johnsonlee.io/2026/02/11/wall-street-blindspots-contrarian-investing/"/>
    <id>https://johnsonlee.io/2026/02/11/wall-street-blindspots-contrarian-investing/</id>
    <published>2026-02-11T00:23:00.000Z</published>
    <updated>2026-02-11T00:23:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Jim Cramer 在 2008 年 3 月 11 日对着镜头斩钉截铁地说：“不！不！不！Bear Stearns 没问题。别把钱从 Bear 撤出来，那太傻了。”</p><p>五天后，Bear Stearns 以每股 $2 被 JP Morgan 收购，不到前一天市值的 7%。</p><p>这不是个例。华尔街的“专家”们，准确率其实还不如抛硬币。</p><h2 id="47-的准确率，还不如瞎猜"><a href="#47-的准确率，还不如瞎猜" class="headerlink" title="47% 的准确率，还不如瞎猜"></a>47% 的准确率，还不如瞎猜</h2><p>有人做过统计，追踪了 68 位预测者的 6,627 次预测，结果发现这些“专家”的准确率只有 47%——比随机猜测还低。Jim Cramer 的准确率是 46.8%，高盛前首席策略师 Abby Joseph Cohen 更惨，只有 35%。</p><p>更讽刺的是，<strong>分析师最看好的股票，长期表现反而比最不看好的更差</strong>。一项覆盖 35 年的研究发现，投资分析师最悲观的那 10% 股票，次年平均能产生 15% 的超额收益；而他们最乐观的那 10%？只有 3%。</p><p>这说明什么？华尔街存在系统性的盲点。</p><h2 id="五大系统性盲点"><a href="#五大系统性盲点" class="headerlink" title="五大系统性盲点"></a>五大系统性盲点</h2><p>翻看历史上那些经典的“看走眼”案例，我总结出华尔街的五个致命弱点：</p><h3 id="羊群效应：没人敢当出头鸟"><a href="#羊群效应：没人敢当出头鸟" class="headerlink" title="羊群效应：没人敢当出头鸟"></a>羊群效应：没人敢当出头鸟</h3><p>2001 年安然崩盘前，16 位分析师全部给出买入评级。全华尔街，没有一个卖出评级。Fortune 杂志更是连续六年把安然评为“美国最具创新力公司”。结果呢？股价从 $90 跌到 6.2 美分，只用了 16 个月。</p><p>当所有人都看多的时候，谁也不愿意当那个唱反调的人。</p><h3 id="线性外推：用后视镜开车"><a href="#线性外推：用后视镜开车" class="headerlink" title="线性外推：用后视镜开车"></a>线性外推：用后视镜开车</h3><p>2003 年，有分析师警告投资者不要买 Netflix，因为“Blockbuster 马上要推出 Filmcaddy 服务了”。当时 Netflix 股价 $10.98。后来涨了多少？4000%+。</p><p>同样的故事发生在 Google 身上。2004 年，对冲基金经理 Whitney Tilson 预测 Google 会“让投资者失望”。接下来十年，Google 涨了 900%。</p><p>他们的问题在于，用过去的竞争格局来推演未来。但范式转换这种事，恰恰是历史数据无法预测的。</p><h3 id="短期主义：只看下个季度"><a href="#短期主义：只看下个季度" class="headerlink" title="短期主义：只看下个季度"></a>短期主义：只看下个季度</h3><p>华尔街分析师的 KPI 是什么？预测下个季度的盈利。这导致他们对长期结构性变化视而不见。</p><p>Netflix 当年被看空，是因为“市盈率 200 倍太贵了”。Nvidia 在 AI 爆发前被反复低估，是因为“游戏显卡市场增速放缓”。这些判断在短期视角下都是“正确”的，但完全错过了真正的 alpha。</p><h3 id="确认偏误：看多后就只看好消息"><a href="#确认偏误：看多后就只看好消息" class="headerlink" title="确认偏误：看多后就只看好消息"></a>确认偏误：看多后就只看好消息</h3><p>2008 年金融危机前，高盛的 Abby Joseph Cohen 给 S&amp;P 500 的目标价是 1,675 点。当年收盘？903 点，比她的目标价低 46%。</p><p>问题出在哪？一旦形成看多的观点，分析师就会下意识地寻找支持这个观点的证据，忽视那些危险信号。Bear Stearns 的杠杆率已经高得离谱，但看多的人选择性失明。</p><h3 id="利益冲突：投行的研报能信吗？"><a href="#利益冲突：投行的研报能信吗？" class="headerlink" title="利益冲突：投行的研报能信吗？"></a>利益冲突：投行的研报能信吗？</h3><p>这是房间里的大象。2016 年，Morgan Stanley 在 Tesla 股票发行后立即上调目标价。巧合吗？</p><p>当分析师所在的投行正在帮某公司做 IPO 承销，你觉得他会写一份看空报告吗？</p><h2 id="为什么会这样？激励机制出了问题"><a href="#为什么会这样？激励机制出了问题" class="headerlink" title="为什么会这样？激励机制出了问题"></a>为什么会这样？激励机制出了问题</h2><p>这些盲点不是因为华尔街的人不聪明。恰恰相反，他们是一群绝顶聪明的人，只不过他们的激励机制和你的利益不一致。</p><h3 id="分析师的-KPI-是什么？"><a href="#分析师的-KPI-是什么？" class="headerlink" title="分析师的 KPI 是什么？"></a>分析师的 KPI 是什么？</h3><p>不是帮你赚钱，而是：不要犯让自己丢饭碗的错。</p><p>如果你跟着共识走，错了也是大家一起错，谁也不会怪你。但如果你唱反调，对了没人记得，错了就是职业生涯的污点。2008 年之前看空房地产的分析师有几个？有，但他们在正确之前已经被嘲笑了好几年，有些甚至被炒了鱿鱼。</p><p>所以理性的选择是什么？跟着共识走。</p><h3 id="基金经理的处境更微妙"><a href="#基金经理的处境更微妙" class="headerlink" title="基金经理的处境更微妙"></a>基金经理的处境更微妙</h3><p>他们的考核周期是季度，甚至月度。跑输基准三个月，投资人就开始问问题；跑输六个月，资金就开始流出。</p><p>在这种压力下，你敢重仓一个所有人都不看好的股票吗？就算你判断正确，可能要等两年才能验证。但你的基金可能撑不过这两年。</p><p>凯恩斯说过：“市场保持非理性的时间，可能比你保持偿付能力的时间更长。”这句话对基金经理来说是字面意义上的真实。</p><h3 id="投行的利益冲突是结构性的"><a href="#投行的利益冲突是结构性的" class="headerlink" title="投行的利益冲突是结构性的"></a>投行的利益冲突是结构性的</h3><p>投行的研究部门和投行部门名义上有“防火墙”，但大家都在同一栋楼里上班，领着同一家公司的工资。当投行部门在帮某公司做 IPO 的时候，研究部门会写一份看空报告吗？</p><p>不是说分析师会故意撒谎，而是在边界模糊的情况下，人总是会不自觉地往对自己有利的方向倾斜。</p><h3 id="信息优势正在消失"><a href="#信息优势正在消失" class="headerlink" title="信息优势正在消失"></a>信息优势正在消失</h3><p>过去，华尔街的分析师确实有信息优势——他们能接触到公司管理层，能拿到一手数据。但现在呢？财报数据人人都能看到，管理层电话会所有人都能听。</p><p>当信息优势消失后，分析师还剩什么？讲故事的能力和跟着共识走的本能。</p><p><strong>所以，这不是智商问题，是激励机制问题。</strong> 当一个聪明人的激励机制和你的利益不一致时，他的建议对你来说就没什么参考价值。</p><p>理解了这一点，你就明白为什么逆向投资有效了——因为你没有这些约束。你不用担心短期跑输基准，不用担心职业生涯风险，不用担心利益冲突。你唯一需要对抗的，是自己内心想要跟随人群的本能。</p><h2 id="当前市场：谁可能被看走眼？"><a href="#当前市场：谁可能被看走眼？" class="headerlink" title="当前市场：谁可能被看走眼？"></a>当前市场：谁可能被看走眼？</h2><p>如果华尔街的盲点是系统性的，那我们就可以利用这些盲点来寻找 alpha。</p><h3 id="中国电商：被集体抛弃的价值洼地"><a href="#中国电商：被集体抛弃的价值洼地" class="headerlink" title="中国电商：被集体抛弃的价值洼地"></a>中国电商：被集体抛弃的价值洼地</h3><p>当前中国互联网公司的市盈率只有 14.3 倍，比美国同行折价超过 40%。阿里巴巴、京东、拼多多的估值更是只有 9-12 倍。</p><p>这是“羊群效应”的典型体现——地缘政治风险让所有人都跑了，但风险是否被过度定价了？京东 2026 年盈利预计增长超过 40%，却只有 9 倍市盈率。这种错配，历史上往往是逆向投资的机会。</p><h3 id="核能-铀矿：AI-数据中心的隐藏受益者"><a href="#核能-铀矿：AI-数据中心的隐藏受益者" class="headerlink" title="核能&#x2F;铀矿：AI 数据中心的隐藏受益者"></a>核能&#x2F;铀矿：AI 数据中心的隐藏受益者</h3><p>高盛估计数据中心电力需求到 2030 年可能增长 160%。但华尔街在讨论 AI 投资机会时，几乎只盯着 Nvidia 和云计算公司，很少有人认真分析电力供应的瓶颈。</p><p>Meta 已经和 Constellation Energy 签了 20 年协议，供应 1.1GW 核电给 AI 数据中心。Amazon 和 Talen Energy 的合作提供 1,920MW 核电直到 2042 年。这些信号已经很明显了，但铀矿股的估值还没有反映这个逻辑。</p><h3 id="GLP-1-第二梯队：被忽视的并购标的"><a href="#GLP-1-第二梯队：被忽视的并购标的" class="headerlink" title="GLP-1 第二梯队：被忽视的并购标的"></a>GLP-1 第二梯队：被忽视的并购标的</h3><p>减肥药市场预计从 2026 年的 225 亿美元增长到 2036 年的 1960 亿美元，年复合增长率 24%。Eli Lilly 和 Novo Nordisk 已经打得不可开交，大药企们拿着 1 万亿美元现金在找收购标的。</p><p>但华尔街的注意力都在龙头身上，像 Viking Therapeutics、Structure Therapeutics 这样的第二梯队公司被严重低估。这些公司要么有差异化的管线，要么是潜在的并购目标。</p><h2 id="逆向投资的核心公式"><a href="#逆向投资的核心公式" class="headerlink" title="逆向投资的核心公式"></a>逆向投资的核心公式</h2><p>总结下来，逆向投资的逻辑其实很简单：</p><p><strong>华尔街极度悲观 + 基本面稳健 + 催化剂出现 &#x3D; 高 Alpha 机会</strong></p><p>三个条件缺一不可：</p><ul><li>只有悲观情绪，没有基本面支撑，那就是真的烂公司</li><li>只有基本面，没有催化剂，可能要等很久</li><li>有催化剂但不够悲观，说明市场已经 price in 了</li></ul><p>真正的机会，是在所有人都不敢碰的时候，你发现了他们没看到的东西。</p><h2 id="反面教材：当分析师高度看好时要警惕"><a href="#反面教材：当分析师高度看好时要警惕" class="headerlink" title="反面教材：当分析师高度看好时要警惕"></a>反面教材：当分析师高度看好时要警惕</h2><p>说完了华尔街看空但可能看走眼的机会，再说一个相反的案例：<strong>分析师高度看好，但风险可能被低估</strong>。</p><p>Coupang（CPNG）就是一个典型。</p><p>这家被称为“韩国亚马逊”的公司，目前华尔街给出 Strong Buy 共识，平均目标价暗示 57% 的上涨空间。听起来很诱人？</p><p>但你翻开新闻看看：</p><p>2025 年 11 月，Coupang 发生了韩国十年来最严重的数据泄露，影响了 3370 万用户——相当于韩国近四分之三的人口。九个政府部门、数百名官员参与调查，规模史无前例。公平交易委员会主席公开表示“业务暂停令也是可能的”。潜在罚款接近 9 亿美元。CEO 已经辞职。美国已有多起证券集体诉讼。周活跃用户一个月内下降了 170 万。</p><p>而这家公司的市盈率是多少？92 倍。</p><p><strong>92 倍 P&#x2F;E + 史无前例的监管调查 + 用户流失 + 集体诉讼 &#x3D; 风险收益严重不对称。</strong></p><p>为什么分析师还在喊买入？可能的原因：</p><ol><li><strong>利益冲突</strong> — 投行可能有业务往来</li><li><strong>锚定效应</strong> — 习惯性维持之前的评级，不愿意打脸</li><li><strong>低估尾部风险</strong> — 监管处罚、业务暂停这种极端情况没被纳入估值模型</li></ol><p>这让我想起 2008 年的 Bear Stearns。崩盘前五天，Jim Cramer 还在电视上喊“没问题”。</p><p><strong>逆向投资不只是“华尔街看空我就看多”，也包括“华尔街看多时保持警惕”。</strong> 当所有分析师都在喊买入，但基本面正在恶化时，那可能正是该跑的时候。</p><h2 id="风险在哪？"><a href="#风险在哪？" class="headerlink" title="风险在哪？"></a>风险在哪？</h2><p>当然，逆向投资不是简单地“华尔街看空我就看多”。你需要真正理解：</p><ol><li><strong>他们为什么看空？</strong> 是短期噪音还是结构性问题？</li><li><strong>催化剂是什么？</strong> 什么事件会让市场重新定价？</li><li><strong>我可能错在哪？</strong> 如果我错了，最大亏损是多少？</li></ol><p>Bear Stearns 的例子告诉我们，当所有人都看多的时候要警惕。但反过来也成立——<strong>当所有人都看空的时候，也要问问自己：我是不是真的比所有人都聪明？</strong></p><p>逆向投资的本质，不是跟市场对着干，而是在市场情绪极端的时候，保持独立思考的能力。</p><hr><p>回到开头那个问题：如果 Jim Cramer 的准确率只有 47%，我们为什么还要听他的？</p><p>也许答案是：<strong>听他的，然后做相反的事。</strong></p><p>但更好的答案可能是：别听任何人的，自己想清楚。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Jim Cramer 在 2008 年 3 月 11 日对着镜头斩钉截铁地说：“不！不！不！Bear Stearns 没问题。别把钱从 Bear 撤出来，那太傻了。”&lt;/p&gt;
&lt;p&gt;五天后，Bear Stearns 以每股 $2 被 JP Morgan</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Investing" scheme="https://johnsonlee.io/tags/Investing/"/>
    
    <category term="Wall Street" scheme="https://johnsonlee.io/tags/Wall-Street/"/>
    
    <category term="Contrarian" scheme="https://johnsonlee.io/tags/Contrarian/"/>
    
    <category term="Alpha" scheme="https://johnsonlee.io/tags/Alpha/"/>
    
    <category term="Risk Management" scheme="https://johnsonlee.io/tags/Risk-Management/"/>
    
  </entry>
  
  <entry>
    <title>Once You&#39;ve Tasted the Best, There&#39;s No Going Back</title>
    <link href="https://johnsonlee.io/2026/02/10/the-right-tool-matters.en/"/>
    <id>https://johnsonlee.io/2026/02/10/the-right-tool-matters.en/</id>
    <published>2026-02-10T23:00:00.000Z</published>
    <updated>2026-02-10T23:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>A few days ago I submitted a PR – an MCP Server implementation. From design to coding to testing, it took about an hour. When my colleague saw the PR, he pinged me on Slack: “That’s insanely fast! I’ve been studying MCP for days and still can’t figure out how to wire up the transport.”</p><p>Curious, I walked over and glanced at his Windsurf. One look at the model config and I nearly lost it – ChatGPT.</p><p>I said, buddy, you picked the wrong model. You should be using Opus 4.6 – The Best AI in the world!</p><p>He looked confused and said ChatGPT was fine, wasn’t it? I said, for casual chat, sure. But for engineering code – especially anything involving protocol comprehension, contextual reasoning, and code architecture – the gap is night and day. Claude understands the spec you feed it. It gets the JSON-RPC transport layer, the tool registration lifecycle, the edge cases in error handling all in one pass, and the generated code style is remarkably consistent with your existing codebase. No reformatting, no adapting.</p><p>He switched models, skeptical. Tried it. Went silent for about five seconds. Then: “Holy shit.”</p><p>I just smiled.</p><h2 id="Buddy-You-Picked-the-Wrong-Tool"><a href="#Buddy-You-Picked-the-Wrong-Tool" class="headerlink" title="Buddy, You Picked the Wrong Tool"></a>Buddy, You Picked the Wrong Tool</h2><p>This reminded me of an earlier incident. Same guy came over with his laptop, saying he’d written a Spring Boot demo but couldn’t get it running in VS Code – kept getting dependency resolution errors.</p><p>I looked at his VS Code. Extensions everywhere – Java, Kotlin, Spring, a rainbow of them. The <code>.gradle</code> file was drowning in red squiggles. The LSP diagnostics didn’t match the source at all.</p><p>I said, buddy, you picked the wrong tool. IntelliJ IDEA is the best one for Spring projects.</p><p>He said VS Code was supposed to be universal. I said VS Code is great for frontend and lightweight projects, but for heavyweight JVM projects like Spring, its Java support is fundamentally a patchwork of plugins. Gradle sync, dependency injection navigation, bean auto-discovery, Spring Boot auto-configuration hints – IntelliJ supports all of this natively from the ground up. You can’t patch that together with a handful of extensions.</p><p>He installed IntelliJ. Same code. Opened and ran immediately. He went silent again.</p><h2 id="Choice-Is-the-Biggest-Variable"><a href="#Choice-Is-the-Biggest-Variable" class="headerlink" title="Choice Is the Biggest Variable"></a>Choice Is the Biggest Variable</h2><p>These two incidents seem unrelated, but they’re the same problem at their core – <strong>choice</strong>.</p><p>After all these years as an engineer, I’m increasingly convinced that a person’s engineering productivity looks like a difference in technical skill on the surface, but is largely determined by the choices they make at key junctures. Which language, which framework, which tool, which model – these choices seem small, but compounded over time they create orders-of-magnitude gaps.</p><p>It’s like someone who’s gotten used to fine food – going back to coarse meals is hard to swallow. That’s not being spoiled. Your palate has been calibrated. You know what good tastes like, and you can no longer tolerate settling.</p><p>Someone who’s used Claude Opus for engineering code will feel something is off when they go back to other models. Someone who’s used IntelliJ for Spring will feel constrained going back to VS Code. It’s not that the other tools are bad – it’s that you’ve seen better.</p><blockquote><p>Once You’ve Tasted the Best, There’s No Going Back</p></blockquote><h2 id="100"><a href="#100" class="headerlink" title="$100"></a>$100</h2><p>Later, chatting with a colleague, I asked: if everyone knows Claude is better, why do so many people still not use it? What’s stopping them from making the better choice?</p><p>He thought for a moment and gave me two words:</p><blockquote><p>Hundred bucks.</p></blockquote><p>I got it immediately. If you’re the kind of person who shares a streaming subscription to save money, asking you to pay $100&#x2F;month for an AI tool feels like cutting off a piece of yourself.</p><p>I thought about it. He had a point – $100 isn’t cheap, especially for someone who hasn’t experienced the productivity gap firsthand. The money looks like pure consumption. But flip it around: $100 for 10x efficiency – is that really expensive?</p><p>An MCP Server took me 1 hour. He spent days and was still stuck. Convert those days into billable hours, and it’s way more than $100. Not to mention the frustration, the mental drain of trial and error, the panic as deadlines approach – those hidden costs are the truly expensive ones.</p><p><strong>What stops us from making better choices usually isn’t the cost of the choice itself, but how we perceive cost.</strong> We’re naturally sensitive to visible expenses but numb to invisible losses. The $100 subscription is a real deduction from your account. But spending an extra two or three hours a day grinding with an inferior tool – that’s an invoice nobody bothers to calculate.</p><h2 id="A-Good-Blade-Still-Needs-a-Good-Hand"><a href="#A-Good-Blade-Still-Needs-a-Good-Hand" class="headerlink" title="A Good Blade Still Needs a Good Hand"></a>A Good Blade Still Needs a Good Hand</h2><p>Of course, tools are still just tools. Even the best model needs a capable user to wield it. Claude delivers 10x results in my hands not just because it’s smart enough, but because I know how to frame requirements for it, how to decompose tasks, how to review its output. Like a fine blade – it still depends on who’s holding it.</p><p>So don’t be stingy about investing in tools, and don’t stop sharpening your craft of using them.</p><p>But the prerequisite – you have to get your hands on that blade first.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;A few days ago I submitted a PR – an MCP Server implementation. From design to coding to testing, it took about an hour. When my</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>阅尽繁华，粗粝难欢</title>
    <link href="https://johnsonlee.io/2026/02/10/the-right-tool-matters/"/>
    <id>https://johnsonlee.io/2026/02/10/the-right-tool-matters/</id>
    <published>2026-02-10T23:00:00.000Z</published>
    <updated>2026-02-10T23:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>前几天提了一个 PR，是一个 MCP Server 的实现，从设计到编码到测试，前后大概花了 1 小时。同事看到 PR 后，在 Slack 上 @我说：“这也太快了吧？我研究了好几天都没搞明白 MCP 的 transport 怎么接。”</p><p>我有点好奇，就走过去看了一眼他的 Windsurf。一看模型配置，差点没绷住 —— ChatGPT。</p><p>我说哥们儿，你选错模型了，应该选 Opus 4.6 —— The Best AI in the world!</p><p>他一脸困惑，说 ChatGPT 不是也挺好的吗？我说，对于日常聊天是够用的，但写工程代码，尤其是涉及到协议理解、上下文推理和代码架构的场景，这东西的差距是肉眼可见的。Claude 理解你给它的 spec，能把 JSON-RPC 的 transport 层、tool registration 的生命周期、error handling 的边界情况都一次性考虑到位，而且生成的代码风格跟你项目里的代码高度一致，不需要你再花时间去 reformat 或者 adapt。</p><p>他半信半疑地换了模型，试了一下，沉默了大概五秒钟，然后说了句：“卧槽。”</p><p>我笑了笑，没说话。</p><h2 id="哥们儿，你选错工具了"><a href="#哥们儿，你选错工具了" class="headerlink" title="哥们儿，你选错工具了"></a>哥们儿，你选错工具了</h2><p>这让我想起更早之前的一次。也是这哥们儿，拿着笔记本电脑过来找我，说他写了一个 Spring Boot 的 demo，但在 VS Code 里怎么都跑不起来，一直报依赖解析的错误。</p><p>我看了一眼他的 VS Code，extension 装了一大堆，Java 的、Kotlin 的、Spring 的，花花绿绿的。<code>.gradle</code> 文件里红线满天飞，LSP 的诊断信息跟源码完全对不上。</p><p>我说哥们儿，你选错工具了，IntelliJ IDEA is the best one for Spring Project.</p><p>他说 VS Code 不是万能的吗？我说 VS Code 对前端和轻量级项目确实好用，但对 Spring 这种重量级的 JVM 项目来说，它的 Java 支持本质上是靠插件堆砌出来的，Gradle 同步、依赖注入的导航、Bean 的自动发现、Spring Boot 的 auto-configuration 的智能提示 —— 这些能力 IntelliJ 是从底层就原生支持的，不是靠几个插件能补齐的。</p><p>后来他装了 IntelliJ，同样的代码，打开就能跑。他又沉默了。</p><h2 id="选择，才是最大的变量"><a href="#选择，才是最大的变量" class="headerlink" title="选择，才是最大的变量"></a>选择，才是最大的变量</h2><p>这两件事看似不相关，但本质上是同一个问题 —— <strong>选择</strong>。</p><p>做了这么多年工程师，我越来越觉得，一个人的工程效率，表面上看是技术能力的差异，实际上很大程度取决于他在关键节点上的选择。选什么语言，选什么框架，选什么工具，选什么模型 —— 这些选择看似微小，累积起来却能造成数量级的差距。</p><p>就像吃惯了好东西的人，再回去吃粗粝的食物，是很难咽得下去的。这不是矫情，而是你的味觉已经被校准了，你知道什么是好的，自然就无法忍受将就。</p><p>用过 Claude Opus 的人再回去用其他模型写工程代码，会觉得哪里都不对劲；用过 IntelliJ 写 Spring 项目的人再回去用 VS Code，会觉得处处掣肘。不是其他工具不好，而是你已经见过更好的了。</p><blockquote><p>Once You’ve Tasted the Best, There’s No Going Back</p></blockquote><h2 id="100-刀"><a href="#100-刀" class="headerlink" title="100 刀"></a>100 刀</h2><p>后来有一次跟同事闲聊，我问他，既然都知道 Claude 好用，那为什么还是有很多人不用呢？是什么阻碍大家做更好的选择？</p><p>他想了想，冒出俩字：</p><blockquote><p>100 刀</p></blockquote><p>我一下子就理解了。平时连个视频会员都要跟人共享账号的人，你让他每个月掏 100 刀订阅一个 AI 工具，那不跟割肉一样吗？</p><p>我想了想，他说的也没错，100 刀确实不便宜，尤其对于还没体验过效率差距的人来说，这笔钱看起来就是纯消费。但反过来想，100 刀换来 10x 的效率，真的贵吗？</p><p>一个 MCP Server，我 1 小时搞定，他花了好几天还在挣扎。几天的时间差，折算成工时，恐怕早就不止 100 刀了。更别提这中间的挫败感、反复试错的精力消耗，以及在 deadline 面前那种焦头烂额的状态 —— 这些隐性成本，才是真正昂贵的。</p><p>很多时候，阻碍我们做出更好选择的，不是选择本身的成本，而是我们对成本的感知方式。人天生对「看得见的支出」敏感，却对「看不见的损失」迟钝。100 刀的订阅费是实实在在从账户里扣掉的，但每天多花两三个小时在低效工具上磨洋工，这笔账却很少有人去算。</p><h2 id="好刀还得看谁用"><a href="#好刀还得看谁用" class="headerlink" title="好刀还得看谁用"></a>好刀还得看谁用</h2><p>当然，工具终归是工具，再好的模型也需要会用的人来驾驭。Claude 之所以在我手上能发挥出 10x 的效果，不仅仅是因为它足够聪明，更因为我知道怎么给它提需求、怎么拆解任务、怎么 review 它的输出。就像一把好刀，还是得看谁在用。</p><p>所以，不要吝啬在工具上投资，也不要停止打磨自己用工具的手艺。</p><p>但前提是 —— 你得先拿到那把好刀。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;前几天提了一个 PR，是一个 MCP Server 的实现，从设计到编码到测试，前后大概花了 1 小时。同事看到 PR 后，在 Slack 上 @我说：“这也太快了吧？我研究了好几天都没搞明白 MCP 的 transport</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>When Agents Become the Gateway, Where Do Apps Go?</title>
    <link href="https://johnsonlee.io/2026/02/10/agent-economy-app-future.en/"/>
    <id>https://johnsonlee.io/2026/02/10/agent-economy-app-future.en/</id>
    <published>2026-02-10T13:00:00.000Z</published>
    <updated>2026-02-10T13:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Recently, while discussing AI-assisted development with the team, the conversation veered into a bigger question: if all software eventually supports Agents, do the apps we’re building today still matter?</p><p>It sounds alarmist at first. But think about it, and it sends a chill down your spine.</p><h2 id="The-Twilight-of-the-Attention-Economy"><a href="#The-Twilight-of-the-Attention-Economy" class="headerlink" title="The Twilight of the Attention Economy"></a>The Twilight of the Attention Economy</h2><p>For the past twenty years, the internet’s business model boils down to one word: <strong>attention</strong>.</p><p>Wherever eyeballs linger, money flows. To capture that attention, we’ve built endless “optimizations”: infinite-scroll feeds, addictive recommendation algorithms, irresistible notification systems, and that red dot you can never dismiss. Every product manager obsesses over the same question: <strong>how do I keep users in my app one second longer?</strong></p><p>This logic worked. Users open Taobao to buy a charging cable and end up buying three extra outfits. Users open TikTok to watch one video and lose two hours. Those “accidental” minutes of engagement are the breeding ground for ads and conversions.</p><p>But Agents upend this logic entirely.</p><p>Picture this: a user tells their Agent, “Buy me a Type-C fast-charging cable, 100W, don’t overpay.” The Agent compares prices, places the order, done. The whole process takes under 30 seconds. The user never opens a single e-commerce app.</p><p>Those carefully designed product recommendations? The Agent ignores them. Those enticing promotional banners? The Agent doesn’t care. Those “you might also like” algorithms? Just noise to an Agent.</p><p><strong>The user’s attention collapses from “browse-compare-decide” to “give instruction-confirm result.”</strong></p><p>So when attention is no longer the scarce resource, what takes its place?</p><h2 id="The-Rise-of-the-ROI-Economy"><a href="#The-Rise-of-the-ROI-Economy" class="headerlink" title="The Rise of the ROI Economy"></a>The Rise of the ROI Economy</h2><p>I call the new business logic driven by Agents the <strong>ROI Economy</strong>.</p><p>To understand this, you need to think about what underlies the Agent economy.</p><p>In the attention economy, the core resource is <strong>user time</strong>. User time is finite; whoever captures more of it monetizes more ads and conversions. So everyone competes on user experience, content recommendations, and those addictive red dots.</p><p>But in the Agent economy, the core resource shifts. User demand no longer converts to dwell time – it converts to <strong>tokens</strong>.</p><p>A user says “book me a flight.” That sentence gets tokenized, fed into a model, the model inference burns compute, compute burns electricity. The Agent calls airline APIs, compares prices, makes decisions, returns results – every step in the chain consumes tokens, and behind tokens are GPUs, and behind GPUs is electricity.</p><p><strong>User demand -&gt; Tokens -&gt; Compute -&gt; Energy</strong></p><p>This chain dictates the Agent economy’s underlying logic: <strong>every interaction’s cost can be priced in energy</strong>.</p><p>This is fundamentally different from the attention economy. In the attention economy, cost structures are fuzzy – a user scrolling TikTok for ten extra minutes costs TikTok nearly nothing at the margin. But in the Agent economy, every interaction has a clear cost: one more question burns another batch of tokens, another unit of electricity.</p><p>When costs can be precisely measured, returns must be precisely measured too. <strong>This is why the Agent era is inevitably an ROI economy</strong> – not because users became more rational, but because the entire system’s foundation is an energy ledger.</p><p>From this vantage point, several interesting corollaries emerge:</p><p><strong>First, Agents will naturally gravitate toward “good enough.”</strong></p><p>Every extra conversation turn, every extra API call, every extra comparison consumes tokens. An efficient Agent won’t aimlessly help you “browse” – it’ll complete the task with minimal tokens. This isn’t a design choice; it’s economic law. Whoever completes the same task with less energy has a cost advantage.</p><p><strong>Second, user demand will be forcibly “structured.”</strong></p><p>Natural language is flexible but wasteful with tokens. “Find me a restaurant, not too expensive, preferably with a private room, close to the office” – this sentence is full of ambiguity, requiring multiple clarification rounds. The future trend: users will learn to express needs more precisely, or Agents will guide structured input. Either way, the goal is the same – <strong>reduce token waste</strong>.</p><p><strong>Third, “information overload” will be replaced by “compute overload.”</strong></p><p>In the attention economy era, the user’s pain point was too much information. In the Agent economy, the pain point becomes: this task is too complex for the Agent to handle, or it can handle it but at too high a cost. Imagine asking an Agent for a deep industry research report, and it responds: “This task will consume approximately 500,000 tokens, costing about $15. Proceed?”</p><p>When every interaction has a clear price tag, users naturally start calculating: is this need worth that price? That’s the essence of the ROI economy – <strong>it’s not the Agent calculating ROI for you; it’s the entire system forcing everyone to calculate ROI</strong>.</p><h2 id="From-Attention-to-ROI-The-Migration-of-Value-Capture-Points"><a href="#From-Attention-to-ROI-The-Migration-of-Value-Capture-Points" class="headerlink" title="From Attention to ROI: The Migration of Value Capture Points"></a>From Attention to ROI: The Migration of Value Capture Points</h2><p>Understanding why the ROI economy is inevitable, let’s examine its impact on existing apps.</p><p>Take a typical e-commerce app. Current monetization logic looks roughly like this:</p><ol><li>Spend money to acquire traffic</li><li>Use various tactics to retain users, increasing browse time</li><li>Insert ad placements along the user’s browsing path</li><li>Improve conversion rates through recommendation algorithms</li></ol><p>Every step depends on user “dwell time.” But in the Agent era, steps 2 and 3 get cut entirely.</p><p>Agents don’t “browse.” Agents just “buy.”</p><p>What does this mean? The app’s value shifts from “traffic gateway” to “supply interface.” Users no longer need your UI – they just need your API.</p><h2 id="Who-Becomes-the-New-Gateway"><a href="#Who-Becomes-the-New-Gateway" class="headerlink" title="Who Becomes the New Gateway?"></a>Who Becomes the New Gateway?</h2><p>If Agents become the new gateway, the question is: who gets to be that Agent?</p><p>Looking at the current landscape, several potential players emerge:</p><p><strong>OS-level Agents</strong>: Apple Intelligence, Google Assistant – system-level AI assistants that naturally occupy the device gateway. A user speaks one sentence to Siri, and the task is done. No need to open any third-party app.</p><p><strong>Super App Agents</strong>: If WeChat or Alipay nail their Agent experience, their existing ecosystem lock-in could make them gateways. After all, users’ payments, social connections, and mini-programs are all there, giving the Agent a rich set of capabilities to call upon.</p><p><strong>Independent Agents</strong>: Claude, ChatGPT – general-purpose AI products that compete on capability and trust. Users are willing to hand their needs to an AI that’s smart enough and trustworthy enough.</p><p><strong>Vertical Agents</strong>: Domain-specific Agents for law, healthcare, finance, etc. They compete on depth, providing professional-grade services in specific areas.</p><p>Regardless of type, the core competitive advantage is the same: <strong>who does the user trust to make decisions on their behalf</strong>.</p><p>This is far harder than capturing attention. Attention can be grabbed with tricks, but trust must be accumulated over time. Having users let you spend their money, make their choices, handle their sensitive information – that’s not something any random app can achieve.</p><h2 id="Paths-Forward-for-Existing-Apps"><a href="#Paths-Forward-for-Existing-Apps" class="headerlink" title="Paths Forward for Existing Apps"></a>Paths Forward for Existing Apps</h2><p>So what should existing apps actually do? Lie down and wait?</p><p>Of course not. But they need to think clearly about their positioning.</p><p><strong>Path one: become the Agent’s backend.</strong></p><p>Give up the UI, focus on the API. The Agent needs your capabilities to complete tasks, so do the supply-side work well. An airline doesn’t need a beautiful app – it just needs solid APIs for flight search, booking, and rebooking that any Agent can call.</p><p>The problem: you become a commoditized supplier. When every airline provides an API, what does the Agent use to recommend? Price, on-time rate, or who offers the highest commission?</p><p><strong>Path two: data or supply-side monopoly.</strong></p><p>If you have exclusive content, exclusive inventory, or exclusive capabilities, Agents can’t bypass you. Think: copyrighted content platforms, scarce goods suppliers, licensed service providers. No matter how capable the Agent, it can’t conjure your proprietary assets out of thin air.</p><p>But the bar is too high for most apps.</p><p><strong>Path three: high-value human-computer interaction.</strong></p><p>Some things users simply want to do themselves. Gaming, social, creative work – the value in these domains lies precisely in the human experience, not efficiency. Having an Agent play your game for you defeats the purpose.</p><p>Entertainment and social apps may be the least disrupted category in the Agent era. Because the user’s need isn’t “complete a task” – it’s “enjoy the process.”</p><p><strong>Path four: compliance and trust intermediary.</strong></p><p>In some domains, even if the Agent can do it, users won’t trust it to. Financial transactions, medical diagnoses, legal consultations – these require someone to vouch. The Agent can suggest, but execution may still need a trusted third party for oversight.</p><p>Banking apps probably won’t disappear, but their role will shift from “transaction gateway” to “transaction confirmation and compliance.”</p><p><strong>Path five: become an Agent yourself.</strong></p><p>The hardest path, but the highest payoff. If you can transform from an app into an Agent, you move from “callee” to “gateway.”</p><p>But the required capabilities are completely different. Building an app requires product design, user experience, growth hacking. Building an Agent requires AI capabilities, intent understanding, task orchestration. This isn’t a UI tweak.</p><h2 id="A-Counterintuitive-Observation"><a href="#A-Counterintuitive-Observation" class="headerlink" title="A Counterintuitive Observation"></a>A Counterintuitive Observation</h2><p>At this point, an interesting question came to mind.</p><p>If all Agents recommend based on ROI, what happens?</p><p>Suppose a user says “book me the best value hotel.” The Agent recommends what? Theoretically, the cheapest one with the highest ratings.</p><p>But if every Agent recommends this way, what’s the result?</p><p>That “best value” hotel gets flooded by every Agent, then either raises prices, drops quality, or sells out. Other hotels, lacking exposure, can only cut prices to compete for Agent recommendations.</p><p><strong>This leads to extreme commoditization and price wars on the supply side.</strong></p><p>The end result: all hotels converge on similar prices, similar service, similar experiences. Differentiation disappears. Margins disappear.</p><p>This might actually create new opportunities:</p><ul><li><strong>Preference matching</strong>: not “cheapest” but “best fit for you.” Agents need to understand personal preferences, not just compare prices.</li><li><strong>Experience premium</strong>: some things are expensive, but users will pay for the experience. Agents need to learn to recommend what’s “worth it,” not just what’s “cheap.”</li><li><strong>Brand trust</strong>: when an Agent recommends an unknown brand, users hesitate. Brands still carry value in the Agent era – the expression of that value just changes.</li></ul><h2 id="Implications-for-App-Developers"><a href="#Implications-for-App-Developers" class="headerlink" title="Implications for App Developers"></a>Implications for App Developers</h2><p>As an engineer who’s spent many years in mobile development, I can’t help but wonder: if the Agent strips away the UI layer’s value, what are we competing on?</p><p>First, <strong>backend capabilities become more important.</strong> When users no longer need your interface, your only value is your data and services. API design, service reliability, response speed – these invisible things become the core competitive advantage.</p><p>Second, <strong>end-to-end experience still matters, just in a different form.</strong> Users may no longer “use” your app, but they’ll “invoke” your service through an Agent. Whether that invocation experience is good, the response fast, the result accurate – these are the new user experience.</p><p>Finally, <strong>don’t put all your eggs in one basket.</strong> Gateways in the Agent era may be fragmented – Claude today, something else tomorrow. Build your core capabilities so every Agent can call on you. That’s safer than betting on any single Agent.</p><h2 id="Closing-Thoughts"><a href="#Closing-Thoughts" class="headerlink" title="Closing Thoughts"></a>Closing Thoughts</h2><p>Back to the opening question: when Agents become the gateway, where do apps go?</p><p>My answer: <strong>apps won’t disappear, but they’ll retreat backstage.</strong></p><p>What users see is the Agent, but behind the Agent are the capabilities of various apps. These capabilities just no longer appear as “interfaces” – they exist as “services.”</p><p>For developers, this is both challenge and opportunity. The challenge: moats built on UI and growth hacking may get swept away. The opportunity: apps with genuine core capabilities can actually reach more users through Agents.</p><p>After all, no matter how powerful an Agent is, someone has to supply the ammunition.</p><p>The question is: are you ready to be that arsenal?</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Recently, while discussing AI-assisted development with the team, the conversation veered into a bigger question: if all software</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
  </entry>
  
  <entry>
    <title>当 Agent 成为入口，App 何去何从？</title>
    <link href="https://johnsonlee.io/2026/02/10/agent-economy-app-future/"/>
    <id>https://johnsonlee.io/2026/02/10/agent-economy-app-future/</id>
    <published>2026-02-10T13:00:00.000Z</published>
    <updated>2026-02-10T13:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近在跟团队讨论 AI 辅助开发的时候，话题突然跑偏到了一个更宏观的问题：如果未来所有软件都支持 Agent，那我们现在做的这些 App 还有存在的意义吗？</p><p>这个问题乍一听有点危言耸听，但仔细想想，却让人后背发凉。</p><h2 id="注意力经济的黄昏"><a href="#注意力经济的黄昏" class="headerlink" title="注意力经济的黄昏"></a>注意力经济的黄昏</h2><p>过去二十年，互联网的商业模式本质上只有一个词：<strong>注意力</strong>。</p><p>用户的眼球停留在哪里，钱就流向哪里。为了争夺这份注意力，我们做了无数的“优化”：无限滚动的 Feed、令人上瘾的推荐算法、让你欲罢不能的通知系统、还有那个永远关不掉的小红点。每一个产品经理都在绞尽脑汁思考同一个问题：<strong>如何让用户在我的 App 里多待一秒钟？</strong></p><p>这套逻辑在过去是 work 的。用户打开淘宝，即使只是想买个充电线，也可能刷着刷着就多买了三件衣服。用户打开抖音，本来只想看一个视频，结果两小时就没了。这些“意外”的停留时间，就是广告和转化的温床。</p><p>但 Agent 的出现，彻底颠覆了这套逻辑。</p><p>想象一下这个场景：用户对 Agent 说“帮我买一根 Type-C 快充线，要支持 100W，价格别太离谱”。Agent 直接比价、下单、搞定。整个过程可能不到 30 秒，用户甚至不需要打开任何一个电商 App。</p><p>那些精心设计的商品推荐？Agent 不看。那些诱人的促销 Banner？Agent 不管。那些“猜你喜欢”的算法？对 Agent 来说就是噪音。</p><p><strong>用户的注意力从“浏览-比较-决策”被压缩成了“发指令-确认结果”。</strong></p><p>那么，当注意力不再是稀缺资源，什么会取而代之？</p><h2 id="ROI-经济的崛起"><a href="#ROI-经济的崛起" class="headerlink" title="ROI 经济的崛起"></a>ROI 经济的崛起</h2><p>我把 Agent 主导的新商业逻辑叫做 <strong>ROI 经济</strong>。</p><p>要理解这个概念，得先想清楚 Agent 经济的底层是什么。</p><p>在注意力经济里，核心资源是<strong>用户时间</strong>。用户的时间是有限的，谁能占据更多的用户时间，谁就能变现更多的广告和转化。所以大家拼命卷用户体验、卷内容推荐、卷那些让人欲罢不能的小红点。</p><p>但在 Agent 经济里，核心资源变了。用户的需求不再直接转化为停留时间，而是转化为 <strong>token</strong>。</p><p>用户说一句“帮我订张机票”，这句话会被 tokenize，送进模型，模型推理消耗算力，算力消耗电力。Agent 调用航司 API、比价、做决策、返回结果——整个链条的每一步都在消耗 token，而 token 的背后是 GPU，GPU 的背后是电。</p><p><strong>用户需求 → Token → 算力 → 能源</strong></p><p>这条链路决定了 Agent 经济的底层逻辑：<strong>一切交互的成本都可以用能源来计价</strong>。</p><p>这跟注意力经济完全不同。注意力经济的成本结构是模糊的——用户多刷十分钟抖音，抖音的边际成本几乎为零。但在 Agent 经济里，每一次交互都有明确的成本：用户多问一句话，就多消耗一批 token，就多烧一度电。</p><p>当成本可以被精确计量，收益自然也必须被精确计量。<strong>这就是为什么 Agent 时代必然是 ROI 经济</strong>——不是因为用户变理性了，而是因为整个系统的底层就是一笔能源账。</p><p>从这个视角再往上推，你会发现几个有意思的推论：</p><p><strong>第一，Agent 会天然倾向于“够用就好”。</strong></p><p>每多一轮对话、每多调用一个 API、每多做一次比较，都在消耗 token。一个高效的 Agent 不会漫无目的地帮你“逛”，它会用最少的 token 完成任务。这不是设计选择，而是经济规律——谁能用更少的能源完成同样的任务，谁就有成本优势。</p><p><strong>第二，用户的需求会被强制“结构化”。</strong></p><p>自然语言很灵活，但也很浪费 token。“帮我找个吃饭的地方，不要太贵，最好有包间，离公司近一点”——这句话充满了模糊性，Agent 需要多轮澄清才能搞清楚你到底要什么。未来的趋势可能是：用户会学会用更精确的方式表达需求，或者 Agent 会用结构化的方式引导用户输入。无论哪种，目的都是一样的——<strong>减少 token 浪费</strong>。</p><p><strong>第三，“信息过载”会被“计算过载”取代。</strong></p><p>注意力经济时代，用户的痛点是信息太多、看不过来。Agent 经济时代，用户的痛点会变成：这个任务太复杂了，Agent 算不过来，或者算得起但太贵了。想象一下，你让 Agent 帮你做一份深度行业研究报告，它可能会告诉你：“这个任务预计消耗 50 万 token，费用约 15 美元，是否继续？”</p><p>当每一次交互都有明确的价格标签，用户自然会开始算账：这个需求值不值这个价？这就是 ROI 经济的本质——<strong>不是 Agent 在帮你算 ROI，而是整个系统在逼着所有人算 ROI</strong>。</p><h2 id="从注意力到-ROI：价值捕获点的迁移"><a href="#从注意力到-ROI：价值捕获点的迁移" class="headerlink" title="从注意力到 ROI：价值捕获点的迁移"></a>从注意力到 ROI：价值捕获点的迁移</h2><p>理解了 ROI 经济的必然性，再来看它对现有 App 的冲击。</p><p>以一个典型的电商 App 为例。现在的变现逻辑大概是这样的：</p><ol><li>花钱买流量，把用户拉进来</li><li>用各种手段留住用户，增加浏览时长</li><li>在用户的浏览路径上插入广告位</li><li>通过推荐算法提高转化率</li></ol><p>每一步都依赖于用户的“停留”。但在 Agent 时代，这条链路直接被砍掉了中间的 2 和 3。</p><p>Agent 不会“逛”，Agent 只会“买”。</p><p>这意味着什么？意味着 App 的价值从“流量入口”变成了“供给接口”。用户不再需要你的 UI，只需要你的 API。</p><h2 id="谁会成为新的入口？"><a href="#谁会成为新的入口？" class="headerlink" title="谁会成为新的入口？"></a>谁会成为新的入口？</h2><p>既然 Agent 会成为新的入口，那问题来了：谁能成为那个 Agent？</p><p>从目前的格局来看，有几个潜在的玩家：</p><p><strong>OS 级 Agent</strong>：Apple Intelligence、Google Assistant 这类系统级的 AI 助手，天然占据设备入口。用户对着 Siri 说一句话，可能就把事儿办了，根本不需要打开任何第三方 App。</p><p><strong>超级 App Agent</strong>：微信、支付宝如果把 Agent 做好，凭借现有的生态锁定，也有可能成为入口。毕竟用户的支付、社交、小程序都在这儿，Agent 能调用的能力足够丰富。</p><p><strong>独立 Agent</strong>：Claude、ChatGPT 这类通用 AI 产品，靠的是能力和信任。用户愿意把自己的需求交给一个足够聪明、足够可信的 AI 来处理。</p><p><strong>垂直 Agent</strong>：专注某个领域的 Agent，比如法律、医疗、金融等。这类 Agent 靠的是深度能力，在特定领域能提供专业级的服务。</p><p>不管是哪种，核心竞争力都是一样的：<strong>用户信任谁来替自己做决策</strong>。</p><p>这比争夺注意力难多了。注意力可以用各种 trick 来获取，但信任是要靠长期积累的。用户愿意让你帮他花钱、帮他做选择、帮他处理敏感信息——这不是随便一个 App 能做到的。</p><h2 id="现有-App-的几条路"><a href="#现有-App-的几条路" class="headerlink" title="现有 App 的几条路"></a>现有 App 的几条路</h2><p>说了这么多，那现有的 App 到底该怎么办？躺平等死吗？</p><p>当然不是。但确实需要想清楚自己的定位。</p><p><strong>第一条路：成为 Agent 的后端。</strong></p><p>放弃 UI，专注 API。Agent 需要调用你的能力来完成任务，你就老老实实做好供给侧的工作。航空公司不需要做一个多漂亮的 App，只需要把航班查询、订票、改签这些接口做好，让各种 Agent 都能调用就行了。</p><p>这条路的问题是：你沦为了一个无差异化的供应商。当所有航空公司都提供 API 的时候，Agent 会根据什么来推荐？价格、准点率、还是谁给的佣金高？</p><p><strong>第二条路：数据或供给侧垄断。</strong></p><p>如果你有独家内容、独家库存、独家能力，Agent 就绕不开你。比如版权内容平台、稀缺商品供应商、特殊资质持有者。Agent 再牛，也没法凭空变出你独有的东西。</p><p>但这条路的门槛太高了，对大多数 App 来说并不现实。</p><p><strong>第三条路：高价值人机交互。</strong></p><p>有些事情，用户就是想亲自参与。游戏、社交、创作——这些领域的价值恰恰在于“人”的体验，不是效率。你让 Agent 帮你打游戏，那还有什么意思？</p><p>娱乐和社交类 App 可能是 Agent 时代受冲击最小的领域。因为用户的需求本身就不是“完成任务”，而是“享受过程”。</p><p><strong>第四条路：合规与信任中介。</strong></p><p>有些领域，即使 Agent 能做，用户也不放心让它做。金融交易、医疗诊断、法律咨询——这些事情需要有人来“背书”。Agent 可以给建议，但最终的执行可能还是需要一个可信的第三方来把关。</p><p>银行 App 可能不会消失，但它的角色会从“交易入口”变成“交易确认与合规”。</p><p><strong>第五条路：自己成为 Agent。</strong></p><p>这是最难的一条路，但也是回报最大的。如果你能从一个 App 转型成为一个 Agent，你就从“被调用方”变成了“入口方”。</p><p>但这需要的能力完全不一样。做 App 需要的是产品设计、用户体验、增长黑客；做 Agent 需要的是 AI 能力、意图理解、任务编排。这不是改改 UI 就能搞定的事情。</p><h2 id="一个反直觉的观察"><a href="#一个反直觉的观察" class="headerlink" title="一个反直觉的观察"></a>一个反直觉的观察</h2><p>聊到这里，我突然想到一个有意思的问题。</p><p>如果所有 Agent 都基于 ROI 来推荐，那会发生什么？</p><p>假设用户说“帮我订一家性价比最高的酒店”，Agent 会推荐什么？理论上是价格最低、评分最高的那一家。</p><p>但如果所有 Agent 都这么推荐，结果会怎样？</p><p>那家“性价比最高”的酒店会被所有 Agent 推爆，然后要么涨价、要么降质、要么直接 sold out。而其他酒店因为没有曝光，只能通过降价来争取 Agent 的推荐。</p><p><strong>这会导致供给侧的极度同质化和价格战。</strong></p><p>最终的结果可能是：所有酒店都变成差不多的价格、差不多的服务、差不多的体验。差异化消失了，利润也消失了。</p><p>这反而可能催生新的机会：</p><ul><li><strong>偏好匹配</strong>：不是“最便宜”，而是“最适合你”。Agent 需要理解用户的个人偏好，而不只是比价。</li><li><strong>体验溢价</strong>：有些东西就是贵，但用户愿意为体验买单。Agent 需要学会推荐“值得”的东西，而不只是“划算”的东西。</li><li><strong>品牌信任</strong>：当 Agent 推荐一个用户没听过的品牌时，用户会犹豫。品牌在 Agent 时代依然有价值，只是价值的体现方式变了。</li></ul><h2 id="对于-App-开发者的启示"><a href="#对于-App-开发者的启示" class="headerlink" title="对于 App 开发者的启示"></a>对于 App 开发者的启示</h2><p>作为一个在移动端摸爬滚打多年的工程师，我不禁开始思考：如果 App 的 UI 层价值被 Agent 抽走了，那我们还在卷什么？</p><p>首先，<strong>后端能力变得更重要了</strong>。当用户不再需要你的界面，你唯一的价值就是你的数据和服务。API 的设计、服务的稳定性、响应的速度——这些“看不见”的东西才是核心竞争力。</p><p>其次，<strong>端到端的体验依然重要，只是形态变了</strong>。用户可能不再“使用”你的 App，但他们会通过 Agent “调用”你的服务。这个调用的体验好不好，响应快不快，结果准不准——这些才是新的用户体验。</p><p>最后，<strong>别把所有鸡蛋放在一个篮子里</strong>。Agent 时代的入口可能很分散，今天是 Claude，明天可能是别的。做好自己的核心能力，让所有 Agent 都能调用你，比押注某一个 Agent 更稳妥。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>回到开头的问题：当 Agent 成为入口，App 何去何从？</p><p>我的答案是：<strong>App 不会消失，但会退居幕后。</strong></p><p>用户看到的是 Agent，但 Agent 背后调用的还是各种 App 的能力。只是这些能力不再以“界面”的形式呈现，而是以“服务”的形式存在。</p><p>对于开发者来说，这既是挑战，也是机会。挑战在于，过去那些靠 UI 和增长黑客建立的护城河可能会被冲垮。机会在于，真正有核心能力的 App，反而可以借助 Agent 触达更多的用户。</p><p>毕竟，Agent 再厉害，也得有人给它提供弹药。</p><p>问题是：你准备好成为那个弹药库了吗？</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近在跟团队讨论 AI 辅助开发的时候，话题突然跑偏到了一个更宏观的问题：如果未来所有软件都支持 Agent，那我们现在做的这些 App 还有存在的意义吗？&lt;/p&gt;
&lt;p&gt;这个问题乍一听有点危言耸听，但仔细想想，却让人后背发凉。&lt;/p&gt;
&lt;h2</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
  </entry>
  
  <entry>
    <title>软件工程的最后一次范式革命</title>
    <link href="https://johnsonlee.io/2026/02/10/agent-oriented-engineering/"/>
    <id>https://johnsonlee.io/2026/02/10/agent-oriented-engineering/</id>
    <published>2026-02-10T09:00:00.000Z</published>
    <updated>2026-02-10T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近这一年，AI 辅助编程工具如雨后春笋般涌现，从 GitHub Copilot 到 Cursor，再到 Claude Code，每一个都号称能让程序员的效率翻倍。作为一个在代码世界里摸爬滚打了 20 多年的老兵，我不禁开始思考：当 AI 能够理解我们的意图并自主完成任务时，我们的角色是否也应该随之改变？</p><p>答案是肯定的。</p><p>当 Programming 逐渐被 AI 接管，人类工程师的价值将越来越多地体现在 <strong>Engineering</strong> 层面 —— 系统设计、架构决策、约束定义、质量把控。我称这种新的工程范式为 <strong>Agent-Oriented Engineering（面向智能体工程）</strong>。</p><h2 id="Programming-vs-Engineering"><a href="#Programming-vs-Engineering" class="headerlink" title="Programming vs Engineering"></a>Programming vs Engineering</h2><p>在继续之前，我想先厘清一个概念：<strong>Programming</strong> 和 <strong>Engineering</strong> 的区别。</p><p><strong>Programming</strong> 关注的是“怎么做”—— 写代码、调试、优化算法。这是 AI 正在快速掌握的领域。Claude Code 已经能够理解需求、生成代码、修复 bug，甚至进行重构。</p><p><strong>Engineering</strong> 关注的是“做什么”和“为什么”—— 系统架构、技术选型、约束条件、质量标准、风险评估。这是需要人类判断力和经验的领域。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQ3NnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NjE1cHg7aGVpZ2h0OjQ3NnB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDYxNSA0NzYiIHdpZHRoPSI2MTVweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgZW5nLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVuZyIgZGF0YS1zb3VyY2UtbGluZT0iMTQiIGlkPSJlbnQwMDAyIj48cmVjdCBmaWxsPSIjRTNGMkZEIiBoZWlnaHQ9IjMxOS4xOSIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMjU0IiB4PSIxMiIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2NS45NjY4IiB4PSIxMDYuMDE2NiIgeT0iMjYuOTk1MSI+JiMxNzE7aHVtYW4mIzE4Nzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk0Ljk5OSIgeD0iNTQuNjY1MiIgeT0iNDMuMjkyIj5FbmdpbmVlcmluZzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjguNzk2NiIgeD0iMTU0LjUzODIiIHk9IjQzLjI5MiI+KCYjMjAxNTQ7JiMzMTg2NzsmIzIwMDI3OyYjMjM1NDg7KTwvdGV4dD48L2c+PCEtLWNsdXN0ZXIgcHJvZy0tPjxnIGNsYXNzPSJjbHVzdGVyIiBkYXRhLXF1YWxpZmllZC1uYW1lPSJwcm9nIiBkYXRhLXNvdXJjZS1saW5lPSIyMSIgaWQ9ImVudDAwMDciPjxyZWN0IGZpbGw9IiNGRkYzRTAiIGhlaWdodD0iMjY3LjE5IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIyNTQiIHg9IjMwNiIgeT0iMTk1LjU5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXN0eWxlPSJpdGFsaWMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjkuNTk5NiIgeD0iNDE4LjIwMDIiIHk9IjIxMC41ODUxIj4mIzE3MTthaSYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA3LjExOTEiIHg9IjM0Ni4xNDYxIiB5PSIyMjYuODgyIj5Qcm9ncmFtbWluZzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjEuNzE0NyIgeD0iNDU4LjEzOTIiIHk9IjIyNi44ODIiPihBSSAmIzIwMDI3OyYjMjM1NDg7KTwvdGV4dD48L2c+PCEtLWVudGl0eSBhcmNoLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iZW5nLmFyY2giIGRhdGEtc291cmNlLWxpbmU9IjE1IiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSIzNiIgeT0iNzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSI1MC42OTk2IiB5PSI5My45OTUxIj4mIzE3MTt0YXNrJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS45OTk4IiB4PSI0NiIgeT0iMTEwLjI5MiI+JiMyNjU1MDsmIzI2NTAwOyYjMzU3NzQ7JiMzNTc0NTs8L3RleHQ+PC9nPjwhLS1lbnRpdHkgY29ucy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVuZy5jb25zIiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDQiPjxyZWN0IGZpbGw9IiNGRkZGRkYiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNzUuOTk5OCIgeD0iMTQ3IiB5PSI3MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC1zdHlsZT0iaXRhbGljIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ2LjYwMDYiIHg9IjE2MS42OTk2IiB5PSI5My45OTUxIj4mIzE3MTt0YXNrJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS45OTk4IiB4PSIxNTciIHk9IjExMC4yOTIiPiYjMzI0MjI7JiMyNjQ2MzsmIzIzNDUwOyYjMjAwNDE7PC90ZXh0PjwvZz48IS0tZW50aXR5IHF1YWwtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJlbmcucXVhbCIgZGF0YS1zb3VyY2UtbGluZT0iMTciIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9Ijc1Ljk5OTgiIHg9IjM2IiB5PSIyNTQuNTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSI1MC42OTk2IiB5PSIyNzcuNTg1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iNDYiIHk9IjI5My44ODIiPiYjMzYxMzY7JiMzNzMyNzsmIzI2NjMxOyYjMjA5MzQ7PC90ZXh0PjwvZz48IS0tZW50aXR5IHJpc2stLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJlbmcucmlzayIgZGF0YS1zb3VyY2UtbGluZT0iMTgiIGlkPSJlbnQwMDA2Ij48cmVjdCBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9Ijc1Ljk5OTgiIHg9IjE0NyIgeT0iMjU0LjU5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXN0eWxlPSJpdGFsaWMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDYuNjAwNiIgeD0iMTYxLjY5OTYiIHk9IjI3Ny41ODUxIj4mIzE3MTt0YXNrJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS45OTk4IiB4PSIxNTciIHk9IjI5My44ODIiPiYjMzkxMTg7JiMzODUwNTsmIzM1NzgwOyYjMjAyNzI7PC90ZXh0PjwvZz48IS0tZW50aXR5IGNvZGUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJwcm9nLmNvZGUiIGRhdGEtc291cmNlLWxpbmU9IjIyIiBpZD0iZW50MDAwOCI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSIzMzAiIHk9IjI1NC41OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC1zdHlsZT0iaXRhbGljIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ2LjYwMDYiIHg9IjM0NC42OTk2IiB5PSIyNzcuNTg1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iMzQwIiB5PSIyOTMuODgyIj4mIzIwMTk1OyYjMzA3MjE7JiMyOTk4MzsmIzI1MTA0OzwvdGV4dD48L2c+PCEtLWVudGl0eSBkZWJ1Zy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InByb2cuZGVidWciIGRhdGEtc291cmNlLWxpbmU9IjIzIiBpZD0iZW50MDAwOSI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSI0NDEiIHk9IjI1NC41OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC1zdHlsZT0iaXRhbGljIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ2LjYwMDYiIHg9IjQ1NS42OTk2IiB5PSIyNzcuNTg1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iNDUxIiB5PSIyOTMuODgyIj4mIzM1ODQzOyYjMzU3OTc7JiMyMDQ2MjsmIzIyNzk3OzwvdGV4dD48L2c+PCEtLWVudGl0eSByZWZhY3Rvci0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InByb2cucmVmYWN0b3IiIGRhdGEtc291cmNlLWxpbmU9IjI0IiBpZD0iZW50MDAxMCI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSIzMzAiIHk9IjM4Ni4xOSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC1zdHlsZT0iaXRhbGljIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ2LjYwMDYiIHg9IjM0NC42OTk2IiB5PSI0MDkuMTg1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iMzQwIiB5PSI0MjUuNDgyIj4mIzM3MzI1OyYjMjY1MDA7JiMyMDI0ODsmIzIxMjcwOzwvdGV4dD48L2c+PCEtLWVudGl0eSB0ZXN0LS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0icHJvZy50ZXN0IiBkYXRhLXNvdXJjZS1saW5lPSIyNSIgaWQ9ImVudDAwMTEiPjxyZWN0IGZpbGw9IiNGRkZGRkYiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNzUuOTk5OCIgeD0iNDQxIiB5PSIzODYuMTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSI0NTUuNjk5NiIgeT0iNDA5LjE4NTEiPiYjMTcxO3Rhc2smIzE4Nzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU1Ljk5OTgiIHg9IjQ1MSIgeT0iNDI1LjQ4MiI+JiMyNzk3OTsmIzM1Nzk3OyYjMzI1MzQ7JiMyMDg4OTs8L3RleHQ+PC9nPjwhLS1saW5rIGVuZyB0byBwcm9nLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDIiIGRhdGEtZW50aXR5LTI9ImVudDAwMDciIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyOCIgaWQ9ImxuazEyIj48cGF0aCBkPSJNMjY2LjI1LDEwMC44MjMzIEMyNjYuNTMsMTAwLjkwODggMjY2LjgxNjcsMTAwLjk5NjQgMjY3LjExLDEwMS4wODYgQzI2Ny42OTY1LDEwMS4yNjUyIDI2OC4zMDk0LDEwMS40NTI0IDI2OC45NDgsMTAxLjY0NzMgQzI3MC4yMjUxLDEwMi4wMzczIDI3MS42MDUyLDEwMi40NTg1IDI3My4wODM0LDEwMi45MDkzIEMyNzYuMDM5NywxMDMuODExMSAyNzkuMzg4NywxMDQuODMxNyAyODMuMDkyMiwxMDUuOTU4OSBDMjk3LjkwNjMsMTEwLjQ2NzggMzE4LjM5MzgsMTE2LjY4MzEgMzQyLjEyNSwxMjMuODI2MiBDMzg5LjU4NzUsMTM4LjExMjUgNDUwLjAyNSwxNTYuMTEgNTA0LDE3MS41OSBDNTE2Ljg1LDE3NS4yOCA1MjMuOTQsMTY5Ljc2IDUzMywxNzkuNTkgQzUzNi43ODI1LDE4My42OTYyIDUzOS45MjE5LDE4OC4zMTA2IDU0Mi41MTkxLDE5My4yNDU5IEM1NDIuODQzOCwxOTMuODYyOCA1NDMuMTYsMTk0LjQ4NDcgNTQzLjQ2NzksMTk1LjExMTMgQzU0My41NDQ5LDE5NS4yNjc5IDU0MS4wMTE1LDE5MC4wMjIyIDU0MS4wODc0LDE5MC4xNzk0IiBmaWxsPSJub25lIiBpZD0iZW5nLXRvLXByb2ciIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MjsiLz48cG9seWdvbiBmaWxsPSIjNjY2NjY2IiBwb2ludHM9IjU0My42OTczLDE5NS41ODIxLDU0My4zODQzLDE4NS43MzgyLDU0MS41MjI0LDE5MS4wNzk5LDUzNi4xODA3LDE4OS4yMTgsNTQzLjY5NzMsMTk1LjU4MjEiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MjsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzYuNjMwNiIgeD0iNTEzLjkwMDQiIHk9IjE2Ny41ODUxIj4mIzMwNDQ2OyYjMjY2MzE7ICsgJiMzMjQyMjsmIzI2NDYzOzwvdGV4dD48L2c+PD9wbGFudHVtbC1zcmMgVFA5REpuRDE2Q1ZsLW9hVW9tS0I5OUdRM21JUWU3R0pCZVJXcU5XT1RpVlRvTXZkdy1uaUkzMFNaQUpMQUVlMTIyLTFyYTA4TkJRT2dENnNhSS1wUl9xTUo2VGhNaDB4bnRiLXB5cHBjX3l5dTJRa09BWlFZNTM1akdZajhlT2dpOHVxb3MyRUhfTWRaa3FtczMwOW5vRHI3UnoyZGlyTFhfOWRJRkdsQ09CaXlWTmRQMUQzdVA0b0tjTE91dVdRRGVPdDJlWnJ2RXZqMm1rY0xxNnFMOEE5U2I2VEt2VjdHdVpxMkxMTFktTlB5R0g3aFlNT1Q3WDlFNHA3QjVNUVUyb050NXpCY25aNTMwZ3BvZlFZMzRWQ3ZWRGJRWDJBQ0lGS29FVFhDY1l0dS0tVHU3U2RSN0tWdlcydldBYTFtd2JKZ1A0SmVqRFZxVWJzdWx6RF82LUlIcW1wdVR6eXotY3VWSDZURDRCX0FGWnBHVEFRR3pyQ0VsYm5zUWpfWVBocmk1d0p6NmlGc1BicXgtbnB4XzBnUU1xN3RNajlDLTlRR19nLS0yZnAzMTVPUEkyLWowQVpyYkxIWEs0RV9wYTdkUkV1LUpSVVJLSmxsbXVpVDlualNWcWtRVXE1RHR2dWxZRGY3UXp4SGhQNlZLU3lRRDB6MjNfamZuaFlsc2JTZjloTDRWdHlBMnc4a19qWHhMMXNTRXBvRS1CejM2VFUzN3g1RDNVOVBiN2lrZWpwQnNUQWdVZXl2MDNZT3J5eURhbjE2WEQweFhPMD8+PC9nPjwvc3ZnPg=='><p>这不是说人类不再需要理解代码 —— 恰恰相反，我们需要更深刻地理解代码和系统，才能有效地指导 AI Agent。但我们的主要精力将从“写代码”转向“设计系统”和“定义约束”。</p><h2 id="为什么是现在？"><a href="#为什么是现在？" class="headerlink" title="为什么是现在？"></a>为什么是现在？</h2><p>在过去的几十年里，人类与计算机的交互方式经历了一个有趣的演变：</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjE5NXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NjYzcHg7aGVpZ2h0OjE5NXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY2MyAxOTUiIHdpZHRoPSI2NjNweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBjbGktLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJjbGkiIGRhdGEtc291cmNlLWxpbmU9IjEwIiBpZD0iZW50MDAwMiI+PHJlY3QgZmlsbD0iI0IzRTVGQyIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTI1LjU4MTEiIHg9IjEyIiB5PSIxMiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MS45OTk4IiB4PSIyMiIgeT0iMzQuOTk1MSI+JiMyMTYyOTsmIzIwMTk2OyYjMzQ4OTI7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDUuNTgxMSIgeD0iMjIiIHk9IjUxLjI5MiI+Q29tbWFuZCBMaW5lPC90ZXh0PjwvZz48IS0tZW50aXR5IGd1aS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9Imd1aSIgZGF0YS1zb3VyY2UtbGluZT0iMTEiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI3LjUiIHJ5PSI3LjUiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSIxODAuNzkiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU1Ljk5OTgiIHg9IjE5MC43OSIgeT0iMzQuOTk1MSI+JiMyMjI3MDsmIzI0NDE4OyYjMzAwMjg7JiMzODc1NDs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI1LjIyNDYiIHg9IjE5MC43OSIgeT0iNTEuMjkyIj5HVUk8L3RleHQ+PC9nPjwhLS1lbnRpdHkgc29mdC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InNvZnQiIGRhdGEtc291cmNlLWxpbmU9IjEyIiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGRTBCMiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTY1Ljg5OTQiIHg9IjI5Ny44NCIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iMzA3Ljg0IiB5PSIzNC45OTUxIj4mIzE5OTg3OyYjMjYzNzc7JiMzNjcxOTsmIzIwMjE0OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQ1Ljg5OTQiIHg9IjMwNy44NCIgeT0iNTEuMjkyIj5TcGVjaWFsaXplZCBTb2Z0d2FyZTwvdGV4dD48L2c+PCEtLWVudGl0eSBubC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9Im5sIiBkYXRhLXNvdXJjZS1saW5lPSIxMyIgaWQ9ImVudDAwMDUiPjxyZWN0IGZpbGw9IiNGOEJCRDkiIGhlaWdodD0iNTIuNTkzOCIgcng9IjcuNSIgcnk9IjcuNSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE0NS4xNzk3IiB4PSI1MDQuMiIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iNTE0LjIiIHk9IjM0Ljk5NTEiPiYjMzMyNTg7JiMyODk4MjsmIzM1ODIxOyYjMzUzMjg7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjUuMTc5NyIgeD0iNTE0LjIiIHk9IjUxLjI5MiI+TmF0dXJhbCBMYW5ndWFnZTwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OOSIgZGF0YS1zb3VyY2UtbGluZT0iMjAiIGlkPSJlbnQwMDEwIj48cGF0aCBkPSJNMjIuMjksMTMzLjE2IEwyMi4yOSwxNzMuNDI1NiBBMCwwIDAgMCAwIDIyLjI5LDE3My40MjU2IEwxMjEuMjkwMSwxNzMuNDI1NiBBMCwwIDAgMCAwIDEyMS4yOTAxLDE3My40MjU2IEwxMjEuMjkwMSwxNDMuMTYgTDExMS4yOTAxLDEzMy4xNiBMNzYuMzEsMTMzLjE2IEw3NC4xMSw2NC45NCBMNjguMzEsMTMzLjE2IEwyMi4yOSwxMzMuMTYgQTAsMCAwIDAgMCAyMi4yOSwxMzMuMTYiIGZpbGw9IiNGRkZGRkYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNMTExLjI5MDEsMTMzLjE2IEwxMTEuMjkwMSwxNDMuMTYgTDEyMS4yOTAxLDE0My4xNiBMMTExLjI5MDEsMTMzLjE2IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjY1LjAwMDEiIHg9IjI4LjI5IiB5PSIxNTAuMjI2OSI+JiMyMzM5ODsmIzIwMDY0OyYjMzgzNzY7JiMyNzA5OTsmIzM5NjQwOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzguMDAwMSIgeD0iMjguMjkiIHk9IjE2NS4zNTk3Ij4mIzM4NjU2OyYjMzUyMDE7JiMzNTc2MDsmIzI0NTE4OyYjMjE2Mjk7JiMyMDE5Njs8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjEyIiBkYXRhLXNvdXJjZS1saW5lPSIyNSIgaWQ9ImVudDAwMTMiPjxwYXRoIGQ9Ik0xNTYuMjksMTMzLjE2IEwxNTYuMjksMTczLjQyNTYgQTAsMCAwIDAgMCAxNTYuMjksMTczLjQyNTYgTDI4MS4yOTAxLDE3My40MjU2IEEwLDAgMCAwIDAgMjgxLjI5MDEsMTczLjQyNTYgTDI4MS4yOTAxLDE0My4xNiBMMjcxLjI5MDEsMTMzLjE2IEwyMjIuNzksMTMzLjE2IEwyMTguNzksNjQuOTQgTDIxNC43OSwxMzMuMTYgTDE1Ni4yOSwxMzMuMTYgQTAsMCAwIDAgMCAxNTYuMjksMTMzLjE2IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTI3MS4yOTAxLDEzMy4xNiBMMjcxLjI5MDEsMTQzLjE2IEwyODEuMjkwMSwxNDMuMTYgTDI3MS4yOTAxLDEzMy4xNiIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2NS4wMDAxIiB4PSIxNjIuMjkiIHk9IjE1MC4yMjY5Ij4mIzMwNDUyOyYjMzUyNjY7JiMyMDI5NDsmIzIxNDYzOyYjMzg0ODA7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDQuMDAwMSIgeD0iMTYyLjI5IiB5PSIxNjUuMzU5NyI+JiMyMTE1MTsmIzMzMDIxOyYjMzAwMDE7JiMyNDMyMDsmIzIxNDU3OyYjMzI3NzM7JiMzOTA0NDsmIzM1Nzc0OzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTUiIGRhdGEtc291cmNlLWxpbmU9IjMwIiBpZD0iZW50MDAxNiI+PHBhdGggZD0iTTMxNi4zNSwxMjUuNTkgTDMxNi4zNSwxODAuOTg4NCBBMCwwIDAgMCAwIDMxNi4zNSwxODAuOTg4NCBMNDQ5LjIzMzgsMTgwLjk4ODQgQTAsMCAwIDAgMCA0NDkuMjMzOCwxODAuOTg4NCBMNDQ5LjIzMzgsMTM1LjU5IEw0MzkuMjMzOCwxMjUuNTkgTDM4Ni4zMSwxMjUuNTkgTDM4MS4yNCw2NC45NCBMMzc4LjMxLDEyNS41OSBMMzE2LjM1LDEyNS41OSBBMCwwIDAgMCAwIDMxNi4zNSwxMjUuNTkiIGZpbGw9IiNGRkZGRkYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNNDM5LjIzMzgsMTI1LjU5IEw0MzkuMjMzOCwxMzUuNTkgTDQ0OS4yMzM4LDEzNS41OSBMNDM5LjIzMzgsMTI1LjU5IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjMyMi4zNSIgeT0iMTQyLjY1NjkiPiYjMjExNTE7JiMzMzAyMTsmIzI0Mzc4OyYjMjI4MjM7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI5MS4wMDAxIiB4PSIzMjIuMzUiIHk9IjE1Ny43ODk3Ij4mIzIwMjk0OyYjMzg2NTY7JiMzNTIwMTsmIzE5OTg3OyYjMTk5OTQ7JiMyMjUyMTsmIzM1NzU3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTExLjg4MzgiIHg9IjMyMi4zNSIgeT0iMTcyLjkyMjUiPihQUywgRXhjZWwsIElERS4uLik8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjE4IiBkYXRhLXNvdXJjZS1saW5lPSIzNiIgaWQ9ImVudDAwMTkiPjxwYXRoIGQ9Ik01MzMuNzksMTMzLjE2IEw1MzMuNzksMTczLjQyNTYgQTAsMCAwIDAgMCA1MzMuNzksMTczLjQyNTYgTDYxOS43OTAxLDE3My40MjU2IEEwLDAgMCAwIDAgNjE5Ljc5MDEsMTczLjQyNTYgTDYxOS43OTAxLDE0My4xNiBMNjA5Ljc5MDEsMTMzLjE2IEw1ODAuNzksMTMzLjE2IEw1NzYuNzksNjQuOTQgTDU3Mi43OSwxMzMuMTYgTDUzMy43OSwxMzMuMTYgQTAsMCAwIDAgMCA1MzMuNzksMTMzLjE2IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTYwOS43OTAxLDEzMy4xNiBMNjA5Ljc5MDEsMTQzLjE2IEw2MTkuNzkwMSwxNDMuMTYgTDYwOS43OTAxLDEzMy4xNiIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzOSIgeD0iNTM5Ljc5IiB5PSIxNTAuMjI2OSI+JiMzODY0NjsmIzM4Mzc2OyYjMjcwOTk7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2NS4wMDAxIiB4PSI1MzkuNzkiIHk9IjE2NS4zNTk3Ij4mIzM1ODI4OyYjMjAxNTQ7JiMzNTgwNTsmIzIzNjAxOyYjMzQ4OTI7PC90ZXh0PjwvZz48IS0tbGluayBjbGkgdG8gZ3VpLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDIiIGRhdGEtZW50aXR5LTI9ImVudDAwMDMiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImxuazYiPjxwYXRoIGQ9Ik0xMzcuOTUsMzguMjkgQzE1Mi40NiwzOC4yOSAxNjEuNDYsMzguMjkgMTc0LjUzLDM4LjI5IiBmaWxsPSJub25lIiBpZD0iY2xpLXRvLWd1aSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMTgwLjUzLDM4LjI5LDE3MS41MywzNC4yOSwxNzUuNTMsMzguMjksMTcxLjUzLDQyLjI5LDE4MC41MywzOC4yOSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0LjEzMjMiIHg9IjE1Ny4xOSIgeT0iMzEuMzU2OSI+JiMxNjA7PC90ZXh0PjwvZz48IS0tbGluayBndWkgdG8gc29mdC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTYiIGlkPSJsbms3Ij48cGF0aCBkPSJNMjU3LjE4LDM4LjI5IEMyNjkuMzUsMzguMjkgMjc3LjMsMzguMjkgMjkxLjM1LDM4LjI5IiBmaWxsPSJub25lIiBpZD0iZ3VpLXRvLXNvZnQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjI5Ny4zNSwzOC4yOSwyODguMzUsMzQuMjksMjkyLjM1LDM4LjI5LDI4OC4zNSw0Mi4yOSwyOTcuMzUsMzguMjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNC4xMzIzIiB4PSIyNzUuMzIiIHk9IjMxLjM1NjkiPiYjMTYwOzwvdGV4dD48L2c+PCEtLWxpbmsgc29mdCB0byBubC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTciIGlkPSJsbms4Ij48cGF0aCBkPSJNNDY0LjIsMzguMjkgQzQ3Ny40MywzOC4yOSA0ODUuMDIsMzguMjkgNDk3Ljk5LDM4LjI5IiBmaWxsPSJub25lIiBpZD0ic29mdC10by1ubCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNTAzLjk5LDM4LjI5LDQ5NC45OSwzNC4yOSw0OTguOTksMzguMjksNDk0Ljk5LDQyLjI5LDUwMy45OSwzOC4yOSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0LjEzMjMiIHg9IjQ4MS45NyIgeT0iMzEuMzU2OSI+JiMxNjA7PC90ZXh0PjwvZz48P3BsYW50dW1sLXNyYyBUUEJIUW5DbjdDVlZ5clY0emFNRmhRWFppbGFXVUJVaDNDT0dZcy0tUDdWZnpMV2tBTWNFWUk5S2RIRGJDOFZBcjZ2Q29yWTdxZFEzS1JQa2RWX0NQU3R6NS1Sa2U2eEF5ZkpWel9CdnZmaWxUcXJLUzgxWGJJMlZXamdZSndrOGVtMGs4NlZIdW9vYWhpSzh1dDJmdVdqeXVSa0Jvb1dhZWlZZWM0VVFseXp6SEMyNTBubXgwYjZGT0ZXU0dCcVVQTHdTT1d2bEpRUUlvUllCVVVRVmRxV05VMDcwTnA5ZDY3OXo0OXRpZzEtaFhsNjRNWW04NDdOWGQ0em4zZzhRVDhXRnktUTRGTGNxX2k0UVB0Qkc3N3ZVWlJVUTJWZFd5TW1BVUE0NmgyZHhaWkx6Nk9ZRUZmdmxsYkUzUmRKSUl1MUk1Smx3SFZ1cHhDOElBdWlibkJDaFF0ZzAtTUJIbGNkVWxjb1h0bHVTQmxUS2p3dHN3ZWQ1RjE4WEhtSkV3SENYeVpBUzRXckZjVVJDRDAxOS1kN2tVbktuVll6RFRYVmNTWTNQWkRKcWpiSEVUb0RUc3dHZ2U0bldrQzI0TzA1YXZRR0dOUXJpeHFSN3QtRURsVkRNOF94ckhJbG5QYnRqbGJJVFZWYng5UWlLTzVyYUdsX2RlR0RlT2pXdUxBck5xTTE1aGN0NE5weWFoay10clVsMXlERTFGQXRCak5MTFZuQ3Rick5keDZnZDlGQzhiQVR6a1RGSWVfUkN1a1pFZXdEbFNsak9UVGZRbF93bUQwUmpmbXVjT3Qxc25ZdUsyWlVramdQNDR1T0hEdGhQQ21yM3B3Zng2Rk54Z2hpYnptX3FCcEVZX20wMD8+PC9nPjwvc3ZnPg=='><p>过去，想要让计算机完成一项任务，你必须学习它的“语言”—— 无论是命令行、图形界面还是专有软件的操作逻辑。想做个海报？学 Photoshop。想分析数据？学 Excel。想开发应用？学编程语言。</p><p>每一种专有软件都是一道门槛，每一门编程语言都是一堵墙。</p><p>但现在，这一切正在改变。</p><p>当 AI 能够理解自然语言，人类终于可以用<strong>最自然的方式</strong>——说话——来表达需求。不需要学习任何专有软件，不需要掌握任何编程语言，只需要清晰地描述你想要什么。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjEyMXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6ODUycHg7aGVpZ2h0OjEyMXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDg1MiAxMjEiIHdpZHRoPSI4NTJweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgPz8/Py0tPjxnIGNsYXNzPSJjbHVzdGVyIiBkYXRhLXF1YWxpZmllZC1uYW1lPSIuLi4uIiBkYXRhLXNvdXJjZS1saW5lPSIxNCIgaWQ9ImVudDAwMDIiPjxwYXRoIGQ9Ik0xMy41LDExIEw2Mi41MDA0LDExIEEzLjc1LDMuNzUgMCAwIDEgNjUuMDAwNCwxMy41IEw3Mi4wMDA0LDMwLjk2ODggTDQ4OS41LDMwLjk2ODggQTIuNSwyLjUgMCAwIDEgNDkyLDMzLjQ2ODggTDQ5MiwxMDQuNDQgQTIuNSwyLjUgMCAwIDEgNDg5LjUsMTA2Ljk0IEwxMy41LDEwNi45NCBBMi41LDIuNSAwIDAgMSAxMSwxMDQuNDQgTDExLDEzLjUgQTIuNSwyLjUgMCAwIDEgMTMuNSwxMSIgZmlsbD0iI0ZGRUJFRSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMSIgeDI9IjcyLjAwMDQiIHkxPSIzMC45Njg4IiB5Mj0iMzAuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC4wMDA0IiB4PSIxNSIgeT0iMjQuMTM4NyI+JiMyMDI1NjsmIzMyNDc5OyYjMjYwNDE7JiMyNDMzNTs8L3RleHQ+PC9nPjwhLS1jbHVzdGVyIEFPRSA/Py0tPjxnIGNsYXNzPSJjbHVzdGVyIiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBT0UgLi4iIGRhdGEtc291cmNlLWxpbmU9IjI1IiBpZD0iZW50MDAxMCI+PHBhdGggZD0iTTUxOC41LDExIEw1NzUuMzYzNSwxMSBBMy43NSwzLjc1IDAgMCAxIDU3Ny44NjM1LDEzLjUgTDU4NC44NjM1LDMwLjk2ODggTDgzNC41LDMwLjk2ODggQTIuNSwyLjUgMCAwIDEgODM3LDMzLjQ2ODggTDgzNywxMDQuNDQgQTIuNSwyLjUgMCAwIDEgODM0LjUsMTA2Ljk0IEw1MTguNSwxMDYuOTQgQTIuNSwyLjUgMCAwIDEgNTE2LDEwNC40NCBMNTE2LDEzLjUgQTIuNSwyLjUgMCAwIDEgNTE4LjUsMTEiIGZpbGw9IiNFOEY1RTkiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iNTE2IiB4Mj0iNTg0Ljg2MzUiIHkxPSIzMC45Njg4IiB5Mj0iMzAuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS44NjM1IiB4PSI1MjAiIHk9IjI0LjEzODciPkFPRSAmIzI2MDQxOyYjMjQzMzU7PC90ZXh0PjwvZz48IS0tZW50aXR5IHJlcTEtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSIuLi4uLnJlcTEiIGRhdGEtc291cmNlLWxpbmU9IjE1IiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0ZGQ0REMiIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI2OC4wMDA0IiB4PSIyNyIgeT0iNDkuOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDguMDAwNCIgeD0iMzciIHk9IjcxLjEyODciPiYjMjAxNTQ7JiMzMTg2NzsmIzM4NjU2OyYjMjc3MTQ7PC90ZXh0PjwvZz48IS0tZW50aXR5IGxlYXJuLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iLi4uLi5sZWFybiIgZGF0YS1zb3VyY2UtbGluZT0iMTYiIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjRkZDREQyIiBoZWlnaHQ9IjQ3LjkzNzUiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE2NC4yOTg4IiB4PSIxMjkuODUiIHk9IjQzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjcyLjAwMDUiIHg9IjEzOS44NSIgeT0iNjQuMTM4NyI+JiMyMzM5ODsmIzIwMDY0OyYjMTk5ODc7JiMyNjM3NzsmIzM2NzE5OyYjMjAyMTQ7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDQuMjk4OCIgeD0iMTM5Ljg1IiB5PSI3OC4xMDc0Ij4oUGhvdG9zaG9wL0V4Y2VsL0lERS4uLik8L3RleHQ+PC9nPjwhLS1lbnRpdHkgbWFudWFsLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iLi4uLi5tYW51YWwiIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0ZGQ0REMiIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI2OC4wMDA0IiB4PSIzMjkiIHk9IjQ5Ljk5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ4LjAwMDQiIHg9IjMzOSIgeT0iNzEuMTI4NyI+JiMyNTE2MzsmIzIxMTYwOyYjMjU4MDU7JiMyMDMxNjs8L3RleHQ+PC9nPjwhLS1lbnRpdHkgcmVzdWx0MS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9Ii4uLi4ucmVzdWx0MSIgZGF0YS1zb3VyY2UtbGluZT0iMTgiIGlkPSJlbnQwMDA2Ij48cmVjdCBmaWxsPSIjRkZDREQyIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjQ0LjAwMDIiIHg9IjQzMiIgeT0iNDkuOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjQuMDAwMiIgeD0iNDQyIiB5PSI3MS4xMjg3Ij4mIzMyNDY3OyYjMjY1MjQ7PC90ZXh0PjwvZz48IS0tZW50aXR5IHJlcTItLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBT0UgLi4ucmVxMiIgZGF0YS1zb3VyY2UtbGluZT0iMjYiIGlkPSJlbnQwMDExIj48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjQ3LjkzNzUiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9Ijc3LjM2MzYiIHg9IjUzMi4zMiIgeT0iNDMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDguMDAwNCIgeD0iNTQyLjMyIiB5PSI2NC4xMzg3Ij4mIzIwMTU0OyYjMzE4Njc7JiMzODY1NjsmIzI3NzE0OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTcuMzYzNiIgeD0iNTQyLjMyIiB5PSI3OC4xMDc0Ij4oJiMzMzI1ODsmIzI4OTgyOyYjMzU4MjE7JiMzNTMyODspPC90ZXh0PjwvZz48IS0tZW50aXR5IGFnZW50LS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQU9FIC4uLmFnZW50IiBkYXRhLXNvdXJjZS1saW5lPSIyNyIgaWQ9ImVudDAwMTIiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iNDcuOTM3NSIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iOTcuMjAzMyIgeD0iNjQ0LjQiIHk9IjQzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5LjU2MjciIHg9IjY1NC40IiB5PSI2NC4xMzg3Ij5BSSAmIzI5NzAyOyYjMzUyOTk7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3Ny4yMDMzIiB4PSI2NTQuNCIgeT0iNzguMTA3NCI+KyBBZ2VudCAmIzI1MTkxOyYjMzQ4OTI7PC90ZXh0PjwvZz48IS0tZW50aXR5IHJlc3VsdDItLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBT0UgLi4ucmVzdWx0MiIgZGF0YS1zb3VyY2UtbGluZT0iMjgiIGlkPSJlbnQwMDEzIj48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjQ0LjAwMDIiIHg9Ijc3NyIgeT0iNDkuOTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjQuMDAwMiIgeD0iNzg3IiB5PSI3MS4xMjg3Ij4mIzMyNDY3OyYjMjY1MjQ7PC90ZXh0PjwvZz48IS0tbGluayByZXExIHRvIGxlYXJuLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDQiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMCIgaWQ9ImxuazciPjxwYXRoIGQ9Ik05NS4yMSw2Ni45NyBDMTA2LjYyLDY2Ljk3IDExMi4wMiw2Ni45NyAxMjMuNDMsNjYuOTciIGZpbGw9Im5vbmUiIGlkPSJyZXExLXRvLWxlYXJuIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxMjkuNDMsNjYuOTcsMTIwLjQzLDYyLjk3LDEyNC40Myw2Ni45NywxMjAuNDMsNzAuOTcsMTI5LjQzLDY2Ljk3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGxlYXJuIHRvIG1hbnVhbC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjEiIGlkPSJsbms4Ij48cGF0aCBkPSJNMjk0LjU4LDY2Ljk3IEMzMDUuODksNjYuOTcgMzExLjIxLDY2Ljk3IDMyMi41Miw2Ni45NyIgZmlsbD0ibm9uZSIgaWQ9ImxlYXJuLXRvLW1hbnVhbCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMzI4LjUyLDY2Ljk3LDMxOS41Miw2Mi45NywzMjMuNTIsNjYuOTcsMzE5LjUyLDcwLjk3LDMyOC41Miw2Ni45NyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBtYW51YWwgdG8gcmVzdWx0MS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJsbms5Ij48cGF0aCBkPSJNMzk3LjQ4LDY2Ljk3IEM0MDguOTYsNjYuOTcgNDE0LjQ0LDY2Ljk3IDQyNS45Miw2Ni45NyIgZmlsbD0ibm9uZSIgaWQ9Im1hbnVhbC10by1yZXN1bHQxIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI0MzEuOTIsNjYuOTcsNDIyLjkyLDYyLjk3LDQyNi45Miw2Ni45Nyw0MjIuOTIsNzAuOTcsNDMxLjkyLDY2Ljk3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIHJlcTIgdG8gYWdlbnQtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAxMSIgZGF0YS1lbnRpdHktMj0iZW50MDAxMiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjMwIiBpZD0ibG5rMTQiPjxwYXRoIGQ9Ik02MTAuMDgsNjYuOTcgQzYyMS40Miw2Ni45NyA2MjYuNzUsNjYuOTcgNjM4LjA5LDY2Ljk3IiBmaWxsPSJub25lIiBpZD0icmVxMi10by1hZ2VudCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNjQ0LjA5LDY2Ljk3LDYzNS4wOSw2Mi45Nyw2MzkuMDksNjYuOTcsNjM1LjA5LDcwLjk3LDY0NC4wOSw2Ni45NyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhZ2VudCB0byByZXN1bHQyLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMTIiIGRhdGEtZW50aXR5LTI9ImVudDAwMTMiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzMSIgaWQ9ImxuazE1Ij48cGF0aCBkPSJNNzQxLjg2LDY2Ljk3IEM3NTMuNDcsNjYuOTcgNzU5LjA3LDY2Ljk3IDc3MC42OCw2Ni45NyIgZmlsbD0ibm9uZSIgaWQ9ImFnZW50LXRvLXJlc3VsdDIiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9Ijc3Ni42OCw2Ni45Nyw3NjcuNjgsNjIuOTcsNzcxLjY4LDY2Ljk3LDc2Ny42OCw3MC45Nyw3NzYuNjgsNjYuOTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PD9wbGFudHVtbC1zcmMgVkwxQkltOTE3Ql9sZnZacWFlSUEydWJVMFh5WlVBY2VndlQ5Znp0NVRUUjZiUThHOUFBbTFtTDI5b2FaSTBiNGw0WS1saXN3a3RzQnJqZHJNSlI3Xy15dmxtckxuM2FDeVpBSTI1VjhJWUlGQUNnMTh2SkUyYkdmYWFuQ2FIS0FKYUw5bkdqdTFYLVplZ21jNUFCazhhaVZlSEFJX3lPRmZOQ0MwWm90V0VPalRvSFdTQzQxd3FLTGNpN0twZDQ3c1VEQVl0SUFxb2VZV1ptTDdEWXpBQzRLWDJSS2dQekI2elFEbVFsLXQxaUY3cnQwZEtaMEE4SUVRa3hZcWxmemVwRnVoZk5ycGdLQmU4QTVkR0djejVXeXBnLUlud3FGaExWTmxnZndoTUFFc2pnV2NvQVItd0FZQVdMSG9WbFhNSGhCX2NHUy1kbS0zcEVKQ1E5YWRQalVrSGxWRGxOZ1dwUWdDTk9FYUlBSXJ6NkRHTExfZ0phVDJ6UVlvcEtUa2JOVUlvTDFMQnF4VFpneHNwcmNXMXQ0NDJUcDFaZE1JckQ2elkyTzNHYjNZTXFPX2R6OFFuTnB2akV1d2ZoamJqYWlVd1IzeWkwVDJ5NVdCQm1nWllJMXlOSGpEanZKUDBqNDE0bktlNVNRdmppektvOXNNMkZ6RFNqb283R01WbHY1UGlWa2psN0F0dGNrejBDMD8+PC9nPjwvc3ZnPg=='><p>这就是 Agent-Oriented Engineering 兴起的根本原因：<strong>自然语言成为了新的编程接口</strong>。</p><p>当你可以直接说“帮我把这个 AB 实验的代码清理掉，保留 treatment 分支”，而 Agent 能够理解这句话的含义、分析代码库、执行重构、验证结果 —— Programming 这件事本身就被重新定义了。</p><h2 id="从-OOP-到-AOE-的演进"><a href="#从-OOP-到-AOE-的演进" class="headerlink" title="从 OOP 到 AOE 的演进"></a>从 OOP 到 AOE 的演进</h2><p>回顾软件工程的发展历程，我们经历了几次重大的范式转变：</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjIwM3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NjgzcHg7aGVpZ2h0OjIwM3B4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY4MyAyMDMiIHdpZHRoPSI2ODNweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBwb3AtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJwb3AiIGRhdGEtc291cmNlLWxpbmU9IjE0IiBpZD0iZW50MDAwMiI+PHJlY3QgZmlsbD0iI0IzRTVGQyIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iODkuOTk5NyIgeD0iNDcuNSIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzIuNDIyOSIgeD0iNTcuNSIgeT0iMzQuOTk1MSI+UE9QPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2OS45OTk3IiB4PSI1Ny41IiB5PSI1MS4yOTIiPiYjMzY4MDc7JiMzMTI0MzsmIzI0MzM1OyYjMzI1MzQ7JiMzMTI0Mzs8L3RleHQ+PC9nPjwhLS1lbnRpdHkgb29wLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0ib29wIiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iNTIuNTkzOCIgcng9IjcuNSIgcnk9IjcuNSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9Ijc1Ljk5OTgiIHg9IjE5NS41IiB5PSIxMiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzNC4wNjM1IiB4PSIyMDUuNSIgeT0iMzQuOTk1MSI+T09QPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS45OTk4IiB4PSIyMDUuNSIgeT0iNTEuMjkyIj4mIzM4NzU0OyYjMjE1MjE7JiMyMzU0NTsmIzM1OTM3OzwvdGV4dD48L2c+PCEtLWVudGl0eSBhb3AtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJhb3AiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGRTBCMiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNzUuOTk5OCIgeD0iMzYyLjUiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMyLjk5NzEiIHg9IjM3Mi41IiB5PSIzNC45OTUxIj5BT1A8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU1Ljk5OTgiIHg9IjM3Mi41IiB5PSI1MS4yOTIiPiYjMzg3NTQ7JiMyMTUyMTsmIzIwOTk5OyYjMzg3NTQ7PC90ZXh0PjwvZz48IS0tZW50aXR5IGFvZS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImFvZSIgZGF0YS1zb3VyY2UtbGluZT0iMTciIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRjhCQkQ5IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI3LjUiIHJ5PSI3LjUiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI4OS45OTk3IiB4PSI1MTAuNSIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzIuMjk5OCIgeD0iNTIwLjUiIHk9IjM0Ljk5NTEiPkFPRTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjkuOTk5NyIgeD0iNTIwLjUiIHk9IjUxLjI5MiI+JiMzODc1NDsmIzIxNTIxOyYjMjYyMzQ7JiMzMzAyMTsmIzIwMzA3OzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OOSIgZGF0YS1zb3VyY2UtbGluZT0iMjQiIGlkPSJlbnQwMDEwIj48cGF0aCBkPSJNMTEsMTI1LjU5IEwxMSwxODguOTg4NCBBMCwwIDAgMCAwIDExLDE4OC45ODg0IEwxMzYuMDAwMSwxODguOTg4NCBBMCwwIDAgMCAwIDEzNi4wMDAxLDE4OC45ODg0IEwxMzYuMDAwMSwxMzUuNTkgTDEyNi4wMDAxLDEyNS41OSBMODIuNTQsMTI1LjU5IEw4OC4zMyw2NC45NyBMNzQuNTQsMTI1LjU5IEwxMSwxMjUuNTkgQTAsMCAwIDAgMCAxMSwxMjUuNTkiIGZpbGw9IiNGRkZERTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNMTI2LjAwMDEsMTI1LjU5IEwxMjYuMDAwMSwxMzUuNTkgTDEzNi4wMDAxLDEzNS41OSBMMTI2LjAwMDEsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5Ljg1NjkiIHg9IjE3IiB5PSIxNDIuNjU2OSI+MTk3MHM8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjEyIiB4Mj0iMTM1LjAwMDEiIHkxPSIxNDUuNzIyOCIgeTI9IjE0NS43MjI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjE3IiB5PSIxNjEuNzg5NyI+JiMyNTM1MTsmIzIwMTk2OyYjMjQyMDc7JiMyMTAxNTs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwNC4wMDAxIiB4PSIxNyIgeT0iMTc2LjkyMjUiPiYjMjAxNTQ7JiMzMTg2NzsmIzMyNTM0OyYjMjA4ODk7JiMyNzU5OTsmIzI2NDY1OyYjMjUzNTE7JiMyMDE5Njs8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjEyIiBkYXRhLXNvdXJjZS1saW5lPSIzMSIgaWQ9ImVudDAwMTMiPjxwYXRoIGQ9Ik0xNzEsMTI1LjU5IEwxNzEsMTg4Ljk4ODQgQTAsMCAwIDAgMCAxNzEsMTg4Ljk4ODQgTDI5Ni4wMDAxLDE4OC45ODg0IEEwLDAgMCAwIDAgMjk2LjAwMDEsMTg4Ljk4ODQgTDI5Ni4wMDAxLDEzNS41OSBMMjg2LjAwMDEsMTI1LjU5IEwyMzcuNSwxMjUuNTkgTDIzMy41LDY0Ljk3IEwyMjkuNSwxMjUuNTkgTDE3MSwxMjUuNTkgQTAsMCAwIDAgMCAxNzEsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTI4Ni4wMDAxLDEyNS41OSBMMjg2LjAwMDEsMTM1LjU5IEwyOTYuMDAwMSwxMzUuNTkgTDI4Ni4wMDAxLDEyNS41OSIgZmlsbD0iI0ZGRkRFNyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzOS44NTY5IiB4PSIxNzciIHk9IjE0Mi42NTY5Ij4xOTkwczwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTcyIiB4Mj0iMjk1LjAwMDEiIHkxPSIxNDUuNzIyOCIgeTI9IjE0NS43MjI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjE3NyIgeT0iMTYxLjc4OTciPiYjMjM1NDU7JiMzNTkzNzsmIzIxMzI3OyYjMjAzMTY7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDQuMDAwMSIgeD0iMTc3IiB5PSIxNzYuOTIyNSI+JiMyMDE1NDsmIzMxODY3OyYjMzU3NzQ7JiMzNTc0NTsmIzIzNTQ1OyYjMzU5Mzc7JiMyMDEzMjsmIzIwMTE0OzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTUiIGRhdGEtc291cmNlLWxpbmU9IjM4IiBpZD0iZW50MDAxNiI+PHBhdGggZD0iTTMzMS41LDEyNS41OSBMMzMxLjUsMTg4Ljk4ODQgQTAsMCAwIDAgMCAzMzEuNSwxODguOTg4NCBMNDY5LjUwMDEsMTg4Ljk4ODQgQTAsMCAwIDAgMCA0NjkuNTAwMSwxODguOTg4NCBMNDY5LjUwMDEsMTM1LjU5IEw0NTkuNTAwMSwxMjUuNTkgTDQwNC41LDEyNS41OSBMNDAwLjUsNjQuOTcgTDM5Ni41LDEyNS41OSBMMzMxLjUsMTI1LjU5IEEwLDAgMCAwIDAgMzMxLjUsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTQ1OS41MDAxLDEyNS41OSBMNDU5LjUwMDEsMTM1LjU5IEw0NjkuNTAwMSwxMzUuNTkgTDQ1OS41MDAxLDEyNS41OSIgZmlsbD0iI0ZGRkRFNyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzOS44NTY5IiB4PSIzMzcuNSIgeT0iMTQyLjY1NjkiPjIwMDBzPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSIzMzIuNSIgeDI9IjQ2OC41MDAxIiB5MT0iMTQ1LjcyMjgiIHkyPSIxNDUuNzIyOCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2NS4wMDAxIiB4PSIzMzcuNSIgeT0iMTYxLjc4OTciPiYjMjA4NTE7JiMyNzg4MDsmIzI4ODU3OyYjMjA5OTg7JiMzMTE2Mzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjExNy4wMDAxIiB4PSIzMzcuNSIgeT0iMTc2LjkyMjUiPiYjMjAxNTQ7JiMzMTg2NzsmIzIzNDUwOyYjMjAwNDE7JiMyNzE3ODsmIzIwOTk5OyYjMjA4NTE7JiMyNzg4MDsmIzI4ODU3OzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTgiIGRhdGEtc291cmNlLWxpbmU9IjQ1IiBpZD0iZW50MDAxOSI+PHBhdGggZD0iTTUwNC41LDEyNS41OSBMNTA0LjUsMTg4Ljk4ODQgQTAsMCAwIDAgMCA1MDQuNSwxODguOTg4NCBMNjY4LjUwMDIsMTg4Ljk4ODQgQTAsMCAwIDAgMCA2NjguNTAwMiwxODguOTg4NCBMNjY4LjUwMDIsMTM1LjU5IEw2NTguNTAwMiwxMjUuNTkgTDU4Mi4yOCwxMjUuNTkgTDU2Mi4zLDY0Ljk3IEw1NzQuMjgsMTI1LjU5IEw1MDQuNSwxMjUuNTkgQTAsMCAwIDAgMCA1MDQuNSwxMjUuNTkiIGZpbGw9IiNGRkZERTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNNjU4LjUwMDIsMTI1LjU5IEw2NTguNTAwMiwxMzUuNTkgTDY2OC41MDAyLDEzNS41OSBMNjU4LjUwMDIsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5Ljg1NjkiIHg9IjUxMC41IiB5PSIxNDIuNjU2OSI+MjAyMHM8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjUwNS41IiB4Mj0iNjY3LjUwMDIiIHkxPSIxNDUuNzIyOCIgeTI9IjE0NS43MjI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjUxMC41IiB5PSIxNjEuNzg5NyI+JiMyMDE1NDsmIzI2NDI2OyYjMjEzMjc7JiMyMDMxNjs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0My4wMDAyIiB4PSI1MTAuNSIgeT0iMTc2LjkyMjUiPiYjMjAxNTQ7JiMzMTg2NzsmIzI5OTkyOyYjMzMyNTg7JiMyODk4MjsmIzM1ODIxOyYjMzUzMjg7JiMyMzQ1MDsmIzIwMDQxOyYjMzA0NDY7JiMyNjYzMTs8L3RleHQ+PC9nPjwhLS1saW5rIHBvcCB0byBvb3AtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMiIgZGF0YS1lbnRpdHktMj0iZW50MDAwMyIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjE5IiBpZD0ibG5rNiI+PHBhdGggZD0iTTEzNy44OSwzOC4yOSBDMTU2LjQxLDM4LjI5IDE3MS41OCwzOC4yOSAxODkuMjksMzguMjkiIGZpbGw9Im5vbmUiIGlkPSJwb3AtdG8tb29wIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxOTUuMjksMzguMjksMTg2LjI5LDM0LjI5LDE5MC4yOSwzOC4yOSwxODYuMjksNDIuMjksMTk1LjI5LDM4LjI5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQuMTMyMyIgeD0iMTY0LjUiIHk9IjMxLjM1NjkiPiYjMTYwOzwvdGV4dD48L2c+PCEtLWxpbmsgb29wIHRvIGFvcC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjAiIGlkPSJsbms3Ij48cGF0aCBkPSJNMjcxLjgxLDM4LjI5IEMyOTguODcsMzguMjkgMzI4Ljk5LDM4LjI5IDM1Ni4wOCwzOC4yOSIgZmlsbD0ibm9uZSIgaWQ9Im9vcC10by1hb3AiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM2Mi4wOCwzOC4yOSwzNTMuMDgsMzQuMjksMzU3LjA4LDM4LjI5LDM1My4wOCw0Mi4yOSwzNjIuMDgsMzguMjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNC4xMzIzIiB4PSIzMTUiIHk9IjMxLjM1NjkiPiYjMTYwOzwvdGV4dD48L2c+PCEtLWxpbmsgYW9wIHRvIGFvZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjEiIGlkPSJsbms4Ij48cGF0aCBkPSJNNDM4LjgxLDM4LjI5IEM0NjAuNDIsMzguMjkgNDgxLjU0LDM4LjI5IDUwNC4xOSwzOC4yOSIgZmlsbD0ibm9uZSIgaWQ9ImFvcC10by1hb2UiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjUxMC4xOSwzOC4yOSw1MDEuMTksMzQuMjksNTA1LjE5LDM4LjI5LDUwMS4xOSw0Mi4yOSw1MTAuMTksMzguMjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNC4xMzIzIiB4PSI0NzIuNSIgeT0iMzEuMzU2OSI+JiMxNjA7PC90ZXh0PjwvZz48P3BsYW50dW1sLXNyYyBWUDVGSnppbTVDM2xfWEhVVXVqS2dISm5mcGpDOFlLdjBrQXlZdzZjWktaam9aTlFPSzkyUjkxRXN6Snpxb09zYTVRNEs4SDRBdUk0cjlIa05vUEVpY3lubm9hWDBNcy1zN3YtbHp6eFVOZDJjeFk1T1RqNjVXNlRST2txNEtDams4NHNqbmtDeGYxd1pUZ0ttSFREWS1GQ1VucmxlSHNSY3ZKbTVJSnY5TU9YNnNHSTZEeGFZM0hpMzV5MkFEVHd1Yzg0Q3BXcGZxOHdQTk5DNGR6bkxZc21jdEtHb2t6bV9LNF9IVENxYnVzNUVGLS1LYTdKcmJSTkRFcXZZTnV4ZVZqTXRGUjJzd19vSzgyZTB6a3EzT2x3aDM1ZHJsQkNRaUJ5RUphTDdwd0F1SVl3d1lrMG5hMWpxUFlsTFZGMEtXeGVFbEFXMDFHM2ZjY0t6U2YzbUJXN1dZQ2xVWk5uOXYtZDM5UkNlZ3VsTG02OE1vbW5nejdhZk1VZ181RE9BMDJRWlFBeEFDZjdTSDg1UWNPUmI3RlFXZEdoX2NXdmx2ZGdHaGFaenY5U1NXbFVFVnh1SjdXenFWcWNoeHhkWExUWkVJYm5VMUdDVXk1OUZxYTBjREpMRnRYYWZMRGhETWpEOVlWVXpfcDlTTWdEMWgtWUdKenZ5aHFwdF9scVJvaklyYWd2ZEJDVU4wVk5SaFdfNGp0M3k3b1NZaU5Xa3B6dzR4V05TbHZmcGxfU01CYWhNUlNxMVNUVXNoNmNKSVZubk9zU1lfM3JKSkl5WkRvemY1QnVPbjN5VDNHakJWNE4/PjwvZz48L3N2Zz4='><p>每一次范式的转变，都伴随着人机交互方式的升级：</p><table><thead><tr><th>范式</th><th>人类职责</th><th>交互方式</th></tr></thead><tbody><tr><td>POP</td><td>编写每一条指令</td><td>代码</td></tr><tr><td>OOP</td><td>设计对象和交互</td><td>代码</td></tr><tr><td>AOP</td><td>定义横切关注点</td><td>代码 + 配置</td></tr><tr><td><strong>AOE</strong></td><td><strong>定义目标和约束</strong></td><td><strong>自然语言</strong></td></tr></tbody></table><blockquote><p>那人类工程师到底做什么？</p></blockquote><p>简单来说：<strong>定义问题，而非解决问题</strong>。</p><p>我们的工作从“写代码解决问题”转变为“清晰地描述问题让 Agent 去解决”。这听起来简单，实际上对工程师的要求更高了 —— 你需要更深刻地理解问题本质，更精准地描述约束条件，更全面地考虑边界情况。</p><p>代码可以模糊，编译器会报错。但自然语言的模糊，会导致 Agent 走向完全错误的方向。<strong>清晰表达的能力，成为了新时代工程师的核心竞争力。</strong></p><h2 id="什么是-Agent？"><a href="#什么是-Agent？" class="headerlink" title="什么是 Agent？"></a>什么是 Agent？</h2><p>在讨论 Agent-Oriented Engineering 之前，我们需要先明确什么是 Agent。简单来说，Agent 是一个能够<strong>感知环境、做出决策并采取行动</strong>的自主实体。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjUyMXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6Mzg2cHg7aGVpZ2h0OjUyMXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM4NiA1MjEiIHdpZHRoPSIzODZweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgYWdlbnQtLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iYWdlbnQiIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0U4RUFGNiIgaGVpZ2h0PSI0OTUuMzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjIzMyIgeD0iMTIiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ3LjAxMDciIHg9IjEwNC45OTQ2IiB5PSIyNi45OTUxIj5BZ2VudDwvdGV4dD48L2c+PCEtLWVudGl0eSBnb2FsLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iYWdlbnQuZ29hbCIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjgwLjcxNjYiIHg9IjI3LjY0IiB5PSI2NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzNS4zNTU1IiB4PSIzNy42NCIgeT0iODguOTk1MSI+R29hbDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjAuNzE2NiIgeD0iMzcuNjQiIHk9IjEwNS4yOTIiPiYjMzA0NDY7JiMyNjYzMTsvJiMyNDg0NzsmIzIyMjcwOzwvdGV4dD48L2c+PCEtLWVudGl0eSBwZXJjZWl2ZS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImFnZW50LnBlcmNlaXZlIiBkYXRhLXNvdXJjZS1saW5lPSIyMyIgaWQ9ImVudDAwMDUiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iODcuODc0IiB4PSIxNDEuMDYiIHk9IjE3OS42Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjY3Ljg3NCIgeD0iMTUxLjA2IiB5PSIyMDIuNTk1MSI+UGVyY2VpdmU8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI3Ljk5OTkiIHg9IjE1MS4wNiIgeT0iMjE4Ljg5MiI+JiMyNDg2MzsmIzMwNjkzOzwvdGV4dD48L2c+PCEtLWVudGl0eSByZWFzb24tLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJhZ2VudC5yZWFzb24iIGRhdGEtc291cmNlLWxpbmU9IjI0IiBpZD0iZW50MDAwNiI+PHJlY3QgZmlsbD0iI0ZGRjlDNCIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3Ny42NDA2IiB4PSIyOC4xOCIgeT0iMTc5LjYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTcuNjQwNiIgeD0iMzguMTgiIHk9IjIwMi41OTUxIj5SZWFzb248L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU1Ljk5OTgiIHg9IjM4LjE4IiB5PSIyMTguODkyIj4mIzI1NTEyOyYjMjk3MDI7JiMyMDkxNTsmIzMxNTc0OzwvdGV4dD48L2c+PCEtLWVudGl0eSBhY3QtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJhZ2VudC5hY3QiIGRhdGEtc291cmNlLWxpbmU9IjI1IiBpZD0iZW50MDAwNyI+PHJlY3QgZmlsbD0iI0ZGQ0NCQyIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSIyOCIgeT0iMzA5LjE5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI1LjgyNjIiIHg9IjM4IiB5PSIzMzIuMTg1MSI+QWN0PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS45OTk4IiB4PSIzOCIgeT0iMzQ4LjQ4MiI+JiMzNzMxOTsmIzIxNDYyOyYjMzQ4OTI7JiMyMTE2MDs8L3RleHQ+PC9nPjwhLS1lbnRpdHkgbGVhcm4tLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJhZ2VudC5sZWFybiIgZGF0YS1zb3VyY2UtbGluZT0iMjYiIGlkPSJlbnQwMDA4Ij48cmVjdCBmaWxsPSIjRTFCRUU3IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9Ijc1Ljk5OTgiIHg9IjEzNiIgeT0iNDM4Ljc5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ0LjczNDQiIHg9IjE0NiIgeT0iNDYxLjc4NTEiPkxlYXJuPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NS45OTk4IiB4PSIxNDYiIHk9IjQ3OC4wODIiPiYjMjMzOTg7JiMyMDA2NDsmIzI1OTEzOyYjMzY4Mjc7PC90ZXh0PjwvZz48IS0tZW50aXR5IGVudi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVudiIgZGF0YS1zb3VyY2UtbGluZT0iMTkiIGlkPSJlbnQwMDAyIj48cmVjdCBmaWxsPSIjRTBFMEUwIiBoZWlnaHQ9IjM4LjU5MzgiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6I0ZGOEYwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMDkuNzAxMiIgeD0iMjYzLjE1IiB5PSIzMTYuMTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODkuNzAxMiIgeD0iMjczLjE1IiB5PSIzMzIuMTg1MSI+RW52aXJvbm1lbnQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI3Ljk5OTkiIHg9IjI3My4xNSIgeT0iMzQ4LjQ4MiI+JiMyOTYxNTsmIzIyNjU5OzwvdGV4dD48L2c+PCEtLWxpbmsgZ29hbCB0byByZWFzb24tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwNiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI4IiBpZD0ibG5rOSI+PHBhdGggZD0iTTY3Ljc3LDExOC45IEM2Ny42MSwxMzcuMDUgNjcuNDQzLDE1NS4yOTAyIDY3LjI4MywxNzMuNDEwMiIgZmlsbD0ibm9uZSIgaWQ9ImdvYWwtdG8tcmVhc29uIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI2Ny4yMywxNzkuNDEsNzEuMzA5MywxNzAuNDQ1Nyw2Ny4yNzQxLDE3NC40MTAyLDYzLjMwOTYsMTcwLjM3NSw2Ny4yMywxNzkuNDEiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgcGVyY2VpdmUgdG8gcmVhc29uLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyOSIgaWQ9ImxuazEwIj48cGF0aCBkPSJNMTQwLjY2LDIwNS45IEMxMjkuMTcsMjA1LjkgMTIzLjY3LDIwNS45IDExMi4xOCwyMDUuOSIgZmlsbD0ibm9uZSIgaWQ9InBlcmNlaXZlLXRvLXJlYXNvbiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMTA2LjE4LDIwNS45LDExNS4xOCwyMDkuOSwxMTEuMTgsMjA1LjksMTE1LjE4LDIwMS45LDEwNi4xOCwyMDUuOSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayByZWFzb24gdG8gYWN0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDYiIGRhdGEtZW50aXR5LTI9ImVudDAwMDciIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzMCIgaWQ9ImxuazExIj48cGF0aCBkPSJNNjYuOCwyMzIuNDEgQzY2LjYzLDI1NC42NiA2Ni40MTU5LDI4MC43ODAyIDY2LjI0NTksMzAzLjAyMDIiIGZpbGw9Im5vbmUiIGlkPSJyZWFzb24tdG8tYWN0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI2Ni4yLDMwOS4wMiw3MC4yNjg3LDMwMC4wNTA4LDY2LjIzODIsMzA0LjAyMDEsNjIuMjY4OSwyOTkuOTg5Nyw2Ni4yLDMwOS4wMiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhY3QgdG8gbGVhcm4tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNyIgZGF0YS1lbnRpdHktMj0iZW50MDAwOCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjMxIiBpZD0ibG5rMTIiPjxwYXRoIGQ9Ik04Ny42LDM2MiBDMTA2LjQzLDM4NC4yNiAxMjkuNzQ0Miw0MTEuNzg5OCAxNDguNTY0Miw0MzQuMDI5OCIgZmlsbD0ibm9uZSIgaWQ9ImFjdC10by1sZWFybiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMTUyLjQ0LDQzOC42MSwxNDkuNjc5Nyw0MjkuMTU1OSwxNDkuMjEwMSw0MzQuNzkzMiwxNDMuNTcyOCw0MzQuMzIzNiwxNTIuNDQsNDM4LjYxIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1yZXZlcnNlIGxpbmsgcmVhc29uIHRvIGxlYXJuLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDYiIGRhdGEtZW50aXR5LTI9ImVudDAwMDgiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzMiIgaWQ9ImxuazE0Ij48cGF0aCBkPSJNMTExLjE5NzcsMjI5LjA5NTYgQzEzMi41Njc3LDI0MC41NTU2IDE1MC43LDI1MS45NiAxNTcsMjYyLjE5IEMxOTEuMDMsMzE3LjQ1IDE4NC44NCwzOTcuOTMgMTc4LjczLDQzOC41NyIgZmlsbD0ibm9uZSIgaWQ9InJlYXNvbi1iYWNrdG8tbGVhcm4iIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjEwNS45MSwyMjYuMjYsMTExLjk1MTEsMjM0LjAzODUsMTEwLjMxNjQsMjI4LjYyMywxMTUuNzMxOSwyMjYuOTg4MywxMDUuOTEsMjI2LjI2IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjE4NCIgeT0iMzQwLjA1NjkiPiYjMjAyNDg7JiMyMTI3MDsmIzMxNTc0OyYjMzAwNTM7PC90ZXh0PjwvZz48IS0tbGluayBlbnYgdG8gcGVyY2VpdmUtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMiIgZGF0YS1lbnRpdHktMj0iZW50MDAwNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM1IiBpZD0ibG5rMTUiPjxwYXRoIGQ9Ik0yOTguNzcsMzE2LjA0IEMyNzUuODMsMjk0LjA0IDI0MS42OTk5LDI2MS4yOTM1IDIxNS45MTk5LDIzNi41NjM1IiBmaWxsPSJub25lIiBpZD0iZW52LXRvLXBlcmNlaXZlIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyMTEuNTksMjMyLjQxLDIxNS4zMTU4LDI0MS41MjY5LDIxNS4xOTgzLDIzNS44NzEzLDIyMC44NTM5LDIzNS43NTM3LDIxMS41OSwyMzIuNDEiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjYiIHg9IjI2MCIgeT0iMjc1LjI1NjkiPiYjMzY3NTU7JiMyMDgzNzs8L3RleHQ+PC9nPjwhLS1saW5rIGFjdCB0byBlbnYtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNyIgZGF0YS1lbnRpdHktMj0iZW50MDAwMiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM2IiBpZD0ibG5rMTYiPjxwYXRoIGQ9Ik04MS41MywzMDguOTkgQzkxLjA0LDI5NS41MSAxMDQuNTQsMjgwLjQzIDEyMSwyNzIuOTkgQzE4MC4zNCwyNDYuMTcgMjQ5LjY2NjYsMjg1LjMxOCAyODcuODQ2NiwzMTIuNDA4IiBmaWxsPSJub25lIiBpZD0iYWN0LXRvLWVudiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjkyLjc0LDMxNS44OCwyODcuNzE0NiwzMDcuNDA5NywyODguNjYyMiwzMTIuOTg2NywyODMuMDg1MywzMTMuOTM0MiwyOTIuNzQsMzE1Ljg4IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI2IiB4PSIxMjIiIHk9IjI3NS4yNTY5Ij4mIzM2NzU1OyYjMjA5ODY7PC90ZXh0PjwvZz48IS0tbGluayBlbnYgdG8gbGVhcm4tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMiIgZGF0YS1lbnRpdHktMj0iZW50MDAwOCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM3IiBpZD0ibG5rMTciPjxwYXRoIGQ9Ik0yOTcuMDYsMzU1LjA0IEMyNzIuMjYsMzc3LjAyIDIzNS4yODA0LDQwOS43ODA1IDIwNy40MjA0LDQzNC40NzA1IiBmaWxsPSJub25lIiBpZD0iZW52LXRvLWxlYXJuIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWRhc2hhcnJheTo3LDc7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyMDIuOTMsNDM4LjQ1LDIxMi4zMTg2LDQzNS40NzQ0LDIwNi42NzIsNDM1LjEzMzgsMjA3LjAxMjYsNDI5LjQ4NzIsMjAyLjkzLDQzOC40NSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2Mi42MTk2IiB4PSIyNTUiIHk9IjQwNC44NTY5Ij5GZWVkYmFjazwvdGV4dD48L2c+PD9wbGFudHVtbC1zcmMgVFBGRkpqajA0Q1JsVmVmalNoQ0tJREcyV0dESXg3ZnhnUWdBU28tQkZKV01wY3dxTVM4MXpMSEFmMGYxZlBPOEFHVi1JNDVTVzBDZGdlZy0zOHhKai1aa3MwYjlCTXA5WC0tUnR5bXRrXzhock9HTWE3UkM4Y3ZyallGVVBmQXJvMlJwanFDZlRkWldZYlg4aWprQzVDcHUwTW9uZExYSG1USzdmbGM2WjVYaXBISDh5MU5aT0duYXBvQndzU1h3SUd3SXJBaE12emJRNVc5TlVQdHB0LTJvTF9TUVQzZHBYMG4wdmxmaGtiSHBia09SLUttNkJfTVhiRFF6TWg2RmJjYUwwbzVUeWRXdGFlQXRUQUhGRjNzd0lvd19iMFpoNEUxVDdRUGdOaWp3dGd2YXNtcUp0eFFuQWJpYjN2cjdjSWotOXJYaXN4aHB1N1BxdGJpU3hIeWRXcVQ0Ry1zR2lrRXl6UVhKdjN3MnoyN2dXYzU3LXNWZnNIMlhUWXdKaWJsdGJqdEw4aFcxaDJDdU9hVk53VlUzdkUwLWxVYVpCRDcyZXJicnRuSkhYZ3lDenhWTkl1eHh1dWwzdkRqcmpnSWwzRUl3WmJrNHRXRUpFMnd2a05md0UxX3pWMVpfNkkwTTZxVVZKU3RubDFLNHlPRHhMbUFub29saFVJSktmd2pMUDFHc3JSb1BIdnpXRVg3QTlqYjRtdDZlUGVDaENNbXpUbzVodkVkdFFOQk9ydVVIZFdwRF9QaVJkaXdRSmJ5WnV5U1ZvVFVYWFJxZGpnZERkRHVsMTFTTXllYlFmVzIxLU83LTBHMDA/PjwvZz48L3N2Zz4='><p>与传统的函数或服务不同，Agent 具有以下特征：</p><table><thead><tr><th>特征</th><th>传统函数&#x2F;服务</th><th>Agent</th></tr></thead><tbody><tr><td>自主性</td><td>被动调用，严格按指令执行</td><td>主动决策，自主规划路径</td></tr><tr><td>目标导向</td><td>执行固定逻辑</td><td>为达成目标灵活调整策略</td></tr><tr><td>环境感知</td><td>只处理输入参数</td><td>感知上下文并据此调整</td></tr><tr><td>持续学习</td><td>逻辑固定不变</td><td>从经验中改进</td></tr></tbody></table><h2 id="Agent-的核心组件"><a href="#Agent-的核心组件" class="headerlink" title="Agent 的核心组件"></a>Agent 的核心组件</h2><p>一个完整的 Agent 系统通常包含以下核心组件：</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjI2MHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6Njc2cHg7aGVpZ2h0OjI2MHB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY3NiAyNjAiIHdpZHRoPSI2NzZweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgQWdlbnQgU3lzdGVtLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbSIgZGF0YS1zb3VyY2UtbGluZT0iMTUiIGlkPSJlbnQwMDAyIj48cGF0aCBkPSJNMTMuNSwxMSBMMTE2LjgzMDYsMTEgQTMuNzUsMy43NSAwIDAgMSAxMTkuMzMwNiwxMy41IEwxMjYuMzMwNiwzMi4xMzI4IEw2NTguNSwzMi4xMzI4IEEyLjUsMi41IDAgMCAxIDY2MSwzNC42MzI4IEw2NjEsMjQzLjAzIEEyLjUsMi41IDAgMCAxIDY1OC41LDI0NS41MyBMMTMuNSwyNDUuNTMgQTIuNSwyLjUgMCAwIDEgMTEsMjQzLjAzIEwxMSwxMy41IEEyLjUsMi41IDAgMCAxIDEzLjUsMTEiIGZpbGw9IiNGQUZBRkEiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTEiIHgyPSIxMjYuMzMwNiIgeTE9IjMyLjEzMjgiIHkyPSIzMi4xMzI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMi4zMzA2IiB4PSIxNSIgeT0iMjUuMDY2OSI+QWdlbnQgU3lzdGVtPC90ZXh0PjwvZz48IS0tY2x1c3RlciBUb29sIEJveC0tPjxnIGNsYXNzPSJjbHVzdGVyIiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0uVG9vbCBCb3giIGRhdGEtc291cmNlLWxpbmU9IjI3IiBpZD0iZW50MDAxNCI+PHBhdGggZD0iTTE4Ni41LDEyMS4yNiBMMjUwLjQzNywxMjEuMjYgQTMuNzUsMy43NSAwIDAgMSAyNTIuOTM3LDEyMy43NiBMMjU5LjkzNywxNDIuMzkyOCBMNjM0LjUsMTQyLjM5MjggQTIuNSwyLjUgMCAwIDEgNjM3LDE0NC44OTI4IEw2MzcsMjE5LjAzIEEyLjUsMi41IDAgMCAxIDYzNC41LDIyMS41MyBMMTg2LjUsMjIxLjUzIEEyLjUsMi41IDAgMCAxIDE4NCwyMTkuMDMgTDE4NCwxMjMuNzYgQTIuNSwyLjUgMCAwIDEgMTg2LjUsMTIxLjI2IiBmaWxsPSIjRTNGMkZEIiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE4NCIgeDI9IjI1OS45MzciIHkxPSIxNDIuMzkyOCIgeTI9IjE0Mi4zOTI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjYyLjkzNyIgeD0iMTg4IiB5PSIxMzUuMzI2OSI+VG9vbCBCb3g8L3RleHQ+PC9nPjwhLS1lbnRpdHkgcGVyY2VwdGlvbi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbS5wZXJjZXB0aW9uIiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iNTAuMjY1NiIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTQ0LjcyNTEiIHg9IjI2LjY0IiB5PSI0NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjQuNzI1MSIgeD0iMzYuNjQiIHk9IjY3LjA2NjkiPlBlcmNlcHRpb24gTGF5ZXI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5IiB4PSIzNi42NCIgeT0iODIuMTk5NyI+JiMyNDg2MzsmIzMwNjkzOyYjMjM2MTg7PC90ZXh0PjwvZz48IS0tZW50aXR5IHJlYXNvbmluZy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbS5yZWFzb25pbmciIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGRjlDNCIgaGVpZ2h0PSI1MC4yNjU2IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxNTEuMDM0NyIgeD0iMjA2LjQ4IiB5PSI0NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMzEuMDM0NyIgeD0iMjE2LjQ4IiB5PSI2Ny4wNjY5Ij5SZWFzb25pbmcgRW5naW5lPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1Mi4wMDAxIiB4PSIyMTYuNDgiIHk9IjgyLjE5OTciPiYjMjU1MTI7JiMyOTcwMjsmIzI0MzQxOyYjMjU4MDY7PC90ZXh0PjwvZz48IS0tZW50aXR5IGFjdGlvbi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbS5hY3Rpb24iIGRhdGEtc291cmNlLWxpbmU9IjE4IiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0ZGQ0NCQyIgaGVpZ2h0PSI1MC4yNjU2IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMzUuNzQ5NSIgeD0iMzkyLjEzIiB5PSI0NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTUuNzQ5NSIgeD0iNDAyLjEzIiB5PSI2Ny4wNjY5Ij5BY3Rpb24gRXhlY3V0b3I8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjY1LjAwMDEiIHg9IjQwMi4xMyIgeT0iODIuMTk5NyI+JiMzNDg5MjsmIzIxMTYwOyYjMjUxOTE7JiMzNDg5MjsmIzIyMTIwOzwvdGV4dD48L2c+PCEtLWVudGl0eSBtZW1vcnktLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0ubWVtb3J5IiBkYXRhLXNvdXJjZS1saW5lPSIxOSIgaWQ9ImVudDAwMDYiPjxyZWN0IGZpbGw9IiNFMUJFRTciIGhlaWdodD0iNTAuMjY1NiIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTM3Ljc5MzUiIHg9IjI3LjEiIHk9IjE1NS4yNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTcuNzkzNSIgeD0iMzcuMSIgeT0iMTc3LjMyNjkiPk1lbW9yeSBTeXN0ZW08L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjM3LjEiIHk9IjE5Mi40NTk3Ij4mIzM1NzYwOyYjMjQ1MTg7JiMzMTk5NTsmIzMyNDc5OzwvdGV4dD48L2c+PCEtLWVudGl0eSBzZWFyY2gtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0uVG9vbCBCb3guc2VhcmNoIiBkYXRhLXNvdXJjZS1saW5lPSIyOCIgaWQ9ImVudDAwMTUiPjxyZWN0IGZpbGw9IiNCQkRFRkIiIGhlaWdodD0iMzUuMTMyOCIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNjQuOTQ3OCIgeD0iMTk5LjUzIiB5PSIxNjIuODMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDQuOTQ3OCIgeD0iMjA5LjUzIiB5PSIxODQuODk2OSI+U2VhcmNoPC90ZXh0PjwvZz48IS0tZW50aXR5IGNvZGUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0uVG9vbCBCb3guY29kZSIgZGF0YS1zb3VyY2UtbGluZT0iMjkiIGlkPSJlbnQwMDE2Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjUwLjI2NTYiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjU4LjQ3MzEiIHg9IjI5OS43NiIgeT0iMTU1LjI2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMzLjI4MDgiIHg9IjMwOS43NiIgeT0iMTc3LjMyNjkiPkNvZGU8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM4LjQ3MzEiIHg9IjMwOS43NiIgeT0iMTkyLjQ1OTciPkVkaXRvcjwvdGV4dD48L2c+PCEtLWVudGl0eSBmaWxlLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQWdlbnQgU3lzdGVtLlRvb2wgQm94LmZpbGUiIGRhdGEtc291cmNlLWxpbmU9IjMwIiBpZD0iZW50MDAxNyI+PHJlY3QgZmlsbD0iI0JCREVGQiIgaGVpZ2h0PSI1MC4yNjU2IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI2OC40NzcxIiB4PSIzOTIuNzYiIHk9IjE1NS4yNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMi42OTkyIiB4PSI0MDIuNzYiIHk9IjE3Ny4zMjY5Ij5GaWxlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC40NzcxIiB4PSI0MDIuNzYiIHk9IjE5Mi40NTk3Ij5TeXN0ZW08L3RleHQ+PC9nPjwhLS1lbnRpdHkgYXBpLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQWdlbnQgU3lzdGVtLlRvb2wgQm94LmFwaSIgZGF0YS1zb3VyY2UtbGluZT0iMzEiIGlkPSJlbnQwMDE4Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjUwLjI2NTYiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjU3LjYzNTMiIHg9IjQ5Ni4xOCIgeT0iMTU1LjI2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwLjU2NjQiIHg9IjUwNi4xOCIgeT0iMTc3LjMyNjkiPkFQSTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzcuNjM1MyIgeD0iNTA2LjE4IiB5PSIxOTIuNDU5NyI+Q2xpZW50PC90ZXh0PjwvZz48IS0tZW50aXR5IG1vcmUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0uVG9vbCBCb3gubW9yZSIgZGF0YS1zb3VyY2UtbGluZT0iMzIiIGlkPSJlbnQwMDE5Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjM1LjEzMjgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjMyLjM5NyIgeD0iNTg4LjgiIHk9IjE2Mi44MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMi4zOTciIHg9IjU5OC44IiB5PSIxODQuODk2OSI+Li4uPC90ZXh0PjwvZz48IS0tbGluayBwZXJjZXB0aW9uIHRvIHJlYXNvbmluZy0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjEiIGlkPSJsbms3Ij48cGF0aCBkPSJNMTcxLjU2LDcwLjEzIEMxODMuMDYsNzAuMTMgMTg4LjU3LDcwLjEzIDIwMC4wNyw3MC4xMyIgZmlsbD0ibm9uZSIgaWQ9InBlcmNlcHRpb24tdG8tcmVhc29uaW5nIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyMDYuMDcsNzAuMTMsMTk3LjA3LDY2LjEzLDIwMS4wNyw3MC4xMywxOTcuMDcsNzQuMTMsMjA2LjA3LDcwLjEzIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIHJlYXNvbmluZyB0byBhY3Rpb24tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIyIiBpZD0ibG5rOCI+PHBhdGggZD0iTTM1Ny43OSw3MC4xMyBDMzY5LjEsNzAuMTMgMzc0LjQxLDcwLjEzIDM4NS43Myw3MC4xMyIgZmlsbD0ibm9uZSIgaWQ9InJlYXNvbmluZy10by1hY3Rpb24iIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM5MS43Myw3MC4xMywzODIuNzMsNjYuMTMsMzg2LjczLDcwLjEzLDM4Mi43Myw3NC4xMywzOTEuNzMsNzAuMTMiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgYWN0aW9uIHRvIG1lbW9yeS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjMiIGlkPSJsbms5Ij48cGF0aCBkPSJNMzkyLjA2LDkxLjYgQzM4Ni4zMiw5Mi45NyAzODAuNTgsOTQuMjIgMzc1LDk1LjI2IEMyOTEuMTksMTEwLjk3IDI2My41Miw4Mi40OSAxODQsMTEzLjI2IEMxNjAuMTIsMTIyLjUxIDE0MS42MDA3LDEzNi4xODg0IDEyNS4xMTA3LDE1MC45NDg0IiBmaWxsPSJub25lIiBpZD0iYWN0aW9uLXRvLW1lbW9yeSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMTIwLjY0LDE1NC45NSwxMzAuMDEzOCwxNTEuOTI4LDEyNC4zNjU2LDE1MS42MTUzLDEyNC42NzgyLDE0NS45NjcxLDEyMC42NCwxNTQuOTUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLXJldmVyc2UgbGluayByZWFzb25pbmcgdG8gbWVtb3J5LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNCIgaWQ9ImxuazExIj48cGF0aCBkPSJNMjEzLjIzLDk4LjE3NTcgQzIwMS40NSwxMDMuNDg1NyAxOTQuOSwxMDYuOTUgMTg0LDExMy4yNiBDMTYzLjE3LDEyNS4zNCAxNDEuNTIsMTQxLjU1IDEyNC45MSwxNTQuOSIgZmlsbD0ibm9uZSIgaWQ9InJlYXNvbmluZy1iYWNrdG8tbWVtb3J5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyMTguNyw5NS43MSwyMDguODUxMyw5NS43NjE5LDIxNC4xNDE3LDk3Ljc2NDcsMjEyLjEzODgsMTAzLjA1NTEsMjE4LjcsOTUuNzEiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLXJldmVyc2UgbGluayBwZXJjZXB0aW9uIHRvIG1lbW9yeS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjUiIGlkPSJsbmsxMyI+PHBhdGggZD0iTTk4LjE1NDEsMTAxLjY5NzcgQzk3LjY2NDEsMTE5LjQxNzcgOTcuMTcsMTM3LjIzIDk2LjY4LDE1NC45MyIgZmlsbD0ibm9uZSIgaWQ9InBlcmNlcHRpb24tYmFja3RvLW1lbW9yeSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iOTguMzIsOTUuNyw5NC4wNzI4LDEwNC41ODYsOTguMTgxOCwxMDAuNjk4MSwxMDIuMDY5NywxMDQuODA3MSw5OC4zMiw5NS43IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGFjdGlvbiB0byBzZWFyY2gtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNSIgZGF0YS1lbnRpdHktMj0iZW50MDAxNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM1IiBpZD0ibG5rMjAiPjxwYXRoIGQ9Ik0zOTEuOTQsOTEuMDEgQzM4Ni4yMiw5Mi41MSAzODAuNTIsOTMuOTUgMzc1LDk1LjI2IEMzMzQuMDUsMTA1LjAyIDMxNy43Myw5MSAyODIsMTEzLjI2IEMyNjIuOTQsMTI1LjE0IDI1MS40MTg1LDE0MS44MzAxIDI0My4wNjg1LDE1Ny4xNzAxIiBmaWxsPSJub25lIiBpZD0iYWN0aW9uLXRvLXNlYXJjaCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjQwLjIsMTYyLjQ0LDI0OC4wMTYxLDE1Ni40NDc2LDI0Mi41OTA0LDE1OC4wNDg0LDI0MC45ODk2LDE1Mi42MjI4LDI0MC4yLDE2Mi40NCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhY3Rpb24gdG8gY29kZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDE2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzYiIGlkPSJsbmsyMSI+PHBhdGggZD0iTTQwMC44Nyw5NS41NiBDMzkxLjcxLDEwMC42OSAzODIuNzMsMTA2LjYgMzc1LDExMy4yNiBDMzYxLjU1LDEyNC44NiAzNTMuMTk4NiwxMzYuMDggMzQ1LjA5ODYsMTQ5LjYzIiBmaWxsPSJub25lIiBpZD0iYWN0aW9uLXRvLWNvZGUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM0Mi4wMiwxNTQuNzgsMzUwLjA3MTIsMTQ5LjEwNzQsMzQ0LjU4NTUsMTUwLjQ4ODMsMzQzLjIwNDYsMTQ1LjAwMjYsMzQyLjAyLDE1NC43OCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhY3Rpb24gdG8gZmlsZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDE3IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzciIGlkPSJsbmsyMiI+PHBhdGggZD0iTTQ1Mi41MSw5NS43IEM0NDcuMTEsMTEzLjQyIDQ0MS41OTc5LDEzMS40OTAyIDQzNi4yMDc5LDE0OS4xOTAyIiBmaWxsPSJub25lIiBpZD0iYWN0aW9uLXRvLWZpbGUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjQzNC40NiwxNTQuOTMsNDQwLjkwODMsMTQ3LjQ4NTYsNDM1LjkxNjYsMTUwLjE0NjksNDMzLjI1NTMsMTQ1LjE1NTEsNDM0LjQ2LDE1NC45MyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhY3Rpb24gdG8gYXBpLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMTgiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzOCIgaWQ9ImxuazIzIj48cGF0aCBkPSJNNDc0Ljc1LDk1LjcgQzQ4NS4zOSwxMTMuNDIgNDk2LjU5MDksMTMyLjA4NjMgNTA3LjIyMDksMTQ5Ljc4NjMiIGZpbGw9Im5vbmUiIGlkPSJhY3Rpb24tdG8tYXBpIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI1MTAuMzEsMTU0LjkzLDUwOS4xMDU1LDE0NS4xNTUxLDUwNy43MzU3LDE1MC42NDM2LDUwMi4yNDcyLDE0OS4yNzM5LDUxMC4zMSwxNTQuOTMiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PD9wbGFudHVtbC1zcmMgVkw5MVl6RDA1QnhkTHVwOWhUMzJraEJrTmVHYWNtNTFQVGJ3eDZMQ05qRFg5cERYQ2NNdElZeVkydWVpV2RabUwzbzhGT2RZU0dMX0pMal9YZkVQUDFGUnEwYzR1TnRWLXp4dHRmanhRVzhQZTltSG9mdFlXbEFTSTlBWDVvSS1JQU1PeVlHS0o0WHFFUTRBTWRXMk9wOWIyV2trZFg2VHhxakFNM1MtZjJ5MTdIbXdCSkpOd1lHNXpDZjEtV0hSakpwaWJ2XzVYNG4wTGw0WlN2bnZNcWYyaDBYRk1JcnNSZEthMXVjRUlzZlRvX0xKdTBlRFB1TTJwQXRPSlJSUnd2czFaMjVOTDczcVhDbjB6ZGVabGR3cHMyby1oZHctVFg0ZktEdW1sRjB1RVdmRlRiTkVXSEkyS3Z3WVlBVUtXcjZ2TU11LU5Bei1WcmZfbDM1MnlleGFPT25GbVdVeEVkdml3YUhONDQtTEM2Ui1WZGNfVWhUU2xfck1OWnVsWkhBbkQycUpYYTZ1QV9DS0NZNWRMVGo2dkZrRnJQX2hwUV9ScFV0MkE2SU11S0s3R0hHekQwaGNyc2dzQnNhd0tWcjdaVS1nS0R0NTdTN1FDTVpiaDktOEl3dUhNeU9XTFNOLURELUhoMjQ2dXJBa3lUM29MSV9xa0gxQ0Z2MGhMdGlfbkZWblFSTktoSGFDV1NYdU9iZWpwMUx2R04wUXVRMkI3OGU0SFpuQWcxd3ZJT2JyTzV5MmZhbWRyQXpBOXVuck81LTJWX1B1bjRENnpNRXEyeXBmRmxmV0NCMVI0bDlfc05hcGFRcjlzb3d4YUJBUGhkWmZrSWtrbEpkcFZtMDA/PjwvZz48L3N2Zz4='><p><strong>Perception Layer（感知层）</strong> —— Agent 的“眼睛和耳朵”，从环境中获取信息：用户意图、系统状态、外部事件。</p><p><strong>Reasoning Engine（推理引擎）</strong> —— Agent 的“大脑”，根据感知到的信息做出决策。这是 AOE 与传统编程最大的区别 —— 决策逻辑不再是硬编码的 if-else，而是基于目标和上下文的动态推理。</p><p><strong>Action Executor（行动执行器）</strong> —— Agent 的“手”，将决策转化为实际操作：调用工具、修改文件、发送请求。</p><p><strong>Memory System（记忆系统）</strong> —— Agent 的“经验库”，让 Agent 能够从过去的经验中学习，而非每次从零开始。</p><h2 id="实践：用-AOE-思维重构技术债清理"><a href="#实践：用-AOE-思维重构技术债清理" class="headerlink" title="实践：用 AOE 思维重构技术债清理"></a>实践：用 AOE 思维重构技术债清理</h2><p>说了这么多理论，让我们来看一个实际的例子。在日常工作中，技术债清理是一个令人头疼的问题。</p><h3 id="传统方式：人类主导一切"><a href="#传统方式：人类主导一切" class="headerlink" title="传统方式：人类主导一切"></a>传统方式：人类主导一切</h3><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjE2NHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NDIxcHg7aGVpZ2h0OjE2NHB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQyMSAxNjQiIHdpZHRoPSI0MjFweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBpZGVudGlmeS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImlkZW50aWZ5IiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNGRkNERDIiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiNDNjI4Mjg7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNTguOTIzNyIgeD0iMTcuOTMiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI3Ljk5OTkiIHg9IjI3LjkzIiB5PSIzNC45OTUxIj4mIzM1NzgyOyYjMjEwMzU7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzOC45MjM3IiB4PSIyNy45MyIgeT0iNTEuMjkyIj4oJiMyMDE1NDsmIzI0MDM3Oyk8L3RleHQ+PC9nPjwhLS1lbnRpdHkgcGxhbi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InBsYW4iIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0ZGQ0REMiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6I0M2MjgyODtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI1OC45MjM3IiB4PSIxMTYuOTMiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI3Ljk5OTkiIHg9IjEyNi45MyIgeT0iMzQuOTk1MSI+JiMzNTc0NTsmIzIxMDEwOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzguOTIzNyIgeD0iMTI2LjkzIiB5PSI1MS4yOTIiPigmIzIwMTU0OyYjMjQwMzc7KTwvdGV4dD48L2c+PCEtLWVudGl0eSBleGVjdXRlLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iZXhlY3V0ZSIgZGF0YS1zb3VyY2UtbGluZT0iMTgiIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjRkZDREQyIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojQzYyODI4O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjU4LjkyMzciIHg9IjIyNy45MyIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjcuOTk5OSIgeD0iMjM3LjkzIiB5PSIzNC45OTUxIj4mIzI1MTkxOyYjMzQ4OTI7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzOC45MjM3IiB4PSIyMzcuOTMiIHk9IjUxLjI5MiI+KCYjMjAxNTQ7JiMyNDAzNzspPC90ZXh0PjwvZz48IS0tZW50aXR5IHZlcmlmeS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InZlcmlmeSIgZGF0YS1zb3VyY2UtbGluZT0iMTkiIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRkZDREQyIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojQzYyODI4O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjU4LjkyMzciIHg9IjMyOS45MyIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjcuOTk5OSIgeD0iMzM5LjkzIiB5PSIzNC45OTUxIj4mIzM5NTY0OyYjMzU3Nzc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzOC45MjM3IiB4PSIzMzkuOTMiIHk9IjUxLjI5MiI+KCYjMjAxNTQ7JiMyNDAzNzspPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU45IiBkYXRhLXNvdXJjZS1saW5lPSIyNiIgaWQ9ImVudDAwMTAiPjxwYXRoIGQ9Ik0xMSwxMjQuNiBMMTEsMTQ5LjczMjggQTAsMCAwIDAgMCAxMSwxNDkuNzMyOCBMNzMuNzg2NywxNDkuNzMyOCBBMCwwIDAgMCAwIDczLjc4NjcsMTQ5LjczMjggTDczLjc4NjcsMTM0LjYgTDYzLjc4NjcsMTI0LjYgTDQ3LjAxLDEyNC42IEw0Ni4wNyw2NSBMMzkuMDEsMTI0LjYgTDExLDEyNC42IEEwLDAgMCAwIDAgMTEsMTI0LjYiIGZpbGw9IiNGRkVCRUUiIHN0eWxlPSJzdHJva2U6I0VGOUE5QTtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNNjMuNzg2NywxMjQuNiBMNjMuNzg2NywxMzQuNiBMNzMuNzg2NywxMzQuNiBMNjMuNzg2NywxMjQuNiIgZmlsbD0iI0ZGRUJFRSIgc3R5bGU9InN0cm9rZTojRUY5QTlBO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MS43ODY3IiB4PSIxNyIgeT0iMTQxLjY2NjkiPiYjOTg4ODsmIzY1MDM5OyAmIzMyNzkxOyYjMjYxMDI7PC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU4xMiIgZGF0YS1zb3VyY2UtbGluZT0iMzAiIGlkPSJlbnQwMDEzIj48cGF0aCBkPSJNMTA4LjUsMTI0LjYgTDEwOC41LDE0OS43MzI4IEEwLDAgMCAwIDAgMTA4LjUsMTQ5LjczMjggTDE4NC4yODY3LDE0OS43MzI4IEEwLDAgMCAwIDAgMTg0LjI4NjcsMTQ5LjczMjggTDE4NC4yODY3LDEzNC42IEwxNzQuMjg2NywxMjQuNiBMMTUwLjM5LDEyNC42IEwxNDYuMzksNjUgTDE0Mi4zOSwxMjQuNiBMMTA4LjUsMTI0LjYgQTAsMCAwIDAgMCAxMDguNSwxMjQuNiIgZmlsbD0iI0ZGRUJFRSIgc3R5bGU9InN0cm9rZTojRUY5QTlBO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0xNzQuMjg2NywxMjQuNiBMMTc0LjI4NjcsMTM0LjYgTDE4NC4yODY3LDEzNC42IEwxNzQuMjg2NywxMjQuNiIgZmlsbD0iI0ZGRUJFRSIgc3R5bGU9InN0cm9rZTojRUY5QTlBO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1NC43ODY3IiB4PSIxMTQuNSIgeT0iMTQxLjY2NjkiPiYjOTg4ODsmIzY1MDM5OyAmIzI2MTMxOyYjMzY5NTE7JiMyODQzMTs8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjE1IiBkYXRhLXNvdXJjZS1saW5lPSIzNCIgaWQ9ImVudDAwMTYiPjxwYXRoIGQ9Ik0yMTkuNSwxMjQuNiBMMjE5LjUsMTQ5LjczMjggQTAsMCAwIDAgMCAyMTkuNSwxNDkuNzMyOCBMMjk1LjI4NjcsMTQ5LjczMjggQTAsMCAwIDAgMCAyOTUuMjg2NywxNDkuNzMyOCBMMjk1LjI4NjcsMTM0LjYgTDI4NS4yODY3LDEyNC42IEwyNjEuMzksMTI0LjYgTDI1Ny4zOSw2NSBMMjUzLjM5LDEyNC42IEwyMTkuNSwxMjQuNiBBMCwwIDAgMCAwIDIxOS41LDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTI4NS4yODY3LDEyNC42IEwyODUuMjg2NywxMzQuNiBMMjk1LjI4NjcsMTM0LjYgTDI4NS4yODY3LDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU0Ljc4NjciIHg9IjIyNS41IiB5PSIxNDEuNjY2OSI+JiM5ODg4OyYjNjUwMzk7ICYjMjYxMzE7JiMyMDk4NjsmIzM4MTY5OzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTgiIGRhdGEtc291cmNlLWxpbmU9IjM4IiBpZD0iZW50MDAxOSI+PHBhdGggZD0iTTMzMC41LDEyNC42IEwzMzAuNSwxNDkuNzMyOCBBMCwwIDAgMCAwIDMzMC41LDE0OS43MzI4IEw0MDYuMjg2NywxNDkuNzMyOCBBMCwwIDAgMCAwIDQwNi4yODY3LDE0OS43MzI4IEw0MDYuMjg2NywxMzQuNiBMMzk2LjI4NjcsMTI0LjYgTDM3MS4yOCwxMjQuNiBMMzYxLjc4LDY1IEwzNjMuMjgsMTI0LjYgTDMzMC41LDEyNC42IEEwLDAgMCAwIDAgMzMwLjUsMTI0LjYiIGZpbGw9IiNGRkVCRUUiIHN0eWxlPSJzdHJva2U6I0VGOUE5QTtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNMzk2LjI4NjcsMTI0LjYgTDM5Ni4yODY3LDEzNC42IEw0MDYuMjg2NywxMzQuNiBMMzk2LjI4NjcsMTI0LjYiIGZpbGw9IiNGRkVCRUUiIHN0eWxlPSJzdHJva2U6I0VGOUE5QTtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTQuNzg2NyIgeD0iMzM2LjUiIHk9IjE0MS42NjY5Ij4mIzk4ODg7JiM2NTAzOTsgJiMxOTk4MTsmIzIzNDM2OyYjMjU5NzI7PC90ZXh0PjwvZz48IS0tbGluayBpZGVudGlmeSB0byBwbGFuLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDIiIGRhdGEtZW50aXR5LTI9ImVudDAwMDMiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMSIgaWQ9ImxuazYiPjxwYXRoIGQ9Ik03Ny4xNywzOC4zIEM5MC4zMywzOC4zIDk3LjQ5LDM4LjMgMTEwLjY1LDM4LjMiIGZpbGw9Im5vbmUiIGlkPSJpZGVudGlmeS10by1wbGFuIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxMTYuNjUsMzguMywxMDcuNjUsMzQuMywxMTEuNjUsMzguMywxMDcuNjUsNDIuMywxMTYuNjUsMzguMyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBwbGFuIHRvIGV4ZWN1dGUtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMyIgZGF0YS1lbnRpdHktMj0iZW50MDAwNCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIyIiBpZD0ibG5rNyI+PHBhdGggZD0iTTE3Ni4zMSwzOC4zIEMxOTMuNDEsMzguMyAyMDQuNTIsMzguMyAyMjEuNjIsMzguMyIgZmlsbD0ibm9uZSIgaWQ9InBsYW4tdG8tZXhlY3V0ZSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjI3LjYyLDM4LjMsMjE4LjYyLDM0LjMsMjIyLjYyLDM4LjMsMjE4LjYyLDQyLjMsMjI3LjYyLDM4LjMiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgZXhlY3V0ZSB0byB2ZXJpZnktLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIzIiBpZD0ibG5rOCI+PHBhdGggZD0iTTI4Ny4yOCwzOC4zIEMzMDEuMzYsMzguMyAzMDkuNDUsMzguMyAzMjMuNTMsMzguMyIgZmlsbD0ibm9uZSIgaWQ9ImV4ZWN1dGUtdG8tdmVyaWZ5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzMjkuNTMsMzguMywzMjAuNTMsMzQuMywzMjQuNTMsMzguMywzMjAuNTMsNDIuMywzMjkuNTMsMzguMyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48P3BsYW50dW1sLXNyYyBLb3A5SUNyRExJWjhJU3BDdW9oRXBpbWhJMm5BcDVMOElhcEVKWV9BQnlyQlNTeEZvSXpJQUNfOEI0YjVhYXo5SktpaXBJYm5veXloeUtpNHdkU2lvYXBDdUs5SUs5SVFOOUFPYnZ3SmdiM0RmRzA0R0gycFlsOUlZbkdDM1MxMkpjWHNBQmt2RVJrdTY0N2F5ZWpJS2VrV3VpdmNIWFA2NWJvcm9FUmR2UFYwWkNQWVpna0pnb2tjRVF2a2Jld01aWTFwNEF2SlVoNi14TWQ3d2ZXeVpJVXhUWnRUbGJISklJNm5NMjRwOUpNbDkzRWo0YU5Ya2VMRkVvUVhBR0k2TW53b2VjVVRvcnlpeDQ1SmI1Z0hjYm1BMzN1YVRJek56Um5PdHVZY2hZb3IyNkdkNXluczFUc1lwRklDNGJxeFkzS1cwWTQ0Q25IQThvSFdmZTEzQTJjX2YyR19MbzRfM1U0YjFPTDdpblF5dHo2bHlBOVgtaEZmc3hYSXlyQjBlT2NYMHNtZk5GTXA2UERWRGF2X2pnU1ZqbVFPYXYzckY2dFZ6TkJBSkRud2VBdzVRdGNvZV9WZmtmdmRLeFYwakcwMD8+PC9nPjwvc3ZnPg=='><h3 id="AOE-方式：人机协作"><a href="#AOE-方式：人机协作" class="headerlink" title="AOE 方式：人机协作"></a>AOE 方式：人机协作</h3><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQwNnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NTIxcHg7aGVpZ2h0OjQwNnB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUyMSA0MDYiIHdpZHRoPSI1MjFweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgPz8/Pz8gKEVuZ2luZWVyaW5nKS0tPjxnIGNsYXNzPSJjbHVzdGVyIiBkYXRhLXF1YWxpZmllZC1uYW1lPSIuLi4uLiAuRW5naW5lZXJpbmcuIiBkYXRhLXNvdXJjZS1saW5lPSIxNCIgaWQ9ImVudDAwMDIiPjxwYXRoIGQ9Ik0xMy41LDExIEwxNzEuMDc0NywxMSBBMy43NSwzLjc1IDAgMCAxIDE3My41NzQ3LDEzLjUgTDE4MC41NzQ3LDMwLjk2ODggTDUwMy41LDMwLjk2ODggQTIuNSwyLjUgMCAwIDEgNTA2LDMzLjQ2ODggTDUwNiwxNDYuMzQgQTIuNSwyLjUgMCAwIDEgNTAzLjUsMTQ4Ljg0IEwxMy41LDE0OC44NCBBMi41LDIuNSAwIDAgMSAxMSwxNDYuMzQgTDExLDEzLjUgQTIuNSwyLjUgMCAwIDEgMTMuNSwxMSIgZmlsbD0iI0UzRjJGRCIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMSIgeDI9IjE4MC41NzQ3IiB5MT0iMzAuOTY4OCIgeTI9IjMwLjk2ODgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTU2LjU3NDciIHg9IjE1IiB5PSIyNC4xMzg3Ij4mIzIwMTU0OyYjMzE4Njc7JiMyNDAzNzsmIzMxMjQzOyYjMjQwNzI7IChFbmdpbmVlcmluZyk8L3RleHQ+PC9nPjwhLS1jbHVzdGVyIEFJIEFnZW50IChQcm9ncmFtbWluZyktLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQUkgQWdlbnQgLlByb2dyYW1taW5nLiIgZGF0YS1zb3VyY2UtbGluZT0iMjAiIGlkPSJlbnQwMDA2Ij48cGF0aCBkPSJNMTMyLjUsMTgxLjg0IEwyOTguNjg3NSwxODEuODQgQTMuNzUsMy43NSAwIDAgMSAzMDEuMTg3NSwxODQuMzQgTDMwOC4xODc1LDIwMS44MDg4IEwzMzAuNSwyMDEuODA4OCBBMi41LDIuNSAwIDAgMSAzMzMsMjA0LjMwODggTDMzMywzODkuMjUgQTIuNSwyLjUgMCAwIDEgMzMwLjUsMzkxLjc1IEwxMzIuNSwzOTEuNzUgQTIuNSwyLjUgMCAwIDEgMTMwLDM4OS4yNSBMMTMwLDE4NC4zNCBBMi41LDIuNSAwIDAgMSAxMzIuNSwxODEuODQiIGZpbGw9IiNGRkYzRTAiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTMwIiB4Mj0iMzA4LjE4NzUiIHkxPSIyMDEuODA4OCIgeTI9IjIwMS44MDg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE2NS4xODc1IiB4PSIxMzQiIHk9IjE5NC45Nzg3Ij5BSSBBZ2VudCAoUHJvZ3JhbW1pbmcpPC90ZXh0PjwvZz48IS0tZW50aXR5IGdvYWwtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSIuLi4uLiAuRW5naW5lZXJpbmcuLmdvYWwiIGRhdGEtc291cmNlLWxpbmU9IjE1IiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0JCREVGQiIgaGVpZ2h0PSI3NS44NzUiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE1Ny45OTQ1IiB4PSIyNyIgeT0iNDkuOTgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDguMDAwNCIgeD0iMzciIHk9IjcxLjExODciPiYjMjM0NTA7JiMyMDA0MTsmIzMwNDQ2OyYjMjY2MzE7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzLjgxNDUiIHg9IjM3IiB5PSI4NS4wODc0Ij4mIzE2MDs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwNi45NjM0IiB4PSIzNyIgeT0iOTkuMDU2MiI+JiM4MjI2OyAmIzI4MTY1OyYjMjk3MDI7IEFCICYjMjM0NTQ7JiMzOTU2NDsmIzIwMTk1OyYjMzA3MjE7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMzcuOTk0NSIgeD0iMzciIHk9IjExMy4wMjQ5Ij4mIzgyMjY7ICYjMzEyMjc7JiMzODUwMDsmIzM2ODA3OyYjMjYzOTk7IEZlYXR1cmUgRmxhZzwvdGV4dD48L2c+PCEtLWVudGl0eSBjb25zdHJhaW50LS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iLi4uLi4gLkVuZ2luZWVyaW5nLi5jb25zdHJhaW50IiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDQiPjxyZWN0IGZpbGw9IiNCQkRFRkIiIGhlaWdodD0iODkuODQzOCIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTI2Ljg5MzMiIHg9IjIxOS41NSIgeT0iNDMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDguMDAwNCIgeD0iMjI5LjU1IiB5PSI2NC4xMzg3Ij4mIzM1Nzc0OyYjMjM0NTA7JiMzMjQyMjsmIzI2NDYzOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMy44MTQ1IiB4PSIyMjkuNTUiIHk9Ijc4LjEwNzQiPiYjMTYwOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iOTQuODkzMiIgeD0iMjI5LjU1IiB5PSI5Mi4wNzYyIj4mIzgyMjY7ICYjMTk5ODE7JiMzMDc3MjsmIzIyMzUxOyYjMjk2MTY7JiMyNjM3NzsmIzIxMTUxOyYjMzMwMjE7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni44OTI5IiB4PSIyMjkuNTUiIHk9IjEwNi4wNDQ5Ij4mIzgyMjY7ICYjMjE0ODc7JiMyMjIzODsmIzI4Mzc4OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA2Ljg5MzMiIHg9IjIyOS41NSIgeT0iMTIwLjAxMzciPiYjODIyNjsgJiMyMDQ0NTsmIzI1MzQ1OyYjMjAxOTU7JiMzMDcyMTsmIzM5MTE4OyYjMjY2ODQ7JiMxOTk2ODsmIzMzMjY4OzwvdGV4dD48L2c+PCEtLWVudGl0eSBjcml0ZXJpYS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9Ii4uLi4uIC5FbmdpbmVlcmluZy4uY3JpdGVyaWEiIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0JCREVGQiIgaGVpZ2h0PSI4OS44NDM4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMDguNzgxMyIgeD0iMzgxLjYxIiB5PSI0MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC4wMDA0IiB4PSIzOTEuNjEiIHk9IjY0LjEzODciPiYjMzk1NjQ7JiMyNTkxMDsmIzI2NjMxOyYjMjA5MzQ7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzLjgxNDUiIHg9IjM5MS42MSIgeT0iNzguMTA3NCI+JiMxNjA7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1OC44OTI5IiB4PSIzOTEuNjEiIHk9IjkyLjA3NjIiPiYjODIyNjsgJiMyNzk3OTsmIzM1Nzk3OyYjMzY4OTA7JiMzNjgwNzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjgyLjg5MzEiIHg9IjM5MS42MSIgeT0iMTA2LjA0NDkiPiYjODIyNjsgJiMzNTIwNjsmIzMwNDIyOyYjMjk1NzU7JiMxOTk4MTsmIzE5OTc5OyYjMzg0Nzc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4OC43ODEzIiB4PSIzOTEuNjEiIHk9IjEyMC4wMTM3Ij4mIzgyMjY7IENvZGUgUmV2aWV3PC90ZXh0PjwvZz48IS0tZW50aXR5IGFuYWx5emUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBSSBBZ2VudCAuUHJvZ3JhbW1pbmcuLmFuYWx5emUiIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0iZW50MDAwNyI+PHJlY3QgZmlsbD0iI0ZGRTBCMiIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI2OC4wMDA0IiB4PSIxNDYiIHk9IjIxMy44NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC4wMDA0IiB4PSIxNTYiIHk9IjIzNC45Nzg3Ij4mIzIwMTk1OyYjMzA3MjE7JiMyMDk5ODsmIzI2NTEyOzwvdGV4dD48L2c+PCEtLWVudGl0eSBhc3Nlc3MtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBSSBBZ2VudCAuUHJvZ3JhbW1pbmcuLmFzc2VzcyIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJlbnQwMDA4Ij48cmVjdCBmaWxsPSIjRkZFMEIyIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjY4LjAwMDQiIHg9IjI0OSIgeT0iMjEzLjg0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ4LjAwMDQiIHg9IjI1OSIgeT0iMjM0Ljk3ODciPiYjMjQ0MzM7JiMyMTcwOTsmIzM1NzgwOyYjMjAyNzI7PC90ZXh0PjwvZz48IS0tZW50aXR5IHJlZmFjdG9yLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQUkgQWdlbnQgLlByb2dyYW1taW5nLi5yZWZhY3RvciIgZGF0YS1zb3VyY2UtbGluZT0iMjMiIGlkPSJlbnQwMDA5Ij48cmVjdCBmaWxsPSIjRkZFMEIyIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjY4LjAwMDQiIHg9IjI0OSIgeT0iMjc3LjgxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ4LjAwMDQiIHg9IjI1OSIgeT0iMjk4Ljk0ODciPiYjMzMyNTg7JiMyMTE2MDsmIzM3MzI1OyYjMjY1MDA7PC90ZXh0PjwvZz48IS0tZW50aXR5IHRlc3QtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBSSBBZ2VudCAuUHJvZ3JhbW1pbmcuLnRlc3QiIGRhdGEtc291cmNlLWxpbmU9IjI0IiBpZD0iZW50MDAxMCI+PHJlY3QgZmlsbD0iI0ZGRTBCMiIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI2OC4wMDA0IiB4PSIyNDkiIHk9IjM0MS43OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC4wMDA0IiB4PSIyNTkiIHk9IjM2Mi45MTg3Ij4mIzI3OTc5OyYjMzU3OTc7JiMzOTU2NDsmIzM1Nzc3OzwvdGV4dD48L2c+PCEtLWxpbmsgYW5hbHl6ZSB0byBhc3Nlc3MtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNyIgZGF0YS1lbnRpdHktMj0iZW50MDAwOCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI2IiBpZD0ibG5rMTEiPjxwYXRoIGQ9Ik0yMTQuMiwyMzAuODMgQzIyNS42NywyMzAuODMgMjMxLjEzLDIzMC44MyAyNDIuNiwyMzAuODMiIGZpbGw9Im5vbmUiIGlkPSJhbmFseXplLXRvLWFzc2VzcyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjQ4LjYsMjMwLjgzLDIzOS42LDIyNi44MywyNDMuNiwyMzAuODMsMjM5LjYsMjM0LjgzLDI0OC42LDIzMC44MyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhc3Nlc3MgdG8gcmVmYWN0b3ItLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwOCIgZGF0YS1lbnRpdHktMj0iZW50MDAwOSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI3IiBpZD0ibG5rMTIiPjxwYXRoIGQ9Ik0yODMsMjQ4LjExIEMyODMsMjU3LjE1IDI4MywyNjIuMzYgMjgzLDI3MS40MSIgZmlsbD0ibm9uZSIgaWQ9ImFzc2Vzcy10by1yZWZhY3RvciIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjgzLDI3Ny40MSwyODcsMjY4LjQxLDI4MywyNzIuNDEsMjc5LDI2OC40MSwyODMsMjc3LjQxIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIHJlZmFjdG9yIHRvIHRlc3QtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwOSIgZGF0YS1lbnRpdHktMj0iZW50MDAxMCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI4IiBpZD0ibG5rMTMiPjxwYXRoIGQ9Ik0yODMsMzEyLjA4IEMyODMsMzIxLjEyIDI4MywzMjYuMzIgMjgzLDMzNS4zOCIgZmlsbD0ibm9uZSIgaWQ9InJlZmFjdG9yLXRvLXRlc3QiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjI4MywzNDEuMzgsMjg3LDMzMi4zOCwyODMsMzM2LjM4LDI3OSwzMzIuMzgsMjgzLDM0MS4zOCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tcmV2ZXJzZSBsaW5rIGFuYWx5emUgdG8gdGVzdC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA3IiBkYXRhLWVudGl0eS0yPSJlbnQwMDEwIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjkiIGlkPSJsbmsxNSI+PHBhdGggZD0iTTE3NC4xNTc3LDI1My44NjcgQzE3MC4zMTc3LDI3MS4xMzcgMTY4LjUzLDI5Mi43NCAxODEsMzExLjc4IEMxOTYuMDEsMzM0LjY5IDIyNS40MywzNDYuMzIgMjQ4LjgzLDM1Mi4xMyIgZmlsbD0ibm9uZSIgaWQ9ImFuYWx5emUtYmFja3RvLXRlc3QiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTtzdHJva2UtZGFzaGFycmF5OjcsNzsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjE3NS40NiwyNDguMDEsMTY5LjYwMTksMjU1LjkyNzIsMTc0LjM3NDcsMjUyLjg5MDgsMTc3LjQxMTIsMjU3LjY2MzYsMTc1LjQ2LDI0OC4wMSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC4wMDA0IiB4PSIxODIiIHk9IjI5OS40Mzg3Ij4mIzIxNDUzOyYjMzkzMDQ7JiMyNDQ5MDsmIzI5NjE1OzwvdGV4dD48L2c+PCEtLWxpbmsgZ29hbCB0byBhbmFseXplLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDciIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzMiIgaWQ9ImxuazE2Ij48cGF0aCBkPSJNMTI1LjY0LDEyNi4zMSBDMTQwLjU0LDE1NC42OSAxNTcuNTEsMTg2Ljk5ODIgMTY4LjY0LDIwOC4xODgyIiBmaWxsPSJub25lIiBpZD0iZ29hbC10by1hbmFseXplIiBzdHlsZT0ic3Ryb2tlOiMxNTY1QzA7c3Ryb2tlLXdpZHRoOjI7Ii8+PHBvbHlnb24gZmlsbD0iIzE1NjVDMCIgcG9pbnRzPSIxNzEuNDMsMjEzLjUsMTcwLjc4NjIsMjAzLjY3MjIsMTY5LjEwNSwyMDkuMDczNSwxNjMuNzAzNywyMDcuMzkyMywxNzEuNDMsMjEzLjUiIHN0eWxlPSJzdHJva2U6IzE1NjVDMDtzdHJva2Utd2lkdGg6MjsiLz48L2c+PCEtLWxpbmsgY29uc3RyYWludCB0byBhc3Nlc3MtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwOCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjMzIiBpZD0ibG5rMTciPjxwYXRoIGQ9Ik0yODMsMTMzLjEyIEMyODMsMTYwLjQgMjgzLDE4Ny44MSAyODMsMjA3LjM2IiBmaWxsPSJub25lIiBpZD0iY29uc3RyYWludC10by1hc3Nlc3MiIHN0eWxlPSJzdHJva2U6IzE1NjVDMDtzdHJva2Utd2lkdGg6MjsiLz48cG9seWdvbiBmaWxsPSIjMTU2NUMwIiBwb2ludHM9IjI4MywyMTMuMzYsMjg3LDIwNC4zNiwyODMsMjA4LjM2LDI3OSwyMDQuMzYsMjgzLDIxMy4zNiIgc3R5bGU9InN0cm9rZTojMTU2NUMwO3N0cm9rZS13aWR0aDoyOyIvPjwvZz48IS0tbGluayBjcml0ZXJpYSB0byB0ZXN0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMTAiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzNCIgaWQ9ImxuazE4Ij48cGF0aCBkPSJNNDIyLjEzLDEzMy4zIEM0MDYuMDEsMTgwLjUgMzc2LjI2LDI1NS45MSAzMzUsMzExLjc4IEMzMjYuNzcsMzIyLjkzIDMyMC4xMDI4LDMyOS41NjQgMzEwLjExMjgsMzM3LjY1NCIgZmlsbD0ibm9uZSIgaWQ9ImNyaXRlcmlhLXRvLXRlc3QiIHN0eWxlPSJzdHJva2U6IzE1NjVDMDtzdHJva2Utd2lkdGg6MjsiLz48cG9seWdvbiBmaWxsPSIjMTU2NUMwIiBwb2ludHM9IjMwNS40NSwzNDEuNDMsMzE0Ljk2MTYsMzM4Ljg3NDYsMzA5LjMzNTcsMzM4LjI4MzMsMzA5LjkyNjksMzMyLjY1NzUsMzA1LjQ1LDM0MS40MyIgc3R5bGU9InN0cm9rZTojMTU2NUMwO3N0cm9rZS13aWR0aDoyOyIvPjwvZz48P3BsYW50dW1sLXNyYyBWTDlSUm45MTY3dGRMdXBtS2VhcUJLcVJPczhKUURkNDVzRmdlX0xYWDc3UGk5cWJpdUVENlhFOGJRS05RMUNsSVE2Ym4yZXNGNDJSTENOSW90eW5FdGx2NW11eDJxTFJFbV9wQ0VUeXRwZFZWRVNNSlFDYjFCOGdMNzEwcG9XdTJtYlMwaXpXQ1lDSkJPVEpTdmdnNFIyU0xZV1FtTEZlRVNvZkxEOG1WR1h2Vk9tZUtCcVVWd295R2MwbzZYWDFpeG14YjE1dTdHM3luM01JR2FKZVg2UXk0dFdwSVlTZUlJNk1ySzcxV2wxNUMyQldSZnl3dzFTcUpxeGllbnh4LVRLLU02VlQ0WFhCTzVkMTIxNDVveFUzODlJT2FnQklsRF9jaWNxbTc2UmpnbGJoclF3cmhPT0gzWV9ZSFZteF9uYk90TlZzTFg3NHVlMnJ3c3ZobS1wanN1czJtRW5sRk5WeFl0RFhNM2p4RzRBR3ZXVzJhV2hiODgwd2EzTWVXYjB5RmYtR3ViVkxkRk92NXhIRmNqUmt0Z01Rc0l0UlpNRXNrc2JOM2dzVExSUXN2eG16NG4zUnhCMVF0VWZMVlVSNWhoTEg0NnhTX09oTEUzTXhVU1N1emdJSjZqT2Z1VmthMG1DME5CTjBmeDQtX0UzSkNnQ3VDbDN0VFFWcHFTck4tTHBZbk1hTXhUZWRrczltVHNQdHRUcWtZX1N2Qk9OMDBkZ1hlNk1YSWRYMlUwZzZHdV9rOVZPMG42SjQzT3F6OGZoQ1R4aGFCcUlJZkFkNG5ETTVZRDVPZ01aTGp4cHM0NEZyOUd5SWhxWENuQUZfeWpkUDROalZUWmVodmtjWHVFaXdxbE5fcUhzWm5UT0VOQURpckxTeUVrNXZKVDktMEF5bHlGLWJqVTVxMmJ1MUhKaHpZLW5UMHZTSGVpWGY2ZmRyUkdYQ0UxZjIwcWJWb2pTVm1kcTEzX0FLbmRGUHlUYlgtdGl5M3NNdE1NQmRCUmxJd1YtcTV4VjhhejNhekNwcXRDR1RjYlFJNlNwYnhhVVZmaEhiNzFkTTFhUklTSkRWRTEta3pLUG90LUNWPz48L2c+PC9zdmc+'><p>在这个模式下，人类工程师专注于 <strong>Engineering</strong>：</p><ul><li><strong>定义目标</strong>：清理哪类技术债？AB 实验？国际化？过时的 API？</li><li><strong>设定约束</strong>：不能破坏现有功能、必须保持测试覆盖率、变更需要可回滚</li><li><strong>设计验收标准</strong>：如何判断清理成功？</li></ul><p>而 Agent 负责 <strong>Programming</strong>：</p><ul><li><strong>代码分析</strong>：扫描代码库，识别目标代码</li><li><strong>影响评估</strong>：分析依赖关系，评估修改影响</li><li><strong>自动重构</strong>：生成并执行重构方案</li><li><strong>测试验证</strong>：运行测试，确保功能正确</li></ul><h2 id="Feedback-Loop：Agent-进化的核心"><a href="#Feedback-Loop：Agent-进化的核心" class="headerlink" title="Feedback Loop：Agent 进化的核心"></a>Feedback Loop：Agent 进化的核心</h2><p>在 Agent-Oriented Engineering 中，Feedback Loop 是最关键的概念之一。与传统的静态程序不同，Agent 需要不断地从执行结果中学习并改进。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjE4NHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MTA0N3B4O2hlaWdodDoxODRweDtiYWNrZ3JvdW5kOiNGRkZGRkY7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMDQ3IDE4NCIgd2lkdGg9IjEwNDdweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBhZ2VudC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImFnZW50IiBkYXRhLXNvdXJjZS1saW5lPSIxMyIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNFOEVBRjYiIGhlaWdodD0iMzYuMjk2OSIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iOTkuODg0NiIgeD0iNDAxLjciIHk9IjEzNC40Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc5Ljg4NDYiIHg9IjQxMS43IiB5PSIxNTcuMzk1MSI+QWdlbnQgJiMzNjgyNzsmIzIxMjcwOzwvdGV4dD48L2c+PCEtLWVudGl0eSBzaG9ydC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InNob3J0IiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iMzguNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTc1LjI5MiIgeD0iMTIiIHk9IjIzLjQxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE1NS4yOTIiIHg9IjIyIiB5PSIzOS40MDUxIj5TaG9ydC10ZXJtIE1lbW9yeTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iMjIiIHk9IjU1LjcwMiI+JiMyNDQwMzsmIzIxMDY5OyYjMjAyNTA7JiMzNTgwNTs8L3RleHQ+PC9nPjwhLS1lbnRpdHkgbWlkLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0ibWlkIiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDQiPjxyZWN0IGZpbGw9IiNGRkY5QzQiIGhlaWdodD0iMzguNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTY0LjkwODIiIHg9IjM2OS4xOSIgeT0iMjMuNDEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQ0LjkwODIiIHg9IjM3OS4xOSIgeT0iMzkuNDA1MSI+TWlkLXRlcm0gUGF0dGVybnM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjY5Ljk5OTciIHg9IjM3OS4xOSIgeT0iNTUuNzAyIj4mIzM2MzI4OyYjMjAyNTA7JiMzNTgwNTsmIzI3MTY5OyYjMjQzMzU7PC90ZXh0PjwvZz48IS0tZW50aXR5IGxvbmctLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJsb25nIiBkYXRhLXNvdXJjZS1saW5lPSIxNyIgaWQ9ImVudDAwMDUiPjxyZWN0IGZpbGw9IiNGRkNDQkMiIGhlaWdodD0iMzguNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTk0LjA5MDgiIHg9IjcwMy42IiB5PSIyMy40MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNzQuMDkwOCIgeD0iNzEzLjYiIHk9IjM5LjQwNTEiPkxvbmctdGVybSBLbm93bGVkZ2U8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjY5Ljk5OTciIHg9IjcxMy42IiB5PSI1NS43MDIiPiYjMjUzNDU7JiMyMDAzNzsmIzIxMjcwOyYjMzA2OTM7JiMzNTc4Mjs8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjkiIGRhdGEtc291cmNlLWxpbmU9IjI0IiBpZD0iZW50MDAxMCI+PHBhdGggZD0iTTIyMi42NSwxMSBMMjIyLjY1LDM4LjcgTDE4Ny43NSw0Mi43IEwyMjIuNjUsNDYuNyBMMjIyLjY1LDc0LjM5ODQgQTAsMCAwIDAgMCAyMjIuNjUsNzQuMzk4NCBMMzM0LjY1MDEsNzQuMzk4NCBBMCwwIDAgMCAwIDMzNC42NTAxLDc0LjM5ODQgTDMzNC42NTAxLDIxIEwzMjQuNjUwMSwxMSBMMjIyLjY1LDExIEEwLDAgMCAwIDAgMjIyLjY1LDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTMyNC42NTAxLDExIEwzMjQuNjUwMSwyMSBMMzM0LjY1MDEsMjEgTDMyNC42NTAxLDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjIyOC42NSIgeT0iMjguMDY2OSI+JiMzMDcwMTsmIzI2Mzk5OyYjMjMzOTg7JiMyMDA2NDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjIyMy42NSIgeDI9IjMzMy42NTAxIiB5MT0iMzEuMTMyOCIgeTI9IjMxLjEzMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iOTEuMDAwMSIgeD0iMjI4LjY1IiB5PSI0Ny4xOTk3Ij4mIzIwMTc0OyYjMjEzMzM7JiMyNzQyNTsmIzI1MTkxOyYjMzQ4OTI7JiMzMjQ2NzsmIzI2NTI0OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTIuMDAwMSIgeD0iMjI4LjY1IiB5PSI2Mi4zMzI1Ij4mIzM1ODQzOyYjMjU5NzI7JiMzMTU3NDsmIzMwMDUzOzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTIiIGRhdGEtc291cmNlLWxpbmU9IjMxIiBpZD0iZW50MDAxMyI+PHBhdGggZD0iTTU2OS4xNSwxMSBMNTY5LjE1LDM4LjcgTDUzNC40OSw0Mi43IEw1NjkuMTUsNDYuNyBMNTY5LjE1LDc0LjM5ODQgQTAsMCAwIDAgMCA1NjkuMTUsNzQuMzk4NCBMNjY4LjE1MDEsNzQuMzk4NCBBMCwwIDAgMCAwIDY2OC4xNTAxLDc0LjM5ODQgTDY2OC4xNTAxLDIxIEw2NTguMTUwMSwxMSBMNTY5LjE1LDExIEEwLDAgMCAwIDAgNTY5LjE1LDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTY1OC4xNTAxLDExIEw2NTguMTUwMSwyMSBMNjY4LjE1MDEsMjEgTDY1OC4xNTAxLDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjU3NS4xNSIgeT0iMjguMDY2OSI+JiMyMDAxMzsmIzI2Mzk5OyYjMjMzOTg7JiMyMDA2NDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjU3MC4xNSIgeDI9IjY2Ny4xNTAxIiB5MT0iMzEuMTMyOCIgeTI9IjMxLjEzMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzguMDAwMSIgeD0iNTc1LjE1IiB5PSI0Ny4xOTk3Ij4mIzIwMTc0OyYjMzA0NTY7JiMyMDI4NDsmIzIwMjE5OyYjMjExNTM7JiMyMDAxMzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjU3NS4xNSIgeT0iNjIuMzMyNSI+JiMyNTU1MjsmIzIxNDYyOyYjMjcxNjk7JiMyNDMzNTs8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjE1IiBkYXRhLXNvdXJjZS1saW5lPSIzOCIgaWQ9ImVudDAwMTYiPjxwYXRoIGQ9Ik05MzMuMTUsMTEgTDkzMy4xNSwzOC43IEw4OTguMDQsNDIuNyBMOTMzLjE1LDQ2LjcgTDkzMy4xNSw3NC4zOTg0IEEwLDAgMCAwIDAgOTMzLjE1LDc0LjM5ODQgTDEwMzIuMTUwMSw3NC4zOTg0IEEwLDAgMCAwIDAgMTAzMi4xNTAxLDc0LjM5ODQgTDEwMzIuMTUwMSwyMSBMMTAyMi4xNTAxLDExIEw5MzMuMTUsMTEgQTAsMCAwIDAgMCA5MzMuMTUsMTEiIGZpbGw9IiNGRkZGRkYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNMTAyMi4xNTAxLDExIEwxMDIyLjE1MDEsMjEgTDEwMzIuMTUwMSwyMSBMMTAyMi4xNTAxLDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUyLjAwMDEiIHg9IjkzOS4xNSIgeT0iMjguMDY2OSI+JiMzODI3MTsmIzI2Mzk5OyYjMjMzOTg7JiMyMDA2NDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjkzNC4xNSIgeDI9IjEwMzEuMTUwMSIgeTE9IjMxLjEzMjgiIHkyPSIzMS4xMzI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4LjAwMDEiIHg9IjkzOS4xNSIgeT0iNDcuMTk5NyI+JiMyMDI0ODsmIzIxMjcwOyYjMjI1MjI7JiMzMDc4NDsmIzMzMDIxOyYjMjExNDc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1Mi4wMDAxIiB4PSI5MzkuMTUiIHk9IjYyLjMzMjUiPiYjMjE2NDQ7JiMzMDY5MzsmIzM1NzgyOyYjMjQyMTE7PC90ZXh0PjwvZz48IS0tbGluayBzaG9ydCB0byBhZ2VudC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDAyIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTkiIGlkPSJsbms2Ij48cGF0aCBkPSJNMTYwLjk2LDYyLjQ5IEMyMjkuMTEsODMuMzcgMzMyLjE2MzMsMTE0Ljk0MjIgMzk1LjU0MzMsMTM0LjM2MjIiIGZpbGw9Im5vbmUiIGlkPSJzaG9ydC10by1hZ2VudCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNDAxLjI4LDEzNi4xMiwzOTMuODQ2NywxMjkuNjU4OCwzOTYuNDk5NCwxMzQuNjU1MiwzOTEuNTAzLDEzNy4zMDc4LDQwMS4yOCwxMzYuMTIiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgbWlkIHRvIGFnZW50LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDIiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMCIgaWQ9ImxuazciPjxwYXRoIGQ9Ik00NTEuNjUsNjIuNDkgQzQ1MS42NSw4Mi42NSA0NTEuNjUsMTA4LjQxIDQ1MS42NSwxMjguMDUiIGZpbGw9Im5vbmUiIGlkPSJtaWQtdG8tYWdlbnQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjQ1MS42NSwxMzQuMDUsNDU1LjY1LDEyNS4wNSw0NTEuNjUsMTI5LjA1LDQ0Ny42NSwxMjUuMDUsNDUxLjY1LDEzNC4wNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBsb25nIHRvIGFnZW50LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMDIiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMSIgaWQ9ImxuazgiPjxwYXRoIGQ9Ik03MzkuODUsNjIuNDkgQzY3Mi4zOCw4My4zNCA1NzAuNDYyNiwxMTQuODM4NiA1MDcuNTgyNiwxMzQuMjY4NiIgZmlsbD0ibm9uZSIgaWQ9ImxvbmctdG8tYWdlbnQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjUwMS44NSwxMzYuMDQsNTExLjYyOTgsMTM3LjIwNDcsNTA2LjYyNzEsMTM0LjU2MzksNTA5LjI2NzksMTI5LjU2MTIsNTAxLjg1LDEzNi4wNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48P3BsYW50dW1sLXNyYyBUUDFESS1qMDY4TnR5b2xjc2JzV2UyMlk2dzY2UGtDN2Vqa3hjVGpDcXMwbzh6RUg4WThlU1l5ZXpWUG9JdWpPak1SWG55QVkyeTZGSGxtcGNJSi0yenlhS0FsT3NHbXZFUy1QenBxX1A4TXc1QXl4bjZRZWtjUXBUSUE4WXQtSHFmZWItME9wVFV2bVdNaUxNekFYX29PamFtcjc2ZnA5OUc5eUdUWjRHS0M2R0trSUNDa1hVMGpYRTJqUGJjMUt1OGJuajN0aUJINVhaaEh6MThyZk1pNllKRUJ1alFGZ1JLcVJtd0lBSUloYllqRjVXWjY1SzllNXBqS0E1cDhsZ04zbjhkTXZzRElxZHFvekRETi1PVTBWbnhVZEFMbkROM1lkSm5VZHo5YTFrc1lSNlJiQzlEb2ljaDNubXRLNlhqVVV5WGlmeGplY3BYYzZDUURGM2swNXBnb0NkY1V5dmIzSmVXYVVyZFUzZnp5bVRqSXpZNl9fZkJXM3JlSk56SmFULWFYZG9Qa3lubEFwc0xlZVVVMnBhWkFWOVNJdWY1Wk9MYUxZTml2c1daQVpSWXl5d1FoVVBWMXEzZnp2RTcwNV9SX2dpMU5VVUU3LUxVcExldHVwRjNpMUZSeFIycmx0S1F5VGpJdUdQSVBFR2h6Nm1wWDluRUU4dUFacDZGWC1xRS1oMG16Qzg4UURWd2hIcFhlUmNQZ2kxRHd0cmtqdGlWdUhiQVF3cHY2dDQtLXpnOENFWUVmX0ZRakhGSlM3aVV5MD8+PC9nPjwvc3ZnPg=='><p>这个循环不是简单的 while 循环，而是一个持续进化的过程。每一次执行都在为下一次执行积累经验。</p><h2 id="Agent-之间的协作"><a href="#Agent-之间的协作" class="headerlink" title="Agent 之间的协作"></a>Agent 之间的协作</h2><p>真实世界的问题往往需要多个 Agent 协作完成。这就涉及到 Agent 之间的通信和协调问题。</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQ1OXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NDY5cHg7aGVpZ2h0OjQ1OXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ2OSA0NTkiIHdpZHRoPSI0NjlweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBjb29yZC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImNvb3JkIiBkYXRhLXNvdXJjZS1saW5lPSIxNCIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNGRkUwQjIiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTEzLjg2NDMiIHg9IjE4MS43MSIgeT0iMTY1LjY3Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkzLjg2NDMiIHg9IjE5MS43MSIgeT0iMTg4LjY2NTEiPkNvb3JkaW5hdG9yPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0MS45OTk4IiB4PSIxOTEuNzEiIHk9IjIwNC45NjIiPiYjMjEzMjc7JiMzNTg0MzsmIzMyNzczOzwvdGV4dD48L2c+PCEtLWVudGl0eSBjb2RlLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iY29kZSIgZGF0YS1zb3VyY2UtbGluZT0iMTYiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjRThFQUY2IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzNGNTFCNTtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMTEuMjkzOSIgeD0iMTIiIHk9IjI3OS4yNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI5MS4yOTM5IiB4PSIyMiIgeT0iMzAyLjI1NTEiPkNvZGUgQWdlbnQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU1Ljk5OTgiIHg9IjIyIiB5PSIzMTguNTUyIj4mIzIwMTk1OyYjMzA3MjE7JiMyOTk4MzsmIzI1MTA0OzwvdGV4dD48L2c+PCEtLWVudGl0eSB0ZXN0LS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0idGVzdCIgZGF0YS1zb3VyY2UtbGluZT0iMTciIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjRThFQUY2IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzNGNTFCNTtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMDUuOTU1MSIgeD0iMTg1LjY3IiB5PSIyNzkuMjYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODUuOTU1MSIgeD0iMTk1LjY3IiB5PSIzMDIuMjU1MSI+VGVzdCBBZ2VudDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iMTk1LjY3IiB5PSIzMTguNTUyIj4mIzI3OTc5OyYjMzU3OTc7JiMzMjUzNDsmIzIwODg5OzwvdGV4dD48L2c+PCEtLWVudGl0eSBkb2MtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJkb2MiIGRhdGEtc291cmNlLWxpbmU9IjE4IiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0U4RUFGNiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMzRjUxQjU7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTAxLjQyMjkiIHg9IjM1My45NCIgeT0iMjc5LjI2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjgxLjQyMjkiIHg9IjM2My45NCIgeT0iMzAyLjI1NTEiPkRvYyBBZ2VudDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuOTk5OCIgeD0iMzYzLjk0IiB5PSIzMTguNTUyIj4mIzI1OTkxOyYjMjY3MjM7JiMyOTk4MzsmIzI1MTA0OzwvdGV4dD48L2c+PCEtLWVudGl0eSByZXN1bHQtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJyZXN1bHQiIGRhdGEtc291cmNlLWxpbmU9IjIwIiBpZD0iZW50MDAwNiI+PHJlY3QgZmlsbD0iI0M4RTZDOSIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI3NS45OTk4IiB4PSIyMDAuNjUiIHk9IjM5Mi44NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1MC4wNjY0IiB4PSIyMTAuNjUiIHk9IjQxNS44NTUxIj5SZXN1bHQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU1Ljk5OTgiIHg9IjIxMC42NSIgeT0iNDMyLjE1MiI+JiMyNTk3MjsmIzIxNTEyOyYjMzI0Njc7JiMyNjUyNDs8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjE1IiBkYXRhLXNvdXJjZS1saW5lPSIzNCIgaWQ9ImVudDAwMTYiPjxwYXRoIGQ9Ik0xODIuNjUsMTEgTDE4Mi42NSwxMDQuNjY0MSBBMCwwIDAgMCAwIDE4Mi42NSwxMDQuNjY0MSBMMjM0LjY1LDEwNC42NjQxIEwyMzguNjUsMTY1LjM3IEwyNDIuNjUsMTA0LjY2NDEgTDI5NC42NTAxLDEwNC42NjQxIEEwLDAgMCAwIDAgMjk0LjY1MDEsMTA0LjY2NDEgTDI5NC42NTAxLDIxIEwyODQuNjUwMSwxMSBMMTgyLjY1LDExIEEwLDAgMCAwIDAgMTgyLjY1LDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTI4NC42NTAxLDExIEwyODQuNjUwMSwyMSBMMjk0LjY1MDEsMjEgTDI4NC42NTAxLDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkxLjAwMDEiIHg9IjE4OC42NSIgeT0iMjguMDY2OSI+JiMyMDE1NDsmIzMxODY3OyYjMjQwMzc7JiMzMTI0MzsmIzI0MDcyOyYjMjUxOTg7JiMyODQzNjs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjY4LjA5MTQiIHg9IjE4OC42NSIgeT0iNDMuMTk5NyI+IiYjMjM1NDg7JiMyODQzNjsiICYjMzUyODI7JiMzMzM5NDs8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjE4My42NSIgeDI9IjI5My42NTAxIiB5MT0iNDYuMjY1NiIgeTI9IjQ2LjI2NTYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzguMDAwMSIgeD0iMTg4LjY1IiB5PSI2Mi4zMzI1Ij4mIzM1Nzc0OyYjMzU3NDU7JiMyMTMyNzsmIzIwMzE2OyYjMjcxNjk7JiMyNDMzNTs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4LjAwMDEiIHg9IjE4OC42NSIgeT0iNzcuNDY1MyI+JiMyMzQ1MDsmIzIwMDQxOyYjMzY4OTA7JiMyMDQ0OTsmIzIxMzI3OyYjMzU3NTg7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OC4wMDAxIiB4PSIxODguNjUiIHk9IjkyLjU5ODEiPiYjMjI3ODg7JiMyOTcwMjsmIzIwOTE0OyYjMzEzNjE7JiMyNDMyMjsmIzI0MTIwOzwvdGV4dD48L2c+PCEtLWxpbmsgY29vcmQgdG8gY29kZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDAzIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJsbms3Ij48cGF0aCBkPSJNMTk5LjQyLDIxOC41NyBDMTcxLjcxLDIzNi42NSAxMzkuNzQ1MiwyNTcuNTExNyAxMTIuMDE1MiwyNzUuNjAxNyIgZmlsbD0ibm9uZSIgaWQ9ImNvb3JkLXRvLWNvZGUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjEwNi45OSwyNzguODgsMTE2LjcxMzQsMjc3LjMxMjcsMTExLjE3NzcsMjc2LjE0ODEsMTEyLjM0MjMsMjcwLjYxMjQsMTA2Ljk5LDI3OC44OCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBjb29yZCB0byB0ZXN0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDIiIGRhdGEtZW50aXR5LTI9ImVudDAwMDQiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMyIgaWQ9ImxuazgiPjxwYXRoIGQ9Ik0yMzguNjUsMjE4LjU3IEMyMzguNjUsMjM2LjcxIDIzOC42NSwyNTQuOTYgMjM4LjY1LDI3My4wOCIgZmlsbD0ibm9uZSIgaWQ9ImNvb3JkLXRvLXRlc3QiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjIzOC42NSwyNzkuMDgsMjQyLjY1LDI3MC4wOCwyMzguNjUsMjc0LjA4LDIzNC42NSwyNzAuMDgsMjM4LjY1LDI3OS4wOCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBjb29yZCB0byBkb2MtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMiIgZGF0YS1lbnRpdHktMj0iZW50MDAwNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI0IiBpZD0ibG5rOSI+PHBhdGggZD0iTTI3Ni43MywyMTguNTcgQzMwMy42MywyMzYuNjUgMzM0LjU1LDI1Ny40NDM1IDM2MS40NywyNzUuNTMzNSIgZmlsbD0ibm9uZSIgaWQ9ImNvb3JkLXRvLWRvYyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMzY2LjQ1LDI3OC44OCwzNjEuMjExLDI3MC41NDAyLDM2Mi4zLDI3Ni4wOTEyLDM1Ni43NDg5LDI3Ny4xODAyLDM2Ni40NSwyNzguODgiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgY29kZSB0byB0ZXN0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDQiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNiIgaWQ9ImxuazEwIj48cGF0aCBkPSJNMTI5LjY0LDMwNS41NiBDMTQ5LjUxLDMwNS41NiAxNTkuOCwzMDUuNTYgMTc5LjQzLDMwNS41NiIgZmlsbD0ibm9uZSIgaWQ9ImNvZGUtdGVzdCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMTIzLjY0LDMwNS41NiwxMzIuNjQsMzA5LjU2LDEyOC42NCwzMDUuNTYsMTMyLjY0LDMwMS41NiwxMjMuNjQsMzA1LjU2IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxODUuNDMsMzA1LjU2LDE3Ni40MywzMDEuNTYsMTgwLjQzLDMwNS41NiwxNzYuNDMsMzA5LjU2LDE4NS40MywzMDUuNTYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjYiIHg9IjE0MS40OCIgeT0iMjk4LjYyNjkiPiYjMjEzMjc7JiMyMDMxNjs8L3RleHQ+PC9nPjwhLS1saW5rIHRlc3QgdG8gZG9jLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDUiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNyIgaWQ9ImxuazExIj48cGF0aCBkPSJNMjk4LjA4LDMwNS41NiBDMzE3LjgsMzA1LjU2IDMyOC4wNywzMDUuNTYgMzQ3LjU3LDMwNS41NiIgZmlsbD0ibm9uZSIgaWQ9InRlc3QtZG9jIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyOTIuMDgsMzA1LjU2LDMwMS4wOCwzMDkuNTYsMjk3LjA4LDMwNS41NiwzMDEuMDgsMzAxLjU2LDI5Mi4wOCwzMDUuNTYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM1My41NywzMDUuNTYsMzQ0LjU3LDMwMS41NiwzNDguNTcsMzA1LjU2LDM0NC41NywzMDkuNTYsMzUzLjU3LDMwNS41NiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyNiIgeD0iMzA5Ljc4IiB5PSIyOTguNjI2OSI+JiMyMTMyNzsmIzIwMzE2OzwvdGV4dD48L2c+PCEtLWxpbmsgY29kZSB0byByZXN1bHQtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMyIgZGF0YS1lbnRpdHktMj0iZW50MDAwNiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI5IiBpZD0ibG5rMTIiPjxwYXRoIGQ9Ik0xMDYuODgsMzMyLjE2IEMxMzQuODgsMzUwLjQ0IDE2Ny4zMzQzLDM3MS42MjI0IDE5NS4xNjQzLDM4OS43NzI0IiBmaWxsPSJub25lIiBpZD0iY29kZS10by1yZXN1bHQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjIwMC4xOSwzOTMuMDUsMTk0LjgzNjYsMzg0Ljc4MzEsMTk2LjAwMTksMzkwLjMxODcsMTkwLjQ2NjQsMzkxLjQ4NCwyMDAuMTksMzkzLjA1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIHRlc3QgdG8gcmVzdWx0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzMCIgaWQ9ImxuazEzIj48cGF0aCBkPSJNMjM4LjY1LDMzMi4xNiBDMjM4LjY1LDM1MC4zMSAyMzguNjUsMzY4LjU1IDIzOC42NSwzODYuNjciIGZpbGw9Im5vbmUiIGlkPSJ0ZXN0LXRvLXJlc3VsdCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjM4LjY1LDM5Mi42NywyNDIuNjUsMzgzLjY3LDIzOC42NSwzODcuNjcsMjM0LjY1LDM4My42NywyMzguNjUsMzkyLjY3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGRvYyB0byByZXN1bHQtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNSIgZGF0YS1lbnRpdHktMj0iZW50MDAwNiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjMxIiBpZD0ibG5rMTQiPjxwYXRoIGQ9Ik0zNjYuNTYsMzMyLjE2IEMzMzkuNjcsMzUwLjI0IDMwOC43MzkyLDM3MS4wMzIyIDI4MS44MTkyLDM4OS4xMzIyIiBmaWxsPSJub25lIiBpZD0iZG9jLXRvLXJlc3VsdCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjc2Ljg0LDM5Mi40OCwyODYuNTQwNiwzOTAuNzc3NywyODAuOTg5MywzODkuNjkwMiwyODIuMDc2OSwzODQuMTM4OCwyNzYuODQsMzkyLjQ4IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjw/cGxhbnR1bWwtc3JjIE5QNUZKemltNkNSbF9YSmxzYmtiSWkwNE9jWVFINGpwdDA3ams4ajlKMWlyczlMaG42NlExRmxKaktBOFFZajg4Qklqd2dPWDNrNkZEajdIUkZpb1NQOXpZemJuZnVKd2FsWHZWaV94bGhPVlkwUlA4ajNvaTRqSGstZEk1a1B1MnBRbXRRbnBqYXNUQWxDT1h2czZBcVpFVHlXY3RsUTRuUVh1WWJMLWJSbE9HcGMwNHJqV01sUzhsNDJXcmhnZm5JZFhDMy03TmtQUE4yVEtKQmRBSkVEWVJSY3NRWXFQWnQ2N3lBZC1xNWdTaG9wZ0diY2hHZ2JLUEdmb0FIUUNicWhGZ0ptdUpBdlU5eGpsMnUzUk82aUpZZlBMY3dpaTg2SndmWTU3N0s3bFQyUVNaRUJGVV83V0t6SmpKc0NFb1UxZGYycW9FRmduZHJtVW5TNm54OW9haTUxczFneW5FeVNVbHVrNmVyblhYemFwdXctSmpoaE01M3h3QmxsVFVGOFgtZFlNbVpvcmU1WFRoWXJMN281YTNiRHNzMHVqRnA0cHRmVklJVXZCUUtFRG1rQ29ULWlEQ1NMVzFUSERYUl9FS0JoQkoxTjhGOUZ5TnlsQ09tOHBjYXhESThXb0dLMm01aDFEeW14Z0lTRXhrX1h3OGMtX25rVnhTam9EVWR1SzM5SFVhOVUxLVlqMHlrcnpxaGpISWJhanpLZHl0dWFfREVENHZxQ1A3MmZILWdWWHB6eFZ0VEZtWnhPSXR6VllicFRubG9DeERfNzVkV25Vb1Y0TzRVZzBkazhWPz48L2c+PC9zdmc+'><p>在多 Agent 系统中，人类工程师的角色更像是一个“导演”—— 设计 Agent 之间的协作模式，定义通信协议，处理冲突和异常。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>Agent-Oriented Engineering 不仅仅是一种新的技术范式，更是对工程师角色的重新定义。</p><p>在这个转变中，我们失去的是“写代码的成就感”—— 那种亲手敲出一行行代码、看着测试变绿的满足感。但我们获得的是更高层次的创造力 —— 设计系统、定义约束、把控质量。</p><p>从 Programming 到 Engineering 的转变也是如此。当 AI 接管了 Programming 的工作，人类工程师终于可以专注于我们真正擅长的事情：<strong>理解问题本质、做出权衡决策、承担工程责任</strong>。</p><p>记得在《心之所向，道之所在》一文中，我提到过“垫脚石”的概念 —— 那些看似与最终目标无关的发现，可能是通往成功的关键一步。今天我们探索的 Agent-Oriented Engineering，或许就是软件工程下一个十年的垫脚石。</p><p>正如 Steve Jobs 所言：</p><blockquote><p>You can’t connect the dots looking forward; you can only connect them looking backwards.</p></blockquote><p>我们今天对 Agent 的理解和实践，终将成为未来软件工程的基石。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近这一年，AI 辅助编程工具如雨后春笋般涌现，从 GitHub Copilot 到 Cursor，再到 Claude Code，每一个都号称能让程序员的效率翻倍。作为一个在代码世界里摸爬滚打了 20 多年的老兵，我不禁开始思考：当 AI</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Engineering" scheme="https://johnsonlee.io/categories/computer-science/Engineering/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>The Last Paradigm Shift in Software Engineering</title>
    <link href="https://johnsonlee.io/2026/02/10/agent-oriented-engineering.en/"/>
    <id>https://johnsonlee.io/2026/02/10/agent-oriented-engineering.en/</id>
    <published>2026-02-10T09:00:00.000Z</published>
    <updated>2026-02-10T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Over the past year, AI-assisted programming tools have emerged en masse – from GitHub Copilot to Cursor to Claude Code, each claiming to double programmer productivity. As a veteran who’s been writing code for over 20 years, I can’t help but ask: when AI can understand our intent and autonomously complete tasks, shouldn’t our role change accordingly?</p><p>The answer is yes.</p><p>As Programming is gradually taken over by AI, the value of human engineers will increasingly reside at the <strong>Engineering</strong> level – system design, architecture decisions, constraint definition, quality control. I call this new engineering paradigm <strong>Agent-Oriented Engineering (AOE)</strong>.</p><h2 id="Programming-vs-Engineering"><a href="#Programming-vs-Engineering" class="headerlink" title="Programming vs Engineering"></a>Programming vs Engineering</h2><p>Before going further, I want to clarify the distinction between <strong>Programming</strong> and <strong>Engineering</strong>.</p><p><strong>Programming</strong> is about “how” – writing code, debugging, optimizing algorithms. This is the domain AI is rapidly mastering. Claude Code can already understand requirements, generate code, fix bugs, and even refactor.</p><p><strong>Engineering</strong> is about “what” and “why” – system architecture, technology selection, constraints, quality standards, risk assessment. This is the domain that requires human judgment and experience.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQ3NnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6OTMycHg7aGVpZ2h0OjQ3NnB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkzMiA0NzYiIHdpZHRoPSI5MzJweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgZW5nLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVuZyIgZGF0YS1zb3VyY2UtbGluZT0iMTQiIGlkPSJlbnQwMDAyIj48cmVjdCBmaWxsPSIjRTNGMkZEIiBoZWlnaHQ9IjMxOS4xOSIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNDI3IiB4PSIxMiIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2NS45NjY4IiB4PSIxOTIuNTE2NiIgeT0iMjYuOTk1MSI+JiMxNzE7aHVtYW4mIzE4Nzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk0Ljk5OSIgeD0iMTI2LjI1OTMiIHk9IjQzLjI5MiI+RW5naW5lZXJpbmc8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk4LjYwODQiIHg9IjIyNi4xMzIzIiB5PSI0My4yOTIiPihIdW1hbi1sZWQpPC90ZXh0PjwvZz48IS0tY2x1c3RlciBwcm9nLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InByb2ciIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0iZW50MDAwNyI+PHJlY3QgZmlsbD0iI0ZGRjNFMCIgaGVpZ2h0PSIyNjcuMTkiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjM5OCIgeD0iNDc5IiB5PSIxOTUuNTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyOS41OTk2IiB4PSI2NjMuMjAwMiIgeT0iMjEwLjU4NTEiPiYjMTcxO2FpJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDcuMTE5MSIgeD0iNTkyLjUyIiB5PSIyMjYuODgyIj5Qcm9ncmFtbWluZzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTguOTY2OCIgeD0iNzA0LjUxMzIiIHk9IjIyNi44ODIiPihBSS1sZWQpPC90ZXh0PjwvZz48IS0tZW50aXR5IGFyY2gtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJlbmcuYXJjaCIgZGF0YS1zb3VyY2UtbGluZT0iMTUiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE1OS4xMTEzIiB4PSIzNi40NCIgeT0iNzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSI5Mi42OTU0IiB5PSI5My45OTUxIj4mIzE3MTt0YXNrJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMzkuMTExMyIgeD0iNDYuNDQiIHk9IjExMC4yOTIiPkFyY2hpdGVjdHVyZSBEZXNpZ248L3RleHQ+PC9nPjwhLS1lbnRpdHkgY29ucy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVuZy5jb25zIiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDQiPjxyZWN0IGZpbGw9IiNGRkZGRkYiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTY0LjgyNjIiIHg9IjIzMC41OSIgeT0iNzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSIyODkuNzAyOCIgeT0iOTMuOTk1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQ0LjgyNjIiIHg9IjI0MC41OSIgeT0iMTEwLjI5MiI+Q29uc3RyYWludCBEZWZpbml0aW9uPC90ZXh0PjwvZz48IS0tZW50aXR5IHF1YWwtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJlbmcucXVhbCIgZGF0YS1zb3VyY2UtbGluZT0iMTciIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE0NS43MDYxIiB4PSI0My4xNSIgeT0iMjU0LjU5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXN0eWxlPSJpdGFsaWMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDYuNjAwNiIgeD0iOTIuNzAyNyIgeT0iMjc3LjU4NTEiPiYjMTcxO3Rhc2smIzE4Nzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEyNS43MDYxIiB4PSI1My4xNSIgeT0iMjkzLjg4MiI+UXVhbGl0eSBTdGFuZGFyZHM8L3RleHQ+PC9nPjwhLS1lbnRpdHkgcmlzay0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVuZy5yaXNrIiBkYXRhLXNvdXJjZS1saW5lPSIxOCIgaWQ9ImVudDAwMDYiPjxyZWN0IGZpbGw9IiNGRkZGRkYiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTM3LjQ0ODIiIHg9IjIyNC4yOCIgeT0iMjU0LjU5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXN0eWxlPSJpdGFsaWMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDYuNjAwNiIgeD0iMjY5LjcwMzgiIHk9IjI3Ny41ODUxIj4mIzE3MTt0YXNrJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTcuNDQ4MiIgeD0iMjM0LjI4IiB5PSIyOTMuODgyIj5SaXNrIEFzc2Vzc21lbnQ8L3RleHQ+PC9nPjwhLS1lbnRpdHkgY29kZS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InByb2cuY29kZSIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJlbnQwMDA4Ij48cmVjdCBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEzOC4zOTE2IiB4PSI1MDIuOCIgeT0iMjU0LjU5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXN0eWxlPSJpdGFsaWMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDYuNjAwNiIgeD0iNTQ4LjY5NTUiIHk9IjI3Ny41ODUxIj4mIzE3MTt0YXNrJiMxODc7PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTguMzkxNiIgeD0iNTEyLjgiIHk9IjI5My44ODIiPkNvZGUgR2VuZXJhdGlvbjwvdGV4dD48L2c+PCEtLWVudGl0eSBkZWJ1Zy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InByb2cuZGVidWciIGRhdGEtc291cmNlLWxpbmU9IjIzIiBpZD0iZW50MDAwOSI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxNTguMjcwNSIgeD0iNjc1Ljg2IiB5PSIyNTQuNTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSI3MzEuNjk1IiB5PSIyNzcuNTg1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTM4LjI3MDUiIHg9IjY4NS44NiIgeT0iMjkzLjg4MiI+RGVidWdnaW5nICZhbXA7IEZpeGluZzwvdGV4dD48L2c+PCEtLWVudGl0eSByZWZhY3Rvci0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InByb2cucmVmYWN0b3IiIGRhdGEtc291cmNlLWxpbmU9IjI0IiBpZD0iZW50MDAxMCI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMDEuMDA1OSIgeD0iNTIxLjUiIHk9IjM4Ni4xOSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC1zdHlsZT0iaXRhbGljIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ2LjYwMDYiIHg9IjU0OC43MDI2IiB5PSI0MDkuMTg1MSI+JiMxNzE7dGFzayYjMTg3OzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODEuMDA1OSIgeD0iNTMxLjUiIHk9IjQyNS40ODIiPlJlZmFjdG9yaW5nPC90ZXh0PjwvZz48IS0tZW50aXR5IHRlc3QtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJwcm9nLnRlc3QiIGRhdGEtc291cmNlLWxpbmU9IjI1IiBpZD0iZW50MDAxMSI+PHJlY3QgZmlsbD0iI0ZGRkZGRiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMDUuMDI1NCIgeD0iNjU3LjQ5IiB5PSIzODYuMTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtc3R5bGU9Iml0YWxpYyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0Ni42MDA2IiB4PSI2ODYuNzAyNCIgeT0iNDA5LjE4NTEiPiYjMTcxO3Rhc2smIzE4Nzs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg1LjAyNTQiIHg9IjY2Ny40OSIgeT0iNDI1LjQ4MiI+VGVzdCBXcml0aW5nPC90ZXh0PjwvZz48IS0tbGluayBlbmcgdG8gcHJvZy0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA3IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjgiIGlkPSJsbmsxMiI+PHBhdGggZD0iTTQzOS4yODE3LDEwMC41ODMyIEM0MzkuNDQ0MywxMDAuNjI3NyA0MzkuNjA5MiwxMDAuNjcyOCA0MzkuNzc2MywxMDAuNzE4NiBDNDQwLjExMDUsMTAwLjgxIDQ0MC40NTM3LDEwMC45MDM5IDQ0MC44MDU4LDEwMS4wMDAxIEM0NDYuNDM5NCwxMDIuNTM5IDQ1NC4zNDk1LDEwNC42Nzg0IDQ2NC4xNDAyLDEwNy4yNzIzIEM0ODMuNzIxNiwxMTIuNDYwMyA1MTAuODI1NiwxMTkuNDY2OSA1NDIuMjg2MywxMjcuMTI2MiBDNjA1LjIwNzUsMTQyLjQ0NSA2ODUuNTU1LDE2MC4zNzUgNzU4LDE3MS41OSBDNzc4LjI4LDE3NC43MyA4MzQuNzgsMTY1LjgzIDg1MCwxNzkuNTkgQzg1NC4xNDEzLDE4My4zMzUgODU3LjU1MTEsMTg3LjY3NyA4NjAuMzQ2OCwxOTIuNDEyNSBDODYwLjY5NjMsMTkzLjAwNDQgODYxLjAzNjIsMTkzLjYwMjUgODYxLjM2NjcsMTk0LjIwNjMgQzg2MS41MzE5LDE5NC41MDgyIDg2MS42OTQ4LDE5NC44MTE2IDg2MS44NTU0LDE5NS4xMTYzIEM4NjEuOTM1NywxOTUuMjY4NyA4NTkuMjU5NSwxOTAuMDkxOCA4NTkuMzM4NiwxOTAuMjQ0OCIgZmlsbD0ibm9uZSIgaWQ9ImVuZy10by1wcm9nIiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjI7Ii8+PHBvbHlnb24gZmlsbD0iIzY2NjY2NiIgcG9pbnRzPSI4NjIuMDk0NiwxOTUuNTc0NCw4NjEuNTEzNywxODUuNzQyNyw4NTkuNzk4LDE5MS4xMzMxLDg1NC40MDc2LDE4OS40MTczLDg2Mi4wOTQ2LDE5NS41NzQ0IiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjI7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzOS42ODU1IiB4PSI3NjcuOTAwNCIgeT0iMTY3LjU4NTEiPkdvYWxzICsgQ29uc3RyYWludHM8L3RleHQ+PC9nPjw/cGxhbnR1bWwtc3JjIFRQOURKeUNtMzhSbF9ITGNJMFc2YXMxMzcxMUM2Y21UTjEwQzkwdzhXc2JENWhMRFhmRUFadWRfWmxpMUF4M2NyQnhzZV9YemRHcV9mdW5XYVE4c1dLa3FNSTFaMWF5TzlPZmpSazlwY3JnNnJ4ZHNyQVo3ejhudndhRGhfMUtBRnNBRHdWaHdoVnVXRTNXQzZiTWNvQURIQVM0bzAzYmRsc3l4RVBkZDZQaFg0M09kV3gwVlpqU3RlSXV3bVowU0pGUk5UdFhxWVZIS212U1RiY0ZZb2pCY0tOYkFWTFAxUjhaWE8zX3UzOEJMWTlya1RzQUtEYUlpWlVmc09Wa1ljQXdOS2hwSjBOSDBIaTVndkNmSDBuem5MRG1WLVBtOW5rSXFDWU02ZWlGdFo3LVhTc2tTUHpjOTUtSFA2LXNyaFIxOEFndE9KT3dmemt6bUFxQUM3QmlJVUg2cjVQYmZieTM4RU44azgtREJXMGxqMV9ZUm5aTFI5TGxDd1pINmJ3aWU1YkEyVVpGQl92dllXWWI5bmpYbThyaFJRNkR3b2ZLYWhzMEJHbHFjN29LSjV0QXg3dGJ2YVJWeXRTdHJWb2ptSHl4M0ZLbDJEVTRCZVVjLU03M2xlTnVsVXR3a2V5SDhOQVZ6bnp3bWlkbUM3TzJmblRKMUJnbnN2bTB3Tm0wMD8+PC9nPjwvc3ZnPg=='><p>This doesn’t mean humans no longer need to understand code – quite the opposite. We need a deeper understanding of code and systems to effectively guide AI Agents. But our primary focus shifts from “writing code” to “designing systems” and “defining constraints.”</p><h2 id="Why-Now"><a href="#Why-Now" class="headerlink" title="Why Now?"></a>Why Now?</h2><p>Over the past several decades, human-computer interaction has undergone a fascinating evolution:</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjE5NXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6OTI5cHg7aGVpZ2h0OjE5NXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkyOSAxOTUiIHdpZHRoPSI5MjlweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBjbGktLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJjbGkiIGRhdGEtc291cmNlLWxpbmU9IjEwIiBpZD0iZW50MDAwMiI+PHJlY3QgZmlsbD0iI0IzRTVGQyIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTM2LjU1OTYiIHg9IjY1LjM3IiB5PSIxMiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTYuNTU5NiIgeD0iNzUuMzciIHk9IjM0Ljk5NTEiPkNvbW1hbmQgTGluZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjEuNzA0MSIgeD0iNzUuMzciIHk9IjUxLjI5MiI+Q0xJPC90ZXh0PjwvZz48IS0tZW50aXR5IGd1aS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9Imd1aSIgZGF0YS1zb3VyY2UtbGluZT0iMTEiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI3LjUiIHJ5PSI3LjUiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxNzEuNjQ4NCIgeD0iMjY2LjgzIiB5PSIxMiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNTEuNjQ4NCIgeD0iMjc2LjgzIiB5PSIzNC45OTUxIj5HcmFwaGljYWwgSW50ZXJmYWNlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyNS4yMjQ2IiB4PSIyNzYuODMiIHk9IjUxLjI5MiI+R1VJPC90ZXh0PjwvZz48IS0tZW50aXR5IHNvZnQtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJzb2Z0IiBkYXRhLXNvdXJjZS1saW5lPSIxMiIgaWQ9ImVudDAwMDQiPjxyZWN0IGZpbGw9IiNGRkUwQjIiIGhlaWdodD0iNTIuNTkzOCIgcng9IjcuNSIgcnk9IjcuNSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE4NS41NDU5IiB4PSI1MjAuODgiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE2NS41NDU5IiB4PSI1MzAuODgiIHk9IjM0Ljk5NTEiPlNwZWNpYWxpemVkIFNvZnR3YXJlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI5NS42NDE2IiB4PSI1MzAuODgiIHk9IjUxLjI5MiI+RG9tYWluIFRvb2xzPC90ZXh0PjwvZz48IS0tZW50aXR5IG5sLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0ibmwiIGRhdGEtc291cmNlLWxpbmU9IjEzIiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0Y4QkJEOSIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTYxLjEzNDgiIHg9Ijc1My4wOSIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQxLjEzNDgiIHg9Ijc2My4wOSIgeT0iMzQuOTk1MSI+TmF0dXJhbCBMYW5ndWFnZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iOTIuNTU4NiIgeD0iNzYzLjA5IiB5PSI1MS4yOTIiPkNvbnZlcnNhdGlvbjwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OOSIgZGF0YS1zb3VyY2UtbGluZT0iMjAiIGlkPSJlbnQwMDEwIj48cGF0aCBkPSJNMTEsMTMzLjE2IEwxMSwxNzMuNDI1NiBBMCwwIDAgMCAwIDExLDE3My40MjU2IEwyMDguMzA2MiwxNzMuNDI1NiBBMCwwIDAgMCAwIDIwOC4zMDYyLDE3My40MjU2IEwyMDguMzA2MiwxNDMuMTYgTDE5OC4zMDYyLDEzMy4xNiBMMTE3LjgxLDEzMy4xNiBMMTI4LjIxLDY0Ljk0IEwxMDkuODEsMTMzLjE2IEwxMSwxMzMuMTYgQTAsMCAwIDAgMCAxMSwxMzMuMTYiIGZpbGw9IiNGRkZGRkYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNMTk4LjMwNjIsMTMzLjE2IEwxOTguMzA2MiwxNDMuMTYgTDIwOC4zMDYyLDE0My4xNiBMMTk4LjMwNjIsMTMzLjE2IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEyNy44MjkxIiB4PSIxNyIgeT0iMTUwLjIyNjkiPkhpZ2ggbGVhcm5pbmcgY3VydmU8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE3Ni4zMDYyIiB4PSIxNyIgeT0iMTY1LjM1OTciPk11c3QgbWVtb3JpemUgY29tbWFuZHM8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjEyIiBkYXRhLXNvdXJjZS1saW5lPSIyNSIgaWQ9ImVudDAwMTMiPjxwYXRoIGQ9Ik0yNDIuODcsMTMzLjE2IEwyNDIuODcsMTczLjQyNTYgQTAsMCAwIDAgMCAyNDIuODcsMTczLjQyNTYgTDQ2Mi40NDM3LDE3My40MjU2IEEwLDAgMCAwIDAgNDYyLjQ0MzcsMTczLjQyNTYgTDQ2Mi40NDM3LDE0My4xNiBMNDUyLjQ0MzcsMTMzLjE2IEwzNTYuNjUsMTMzLjE2IEwzNTIuNjUsNjQuOTQgTDM0OC42NSwxMzMuMTYgTDI0Mi44NywxMzMuMTYgQTAsMCAwIDAgMCAyNDIuODcsMTMzLjE2IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTQ1Mi40NDM3LDEzMy4xNiBMNDUyLjQ0MzcsMTQzLjE2IEw0NjIuNDQzNywxNDMuMTYgTDQ1Mi40NDM3LDEzMy4xNiIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjguMTIxMSIgeD0iMjQ4Ljg3IiB5PSIxNTAuMjI2OSI+SW50dWl0aXZlIGJ1dCBsaW1pdGVkPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOTguNTczNyIgeD0iMjQ4Ljg3IiB5PSIxNjUuMzU5NyI+RmVhdHVyZXMgcHJlc2V0IGJ5IGRldmVsb3BlcnM8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjE1IiBkYXRhLXNvdXJjZS1saW5lPSIzMCIgaWQ9ImVudDAwMTYiPjxwYXRoIGQ9Ik00OTcuODQsMTI1LjU5IEw0OTcuODQsMTgwLjk4ODQgQTAsMCAwIDAgMCA0OTcuODQsMTgwLjk4ODQgTDcyOS40NjE2LDE4MC45ODg0IEEwLDAgMCAwIDAgNzI5LjQ2MTYsMTgwLjk4ODQgTDcyOS40NjE2LDEzNS41OSBMNzE5LjQ2MTYsMTI1LjU5IEw2MTcuNjUsMTI1LjU5IEw2MTMuNjUsNjQuOTQgTDYwOS42NSwxMjUuNTkgTDQ5Ny44NCwxMjUuNTkgQTAsMCAwIDAgMCA0OTcuODQsMTI1LjU5IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTcxOS40NjE2LDEyNS41OSBMNzE5LjQ2MTYsMTM1LjU5IEw3MjkuNDYxNiwxMzUuNTkgTDcxOS40NjE2LDEyNS41OSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1Ni4xOTU4IiB4PSI1MDMuODQiIHk9IjE0Mi42NTY5Ij5Qb3dlcmZ1bDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjEwLjYyMTYiIHg9IjUwMy44NCIgeT0iMTU3Ljc4OTciPkJ1dCByZXF1aXJlcyBzcGVjaWFsaXplZCB0cmFpbmluZzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTExLjg4MzgiIHg9IjUwMy44NCIgeT0iMTcyLjkyMjUiPihQUywgRXhjZWwsIElERS4uLik8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjE4IiBkYXRhLXNvdXJjZS1saW5lPSIzNiIgaWQ9ImVudDAwMTkiPjxwYXRoIGQ9Ik03NjQuOTEsMTMzLjE2IEw3NjQuOTEsMTczLjQyNTYgQTAsMCAwIDAgMCA3NjQuOTEsMTczLjQyNTYgTDkxNC40MDU2LDE3My40MjU2IEEwLDAgMCAwIDAgOTE0LjQwNTYsMTczLjQyNTYgTDkxNC40MDU2LDE0My4xNiBMOTA0LjQwNTYsMTMzLjE2IEw4NDIuNjEsMTMzLjE2IEw4MzUuMDEsNjQuOTQgTDgzNC42MSwxMzMuMTYgTDc2NC45MSwxMzMuMTYgQTAsMCAwIDAgMCA3NjQuOTEsMTMzLjE2IiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTkwNC40MDU2LDEzMy4xNiBMOTA0LjQwNTYsMTQzLjE2IEw5MTQuNDA1NiwxNDMuMTYgTDkwNC40MDU2LDEzMy4xNiIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4OC42OTU4IiB4PSI3NzAuOTEiIHk9IjE1MC4yMjY5Ij5aZXJvIGJhcnJpZXI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEyOC40OTU2IiB4PSI3NzAuOTEiIHk9IjE2NS4zNTk3Ij5KdXN0IHNwZWFrIG5hdHVyYWxseTwvdGV4dD48L2c+PCEtLWxpbmsgY2xpIHRvIGd1aS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDAzIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTUiIGlkPSJsbms2Ij48cGF0aCBkPSJNMjAyLjM1LDM4LjI5IEMyMjIuNjcsMzguMjkgMjM5LjE4LDM4LjI5IDI2MC40NSwzOC4yOSIgZmlsbD0ibm9uZSIgaWQ9ImNsaS10by1ndWkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjI2Ni40NSwzOC4yOSwyNTcuNDUsMzQuMjksMjYxLjQ1LDM4LjI5LDI1Ny40NSw0Mi4yOSwyNjYuNDUsMzguMjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNC4xMzIzIiB4PSIyMzIuMzgiIHk9IjMxLjM1NjkiPiYjMTYwOzwvdGV4dD48L2c+PCEtLWxpbmsgZ3VpIHRvIHNvZnQtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMyIgZGF0YS1lbnRpdHktMj0iZW50MDAwNCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0ibG5rNyI+PHBhdGggZD0iTTQzOC44NCwzOC4yOSBDNDY1LjEyLDM4LjI5IDQ4OC4xMiwzOC4yOSA1MTQuODIsMzguMjkiIGZpbGw9Im5vbmUiIGlkPSJndWktdG8tc29mdCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNTIwLjgyLDM4LjI5LDUxMS44MiwzNC4yOSw1MTUuODIsMzguMjksNTExLjgyLDQyLjI5LDUyMC44MiwzOC4yOSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0LjEzMjMiIHg9IjQ3Ny42OCIgeT0iMzEuMzU2OSI+JiMxNjA7PC90ZXh0PjwvZz48IS0tbGluayBzb2Z0IHRvIG5sLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDUiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxNyIgaWQ9ImxuazgiPjxwYXRoIGQ9Ik03MDYuNjMsMzguMjkgQzcyMiwzOC4yOSA3MzEuODEsMzguMjkgNzQ2Ljg1LDM4LjI5IiBmaWxsPSJub25lIiBpZD0ic29mdC10by1ubCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNzUyLjg1LDM4LjI5LDc0My44NSwzNC4yOSw3NDcuODUsMzguMjksNzQzLjg1LDQyLjI5LDc1Mi44NSwzOC4yOSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0LjEzMjMiIHg9IjcyNy43NiIgeT0iMzEuMzU2OSI+JiMxNjA7PC90ZXh0PjwvZz48P3BsYW50dW1sLXNyYyBUTEIxWmpDbTRCdHhBdVJzMGo1azFRbU14TjkwOGNjbzU5TkxZaTg1U042SlFNaEx5T0k5dFI4V19mc244dkxNUTdzbWhFVHZSX29VdnZkVk9lVkdNc3NTNmRSNnpQZnIxc2pUeHJnY3U5ZzJCMzRTamlSWm9OczM2bnNpaHladlVvdHl6c29xTElTNVpCTk5oaEs4bG5OOC1abmdpS0U2THpTOW9lYVJ2NTVfVWZNTS1nRktGLU9hb21oZ0VrcVFNMWc3TVZSVDVTbDUxRkcwakpLbXBRX0F3d2V1OXpvbnhoVWNyWE9NcFlEbFQ5cnVUcno3TlhrNEx6b0tSdWhSU3p3Z25yZWljNV9PbThlc19nMHY0VVZLSUpCbVhTV0VJTTZHSXZYTUxWYW9WdHFrU1F6ek82Y3k1MkplVGRtbGtKdG9lQnFYYi1aRTJsYWNwLVV0SWFLSmJzcFFoUnp5YnJ4czVZT0o1R3o3RDdMQlMzZVRTUDU5ZzdCYTRUUmFGTkwwY3ZZQlBGajFnaTJZUGNUUzJ0TldGR2h3QUdtVUVrbzhuSU5LT3hBM0dlYXRnbG9kOUd5SGJpR09aM1R4a0dhVWhFYmE0MWgxQXVuc1NPMVVEbEltVmZJWHNBRWJObG0tQkhmajJGazEzbDh2bVNlbjVyZDY3eTU0aVU3YTZwbkJ5YzkwUWZ1X2gyd1dfNWNabE8zNWw5cERQWS1VUms2WVFmUHpHb1FQT3NRM2Q2SzJWT3AtZk83VVdIa19vWnVVTFZ1Mj8+PC9nPjwvc3ZnPg=='><p>In the past, getting a computer to do something required learning its “language” – whether command-line, GUI, or the proprietary logic of specialized software. Want a poster? Learn Photoshop. Want data analysis? Learn Excel. Want to build an app? Learn a programming language.</p><p>Every piece of specialized software is a hurdle. Every programming language is a wall.</p><p>But now, all of this is changing.</p><p>When AI can understand natural language, humans can finally express needs in <strong>the most natural way</strong> – talking. No specialized software to learn, no programming language to master. Just describe clearly what you want.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjEyMXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MTA4MnB4O2hlaWdodDoxMjFweDtiYWNrZ3JvdW5kOiNGRkZGRkY7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMDgyIDEyMSIgd2lkdGg9IjEwODJweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgVHJhZGl0aW9uYWwgQXBwcm9hY2gtLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iVHJhZGl0aW9uYWwgQXBwcm9hY2giIGRhdGEtc291cmNlLWxpbmU9IjE0IiBpZD0iZW50MDAwMiI+PHBhdGggZD0iTTEzLjUsMTEgTDE1Ni44MTI1LDExIEEzLjc1LDMuNzUgMCAwIDEgMTU5LjMxMjUsMTMuNSBMMTY2LjMxMjUsMzAuOTY4OCBMNjExLjUsMzAuOTY4OCBBMi41LDIuNSAwIDAgMSA2MTQsMzMuNDY4OCBMNjE0LDEwNC40NCBBMi41LDIuNSAwIDAgMSA2MTEuNSwxMDYuOTQgTDEzLjUsMTA2Ljk0IEEyLjUsMi41IDAgMCAxIDExLDEwNC40NCBMMTEsMTMuNSBBMi41LDIuNSAwIDAgMSAxMy41LDExIiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgeDE9IjExIiB4Mj0iMTY2LjMxMjUiIHkxPSIzMC45Njg4IiB5Mj0iMzAuOTY4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDIuMzEyNSIgeD0iMTUiIHk9IjI0LjEzODciPlRyYWRpdGlvbmFsIEFwcHJvYWNoPC90ZXh0PjwvZz48IS0tY2x1c3RlciBBT0UgQXBwcm9hY2gtLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQU9FIEFwcHJvYWNoIiBkYXRhLXNvdXJjZS1saW5lPSIyNSIgaWQ9ImVudDAwMTAiPjxwYXRoIGQ9Ik02NDAuNSwxMSBMNzM3Ljc0NjEsMTEgQTMuNzUsMy43NSAwIDAgMSA3NDAuMjQ2MSwxMy41IEw3NDcuMjQ2MSwzMC45Njg4IEwxMDY0LjUsMzAuOTY4OCBBMi41LDIuNSAwIDAgMSAxMDY3LDMzLjQ2ODggTDEwNjcsMTA0LjQ0IEEyLjUsMi41IDAgMCAxIDEwNjQuNSwxMDYuOTQgTDY0MC41LDEwNi45NCBBMi41LDIuNSAwIDAgMSA2MzgsMTA0LjQ0IEw2MzgsMTMuNSBBMi41LDIuNSAwIDAgMSA2NDAuNSwxMSIgZmlsbD0iI0U4RjVFOSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHgxPSI2MzgiIHgyPSI3NDcuMjQ2MSIgeTE9IjMwLjk2ODgiIHkyPSIzMC45Njg4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijk2LjI0NjEiIHg9IjY0MiIgeT0iMjQuMTM4NyI+QU9FIEFwcHJvYWNoPC90ZXh0PjwvZz48IS0tZW50aXR5IHJlcTEtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJUcmFkaXRpb25hbCBBcHByb2FjaC5yZXExIiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNGRkNERDIiIGhlaWdodD0iMzMuOTY4OCIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iOTguNDUxMiIgeD0iMjYuNzciIHk9IjQ5Ljk5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc4LjQ1MTIiIHg9IjM2Ljc3IiB5PSI3MS4xMjg3Ij5IdW1hbiBOZWVkPC90ZXh0PjwvZz48IS0tZW50aXR5IGxlYXJuLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iVHJhZGl0aW9uYWwgQXBwcm9hY2gubGVhcm4iIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGQ0REMiIgaGVpZ2h0PSI0Ny45Mzc1IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxODIuODMyIiB4PSIxNjAuNTgiIHk9IjQzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE2Mi44MzIiIHg9IjE3MC41OCIgeT0iNjQuMTM4NyI+TGVhcm4gU3BlY2lhbGl6ZWQgU29mdHdhcmU8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0NC4yOTg4IiB4PSIxNzAuNTgiIHk9Ijc4LjEwNzQiPihQaG90b3Nob3AvRXhjZWwvSURFLi4uKTwvdGV4dD48L2c+PCEtLWVudGl0eSBtYW51YWwtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJUcmFkaXRpb25hbCBBcHByb2FjaC5tYW51YWwiIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0ZGQ0REMiIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMjcuMTM4NyIgeD0iMzc4LjQzIiB5PSI0OS45OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDcuMTM4NyIgeD0iMzg4LjQzIiB5PSI3MS4xMjg3Ij5NYW51YWwgT3BlcmF0aW9uPC90ZXh0PjwvZz48IS0tZW50aXR5IHJlc3VsdDEtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJUcmFkaXRpb25hbCBBcHByb2FjaC5yZXN1bHQxIiBkYXRhLXNvdXJjZS1saW5lPSIxOCIgaWQ9ImVudDAwMDYiPjxyZWN0IGZpbGw9IiNGRkNERDIiIGhlaWdodD0iMzMuOTY4OCIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iNTcuNjE3MiIgeD0iNTQwLjE5IiB5PSI0OS45OSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzNy42MTcyIiB4PSI1NTAuMTkiIHk9IjcxLjEyODciPlJlc3VsdDwvdGV4dD48L2c+PCEtLWVudGl0eSByZXEyLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQU9FIEFwcHJvYWNoLnJlcTIiIGRhdGEtc291cmNlLWxpbmU9IjI2IiBpZD0iZW50MDAxMSI+PHJlY3QgZmlsbD0iI0M4RTZDOSIgaGVpZ2h0PSI0Ny45Mzc1IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMzYuNjYwMiIgeD0iNjUzLjY3IiB5PSI0MyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3OC40NTEyIiB4PSI2NjMuNjciIHk9IjY0LjEzODciPkh1bWFuIE5lZWQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjExNi42NjAyIiB4PSI2NjMuNjciIHk9Ijc4LjEwNzQiPihOYXR1cmFsIExhbmd1YWdlKTwvdGV4dD48L2c+PCEtLWVudGl0eSBhZ2VudC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFPRSBBcHByb2FjaC5hZ2VudCIgZGF0YS1zb3VyY2UtbGluZT0iMjciIGlkPSJlbnQwMDEyIj48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjQ3LjkzNzUiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEzMi40NTkiIHg9IjgyNS43NyIgeT0iNDMiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTAzLjk3NDYiIHg9IjgzNS43NyIgeT0iNjQuMTM4NyI+QUkgVW5kZXJzdGFuZGluZzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTEyLjQ1OSIgeD0iODM1Ljc3IiB5PSI3OC4xMDc0Ij4rIEFnZW50IEV4ZWN1dGlvbjwvdGV4dD48L2c+PCEtLWVudGl0eSByZXN1bHQyLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQU9FIEFwcHJvYWNoLnJlc3VsdDIiIGRhdGEtc291cmNlLWxpbmU9IjI4IiBpZD0iZW50MDAxMyI+PHJlY3QgZmlsbD0iI0M4RTZDOSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI1Ny42MTcyIiB4PSI5OTMuMTkiIHk9IjQ5Ljk5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM3LjYxNzIiIHg9IjEwMDMuMTkiIHk9IjcxLjEyODciPlJlc3VsdDwvdGV4dD48L2c+PCEtLWxpbmsgcmVxMSB0byBsZWFybi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjAiIGlkPSJsbms3Ij48cGF0aCBkPSJNMTI1LjUsNjYuOTcgQzEzNy4wMyw2Ni45NyAxNDIuNTYsNjYuOTcgMTU0LjA5LDY2Ljk3IiBmaWxsPSJub25lIiBpZD0icmVxMS10by1sZWFybiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMTYwLjA5LDY2Ljk3LDE1MS4wOSw2Mi45NywxNTUuMDksNjYuOTcsMTUxLjA5LDcwLjk3LDE2MC4wOSw2Ni45NyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBsZWFybiB0byBtYW51YWwtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0ibG5rOCI+PHBhdGggZD0iTTM0My42Niw2Ni45NyBDMzU1LjE4LDY2Ljk3IDM2MC43MSw2Ni45NyAzNzIuMjMsNjYuOTciIGZpbGw9Im5vbmUiIGlkPSJsZWFybi10by1tYW51YWwiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM3OC4yMyw2Ni45NywzNjkuMjMsNjIuOTcsMzczLjIzLDY2Ljk3LDM2OS4yMyw3MC45NywzNzguMjMsNjYuOTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgbWFudWFsIHRvIHJlc3VsdDEtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNSIgZGF0YS1lbnRpdHktMj0iZW50MDAwNiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIyIiBpZD0ibG5rOSI+PHBhdGggZD0iTTUwNiw2Ni45NyBDNTE3LjMyLDY2Ljk3IDUyMi42NCw2Ni45NyA1MzMuOTYsNjYuOTciIGZpbGw9Im5vbmUiIGlkPSJtYW51YWwtdG8tcmVzdWx0MSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNTM5Ljk2LDY2Ljk3LDUzMC45Niw2Mi45Nyw1MzQuOTYsNjYuOTcsNTMwLjk2LDcwLjk3LDUzOS45Niw2Ni45NyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayByZXEyIHRvIGFnZW50LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMTEiIGRhdGEtZW50aXR5LTI9ImVudDAwMTIiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzMCIgaWQ9ImxuazE0Ij48cGF0aCBkPSJNNzkwLjczLDY2Ljk3IEM4MDIuMzMsNjYuOTcgODA3Ljk0LDY2Ljk3IDgxOS41NCw2Ni45NyIgZmlsbD0ibm9uZSIgaWQ9InJlcTItdG8tYWdlbnQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjgyNS41NCw2Ni45Nyw4MTYuNTQsNjIuOTcsODIwLjU0LDY2Ljk3LDgxNi41NCw3MC45Nyw4MjUuNTQsNjYuOTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgYWdlbnQgdG8gcmVzdWx0Mi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDEyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDEzIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzEiIGlkPSJsbmsxNSI+PHBhdGggZD0iTTk1OC41Miw2Ni45NyBDOTY5LjkzLDY2Ljk3IDk3NS4zNCw2Ni45NyA5ODYuNzQsNjYuOTciIGZpbGw9Im5vbmUiIGlkPSJhZ2VudC10by1yZXN1bHQyIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI5OTIuNzQsNjYuOTcsOTgzLjc0LDYyLjk3LDk4Ny43NCw2Ni45Nyw5ODMuNzQsNzAuOTcsOTkyLjc0LDY2Ljk3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjw/cGxhbnR1bWwtc3JjIFZMOURKeTkwNEJ0dEx1bm1xSFdXRDk3MG5RSjA0YWFHM0VZRG96V0V4T1BzanN3dFdNWnV4b3hSYllBQVVzaGNwVmtPYnp4ZVkxQTJENE9rZDZwQkhPZUE0dFg3Vm5pZ2NPalc5NkVmTzFUbkpNVHVHMWxDT3BzSEdpX0h5M3Q1Q1Z1Uk5fNUZXZ3hoZEE2ZktTVUd1Q2kxeXVQSTFRR0Fkc1JGRmtUbWxneDhyb1oyazI4aVlybkFhOEItU1JOSVF4bWczQlpjS2MwQ05mZWdZTnhLV0VQYW1lUUNiVW5RaFY2SzlvWFdKWEdxMDNFM1Y3SUZvd0Zuc0JyU2RINGcwUWtLVjdFZWtJWTBiVHBlN0lmUVl6a05JNmdQSEpCamlCckZTTVN3UGtycy15d0FuZlB1SFZLUEhNd1lCYjlJVThuajZLYW5sNDlQS2NRQUJWQ1VGLWw4dlFldmVnTHU2RWRNTy01a3ZxTUU0cjJPTUFKcUVxNmJ4OHpZbEdLeEJ2SnI5bXppeTUtWGZmS3Z3Ym1QdVBhMVN3RG9Mdk5pR2RGS1B4dEh1OUJrSlU1RGM3eVhDdUUwWXQwanhpNEJJTVhXVV9CcEtxRGVQclQ0VlhMS3NySzVrVk1uTGloRTJ6NkI1YnBkeTBxMD8+PC9nPjwvc3ZnPg=='><p>This is the fundamental reason Agent-Oriented Engineering is emerging: <strong>natural language has become the new programming interface</strong>.</p><p>When you can simply say “clean up the AB test code, keep the treatment branch,” and the Agent can understand the meaning, analyze the codebase, execute the refactoring, and verify the results – Programming itself gets redefined.</p><h2 id="From-OOP-to-AOE-The-Evolution"><a href="#From-OOP-to-AOE-The-Evolution" class="headerlink" title="From OOP to AOE: The Evolution"></a>From OOP to AOE: The Evolution</h2><p>Looking back at software engineering’s history, we’ve gone through several major paradigm shifts:</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjIwM3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MTE5OHB4O2hlaWdodDoyMDNweDtiYWNrZ3JvdW5kOiNGRkZGRkY7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMTk4IDIwMyIgd2lkdGg9IjExOThweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBwb3AtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJwb3AiIGRhdGEtc291cmNlLWxpbmU9IjE0IiBpZD0iZW50MDAwMiI+PHJlY3QgZmlsbD0iI0IzRTVGQyIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iOTUuMDU4NiIgeD0iMTM1LjM4IiB5PSIxMiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzMi40MjI5IiB4PSIxNDUuMzgiIHk9IjM0Ljk5NTEiPlBPUDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNzUuMDU4NiIgeD0iMTQ1LjM4IiB5PSI1MS4yOTIiPlByb2NlZHVyYWw8L3RleHQ+PC9nPjwhLS1lbnRpdHkgb29wLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0ib29wIiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iNTIuNTkzOCIgcng9IjcuNSIgcnk9IjcuNSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEzMS43ODgxIiB4PSIzMzAuMDIiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM0LjA2MzUiIHg9IjM0MC4wMiIgeT0iMzQuOTk1MSI+T09QPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTEuNzg4MSIgeD0iMzQwLjAyIiB5PSI1MS4yOTIiPk9iamVjdC1PcmllbnRlZDwvdGV4dD48L2c+PCEtLWVudGl0eSBhb3AtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJhb3AiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGRTBCMiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNy41IiByeT0iNy41IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTMzLjc1IiB4PSI2MjMuMDMiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMyLjk5NzEiIHg9IjYzMy4wMyIgeT0iMzQuOTk1MSI+QU9QPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTMuNzUiIHg9IjYzMy4wMyIgeT0iNTEuMjkyIj5Bc3BlY3QtT3JpZW50ZWQ8L3RleHQ+PC9nPjwhLS1lbnRpdHkgYW9lLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iYW9lIiBkYXRhLXNvdXJjZS1saW5lPSIxNyIgaWQ9ImVudDAwMDUiPjxyZWN0IGZpbGw9IiNGOEJCRDkiIGhlaWdodD0iNTIuNTkzOCIgcng9IjcuNSIgcnk9IjcuNSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEyNy42MzE4IiB4PSI4NzguMDkiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMyLjI5OTgiIHg9Ijg4OC4wOSIgeT0iMzQuOTk1MSI+QU9FPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDcuNjMxOCIgeD0iODg4LjA5IiB5PSI1MS4yOTIiPkFnZW50LU9yaWVudGVkPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU45IiBkYXRhLXNvdXJjZS1saW5lPSIyNCIgaWQ9ImVudDAwMTAiPjxwYXRoIGQ9Ik0xMSwxMjUuNTkgTDExLDE4OC45ODg0IEEwLDAgMCAwIDAgMTEsMTg4Ljk4ODQgTDIzNi44MTk4LDE4OC45ODg0IEEwLDAgMCAwIDAgMjM2LjgxOTgsMTg4Ljk4ODQgTDIzNi44MTk4LDEzNS41OSBMMjI2LjgxOTgsMTI1LjU5IEwxNDMuNTUsMTI1LjU5IEwxNjkuOTYsNjQuOTcgTDEzNS41NSwxMjUuNTkgTDExLDEyNS41OSBBMCwwIDAgMCAwIDExLDEyNS41OSIgZmlsbD0iI0ZGRkRFNyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0yMjYuODE5OCwxMjUuNTkgTDIyNi44MTk4LDEzNS41OSBMMjM2LjgxOTgsMTM1LjU5IEwyMjYuODE5OCwxMjUuNTkiIGZpbGw9IiNGRkZERTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzkuODU2OSIgeD0iMTciIHk9IjE0Mi42NTY5Ij4xOTcwczwvdGV4dD48bGluZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTIiIHgyPSIyMzUuODE5OCIgeTE9IjE0NS43MjI4IiB5Mj0iMTQ1LjcyMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQzLjEyNyIgeD0iMTciIHk9IjE2MS43ODk3Ij5JbnN0cnVjdGlvbiBzZXF1ZW5jZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwNC44MTk4IiB4PSIxNyIgeT0iMTc2LjkyMjUiPkh1bWFucyB3cml0ZSBldmVyeSBpbnN0cnVjdGlvbjwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTIiIGRhdGEtc291cmNlLWxpbmU9IjMxIiBpZD0iZW50MDAxMyI+PHBhdGggZD0iTTI3Mi4yNSwxMjUuNTkgTDI3Mi4yNSwxODguOTg4NCBBMCwwIDAgMCAwIDI3Mi4yNSwxODguOTg4NCBMNTE5LjU2OTMsMTg4Ljk4ODQgQTAsMCAwIDAgMCA1MTkuNTY5MywxODguOTg4NCBMNTE5LjU2OTMsMTM1LjU5IEw1MDkuNTY5MywxMjUuNTkgTDM5OS45MSwxMjUuNTkgTDM5NS45MSw2NC45NyBMMzkxLjkxLDEyNS41OSBMMjcyLjI1LDEyNS41OSBBMCwwIDAgMCAwIDI3Mi4yNSwxMjUuNTkiIGZpbGw9IiNGRkZERTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cGF0aCBkPSJNNTA5LjU2OTMsMTI1LjU5IEw1MDkuNTY5MywxMzUuNTkgTDUxOS41NjkzLDEzNS41OSBMNTA5LjU2OTMsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5Ljg1NjkiIHg9IjI3OC4yNSIgeT0iMTQyLjY1NjkiPjE5OTBzPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSIyNzMuMjUiIHgyPSI1MTguNTY5MyIgeTE9IjE0NS43MjI4IiB5Mj0iMTQ1LjcyMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTMxLjE4MDciIHg9IjI3OC4yNSIgeT0iMTYxLjc4OTciPk9iamVjdCBjb2xsYWJvcmF0aW9uPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMjYuMzE5MyIgeD0iMjc4LjI1IiB5PSIxNzYuOTIyNSI+SHVtYW5zIGRlc2lnbiBvYmplY3QgaW50ZXJhY3Rpb25zPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU4xNSIgZGF0YS1zb3VyY2UtbGluZT0iMzgiIGlkPSJlbnQwMDE2Ij48cGF0aCBkPSJNNTU0LjQ0LDEyNS41OSBMNTU0LjQ0LDE4OC45ODg0IEEwLDAgMCAwIDAgNTU0LjQ0LDE4OC45ODg0IEw4MjUuMzc5LDE4OC45ODg0IEEwLDAgMCAwIDAgODI1LjM3OSwxODguOTg4NCBMODI1LjM3OSwxMzUuNTkgTDgxNS4zNzksMTI1LjU5IEw2OTMuOTEsMTI1LjU5IEw2ODkuOTEsNjQuOTcgTDY4NS45MSwxMjUuNTkgTDU1NC40NCwxMjUuNTkgQTAsMCAwIDAgMCA1NTQuNDQsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTgxNS4zNzksMTI1LjU5IEw4MTUuMzc5LDEzNS41OSBMODI1LjM3OSwxMzUuNTkgTDgxNS4zNzksMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5Ljg1NjkiIHg9IjU2MC40NCIgeT0iMTQyLjY1NjkiPjIwMDBzPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSI1NTUuNDQiIHgyPSI4MjQuMzc5IiB5MT0iMTQ1LjcyMjgiIHkyPSIxNDUuNzIyOCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNTAuMzE4OCIgeD0iNTYwLjQ0IiB5PSIxNjEuNzg5NyI+U2VwYXJhdGlvbiBvZiBjb25jZXJuczwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjQ5LjkzOSIgeD0iNTYwLjQ0IiB5PSIxNzYuOTIyNSI+SHVtYW5zIGRlZmluZSBjcm9zcy1jdXR0aW5nIGNvbmNlcm5zPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU4xOCIgZGF0YS1zb3VyY2UtbGluZT0iNDUiIGlkPSJlbnQwMDE5Ij48cGF0aCBkPSJNODYwLjIyLDEyNS41OSBMODYwLjIyLDE4OC45ODg0IEEwLDAgMCAwIDAgODYwLjIyLDE4OC45ODg0IEwxMTgzLjU5MDYsMTg4Ljk4ODQgQTAsMCAwIDAgMCAxMTgzLjU5MDYsMTg4Ljk4ODQgTDExODMuNTkwNiwxMzUuNTkgTDExNzMuNTkwNiwxMjUuNTkgTDEwMDQuNywxMjUuNTkgTDk1OS40Nyw2NC45NyBMOTk2LjcsMTI1LjU5IEw4NjAuMjIsMTI1LjU5IEEwLDAgMCAwIDAgODYwLjIyLDEyNS41OSIgZmlsbD0iI0ZGRkRFNyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0xMTczLjU5MDYsMTI1LjU5IEwxMTczLjU5MDYsMTM1LjU5IEwxMTgzLjU5MDYsMTM1LjU5IEwxMTczLjU5MDYsMTI1LjU5IiBmaWxsPSIjRkZGREU3IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM5Ljg1NjkiIHg9Ijg2Ni4yMiIgeT0iMTQyLjY1NjkiPjIwMjBzPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSI4NjEuMjIiIHgyPSIxMTgyLjU5MDYiIHkxPSIxNDUuNzIyOCIgeTI9IjE0NS43MjI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE1My4xNDM2IiB4PSI4NjYuMjIiIHk9IjE2MS43ODk3Ij5IdW1hbi1BSSBjb2xsYWJvcmF0aW9uPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzMDIuMzcwNiIgeD0iODY2LjIyIiB5PSIxNzYuOTIyNSI+SHVtYW5zIGRlZmluZSBnb2FscyBpbiBuYXR1cmFsIGxhbmd1YWdlPC90ZXh0PjwvZz48IS0tbGluayBwb3AgdG8gb29wLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDIiIGRhdGEtZW50aXR5LTI9ImVudDAwMDMiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxOSIgaWQ9ImxuazYiPjxwYXRoIGQ9Ik0yMzAuNzEsMzguMjkgQzI1OS45LDM4LjI5IDI5MS42NSwzOC4yOSAzMjMuNjksMzguMjkiIGZpbGw9Im5vbmUiIGlkPSJwb3AtdG8tb29wIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzMjkuNjksMzguMjksMzIwLjY5LDM0LjI5LDMyNC42OSwzOC4yOSwzMjAuNjksNDIuMjksMzI5LjY5LDM4LjI5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQuMTMyMyIgeD0iMjc4LjIzIiB5PSIzMS4zNTY5Ij4mIzE2MDs8L3RleHQ+PC9nPjwhLS1saW5rIG9vcCB0byBhb3AtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMyIgZGF0YS1lbnRpdHktMj0iZW50MDAwNCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIwIiBpZD0ibG5rNyI+PHBhdGggZD0iTTQ2Mi4yNiwzOC4yOSBDNTEwLjE4LDM4LjI5IDU2OC42OCwzOC4yOSA2MTYuNzksMzguMjkiIGZpbGw9Im5vbmUiIGlkPSJvb3AtdG8tYW9wIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI2MjIuNzksMzguMjksNjEzLjc5LDM0LjI5LDYxNy43OSwzOC4yOSw2MTMuNzksNDIuMjksNjIyLjc5LDM4LjI5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQuMTMyMyIgeD0iNTQwLjQyIiB5PSIzMS4zNTY5Ij4mIzE2MDs8L3RleHQ+PC9nPjwhLS1saW5rIGFvcCB0byBhb2UtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0ibG5rOCI+PHBhdGggZD0iTTc1Ny4xMSwzOC4yOSBDNzk0LjU4LDM4LjI5IDgzNSwzOC4yOSA4NzEuOTQsMzguMjkiIGZpbGw9Im5vbmUiIGlkPSJhb3AtdG8tYW9lIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI4NzcuOTQsMzguMjksODY4Ljk0LDM0LjI5LDg3Mi45NCwzOC4yOSw4NjguOTQsNDIuMjksODc3Ljk0LDM4LjI5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQuMTMyMyIgeD0iODE1LjQ0IiB5PSIzMS4zNTY5Ij4mIzE2MDs8L3RleHQ+PC9nPjw/cGxhbnR1bWwtc3JjIFZQQjFSamltMzhSbFZXZWtrSGFtYUFSZXNrbW04NHZqaDlTYnNBd3hDM1JaUTVMOFp2OU4zQ0ZVVlJCU0RhdzJMWFMxckZfcDhvYi15N2l3NEJHTTNJVmtxTjJCWVdWT09sTk9nN0hTaHlJQW1qRlVVMWd6cnhKM3BsZklzN181dTUtZ0dQa0MxNGdMSHN1aW1UeTRtbGFzdjU4Y1hRa1I2Q2Y1UXo4WF9fR3dka0pWRTBVQlZ4N2RQX0xDb3hBeUJzdnhfUDRxSVRGRFVmRWNGdFlaS2I3VEFUZTllOERNTWZaY3J5TERrSmdMaG1WdlVsaXBIQkVyNmM5RlRWSDh4cmRUNUh6TllyRkZTbDBpTk5sWG1UdkpiaUtpZHZ6eFlrWGZXbFJTR2k1b2ItVnRZb0pmd3lwS0Q3a1ZWT3U1VjhCOTk5NW41NS1ZVTFnYjhQaDRjTXQ1VXBjMHhGaEVtX29rNWhTcDUtdWlkNzB6aUZGUUxUdThXd0RWN041NV9WRU54ZTNpdTRkM05tRno5bHEzdllYRFlFbHU5SFNHVU9PaW5mMVhmYjI5alJXTG5QWlliTDZKQ21zMzMyOEpuZzRPQVV2ajM0UkNWM09ST3h2Smxva25iSTJmOUJJWXhDUVdkTTYySWlNdmhFZ3lEem1TUFUtbUFCQmNPclBDY0lxVkJmZkFxckRROHNYVHcwZU9WUi00T0NDY1REWEdjaHVZX21DMD8+PC9nPjwvc3ZnPg=='><p>Each paradigm shift came with an upgrade in human-computer interaction:</p><table><thead><tr><th>Paradigm</th><th>Human Responsibility</th><th>Interaction Mode</th></tr></thead><tbody><tr><td>POP</td><td>Write every instruction</td><td>Code</td></tr><tr><td>OOP</td><td>Design objects and interactions</td><td>Code</td></tr><tr><td>AOP</td><td>Define cross-cutting concerns</td><td>Code + Config</td></tr><tr><td><strong>AOE</strong></td><td><strong>Define goals and constraints</strong></td><td><strong>Natural Language</strong></td></tr></tbody></table><blockquote><p>So what do human engineers actually do?</p></blockquote><p>Simply put: <strong>define problems, not solve them</strong>.</p><p>Our work shifts from “writing code to solve problems” to “clearly describing problems for Agents to solve.” This sounds simple, but it actually raises the bar for engineers – you need deeper understanding of the problem’s essence, more precise articulation of constraints, more comprehensive consideration of edge cases.</p><p>Code can be ambiguous – the compiler will flag errors. But ambiguity in natural language sends the Agent in a completely wrong direction. <strong>The ability to express clearly becomes the new-era engineer’s core competitive advantage.</strong></p><h2 id="What-Is-an-Agent"><a href="#What-Is-an-Agent" class="headerlink" title="What Is an Agent?"></a>What Is an Agent?</h2><p>Before discussing Agent-Oriented Engineering, we need to clarify what an Agent is. Simply put, an Agent is an autonomous entity that can <strong>perceive its environment, make decisions, and take action</strong>.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjUyMXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NDc2cHg7aGVpZ2h0OjUyMXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ3NiA1MjEiIHdpZHRoPSI0NzZweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgYWdlbnQtLT48ZyBjbGFzcz0iY2x1c3RlciIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iYWdlbnQiIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0U4RUFGNiIgaGVpZ2h0PSI0OTUuMzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjMyMiIgeD0iMTIiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ3LjAxMDciIHg9IjE0OS40OTQ2IiB5PSIyNi45OTUxIj5BZ2VudDwvdGV4dD48L2c+PCEtLWVudGl0eSBnb2FsLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iYWdlbnQuZ29hbCIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjYxLjQ2NjgiIHg9Ijk2LjI3IiB5PSI2NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzNS4zNTU1IiB4PSIxMDYuMjciIHk9Ijg4Ljk5NTEiPkdvYWw8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQxLjQ2NjgiIHg9IjEwNi4yNyIgeT0iMTA1LjI5MiI+SW50ZW50PC90ZXh0PjwvZz48IS0tZW50aXR5IHBlcmNlaXZlLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iYWdlbnQucGVyY2VpdmUiIGRhdGEtc291cmNlLWxpbmU9IjIzIiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0M4RTZDOSIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI4Ny44NzQiIHg9IjIzMC4wNiIgeT0iMTc5LjYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjcuODc0IiB4PSIyNDAuMDYiIHk9IjIwMi41OTUxIj5QZXJjZWl2ZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTUuMzE2NCIgeD0iMjQwLjA2IiB5PSIyMTguODkyIj5TZW5zaW5nPC90ZXh0PjwvZz48IS0tZW50aXR5IHJlYXNvbi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImFnZW50LnJlYXNvbiIgZGF0YS1zb3VyY2UtbGluZT0iMjQiIGlkPSJlbnQwMDA2Ij48cmVjdCBmaWxsPSIjRkZGOUM0IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEzNi42Mjc5IiB4PSI1OC42OSIgeT0iMTc5LjYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTcuNjQwNiIgeD0iNjguNjkiIHk9IjIwMi41OTUxIj5SZWFzb248L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjExNi42Mjc5IiB4PSI2OC42OSIgeT0iMjE4Ljg5MiI+RGVjaXNpb24tbWFraW5nPC90ZXh0PjwvZz48IS0tZW50aXR5IGFjdC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImFnZW50LmFjdCIgZGF0YS1zb3VyY2UtbGluZT0iMjUiIGlkPSJlbnQwMDA3Ij48cmVjdCBmaWxsPSIjRkZDQ0JDIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEwMi4zOTM2IiB4PSIyNy44IiB5PSIzMDkuMTkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjUuODI2MiIgeD0iMzcuOCIgeT0iMzMyLjE4NTEiPkFjdDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODIuMzkzNiIgeD0iMzcuOCIgeT0iMzQ4LjQ4MiI+VGFrZSBBY3Rpb248L3RleHQ+PC9nPjwhLS1lbnRpdHkgbGVhcm4tLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJhZ2VudC5sZWFybiIgZGF0YS1zb3VyY2UtbGluZT0iMjYiIGlkPSJlbnQwMDA4Ij48cmVjdCBmaWxsPSIjRTFCRUU3IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9Ijc3Ljg3MyIgeD0iMTYxLjA2IiB5PSI0MzguNzkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDQuNzM0NCIgeD0iMTcxLjA2IiB5PSI0NjEuNzg1MSI+TGVhcm48L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjU3Ljg3MyIgeD0iMTcxLjA2IiB5PSI0NzguMDgyIj5JbXByb3ZlPC90ZXh0PjwvZz48IS0tZW50aXR5IGVudi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImVudiIgZGF0YS1zb3VyY2UtbGluZT0iMTkiIGlkPSJlbnQwMDAyIj48cmVjdCBmaWxsPSIjRTBFMEUwIiBoZWlnaHQ9IjIyLjI5NjkiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6I0ZGOEYwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMDkuNzAxMiIgeD0iMzUzLjE1IiB5PSIzMjQuMzQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODkuNzAxMiIgeD0iMzYzLjE1IiB5PSIzNDAuMzM1MSI+RW52aXJvbm1lbnQ8L3RleHQ+PC9nPjwhLS1saW5rIGdvYWwgdG8gcmVhc29uLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyOCIgaWQ9ImxuazkiPjxwYXRoIGQ9Ik0xMjcsMTE4LjkgQzEyNywxMzcuMDUgMTI3LDE1NS4yOSAxMjcsMTczLjQxIiBmaWxsPSJub25lIiBpZD0iZ29hbC10by1yZWFzb24iIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjEyNywxNzkuNDEsMTMxLDE3MC40MSwxMjcsMTc0LjQxLDEyMywxNzAuNDEsMTI3LDE3OS40MSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBwZXJjZWl2ZSB0byByZWFzb24tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNSIgZGF0YS1lbnRpdHktMj0iZW50MDAwNiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI5IiBpZD0ibG5rMTAiPjxwYXRoIGQ9Ik0yMjkuNiwyMDUuOSBDMjE4LjI4LDIwNS45IDIxMi45NSwyMDUuOSAyMDEuNjIsMjA1LjkiIGZpbGw9Im5vbmUiIGlkPSJwZXJjZWl2ZS10by1yZWFzb24iIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjE5NS42MiwyMDUuOSwyMDQuNjIsMjA5LjksMjAwLjYyLDIwNS45LDIwNC42MiwyMDEuOSwxOTUuNjIsMjA1LjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgcmVhc29uIHRvIGFjdC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA2IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA3IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzAiIGlkPSJsbmsxMSI+PHBhdGggZD0iTTExNy40LDIzMi40MSBDMTA5LjAzLDI1NC42NiA5OS4wNjM0LDI4MS4xNjQ1IDkwLjY5MzQsMzAzLjQwNDUiIGZpbGw9Im5vbmUiIGlkPSJyZWFzb24tdG8tYWN0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI4OC41OCwzMDkuMDIsOTUuNDkzNywzMDIuMDA1Nyw5MC4zNDEyLDMwNC4zNDA0LDg4LjAwNjQsMjk5LjE4NzksODguNTgsMzA5LjAyIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGFjdCB0byBsZWFybi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA3IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA4IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzEiIGlkPSJsbmsxMiI+PHBhdGggZD0iTTEwMy4yLDM2MiBDMTI0LjMsMzg0LjI2IDE1MC42MzE0LDQxMi4wMTYzIDE3MS43MjE0LDQzNC4yNTYzIiBmaWxsPSJub25lIiBpZD0iYWN0LXRvLWxlYXJuIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxNzUuODUsNDM4LjYxLDE3Mi41NTk2LDQyOS4zMjcsMTcyLjQwOTUsNDM0Ljk4MTksMTY2Ljc1NDYsNDM0LjgzMTgsMTc1Ljg1LDQzOC42MSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tcmV2ZXJzZSBsaW5rIHJlYXNvbiB0byBsZWFybi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA2IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA4IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzIiIGlkPSJsbmsxNCI+PHBhdGggZD0iTTE3Mi4xMjk0LDIzNi4zODY3IEMxODEuODM5NCwyNDQuNjA2NyAxODYuNDMsMjUwLjczIDE5MiwyNjIuMTkgQzIyMC4xNiwzMjAuMDggMjEyLjA2LDM5OC43MSAyMDUuMjEsNDM4LjYiIGZpbGw9Im5vbmUiIGlkPSJyZWFzb24tYmFja3RvLWxlYXJuIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxNjcuNTUsMjMyLjUxLDE3MS44MzQ3LDI0MS4zNzgsMTcxLjM2NjIsMjM1Ljc0MDYsMTc3LjAwMzYsMjM1LjI3MjEsMTY3LjU1LDIzMi41MSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTYuNjQ0NSIgeD0iMjEzIiB5PSIzNDAuMDU2OSI+T3B0aW1pemUgc3RyYXRlZ3k8L3RleHQ+PC9nPjwhLS1saW5rIGVudiB0byBwZXJjZWl2ZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzUiIGlkPSJsbmsxNSI+PHBhdGggZD0iTTM5Ny4wNywzMjQuMDkgQzM3Ni4yNCwzMDQuMjUgMzM0LjYyNiwyNjQuNjE2NyAzMDUuMTM2LDIzNi41NDY3IiBmaWxsPSJub25lIiBpZD0iZW52LXRvLXBlcmNlaXZlIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzMDAuNzksMjMyLjQxLDMwNC41NTEyLDI0MS41MTI0LDMwNC40MTE3LDIzNS44NTczLDMxMC4wNjY4LDIzNS43MTc4LDMwMC43OSwyMzIuNDEiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzMuNjYxNiIgeD0iMzUwIiB5PSIyNzUuMjU2OSI+SW5wdXQ8L3RleHQ+PC9nPjwhLS1saW5rIGFjdCB0byBlbnYtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNyIgZGF0YS1lbnRpdHktMj0iZW50MDAwMiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM2IiBpZD0ibG5rMTYiPjxwYXRoIGQ9Ik05NS44OSwzMDguOTUgQzEwNi4xMSwyOTUuNDYgMTIwLjQ2LDI4MC4zOCAxMzcuNSwyNzIuOTkgQzE4MC45NSwyNTQuMTUgMzExLjQ1MTIsMjk4Ljk1NTYgMzcyLjM4MTIsMzIxLjc3NTYiIGZpbGw9Im5vbmUiIGlkPSJhY3QtdG8tZW52IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzNzgsMzIzLjg4LDM3MC45NzQ3LDMxNi45Nzc1LDM3My4zMTc2LDMyMi4xMjYzLDM2OC4xNjg4LDMyNC40NjkzLDM3OCwzMjMuODgiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDUuMTU3MiIgeD0iMTM4LjUiIHk9IjI3NS4yNTY5Ij5PdXRwdXQ8L3RleHQ+PC9nPjwhLS1saW5rIGVudiB0byBsZWFybi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA4IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzciIGlkPSJsbmsxNyI+PHBhdGggZD0iTTM5MC45OCwzNDYuOTMgQzM1OC4wOSwzNjcuMTEgMjkwLjE0NDEsNDA4Ljc4MjIgMjQ0LjUyNDEsNDM2Ljc3MjIiIGZpbGw9Im5vbmUiIGlkPSJlbnYtdG8tbGVhcm4iIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTtzdHJva2UtZGFzaGFycmF5OjcsNzsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjIzOS40MSw0MzkuOTEsMjQ5LjE3MzEsNDM4LjYxMjgsMjQzLjY3MTgsNDM3LjI5NTIsMjQ0Ljk4OTQsNDMxLjc5MzksMjM5LjQxLDQzOS45MSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2Mi42MTk2IiB4PSIzMTciIHk9IjQwNC44NTY5Ij5GZWVkYmFjazwvdGV4dD48L2c+PD9wbGFudHVtbC1zcmMgVFBERkp1RDA0Q05sVjhncmxQNVdzbFlsVVowZm85ZWNIYXRydzZNNGFNdUFpc0pPcmdabmt4a3hHNnFibWVhdHl0bHBQWlNTY0hMTUFFZUk1ME5ETWI0RDM5THVYTW5UaUR2R2RrWElpdFhWQU9EeHpIcFZPNUNRZ1NkU1ctTmRoQTBDelhlT0NtREtiMlktMGM2VlBVbDVYMm9jYS0xeGxuU0E5REZybk55Nlp6RFBFZlZkUktycFpqcGY5XzlpNmZ5VDZjTjAtTnktS2lmUEVYdHdNNWJFVjIxRlpyQlFBalBLc0tXWjBPcjBzamVHNF9TNm1Vek1lcDJTa3pYWHdCbFE1UmdtTk9JM3ZiaURQSFktcTg5Q3hybk9JT3BaLTJRTHlIMXVIQ3ZHUlQ1MUpxWURlaTlKVFFVQlNKOUJwdkZCOFJiNFEzR3Z4V09wcklYREtHTmhkY1RWelVUbmNQbUV3TmJjN0ZlQ1F0a2hjUjVxa3MxYzc5Q2FTSjlheFgzTzNybktEVWlqVWc5cWVac0lRUG9jNXU2N19DUEhoanlma2t3MlU3c3RLeUlnTTlkM09YVXVuc21HQnhqMGxVUDdVUktUNmZOdXpraVloaUgzUkxJYkZiNHFYaTVXeVU3a3N6dGlSazBrbWZMT0tCcW5XVlZsZ3d4TGtjb0NneFlGdS1Ea2dmS2JPa3gtYm55MD8+PC9nPjwvc3ZnPg=='><p>Unlike traditional functions or services, Agents have these characteristics:</p><table><thead><tr><th>Characteristic</th><th>Traditional Functions&#x2F;Services</th><th>Agent</th></tr></thead><tbody><tr><td>Autonomy</td><td>Passively called, strictly follows instructions</td><td>Active decision-making, autonomous path planning</td></tr><tr><td>Goal-oriented</td><td>Executes fixed logic</td><td>Flexibly adjusts strategy to achieve goals</td></tr><tr><td>Environmental awareness</td><td>Only processes input parameters</td><td>Perceives context and adapts accordingly</td></tr><tr><td>Continuous learning</td><td>Logic is fixed</td><td>Improves from experience</td></tr></tbody></table><h2 id="Core-Components-of-an-Agent"><a href="#Core-Components-of-an-Agent" class="headerlink" title="Core Components of an Agent"></a>Core Components of an Agent</h2><p>A complete Agent system typically contains these core components:</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjI0NXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6Njc2cHg7aGVpZ2h0OjI0NXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDY3NiAyNDUiIHdpZHRoPSI2NzZweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgQWdlbnQgU3lzdGVtLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbSIgZGF0YS1zb3VyY2UtbGluZT0iMTUiIGlkPSJlbnQwMDAyIj48cGF0aCBkPSJNMTMuNSwxMSBMMTE2LjgzMDYsMTEgQTMuNzUsMy43NSAwIDAgMSAxMTkuMzMwNiwxMy41IEwxMjYuMzMwNiwzMi4xMzI4IEw2NTguNSwzMi4xMzI4IEEyLjUsMi41IDAgMCAxIDY2MSwzNC42MzI4IEw2NjEsMjI3LjkgQTIuNSwyLjUgMCAwIDEgNjU4LjUsMjMwLjQgTDEzLjUsMjMwLjQgQTIuNSwyLjUgMCAwIDEgMTEsMjI3LjkgTDExLDEzLjUgQTIuNSwyLjUgMCAwIDEgMTMuNSwxMSIgZmlsbD0iI0ZBRkFGQSIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMSIgeDI9IjEyNi4zMzA2IiB5MT0iMzIuMTMyOCIgeTI9IjMyLjEzMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTAyLjMzMDYiIHg9IjE1IiB5PSIyNS4wNjY5Ij5BZ2VudCBTeXN0ZW08L3RleHQ+PC9nPjwhLS1jbHVzdGVyIFRvb2wgQm94LS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbS5Ub29sIEJveCIgZGF0YS1zb3VyY2UtbGluZT0iMjciIGlkPSJlbnQwMDE0Ij48cGF0aCBkPSJNMTg2LjUsMTA2LjEzIEwyNTAuNDM3LDEwNi4xMyBBMy43NSwzLjc1IDAgMCAxIDI1Mi45MzcsMTA4LjYzIEwyNTkuOTM3LDEyNy4yNjI4IEw2MzQuNSwxMjcuMjYyOCBBMi41LDIuNSAwIDAgMSA2MzcsMTI5Ljc2MjggTDYzNywyMDMuOSBBMi41LDIuNSAwIDAgMSA2MzQuNSwyMDYuNCBMMTg2LjUsMjA2LjQgQTIuNSwyLjUgMCAwIDEgMTg0LDIwMy45IEwxODQsMTA4LjYzIEEyLjUsMi41IDAgMCAxIDE4Ni41LDEwNi4xMyIgZmlsbD0iI0UzRjJGRCIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHgxPSIxODQiIHgyPSIyNTkuOTM3IiB5MT0iMTI3LjI2MjgiIHkyPSIxMjcuMjYyOCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI2Mi45MzciIHg9IjE4OCIgeT0iMTIwLjE5NjkiPlRvb2wgQm94PC90ZXh0PjwvZz48IS0tZW50aXR5IHBlcmNlcHRpb24tLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0ucGVyY2VwdGlvbiIgZGF0YS1zb3VyY2UtbGluZT0iMTYiIGlkPSJlbnQwMDAzIj48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjM1LjEzMjgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE0NC43MjUxIiB4PSIyNi42NCIgeT0iNDUiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTI0LjcyNTEiIHg9IjM2LjY0IiB5PSI2Ny4wNjY5Ij5QZXJjZXB0aW9uIExheWVyPC90ZXh0PjwvZz48IS0tZW50aXR5IHJlYXNvbmluZy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbS5yZWFzb25pbmciIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGRjlDNCIgaGVpZ2h0PSIzNS4xMzI4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxNTEuMDM0NyIgeD0iMjA2LjQ4IiB5PSI0NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMzEuMDM0NyIgeD0iMjE2LjQ4IiB5PSI2Ny4wNjY5Ij5SZWFzb25pbmcgRW5naW5lPC90ZXh0PjwvZz48IS0tZW50aXR5IGFjdGlvbi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFnZW50IFN5c3RlbS5hY3Rpb24iIGRhdGEtc291cmNlLWxpbmU9IjE4IiBpZD0iZW50MDAwNSI+PHJlY3QgZmlsbD0iI0ZGQ0NCQyIgaGVpZ2h0PSIzNS4xMzI4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMzUuNzQ5NSIgeD0iMzkyLjEzIiB5PSI0NSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTUuNzQ5NSIgeD0iNDAyLjEzIiB5PSI2Ny4wNjY5Ij5BY3Rpb24gRXhlY3V0b3I8L3RleHQ+PC9nPjwhLS1lbnRpdHkgbWVtb3J5LS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQWdlbnQgU3lzdGVtLm1lbW9yeSIgZGF0YS1zb3VyY2UtbGluZT0iMTkiIGlkPSJlbnQwMDA2Ij48cmVjdCBmaWxsPSIjRTFCRUU3IiBoZWlnaHQ9IjM1LjEzMjgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEzNy43OTM1IiB4PSIyNy4xIiB5PSIxNDcuNyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTcuNzkzNSIgeD0iMzcuMSIgeT0iMTY5Ljc2NjkiPk1lbW9yeSBTeXN0ZW08L3RleHQ+PC9nPjwhLS1lbnRpdHkgc2VhcmNoLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQWdlbnQgU3lzdGVtLlRvb2wgQm94LnNlYXJjaCIgZGF0YS1zb3VyY2UtbGluZT0iMjgiIGlkPSJlbnQwMDE1Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjM1LjEzMjgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjY0Ljk0NzgiIHg9IjE5OS41MyIgeT0iMTQ3LjciLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDQuOTQ3OCIgeD0iMjA5LjUzIiB5PSIxNjkuNzY2OSI+U2VhcmNoPC90ZXh0PjwvZz48IS0tZW50aXR5IGNvZGUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0uVG9vbCBCb3guY29kZSIgZGF0YS1zb3VyY2UtbGluZT0iMjkiIGlkPSJlbnQwMDE2Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjUwLjI2NTYiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjU4LjQ3MzEiIHg9IjI5OS43NiIgeT0iMTQwLjEzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMzLjI4MDgiIHg9IjMwOS43NiIgeT0iMTYyLjE5NjkiPkNvZGU8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjM4LjQ3MzEiIHg9IjMwOS43NiIgeT0iMTc3LjMyOTciPkVkaXRvcjwvdGV4dD48L2c+PCEtLWVudGl0eSBmaWxlLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQWdlbnQgU3lzdGVtLlRvb2wgQm94LmZpbGUiIGRhdGEtc291cmNlLWxpbmU9IjMwIiBpZD0iZW50MDAxNyI+PHJlY3QgZmlsbD0iI0JCREVGQiIgaGVpZ2h0PSI1MC4yNjU2IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI2OC40NzcxIiB4PSIzOTIuNzYiIHk9IjE0MC4xMyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMi42OTkyIiB4PSI0MDIuNzYiIHk9IjE2Mi4xOTY5Ij5GaWxlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI0OC40NzcxIiB4PSI0MDIuNzYiIHk9IjE3Ny4zMjk3Ij5TeXN0ZW08L3RleHQ+PC9nPjwhLS1lbnRpdHkgYXBpLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQWdlbnQgU3lzdGVtLlRvb2wgQm94LmFwaSIgZGF0YS1zb3VyY2UtbGluZT0iMzEiIGlkPSJlbnQwMDE4Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjUwLjI2NTYiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjU3LjYzNTMiIHg9IjQ5Ni4xOCIgeT0iMTQwLjEzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwLjU2NjQiIHg9IjUwNi4xOCIgeT0iMTYyLjE5NjkiPkFQSTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzcuNjM1MyIgeD0iNTA2LjE4IiB5PSIxNzcuMzI5NyI+Q2xpZW50PC90ZXh0PjwvZz48IS0tZW50aXR5IG1vcmUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJBZ2VudCBTeXN0ZW0uVG9vbCBCb3gubW9yZSIgZGF0YS1zb3VyY2UtbGluZT0iMzIiIGlkPSJlbnQwMDE5Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9IjM1LjEzMjgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjMyLjM5NyIgeD0iNTg4LjgiIHk9IjE0Ny43Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEyLjM5NyIgeD0iNTk4LjgiIHk9IjE2OS43NjY5Ij4uLi48L3RleHQ+PC9nPjwhLS1saW5rIHBlcmNlcHRpb24gdG8gcmVhc29uaW5nLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDQiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMSIgaWQ9ImxuazciPjxwYXRoIGQ9Ik0xNzEuNTYsNjIuNTcgQzE4My4wNiw2Mi41NyAxODguNTcsNjIuNTcgMjAwLjA3LDYyLjU3IiBmaWxsPSJub25lIiBpZD0icGVyY2VwdGlvbi10by1yZWFzb25pbmciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjIwNi4wNyw2Mi41NywxOTcuMDcsNTguNTcsMjAxLjA3LDYyLjU3LDE5Ny4wNyw2Ni41NywyMDYuMDcsNjIuNTciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgcmVhc29uaW5nIHRvIGFjdGlvbi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJsbms4Ij48cGF0aCBkPSJNMzU3Ljc5LDYyLjU3IEMzNjkuMSw2Mi41NyAzNzQuNDEsNjIuNTcgMzg1LjczLDYyLjU3IiBmaWxsPSJub25lIiBpZD0icmVhc29uaW5nLXRvLWFjdGlvbiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMzkxLjczLDYyLjU3LDM4Mi43Myw1OC41NywzODYuNzMsNjIuNTcsMzgyLjczLDY2LjU3LDM5MS43Myw2Mi41NyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhY3Rpb24gdG8gbWVtb3J5LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMyIgaWQ9ImxuazkiPjxwYXRoIGQ9Ik0zOTEuOSw3Ny40NSBDMzg2LjIsNzguNDMgMzgwLjUxLDc5LjM0IDM3NSw4MC4xMyBDMjkwLjYxLDkyLjMgMjYzLjUyLDY3LjM2IDE4NCw5OC4xMyBDMTU1Ljg0LDEwOS4wMyAxMzMuMjYxNSwxMjcuNTI4NiAxMTYuNzcxNSwxNDMuMjU4NiIgZmlsbD0ibm9uZSIgaWQ9ImFjdGlvbi10by1tZW1vcnkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjExMi40MywxNDcuNCwxMjEuNzAzMiwxNDQuMDgyMiwxMTYuMDQ3OSwxNDMuOTQ4OCwxMTYuMTgxMywxMzguMjkzNSwxMTIuNDMsMTQ3LjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLXJldmVyc2UgbGluayByZWFzb25pbmcgdG8gbWVtb3J5LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNCIgaWQ9ImxuazExIj48cGF0aCBkPSJNMjE4Ljg2NTEsODIuNTgzNSBDMjA1LjIzNTEsODcuNDkzNSAxOTYuNjQsOTEuMzYgMTg0LDk4LjEzIEMxNTguMjMsMTExLjk0IDEzMS44MywxMzIuODcgMTE0Ljc2LDE0Ny40NyIgZmlsbD0ibm9uZSIgaWQ9InJlYXNvbmluZy1iYWNrdG8tbWVtb3J5IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyMjQuNTEsODAuNTUsMjE0LjY4Nyw3OS44MzcsMjE5LjgwNTksODIuMjQ0NiwyMTcuMzk4Myw4Ny4zNjM1LDIyNC41MSw4MC41NSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tcmV2ZXJzZSBsaW5rIHBlcmNlcHRpb24gdG8gbWVtb3J5LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNSIgaWQ9ImxuazEzIj48cGF0aCBkPSJNOTguMzIyMSw4Ni4xOTc0IEM5Ny43NzIxLDEwNC43Mzc0IDk3LjA2LDEyOC41OSA5Ni41MSwxNDcuMjgiIGZpbGw9Im5vbmUiIGlkPSJwZXJjZXB0aW9uLWJhY2t0by1tZW1vcnkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9Ijk4LjUsODAuMiw5NC4yMzQ5LDg5LjA3NzQsOTguMzUxNyw4NS4xOTc4LDEwMi4yMzE0LDg5LjMxNDcsOTguNSw4MC4yIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGFjdGlvbiB0byBzZWFyY2gtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNSIgZGF0YS1lbnRpdHktMj0iZW50MDAxNSIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM1IiBpZD0ibG5rMjAiPjxwYXRoIGQ9Ik0zOTEuOCw3Ni44NyBDMzg2LjEyLDc3Ljk3IDM4MC40Niw3OS4wNyAzNzUsODAuMTMgQzMzMy42Nyw4OC4xNiAzMTcuNzMsNzUuODcgMjgyLDk4LjEzIEMyNjIuOTQsMTEwLjAxIDI1MS40MTg1LDEyNi43MDAxIDI0My4wNjg1LDE0Mi4wNDAxIiBmaWxsPSJub25lIiBpZD0iYWN0aW9uLXRvLXNlYXJjaCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iMjQwLjIsMTQ3LjMxLDI0OC4wMTYxLDE0MS4zMTc2LDI0Mi41OTA0LDE0Mi45MTg0LDI0MC45ODk2LDEzNy40OTI4LDI0MC4yLDE0Ny4zMSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBhY3Rpb24gdG8gY29kZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDE2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzYiIGlkPSJsbmsyMSI+PHBhdGggZD0iTTQwNC44Myw4MC41NiBDMzk0LjMsODUuMjYgMzgzLjgzLDkxLjA3IDM3NSw5OC4xMyBDMzYwLjkxLDEwOS40IDM1Mi4zNTIsMTIwLjkyMDggMzQ0LjM0MiwxMzQuNzIwOCIgZmlsbD0ibm9uZSIgaWQ9ImFjdGlvbi10by1jb2RlIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzNDEuMzMsMTM5LjkxLDM0OS4zMDc1LDEzNC4xMzQyLDM0My44NCwxMzUuNTg1NywzNDIuMzg4NSwxMzAuMTE4MiwzNDEuMzMsMTM5LjkxIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGFjdGlvbiB0byBmaWxlLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMTciIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIzNyIgaWQ9ImxuazIyIj48cGF0aCBkPSJNNDU0LjU1LDgwLjIgQzQ0OS4yNCw5Ni40IDQ0Mi45ODA1LDExNS41MTkgNDM2LjkyMDUsMTMzLjk4OSIgZmlsbD0ibm9uZSIgaWQ9ImFjdGlvbi10by1maWxlIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI0MzUuMDUsMTM5LjY5LDQ0MS42NTY0LDEzMi4zODU1LDQzNi42MDg3LDEzNC45MzkyLDQzNC4wNTUxLDEyOS44OTE1LDQzNS4wNSwxMzkuNjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgYWN0aW9uIHRvIGFwaS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDE4IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzgiIGlkPSJsbmsyMyI+PHBhdGggZD0iTTQ3MC43Myw4MC4yIEM0ODEuMTksOTYuNCA0OTMuOTU0NiwxMTYuMTc5OSA1MDUuODg0NiwxMzQuNjQ5OSIgZmlsbD0ibm9uZSIgaWQ9ImFjdGlvbi10by1hcGkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjUwOS4xNCwxMzkuNjksNTA3LjYxNjksMTI5Ljk1OTYsNTA2LjQyNzEsMTM1LjQ5LDUwMC44OTY4LDEzNC4zMDAyLDUwOS4xNCwxMzkuNjkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PD9wbGFudHVtbC1zcmMgVkxCSFJlOG01N3RkQXBmdTh6NzRrSlh6TUdBTDlha3NuVVdVVlVkV1llc2I5UUw0dFVBX2h6MG9kSEJCMnBkZGRkRkZ4VXMzdGE4MWdFSUsyUV9RQ0w1SUhHbHFIVERUaGNHakNZb3ZMNllfUEhlay0wbXNqRVFRSUE0X2dENTdZYjdVcHdfT0R3M0hzQmpXSS1ERVNxMF83WjhkbGtlTGFBWnZCMlRMMWloWGFfUHVmcWloMVFjYzhrVVRzVEJ3QTA0QUpQbEloZlNWdkkwcU1YcWgzT05sZ2l6Z0ZtbU5lNThlRFBDMmxUNFpnMzNxNFFyR1VPTzNGNHFjVTdPaE5HQWpmNjBZSHVkOGNHMGRMTnptRzBZUHVRVFJQUElzcGlhMXFiaEJoWVVyZzU1WDdFRFJySmlLS1h0VEM0dkpNMm44SGQ2SUY3a2p3MkJ4R0I1eWdtU2x2cjNFamVsdUxzMlJqd3BCQ1NaYU5YWjZqY1dQcnNyR2JwVU03U0xYcXpZVEN4WEN0SzgtZlVIY21HVlZQMXdKSHA5dEl4Y1FUV0xLZlRqc25BaHpISzRTcG5DSXpuTFpjUzVROTFhcFR6YkFLV0ZTNG4zNlpRMXg1S1FtQ1MwekdSSHVOR2xDY05iQ1RiS2JrclMtNzB4alRnSndSdGxvLWN4T0pqWjdEOEZxdUt0VUZqcGF5YXdfPz48L2c+PC9zdmc+'><p><strong>Perception Layer</strong> – the Agent’s “eyes and ears,” gathering information from the environment: user intent, system state, external events.</p><p><strong>Reasoning Engine</strong> – the Agent’s “brain,” making decisions based on perceived information. This is the biggest difference between AOE and traditional programming – decision logic is no longer hardcoded if-else but dynamic reasoning based on goals and context.</p><p><strong>Action Executor</strong> – the Agent’s “hands,” translating decisions into actual operations: invoking tools, modifying files, sending requests.</p><p><strong>Memory System</strong> – the Agent’s “experience library,” enabling the Agent to learn from past experience rather than starting from scratch every time.</p><h2 id="Practice-Refactoring-Tech-Debt-Cleanup-with-AOE-Thinking"><a href="#Practice-Refactoring-Tech-Debt-Cleanup-with-AOE-Thinking" class="headerlink" title="Practice: Refactoring Tech Debt Cleanup with AOE Thinking"></a>Practice: Refactoring Tech Debt Cleanup with AOE Thinking</h2><p>Enough theory – let’s look at a real example. In daily work, tech debt cleanup is a perennial headache.</p><h3 id="Traditional-Approach-Humans-Drive-Everything"><a href="#Traditional-Approach-Humans-Drive-Everything" class="headerlink" title="Traditional Approach: Humans Drive Everything"></a>Traditional Approach: Humans Drive Everything</h3><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjE2NHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NTk0cHg7aGVpZ2h0OjE2NHB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDU5NCAxNjQiIHdpZHRoPSI1OTRweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBpZGVudGlmeS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImlkZW50aWZ5IiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNGRkNERDIiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiNDNjI4Mjg7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iODEuNzk2OSIgeD0iNjIuNjEiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUzLjA5NDciIHg9IjcyLjYxIiB5PSIzNC45OTUxIj5JZGVudGlmeTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjEuNzk2OSIgeD0iNzIuNjEiIHk9IjUxLjI5MiI+KE1hbnVhbCk8L3RleHQ+PC9nPjwhLS1lbnRpdHkgcGxhbi0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InBsYW4iIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwMyI+PHJlY3QgZmlsbD0iI0ZGQ0REMiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6I0M2MjgyODtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSI4MS43OTY5IiB4PSIyMDYuNjEiIHk9IjEyIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjI5Ljc4NDIiIHg9IjIxNi42MSIgeT0iMzQuOTk1MSI+UGxhbjwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjEuNzk2OSIgeD0iMjE2LjYxIiB5PSI1MS4yOTIiPihNYW51YWwpPC90ZXh0PjwvZz48IS0tZW50aXR5IGV4ZWN1dGUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJleGVjdXRlIiBkYXRhLXNvdXJjZS1saW5lPSIxOCIgaWQ9ImVudDAwMDQiPjxyZWN0IGZpbGw9IiNGRkNERDIiIGhlaWdodD0iNTIuNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiNDNjI4Mjg7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iODEuNzk2OSIgeD0iMzYxLjYxIiB5PSIxMiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1Ni40MTciIHg9IjM3MS42MSIgeT0iMzQuOTk1MSI+RXhlY3V0ZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjEuNzk2OSIgeD0iMzcxLjYxIiB5PSI1MS4yOTIiPihNYW51YWwpPC90ZXh0PjwvZz48IS0tZW50aXR5IHZlcmlmeS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InZlcmlmeSIgZGF0YS1zb3VyY2UtbGluZT0iMTkiIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRkZDREQyIiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojQzYyODI4O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjgxLjc5NjkiIHg9IjQ4NC42MSIgeT0iMTIiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDEuMDQ5OCIgeD0iNDk0LjYxIiB5PSIzNC45OTUxIj5WZXJpZnk8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjYxLjc5NjkiIHg9IjQ5NC42MSIgeT0iNTEuMjkyIj4oTWFudWFsKTwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OOSIgZGF0YS1zb3VyY2UtbGluZT0iMjYiIGlkPSJlbnQwMDEwIj48cGF0aCBkPSJNMTEsMTI0LjYgTDExLDE0OS43MzI4IEEwLDAgMCAwIDAgMTEsMTQ5LjczMjggTDE0MC4wMjQ0LDE0OS43MzI4IEEwLDAgMCAwIDAgMTQwLjAyNDQsMTQ5LjczMjggTDE0MC4wMjQ0LDEzNC42IEwxMzAuMDI0NCwxMjQuNiBMODIuOTgsMTI0LjYgTDk2LjA4LDY1IEw3NC45OCwxMjQuNiBMMTEsMTI0LjYgQTAsMCAwIDAgMCAxMSwxMjQuNiIgZmlsbD0iI0ZGRUJFRSIgc3R5bGU9InN0cm9rZTojRUY5QTlBO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0xMzAuMDI0NCwxMjQuNiBMMTMwLjAyNDQsMTM0LjYgTDE0MC4wMjQ0LDEzNC42IEwxMzAuMDI0NCwxMjQuNiIgZmlsbD0iI0ZGRUJFRSIgc3R5bGU9InN0cm9rZTojRUY5QTlBO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDguMDI0NCIgeD0iMTciIHk9IjE0MS42NjY5Ij5UaW1lLWNvbnN1bWluZzwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTIiIGRhdGEtc291cmNlLWxpbmU9IjMwIiBpZD0iZW50MDAxMyI+PHBhdGggZD0iTTE3NS40OSwxMjQuNiBMMTc1LjQ5LDE0OS43MzI4IEEwLDAgMCAwIDAgMTc1LjQ5LDE0OS43MzI4IEwzMTkuNTMzLDE0OS43MzI4IEEwLDAgMCAwIDAgMzE5LjUzMywxNDkuNzMyOCBMMzE5LjUzMywxMzQuNiBMMzA5LjUzMywxMjQuNiBMMjUxLjUxLDEyNC42IEwyNDcuNTEsNjUgTDI0My41MSwxMjQuNiBMMTc1LjQ5LDEyNC42IEEwLDAgMCAwIDAgMTc1LjQ5LDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTMwOS41MzMsMTI0LjYgTDMwOS41MzMsMTM0LjYgTDMxOS41MzMsMTM0LjYgTDMwOS41MzMsMTI0LjYiIGZpbGw9IiNGRkVCRUUiIHN0eWxlPSJzdHJva2U6I0VGOUE5QTtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTIzLjA0MyIgeD0iMTgxLjQ5IiB5PSIxNDEuNjY2OSI+UHJvbmUgdG8gb21pc3Npb25zPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU4xNSIgZGF0YS1zb3VyY2UtbGluZT0iMzQiIGlkPSJlbnQwMDE2Ij48cGF0aCBkPSJNMzU0LjY3LDEyNC42IEwzNTQuNjcsMTQ5LjczMjggQTAsMCAwIDAgMCAzNTQuNjcsMTQ5LjczMjggTDQ1MC4zNTAyLDE0OS43MzI4IEEwLDAgMCAwIDAgNDUwLjM1MDIsMTQ5LjczMjggTDQ1MC4zNTAyLDEzNC42IEw0NDAuMzUwMiwxMjQuNiBMNDA2LjUxLDEyNC42IEw0MDIuNTEsNjUgTDM5OC41MSwxMjQuNiBMMzU0LjY3LDEyNC42IEEwLDAgMCAwIDAgMzU0LjY3LDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTQ0MC4zNTAyLDEyNC42IEw0NDAuMzUwMiwxMzQuNiBMNDUwLjM1MDIsMTM0LjYgTDQ0MC4zNTAyLDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc0LjY4MDIiIHg9IjM2MC42NyIgeT0iMTQxLjY2NjkiPkVycm9yLXByb25lPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU4xOCIgZGF0YS1zb3VyY2UtbGluZT0iMzgiIGlkPSJlbnQwMDE5Ij48cGF0aCBkPSJNNDg1LjYxLDEyNC42IEw0ODUuNjEsMTQ5LjczMjggQTAsMCAwIDAgMCA0ODUuNjEsMTQ5LjczMjggTDU3OS40MDQ5LDE0OS43MzI4IEEwLDAgMCAwIDAgNTc5LjQwNDksMTQ5LjczMjggTDU3OS40MDQ5LDEzNC42IEw1NjkuNDA0OSwxMjQuNiBMNTM1LjY1LDEyNC42IEw1MjcuMzcsNjUgTDUyNy42NSwxMjQuNiBMNDg1LjYxLDEyNC42IEEwLDAgMCAwIDAgNDg1LjYxLDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTU2OS40MDQ5LDEyNC42IEw1NjkuNDA0OSwxMzQuNiBMNTc5LjQwNDksMTM0LjYgTDU2OS40MDQ5LDEyNC42IiBmaWxsPSIjRkZFQkVFIiBzdHlsZT0ic3Ryb2tlOiNFRjlBOUE7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjcyLjc5NDkiIHg9IjQ5MS42MSIgeT0iMTQxLjY2NjkiPkluY29tcGxldGU8L3RleHQ+PC9nPjwhLS1saW5rIGlkZW50aWZ5IHRvIHBsYW4tLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwMiIgZGF0YS1lbnRpdHktMj0iZW50MDAwMyIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjIxIiBpZD0ibG5rNiI+PHBhdGggZD0iTTE0NC44NiwzOC4zIEMxNjUuMzEsMzguMyAxNzkuNzYsMzguMyAyMDAuMjEsMzguMyIgZmlsbD0ibm9uZSIgaWQ9ImlkZW50aWZ5LXRvLXBsYW4iIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjIwNi4yMSwzOC4zLDE5Ny4yMSwzNC4zLDIwMS4yMSwzOC4zLDE5Ny4yMSw0Mi4zLDIwNi4yMSwzOC4zIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIHBsYW4gdG8gZXhlY3V0ZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJsbms3Ij48cGF0aCBkPSJNMjg4LjY4LDM4LjMgQzMxMi44NCwzOC4zIDMzMSwzOC4zIDM1NS4xNiwzOC4zIiBmaWxsPSJub25lIiBpZD0icGxhbi10by1leGVjdXRlIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzNjEuMTYsMzguMywzNTIuMTYsMzQuMywzNTYuMTYsMzguMywzNTIuMTYsNDIuMywzNjEuMTYsMzguMyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBleGVjdXRlIHRvIHZlcmlmeS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjMiIGlkPSJsbms4Ij48cGF0aCBkPSJNNDQzLjgzLDM4LjMgQzQ1Ny4zNCwzOC4zIDQ2NC44NSwzOC4zIDQ3OC4zNSwzOC4zIiBmaWxsPSJub25lIiBpZD0iZXhlY3V0ZS10by12ZXJpZnkiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjQ4NC4zNSwzOC4zLDQ3NS4zNSwzNC4zLDQ3OS4zNSwzOC4zLDQ3NS4zNSw0Mi4zLDQ4NC4zNSwzOC4zIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjw/cGxhbnR1bWwtc3JjIFRQMHhSdUQwNDhKeC1uS1JmcWFBZjhHWWlmajhWZTNhOGY0TEhRZElkNjZESnh4UkhTa0hYd0J5enMwVTBhNUMwVEJpRHBGQk5sYVpFZUpTUWFFZ0UxZEFqTVc3VXZzU0NrNklxWkxSNWxXeTZlLTNVT2U3TkxlVkNfYmROVmNOT2hITDBxMG15UGVvWV8yWmU3ZlVjWW1YNUJZX2d3TkxnRUN3WmpVUkpUWkNNNUFLTGJ5X1hGRG1oZHc3LVNJLVlfdWQ5cmY1cUpHZFlYVkJuVkFTcXN5dHN3UDh0WG8tdC1kY0lMRWZ4VXFDVDA2Y2JPVmVwY2VRT1ROVFE4WDROdllLN2FTS0RrZUdWNEVQYmR4S2ViOVRFR0hZaWdDRjdma1V5d2tOa2ozc3NtLXdiRmY0VV9RVTdWMlhfb0UwTC1DbUk5WUFxWGRBNTU5UXR0RFlnTGkxVGlBNHUxZE9jUThtYlUtb2ZUaUE4MTlYMlZBcHpwQlV4V2dtZk9IVFJqN3R5MXkwPz48L2c+PC9zdmc+'><h3 id="AOE-Approach-Human-AI-Collaboration"><a href="#AOE-Approach-Human-AI-Collaboration" class="headerlink" title="AOE Approach: Human-AI Collaboration"></a>AOE Approach: Human-AI Collaboration</h3><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQwNnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NzI3cHg7aGVpZ2h0OjQwNnB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDcyNyA0MDYiIHdpZHRoPSI3MjdweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWNsdXN0ZXIgSHVtYW4gRW5naW5lZXIgKEVuZ2luZWVyaW5nKS0tPjxnIGNsYXNzPSJjbHVzdGVyIiBkYXRhLXF1YWxpZmllZC1uYW1lPSJIdW1hbiBFbmdpbmVlciAuRW5naW5lZXJpbmcuIiBkYXRhLXNvdXJjZS1saW5lPSIxNCIgaWQ9ImVudDAwMDIiPjxwYXRoIGQ9Ik0xMy41LDExIEwyMjMuMTY0MSwxMSBBMy43NSwzLjc1IDAgMCAxIDIyNS42NjQxLDEzLjUgTDIzMi42NjQxLDMwLjk2ODggTDcwOS41LDMwLjk2ODggQTIuNSwyLjUgMCAwIDEgNzEyLDMzLjQ2ODggTDcxMiwxNDYuMzQgQTIuNSwyLjUgMCAwIDEgNzA5LjUsMTQ4Ljg0IEwxMy41LDE0OC44NCBBMi41LDIuNSAwIDAgMSAxMSwxNDYuMzQgTDExLDEzLjUgQTIuNSwyLjUgMCAwIDEgMTMuNSwxMSIgZmlsbD0iI0UzRjJGRCIgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzY2NjY2NjtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMSIgeDI9IjIzMi42NjQxIiB5MT0iMzAuOTY4OCIgeTI9IjMwLjk2ODgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjA4LjY2NDEiIHg9IjE1IiB5PSIyNC4xMzg3Ij5IdW1hbiBFbmdpbmVlciAoRW5naW5lZXJpbmcpPC90ZXh0PjwvZz48IS0tY2x1c3RlciBBSSBBZ2VudCAoUHJvZ3JhbW1pbmcpLS0+PGcgY2xhc3M9ImNsdXN0ZXIiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFJIEFnZW50IC5Qcm9ncmFtbWluZy4iIGRhdGEtc291cmNlLWxpbmU9IjIwIiBpZD0iZW50MDAwNiI+PHBhdGggZD0iTTE2MC41LDE4MS44NCBMMzI2LjY4NzUsMTgxLjg0IEEzLjc1LDMuNzUgMCAwIDEgMzI5LjE4NzUsMTg0LjM0IEwzMzYuMTg3NSwyMDEuODA4OCBMNDY0LjUsMjAxLjgwODggQTIuNSwyLjUgMCAwIDEgNDY3LDIwNC4zMDg4IEw0NjcsMzg5LjI1IEEyLjUsMi41IDAgMCAxIDQ2NC41LDM5MS43NSBMMTYwLjUsMzkxLjc1IEEyLjUsMi41IDAgMCAxIDE1OCwzODkuMjUgTDE1OCwxODQuMzQgQTIuNSwyLjUgMCAwIDEgMTYwLjUsMTgxLjg0IiBmaWxsPSIjRkZGM0UwIiBzdHlsZT0ic3Ryb2tlOiM2NjY2NjY7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojNjY2NjY2O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1OCIgeDI9IjMzNi4xODc1IiB5MT0iMjAxLjgwODgiIHkyPSIyMDEuODA4OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNjUuMTg3NSIgeD0iMTYyIiB5PSIxOTQuOTc4NyI+QUkgQWdlbnQgKFByb2dyYW1taW5nKTwvdGV4dD48L2c+PCEtLWVudGl0eSBnb2FsLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iSHVtYW4gRW5naW5lZXIgLkVuZ2luZWVyaW5nLi5nb2FsIiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNCQkRFRkIiIGhlaWdodD0iNzUuODc1IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIyMDYuNTYyNSIgeD0iMjYuNzIiIHk9IjQ5Ljk4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg1Ljc0MDIiIHg9IjM2LjcyIiB5PSI3MS4xMTg3Ij5EZWZpbmUgR29hbHM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMuODE0NSIgeD0iMzYuNzIiIHk9Ijg1LjA4NzQiPiYjMTYwOzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQxLjEwNTUiIHg9IjM2LjcyIiB5PSI5OS4wNTYyIj4tIENsZWFuIHVwIEFCIHRlc3QgY29kZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTg2LjU2MjUiIHg9IjM2LjcyIiB5PSIxMTMuMDI0OSI+LSBSZW1vdmUgZXhwaXJlZCBmZWF0dXJlIGZsYWdzPC90ZXh0PjwvZz48IS0tZW50aXR5IGNvbnN0cmFpbnQtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJIdW1hbiBFbmdpbmVlciAuRW5naW5lZXJpbmcuLmNvbnN0cmFpbnQiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0JCREVGQiIgaGVpZ2h0PSI4OS44NDM4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIyMjguMTk1MyIgeD0iMjY3LjkiIHk9IjQzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwNC43MTg4IiB4PSIyNzcuOSIgeT0iNjQuMTM4NyI+U2V0IENvbnN0cmFpbnRzPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIzLjgxNDUiIHg9IjI3Ny45IiB5PSI3OC4xMDc0Ij4mIzE2MDs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwOC4xOTUzIiB4PSIyNzcuOSIgeT0iOTIuMDc2MiI+LSBEb24ndCBicmVhayBleGlzdGluZyBmdW5jdGlvbmFsaXR5PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNTguNzM2MyIgeD0iMjc3LjkiIHk9IjEwNi4wNDQ5Ij4tIE11c3QgYmUgcm9sbGJhY2stY2FwYWJsZTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTk5LjcyMjciIHg9IjI3Ny45IiB5PSIxMjAuMDEzNyI+LSBNYWludGFpbiBjb2RlIHN0eWxlIGNvbnNpc3RlbmN5PC90ZXh0PjwvZz48IS0tZW50aXR5IGNyaXRlcmlhLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iSHVtYW4gRW5naW5lZXIgLkVuZ2luZWVyaW5nLi5jcml0ZXJpYSIgZGF0YS1zb3VyY2UtbGluZT0iMTciIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjQkJERUZCIiBoZWlnaHQ9Ijg5Ljg0MzgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE2NC45Nzg1IiB4PSI1MzEuNTEiIHk9IjQzIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzMi44OTA2IiB4PSI1NDEuNTEiIHk9IjY0LjEzODciPkFjY2VwdGFuY2UgQ3JpdGVyaWE8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjMuODE0NSIgeD0iNTQxLjUxIiB5PSI3OC4xMDc0Ij4mIzE2MDs8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjcxLjM1NTUiIHg9IjU0MS41MSIgeT0iOTIuMDc2MiI+LSBUZXN0cyBwYXNzPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDQuOTc4NSIgeD0iNTQxLjUxIiB5PSIxMDYuMDQ0OSI+LSBDb3ZlcmFnZSBkb2Vzbid0IGRyb3A8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg2LjAzMzIiIHg9IjU0MS41MSIgeT0iMTIwLjAxMzciPi0gQ29kZSBSZXZpZXc8L3RleHQ+PC9nPjwhLS1lbnRpdHkgYW5hbHl6ZS0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFJIEFnZW50IC5Qcm9ncmFtbWluZy4uYW5hbHl6ZSIgZGF0YS1zb3VyY2UtbGluZT0iMjEiIGlkPSJlbnQwMDA3Ij48cmVjdCBmaWxsPSIjRkZFMEIyIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEwMy45NzY2IiB4PSIxNzQuMDEiIHk9IjIxMy44NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4My45NzY2IiB4PSIxODQuMDEiIHk9IjIzNC45Nzg3Ij5Db2RlIEFuYWx5c2lzPC90ZXh0PjwvZz48IS0tZW50aXR5IGFzc2Vzcy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFJIEFnZW50IC5Qcm9ncmFtbWluZy4uYXNzZXNzIiBkYXRhLXNvdXJjZS1saW5lPSIyMiIgaWQ9ImVudDAwMDgiPjxyZWN0IGZpbGw9IiNGRkUwQjIiIGhlaWdodD0iMzMuOTY4OCIgcng9IjQiIHJ5PSI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTM3LjI5ODgiIHg9IjMxMy4zNSIgeT0iMjEzLjg0Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjExNy4yOTg4IiB4PSIzMjMuMzUiIHk9IjIzNC45Nzg3Ij5JbXBhY3QgQXNzZXNzbWVudDwvdGV4dD48L2c+PCEtLWVudGl0eSByZWZhY3Rvci0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFJIEFnZW50IC5Qcm9ncmFtbWluZy4ucmVmYWN0b3IiIGRhdGEtc291cmNlLWxpbmU9IjIzIiBpZD0iZW50MDAwOSI+PHJlY3QgZmlsbD0iI0ZGRTBCMiIgaGVpZ2h0PSIzMy45Njg4IiByeD0iNCIgcnk9IjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMjEuMTA5NCIgeD0iMzIxLjQ1IiB5PSIyNzcuODEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTAxLjEwOTQiIHg9IjMzMS40NSIgeT0iMjk4Ljk0ODciPkF1dG8gUmVmYWN0b3Jpbmc8L3RleHQ+PC9nPjwhLS1lbnRpdHkgdGVzdC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkFJIEFnZW50IC5Qcm9ncmFtbWluZy4udGVzdCIgZGF0YS1zb3VyY2UtbGluZT0iMjQiIGlkPSJlbnQwMDEwIj48cmVjdCBmaWxsPSIjRkZFMEIyIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSI0IiByeT0iNCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjExNy44Mzk4IiB4PSIzMjMuMDgiIHk9IjM0MS43OCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI5Ny44Mzk4IiB4PSIzMzMuMDgiIHk9IjM2Mi45MTg3Ij5UZXN0IFZlcmlmaWNhdGlvbjwvdGV4dD48L2c+PCEtLWxpbmsgYW5hbHl6ZSB0byBhc3Nlc3MtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNyIgZGF0YS1lbnRpdHktMj0iZW50MDAwOCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI2IiBpZD0ibG5rMTEiPjxwYXRoIGQ9Ik0yNzguNDEsMjMwLjgzIEMyOTAuMDEsMjMwLjgzIDI5NS42MSwyMzAuODMgMzA3LjIxLDIzMC44MyIgZmlsbD0ibm9uZSIgaWQ9ImFuYWx5emUtdG8tYXNzZXNzIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzMTMuMjEsMjMwLjgzLDMwNC4yMSwyMjYuODMsMzA4LjIxLDIzMC44MywzMDQuMjEsMjM0LjgzLDMxMy4yMSwyMzAuODMiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgYXNzZXNzIHRvIHJlZmFjdG9yLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDgiIGRhdGEtZW50aXR5LTI9ImVudDAwMDkiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNyIgaWQ9ImxuazEyIj48cGF0aCBkPSJNMzgyLDI0OC4xMSBDMzgyLDI1Ny4xNSAzODIsMjYyLjM2IDM4MiwyNzEuNDEiIGZpbGw9Im5vbmUiIGlkPSJhc3Nlc3MtdG8tcmVmYWN0b3IiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM4MiwyNzcuNDEsMzg2LDI2OC40MSwzODIsMjcyLjQxLDM3OCwyNjguNDEsMzgyLDI3Ny40MSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayByZWZhY3RvciB0byB0ZXN0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDkiIGRhdGEtZW50aXR5LTI9ImVudDAwMTAiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyOCIgaWQ9ImxuazEzIj48cGF0aCBkPSJNMzgyLDMxMi4wOCBDMzgyLDMyMS4xMiAzODIsMzI2LjMyIDM4MiwzMzUuMzgiIGZpbGw9Im5vbmUiIGlkPSJyZWZhY3Rvci10by10ZXN0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzODIsMzQxLjM4LDM4NiwzMzIuMzgsMzgyLDMzNi4zOCwzNzgsMzMyLjM4LDM4MiwzNDEuMzgiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLXJldmVyc2UgbGluayBhbmFseXplIHRvIHRlc3QtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNyIgZGF0YS1lbnRpdHktMj0iZW50MDAxMCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjI5IiBpZD0ibG5rMTUiPjxwYXRoIGQ9Ik0yMTQuOTA3OCwyNTMuNzc2IEMyMDcuMDU3OCwyNzEuMzA2IDIwMS4wNywyOTMuNSAyMTUsMzExLjc4IEMyMjguMjYsMzI5LjE4IDI4MC4zOSwzNDEuNjYgMzIyLjkzLDM0OS4xOSIgZmlsbD0ibm9uZSIgaWQ9ImFuYWx5emUtYmFja3RvLXRlc3QiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTtzdHJva2UtZGFzaGFycmF5OjcsNzsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjIxNy4zNiwyNDguMywyMTAuMDMxLDI1NC44NzkyLDIxNS4zMTY1LDI1Mi44NjM0LDIxNy4zMzI0LDI1OC4xNDg4LDIxNy4zNiwyNDguMyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4Ny4yNTIiIHg9IjIxNiIgeT0iMjk5LjQzODciPkZlZWRiYWNrIGxvb3A8L3RleHQ+PC9nPjwhLS1saW5rIGdvYWwgdG8gYW5hbHl6ZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA3IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzIiIGlkPSJsbmsxNiI+PHBhdGggZD0iTTE1NS40NywxMjYuMzEgQzE3NC44LDE1NC42OSAxOTcuMDYxMiwxODcuMzUxOCAyMTEuNTAxMiwyMDguNTQxOCIgZmlsbD0ibm9uZSIgaWQ9ImdvYWwtdG8tYW5hbHl6ZSIgc3R5bGU9InN0cm9rZTojMTU2NUMwO3N0cm9rZS13aWR0aDoyOyIvPjxwb2x5Z29uIGZpbGw9IiMxNTY1QzAiIHBvaW50cz0iMjE0Ljg4LDIxMy41LDIxMy4xMTczLDIwMy44MTAyLDIxMi4wNjQzLDIwOS4zNjgyLDIwNi41MDYzLDIwOC4zMTUyLDIxNC44OCwyMTMuNSIgc3R5bGU9InN0cm9rZTojMTU2NUMwO3N0cm9rZS13aWR0aDoyOyIvPjwvZz48IS0tbGluayBjb25zdHJhaW50IHRvIGFzc2Vzcy0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA4IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzMiIGlkPSJsbmsxNyI+PHBhdGggZD0iTTM4MiwxMzMuMTIgQzM4MiwxNjAuNCAzODIsMTg3LjgxIDM4MiwyMDcuMzYiIGZpbGw9Im5vbmUiIGlkPSJjb25zdHJhaW50LXRvLWFzc2VzcyIgc3R5bGU9InN0cm9rZTojMTU2NUMwO3N0cm9rZS13aWR0aDoyOyIvPjxwb2x5Z29uIGZpbGw9IiMxNTY1QzAiIHBvaW50cz0iMzgyLDIxMy4zNiwzODYsMjA0LjM2LDM4MiwyMDguMzYsMzc4LDIwNC4zNiwzODIsMjEzLjM2IiBzdHlsZT0ic3Ryb2tlOiMxNTY1QzA7c3Ryb2tlLXdpZHRoOjI7Ii8+PC9nPjwhLS1saW5rIGNyaXRlcmlhIHRvIHRlc3QtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNSIgZGF0YS1lbnRpdHktMj0iZW50MDAxMCIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjM0IiBpZD0ibG5rMTgiPjxwYXRoIGQ9Ik01OTEuMjMsMTMyLjkxIEM1NjQuNjUsMTgxLjE1IDUxNi45OCwyNTguNzYgNDYwLDMxMS43OCBDNDQ3LjM0LDMyMy41NiA0MzYuNDQsMzMwLjg2MDEgNDIyLjEsMzM4LjYwMDEiIGZpbGw9Im5vbmUiIGlkPSJjcml0ZXJpYS10by10ZXN0IiBzdHlsZT0ic3Ryb2tlOiMxNTY1QzA7c3Ryb2tlLXdpZHRoOjI7Ii8+PHBvbHlnb24gZmlsbD0iIzE1NjVDMCIgcG9pbnRzPSI0MTYuODIsMzQxLjQ1LDQyNi42Mzk5LDM0MC42OTUyLDQyMS4yMiwzMzkuMDc1MSw0MjIuODQwMSwzMzMuNjU1Miw0MTYuODIsMzQxLjQ1IiBzdHlsZT0ic3Ryb2tlOiMxNTY1QzA7c3Ryb2tlLXdpZHRoOjI7Ii8+PC9nPjw/cGxhbnR1bWwtc3JjIFZMQlRSekNtNDdfbE50NnEzdW9BSjVzZEpHWTlJS2NRbTF3Nks4VHVPSm91cFlNcndqWUh4UW5xWUYtVGlfRDFuVVdpSE9ocmt6LTd4LXdMc3NBRHE0V2NyQ0prWDZnT09KTGk2RHpMSGhVZ0lCTksxbFBSdVYwOEJ4MWFoTkl2TGt1cDh0dmkxOUZfbi1fNTR5QjVTZEE0RGdKRUFlSFY0dzJKUTVFV3dObmNyLTVDVlgtTjYtSUVnS2VFWDdNTm9vV3F5Q3dOM2RoSkpzdEQ1NklnNFdlOUYxbC1YQWhVSjY2TU5VUkJWRE1oXzVNVHBrU2hCQWFHRmNlY3hOcC1lMXZLMUFiNDRjaVJZMURtUTFybU5RMDdyYlpoSG1KeXNHWTMxUEo4TjZpR0lpYWdFbUxjZUk4UGMyTjlBaWtKdnJ4dHcyM0xvWmYzRk5VWnRLZ2hybXVzMWpjRWY4THI1MWhBTGQ0ZGo2OUlrOEVsa2NpZm8wUjFRMmR6YTJCRTZoUUg4VFVUcndDbDEwTmgza0o3b09ZcUtGNTNZQ1A3dXpDMU95d25lSWo3STB0RGRNT3hYRm5BVlIwcUZzajNYd1dEblpVLXE2WHotaUJlZldDZW0xZVYxVXV4cnJ2Y3ozbVVNZG1CU09LS3dFb0JxSEtEbEV4N2JVVnZQUlB1Rmd3VzdiREYzbElxZUNfeVhUUUNBRGFZTVZ2QmtBdDlwNDVpQkxmUmFyTDcyalRKZEJYcmNmdkc0Yjd4X0dhS3F6ekZhTm54dTFremoxSVMtUmE1TGJZVVdINGVHeng4WTZoaGVmaS1JdVRyaUtQZXlFb3otVzBaeENLMzU1cEVzLVJ5UGZIXzNwYll1VFM0ZkRRRHh0Zk9wVVp4eEVCZy1ZZlRsN0xSbU5VQV8zdWlWbkh3aHdBSEYzZFFiOVZoay1aWlk1eWl6WTdfMDAwMD8+PC9nPjwvc3ZnPg=='><p>In this model, the human engineer focuses on <strong>Engineering</strong>:</p><ul><li><strong>Define goals</strong>: Which category of tech debt? AB experiments? Internationalization? Deprecated APIs?</li><li><strong>Set constraints</strong>: Must not break existing functionality, must maintain test coverage, changes must be rollback-capable</li><li><strong>Design acceptance criteria</strong>: How do you determine cleanup succeeded?</li></ul><p>While the Agent handles <strong>Programming</strong>:</p><ul><li><strong>Code analysis</strong>: Scan the codebase, identify target code</li><li><strong>Impact assessment</strong>: Analyze dependencies, evaluate modification impact</li><li><strong>Auto refactoring</strong>: Generate and execute the refactoring plan</li><li><strong>Test verification</strong>: Run tests, ensure functional correctness</li></ul><h2 id="Feedback-Loop-The-Core-of-Agent-Evolution"><a href="#Feedback-Loop-The-Core-of-Agent-Evolution" class="headerlink" title="Feedback Loop: The Core of Agent Evolution"></a>Feedback Loop: The Core of Agent Evolution</h2><p>In Agent-Oriented Engineering, the Feedback Loop is one of the most critical concepts. Unlike traditional static programs, Agents need to continuously learn from execution results and improve.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjE4NHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MTMyMHB4O2hlaWdodDoxODRweDtiYWNrZ3JvdW5kOiNGRkZGRkY7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMzIwIDE4NCIgd2lkdGg9IjEzMjBweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBhZ2VudC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImFnZW50IiBkYXRhLXNvdXJjZS1saW5lPSIxMyIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNFOEVBRjYiIGhlaWdodD0iMzYuMjk2OSIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTQ2LjAzNDIiIHg9IjQ0OC42MyIgeT0iMTM0LjQiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTI2LjAzNDIiIHg9IjQ1OC42MyIgeT0iMTU3LjM5NTEiPkFnZW50IEV2b2x1dGlvbjwvdGV4dD48L2c+PCEtLWVudGl0eSBzaG9ydC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InNob3J0IiBkYXRhLXNvdXJjZS1saW5lPSIxNSIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNDOEU2QzkiIGhlaWdodD0iMzguNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTc1LjI5MiIgeD0iMTIiIHk9IjIzLjQxIi8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE1NS4yOTIiIHg9IjIyIiB5PSIzOS40MDUxIj5TaG9ydC10ZXJtIE1lbW9yeTwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTA5LjQwOTIiIHg9IjIyIiB5PSI1NS43MDIiPkN1cnJlbnQgc2Vzc2lvbjwvdGV4dD48L2c+PCEtLWVudGl0eSBtaWQtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJtaWQiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0ZGRjlDNCIgaGVpZ2h0PSIzOC41OTM4IiByeD0iNSIgcnk9IjUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxNzguOTkwMiIgeD0iNDMyLjE1IiB5PSIyMy40MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDQuOTA4MiIgeD0iNDQyLjE1IiB5PSIzOS40MDUxIj5NaWQtdGVybSBQYXR0ZXJuczwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTU4Ljk5MDIiIHg9IjQ0Mi4xNSIgeT0iNTUuNzAyIj5Dcm9zcy1zZXNzaW9uIHBhdHRlcm5zPC90ZXh0PjwvZz48IS0tZW50aXR5IGxvbmctLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJsb25nIiBkYXRhLXNvdXJjZS1saW5lPSIxNyIgaWQ9ImVudDAwMDUiPjxyZWN0IGZpbGw9IiNGRkNDQkMiIGhlaWdodD0iMzguNTkzOCIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTk0LjA5MDgiIHg9Ijg0Mi42IiB5PSIyMy40MSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNzQuMDkwOCIgeD0iODUyLjYiIHk9IjM5LjQwNTEiPkxvbmctdGVybSBLbm93bGVkZ2U8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE0NC42MTQzIiB4PSI4NTIuNiIgeT0iNTUuNzAyIj5QZXJzaXN0ZWQga25vd2xlZGdlPC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU45IiBkYXRhLXNvdXJjZS1saW5lPSIyNCIgaWQ9ImVudDAwMTAiPjxwYXRoIGQ9Ik0yMjEuODYsMTEgTDIyMS44NiwzOC43IEwxODcuNDIsNDIuNyBMMjIxLjg2LDQ2LjcgTDIyMS44Niw3NC4zOTg0IEEwLDAgMCAwIDAgMjIxLjg2LDc0LjM5ODQgTDM5Ny40MjU0LDc0LjM5ODQgQTAsMCAwIDAgMCAzOTcuNDI1NCw3NC4zOTg0IEwzOTcuNDI1NCwyMSBMMzg3LjQyNTQsMTEgTDIyMS44NiwxMSBBMCwwIDAgMCAwIDIyMS44NiwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0zODcuNDI1NCwxMSBMMzg3LjQyNTQsMjEgTDM5Ny40MjU0LDIxIEwzODcuNDI1NCwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjguMDc2NyIgeD0iMjI3Ljg2IiB5PSIyOC4wNjY5Ij5TaG9ydC10ZXJtIGxlYXJuaW5nPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMjIuODYiIHgyPSIzOTYuNDI1NCIgeTE9IjMxLjEzMjgiIHkyPSIzMS4xMzI4Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzMy44OTExIiB4PSIyMjcuODYiIHk9IjQ3LjE5OTciPkFkanVzdCBzdHJhdGVneSBmcm9tPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNTQuNTY1NCIgeD0iMjI3Ljg2IiB5PSI2Mi4zMzI1Ij5zaW5nbGUgZXhlY3V0aW9uIHJlc3VsdHM8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjEyIiBkYXRhLXNvdXJjZS1saW5lPSIzMSIgaWQ9ImVudDAwMTMiPjxwYXRoIGQ9Ik02NDYuMDgsMTEgTDY0Ni4wOCwzOC43IEw2MTEuMzMsNDIuNyBMNjQ2LjA4LDQ2LjcgTDY0Ni4wOCw3NC4zOTg0IEEwLDAgMCAwIDAgNjQ2LjA4LDc0LjM5ODQgTDgwNy4yMTA5LDc0LjM5ODQgQTAsMCAwIDAgMCA4MDcuMjEwOSw3NC4zOTg0IEw4MDcuMjEwOSwyMSBMNzk3LjIxMDksMTEgTDY0Ni4wOCwxMSBBMCwwIDAgMCAwIDY0Ni4wOCwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik03OTcuMjEwOSwxMSBMNzk3LjIxMDksMjEgTDgwNy4yMTA5LDIxIEw3OTcuMjEwOSwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTYuMjciIHg9IjY1Mi4wOCIgeT0iMjguMDY2OSI+TWlkLXRlcm0gbGVhcm5pbmc8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgeDE9IjY0Ny4wOCIgeDI9IjgwNi4yMTA5IiB5MT0iMzEuMTMyOCIgeTI9IjMxLjEzMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQwLjEzMDkiIHg9IjY1Mi4wOCIgeT0iNDcuMTk5NyI+RXh0cmFjdCBwYXR0ZXJucyBmcm9tPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI4MS44NTMiIHg9IjY1Mi4wOCIgeT0iNjIuMzMyNSI+c2ltaWxhciB0YXNrczwvdGV4dD48L2c+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iR01OMTUiIGRhdGEtc291cmNlLWxpbmU9IjM4IiBpZD0iZW50MDAxNiI+PHBhdGggZD0iTTEwNzIuMDQsMTEgTDEwNzIuMDQsMzguNyBMMTAzNi45MSw0Mi43IEwxMDcyLjA0LDQ2LjcgTDEwNzIuMDQsNzQuMzk4NCBBMCwwIDAgMCAwIDEwNzIuMDQsNzQuMzk4NCBMMTMwNS4yNDg1LDc0LjM5ODQgQTAsMCAwIDAgMCAxMzA1LjI0ODUsNzQuMzk4NCBMMTMwNS4yNDg1LDIxIEwxMjk1LjI0ODUsMTEgTDEwNzIuMDQsMTEgQTAsMCAwIDAgMCAxMDcyLjA0LDExIiBmaWxsPSIjRkZGRkZGIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBhdGggZD0iTTEyOTUuMjQ4NSwxMSBMMTI5NS4yNDg1LDIxIEwxMzA1LjI0ODUsMjEgTDEyOTUuMjQ4NSwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjQuODc3NCIgeD0iMTA3OC4wNCIgeT0iMjguMDY2OSI+TG9uZy10ZXJtIGxlYXJuaW5nPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMDczLjA0IiB4Mj0iMTMwNC4yNDg1IiB5MT0iMzEuMTMyOCIgeTI9IjMxLjEzMjgiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTQ0LjEyOTkiIHg9IjEwNzguMDQiIHk9IjQ3LjE5OTciPk9wdGltaXplIGZvdW5kYXRpb25hbDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjEyLjIwODUiIHg9IjEwNzguMDQiIHk9IjYyLjMzMjUiPmNhcGFiaWxpdGllcyBhbmQga25vd2xlZGdlIGJhc2U8L3RleHQ+PC9nPjwhLS1saW5rIHNob3J0IHRvIGFnZW50LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDIiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxOSIgaWQ9ImxuazYiPjxwYXRoIGQ9Ik0xNjEuOTgsNjIuNDQgQzE3NS45OCw2Ni41IDE5MC43OSw3MC42OSAyMDQuNjUsNzQuNCBDMjg3LjgxLDk2LjY3IDM3OC4xMjcsMTE4LjMyNjUgNDQyLjUzNywxMzMuMzU2NSIgZmlsbD0ibm9uZSIgaWQ9InNob3J0LXRvLWFnZW50IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI0NDguMzgsMTM0LjcyLDQ0MC41MjQ0LDEyOC43Nzk1LDQ0My41MTA4LDEzMy41ODM4LDQzOC43MDY1LDEzNi41NzAyLDQ0OC4zOCwxMzQuNzIiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgbWlkIHRvIGFnZW50LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDQiIGRhdGEtZW50aXR5LTI9ImVudDAwMDIiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMCIgaWQ9ImxuazciPjxwYXRoIGQ9Ik01MjEuNjUsNjIuNDkgQzUyMS42NSw4Mi42NSA1MjEuNjUsMTA4LjQxIDUyMS42NSwxMjguMDUiIGZpbGw9Im5vbmUiIGlkPSJtaWQtdG8tYWdlbnQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjUyMS42NSwxMzQuMDUsNTI1LjY1LDEyNS4wNSw1MjEuNjUsMTI5LjA1LDUxNy42NSwxMjUuMDUsNTIxLjY1LDEzNC4wNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjwvZz48IS0tbGluayBsb25nIHRvIGFnZW50LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDUiIGRhdGEtZW50aXR5LTI9ImVudDAwMDIiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyMSIgaWQ9ImxuazgiPjxwYXRoIGQ9Ik04NzAuMDUsNjIuNDIgQzg1NS4wOCw2Ni40MSA4MzkuMzQsNzAuNTcgODI0LjY1LDc0LjQgQzc0NC45NCw5NS4xOSA2NTkuMDc4LDExNi45NzM0IDU5Ny42MjgsMTMyLjQ2MzQiIGZpbGw9Im5vbmUiIGlkPSJsb25nLXRvLWFnZW50IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSI1OTEuODEsMTMzLjkzLDYwMS41MTQ3LDEzNS42MDg4LDU5Ni42NTgzLDEzMi43MDc5LDU5OS41NTkzLDEyNy44NTE1LDU5MS44MSwxMzMuOTMiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PD9wbGFudHVtbC1zcmMgVEw4eFJ6bW0zRHhyQXpaU1BpMTAybUgxaVhJdTZsUkl2ZTVzeFM5T0Y5endpY0hHVDJ2ZnFWelVNYXZ6SmU5ZTRLMXozXzhKRnlZVVVlQjFlbWljN0xtT2FCNjdVc21GN1NTbnMyaHdvNzNTRXc3TGt3S1RaYndRNkVHNmJSemJYendpMDRvak9FV3ltSHkzVWh4Rk1Ybzh1VEQ3eXRVRFJQN2preDJKcTViSFIzaUEwbEwzekFFdTY4aFkzMzAxdmtnY2xnb3RwT0tuTUt4MUZfUUhmSEpZN2d3Zlpfbks1M3ozREo5Rnc0R2ZnS0JjZm1hOGMtZ29sZ1lrNWxncmlwRnYzYU5sYTNBVE9xaGJDbmM2dnZVaXFaaUJjd1BmaGdocEhVRFIzRHFpeVpONGVvVlJxUUhvSHZuUzRoOW0tNV9FNGJ4WGFxUExWUWFxZURuTVFVQ25iOV9kOFNyYXloQUlFSXpCOWFHWE9EVmoxVTlrN2FfSk5VTlgySmN1cTZjcnJBRk5ybHVRYXlPWVo0QlQ0LW11emJmRUJhVEZaekpjbkZMVmFfdnhDWEdpSjNRbHBSSDFmSXRQbEpNZzd6TVliSU14YXJGbEYzODhmaUZ4eWpFcTJaeGItalJXVFgyTC1hc21jdE85Znd2ckRLNnRSQzF4dnZxdXFmSzlnLW5yc25DamJseTA/PjwvZz48L3N2Zz4='><p>This loop isn’t a simple while loop – it’s a continuous evolutionary process. Each execution accumulates experience for the next.</p><h2 id="Collaboration-Between-Agents"><a href="#Collaboration-Between-Agents" class="headerlink" title="Collaboration Between Agents"></a>Collaboration Between Agents</h2><p>Real-world problems often require multiple Agents working together. This involves communication and coordination between Agents.</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQ0M3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NjE5cHg7aGVpZ2h0OjQ0M3B4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDYxOSA0NDMiIHdpZHRoPSI2MTlweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PCEtLWVudGl0eSBjb29yZC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImNvb3JkIiBkYXRhLXNvdXJjZS1saW5lPSIxNCIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNGRkUwQjIiIGhlaWdodD0iMzYuMjk2OSIgcng9IjUiIHJ5PSI1IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTEzLjg2NDMiIHg9IjI1Ny4yNiIgeT0iMTY1LjY3Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkzLjg2NDMiIHg9IjI2Ny4yNiIgeT0iMTg4LjY2NTEiPkNvb3JkaW5hdG9yPC90ZXh0PjwvZz48IS0tZW50aXR5IGNvZGUtLT48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJjb2RlIiBkYXRhLXNvdXJjZS1saW5lPSIxNiIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNFOEVBRjYiIGhlaWdodD0iNTIuNTkzOCIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojM0Y1MUI1O3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjEzOC4zOTE2IiB4PSIxMiIgeT0iMjYyLjk2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkxLjI5MzkiIHg9IjIyIiB5PSIyODUuOTU1MSI+Q29kZSBBZ2VudDwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTE4LjM5MTYiIHg9IjIyIiB5PSIzMDIuMjUyIj5Db2RlIEdlbmVyYXRpb248L3RleHQ+PC9nPjwhLS1lbnRpdHkgdGVzdC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InRlc3QiIGRhdGEtc291cmNlLWxpbmU9IjE3IiBpZD0iZW50MDAwNCI+PHJlY3QgZmlsbD0iI0U4RUFGNiIgaGVpZ2h0PSI1Mi41OTM4IiByeD0iMi41IiByeT0iMi41IiBzdHlsZT0ic3Ryb2tlOiMzRjUxQjU7c3Ryb2tlLXdpZHRoOjE7IiB3aWR0aD0iMTA1Ljk1NTEiIHg9IjI2MS4yMiIgeT0iMjYyLjk2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBmb250LXdlaWdodD0iNzAwIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg1Ljk1NTEiIHg9IjI3MS4yMiIgeT0iMjg1Ljk1NTEiPlRlc3QgQWdlbnQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg1LjAyNTQiIHg9IjI3MS4yMiIgeT0iMzAyLjI1MiI+VGVzdCBXcml0aW5nPC90ZXh0PjwvZz48IS0tZW50aXR5IGRvYy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9ImRvYyIgZGF0YS1zb3VyY2UtbGluZT0iMTgiIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRThFQUY2IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzNGNTFCNTtzdHJva2Utd2lkdGg6MTsiIHdpZHRoPSIxMjcuOTI1OCIgeD0iNDc3LjIzIiB5PSIyNjIuOTYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTQiIGZvbnQtd2VpZ2h0PSI3MDAiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODEuNDIyOSIgeD0iNDg3LjIzIiB5PSIyODUuOTU1MSI+RG9jIEFnZW50PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDcuOTI1OCIgeD0iNDg3LjIzIiB5PSIzMDIuMjUyIj5Eb2N1bWVudGF0aW9uPC90ZXh0PjwvZz48IS0tZW50aXR5IHJlc3VsdC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9InJlc3VsdCIgZGF0YS1zb3VyY2UtbGluZT0iMjAiIGlkPSJlbnQwMDA2Ij48cmVjdCBmaWxsPSIjQzhFNkM5IiBoZWlnaHQ9IjUyLjU5MzgiIHJ4PSI1IiByeT0iNSIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIgd2lkdGg9IjE0Ni4zOTY1IiB4PSIyNDEiIHk9IjM3Ni41NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1MC4wNjY0IiB4PSIyNTEiIHk9IjM5OS41NTUxIj5SZXN1bHQ8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjE0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEyNi4zOTY1IiB4PSIyNTEiIHk9IjQxNS44NTIiPkludGVncmF0ZWQgT3V0cHV0PC90ZXh0PjwvZz48ZyBjbGFzcz0iZW50aXR5IiBkYXRhLXF1YWxpZmllZC1uYW1lPSJHTU4xNSIgZGF0YS1zb3VyY2UtbGluZT0iMzQiIGlkPSJlbnQwMDE2Ij48cGF0aCBkPSJNMTk4LjA0LDExIEwxOTguMDQsMTA0LjY2NDEgQTAsMCAwIDAgMCAxOTguMDQsMTA0LjY2NDEgTDMxMC4yLDEwNC42NjQxIEwzMTQuMiwxNjUuMzkgTDMxOC4yLDEwNC42NjQxIEw0MzAuMzU5OCwxMDQuNjY0MSBBMCwwIDAgMCAwIDQzMC4zNTk4LDEwNC42NjQxIEw0MzAuMzU5OCwyMSBMNDIwLjM1OTgsMTEgTDE5OC4wNCwxMSBBMCwwIDAgMCAwIDE5OC4wNCwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik00MjAuMzU5OCwxMSBMNDIwLjM1OTgsMjEgTDQzMC4zNTk4LDIxIEw0MjAuMzU5OCwxMSIgZmlsbD0iI0ZGRkZGRiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxNDcuMTI2IiB4PSIyMDQuMDQiIHk9IjI4LjA2NjkiPkh1bWFuIGVuZ2luZWVyIHBsYXlzPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMTcuMjE1OCIgeD0iMjA0LjA0IiB5PSI0My4xOTk3Ij50aGUgImRpcmVjdG9yIiByb2xlPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiIHgxPSIxOTkuMDQiIHgyPSI0MjkuMzU5OCIgeTE9IjQ2LjI2NTYiIHkyPSI0Ni4yNjU2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5Mi42MjYiIHg9IjIwNC4wNCIgeT0iNjIuMzMyNSI+RGVzaWduIGNvbGxhYm9yYXRpb24gcGF0dGVybnM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIxMS4zMTk4IiB4PSIyMDQuMDQiIHk9Ijc3LjQ2NTMiPkRlZmluZSBjb21tdW5pY2F0aW9uIHByb3RvY29sczwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMTMiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjA3LjYxOTEiIHg9IjIwNC4wNCIgeT0iOTIuNTk4MSI+SGFuZGxlIGNvbmZsaWN0cyBhbmQgZXhjZXB0aW9uczwvdGV4dD48L2c+PCEtLWxpbmsgY29vcmQgdG8gY29kZS0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDAzIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjIiIGlkPSJsbms3Ij48cGF0aCBkPSJNMjc0LjY3LDIwMi4zNiBDMjM3LjQxLDIxOC45MSAxODYuNjEzNywyNDEuNDU1IDE0NC4zNDM3LDI2MC4yMjUiIGZpbGw9Im5vbmUiIGlkPSJjb29yZC10by1jb2RlIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxMzguODYsMjYyLjY2LDE0OC43MDg5LDI2Mi42NjMyLDE0My40Mjk3LDI2MC42MzA4LDE0NS40NjIyLDI1NS4zNTE3LDEzOC44NiwyNjIuNjYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgY29vcmQgdG8gdGVzdC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjMiIGlkPSJsbms4Ij48cGF0aCBkPSJNMzE0LjIsMjAyLjM2IEMzMTQuMiwyMTguOTYgMzE0LjIsMjM4LjA3IDMxNC4yLDI1Ni44NSIgZmlsbD0ibm9uZSIgaWQ9ImNvb3JkLXRvLXRlc3QiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjMxNC4yLDI2Mi44NSwzMTguMiwyNTMuODUsMzE0LjIsMjU3Ljg1LDMxMC4yLDI1My44NSwzMTQuMiwyNjIuODUiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgY29vcmQgdG8gZG9jLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDIiIGRhdGEtZW50aXR5LTI9ImVudDAwMDUiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyNCIgaWQ9ImxuazkiPjxwYXRoIGQ9Ik0zNTIuNywyMDIuMzYgQzM4OS4wMSwyMTguOTEgNDM4LjM4MDQsMjQxLjQwMTUgNDc5LjU2MDQsMjYwLjE3MTUiIGZpbGw9Im5vbmUiIGlkPSJjb29yZC10by1kb2MiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjQ4NS4wMiwyNjIuNjYsNDc4LjQ4OTYsMjU1LjI4NzUsNDgwLjQ3MDMsMjYwLjU4NjIsNDc1LjE3MTYsMjYyLjU2Nyw0ODUuMDIsMjYyLjY2IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIGNvZGUgdG8gdGVzdC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAzIiBkYXRhLWVudGl0eS0yPSJlbnQwMDA0IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjYiIGlkPSJsbmsxMCI+PHBhdGggZD0iTTE1Ni43OSwyODkuMjYgQzE5Mi4wNiwyODkuMjYgMjIyLjIxLDI4OS4yNiAyNTQuODcsMjg5LjI2IiBmaWxsPSJub25lIiBpZD0iY29kZS10ZXN0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIxNTAuNzksMjg5LjI2LDE1OS43OSwyOTMuMjYsMTU1Ljc5LDI4OS4yNiwxNTkuNzksMjg1LjI2LDE1MC43OSwyODkuMjYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjI2MC44NywyODkuMjYsMjUxLjg3LDI4NS4yNiwyNTUuODcsMjg5LjI2LDI1MS44NywyOTMuMjYsMjYwLjg3LDI4OS4yNiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI3NC44MzI1IiB4PSIxNjguOCIgeT0iMjgyLjMyNjkiPkNvbGxhYm9yYXRlPC90ZXh0PjwvZz48IS0tbGluayB0ZXN0IHRvIGRvYy0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMjciIGlkPSJsbmsxMSI+PHBhdGggZD0iTTM3My40MiwyODkuMjYgQzQwNi4xOCwyODkuMjYgNDM2LjM4LDI4OS4yNiA0NzAuOTksMjg5LjI2IiBmaWxsPSJub25lIiBpZD0idGVzdC1kb2MiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjM2Ny40MiwyODkuMjYsMzc2LjQyLDI5My4yNiwzNzIuNDIsMjg5LjI2LDM3Ni40MiwyODUuMjYsMzY3LjQyLDI4OS4yNiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMwMDAwMDAiIHBvaW50cz0iNDc2Ljk5LDI4OS4yNiw0NjcuOTksMjg1LjI2LDQ3MS45OSwyODkuMjYsNDY3Ljk5LDI5My4yNiw0NzYuOTksMjg5LjI2IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc0LjgzMjUiIHg9IjM4NS4yIiB5PSIyODIuMzI2OSI+Q29sbGFib3JhdGU8L3RleHQ+PC9nPjwhLS1saW5rIGNvZGUgdG8gcmVzdWx0LS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDYiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIyOSIgaWQ9ImxuazEyIj48cGF0aCBkPSJNMTM0Ljk0LDMxNiBDMTcyLjcxLDMzNC4wOSAyMTcuNTk4NiwzNTUuNTg4NCAyNTUuMzA4NiwzNzMuNjQ4NCIgZmlsbD0ibm9uZSIgaWQ9ImNvZGUtdG8tcmVzdWx0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIyNjAuNzIsMzc2LjI0LDI1NC4zMzA2LDM2OC43NDQ5LDI1Ni4yMTA1LDM3NC4wODAzLDI1MC44NzUxLDM3NS45NjAyLDI2MC43MiwzNzYuMjQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgdGVzdCB0byByZXN1bHQtLT48ZyBjbGFzcz0ibGluayIgZGF0YS1lbnRpdHktMT0iZW50MDAwNCIgZGF0YS1lbnRpdHktMj0iZW50MDAwNiIgZGF0YS1saW5rLXR5cGU9ImRlcGVuZGVuY3kiIGRhdGEtc291cmNlLWxpbmU9IjMwIiBpZD0ibG5rMTMiPjxwYXRoIGQ9Ik0zMTQuMiwzMTUuODYgQzMxNC4yLDMzNC4wMSAzMTQuMiwzNTIuMjUgMzE0LjIsMzcwLjM3IiBmaWxsPSJub25lIiBpZD0idGVzdC10by1yZXN1bHQiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMDAwMDAwIiBwb2ludHM9IjMxNC4yLDM3Ni4zNywzMTguMiwzNjcuMzcsMzE0LjIsMzcxLjM3LDMxMC4yLDM2Ny4zNywzMTQuMiwzNzYuMzciIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgZG9jIHRvIHJlc3VsdC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA1IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA2IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMzEiIGlkPSJsbmsxNCI+PHBhdGggZD0iTTQ4OC44MywzMTYgQzQ1Mi4wNCwzMzQuMDkgNDA4LjQxNDMsMzU1LjUzMjUgMzcxLjY4NDMsMzczLjU5MjUiIGZpbGw9Im5vbmUiIGlkPSJkb2MtdG8tcmVzdWx0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzAwMDAwMCIgcG9pbnRzPSIzNjYuMywzNzYuMjQsMzc2LjE0MTUsMzc1Ljg1ODQsMzcwLjc4NjksMzc0LjAzMzgsMzcyLjYxMTUsMzY4LjY3OTMsMzY2LjMsMzc2LjI0IiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjw/cGxhbnR1bWwtc3JjIE5QQjFRam4wMzhSbHluSmd4aXNtYUJHYWZBNEtpZmpycWFpQmVQMUJCWEVGclpqYUI5Y25KNTlBdHhzUTZHVGxGMVRSbHB2OWwtTnY5NFZpNEZmV0ZQZFhuTERsZS10V3NKT2xSVUlIdDh1M0h0V3pVaTZKbENFMzdPRktKRkJKUWxyRHozUU80bzFZOHZSUVdGM05XOXc3cVlpSUhaV19DX3pFTVRpWW9TSGo1dUZOLXdsekpOclBTWG1UbmFkX0tiLVNSb3pJZXRkS2dnZnNoOTBkQW5vaFFXTHNXMk9maUF4aF9UZHNpcDViTTJRVC1hdkhMSnJIWmt2R3hMZG5KNUVibXZkX1pPRkNWOHVVZW5URlJPUDVYSGMtdk1QY0RIV3hWUHl4RXN1TWxYem1xN3FjLVdTOWprZTI3Vm1RZkh5Ykx5SVNYX05rUWQtdi1zZkMtUWdEdXJWUVYyekVGcWhQcHFTZkpxcWVWRGo0dG52Ym1rMFFUQWQxRmRDUVF4OHE0cmdyMDRnRnp3eDVNUWJRUUFicThIYllHSDNrV0dfYnItWWxsSHl4SXUzS1VhQXo3dGVQX21tZ3d6TTRiVkRmSm5uTjQzY1dnWGl6LWhaNW1SVWFCVHZ6d013WGpvOE9RU1p2V3RSSlZEVUR2OWlmN3JiT0luOW1SeWM1MUQwWC00TzZxMVptaFM0LWVPRDEzUEZQX20wMD8+PC9nPjwvc3ZnPg=='><p>In multi-Agent systems, the human engineer’s role is more like a “director” – designing collaboration patterns between Agents, defining communication protocols, handling conflicts and exceptions.</p><h2 id="Closing-Thoughts"><a href="#Closing-Thoughts" class="headerlink" title="Closing Thoughts"></a>Closing Thoughts</h2><p>Agent-Oriented Engineering isn’t just a new technical paradigm – it’s a redefinition of the engineer’s role.</p><p>In this transition, what we lose is “the satisfaction of writing code” – that feeling of typing out lines of code and watching tests turn green. But what we gain is a higher level of creativity – designing systems, defining constraints, ensuring quality.</p><p>The shift from Programming to Engineering follows the same arc. When AI takes over Programming, human engineers can finally focus on what we’re truly best at: <strong>understanding the essence of problems, making tradeoff decisions, and bearing engineering responsibility</strong>.</p><p>I recall mentioning the concept of “stepping stones” in an earlier post – discoveries that seem unrelated to the final goal may be the key step toward success. The Agent-Oriented Engineering we’re exploring today may well be the stepping stone for the next decade of software engineering.</p><p>As Steve Jobs said:</p><blockquote><p>You can’t connect the dots looking forward; you can only connect them looking backwards.</p></blockquote><p>Our understanding and practice of Agents today will ultimately become the foundation of tomorrow’s software engineering.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Over the past year, AI-assisted programming tools have emerged en masse – from GitHub Copilot to Cursor to Claude Code, each claiming to</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Engineering" scheme="https://johnsonlee.io/categories/computer-science/Engineering/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Agent" scheme="https://johnsonlee.io/tags/Agent/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>What Can We Still Do in the AI Era?</title>
    <link href="https://johnsonlee.io/2026/02/08/ai-era-what-we-can-do.en/"/>
    <id>https://johnsonlee.io/2026/02/08/ai-era-what-we-can-do.en/</id>
    <published>2026-02-08T09:00:00.000Z</published>
    <updated>2026-02-08T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>After publishing “Witnessing the End of the Programmer Profession,” I received a flood of messages. Some asked about technical details, some discussed how to use Claude Code, but the most common question was far more fundamental:</p><blockquote><p>If AI can truly perform at a Staff Engineer level, what can we still do?</p></blockquote><p>I’ve been asking myself the same thing.</p><h2 id="The-Career-Crisis"><a href="#The-Career-Crisis" class="headerlink" title="The Career Crisis"></a>The Career Crisis</h2><p>Let’s start with the anxiety-inducing part.</p><p>The <a href="https://github.com/johnsonlee/graphite">Graphite</a> project – Claude wrote it in one hour. Two days of work, done in one hour, code quality no worse than what I’d produce myself. And that’s just the beginning.</p><p>A few days ago I tried another scenario: had Claude write a slide deck. The prompt was roughly:</p><blockquote><p>In the style of a Wall Street investment bank, write a presentation about XXX for investor pitch</p></blockquote><p>The output – from structure to phrasing to chart recommendations – read like the work of an extremely seasoned analyst.</p><p>These two examples: one is technical work, the other is business communication. One relies on hard skills, the other on soft skills. AI hit 80-90% on both.</p><p>What does this mean?</p><p>It means a huge number of “learnable skills” are depreciating. Writing code is learnable, writing decks is learnable, doing data analysis is learnable, writing reports is learnable. These skills were valuable because they had high learning costs and long mastery curves. But when AI can produce a “five years of experience” quality result in seconds, the moat around these skills collapses.</p><p>It’s not just programmers. Investment analysts, consultants, product managers, marketing – virtually every white-collar role will be affected.</p><h2 id="New-Opportunities"><a href="#New-Opportunities" class="headerlink" title="New Opportunities"></a>New Opportunities</h2><p>But the coin has another side.</p><p>Things you never dared to imagine are now imaginable.</p><p>I’ve always wanted to build a bytecode-based static analysis framework that can trace data flow and automatically clean up proxies. The idea sat in my head for years because the engineering effort was too large – designing data structures, implementing dataflow analysis, handling edge cases, writing a CLI, writing tests – one person simply couldn’t finish it.</p><p>Now? One hour.</p><p>What used to take a team months can now be handled by one person directing an agent team. I state the requirements, Claude writes code, runs tests, fixes bugs – I just review and course-correct.</p><p>This isn’t an efficiency improvement. This is <strong>an expansion of the capability boundary.</strong></p><p>My son is ten years old. He spent an hour with Claude Code and built a multiplayer online combat game – three character classes, physics-based projectiles, P2P networking. A ten-year-old, one hour, a complete game.</p><p>This made me realize something: <strong>we can Dream Bigger.</strong></p><p>Those seemingly audacious ideas – the ones you used to dismiss with “forget it, too complex, can’t be done” – are worth revisiting now. Not because you got stronger, but because you now have a team on call.</p><h2 id="So-What-Can-We-Still-Do"><a href="#So-What-Can-We-Still-Do" class="headerlink" title="So What Can We Still Do?"></a>So What Can We Still Do?</h2><p>AI can do most “learnable things.” What’s left for humans?</p><p>My answer: <strong>do the things that can’t be learned.</strong></p><p>But the follow-up question is immediate: what can’t be learned? How do you know which unlearnables you’re good at?</p><p>I have a clue – <strong>intuition.</strong></p><p>Intuition is subtle. You look at a piece of code and intuition tells you “this is going to cause problems.” You look at a business plan and intuition tells you “this direction is wrong.” You can’t articulate exactly what’s off, but you feel it.</p><p>On the surface, intuition is a product of experience – after enough exposure, the brain compresses judgment logic into instant reactions. But here’s the thing: given the same exposure, why do some people develop intuition and others don’t?</p><p>I’ve seen engineers with ten years of experience who still read code line by line and can’t say what’s wrong afterward. I’ve seen people with three years who can glance at code and pinpoint the architectural weak spot.</p><p>The difference? Talent.</p><p>Talent doesn’t make you “perform well” – it makes you “learn fast.” More precisely, talent determines three things:</p><ol><li><strong>Perceptual sensitivity:</strong> Given the same information, some people are naturally more attuned to certain signals. Some are sensitive to color, others to rhythm, others to structure.</li><li><strong>Compression efficiency:</strong> The speed of converting experience into reusable intuition varies enormously. Some people need to make the same mistake ten times to learn; others internalize it after one.</li><li><strong>Direction:</strong> What types of patterns does your brain most readily form intuition around? Some people are sharp on interpersonal dynamics, others on numbers, others on timing, others on structure. This isn’t the result of choice – it’s more like factory settings.</li></ol><p>So intuition is really the intersection of talent and experience. Talent determines direction and efficiency; experience fills in the content. <strong>Intuition is the developer fluid for talent</strong> – it reveals those underlying tendencies through specific scenarios. Whatever you have keen intuition about may well be where your talent lies.</p><h2 id="A-Pragmatic-Strategy"><a href="#A-Pragmatic-Strategy" class="headerlink" title="A Pragmatic Strategy"></a>A Pragmatic Strategy</h2><p>Back to the opening question: what can we still do in the AI era?</p><p>Two things.</p><ol><li><strong>Dream Bigger:</strong> Those ideas you used to think were “impossible” – revisit them. You now have an agent team. Execution is no longer the bottleneck. Your imagination is.</li><li><strong>Find where your intuition lives:</strong> Observe yourself. On what topics can you make accurate judgments without conscious deliberation? In what scenarios can you see what others miss? That direction may be where you’re least replaceable.</li></ol><p>AI can learn anything that can be formalized. It has infinite compute, infinite memory, infinite patience. But what it lacks is direction – it doesn’t know where to go or what to form intuition about.</p><p>You do.</p><p>Rather than agonizing over being replaced, take a hard look at your own intuitions, then pour your time into them. Make your intuition sharper, deeper, more irreplaceable.</p><p>That may be the most pragmatic response for ordinary people in the AI era.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;After publishing “Witnessing the End of the Programmer Profession,” I received a flood of messages. Some asked about technical details,</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
  </entry>
  
  <entry>
    <title>AI 时代，我们还能做什么？</title>
    <link href="https://johnsonlee.io/2026/02/08/ai-era-what-we-can-do/"/>
    <id>https://johnsonlee.io/2026/02/08/ai-era-what-we-can-do/</id>
    <published>2026-02-08T09:00:00.000Z</published>
    <updated>2026-02-08T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>前段时间写完《亲眼见证程序员职业的终结》后，收到不少私信。有人问技术细节，有人讨论 Claude Code 的用法，但问得最多的是一个更根本的问题：</p><blockquote><p>如果 AI 真能做到 Staff Engineer 的水平，那我们还能做什么？</p></blockquote><p>这个问题我自己也在想。</p><h2 id="职业危机"><a href="#职业危机" class="headerlink" title="职业危机"></a>职业危机</h2><p>先说让人焦虑的部分。</p><p><a href="https://github.com/johnsonlee/graphite">Graphite</a> 那个项目，一小时被 Claude 写完。两天的活，一小时搞定，代码质量不输我自己写的。这还只是开始。</p><p>前几天试了另一个场景：让 Claude 写一份 PPT，提示词大概是:</p><blockquote><p>以华尔街投行的风格，写一份关于 XXX 的 PPT 给投资人演示</p></blockquote><p>出来的东西，从结构到措辞到图表建议，像是一个经验极其丰富的分析师写的。</p><p>这两个例子，一个是技术活，一个是商业沟通。一个靠硬技能，一个靠软技能。但 AI 都能做到八九十分。</p><p>这意味着什么？</p><p>意味着大量“可学习的技能”正在贬值。写代码是可学习的，写 PPT 是可学习的，做数据分析是可学习的，写报告是可学习的。这些技能之所以值钱，是因为学习成本高、熟练周期长。但当 AI 能在几秒钟内输出一个“五年经验”水平的结果时，这些技能的护城河就塌了。</p><p>不只是程序员，投行分析师、咨询顾问、产品经理、市场营销——几乎所有白领岗位都会被波及。</p><h2 id="新的机会"><a href="#新的机会" class="headerlink" title="新的机会"></a>新的机会</h2><p>但硬币有另一面。</p><p>以前不敢想的事情，现在可以想了。</p><p>我一直想做一个基于字节码的静态分析框架，能追踪数据流，能自动清理代理。这个想法在脑子里躺了好几年，因为工程量太大——设计数据结构、实现 dataflow analysis、处理各种 edge case、写 CLI、写测试——一个人根本做不完。</p><p>现在呢？一小时。</p><p>以前需要一个团队花几个月才能做的事，现在一个人指挥一个 agent team 就能搞定。我说需求，Claude 写代码、跑测试、修 bug，我只需要 review 和纠偏。</p><p>这不是效率提升，这是<strong>能力边界的扩展</strong>。</p><p>我儿子十岁，用 Claude Code 捣鼓了一小时，做出一个多人在线对战游戏——三种角色、物理弹道、P2P 联机。一个十岁的孩子，一小时，一个完整的游戏。</p><p>这让我意识到一件事：<strong>我们可以 Dream Bigger。</strong></p><p>那些看似大胆的想法——以前觉得“算了吧，太复杂了，做不了”的想法——现在可以重新拿出来看看了。不是因为你变强了，而是因为你有了一支随叫随到的团队。</p><h2 id="那我们还能做什么？"><a href="#那我们还能做什么？" class="headerlink" title="那我们还能做什么？"></a>那我们还能做什么？</h2><p>AI 能做大部分“可学习的事”。那人还剩下什么？</p><p>我的答案是：<strong>去做那些“学不来的事”。</strong></p><p>但问题马上来了：什么是学不来的？怎么知道自己擅长什么学不来的事？</p><p>我想到一个线索——<strong>直觉</strong>。</p><p>直觉这东西很微妙。你看一段代码，直觉告诉你“这里会出问题”。你看一个商业计划，直觉告诉你“这个方向不对”。你说不清具体哪里不对，但就是有感觉。</p><p>表面上看，直觉是经验的产物——见得多了，大脑把判断逻辑压缩成了瞬时反应。但问题是：同样的经验暴露量，为什么有人形成了直觉，有人没有？</p><p>我见过干了十年的工程师，看代码还是一行一行读，读完说不出哪里有问题。也见过干了三年的人，扫一眼就能指出架构的软肋。</p><p>差别在哪？在天赋。</p><p>天赋不是让你“做得好”，而是让你“学得快”。更准确地说，天赋决定了三件事：</p><ol><li><strong>感知的敏感度：</strong>同样的信息摆在面前，有些人天然更容易注意到某些信号。就像有人对颜色敏感，有人对节奏敏感，有人对结构敏感。</li><li><strong>压缩的效率：</strong>把经验转化成可复用的直觉，这个过程的速度差异很大。有人需要踩十次坑才能记住，有人踩一次就刻进骨子里了。</li><li><strong>方向：</strong>你的大脑更容易对什么类型的模式形成直觉？有人对人际关系敏锐，有人对数字敏锐，有人对时机敏锐，有人对结构敏锐。这不是选择的结果，更像是出厂设置。</li></ol><p>所以，直觉其实是天赋和经验的交汇点。天赋决定了方向和效率，经验填充了内容。<strong>直觉是天赋的显影剂</strong>——它把那些藏在底层的倾向，通过具体的场景显现出来。你对什么有敏锐直觉，那里可能就是你天赋所在的地方。</p><h2 id="一个务实的策略"><a href="#一个务实的策略" class="headerlink" title="一个务实的策略"></a>一个务实的策略</h2><p>回到开头的问题：AI 时代，我们还能做什么？</p><p>两件事。</p><ol><li><strong>Dream Bigger：</strong>那些以前觉得“做不了”的想法，重新拿出来。你现在有了一支 agent 团队，执行力不再是瓶颈。瓶颈是你的想象力。</li><li><strong>找到你的直觉所在：</strong> 观察自己：对什么事情的判断不需要思考就能准？什么场景下能看到别人看不到的东西？那个方向，可能就是你最不可被替代的地方。</li></ol><p>AI 可以学习任何可以被形式化的东西。它有无限的算力、无限的记忆、无限的耐心。但它没有的是方向——它不知道该往哪走、该对什么形成直觉。</p><p>而你知道。</p><p>与其焦虑被替代，不如认真观察自己的直觉，然后把时间砸进去。让你的直觉变得更准、更深、更不可替代。</p><p>这可能是 AI 时代，普通人最务实的应对方式。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;前段时间写完《亲眼见证程序员职业的终结》后，收到不少私信。有人问技术细节，有人讨论 Claude Code 的用法，但问得最多的是一个更根本的问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果 AI 真能做到 Staff Engineer</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
  </entry>
  
  <entry>
    <title>探索 Claude 的能力边界</title>
    <link href="https://johnsonlee.io/2026/01/31/exploring-claude-boundaries/"/>
    <id>https://johnsonlee.io/2026/01/31/exploring-claude-boundaries/</id>
    <published>2026-01-31T00:00:00.000Z</published>
    <updated>2026-01-31T00:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>自从用 Claude 完成了 <a href="https://github.com/johnsonlee/graphite">Graphite</a> – 基于 JVM 字节码的静态分析框架，工程质量和解决问题的方法和效率着实把我给震撼到了，然后又让它用 Rust 写了 <a href="https://github.com/johnsonlee/rustyman">Rustyman</a> – 面向 AI 的网络代理服务，效果也很是出奇的好，名副其实的 10x 工程师。于是，便产生了一个大胆的想法 – <a href="https://github.com/johnsonlee/testpilot">TestPilot</a>，在纯 JVM 上运行 Android APK 。拿到需求后，它便进入了 Plan 模式，根据对需求的理解提出了双层架构的方案，然后规划了 Road Map，分了 3 个阶段来进行，从 Phase 1 - MVP 到 Phase 3 - Production Ready。在 MVP 阶段表现跟前两个项目一样丝滑，到了 Phase 2 一开始风风火火的重写各种 Android 系统类，也没觉得有什么不对，逐步完了 Activity, View, Fragment, ViewPager, RecyclerView 的重写，接下来它提出要重写 ConstraintLayout 的时候，我意识到不对劲了– 重写系统类我能理解，但为什么要重写一个二方库？ConstraintLayout 并不属于 Android Framework？于是便跟它一起仔细地 review 了整个方案，才发现它对底层依赖的 layoutlib 的能力不太了解，才提出重写系统类的方案，这不禁让我开始思考一个问题：<strong>Claude 的能力边界到底在哪里？</strong></p><h2 id="从一次对话说起"><a href="#从一次对话说起" class="headerlink" title="从一次对话说起"></a>从一次对话说起</h2><p>我问 Claude：</p><blockquote><p>为什么你在 Graphite 上的表现比 TestPilot 好那么多？</p></blockquote><p>它的回答让我有些意外。它没有给出那种“AI 有局限性”的套话，而是非常具体地分析了两个项目在问题性质上的本质差异：</p><blockquote><p>Graphite 我能做好的原因：问题是组合式的。静态分析 &#x3D; 解析 + 遍历 + 匹配。每一步都有成熟的库和明确的 API 边界。</p><p>TestPilot 我挣扎的原因：问题是仿真式的。要模拟 Android 运行时行为，但 Android 运行时是个巨大的黑盒，有大量隐式契约。</p></blockquote><p>它用了一个比喻：Graphite 是在一个有规则的棋盘上下棋；TestPilot 是在模拟一个它没完整见过的物理系统。</p><p>这个自我认知的准确程度，说实话，超出了我的预期。</p><h2 id="问题域的确定性"><a href="#问题域的确定性" class="headerlink" title="问题域的确定性"></a>问题域的确定性</h2><p>顺着它的思路，我整理了一下两个项目的差异：</p><table><thead><tr><th></th><th>Graphite</th><th>TestPilot</th></tr></thead><tbody><tr><td>问题定义</td><td>清晰、封闭</td><td>模糊、开放</td></tr><tr><td>边界</td><td>明确 (JVM bytecode → 调用图)</td><td>模糊 (Android 整个运行时)</td></tr><tr><td>参考实现</td><td>有 (SootUp, ASM)</td><td>无完整先例</td></tr><tr><td>成功标准</td><td>可验证 (找到的常量对不对)</td><td>难验证 (行为“像”Android 吗)</td></tr></tbody></table><p>Graphite 的每一步都可以增量验证：写一个查询，跑一下，结果对不对立刻知道。而 TestPilot 的难点在于——<code>View.measure()</code> 该怎么工作？文档说得很笼统，真正的行为藏在 AOSP 源码里，而且版本间有差异。</p><p>这让我想到了《为什么伟大不能被计划》中提到的一个观点：<strong>目标越明确，路径越清晰；目标越模糊，越需要探索。</strong> AI 在前者上表现出色，在后者上则需要人类的引导。</p><h2 id="Claude-的局限性"><a href="#Claude-的局限性" class="headerlink" title="Claude 的局限性"></a>Claude 的局限性</h2><p>在对话中，我直接问 Claude：你在软件工程方面有哪些局限性？</p><p>它的回答相当坦诚：</p><ul><li><strong>上下文的断层感</strong>——它看不到完整代码库。即使把代码贴给它，它也缺乏 IDE 那种“活”的理解，比如一个类被哪些地方引用、某个改动会不会破坏下游模块。</li><li><strong>没有真正的执行反馈</strong>——它能生成代码，但它不会“跑”代码然后学习。这意味着它在对话之外是断掉的反馈循环。</li><li><strong>生产环境的盲区</strong>——真实的 bug 往往藏在时序、并发、设备差异里。它可以帮分析堆栈，但复现条件、设备碎片化这些“脏活”它只能推测。</li></ul><p>这些局限性其实不难理解。但接下来它说的一句话让我印象深刻：</p><blockquote><p>你把我当一个随叫随到但每次都需要重新 onboard 的 Staff Engineer 用，期望就比较合理。</p></blockquote><p>这个定位非常准确。</p><h2 id="弥补局限的方法"><a href="#弥补局限的方法" class="headerlink" title="弥补局限的方法"></a>弥补局限的方法</h2><p>既然知道了局限在哪里，下一步自然是想办法弥补。我问 Claude：有什么办法能弥补你的这些局限？</p><p>它给出了几个思路：</p><ul><li><strong>把结构化知识喂给它</strong>——比如 Graphite 产出的调用图谱，如果能导出成可读格式，贴给它时建议会精准很多。不需要完整代码，只需要“骨架”。</li><li><strong>把结果回流给它</strong>——跑完它建议的脚本后，告诉它“这个在 module-x 上跑了 3 分钟，干掉了 47 个 dead branch，但漏了 lazy-init 的场景”——这就是手动的反馈循环。</li><li><strong>用 Claude Code 做闭环</strong>——Claude Code 能执行、看报错、自己迭代，正好补了“不能跑代码”的短板。对话式的 Claude 适合前期方案设计和 review，Claude Code 适合执行层。</li></ul><p>其中最有意思的是它提到的一个本质性思路：</p><blockquote><p>不需要我记住一切，只需要我能查到一切。</p></blockquote><p>如果 Graphite 能回答“这个类被谁依赖”，它就不需要记住依赖图——它只需要知道怎么问 Graphite。理想状态是：我问问题 → 它调用我的工具拿数据 → 基于数据回答。</p><p>这让我想到了 MCP（Model Context Protocol）。把 Graphite 的查询接口暴露成 MCP server，Claude 就能“实时查”而不是“靠记忆”。</p><h2 id="大型代码库的-Onboard"><a href="#大型代码库的-Onboard" class="headerlink" title="大型代码库的 Onboard"></a>大型代码库的 Onboard</h2><p>我还问了一个实际问题：对于一个存在了 10 多年的代码库，你最高效的 onboard 方式是什么？</p><p>它的回答出乎我的意料：<strong>不是从代码开始，是从“力的分布”开始。</strong></p><p>它建议我先回答这些问题：</p><ul><li>什么东西改起来最慢&#x2F;最怕？</li><li>最近 3 个月的 incident 集中在哪些模块？</li><li>新人上手最常踩的坑是什么？</li></ul><p>这比架构图有用。10 年的仓库，架构图大概率是过时的或理想化的。但痛点是真实的，能帮它快速定位哪些区域值得深入。</p><p>它还建议我写一份“生存指南”而非文档：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># Project Survival Guide</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 模块心智模型</span></span><br><span class="line"><span class="bullet">-</span> core-network: 所有 API 调用的唯一出口，别绕过它</span><br><span class="line"><span class="bullet">-</span> legacy-payment: 正在迁移到 payment-v2，新代码不要依赖</span><br><span class="line"></span><br><span class="line"><span class="section">## 历史包袱</span></span><br><span class="line"><span class="bullet">-</span> analytics 模块有 3 套 API，只用 AnalyticsV3</span><br><span class="line"><span class="bullet">-</span> 有些 AB 实验 flag 永远返回 true，但代码没删</span><br><span class="line"></span><br><span class="line"><span class="section">## 地雷</span></span><br><span class="line"><span class="bullet">-</span> 不要动 BaseActivity，继承链太深</span><br><span class="line"><span class="bullet">-</span> ProGuard rules 碰之前先跑 release build</span><br></pre></td></tr></table></figure><p>这种文档 500 行以内，但能让它在 5 分钟内变得“可用”。</p><h2 id="思考"><a href="#思考" class="headerlink" title="思考"></a>思考</h2><p>这次对话让我对 AI 辅助开发有了更清晰的认知。</p><ul><li><strong>AI 的能力边界由问题域的确定性决定</strong>。问题越封闭、边界越清晰、验证越容易，AI 的表现就越好。反过来，如果问题是开放的、需要模拟未知系统的行为，AI 就会挣扎。</li><li><strong>弥补 AI 局限的关键不是让它记住更多，而是让它能查到更多</strong>。外部化 context，按需注入，让 AI 成为工具链的一部分而非独立的 oracle。</li><li><strong>最高效的人机协作模式是互补而非替代</strong>。AI 擅长快速原型、代码审查、解释复杂概念、生成样板代码；人类擅长判断模糊需求、理解组织政治、维护长期的项目心智模型。</li></ul><p>Steve Jobs 说过：</p><blockquote><p>The computer is a bicycle for the mind.</p></blockquote><p>AI 是这辆自行车的升级版。但骑车的人，依然是我们自己。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;自从用 Claude 完成了 &lt;a href=&quot;https://github.com/johnsonlee/graphite&quot;&gt;Graphite&lt;/a&gt; – 基于 JVM 字节码的静态分析框架，工程质量和解决问题的方法和效率着实把我给震撼到了，然后又让它用 Rust 写了</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>Exploring the Boundaries of Claude&#39;s Capabilities</title>
    <link href="https://johnsonlee.io/2026/01/31/exploring-claude-boundaries.en/"/>
    <id>https://johnsonlee.io/2026/01/31/exploring-claude-boundaries.en/</id>
    <published>2026-01-31T00:00:00.000Z</published>
    <updated>2026-01-31T00:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Ever since I used Claude to build <a href="https://github.com/johnsonlee/graphite">Graphite</a> – a static analysis framework based on JVM bytecode – its engineering quality, problem-solving approach, and efficiency genuinely blew me away. Then I had it write <a href="https://github.com/johnsonlee/rustyman">Rustyman</a> in Rust – a network proxy service designed for AI – and the results were surprisingly good too. A true 10x engineer. So a bold idea formed: <a href="https://github.com/johnsonlee/testpilot">TestPilot</a> – running Android APKs on a pure JVM. After receiving the requirements, it entered Plan mode, proposed a dual-layer architecture based on its understanding, then laid out a roadmap in 3 phases, from Phase 1 - MVP to Phase 3 - Production Ready. The MVP phase was as smooth as the previous two projects. Phase 2 started with an enthusiastic rewrite of various Android system classes – nothing seemed off at first. It completed rewrites of Activity, View, Fragment, ViewPager, and RecyclerView. Then it proposed rewriting ConstraintLayout, and that’s when I realized something was wrong – rewriting system classes I could understand, but why rewrite a third-party library? ConstraintLayout isn’t part of the Android Framework. So I sat down with it and carefully reviewed the entire plan, only to discover it didn’t fully understand the capabilities of the underlying layoutlib dependency, which is why it proposed rewriting system classes in the first place. This made me start thinking: <strong>where exactly are the boundaries of Claude’s capabilities?</strong></p><h2 id="Starting-from-a-Conversation"><a href="#Starting-from-a-Conversation" class="headerlink" title="Starting from a Conversation"></a>Starting from a Conversation</h2><p>I asked Claude:</p><blockquote><p>Why did you perform so much better on Graphite than on TestPilot?</p></blockquote><p>Its answer surprised me. Instead of giving some boilerplate “AI has limitations” response, it very specifically analyzed the fundamental difference in problem nature between the two projects:</p><blockquote><p>The reason I did well on Graphite: the problem is compositional. Static analysis &#x3D; parsing + traversal + matching. Each step has mature libraries and clear API boundaries.</p><p>The reason I struggled on TestPilot: the problem is simulation-based. It requires emulating Android runtime behavior, but the Android runtime is a massive black box with extensive implicit contracts.</p></blockquote><p>It used an analogy: Graphite is playing chess on a board with well-defined rules; TestPilot is simulating a physical system it has never fully observed.</p><p>The accuracy of this self-awareness, honestly, exceeded my expectations.</p><h2 id="Determinism-of-the-Problem-Domain"><a href="#Determinism-of-the-Problem-Domain" class="headerlink" title="Determinism of the Problem Domain"></a>Determinism of the Problem Domain</h2><p>Following its line of thinking, I organized the differences between the two projects:</p><table><thead><tr><th></th><th>Graphite</th><th>TestPilot</th></tr></thead><tbody><tr><td>Problem definition</td><td>Clear, closed</td><td>Ambiguous, open</td></tr><tr><td>Boundaries</td><td>Explicit (JVM bytecode -&gt; call graph)</td><td>Fuzzy (the entire Android runtime)</td></tr><tr><td>Reference implementations</td><td>Available (SootUp, ASM)</td><td>No complete precedent</td></tr><tr><td>Success criteria</td><td>Verifiable (are the discovered constants correct?)</td><td>Hard to verify (does the behavior “look like” Android?)</td></tr></tbody></table><p>Every step of Graphite could be incrementally verified: write a query, run it, and you know immediately whether the result is correct. The difficulty with TestPilot was different – how should <code>View.measure()</code> work? The documentation is vague; the real behavior is buried in AOSP source code, and it varies between versions.</p><p>This reminded me of a point from <em>Why Greatness Cannot Be Planned</em>: <strong>the clearer the goal, the clearer the path; the fuzzier the goal, the more exploration is needed.</strong> AI excels at the former; for the latter, it needs human guidance.</p><h2 id="Claude’s-Limitations"><a href="#Claude’s-Limitations" class="headerlink" title="Claude’s Limitations"></a>Claude’s Limitations</h2><p>During the conversation, I directly asked Claude: what are your limitations in software engineering?</p><p>Its answer was remarkably candid:</p><ul><li><strong>Fragmented context</strong> – it can’t see the complete codebase. Even when you paste code to it, it lacks the “living” understanding an IDE has, like which classes reference what, or whether a change will break downstream modules.</li><li><strong>No real execution feedback</strong> – it can generate code, but it doesn’t “run” code and learn from results. This means outside the conversation, the feedback loop is broken.</li><li><strong>Production blind spots</strong> – real bugs often hide in timing, concurrency, and device differences. It can help analyze stack traces, but reproduction conditions and device fragmentation are things it can only guess at.</li></ul><p>These limitations are not hard to understand. But what it said next left an impression:</p><blockquote><p>If you think of me as a Staff Engineer who’s always on call but needs to be re-onboarded every time, your expectations will be about right.</p></blockquote><p>That framing is remarkably accurate.</p><h2 id="Ways-to-Compensate-for-the-Limitations"><a href="#Ways-to-Compensate-for-the-Limitations" class="headerlink" title="Ways to Compensate for the Limitations"></a>Ways to Compensate for the Limitations</h2><p>Knowing where the limitations are, the natural next step is finding ways to compensate. I asked Claude: what are some ways to mitigate these limitations?</p><p>It offered several ideas:</p><ul><li><strong>Feed it structured knowledge</strong> – for example, the call graphs produced by Graphite. If exported in a readable format, pasting them in would make its suggestions far more precise. No need for full code, just the “skeleton.”</li><li><strong>Feed results back to it</strong> – after running a script it suggested, tell it “this ran for 3 minutes on module-x, eliminated 47 dead branches, but missed lazy-init scenarios” – that’s a manual feedback loop.</li><li><strong>Use Claude Code for closed-loop iteration</strong> – Claude Code can execute, see errors, and iterate on its own, precisely filling the “can’t run code” gap. Conversational Claude is suited for upfront design and review; Claude Code is suited for execution.</li></ul><p>The most interesting was an insight it raised at a fundamental level:</p><blockquote><p>I don’t need to remember everything; I just need to be able to look up everything.</p></blockquote><p>If Graphite can answer “who depends on this class,” then Claude doesn’t need to memorize the dependency graph – it just needs to know how to ask Graphite. The ideal state: I ask a question -&gt; it calls my tools to get data -&gt; it answers based on the data.</p><p>This made me think of MCP (Model Context Protocol). Expose Graphite’s query interface as an MCP server, and Claude can “look things up in real time” instead of “relying on memory.”</p><h2 id="Onboarding-to-a-Large-Codebase"><a href="#Onboarding-to-a-Large-Codebase" class="headerlink" title="Onboarding to a Large Codebase"></a>Onboarding to a Large Codebase</h2><p>I also asked a practical question: for a codebase that has existed for 10+ years, what’s the most efficient way for you to onboard?</p><p>Its answer was unexpected: <strong>don’t start from the code; start from the “distribution of forces.”</strong></p><p>It suggested I first answer these questions:</p><ul><li>What’s the slowest&#x2F;scariest thing to change?</li><li>Where have the incidents in the last 3 months concentrated?</li><li>What are the most common pitfalls new engineers hit?</li></ul><p>This is more useful than an architecture diagram. In a 10-year-old repo, the architecture diagram is most likely outdated or idealized. But pain points are real, and they quickly reveal which areas are worth diving into.</p><p>It also suggested I write a “survival guide” rather than documentation:</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># Project Survival Guide</span></span><br><span class="line"></span><br><span class="line"><span class="section">## Module Mental Model</span></span><br><span class="line"><span class="bullet">-</span> core-network: the sole exit point for all API calls, don&#x27;t bypass it</span><br><span class="line"><span class="bullet">-</span> legacy-payment: being migrated to payment-v2, don&#x27;t depend on it for new code</span><br><span class="line"></span><br><span class="line"><span class="section">## Historical Baggage</span></span><br><span class="line"><span class="bullet">-</span> The analytics module has 3 sets of APIs; only use AnalyticsV3</span><br><span class="line"><span class="bullet">-</span> Some A/B experiment flags always return true, but the code was never cleaned up</span><br><span class="line"></span><br><span class="line"><span class="section">## Landmines</span></span><br><span class="line"><span class="bullet">-</span> Don&#x27;t touch BaseActivity, the inheritance chain is too deep</span><br><span class="line"><span class="bullet">-</span> Run a release build before touching ProGuard rules</span><br></pre></td></tr></table></figure><p>A document like this, under 500 lines, can make it “usable” within 5 minutes.</p><h2 id="Reflections"><a href="#Reflections" class="headerlink" title="Reflections"></a>Reflections</h2><p>This conversation gave me a clearer picture of AI-assisted development.</p><ul><li><strong>AI’s capability boundary is determined by the determinism of the problem domain.</strong> The more closed the problem, the clearer the boundaries, the easier the verification, the better AI performs. Conversely, if the problem is open-ended and requires simulating the behavior of an unknown system, AI will struggle.</li><li><strong>The key to compensating for AI’s limitations is not making it remember more, but making it able to look up more.</strong> Externalize context, inject it on demand, and make AI part of the toolchain rather than a standalone oracle.</li><li><strong>The most efficient human-AI collaboration model is complementary, not substitutional.</strong> AI excels at rapid prototyping, code review, explaining complex concepts, and generating boilerplate; humans excel at judging ambiguous requirements, understanding organizational politics, and maintaining long-term mental models of projects.</li></ul><p>Steve Jobs said:</p><blockquote><p>The computer is a bicycle for the mind.</p></blockquote><p>AI is an upgraded version of that bicycle. But the one riding it is still us.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Ever since I used Claude to build &lt;a href=&quot;https://github.com/johnsonlee/graphite&quot;&gt;Graphite&lt;/a&gt; – a static analysis framework based on</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
  </entry>
  
  <entry>
    <title>亲眼见证程序员职业的终结</title>
    <link href="https://johnsonlee.io/2026/01/27/the-compounding-ai-thesis/"/>
    <id>https://johnsonlee.io/2026/01/27/the-compounding-ai-thesis/</id>
    <published>2026-01-27T09:00:00.000Z</published>
    <updated>2026-01-27T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>之前在做 <a href="https://github.com/johnsonlee/booster">Booster</a> 的时候，就想实现一个能做数据流分析的框架，但个人精力有限，只能束之高阁。自从 Claude Opus 4.5 发布后，业界一度为之轰动，我抱着试一试的心态，趁着周末在家休息，于是订阅了 Claude Pro，创建了 <a href="https://github.com/johnsonlee/graphite">Graphite</a> 这个项目，应用场景主要是基于 JVM 字节码做静态分析。这类工具之前也做过，技术复杂度心里大概是有数的：设计数据结构、实现 dataflow analysis、处理各种 edge case、写 CLI、写测试……保守估计，之前纯手写一个能用的版本大概花了2天，1天开发，1天调试和处理 edge case。结果，Claude Code 用了 <strong>1 小时</strong> 就完成了一个可运行的版本。</p><p>不是辅助我写，是它自己写完的。从项目骨架到核心算法，从单元测试到命令行工具，全程我只需要描述需求、review 代码、偶尔纠正方向。最后跑起来的东西，质量不输我自己花两天写出来的版本。</p><p>那一刻，我突然意识到一件事：<strong>AI 的工程能力，已经达到了 Staff Engineer 的水平。</strong></p><h2 id="震撼的初体验"><a href="#震撼的初体验" class="headerlink" title="震撼的初体验"></a>震撼的初体验</h2><h3 id="Graphite：两天-vs-一小时"><a href="#Graphite：两天-vs-一小时" class="headerlink" title="Graphite：两天 vs 一小时"></a>Graphite：两天 vs 一小时</h3><p>先说说 <a href="https://github.com/johnsonlee/graphite">Graphite</a> 是个什么东西。</p><p>在大型代码库里，AB 实验的清理是个老大难问题。实验做完了，代码还留着；Flag 开关了，逻辑还在。时间一长，代码库里堆满了死掉的实验分支。传统的做法是 grep + 人工审查，效率低、容易漏。</p><p>我想做的是一个 graph-based 的静态分析框架：把字节码加载成 call graph，然后用 dataflow analysis 追踪常量是怎么流到特定 API 调用的。比如 <code>AbClient.getOption(1001)</code>，我想知道代码库里所有传给 <code>getOption</code> 的那个 <code>1001</code> 都在哪。</p><p>这类工具涉及的技术点不少：</p><ul><li>字节码解析（SootUp）</li><li>Control Flow Graph 和 Call Graph 的构建</li><li>后向切片（backward slicing）分析</li><li>常量传播和 enum 值解析</li><li>Query DSL 设计</li><li>CLI 工具链</li></ul><p>如果是我自己写，流程大概是这样的：</p><ol><li>先花半天研究 SootUp 的 API，踩一堆坑</li><li>再花半天设计核心数据结构</li><li>然后花一天实现 dataflow analysis 和各种 edge case</li><li>最后花半天写 CLI 和测试</li></ol><p>保守估计，两天。</p><p>而 Claude Code 的做法是这样的：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt; 创建一个静态分析框架，能从 JVM 字节码中找到传给特定方法的所有常量参数</span><br></pre></td></tr></table></figure><p>然后它就开始干活了。</p><p>它先问了几个澄清问题：目标 JVM 版本？支持哪些输入格式？需要处理哪些特殊情况？然后给出了一个整体架构设计，等我确认后，就开始一个模块一个模块地实现。</p><p>让我印象最深的是它处理 edge case 的能力。比如 Java 的 auto-boxing：</p><figure class="highlight kotlin"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">val</span> id: <span class="built_in">Int</span> = <span class="number">1001</span></span><br><span class="line">abClient.getOption(id)  <span class="comment">// 实际上会调用 Integer.valueOf(1001)</span></span><br></pre></td></tr></table></figure><p>我原本以为这种情况需要我提醒，结果它自己就考虑到了，并且在代码里加了透明处理。</p><p>再比如 enum 常量的追踪：</p><figure class="highlight kotlin"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">abClient.getOption(ExperimentId.CHECKOUT)  <span class="comment">// 需要解析 enum 的实际值</span></span><br></pre></td></tr></table></figure><p>它不仅实现了，还写了完善的测试用例。</p><p>最后的产出是一个完整的 multi-module Gradle 项目，包含核心库、SootUp 后端、CLI 工具，代码结构清晰，文档齐全，甚至还有一个漂亮的 Query DSL：</p><figure class="highlight kotlin"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">val</span> results = Graphite.from(graph).query &#123;</span><br><span class="line">    findArgumentConstants &#123;</span><br><span class="line">        method &#123;</span><br><span class="line">            declaringClass = <span class="string">&quot;com.example.AbClient&quot;</span></span><br><span class="line">            name = <span class="string">&quot;getOption&quot;</span></span><br><span class="line">        &#125;</span><br><span class="line">        argumentIndex = <span class="number">0</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>一小时。</p><h3 id="十岁孩子的游戏"><a href="#十岁孩子的游戏" class="headerlink" title="十岁孩子的游戏"></a>十岁孩子的游戏</h3><p>如果说 Graphite 还是专业领域的工程项目，那我儿子用 Claude Code 做的事情，更让我感到不可思议。</p><p>之前我教他学了一些编程基础。寒假的时候，他突发奇想要做一个游戏。我问他想做什么，他说想做一个弓箭射击的多人对战游戏。</p><p>我心想，这个需求有点复杂：2D 物理引擎、角色系统、网络同步……就算是我自己做，也得花不少时间。</p><p>结果他自己用 Claude Code 捣鼓了 1 个小时，做出来一个叫 <a href="https://fanyuli729.github.io/">Bow &amp; Arrow</a> 的游戏：</p><ul><li>三种角色：弩兵、炮手、毒箭手</li><li>单人模式和 P2P 多人模式</li><li>基于物理的弹道系统</li><li>金币计分机制</li></ul><p>代码用的是纯 HTML5 Canvas + ES6 modules，多人联机用的是 PeerJS，不需要服务器。整个项目结构清晰，模块划分合理。</p><p>一个10岁的孩子，在 AI 的帮助下，用 1 小时做出了一个完整的网页游戏。</p><p>这让我想起了之前写过的 <a href="/2025/12/06/education-in-the-age-of-ai/">AI 时代的教育</a>。当时我还在思考 AI 会如何改变学习方式，没想到变化来得这么快。</p><h2 id="Claude-Code-和-Cursor、Windsurf-有什么不一样？"><a href="#Claude-Code-和-Cursor、Windsurf-有什么不一样？" class="headerlink" title="Claude Code 和 Cursor、Windsurf 有什么不一样？"></a>Claude Code 和 Cursor、Windsurf 有什么不一样？</h2><p>用过这么多 AI 编程工具，我想说说 Claude Code 的不同之处。</p><p><strong>Cursor 和 Windsurf</strong> 本质上还是 <strong>Editor + AI</strong>。它们把 AI 集成到 IDE 里，你在编辑器里写代码，AI 帮你补全、帮你改。工作流程还是以人为主，AI 是副驾驶。</p><p><strong>ChatGPT</strong> 和其他 chat-based 的工具，是 <strong>Chat + Code</strong>。你跟它聊需求，它给你生成代码片段，然后你复制粘贴到项目里。效率有提升，但中间有断层。</p><p><strong>Claude Code</strong> 不一样。它是 <strong>AI 直接操作项目</strong>。</p><p>Claude Code 可以直接 <code>cd</code> 到你的项目目录，读文件、改文件、运行测试、执行命令。它不是给你看代码让你复制，而是直接帮你写进去。遇到问题，它会自己看报错、自己修。</p><p>这个区别看起来很小，实际上是质变。</p><p>当 AI 能直接操作项目时，它就可以形成 <strong>完整的 feedback loop</strong>：</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjYxNXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MjIzcHg7aGVpZ2h0OjYxNXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDIyMyA2MTUiIHdpZHRoPSIyMjNweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI0Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxODEuMDcwMyIgeD0iMjAiIHk9IjMyLjk5NTEiPkNvZGUtQ29tcGlsZS1GaXggTG9vcDwvdGV4dD48L2c+PGVsbGlwc2UgY3g9Ijg4LjYxMzkiIGN5PSI2Mi4yOTY5IiBmaWxsPSIjMjIyMjIyIiByeD0iMTAiIHJ5PSIxMCIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI4MS4xOTI5IiB4PSI0OC4wMTc1IiB5PSI5Mi4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjEuMTkyOSIgeD0iNTguMDE3NSIgeT0iMTEyLjUwNzMiPldyaXRlIENvZGU8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMi44MDQ3IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjY0Ljk4ODMiIHg9IjU2LjExOTgiIHk9IjE4OS4xMDE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDQuOTg4MyIgeD0iNjYuMTE5OCIgeT0iMjA5LjMxMiI+Q29tcGlsZTwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMyLjgwNDciIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNzguODc3OSIgeD0iNDkuMTc0OSIgeT0iMjkwLjMwODYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1OC44Nzc5IiB4PSI1OS4xNzQ5IiB5PSIzMTAuNTE5Ij5SZWFkIEVycm9yPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI2Ny41NTAzIiB4PSI1NC44Mzg3IiB5PSIzNTguMTEzMyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ3LjU1MDMiIHg9IjY0LjgzODciIHk9IjM3OC4zMjM3Ij5GaXggQ29kZTwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjcyLjA3MDksMjQxLjkwNjMsMTA1LjE1NjksMjQxLjkwNjMsMTE3LjE1NjksMjUzLjkwNjMsMTA1LjE1NjksMjY1LjkwNjMsNzIuMDcwOSwyNjUuOTA2Myw2MC4wNzA5LDI1My45MDYzLDcyLjA3MDksMjQxLjkwNjMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5LjAwODMiIHg9IjkyLjYxMzkiIHk9IjI3Ni4xMTY3Ij55ZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzMuMDg1OSIgeD0iNzIuMDcwOSIgeT0iMjU3LjcxNDQiPkVycm9yPzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMy43MDE3IiB4PSIxMTcuMTU2OSIgeT0iMjUxLjMxMiI+bm88L3RleHQ+PHBvbHlnb24gZmlsbD0iI0YxRjFGMSIgcG9pbnRzPSI4OC42MTM5LDQxMC45MTgsMTAwLjYxMzksNDIyLjkxOCw4OC42MTM5LDQzNC45MTgsNzYuNjEzOSw0MjIuOTE4LDg4LjYxMzksNDEwLjkxOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBvbHlnb24gZmlsbD0iI0YxRjFGMSIgcG9pbnRzPSI4OC42MTM5LDE0NS4xMDE2LDEwMC42MTM5LDE1Ny4xMDE2LDg4LjYxMzksMTY5LjEwMTYsNzYuNjEzOSwxNTcuMTAxNiw4OC42MTM5LDE0NS4xMDE2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjczLjI3NjcsNDU0LjkxOCwxMDMuOTUxLDQ1NC45MTgsMTE1Ljk1MSw0NjYuOTE4LDEwMy45NTEsNDc4LjkxOCw3My4yNzY3LDQ3OC45MTgsNjEuMjc2Nyw0NjYuOTE4LDczLjI3NjcsNDU0LjkxOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzAuNjc0MyIgeD0iNzMuMjc2NyIgeT0iNDcwLjcyNjEiPlBhc3M/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzLjcwMTciIHg9IjExNS45NTEiIHk9IjQ2NC4zMjM3Ij5ubzwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMyLjgwNDciIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNDguOTM5NSIgeD0iNjQuMTQ0MiIgeT0iNTIwLjMxNjkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyOC45Mzk1IiB4PSI3NC4xNDQyIiB5PSI1NDAuNTI3MyI+RG9uZTwvdGV4dD48ZWxsaXBzZSBjeD0iODguNjEzOSIgY3k9IjU4NC4xMjE2IiBmaWxsPSJub25lIiByeD0iMTEiIHJ5PSIxMSIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxlbGxpcHNlIGN4PSI4OC42MTM5IiBjeT0iNTg0LjEyMTYiIGZpbGw9IiMyMjIyMjIiIHJ4PSI2IiByeT0iNiIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjcyLjI5NjkiIHkyPSI5Mi4yOTY5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI4NC42MTM5LDgyLjI5NjksODguNjEzOSw5Mi4yOTY5LDkyLjYxMzksODIuMjk2OSw4OC42MTM5LDg2LjI5NjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguNjEzOSIgeDI9Ijg4LjYxMzkiIHkxPSIzMjMuMTEzMyIgeTI9IjM1OC4xMTMzIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI4NC42MTM5LDM0OC4xMTMzLDg4LjYxMzksMzU4LjExMzMsOTIuNjEzOSwzNDguMTEzMyw4OC42MTM5LDM1Mi4xMTMzIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4LjYxMzkiIHgyPSI4OC42MTM5IiB5MT0iMjY1LjkwNjMiIHkyPSIyOTAuMzA4NiIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuNjEzOSwyODAuMzA4Niw4OC42MTM5LDI5MC4zMDg2LDkyLjYxMzksMjgwLjMwODYsODguNjEzOSwyODQuMzA4NiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMTcuMTU2OSIgeDI9IjEzOC4wNTI5IiB5MT0iMjUzLjkwNjMiIHkyPSIyNTMuOTA2MyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTM0LjA1MjksMzMwLjYxMzMsMTM4LjA1MjksMzQwLjYxMzMsMTQyLjA1MjksMzMwLjYxMzMsMTM4LjA1MjksMzM0LjYxMzMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTM4LjA1MjkiIHgyPSIxMzguMDUyOSIgeTE9IjI1My45MDYzIiB5Mj0iNDIyLjkxOCIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMzguMDUyOSIgeDI9IjEwMC42MTM5IiB5MT0iNDIyLjkxOCIgeTI9IjQyMi45MTgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjExMC42MTM5LDQxOC45MTgsMTAwLjYxMzksNDIyLjkxOCwxMTAuNjEzOSw0MjYuOTE4LDEwNi42MTM5LDQyMi45MTgiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguNjEzOSIgeDI9Ijg4LjYxMzkiIHkxPSIzOTAuOTE4IiB5Mj0iNDEwLjkxOCIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuNjEzOSw0MDAuOTE4LDg4LjYxMzksNDEwLjkxOCw5Mi42MTM5LDQwMC45MTgsODguNjEzOSw0MDQuOTE4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4LjYxMzkiIHgyPSI4OC42MTM5IiB5MT0iMjIxLjkwNjMiIHkyPSIyNDEuOTA2MyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuNjEzOSwyMzEuOTA2Myw4OC42MTM5LDI0MS45MDYzLDkyLjYxMzksMjMxLjkwNjMsODguNjEzOSwyMzUuOTA2MyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjE2OS4xMDE2IiB5Mj0iMTg5LjEwMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksMTc5LjEwMTYsODguNjEzOSwxODkuMTAxNiw5Mi42MTM5LDE3OS4xMDE2LDg4LjYxMzksMTgzLjEwMTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTE1Ljk1MSIgeDI9IjE1Ni4wNTI5IiB5MT0iNDY2LjkxOCIgeTI9IjQ2Ni45MTgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE1Mi4wNTI5LDMxNi43MTA5LDE1Ni4wNTI5LDMwNi43MTA5LDE2MC4wNTI5LDMxNi43MTA5LDE1Ni4wNTI5LDMxMi43MTA5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ni4wNTI5IiB4Mj0iMTU2LjA1MjkiIHkxPSIxNTcuMTAxNiIgeTI9IjQ2Ni45MTgiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU2LjA1MjkiIHgyPSIxMDAuNjEzOSIgeTE9IjE1Ny4xMDE2IiB5Mj0iMTU3LjEwMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjExMC42MTM5LDE1My4xMDE2LDEwMC42MTM5LDE1Ny4xMDE2LDExMC42MTM5LDE2MS4xMDE2LDEwNi42MTM5LDE1Ny4xMDE2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4LjYxMzkiIHgyPSI4OC42MTM5IiB5MT0iNDM0LjkxOCIgeTI9IjQ1NC45MTgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksNDQ0LjkxOCw4OC42MTM5LDQ1NC45MTgsOTIuNjEzOSw0NDQuOTE4LDg4LjYxMzksNDQ4LjkxOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjEyNS4xMDE2IiB5Mj0iMTQ1LjEwMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksMTM1LjEwMTYsODguNjEzOSwxNDUuMTAxNiw5Mi42MTM5LDEzNS4xMDE2LDg4LjYxMzksMTM5LjEwMTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguNjEzOSIgeDI9Ijg4LjYxMzkiIHkxPSI0NzguOTE4IiB5Mj0iNTIwLjMxNjkiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksNTEwLjMxNjksODguNjEzOSw1MjAuMzE2OSw5Mi42MTM5LDUxMC4zMTY5LDg4LjYxMzksNTE0LjMxNjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOS4wMDgzIiB4PSI5Mi42MTM5IiB5PSI1MDAuMjIyNyI+eWVzPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjU1My4xMjE2IiB5Mj0iNTczLjEyMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksNTYzLjEyMTYsODguNjEzOSw1NzMuMTIxNiw5Mi42MTM5LDU2My4xMjE2LDg4LjYxMzksNTY3LjEyMTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48P3BsYW50dW1sLXNyYyBGT3duUmk5MDM4UHRGdU43QzZIV0pJR09xWjlyRzMwbTdwc2RNMXBkYS1xOHdERnRHYjB0b19fZHB4elRFUFVXdU9SZHk3dHpLUGJvNzJJOXVsdDJKYzNfVVFHbkpDYnRhbHQ4bHVKaERPMnA5eTkxOGhNM3QwZWRRZFZ5bTItSDBjMFVyMDZ3YXJSSDItZTFiMGU1MXlKa1ZUM05jS1RpRmJMNWpvbHEyc0xpZGNJaDZiSmlHMjdZQS1vTm5WbldhSTVJQ2k4Y295bklaWm8tX05Gdk1ncFAxeEZnUDVrV1RiRXpqS0p0OE5ha09veGIzbTAwPz48L2c+PC9zdmc+'><p>这个循环它自己就能跑完，不需要人在中间传话。</p><p>而且 Claude Code 有一个关键设计：<strong>CLAUDE.md</strong>。</p><p>你可以在项目根目录放一个 <code>CLAUDE.md</code> 文件，写清楚项目的背景、架构、约定、注意事项。Claude Code 每次启动都会读这个文件，把它当成项目的「记忆」。</p><p>这意味着什么？</p><p>意味着它不是每次都从零开始。它知道你的代码风格，知道你的 module 结构，知道哪些坑不要踩。时间越长，这份「记忆」越完善，它的工作质量就越高。</p><p>这就引出了一个更深层的话题。</p><h2 id="The-Compounding-AI-Thesis"><a href="#The-Compounding-AI-Thesis" class="headerlink" title="The Compounding AI Thesis"></a>The Compounding AI Thesis</h2><h3 id="为什么大多数-AI-使用在原地踏步？"><a href="#为什么大多数-AI-使用在原地踏步？" class="headerlink" title="为什么大多数 AI 使用在原地踏步？"></a>为什么大多数 AI 使用在原地踏步？</h3><p>我们团队用 Windsurf 将近一年了。说实话，第一个月的生产力提升大概有 20%，代码写得更快了，boilerplate 不用自己写了。</p><p>但一年后呢？还是那 20%。</p><p>不是工具不好用，而是 <strong>这种工具没有成长轨迹</strong>。每次打开它，它都不记得上次发生了什么。你上周纠正过的错误，这周它还会犯。你告诉过它的项目约定，下次又要重新说一遍。</p><p>大多数团队对 AI 的认知模型是这样的：</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQ3OHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MjY1cHg7aGVpZ2h0OjQ3OHB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDI2NSA0NzgiIHdpZHRoPSIyNjVweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI0Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMzguMzY5MSIgeD0iMTAiIHk9IjIyLjk5NTEiPkFJIGFzIFRvb2wgKExpbmVhciwgTm8gR3Jvd3RoKTwvdGV4dD48L2c+PCEtLWVudGl0eSBBLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQSIgZGF0YS1zb3VyY2UtbGluZT0iNiIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNTcuNTAxIiB4PSI5OS40MzQyIiB5PSI0NC4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzcuNTAxIiB4PSIxMDkuNDM0MiIgeT0iNjQuNTA3MyI+QUkgVG9vbDwvdGV4dD48L2c+PCEtLWVudGl0eSBCLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQiIgZGF0YS1zb3VyY2UtbGluZT0iNyIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA5LjgyMDgiIHg9IjczLjI3NDIiIHk9IjEzNy4wOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODkuODIwOCIgeD0iODMuMjc0MiIgeT0iMTU3LjMwNzMiPkVuZ2luZWVycyBVc2UgSXQ8L3RleHQ+PC9nPjwhLS1lbnRpdHkgQy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkMiIGRhdGEtc291cmNlLWxpbmU9IjgiIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMyLjgwNDciIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjgyLjM0NzciIHg9Ijg3LjAxNDIiIHk9IjIyOS45MDY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjIuMzQ3NyIgeD0iOTcuMDE0MiIgeT0iMjUwLjExNzMiPjIwJSBGYXN0ZXI8L3RleHQ+PC9nPjwhLS1lbnRpdHkgRC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkQiIGRhdGEtc291cmNlLWxpbmU9IjkiIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRDNEM0QzIiBoZWlnaHQ9IjQ1LjYwOTQiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwLjE1NTMiIHg9IjkzLjEwNDIiIHk9IjMyMi43MDY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjguOTM5NSIgeD0iMTAzLjEwNDIiIHk9IjM0Mi45MTczIj5Eb25lPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUwLjE1NTMiIHg9IjEwMy4xMDQyIiB5PSIzNTUuNzIyIj4ocGxhdGVhdSk8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjkiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAxMCI+PHBhdGggZD0iTTY2LjUxNDIsNDI4LjMxNjkgTDY2LjUxNDIsNDYzLjkyNjMgQTAsMCAwIDAgMCA2Ni41MTQyLDQ2My45MjYzIEwxODkuODU1LDQ2My45MjYzIEEwLDAgMCAwIDAgMTg5Ljg1NSw0NjMuOTI2MyBMMTg5Ljg1NSw0MzguMzE2OSBMMTc5Ljg1NSw0MjguMzE2OSBMMTMyLjE4NDIsNDI4LjMxNjkgTDEyOC4xODQyLDM2OC4zOTY5IEwxMjQuMTg0Miw0MjguMzE2OSBMNjYuNTE0Miw0MjguMzE2OSBBMCwwIDAgMCAwIDY2LjUxNDIsNDI4LjMxNjkiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjxwYXRoIGQ9Ik0xNzkuODU1LDQyOC4zMTY5IEwxNzkuODU1LDQzOC4zMTY5IEwxODkuODU1LDQzOC4zMTY5IEwxNzkuODU1LDQyOC4zMTY5IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDIuMzQwOCIgeD0iNzIuNTE0MiIgeT0iNDQzLjUyNzMiPlNhbWUgMjAlIGZvcmV2ZXI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iOTIuNTA2MyIgeD0iNzIuNTE0MiIgeT0iNDU2LjMzMiI+Tm8gaW1wcm92ZW1lbnQ8L3RleHQ+PC9nPjwhLS1saW5rIEEgdG8gQi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDAzIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTEiIGlkPSJsbms2Ij48cGF0aCBkPSJNMTI4LjE4NDIsNzcuNTE2OSBDMTI4LjE4NDIsOTQuMTc2OSAxMjguMTg0MiwxMTQuMjY2OSAxMjguMTg0MiwxMzAuODY2OSIgZmlsbD0ibm9uZSIgaWQ9IkEtdG8tQiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTI4LjE4NDIsMTM2Ljg2NjksMTMyLjE4NDIsMTI3Ljg2NjksMTI4LjE4NDIsMTMxLjg2NjksMTI0LjE4NDIsMTI3Ljg2NjksMTI4LjE4NDIsMTM2Ljg2NjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgQiB0byBDLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDQiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxMiIgaWQ9ImxuazciPjxwYXRoIGQ9Ik0xMjguMTg0MiwxNzAuMzE2OSBDMTI4LjE4NDIsMTg2Ljk4NjkgMTI4LjE4NDIsMjA3LjA3NjkgMTI4LjE4NDIsMjIzLjY2NjkiIGZpbGw9Im5vbmUiIGlkPSJCLXRvLUMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjEyOC4xODQyLDIyOS42NjY5LDEzMi4xODQyLDIyMC42NjY5LDEyOC4xODQyLDIyNC42NjY5LDEyNC4xODQyLDIyMC42NjY5LDEyOC4xODQyLDIyOS42NjY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIEMgdG8gRC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTMiIGlkPSJsbms4Ij48cGF0aCBkPSJNMTI4LjE4NDIsMjYyLjkyNjkgQzEyOC4xODQyLDI3OS4wMjY5IDEyOC4xODQyLDI5OC4yNjY5IDEyOC4xODQyLDMxNi40MTY5IiBmaWxsPSJub25lIiBpZD0iQy10by1EIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxMjguMTg0MiwzMjIuNDE2OSwxMzIuMTg0MiwzMTMuNDE2OSwxMjguMTg0MiwzMTcuNDE2OSwxMjQuMTg0MiwzMTMuNDE2OSwxMjguMTg0MiwzMjIuNDE2OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjwvZz48P3BsYW50dW1sLXNyYyBKT19IUWk5RzM4Umx5bkoxQ0wxR2M3azBHTXNkMkI4Ump4bFRIOWtzMXprYXZBSkF6bEd4eFNOZUxVM19sWnlYeUhRYTl3Q0VCdEl6clFRM2JCY3NRbFhlV1pGNFZydm9IS0ZoVW5LX1hyXzZ4SFIwV3hVQ3NINGZ1Z1RnWXlqSjQyUFJ1dVZZbVZKWHBHaDAtRWVhVEo4TklIc3puTFo4dmsxVHdqSGFZX1dMNk95LTZSa3Z5VmhvWjdrQXBaUW5WQ3VBNVZ3TVBULUlDbXNoSUlabXdISmduV3o2Rm0wUFJaUGxRVTVrY1pkYXFvbTBIOXRuZWt4UWVMT2ZHSm5KbnBZVWd6SnVwZlFZejR4ZVVqQ3hUb21FQjJNRW5KeTA/PjwvZz48L3N2Zz4='><p>这个模型的问题是：<strong>没有增长曲线</strong>。</p><p>你第一天得到 20% 的提升，一年后还是 20%。工具在那里，但它不进步。</p><p><strong>这是 AI-as-tool 的根本局限：没有记忆，就无法复利。</strong></p><h3 id="复利增长的-AI-模型"><a href="#复利增长的-AI-模型" class="headerlink" title="复利增长的 AI 模型"></a>复利增长的 AI 模型</h3><p>有另一种思考方式：</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjM0M3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MjY4cHg7aGVpZ2h0OjM0M3B4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDI2OCAzNDMiIHdpZHRoPSIyNjhweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI1Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMjYuODU3NCIgeD0iMjAiIHk9IjMyLjk5NTEiPlRoZSBDb21wb3VuZGluZyBBSSBTeXN0ZW08L3RleHQ+PC9nPjxlbGxpcHNlIGN4PSIxMTguOTI4NyIgY3k9IjYyLjI5NjkiIGZpbGw9IiMyMjIyMjIiIHJ4PSIxMCIgcnk9IjEwIiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjE7Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcxLjQ4NjMiIHg9IjgzLjE4NTUiIHk9IjEzNi4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTEuNDg2MyIgeD0iOTMuMTg1NSIgeT0iMTU3LjQzNTUiPkRvIFdvcms8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEwMy4wMDM5IiB4PSI2Ny40MjY4IiB5PSIxOTAuMjY1NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjgzLjAwMzkiIHg9Ijc3LjQyNjgiIHk9IjIxMS40MDQzIj5HZXQgRmVlZGJhY2s8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEyMC41NTI3IiB4PSI1OC42NTIzIiB5PSIyNDQuMjM0NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMC41NTI3IiB4PSI2OC42NTIzIiB5PSIyNjUuMzczIj5MZWFybiAmYW1wOyBJbXByb3ZlPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNGMUYxRjEiIHBvaW50cz0iMTE4LjkyODcsOTIuMjk2OSwxMzAuOTI4NywxMDQuMjk2OSwxMTguOTI4NywxMTYuMjk2OSwxMDYuOTI4NywxMDQuMjk2OSwxMTguOTI4Nyw5Mi4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjkxLjk0OTIsMjk4LjIwMzEsMTQ1LjkwODIsMjk4LjIwMzEsMTU3LjkwODIsMzEwLjIwMzEsMTQ1LjkwODIsMzIyLjIwMzEsOTEuOTQ5MiwzMjIuMjAzMSw3OS45NDkyLDMxMC4yMDMxLDkxLjk0OTIsMjk4LjIwMzEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUzLjk1OSIgeD0iOTEuOTQ5MiIgeT0iMzE0LjM1NzQiPkNvbnRpbnVlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwLjczNjMiIHg9IjE1Ny45MDgyIiB5PSIzMDcuMzczIj55ZXM8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgeDE9IjExOC45Mjg3IiB4Mj0iMTE4LjkyODciIHkxPSIxNzAuMjY1NiIgeTI9IjE5MC4yNjU2Ii8+PHBvbHlnb24gZmlsbD0iIzMzMzMzMyIgcG9pbnRzPSIxMTQuOTI4NywxODAuMjY1NiwxMTguOTI4NywxOTAuMjY1NiwxMjIuOTI4NywxODAuMjY1NiwxMTguOTI4NywxODQuMjY1NiIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHgxPSIxMTguOTI4NyIgeDI9IjExOC45Mjg3IiB5MT0iMjI0LjIzNDQiIHkyPSIyNDQuMjM0NCIvPjxwb2x5Z29uIGZpbGw9IiMzMzMzMzMiIHBvaW50cz0iMTE0LjkyODcsMjM0LjIzNDQsMTE4LjkyODcsMjQ0LjIzNDQsMTIyLjkyODcsMjM0LjIzNDQsMTE4LjkyODcsMjM4LjIzNDQiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTE4LjkyODciIHgyPSIxMTguOTI4NyIgeTE9IjExNi4yOTY5IiB5Mj0iMTM2LjI5NjkiLz48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjExNC45Mjg3LDEyNi4yOTY5LDExOC45Mjg3LDEzNi4yOTY5LDEyMi45Mjg3LDEyNi4yOTY5LDExOC45Mjg3LDEzMC4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ny45MDgyIiB4Mj0iMTkxLjIwNTEiIHkxPSIzMTAuMjAzMSIgeTI9IjMxMC4yMDMxIi8+PHBvbHlnb24gZmlsbD0iIzMzMzMzMyIgcG9pbnRzPSIxODcuMjA1MSwyMTcuMjUsMTkxLjIwNTEsMjA3LjI1LDE5NS4yMDUxLDIxNy4yNSwxOTEuMjA1MSwyMTMuMjUiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTkxLjIwNTEiIHgyPSIxOTEuMjA1MSIgeTE9IjEwNC4yOTY5IiB5Mj0iMzEwLjIwMzEiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTkxLjIwNTEiIHgyPSIxMzAuOTI4NyIgeTE9IjEwNC4yOTY5IiB5Mj0iMTA0LjI5NjkiLz48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjE0MC45Mjg3LDEwMC4yOTY5LDEzMC45Mjg3LDEwNC4yOTY5LDE0MC45Mjg3LDEwOC4yOTY5LDEzNi45Mjg3LDEwNC4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgeDE9IjExOC45Mjg3IiB4Mj0iMTE4LjkyODciIHkxPSIyNzguMjAzMSIgeTI9IjI5OC4yMDMxIi8+PHBvbHlnb24gZmlsbD0iIzMzMzMzMyIgcG9pbnRzPSIxMTQuOTI4NywyODguMjAzMSwxMTguOTI4NywyOTguMjAzMSwxMjIuOTI4NywyODguMjAzMSwxMTguOTI4NywyOTIuMjAzMSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHgxPSIxMTguOTI4NyIgeDI9IjExOC45Mjg3IiB5MT0iNzIuMjk2OSIgeTI9IjkyLjI5NjkiLz48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjExNC45Mjg3LDgyLjI5NjksMTE4LjkyODcsOTIuMjk2OSwxMjIuOTI4Nyw4Mi4yOTY5LDExOC45Mjg3LDg2LjI5NjkiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiLz48P3BsYW50dW1sLXNyYyBKT3gxMmk5MDM0SmwtT2cwOEZRZXRrbjlBZk0yRG1ORmd1dGpxZFFwUDVFYnFlLXRnb0JjRDZJT2NIU1F3eG1IcS03NU45akFrN1RibllxQkZjZ2gxRTdkYnRHcFZRaXZFcHRROS01b3pNVGtIVlpub1N0TXhtREdnb3RYZ0lSQ2tGRW5zQmVBam1LVVh3M0swT21fRkc4NERRODBHZndDMGs5Y250WGNRVEFlendJTzR2TUh5VnF1YTE2N1NvbXdCdG9kejlrQnFERmM4ZmlXaFVpZkdIam1DTDE4TlcwMD8+PC9nPjwvc3ZnPg=='><p>在这个模型里，AI 不是你使用的工具，而是你 <strong>训练的系统</strong>。就像任何学习系统一样，它的价值随时间复利增长。</p><p>做个简单的数学：</p><ul><li>工具：永远 20% 的提升</li><li>复利系统，每周 5% 的改进：一年后是 <strong>12 倍</strong></li></ul><p>问题不是「怎么用 AI 提升效率」，而是 <strong>「怎么构建一个每周都在变聪明的系统」</strong>。</p><h3 id="复利增长的三个条件"><a href="#复利增长的三个条件" class="headerlink" title="复利增长的三个条件"></a>复利增长的三个条件</h3><p>AI 要实现复利增长，需要三个条件：</p><p><strong>1. 可定义的任务边界</strong></p><p>AI 必须知道什么时候「完成」了。这需要：</p><ul><li>清晰的输入（不是模糊的请求）</li><li>清晰的成功标准（不是主观判断）</li><li>清晰的范围（不是开放式探索）</li></ul><p>❌ 「改进我们的代码库」<br>✅ 「清理 AB 实验 X，保留 winner 分支，确保测试通过」</p><p>没有边界，就没有完成。没有完成，就没有反馈。没有反馈，就没有学习。</p><p><strong>2. 可观测的结果</strong></p><p>每个 AI 动作都必须产生可测量的结果：</p><ul><li>测试通过还是失败？</li><li>PR 被批准还是拒绝？</li><li>变更是否导致了生产事故？</li></ul><p>结果必须是 <strong>无歧义的</strong>。「看起来不错」不可观测。「PR 合并，canary 24 小时零错误」才可观测。</p><p>可观测的结果创造 <strong>训练信号</strong>。信号越丰富，学习越快。</p><p><strong>3. 持久化的知识</strong></p><p>这是大多数团队忽视的部分：<strong>AI 没有记忆</strong>。</p><p>Claude、GPT、Windsurf ——它们每次会话都从零开始。昨天调试时发现的洞见？没了。你纠正过三次的模式？忘了。</p><p>要实现复利，知识必须 <strong>外化</strong>：</p><ul><li>代码库里有哪些模式？</li><li>我们之前犯过什么错？</li><li>Review 的时候通常会要求什么？</li><li>发现过哪些 edge case？</li></ul><p>这些外化的知识成为 AI 的「记忆」——每次会话开始时读取，结束时更新。</p><p><strong>没有持久化，每一天都是第一天。有了持久化，每一天都建立在之前所有天的基础上。</strong></p><h3 id="公式"><a href="#公式" class="headerlink" title="公式"></a>公式</h3><p>把它放在一起：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">复利 AI = 可定义的任务 + 可观测的结果 + 持久化的知识</span><br></pre></td></tr></table></figure><p>或者更简洁地说：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">结构化反馈 + 持久化 = 复利知识</span><br></pre></td></tr></table></figure><p>缺少任何一个元素，系统就会崩溃：</p><ul><li>没有任务边界 → 没有完成 → 没有反馈</li><li>没有可观测结果 → 反馈是噪音 → 无法学习</li><li>没有持久化 → 学习被丢失 → 无法复利</li></ul><h3 id="这在实践中是什么样的？"><a href="#这在实践中是什么样的？" class="headerlink" title="这在实践中是什么样的？"></a>这在实践中是什么样的？</h3><h4 id="学习循环"><a href="#学习循环" class="headerlink" title="学习循环"></a>学习循环</h4><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjUyMnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NDgxcHg7aGVpZ2h0OjUyMnB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ4MSA1MjIiIHdpZHRoPSI0ODFweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI0Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxODUuODAwOCIgeD0iMTQ2Ljc1NjYiIHk9IjMyLjk5NTEiPlRoZSBDb21wb3VuZGluZyBMb29wPC90ZXh0PjwvZz48ZWxsaXBzZSBjeD0iMTcwLjI1OTgiIGN5PSI2Mi4yOTY5IiBmaWxsPSIjMjIyMjIyIiByeD0iMTAiIHJ5PSIxMCIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0yNDQuODQwOCw5Ni43MTQ4IEwyNDQuODQwOCwxMDUuMjgxMyBMMjI0Ljg0MDgsMTA5LjI4MTMgTDI0NC44NDA4LDExMy4yODEzIEwyNDQuODQwOCwxMjEuODQ3NyBBMCwwIDAgMCAwIDI0NC44NDA4LDEyMS44NDc3IEw0NjAuMzE0LDEyMS44NDc3IEEwLDAgMCAwIDAgNDYwLjMxNCwxMjEuODQ3NyBMNDYwLjMxNCwxMDYuNzE0OCBMNDUwLjMxNCw5Ni43MTQ4IEwyNDQuODQwOCw5Ni43MTQ4IEEwLDAgMCAwIDAgMjQ0Ljg0MDgsOTYuNzE0OCIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTQ1MC4zMTQsOTYuNzE0OCBMNDUwLjMxNCwxMDYuNzE0OCBMNDYwLjMxNCwxMDYuNzE0OCBMNDUwLjMxNCw5Ni43MTQ4IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOTQuNDczMSIgeD0iMjUwLjg0MDgiIHk9IjExMy43ODE3Ij5Mb2FkIGFjY3VtdWxhdGVkIGtub3dsZWRnZTwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA5LjE2MjEiIHg9IjExNS42Nzg3IiB5PSI5Mi4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODkuMTYyMSIgeD0iMTI1LjY3ODciIHk9IjExMy40MzU1Ij5SZWFkIHBsYXlib29rPC90ZXh0PjxwYXRoIGQ9Ik0yMzguOTc1NiwxNTAuNjgzNiBMMjM4Ljk3NTYsMTU5LjI1IEwyMTguOTc1NiwxNjMuMjUgTDIzOC45NzU2LDE2Ny4yNSBMMjM4Ljk3NTYsMTc1LjgxNjQgQTAsMCAwIDAgMCAyMzguOTc1NiwxNzUuODE2NCBMNDQ2LjgzMTUsMTc1LjgxNjQgQTAsMCAwIDAgMCA0NDYuODMxNSwxNzUuODE2NCBMNDQ2LjgzMTUsMTYwLjY4MzYgTDQzNi44MzE1LDE1MC42ODM2IEwyMzguOTc1NiwxNTAuNjgzNiBBMCwwIDAgMCAwIDIzOC45NzU2LDE1MC42ODM2IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNNDM2LjgzMTUsMTUwLjY4MzYgTDQzNi44MzE1LDE2MC42ODM2IEw0NDYuODMxNSwxNjAuNjgzNiBMNDM2LjgzMTUsMTUwLjY4MzYiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE4Ni44NTYiIHg9IjI0NC45NzU2IiB5PSIxNjcuNzUwNSI+R2VuZXJhdGUgY29kZSBjaGFuZ2VzLCBQUnM8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9Ijk3LjQzMTYiIHg9IjEyMS41NDM5IiB5PSIxNDYuMjY1NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc3LjQzMTYiIHg9IjEzMS41NDM5IiB5PSIxNjcuNDA0MyI+RXhlY3V0ZSB0YXNrPC90ZXh0PjxwYXRoIGQ9Ik0yNDYuMDkxOCwyMDQuNjUyMyBMMjQ2LjA5MTgsMjEzLjIxODggTDIyNi4wOTE4LDIxNy4yMTg4IEwyNDYuMDkxOCwyMjEuMjE4OCBMMjQ2LjA5MTgsMjI5Ljc4NTIgQTAsMCAwIDAgMCAyNDYuMDkxOCwyMjkuNzg1MiBMNDQzLjM2NjIsMjI5Ljc4NTIgQTAsMCAwIDAgMCA0NDMuMzY2MiwyMjkuNzg1MiBMNDQzLjM2NjIsMjE0LjY1MjMgTDQzMy4zNjYyLDIwNC42NTIzIEwyNDYuMDkxOCwyMDQuNjUyMyBBMCwwIDAgMCAwIDI0Ni4wOTE4LDIwNC42NTIzIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNNDMzLjM2NjIsMjA0LjY1MjMgTDQzMy4zNjYyLDIxNC42NTIzIEw0NDMuMzY2MiwyMTQuNjUyMyBMNDMzLjM2NjIsMjA0LjY1MjMiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE3Ni4yNzQ0IiB4PSIyNTIuMDkxOCIgeT0iMjIxLjcxOTIiPkNJIHJlc3VsdHMsIHJldmlldyBmZWVkYmFjazwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTExLjY2NDEiIHg9IjExNC40Mjc3IiB5PSIyMDAuMjM0NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkxLjY2NDEiIHg9IjEyNC40Mjc3IiB5PSIyMjEuMzczIj5WZXJpZnkgb3V0Y29tZTwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjE0NS4yMDA5LDI1NC4yMDMxLDE5NS4zMTg2LDI1NC4yMDMxLDIwNy4zMTg2LDI2Ni4yMDMxLDE5NS4zMTg2LDI3OC4yMDMxLDE0NS4yMDA5LDI3OC4yMDMxLDEzMy4yMDA5LDI2Ni4yMDMxLDE0NS4yMDA5LDI1NC4yMDMxIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1MC4xMTc3IiB4PSIxNDUuMjAwOSIgeT0iMjcwLjAxMTIiPlN1Y2Nlc3M/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5LjAwODMiIHg9IjExNC4xOTI2IiB5PSIyNjMuNjA4OSI+eWVzPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzLjcwMTciIHg9IjIwNy4zMTg2IiB5PSIyNjMuNjA4OSI+bm88L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE0NS45NjQ4IiB4PSIxNiIgeT0iMjg4LjIwMzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjUuOTY0OCIgeD0iMjYiIHk9IjMwOS4zNDE4Ij5FeHRyYWN0IG5ldyBwYXR0ZXJuczwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA5LjI2NzYiIHg9IjE5Ni45MDMzIiB5PSIyODguMjAzMSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg5LjI2NzYiIHg9IjIwNi45MDMzIiB5PSIzMDkuMzQxOCI+QW5hbHl6ZSBmYWlsdXJlPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzMuOTY4OCIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxMzkuMTQ0NSIgeD0iMTgxLjk2NDgiIHk9IjM0Mi4xNzE5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTE5LjE0NDUiIHg9IjE5MS45NjQ4IiB5PSIzNjMuMzEwNSI+QWRkIHRvIG1pc3Rha2VzIGxvZzwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjE3MC4yNTk4LDM4Mi4xNDA2LDE4Mi4yNTk4LDM5NC4xNDA2LDE3MC4yNTk4LDQwNi4xNDA2LDE1OC4yNTk4LDM5NC4xNDA2LDE3MC4yNTk4LDM4Mi4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMjUxLjIyNDYsNDMwLjU1ODYgTDI1MS4yMjQ2LDQzOS4xMjUgTDIzMS4yMjQ2LDQ0My4xMjUgTDI1MS4yMjQ2LDQ0Ny4xMjUgTDI1MS4yMjQ2LDQ1NS42OTE0IEEwLDAgMCAwIDAgMjUxLjIyNDYsNDU1LjY5MTQgTDM3OS44MzAxLDQ1NS42OTE0IEEwLDAgMCAwIDAgMzc5LjgzMDEsNDU1LjY5MTQgTDM3OS44MzAxLDQ0MC41NTg2IEwzNjkuODMwMSw0MzAuNTU4NiBMMjUxLjIyNDYsNDMwLjU1ODYgQTAsMCAwIDAgMCAyNTEuMjI0Niw0MzAuNTU4NiIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTM2OS44MzAxLDQzMC41NTg2IEwzNjkuODMwMSw0NDAuNTU4NiBMMzc5LjgzMDEsNDQwLjU1ODYgTDM2OS44MzAxLDQzMC41NTg2IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDcuNjA1NSIgeD0iMjU3LjIyNDYiIHk9IjQ0Ny42MjU1Ij5QZXJzaXN0IGxlYXJuaW5nczwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTIxLjkyOTciIHg9IjEwOS4yOTQ5IiB5PSI0MjYuMTQwNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMS45Mjk3IiB4PSIxMTkuMjk0OSIgeT0iNDQ3LjI3OTMiPlVwZGF0ZSBwbGF5Ym9vazwvdGV4dD48ZWxsaXBzZSBjeD0iMTcwLjI1OTgiIGN5PSI0OTEuMTA5NCIgZmlsbD0ibm9uZSIgcng9IjExIiByeT0iMTEiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MTsiLz48ZWxsaXBzZSBjeD0iMTcwLjI1OTgiIGN5PSI0OTEuMTA5NCIgZmlsbD0iIzIyMjIyMiIgcng9IjYiIHJ5PSI2IiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE3MC4yNTk4IiB4Mj0iMTcwLjI1OTgiIHkxPSI3Mi4yOTY5IiB5Mj0iOTIuMjk2OSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY2LjI1OTgsODIuMjk2OSwxNzAuMjU5OCw5Mi4yOTY5LDE3NC4yNTk4LDgyLjI5NjksMTcwLjI1OTgsODYuMjk2OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNzAuMjU5OCIgeDI9IjE3MC4yNTk4IiB5MT0iMTI2LjI2NTYiIHkyPSIxNDYuMjY1NiIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY2LjI1OTgsMTM2LjI2NTYsMTcwLjI1OTgsMTQ2LjI2NTYsMTc0LjI1OTgsMTM2LjI2NTYsMTcwLjI1OTgsMTQwLjI2NTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTcwLjI1OTgiIHgyPSIxNzAuMjU5OCIgeTE9IjE4MC4yMzQ0IiB5Mj0iMjAwLjIzNDQiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE2Ni4yNTk4LDE5MC4yMzQ0LDE3MC4yNTk4LDIwMC4yMzQ0LDE3NC4yNTk4LDE5MC4yMzQ0LDE3MC4yNTk4LDE5NC4yMzQ0IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjI1MS41MzcxIiB4Mj0iMjUxLjUzNzEiIHkxPSIzMjIuMTcxOSIgeTI9IjM0Mi4xNzE5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyNDcuNTM3MSwzMzIuMTcxOSwyNTEuNTM3MSwzNDIuMTcxOSwyNTUuNTM3MSwzMzIuMTcxOSwyNTEuNTM3MSwzMzYuMTcxOSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMzMuMjAwOSIgeDI9Ijg4Ljk4MjQiIHkxPSIyNjYuMjAzMSIgeTI9IjI2Ni4yMDMxIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4Ljk4MjQiIHgyPSI4OC45ODI0IiB5MT0iMjY2LjIwMzEiIHkyPSIyODguMjAzMSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuOTgyNCwyNzguMjAzMSw4OC45ODI0LDI4OC4yMDMxLDkyLjk4MjQsMjc4LjIwMzEsODguOTgyNCwyODIuMjAzMSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMDcuMzE4NiIgeDI9IjI1MS41MzcxIiB5MT0iMjY2LjIwMzEiIHkyPSIyNjYuMjAzMSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyNTEuNTM3MSIgeDI9IjI1MS41MzcxIiB5MT0iMjY2LjIwMzEiIHkyPSIyODguMjAzMSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMjQ3LjUzNzEsMjc4LjIwMzEsMjUxLjUzNzEsMjg4LjIwMzEsMjU1LjUzNzEsMjc4LjIwMzEsMjUxLjUzNzEsMjgyLjIwMzEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguOTgyNCIgeDI9Ijg4Ljk4MjQiIHkxPSIzMjIuMTcxOSIgeTI9IjM5NC4xNDA2Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4Ljk4MjQiIHgyPSIxNTguMjU5OCIgeTE9IjM5NC4xNDA2IiB5Mj0iMzk0LjE0MDYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0OC4yNTk4LDM5MC4xNDA2LDE1OC4yNTk4LDM5NC4xNDA2LDE0OC4yNTk4LDM5OC4xNDA2LDE1Mi4yNTk4LDM5NC4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjI1MS41MzcxIiB4Mj0iMjUxLjUzNzEiIHkxPSIzNzYuMTQwNiIgeTI9IjM5NC4xNDA2Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjI1MS41MzcxIiB4Mj0iMTgyLjI1OTgiIHkxPSIzOTQuMTQwNiIgeTI9IjM5NC4xNDA2Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxOTIuMjU5OCwzOTAuMTQwNiwxODIuMjU5OCwzOTQuMTQwNiwxOTIuMjU5OCwzOTguMTQwNiwxODguMjU5OCwzOTQuMTQwNiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNzAuMjU5OCIgeDI9IjE3MC4yNTk4IiB5MT0iMjM0LjIwMzEiIHkyPSIyNTQuMjAzMSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY2LjI1OTgsMjQ0LjIwMzEsMTcwLjI1OTgsMjU0LjIwMzEsMTc0LjI1OTgsMjQ0LjIwMzEsMTcwLjI1OTgsMjQ4LjIwMzEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTcwLjI1OTgiIHgyPSIxNzAuMjU5OCIgeTE9IjQwNi4xNDA2IiB5Mj0iNDI2LjE0MDYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE2Ni4yNTk4LDQxNi4xNDA2LDE3MC4yNTk4LDQyNi4xNDA2LDE3NC4yNTk4LDQxNi4xNDA2LDE3MC4yNTk4LDQyMC4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE3MC4yNTk4IiB4Mj0iMTcwLjI1OTgiIHkxPSI0NjAuMTA5NCIgeTI9IjQ4MC4xMDk0Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNjYuMjU5OCw0NzAuMTA5NCwxNzAuMjU5OCw0ODAuMTA5NCwxNzQuMjU5OCw0NzAuMTA5NCwxNzAuMjU5OCw0NzQuMTA5NCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjw/cGxhbnR1bWwtc3JjIFJQMzFKV0NuMzRKbC1HZVZNdWFsUTB5TGdYMTJ1YjJybURyRGxCbEhQa3JMeDUyTWh5VkIwR2Q0OUdWeHBNR3lFY1FVaVU4NEx1blpOd0xuRWFnSDJoU1g2bU56c0tVUFBjNVlrelhJMjJmNUctdUJYTTNQVkYwbzQxbk5uWHFvel8waUNlVVdYakwyczlxOTR5bTVid2w4azB5aXZYUXY3c3BkZUF5bW5aUXJXYU85SGZQUmVUSXh6VXhYV3M5cHJiM19vMXc5Z0pobG1QOF9XdVNYbE9GSk1MdHNIWkx0MnFXcFpxc19YU1NkM3ctamNERUx0WkZUZTJEQXdfcVh2MHVzYm5PWmdId3NPMENuUjFSSVJHM21CNU9uNmgwaFBaSVpvaGVGTDlIV21fQUR0M0VNdlBFV21yblF6T19OTUtmVzBiRnNCYVBJQURBeG9hbGdGRVpoZERPUl9jX2NINUxUMU9NbWlkVWdRdnlvVm00MD8+PC9nPjwvc3ZnPg=='><p>每经过一个循环，下一个循环就会更好：</p><ul><li>模式被记录 → 更少的错误</li><li>Edge case 被记录 → 更快的处理</li><li>偏好被记录 → 更少的 review 摩擦</li></ul><p>这就是 <code>CLAUDE.md</code> 的价值。</p><h4 id="Playbook：AI-的外部记忆"><a href="#Playbook：AI-的外部记忆" class="headerlink" title="Playbook：AI 的外部记忆"></a>Playbook：AI 的外部记忆</h4><p>Playbook 就是 <strong>跨会话持久化的结构化知识</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># [领域] Playbook</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 模式</span></span><br><span class="line">关于这里如何运作的知识。</span><br><span class="line"></span><br><span class="line"><span class="section">## 规则</span></span><br><span class="line">必须做或绝对不能做的事情。</span><br><span class="line"></span><br><span class="line"><span class="section">## Edge Cases</span></span><br><span class="line">我们踩过坑发现的例外。</span><br><span class="line"></span><br><span class="line"><span class="section">## 错误日志</span></span><br><span class="line">出过什么错，以及现在如何预防。</span><br></pre></td></tr></table></figure><p>当 AI 在会话开始时读取这个文件，它就不是从零开始——它是从所有之前会话积累的智慧开始。</p><p>当 AI 在会话结束时写入这个文件，它就不只是完成了一个任务——它让下一个任务变得更容易。</p><p><strong>Playbook 就是复利机制。</strong></p><h2 id="展望"><a href="#展望" class="headerlink" title="展望"></a>展望</h2><h3 id="一年内：Programmer-将失业"><a href="#一年内：Programmer-将失业" class="headerlink" title="一年内：Programmer 将失业"></a>一年内：Programmer 将失业</h3><p>这不是危言耸听。</p><p>「Programmer」——那种主要工作是把需求翻译成代码的角色——将会被 AI 完全取代。</p><p>想想看：</p><ul><li>写 CRUD 接口？Claude Code 几分钟搞定</li><li>写单元测试？AI 比大多数人写得更全</li><li>实现设计稿？AI 可以直接看图写代码</li><li>Debug 常见错误？AI 看报错比新手快多了</li></ul><p>这些工作的共同特点是：<strong>任务边界清晰，结果可验证</strong>。恰好满足复利 AI 的条件。</p><p>而且 AI 不需要休息，不会厌倦重复工作，不会因为周五下午而分心。</p><p>一个 Staff Engineer 配合 AI，可以产出过去一个小团队的工作量。这意味着市场对「会写代码」的需求会急剧下降。</p><p>但注意，我说的是「Programmer」，不是「Engineer」。</p><h3 id="两年内：Software-Engineer-将成为历史"><a href="#两年内：Software-Engineer-将成为历史" class="headerlink" title="两年内：Software Engineer 将成为历史"></a>两年内：Software Engineer 将成为历史</h3><p>「Software Engineer」这个角色，核心技能是什么？</p><ul><li>理解需求，设计方案</li><li>权衡 trade-off，做技术决策</li><li>写代码，维护系统</li><li>排查问题，优化性能</li></ul><p>两年后，这里面有多少是 AI 做不了的？</p><p>设计方案？AI 已经可以给出多种架构选项并分析 pros&#x2F;cons。<br>技术决策？基于代码库的上下文，AI 的判断会越来越准。<br>写代码？前面说了。<br>排查问题？AI 看日志、看 metrics、做 root cause analysis，可能比大多数人强。</p><p>唯一 AI 暂时做不好的，是 <strong>跨越系统边界的判断</strong>——那些需要理解业务、理解组织、理解人的决策。</p><p>但这些，传统意义上不叫「Software Engineering」，叫「Product Thinking」或者「Tech Leadership」。</p><p>我的判断是：两年内，现有系统会开始被 AI 大规模重写。不是因为 AI 写得更好，而是因为 AI 可以一边重写一边学习，形成复利。而旧系统，那些没有 playbook、没有结构化知识、没有反馈循环的系统，会变得越来越难维护。</p><p><strong>一个有 AI 加持、知识持续沉淀的新系统，vs 一个历史包袱重、上下文全靠人脑记忆的旧系统。你觉得谁会赢？</strong></p><h3 id="程序员的出路"><a href="#程序员的出路" class="headerlink" title="程序员的出路"></a>程序员的出路</h3><p>在 AI 时代，有价值的不是「会写代码」，而是：</p><ol><li><p><strong>定义问题的能力</strong>：AI 再强，也需要人告诉它要解决什么问题。把模糊的业务需求转化成清晰的任务定义，这是 AI 做不了的。</p></li><li><p><strong>构建 feedback loop 的能力</strong>：知道怎么设计可观测的结果，怎么结构化知识，怎么让 AI 系统实现复利增长。这是一种新的工程能力。</p></li><li><p><strong>跨系统思考的能力</strong>：理解一个变更会如何影响整个生态系统，理解技术决策背后的业务考量。这需要经验和判断力，AI 暂时学不会。</p></li><li><p><strong>与 AI 协作的能力</strong>：知道什么时候该让 AI 干活，什么时候该自己来；知道怎么给 AI 好的 prompt，怎么 review AI 的产出；知道怎么沉淀知识让 AI 越来越好用。</p></li></ol><p>程序员不会消失，但会变形。从「写代码的人」变成「让 AI 写代码的人」。</p><p>就像摄影师不是被数码相机淘汰，而是适应了数码相机；会计师不是被 Excel 淘汰，而是用 Excel 做更复杂的分析。</p><p><strong>工具变了，但解决问题的人还在。</strong></p><hr><p>我在 <a href="https://github.com/johnsonlee/graphite">Graphite</a> 项目里放了一个 <code>CLAUDE.md</code>，记录了项目的架构决策和注意事项。每次 Claude Code 帮我改代码，我都会更新这个文件。</p><p>一个月后，它对这个项目的理解，可能比我临时找来的同事还深。</p><p>这就是复利的力量。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;之前在做 &lt;a href=&quot;https://github.com/johnsonlee/booster&quot;&gt;Booster&lt;/a&gt; 的时候，就想实现一个能做数据流分析的框架，但个人精力有限，只能束之高阁。自从 Claude Opus 4.5</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
    <category term="Programming" scheme="https://johnsonlee.io/tags/Programming/"/>
    
  </entry>
  
  <entry>
    <title>Witnessing the End of Programming as a Profession</title>
    <link href="https://johnsonlee.io/2026/01/27/the-compounding-ai-thesis.en/"/>
    <id>https://johnsonlee.io/2026/01/27/the-compounding-ai-thesis.en/</id>
    <published>2026-01-27T09:00:00.000Z</published>
    <updated>2026-01-27T09:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>When I was working on <a href="https://github.com/johnsonlee/booster">Booster</a>, I wanted to build a dataflow analysis framework, but never had the bandwidth. After Claude Opus 4.5 launched and blew everyone away, I subscribed to Claude Pro on a whim one weekend and created <a href="https://github.com/johnsonlee/graphite">Graphite</a> – a static analysis tool built on JVM bytecode. I’d built similar tools before and had a rough sense of the complexity: designing data structures, implementing dataflow analysis, handling edge cases, writing a CLI, writing tests… Conservative estimate: two days for a usable version, one day coding and one day debugging. Claude Code finished a working version in <strong>one hour</strong>.</p><p>It didn’t assist me. It wrote the whole thing. From project scaffolding to core algorithms, from unit tests to the command-line tool – all I had to do was describe requirements, review code, and occasionally steer. The end result was no worse than what I’d have produced in two days myself.</p><p>In that moment, something clicked: <strong>AI’s engineering capability has reached Staff Engineer level.</strong></p><h2 id="The-Initial-Shock"><a href="#The-Initial-Shock" class="headerlink" title="The Initial Shock"></a>The Initial Shock</h2><h3 id="Graphite-Two-Days-vs-One-Hour"><a href="#Graphite-Two-Days-vs-One-Hour" class="headerlink" title="Graphite: Two Days vs. One Hour"></a>Graphite: Two Days vs. One Hour</h3><p>Let me explain what <a href="https://github.com/johnsonlee/graphite">Graphite</a> does.</p><p>In large codebases, cleaning up AB experiments is a notorious headache. Experiments finish, but the code stays. Flags get toggled, but the logic lingers. Over time, the codebase fills up with dead experiment branches. The traditional approach is grep plus manual review – slow and error-prone.</p><p>What I wanted was a graph-based static analysis framework: load bytecode into a call graph, then use dataflow analysis to trace how constants flow into specific API calls. For example, <code>AbClient.getOption(1001)</code> – I want to know every place in the codebase where <code>1001</code> is passed to <code>getOption</code>.</p><p>The technical scope is substantial:</p><ul><li>Bytecode parsing (SootUp)</li><li>Control Flow Graph and Call Graph construction</li><li>Backward slicing analysis</li><li>Constant propagation and enum value resolution</li><li>Query DSL design</li><li>CLI toolchain</li></ul><p>If I were doing this myself, the process would look something like:</p><ol><li>Spend half a day researching SootUp’s API and hitting pitfalls</li><li>Another half day designing core data structures</li><li>A full day implementing dataflow analysis and edge cases</li><li>A final half day on CLI and tests</li></ol><p>Conservative estimate: two days.</p><p>Here’s how Claude Code approached it:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt; Create a static analysis framework that finds all constant arguments passed to a specific method in JVM bytecode</span><br></pre></td></tr></table></figure><p>Then it got to work.</p><p>It asked a few clarifying questions: target JVM version? Supported input formats? Special cases to handle? Then it laid out an overall architecture, waited for my confirmation, and started implementing module by module.</p><p>What impressed me most was its edge-case handling. Take Java’s auto-boxing:</p><figure class="highlight kotlin"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">val</span> id: <span class="built_in">Int</span> = <span class="number">1001</span></span><br><span class="line">abClient.getOption(id)  <span class="comment">// actually calls Integer.valueOf(1001)</span></span><br></pre></td></tr></table></figure><p>I assumed I’d need to point this out. It caught it on its own and added transparent handling in the code.</p><p>Or tracking enum constants:</p><figure class="highlight kotlin"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">abClient.getOption(ExperimentId.CHECKOUT)  <span class="comment">// needs to resolve the enum&#x27;s actual value</span></span><br></pre></td></tr></table></figure><p>It not only implemented this but wrote thorough test cases.</p><p>The final output was a complete multi-module Gradle project with a core library, SootUp backend, and CLI tool. Clean structure, solid documentation, and even an elegant Query DSL:</p><figure class="highlight kotlin"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">val</span> results = Graphite.from(graph).query &#123;</span><br><span class="line">    findArgumentConstants &#123;</span><br><span class="line">        method &#123;</span><br><span class="line">            declaringClass = <span class="string">&quot;com.example.AbClient&quot;</span></span><br><span class="line">            name = <span class="string">&quot;getOption&quot;</span></span><br><span class="line">        &#125;</span><br><span class="line">        argumentIndex = <span class="number">0</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>One hour.</p><h3 id="A-Ten-Year-Old’s-Game"><a href="#A-Ten-Year-Old’s-Game" class="headerlink" title="A Ten-Year-Old’s Game"></a>A Ten-Year-Old’s Game</h3><p>If Graphite was a domain-specific engineering project, what my son did with Claude Code was even more mind-blowing.</p><p>I’d taught him some programming basics. During winter break, he got the idea to build a game. I asked what he had in mind. He said he wanted a multiplayer archery combat game.</p><p>I thought: that’s a hefty requirement. 2D physics engine, character system, network sync… even for me, it would take significant time.</p><p>He spent one hour with Claude Code and built a game called <a href="https://fanyuli729.github.io/">Bow &amp; Arrow</a>:</p><ul><li>Three character classes: Crossbowman, Cannoneer, Poison Archer</li><li>Single-player mode and P2P multiplayer</li><li>Physics-based projectile system</li><li>Gold coin scoring system</li></ul><p>The code uses pure HTML5 Canvas + ES6 modules, with PeerJS for multiplayer – no server needed. The project structure is clean and well-organized.</p><p>A ten-year-old, with AI’s help, built a complete web game in one hour.</p><p>It reminded me of what I’d written about <a href="/2025/12/06/education-in-the-age-of-ai/">education in the age of AI</a>. Back then I was pondering how AI would change learning. I didn’t expect the change to arrive this fast.</p><h2 id="How-Claude-Code-Differs-from-Cursor-and-Windsurf"><a href="#How-Claude-Code-Differs-from-Cursor-and-Windsurf" class="headerlink" title="How Claude Code Differs from Cursor and Windsurf"></a>How Claude Code Differs from Cursor and Windsurf</h2><p>Having used so many AI coding tools, I want to highlight what makes Claude Code different.</p><p><strong>Cursor and Windsurf</strong> are fundamentally <strong>Editor + AI</strong>. They integrate AI into the IDE – you write code in the editor, AI helps you complete and refine. The workflow is still human-driven; AI is the copilot.</p><p><strong>ChatGPT</strong> and other chat-based tools are <strong>Chat + Code</strong>. You discuss requirements, it generates code snippets, then you copy-paste into your project. Productivity improves, but there’s a gap in between.</p><p><strong>Claude Code</strong> is different. It’s <strong>AI operating directly on the project</strong>.</p><p>Claude Code can <code>cd</code> into your project directory, read files, modify files, run tests, execute commands. It doesn’t show you code for copying – it writes directly into your codebase. When something breaks, it reads the error and fixes it on its own.</p><p>This distinction seems small but represents a qualitative shift.</p><p>When AI can operate directly on a project, it forms a <strong>complete feedback loop</strong>:</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjYxNXB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MjIzcHg7aGVpZ2h0OjYxNXB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDIyMyA2MTUiIHdpZHRoPSIyMjNweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI0Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxODEuMDcwMyIgeD0iMjAiIHk9IjMyLjk5NTEiPkNvZGUtQ29tcGlsZS1GaXggTG9vcDwvdGV4dD48L2c+PGVsbGlwc2UgY3g9Ijg4LjYxMzkiIGN5PSI2Mi4yOTY5IiBmaWxsPSIjMjIyMjIyIiByeD0iMTAiIHJ5PSIxMCIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI4MS4xOTI5IiB4PSI0OC4wMTc1IiB5PSI5Mi4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjEuMTkyOSIgeD0iNTguMDE3NSIgeT0iMTEyLjUwNzMiPldyaXRlIENvZGU8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMi44MDQ3IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjY0Ljk4ODMiIHg9IjU2LjExOTgiIHk9IjE4OS4xMDE2Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNDQuOTg4MyIgeD0iNjYuMTE5OCIgeT0iMjA5LjMxMiI+Q29tcGlsZTwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMyLjgwNDciIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNzguODc3OSIgeD0iNDkuMTc0OSIgeT0iMjkwLjMwODYiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1OC44Nzc5IiB4PSI1OS4xNzQ5IiB5PSIzMTAuNTE5Ij5SZWFkIEVycm9yPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSI2Ny41NTAzIiB4PSI1NC44Mzg3IiB5PSIzNTguMTEzMyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjQ3LjU1MDMiIHg9IjY0LjgzODciIHk9IjM3OC4zMjM3Ij5GaXggQ29kZTwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjcyLjA3MDksMjQxLjkwNjMsMTA1LjE1NjksMjQxLjkwNjMsMTE3LjE1NjksMjUzLjkwNjMsMTA1LjE1NjksMjY1LjkwNjMsNzIuMDcwOSwyNjUuOTA2Myw2MC4wNzA5LDI1My45MDYzLDcyLjA3MDksMjQxLjkwNjMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5LjAwODMiIHg9IjkyLjYxMzkiIHk9IjI3Ni4xMTY3Ij55ZXM8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzMuMDg1OSIgeD0iNzIuMDcwOSIgeT0iMjU3LjcxNDQiPkVycm9yPzwvdGV4dD48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMy43MDE3IiB4PSIxMTcuMTU2OSIgeT0iMjUxLjMxMiI+bm88L3RleHQ+PHBvbHlnb24gZmlsbD0iI0YxRjFGMSIgcG9pbnRzPSI4OC42MTM5LDQxMC45MTgsMTAwLjYxMzksNDIyLjkxOCw4OC42MTM5LDQzNC45MTgsNzYuNjEzOSw0MjIuOTE4LDg4LjYxMzksNDEwLjkxOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBvbHlnb24gZmlsbD0iI0YxRjFGMSIgcG9pbnRzPSI4OC42MTM5LDE0NS4xMDE2LDEwMC42MTM5LDE1Ny4xMDE2LDg4LjYxMzksMTY5LjEwMTYsNzYuNjEzOSwxNTcuMTAxNiw4OC42MTM5LDE0NS4xMDE2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjczLjI3NjcsNDU0LjkxOCwxMDMuOTUxLDQ1NC45MTgsMTE1Ljk1MSw0NjYuOTE4LDEwMy45NTEsNDc4LjkxOCw3My4yNzY3LDQ3OC45MTgsNjEuMjc2Nyw0NjYuOTE4LDczLjI3NjcsNDU0LjkxOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzAuNjc0MyIgeD0iNzMuMjc2NyIgeT0iNDcwLjcyNjEiPlBhc3M/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzLjcwMTciIHg9IjExNS45NTEiIHk9IjQ2NC4zMjM3Ij5ubzwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMyLjgwNDciIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNDguOTM5NSIgeD0iNjQuMTQ0MiIgeT0iNTIwLjMxNjkiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyOC45Mzk1IiB4PSI3NC4xNDQyIiB5PSI1NDAuNTI3MyI+RG9uZTwvdGV4dD48ZWxsaXBzZSBjeD0iODguNjEzOSIgY3k9IjU4NC4xMjE2IiBmaWxsPSJub25lIiByeD0iMTEiIHJ5PSIxMSIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxlbGxpcHNlIGN4PSI4OC42MTM5IiBjeT0iNTg0LjEyMTYiIGZpbGw9IiMyMjIyMjIiIHJ4PSI2IiByeT0iNiIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjcyLjI5NjkiIHkyPSI5Mi4yOTY5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI4NC42MTM5LDgyLjI5NjksODguNjEzOSw5Mi4yOTY5LDkyLjYxMzksODIuMjk2OSw4OC42MTM5LDg2LjI5NjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguNjEzOSIgeDI9Ijg4LjYxMzkiIHkxPSIzMjMuMTEzMyIgeTI9IjM1OC4xMTMzIi8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSI4NC42MTM5LDM0OC4xMTMzLDg4LjYxMzksMzU4LjExMzMsOTIuNjEzOSwzNDguMTEzMyw4OC42MTM5LDM1Mi4xMTMzIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4LjYxMzkiIHgyPSI4OC42MTM5IiB5MT0iMjY1LjkwNjMiIHkyPSIyOTAuMzA4NiIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuNjEzOSwyODAuMzA4Niw4OC42MTM5LDI5MC4zMDg2LDkyLjYxMzksMjgwLjMwODYsODguNjEzOSwyODQuMzA4NiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMTcuMTU2OSIgeDI9IjEzOC4wNTI5IiB5MT0iMjUzLjkwNjMiIHkyPSIyNTMuOTA2MyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTM0LjA1MjksMzMwLjYxMzMsMTM4LjA1MjksMzQwLjYxMzMsMTQyLjA1MjksMzMwLjYxMzMsMTM4LjA1MjksMzM0LjYxMzMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTM4LjA1MjkiIHgyPSIxMzguMDUyOSIgeTE9IjI1My45MDYzIiB5Mj0iNDIyLjkxOCIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMzguMDUyOSIgeDI9IjEwMC42MTM5IiB5MT0iNDIyLjkxOCIgeTI9IjQyMi45MTgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjExMC42MTM5LDQxOC45MTgsMTAwLjYxMzksNDIyLjkxOCwxMTAuNjEzOSw0MjYuOTE4LDEwNi42MTM5LDQyMi45MTgiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguNjEzOSIgeDI9Ijg4LjYxMzkiIHkxPSIzOTAuOTE4IiB5Mj0iNDEwLjkxOCIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuNjEzOSw0MDAuOTE4LDg4LjYxMzksNDEwLjkxOCw5Mi42MTM5LDQwMC45MTgsODguNjEzOSw0MDQuOTE4IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4LjYxMzkiIHgyPSI4OC42MTM5IiB5MT0iMjIxLjkwNjMiIHkyPSIyNDEuOTA2MyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuNjEzOSwyMzEuOTA2Myw4OC42MTM5LDI0MS45MDYzLDkyLjYxMzksMjMxLjkwNjMsODguNjEzOSwyMzUuOTA2MyIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjE2OS4xMDE2IiB5Mj0iMTg5LjEwMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksMTc5LjEwMTYsODguNjEzOSwxODkuMTAxNiw5Mi42MTM5LDE3OS4xMDE2LDg4LjYxMzksMTgzLjEwMTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTE1Ljk1MSIgeDI9IjE1Ni4wNTI5IiB5MT0iNDY2LjkxOCIgeTI9IjQ2Ni45MTgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE1Mi4wNTI5LDMxNi43MTA5LDE1Ni4wNTI5LDMwNi43MTA5LDE2MC4wNTI5LDMxNi43MTA5LDE1Ni4wNTI5LDMxMi43MTA5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ni4wNTI5IiB4Mj0iMTU2LjA1MjkiIHkxPSIxNTcuMTAxNiIgeTI9IjQ2Ni45MTgiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTU2LjA1MjkiIHgyPSIxMDAuNjEzOSIgeTE9IjE1Ny4xMDE2IiB5Mj0iMTU3LjEwMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjExMC42MTM5LDE1My4xMDE2LDEwMC42MTM5LDE1Ny4xMDE2LDExMC42MTM5LDE2MS4xMDE2LDEwNi42MTM5LDE1Ny4xMDE2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4LjYxMzkiIHgyPSI4OC42MTM5IiB5MT0iNDM0LjkxOCIgeTI9IjQ1NC45MTgiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksNDQ0LjkxOCw4OC42MTM5LDQ1NC45MTgsOTIuNjEzOSw0NDQuOTE4LDg4LjYxMzksNDQ4LjkxOCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjEyNS4xMDE2IiB5Mj0iMTQ1LjEwMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksMTM1LjEwMTYsODguNjEzOSwxNDUuMTAxNiw5Mi42MTM5LDEzNS4xMDE2LDg4LjYxMzksMTM5LjEwMTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguNjEzOSIgeDI9Ijg4LjYxMzkiIHkxPSI0NzguOTE4IiB5Mj0iNTIwLjMxNjkiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksNTEwLjMxNjksODguNjEzOSw1MjAuMzE2OSw5Mi42MTM5LDUxMC4zMTY5LDg4LjYxMzksNTE0LjMxNjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOS4wMDgzIiB4PSI5Mi42MTM5IiB5PSI1MDAuMjIyNyI+eWVzPC90ZXh0PjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSI4OC42MTM5IiB4Mj0iODguNjEzOSIgeTE9IjU1My4xMjE2IiB5Mj0iNTczLjEyMTYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9Ijg0LjYxMzksNTYzLjEyMTYsODguNjEzOSw1NzMuMTIxNiw5Mi42MTM5LDU2My4xMjE2LDg4LjYxMzksNTY3LjEyMTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48P3BsYW50dW1sLXNyYyBGT3duUmk5MDM4UHRGdU43QzZIV0pJR09xWjlyRzMwbTdwc2RNMXBkYS1xOHdERnRHYjB0b19fZHB4elRFUFVXdU9SZHk3dHpLUGJvNzJJOXVsdDJKYzNfVVFHbkpDYnRhbHQ4bHVKaERPMnA5eTkxOGhNM3QwZWRRZFZ5bTItSDBjMFVyMDZ3YXJSSDItZTFiMGU1MXlKa1ZUM05jS1RpRmJMNWpvbHEyc0xpZGNJaDZiSmlHMjdZQS1vTm5WbldhSTVJQ2k4Y295bklaWm8tX05Gdk1ncFAxeEZnUDVrV1RiRXpqS0p0OE5ha09veGIzbTAwPz48L2c+PC9zdmc+'><p>It can run this loop entirely on its own, without a human passing messages in between.</p><p>And Claude Code has one critical design feature: <strong>CLAUDE.md</strong>.</p><p>You can place a <code>CLAUDE.md</code> file in your project root describing the project’s background, architecture, conventions, and pitfalls. Claude Code reads this file at the start of every session, treating it as the project’s “memory.”</p><p>What does this mean?</p><p>It means it doesn’t start from scratch every time. It knows your coding style, your module structure, which pitfalls to avoid. The longer you maintain this file, the better its work quality becomes.</p><p>This leads to a deeper topic.</p><h2 id="The-Compounding-AI-Thesis"><a href="#The-Compounding-AI-Thesis" class="headerlink" title="The Compounding AI Thesis"></a>The Compounding AI Thesis</h2><h3 id="Why-Most-AI-Usage-Plateaus"><a href="#Why-Most-AI-Usage-Plateaus" class="headerlink" title="Why Most AI Usage Plateaus"></a>Why Most AI Usage Plateaus</h3><p>Our team has been using Windsurf for nearly a year. Honestly, the first month brought about a 20% productivity boost – writing code faster, no more hand-writing boilerplate.</p><p>But after a year? Still that same 20%.</p><p>It’s not that the tool is bad. It’s that <strong>this kind of tool has no growth trajectory</strong>. Every time you open it, it doesn’t remember what happened last time. The mistake you corrected last week? It’ll make it again this week. The project conventions you explained? You’ll have to repeat them next time.</p><p>Most teams’ mental model of AI looks like this:</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkRFU0NSSVBUSU9OIiBoZWlnaHQ9IjQ3OHB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MjY1cHg7aGVpZ2h0OjQ3OHB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDI2NSA0NzgiIHdpZHRoPSIyNjVweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI0Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMzguMzY5MSIgeD0iMTAiIHk9IjIyLjk5NTEiPkFJIGFzIFRvb2wgKExpbmVhciwgTm8gR3Jvd3RoKTwvdGV4dD48L2c+PCEtLWVudGl0eSBBLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQSIgZGF0YS1zb3VyY2UtbGluZT0iNiIgaWQ9ImVudDAwMDIiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iNTcuNTAxIiB4PSI5OS40MzQyIiB5PSI0NC4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMzcuNTAxIiB4PSIxMDkuNDM0MiIgeT0iNjQuNTA3MyI+QUkgVG9vbDwvdGV4dD48L2c+PCEtLWVudGl0eSBCLS0+PGcgY2xhc3M9ImVudGl0eSIgZGF0YS1xdWFsaWZpZWQtbmFtZT0iQiIgZGF0YS1zb3VyY2UtbGluZT0iNyIgaWQ9ImVudDAwMDMiPjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzIuODA0NyIgcng9IjIuNSIgcnk9IjIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA5LjgyMDgiIHg9IjczLjI3NDIiIHk9IjEzNy4wOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODkuODIwOCIgeD0iODMuMjc0MiIgeT0iMTU3LjMwNzMiPkVuZ2luZWVycyBVc2UgSXQ8L3RleHQ+PC9nPjwhLS1lbnRpdHkgQy0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkMiIGRhdGEtc291cmNlLWxpbmU9IjgiIGlkPSJlbnQwMDA0Ij48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMyLjgwNDciIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjgyLjM0NzciIHg9Ijg3LjAxNDIiIHk9IjIyOS45MDY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNjIuMzQ3NyIgeD0iOTcuMDE0MiIgeT0iMjUwLjExNzMiPjIwJSBGYXN0ZXI8L3RleHQ+PC9nPjwhLS1lbnRpdHkgRC0tPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkQiIGRhdGEtc291cmNlLWxpbmU9IjkiIGlkPSJlbnQwMDA1Ij48cmVjdCBmaWxsPSIjRDNEM0QzIiBoZWlnaHQ9IjQ1LjYwOTQiIHJ4PSIyLjUiIHJ5PSIyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcwLjE1NTMiIHg9IjkzLjEwNDIiIHk9IjMyMi43MDY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMjguOTM5NSIgeD0iMTAzLjEwNDIiIHk9IjM0Mi45MTczIj5Eb25lPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUwLjE1NTMiIHg9IjEwMy4xMDQyIiB5PSIzNTUuNzIyIj4ocGxhdGVhdSk8L3RleHQ+PC9nPjxnIGNsYXNzPSJlbnRpdHkiIGRhdGEtcXVhbGlmaWVkLW5hbWU9IkdNTjkiIGRhdGEtc291cmNlLWxpbmU9IjE2IiBpZD0iZW50MDAxMCI+PHBhdGggZD0iTTY2LjUxNDIsNDI4LjMxNjkgTDY2LjUxNDIsNDYzLjkyNjMgQTAsMCAwIDAgMCA2Ni41MTQyLDQ2My45MjYzIEwxODkuODU1LDQ2My45MjYzIEEwLDAgMCAwIDAgMTg5Ljg1NSw0NjMuOTI2MyBMMTg5Ljg1NSw0MzguMzE2OSBMMTc5Ljg1NSw0MjguMzE2OSBMMTMyLjE4NDIsNDI4LjMxNjkgTDEyOC4xODQyLDM2OC4zOTY5IEwxMjQuMTg0Miw0MjguMzE2OSBMNjYuNTE0Miw0MjguMzE2OSBBMCwwIDAgMCAwIDY2LjUxNDIsNDI4LjMxNjkiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjxwYXRoIGQ9Ik0xNzkuODU1LDQyOC4zMTY5IEwxNzkuODU1LDQzOC4zMTY5IEwxODkuODU1LDQzOC4zMTY5IEwxNzkuODU1LDQyOC4zMTY5IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDIuMzQwOCIgeD0iNzIuNTE0MiIgeT0iNDQzLjUyNzMiPlNhbWUgMjAlIGZvcmV2ZXI8L3RleHQ+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iOTIuNTA2MyIgeD0iNzIuNTE0MiIgeT0iNDU2LjMzMiI+Tm8gaW1wcm92ZW1lbnQ8L3RleHQ+PC9nPjwhLS1saW5rIEEgdG8gQi0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDAyIiBkYXRhLWVudGl0eS0yPSJlbnQwMDAzIiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTEiIGlkPSJsbms2Ij48cGF0aCBkPSJNMTI4LjE4NDIsNzcuNTE2OSBDMTI4LjE4NDIsOTQuMTc2OSAxMjguMTg0MiwxMTQuMjY2OSAxMjguMTg0MiwxMzAuODY2OSIgZmlsbD0ibm9uZSIgaWQ9IkEtdG8tQiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTI4LjE4NDIsMTM2Ljg2NjksMTMyLjE4NDIsMTI3Ljg2NjksMTI4LjE4NDIsMTMxLjg2NjksMTI0LjE4NDIsMTI3Ljg2NjksMTI4LjE4NDIsMTM2Ljg2NjkiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48L2c+PCEtLWxpbmsgQiB0byBDLS0+PGcgY2xhc3M9ImxpbmsiIGRhdGEtZW50aXR5LTE9ImVudDAwMDMiIGRhdGEtZW50aXR5LTI9ImVudDAwMDQiIGRhdGEtbGluay10eXBlPSJkZXBlbmRlbmN5IiBkYXRhLXNvdXJjZS1saW5lPSIxMiIgaWQ9ImxuazciPjxwYXRoIGQ9Ik0xMjguMTg0MiwxNzAuMzE2OSBDMTI4LjE4NDIsMTg2Ljk4NjkgMTI4LjE4NDIsMjA3LjA3NjkgMTI4LjE4NDIsMjIzLjY2NjkiIGZpbGw9Im5vbmUiIGlkPSJCLXRvLUMiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjEyOC4xODQyLDIyOS42NjY5LDEzMi4xODQyLDIyMC42NjY5LDEyOC4xODQyLDIyNC42NjY5LDEyNC4xODQyLDIyMC42NjY5LDEyOC4xODQyLDIyOS42NjY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PC9nPjwhLS1saW5rIEMgdG8gRC0tPjxnIGNsYXNzPSJsaW5rIiBkYXRhLWVudGl0eS0xPSJlbnQwMDA0IiBkYXRhLWVudGl0eS0yPSJlbnQwMDA1IiBkYXRhLWxpbmstdHlwZT0iZGVwZW5kZW5jeSIgZGF0YS1zb3VyY2UtbGluZT0iMTMiIGlkPSJsbms4Ij48cGF0aCBkPSJNMTI4LjE4NDIsMjYyLjkyNjkgQzEyOC4xODQyLDI3OS4wMjY5IDEyOC4xODQyLDI5OC4yNjY5IDEyOC4xODQyLDMxNi40MTY5IiBmaWxsPSJub25lIiBpZD0iQy10by1EIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxMjguMTg0MiwzMjIuNDE2OSwxMzIuMTg0MiwzMTMuNDE2OSwxMjguMTg0MiwzMTcuNDE2OSwxMjQuMTg0MiwzMTMuNDE2OSwxMjguMTg0MiwzMjIuNDE2OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjwvZz48P3BsYW50dW1sLXNyYyBKT19IUWk5RzM4Umx5bkoxQ0wxR2M3azBHTXNkMkI4Ump4bFRIOWtzMXprYXZBSkF6bEd4eFNOZUxVM19sWnlYeUhRYTl3Q0VCdEl6clFRM2JCY3NRbFhlV1pGNFZydm9IS0ZoVW5LX1hyXzZ4SFIwV3hVQ3NINGZ1Z1RnWXlqSjQyUFJ1dVZZbVZKWHBHaDAtRWVhVEo4TklIc3puTFo4dmsxVHdqSGFZX1dMNk95LTZSa3Z5VmhvWjdrQXBaUW5WQ3VBNVZ3TVBULUlDbXNoSUlabXdISmduV3o2Rm0wUFJaUGxRVTVrY1pkYXFvbTBIOXRuZWt4UWVMT2ZHSm5KbnBZVWd6SnVwZlFZejR4ZVVqQ3hUb21FQjJNRW5KeTA/PjwvZz48L3N2Zz4='><p>The problem with this model: <strong>there’s no growth curve</strong>.</p><p>You get 20% on day one, and a year later it’s still 20%. The tool is there, but it doesn’t improve.</p><p><strong>This is the fundamental limitation of AI-as-tool: without memory, there’s no compounding.</strong></p><h3 id="The-Compounding-AI-Model"><a href="#The-Compounding-AI-Model" class="headerlink" title="The Compounding AI Model"></a>The Compounding AI Model</h3><p>There’s another way to think about it:</p><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjM0M3B4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6MjY4cHg7aGVpZ2h0OjM0M3B4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDI2OCAzNDMiIHdpZHRoPSIyNjhweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI1Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIyMjYuODU3NCIgeD0iMjAiIHk9IjMyLjk5NTEiPlRoZSBDb21wb3VuZGluZyBBSSBTeXN0ZW08L3RleHQ+PC9nPjxlbGxpcHNlIGN4PSIxMTguOTI4NyIgY3k9IjYyLjI5NjkiIGZpbGw9IiMyMjIyMjIiIHJ4PSIxMCIgcnk9IjEwIiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjE7Ii8+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjcxLjQ4NjMiIHg9IjgzLjE4NTUiIHk9IjEzNi4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iNTEuNDg2MyIgeD0iOTMuMTg1NSIgeT0iMTU3LjQzNTUiPkRvIFdvcms8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEwMy4wMDM5IiB4PSI2Ny40MjY4IiB5PSIxOTAuMjY1NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjgzLjAwMzkiIHg9Ijc3LjQyNjgiIHk9IjIxMS40MDQzIj5HZXQgRmVlZGJhY2s8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjEyMC41NTI3IiB4PSI1OC42NTIzIiB5PSIyNDQuMjM0NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMC41NTI3IiB4PSI2OC42NTIzIiB5PSIyNjUuMzczIj5MZWFybiAmYW1wOyBJbXByb3ZlPC90ZXh0Pjxwb2x5Z29uIGZpbGw9IiNGMUYxRjEiIHBvaW50cz0iMTE4LjkyODcsOTIuMjk2OSwxMzAuOTI4NywxMDQuMjk2OSwxMTguOTI4NywxMTYuMjk2OSwxMDYuOTI4NywxMDQuMjk2OSwxMTguOTI4Nyw5Mi4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjkxLjk0OTIsMjk4LjIwMzEsMTQ1LjkwODIsMjk4LjIwMzEsMTU3LjkwODIsMzEwLjIwMzEsMTQ1LjkwODIsMzIyLjIwMzEsOTEuOTQ5MiwzMjIuMjAzMSw3OS45NDkyLDMxMC4yMDMxLDkxLjk0OTIsMjk4LjIwMzEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjUzLjk1OSIgeD0iOTEuOTQ5MiIgeT0iMzE0LjM1NzQiPkNvbnRpbnVlPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjIwLjczNjMiIHg9IjE1Ny45MDgyIiB5PSIzMDcuMzczIj55ZXM8L3RleHQ+PGxpbmUgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgeDE9IjExOC45Mjg3IiB4Mj0iMTE4LjkyODciIHkxPSIxNzAuMjY1NiIgeTI9IjE5MC4yNjU2Ii8+PHBvbHlnb24gZmlsbD0iIzMzMzMzMyIgcG9pbnRzPSIxMTQuOTI4NywxODAuMjY1NiwxMTguOTI4NywxOTAuMjY1NiwxMjIuOTI4NywxODAuMjY1NiwxMTguOTI4NywxODQuMjY1NiIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHgxPSIxMTguOTI4NyIgeDI9IjExOC45Mjg3IiB5MT0iMjI0LjIzNDQiIHkyPSIyNDQuMjM0NCIvPjxwb2x5Z29uIGZpbGw9IiMzMzMzMzMiIHBvaW50cz0iMTE0LjkyODcsMjM0LjIzNDQsMTE4LjkyODcsMjQ0LjIzNDQsMTIyLjkyODcsMjM0LjIzNDQsMTE4LjkyODcsMjM4LjIzNDQiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTE4LjkyODciIHgyPSIxMTguOTI4NyIgeTE9IjExNi4yOTY5IiB5Mj0iMTM2LjI5NjkiLz48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjExNC45Mjg3LDEyNi4yOTY5LDExOC45Mjg3LDEzNi4yOTY5LDEyMi45Mjg3LDEyNi4yOTY5LDExOC45Mjg3LDEzMC4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgeDE9IjE1Ny45MDgyIiB4Mj0iMTkxLjIwNTEiIHkxPSIzMTAuMjAzMSIgeTI9IjMxMC4yMDMxIi8+PHBvbHlnb24gZmlsbD0iIzMzMzMzMyIgcG9pbnRzPSIxODcuMjA1MSwyMTcuMjUsMTkxLjIwNTEsMjA3LjI1LDE5NS4yMDUxLDIxNy4yNSwxOTEuMjA1MSwyMTMuMjUiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTkxLjIwNTEiIHgyPSIxOTEuMjA1MSIgeTE9IjEwNC4yOTY5IiB5Mj0iMzEwLjIwMzEiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTkxLjIwNTEiIHgyPSIxMzAuOTI4NyIgeTE9IjEwNC4yOTY5IiB5Mj0iMTA0LjI5NjkiLz48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjE0MC45Mjg3LDEwMC4yOTY5LDEzMC45Mjg3LDEwNC4yOTY5LDE0MC45Mjg3LDEwOC4yOTY5LDEzNi45Mjg3LDEwNC4yOTY5IiBzdHlsZT0ic3Ryb2tlOiMzMzMzMzM7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIgeDE9IjExOC45Mjg3IiB4Mj0iMTE4LjkyODciIHkxPSIyNzguMjAzMSIgeTI9IjI5OC4yMDMxIi8+PHBvbHlnb24gZmlsbD0iIzMzMzMzMyIgcG9pbnRzPSIxMTQuOTI4NywyODguMjAzMSwxMTguOTI4NywyOTguMjAzMSwxMjIuOTI4NywyODguMjAzMSwxMTguOTI4NywyOTIuMjAzMSIgc3R5bGU9InN0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiIHgxPSIxMTguOTI4NyIgeDI9IjExOC45Mjg3IiB5MT0iNzIuMjk2OSIgeTI9IjkyLjI5NjkiLz48cG9seWdvbiBmaWxsPSIjMzMzMzMzIiBwb2ludHM9IjExNC45Mjg3LDgyLjI5NjksMTE4LjkyODcsOTIuMjk2OSwxMjIuOTI4Nyw4Mi4yOTY5LDExOC45Mjg3LDg2LjI5NjkiIHN0eWxlPSJzdHJva2U6IzMzMzMzMztzdHJva2Utd2lkdGg6MTsiLz48P3BsYW50dW1sLXNyYyBKT3gxMmk5MDM0SmwtT2cwOEZRZXRrbjlBZk0yRG1ORmd1dGpxZFFwUDVFYnFlLXRnb0JjRDZJT2NIU1F3eG1IcS03NU45akFrN1RibllxQkZjZ2gxRTdkYnRHcFZRaXZFcHRROS01b3pNVGtIVlpub1N0TXhtREdnb3RYZ0lSQ2tGRW5zQmVBam1LVVh3M0swT21fRkc4NERRODBHZndDMGs5Y250WGNRVEFlendJTzR2TUh5VnF1YTE2N1NvbXdCdG9kejlrQnFERmM4ZmlXaFVpZkdIam1DTDE4TlcwMD8+PC9nPjwvc3ZnPg=='><p>In this model, AI isn’t a tool you use – it’s a <strong>system you train</strong>. Like any learning system, its value compounds over time.</p><p>Simple math:</p><ul><li>Tool: a permanent 20% boost</li><li>Compounding system improving 5% per week: after one year, that’s <strong>12x</strong></li></ul><p>The question isn’t “how to use AI to boost efficiency” but rather <strong>“how to build a system that gets smarter every week.”</strong></p><h3 id="Three-Conditions-for-Compounding"><a href="#Three-Conditions-for-Compounding" class="headerlink" title="Three Conditions for Compounding"></a>Three Conditions for Compounding</h3><p>For AI to achieve compounding growth, three conditions must be met:</p><p><strong>1. Definable task boundaries</strong></p><p>AI must know when it’s “done.” This requires:</p><ul><li>Clear inputs (not vague requests)</li><li>Clear success criteria (not subjective judgment)</li><li>Clear scope (not open-ended exploration)</li></ul><p>Bad: “Improve our codebase”<br>Good: “Clean up AB experiment X, keep the winner branch, ensure tests pass”</p><p>Without boundaries, there’s no completion. Without completion, there’s no feedback. Without feedback, there’s no learning.</p><p><strong>2. Observable outcomes</strong></p><p>Every AI action must produce measurable results:</p><ul><li>Did tests pass or fail?</li><li>Was the PR approved or rejected?</li><li>Did the change cause a production incident?</li></ul><p>Outcomes must be <strong>unambiguous</strong>. “Looks good” isn’t observable. “PR merged, canary 24 hours with zero errors” is observable.</p><p>Observable outcomes create <strong>training signals</strong>. The richer the signal, the faster the learning.</p><p><strong>3. Persisted knowledge</strong></p><p>This is the part most teams overlook: <strong>AI has no memory</strong>.</p><p>Claude, GPT, Windsurf – they all start from zero each session. That insight from yesterday’s debugging? Gone. The pattern you corrected three times? Forgotten.</p><p>For compounding, knowledge must be <strong>externalized</strong>:</p><ul><li>What patterns exist in the codebase?</li><li>What mistakes have we made before?</li><li>What do reviewers typically ask for?</li><li>What edge cases have we discovered?</li></ul><p>This externalized knowledge becomes AI’s “memory” – loaded at the start of each session, updated at the end.</p><p><strong>Without persistence, every day is day one. With persistence, every day builds on all the days before it.</strong></p><h3 id="The-Formula"><a href="#The-Formula" class="headerlink" title="The Formula"></a>The Formula</h3><p>Putting it together:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Compounding AI = Definable Tasks + Observable Outcomes + Persisted Knowledge</span><br></pre></td></tr></table></figure><p>Or more concisely:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Structured Feedback + Persistence = Compounding Knowledge</span><br></pre></td></tr></table></figure><p>Remove any element and the system collapses:</p><ul><li>No task boundaries -&gt; no completion -&gt; no feedback</li><li>No observable outcomes -&gt; feedback is noise -&gt; no learning</li><li>No persistence -&gt; learning is lost -&gt; no compounding</li></ul><h3 id="What-This-Looks-Like-in-Practice"><a href="#What-This-Looks-Like-in-Practice" class="headerlink" title="What This Looks Like in Practice"></a>What This Looks Like in Practice</h3><h4 id="The-Learning-Loop"><a href="#The-Learning-Loop" class="headerlink" title="The Learning Loop"></a>The Learning Loop</h4><img src='data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBjb250ZW50U3R5bGVUeXBlPSJ0ZXh0L2NzcyIgZGF0YS1kaWFncmFtLXR5cGU9IkFDVElWSVRZIiBoZWlnaHQ9IjUyMnB4IiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiBzdHlsZT0id2lkdGg6NDgxcHg7aGVpZ2h0OjUyMnB4O2JhY2tncm91bmQ6I0ZGRkZGRjsiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ4MSA1MjIiIHdpZHRoPSI0ODFweCIgem9vbUFuZFBhbj0ibWFnbmlmeSI+PD9wbGFudHVtbCAxLjIwMjYuM2JldGE2Pz48ZGVmcy8+PGc+PGcgY2xhc3M9InRpdGxlIiBkYXRhLXNvdXJjZS1saW5lPSI0Ij48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNCIgZm9udC13ZWlnaHQ9IjcwMCIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxODUuODAwOCIgeD0iMTQ2Ljc1NjYiIHk9IjMyLjk5NTEiPlRoZSBDb21wb3VuZGluZyBMb29wPC90ZXh0PjwvZz48ZWxsaXBzZSBjeD0iMTcwLjI1OTgiIGN5PSI2Mi4yOTY5IiBmaWxsPSIjMjIyMjIyIiByeD0iMTAiIHJ5PSIxMCIgc3R5bGU9InN0cm9rZTojMjIyMjIyO3N0cm9rZS13aWR0aDoxOyIvPjxwYXRoIGQ9Ik0yNDQuODQwOCw5Ni43MTQ4IEwyNDQuODQwOCwxMDUuMjgxMyBMMjI0Ljg0MDgsMTA5LjI4MTMgTDI0NC44NDA4LDExMy4yODEzIEwyNDQuODQwOCwxMjEuODQ3NyBBMCwwIDAgMCAwIDI0NC44NDA4LDEyMS44NDc3IEw0NjAuMzE0LDEyMS44NDc3IEEwLDAgMCAwIDAgNDYwLjMxNCwxMjEuODQ3NyBMNDYwLjMxNCwxMDYuNzE0OCBMNDUwLjMxNCw5Ni43MTQ4IEwyNDQuODQwOCw5Ni43MTQ4IEEwLDAgMCAwIDAgMjQ0Ljg0MDgsOTYuNzE0OCIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTQ1MC4zMTQsOTYuNzE0OCBMNDUwLjMxNCwxMDYuNzE0OCBMNDYwLjMxNCwxMDYuNzE0OCBMNDUwLjMxNCw5Ni43MTQ4IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxOTQuNDczMSIgeD0iMjUwLjg0MDgiIHk9IjExMy43ODE3Ij5Mb2FkIGFjY3VtdWxhdGVkIGtub3dsZWRnZTwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA5LjE2MjEiIHg9IjExNS42Nzg3IiB5PSI5Mi4yOTY5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iODkuMTYyMSIgeD0iMTI1LjY3ODciIHk9IjExMy40MzU1Ij5SZWFkIHBsYXlib29rPC90ZXh0PjxwYXRoIGQ9Ik0yMzguOTc1NiwxNTAuNjgzNiBMMjM4Ljk3NTYsMTU5LjI1IEwyMTguOTc1NiwxNjMuMjUgTDIzOC45NzU2LDE2Ny4yNSBMMjM4Ljk3NTYsMTc1LjgxNjQgQTAsMCAwIDAgMCAyMzguOTc1NiwxNzUuODE2NCBMNDQ2LjgzMTUsMTc1LjgxNjQgQTAsMCAwIDAgMCA0NDYuODMxNSwxNzUuODE2NCBMNDQ2LjgzMTUsMTYwLjY4MzYgTDQzNi44MzE1LDE1MC42ODM2IEwyMzguOTc1NiwxNTAuNjgzNiBBMCwwIDAgMCAwIDIzOC45NzU2LDE1MC42ODM2IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNNDM2LjgzMTUsMTUwLjY4MzYgTDQzNi44MzE1LDE2MC42ODM2IEw0NDYuODMxNSwxNjAuNjgzNiBMNDM2LjgzMTUsMTUwLjY4MzYiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE4Ni44NTYiIHg9IjI0NC45NzU2IiB5PSIxNjcuNzUwNSI+R2VuZXJhdGUgY29kZSBjaGFuZ2VzLCBQUnM8L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9Ijk3LjQzMTYiIHg9IjEyMS41NDM5IiB5PSIxNDYuMjY1NiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijc3LjQzMTYiIHg9IjEzMS41NDM5IiB5PSIxNjcuNDA0MyI+RXhlY3V0ZSB0YXNrPC90ZXh0PjxwYXRoIGQ9Ik0yNDYuMDkxOCwyMDQuNjUyMyBMMjQ2LjA5MTgsMjEzLjIxODggTDIyNi4wOTE4LDIxNy4yMTg4IEwyNDYuMDkxOCwyMjEuMjE4OCBMMjQ2LjA5MTgsMjI5Ljc4NTIgQTAsMCAwIDAgMCAyNDYuMDkxOCwyMjkuNzg1MiBMNDQzLjM2NjIsMjI5Ljc4NTIgQTAsMCAwIDAgMCA0NDMuMzY2MiwyMjkuNzg1MiBMNDQzLjM2NjIsMjE0LjY1MjMgTDQzMy4zNjYyLDIwNC42NTIzIEwyNDYuMDkxOCwyMDQuNjUyMyBBMCwwIDAgMCAwIDI0Ni4wOTE4LDIwNC42NTIzIiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNNDMzLjM2NjIsMjA0LjY1MjMgTDQzMy4zNjYyLDIxNC42NTIzIEw0NDMuMzY2MiwyMTQuNjUyMyBMNDMzLjM2NjIsMjA0LjY1MjMiIGZpbGw9IiNGRUZGREQiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE3Ni4yNzQ0IiB4PSIyNTIuMDkxOCIgeT0iMjIxLjcxOTIiPkNJIHJlc3VsdHMsIHJldmlldyBmZWVkYmFjazwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTExLjY2NDEiIHg9IjExNC40Mjc3IiB5PSIyMDAuMjM0NCIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjkxLjY2NDEiIHg9IjEyNC40Mjc3IiB5PSIyMjEuMzczIj5WZXJpZnkgb3V0Y29tZTwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjE0NS4yMDA5LDI1NC4yMDMxLDE5NS4zMTg2LDI1NC4yMDMxLDIwNy4zMTg2LDI2Ni4yMDMxLDE5NS4zMTg2LDI3OC4yMDMxLDE0NS4yMDA5LDI3OC4yMDMxLDEzMy4yMDA5LDI2Ni4yMDMxLDE0NS4yMDA5LDI1NC4yMDMxIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMSIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSI1MC4xMTc3IiB4PSIxNDUuMjAwOSIgeT0iMjcwLjAxMTIiPlN1Y2Nlc3M/PC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjE5LjAwODMiIHg9IjExNC4xOTI2IiB5PSIyNjMuNjA4OSI+eWVzPC90ZXh0Pjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjExIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEzLjcwMTciIHg9IjIwNy4zMTg2IiB5PSIyNjMuNjA4OSI+bm88L3RleHQ+PHJlY3QgZmlsbD0iI0YxRjFGMSIgaGVpZ2h0PSIzMy45Njg4IiByeD0iMTIuNSIgcnk9IjEyLjUiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MC41OyIgd2lkdGg9IjE0NS45NjQ4IiB4PSIxNiIgeT0iMjg4LjIwMzEiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMiIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMjUuOTY0OCIgeD0iMjYiIHk9IjMwOS4zNDE4Ij5FeHRyYWN0IG5ldyBwYXR0ZXJuczwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTA5LjI2NzYiIHg9IjE5Ni45MDMzIiB5PSIyODguMjAzMSIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9Ijg5LjI2NzYiIHg9IjIwNi45MDMzIiB5PSIzMDkuMzQxOCI+QW5hbHl6ZSBmYWlsdXJlPC90ZXh0PjxyZWN0IGZpbGw9IiNGMUYxRjEiIGhlaWdodD0iMzMuOTY4OCIgcng9IjEyLjUiIHJ5PSIxMi41IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiIHdpZHRoPSIxMzkuMTQ0NSIgeD0iMTgxLjk2NDgiIHk9IjM0Mi4xNzE5Ii8+PHRleHQgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTIiIGxlbmd0aEFkanVzdD0ic3BhY2luZyIgdGV4dExlbmd0aD0iMTE5LjE0NDUiIHg9IjE5MS45NjQ4IiB5PSIzNjMuMzEwNSI+QWRkIHRvIG1pc3Rha2VzIGxvZzwvdGV4dD48cG9seWdvbiBmaWxsPSIjRjFGMUYxIiBwb2ludHM9IjE3MC4yNTk4LDM4Mi4xNDA2LDE4Mi4yNTk4LDM5NC4xNDA2LDE3MC4yNTk4LDQwNi4xNDA2LDE1OC4yNTk4LDM5NC4xNDA2LDE3MC4yNTk4LDM4Mi4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48cGF0aCBkPSJNMjUxLjIyNDYsNDMwLjU1ODYgTDI1MS4yMjQ2LDQzOS4xMjUgTDIzMS4yMjQ2LDQ0My4xMjUgTDI1MS4yMjQ2LDQ0Ny4xMjUgTDI1MS4yMjQ2LDQ1NS42OTE0IEEwLDAgMCAwIDAgMjUxLjIyNDYsNDU1LjY5MTQgTDM3OS44MzAxLDQ1NS42OTE0IEEwLDAgMCAwIDAgMzc5LjgzMDEsNDU1LjY5MTQgTDM3OS44MzAxLDQ0MC41NTg2IEwzNjkuODMwMSw0MzAuNTU4NiBMMjUxLjIyNDYsNDMwLjU1ODYgQTAsMCAwIDAgMCAyNTEuMjI0Niw0MzAuNTU4NiIgZmlsbD0iI0ZFRkZERCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7Ii8+PHBhdGggZD0iTTM2OS44MzAxLDQzMC41NTg2IEwzNjkuODMwMSw0NDAuNTU4NiBMMzc5LjgzMDEsNDQwLjU1ODYgTDM2OS44MzAxLDQzMC41NTg2IiBmaWxsPSIjRkVGRkREIiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjAuNTsiLz48dGV4dCBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMyIgbGVuZ3RoQWRqdXN0PSJzcGFjaW5nIiB0ZXh0TGVuZ3RoPSIxMDcuNjA1NSIgeD0iMjU3LjIyNDYiIHk9IjQ0Ny42MjU1Ij5QZXJzaXN0IGxlYXJuaW5nczwvdGV4dD48cmVjdCBmaWxsPSIjRjFGMUYxIiBoZWlnaHQ9IjMzLjk2ODgiIHJ4PSIxMi41IiByeT0iMTIuNSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDowLjU7IiB3aWR0aD0iMTIxLjkyOTciIHg9IjEwOS4yOTQ5IiB5PSI0MjYuMTQwNiIvPjx0ZXh0IGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXNpemU9IjEyIiBsZW5ndGhBZGp1c3Q9InNwYWNpbmciIHRleHRMZW5ndGg9IjEwMS45Mjk3IiB4PSIxMTkuMjk0OSIgeT0iNDQ3LjI3OTMiPlVwZGF0ZSBwbGF5Ym9vazwvdGV4dD48ZWxsaXBzZSBjeD0iMTcwLjI1OTgiIGN5PSI0OTEuMTA5NCIgZmlsbD0ibm9uZSIgcng9IjExIiByeT0iMTEiIHN0eWxlPSJzdHJva2U6IzIyMjIyMjtzdHJva2Utd2lkdGg6MTsiLz48ZWxsaXBzZSBjeD0iMTcwLjI1OTgiIGN5PSI0OTEuMTA5NCIgZmlsbD0iIzIyMjIyMiIgcng9IjYiIHJ5PSI2IiBzdHlsZT0ic3Ryb2tlOiMyMjIyMjI7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE3MC4yNTk4IiB4Mj0iMTcwLjI1OTgiIHkxPSI3Mi4yOTY5IiB5Mj0iOTIuMjk2OSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY2LjI1OTgsODIuMjk2OSwxNzAuMjU5OCw5Mi4yOTY5LDE3NC4yNTk4LDgyLjI5NjksMTcwLjI1OTgsODYuMjk2OSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNzAuMjU5OCIgeDI9IjE3MC4yNTk4IiB5MT0iMTI2LjI2NTYiIHkyPSIxNDYuMjY1NiIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY2LjI1OTgsMTM2LjI2NTYsMTcwLjI1OTgsMTQ2LjI2NTYsMTc0LjI1OTgsMTM2LjI2NTYsMTcwLjI1OTgsMTQwLjI2NTYiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTcwLjI1OTgiIHgyPSIxNzAuMjU5OCIgeTE9IjE4MC4yMzQ0IiB5Mj0iMjAwLjIzNDQiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE2Ni4yNTk4LDE5MC4yMzQ0LDE3MC4yNTk4LDIwMC4yMzQ0LDE3NC4yNTk4LDE5MC4yMzQ0LDE3MC4yNTk4LDE5NC4yMzQ0IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjI1MS41MzcxIiB4Mj0iMjUxLjUzNzEiIHkxPSIzMjIuMTcxOSIgeTI9IjM0Mi4xNzE5Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIyNDcuNTM3MSwzMzIuMTcxOSwyNTEuNTM3MSwzNDIuMTcxOSwyNTUuNTM3MSwzMzIuMTcxOSwyNTEuNTM3MSwzMzYuMTcxOSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxMzMuMjAwOSIgeDI9Ijg4Ljk4MjQiIHkxPSIyNjYuMjAzMSIgeTI9IjI2Ni4yMDMxIi8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4Ljk4MjQiIHgyPSI4OC45ODI0IiB5MT0iMjY2LjIwMzEiIHkyPSIyODguMjAzMSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iODQuOTgyNCwyNzguMjAzMSw4OC45ODI0LDI4OC4yMDMxLDkyLjk4MjQsMjc4LjIwMzEsODguOTgyNCwyODIuMjAzMSIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyMDcuMzE4NiIgeDI9IjI1MS41MzcxIiB5MT0iMjY2LjIwMzEiIHkyPSIyNjYuMjAzMSIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIyNTEuNTM3MSIgeDI9IjI1MS41MzcxIiB5MT0iMjY2LjIwMzEiIHkyPSIyODguMjAzMSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMjQ3LjUzNzEsMjc4LjIwMzEsMjUxLjUzNzEsMjg4LjIwMzEsMjU1LjUzNzEsMjc4LjIwMzEsMjUxLjUzNzEsMjgyLjIwMzEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iODguOTgyNCIgeDI9Ijg4Ljk4MjQiIHkxPSIzMjIuMTcxOSIgeTI9IjM5NC4xNDA2Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9Ijg4Ljk4MjQiIHgyPSIxNTguMjU5OCIgeTE9IjM5NC4xNDA2IiB5Mj0iMzk0LjE0MDYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE0OC4yNTk4LDM5MC4xNDA2LDE1OC4yNTk4LDM5NC4xNDA2LDE0OC4yNTk4LDM5OC4xNDA2LDE1Mi4yNTk4LDM5NC4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjI1MS41MzcxIiB4Mj0iMjUxLjUzNzEiIHkxPSIzNzYuMTQwNiIgeTI9IjM5NC4xNDA2Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjI1MS41MzcxIiB4Mj0iMTgyLjI1OTgiIHkxPSIzOTQuMTQwNiIgeTI9IjM5NC4xNDA2Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxOTIuMjU5OCwzOTAuMTQwNiwxODIuMjU5OCwzOTQuMTQwNiwxOTIuMjU5OCwzOTguMTQwNiwxODguMjU5OCwzOTQuMTQwNiIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjxsaW5lIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiIHgxPSIxNzAuMjU5OCIgeDI9IjE3MC4yNTk4IiB5MT0iMjM0LjIwMzEiIHkyPSIyNTQuMjAzMSIvPjxwb2x5Z29uIGZpbGw9IiMxODE4MTgiIHBvaW50cz0iMTY2LjI1OTgsMjQ0LjIwMzEsMTcwLjI1OTgsMjU0LjIwMzEsMTc0LjI1OTgsMjQ0LjIwMzEsMTcwLjI1OTgsMjQ4LjIwMzEiIHN0eWxlPSJzdHJva2U6IzE4MTgxODtzdHJva2Utd2lkdGg6MTsiLz48bGluZSBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7IiB4MT0iMTcwLjI1OTgiIHgyPSIxNzAuMjU5OCIgeTE9IjQwNi4xNDA2IiB5Mj0iNDI2LjE0MDYiLz48cG9seWdvbiBmaWxsPSIjMTgxODE4IiBwb2ludHM9IjE2Ni4yNTk4LDQxNi4xNDA2LDE3MC4yNTk4LDQyNi4xNDA2LDE3NC4yNTk4LDQxNi4xNDA2LDE3MC4yNTk4LDQyMC4xNDA2IiBzdHlsZT0ic3Ryb2tlOiMxODE4MTg7c3Ryb2tlLXdpZHRoOjE7Ii8+PGxpbmUgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIgeDE9IjE3MC4yNTk4IiB4Mj0iMTcwLjI1OTgiIHkxPSI0NjAuMTA5NCIgeTI9IjQ4MC4xMDk0Ii8+PHBvbHlnb24gZmlsbD0iIzE4MTgxOCIgcG9pbnRzPSIxNjYuMjU5OCw0NzAuMTA5NCwxNzAuMjU5OCw0ODAuMTA5NCwxNzQuMjU5OCw0NzAuMTA5NCwxNzAuMjU5OCw0NzQuMTA5NCIgc3R5bGU9InN0cm9rZTojMTgxODE4O3N0cm9rZS13aWR0aDoxOyIvPjw/cGxhbnR1bWwtc3JjIFJQMzFKV0NuMzRKbC1HZVZNdWFsUTB5TGdYMTJ1YjJybURyRGxCbEhQa3JMeDUyTWh5VkIwR2Q0OUdWeHBNR3lFY1FVaVU4NEx1blpOd0xuRWFnSDJoU1g2bU56c0tVUFBjNVlrelhJMjJmNUctdUJYTTNQVkYwbzQxbk5uWHFvel8waUNlVVdYakwyczlxOTR5bTVid2w4azB5aXZYUXY3c3BkZUF5bW5aUXJXYU85SGZQUmVUSXh6VXhYV3M5cHJiM19vMXc5Z0pobG1QOF9XdVNYbE9GSk1MdHNIWkx0MnFXcFpxc19YU1NkM3ctamNERUx0WkZUZTJEQXdfcVh2MHVzYm5PWmdId3NPMENuUjFSSVJHM21CNU9uNmgwaFBaSVpvaGVGTDlIV21fQUR0M0VNdlBFV21yblF6T19OTUtmVzBiRnNCYVBJQURBeG9hbGdGRVpoZERPUl9jX2NINUxUMU9NbWlkVWdRdnlvVm00MD8+PC9nPjwvc3ZnPg=='><p>Each loop makes the next one better:</p><ul><li>Patterns documented -&gt; fewer mistakes</li><li>Edge cases recorded -&gt; faster handling</li><li>Preferences captured -&gt; less review friction</li></ul><p>This is the value of <code>CLAUDE.md</code>.</p><h4 id="Playbook-AI’s-External-Memory"><a href="#Playbook-AI’s-External-Memory" class="headerlink" title="Playbook: AI’s External Memory"></a>Playbook: AI’s External Memory</h4><p>A playbook is <strong>structured knowledge persisted across sessions</strong>:</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># [Domain] Playbook</span></span><br><span class="line"></span><br><span class="line"><span class="section">## Patterns</span></span><br><span class="line">Knowledge about how things work here.</span><br><span class="line"></span><br><span class="line"><span class="section">## Rules</span></span><br><span class="line">Things that must or must never be done.</span><br><span class="line"></span><br><span class="line"><span class="section">## Edge Cases</span></span><br><span class="line">Exceptions discovered the hard way.</span><br><span class="line"></span><br><span class="line"><span class="section">## Mistakes Log</span></span><br><span class="line">What went wrong and how we prevent it now.</span><br></pre></td></tr></table></figure><p>When AI reads this file at the start of a session, it doesn’t start from zero – it starts from the accumulated wisdom of all previous sessions.</p><p>When AI writes to this file at the end of a session, it hasn’t just completed a task – it has made the next task easier.</p><p><strong>The playbook is the compounding mechanism.</strong></p><h2 id="Looking-Ahead"><a href="#Looking-Ahead" class="headerlink" title="Looking Ahead"></a>Looking Ahead</h2><h3 id="Within-One-Year-Programmers-Will-Be-Out-of-a-Job"><a href="#Within-One-Year-Programmers-Will-Be-Out-of-a-Job" class="headerlink" title="Within One Year: Programmers Will Be Out of a Job"></a>Within One Year: Programmers Will Be Out of a Job</h3><p>This isn’t alarmist.</p><p>“Programmer” – the role whose primary job is translating requirements into code – will be fully replaced by AI.</p><p>Think about it:</p><ul><li>Writing CRUD endpoints? Claude Code handles it in minutes</li><li>Writing unit tests? AI is more thorough than most humans</li><li>Implementing design mockups? AI can look at the image and write code</li><li>Debugging common errors? AI reads stack traces faster than any junior</li></ul><p>These tasks share a common trait: <strong>clear boundaries, verifiable outcomes</strong>. Exactly the conditions for compounding AI.</p><p>And AI doesn’t need rest, doesn’t get bored with repetitive work, doesn’t lose focus on Friday afternoon.</p><p>One Staff Engineer paired with AI can produce the output of what used to take a small team. This means market demand for “people who can write code” will drop sharply.</p><p>But note: I said “Programmer,” not “Engineer.”</p><h3 id="Within-Two-Years-Software-Engineer-Will-Become-History"><a href="#Within-Two-Years-Software-Engineer-Will-Become-History" class="headerlink" title="Within Two Years: Software Engineer Will Become History"></a>Within Two Years: Software Engineer Will Become History</h3><p>What are the core skills of a “Software Engineer”?</p><ul><li>Understanding requirements, designing solutions</li><li>Weighing trade-offs, making technical decisions</li><li>Writing code, maintaining systems</li><li>Debugging issues, optimizing performance</li></ul><p>Two years from now, how much of this will AI still be unable to do?</p><p>Designing solutions? AI already proposes multiple architecture options with pros&#x2F;cons analysis.<br>Technical decisions? With codebase context, AI’s judgment keeps improving.<br>Writing code? Already covered.<br>Debugging? AI reads logs, metrics, and performs root cause analysis – possibly better than most humans.</p><p>The only thing AI can’t yet do well is <strong>cross-system judgment</strong> – decisions that require understanding the business, the organization, the people.</p><p>But those skills aren’t traditionally called “Software Engineering.” They’re called “Product Thinking” or “Tech Leadership.”</p><p>My prediction: within two years, existing systems will begin to be rewritten by AI at massive scale. Not because AI writes better code, but because AI can rewrite while learning, creating compound growth. Legacy systems – those without playbooks, without structured knowledge, without feedback loops – will become increasingly unmaintainable.</p><p><strong>A new system with AI augmentation and continuously compounding knowledge, vs. a legacy system weighed down by tech debt where all context lives in people’s heads. Who wins?</strong></p><h3 id="The-Way-Forward-for-Programmers"><a href="#The-Way-Forward-for-Programmers" class="headerlink" title="The Way Forward for Programmers"></a>The Way Forward for Programmers</h3><p>In the AI era, what’s valuable isn’t “knowing how to code” but:</p><ol><li><p><strong>The ability to define problems</strong>: No matter how powerful AI gets, someone needs to tell it what problem to solve. Turning vague business requirements into clear task definitions – that’s something AI can’t do.</p></li><li><p><strong>The ability to build feedback loops</strong>: Knowing how to design observable outcomes, how to structure knowledge, how to enable compounding growth in AI systems. This is a new kind of engineering skill.</p></li><li><p><strong>The ability to think across systems</strong>: Understanding how a change ripples through an entire ecosystem, understanding the business reasoning behind technical decisions. This requires experience and judgment that AI can’t yet replicate.</p></li><li><p><strong>The ability to collaborate with AI</strong>: Knowing when to let AI do the work and when to do it yourself; knowing how to give AI good prompts and how to review its output; knowing how to accumulate knowledge so AI keeps getting better.</p></li></ol><p>Programmers won’t vanish, but they’ll transform. From “people who write code” to “people who direct AI to write code.”</p><p>Just as photographers weren’t replaced by digital cameras but adapted to them; just as accountants weren’t replaced by Excel but used it for more sophisticated analysis.</p><p><strong>The tools change, but the people who solve problems remain.</strong></p><hr><p>I put a <code>CLAUDE.md</code> in the <a href="https://github.com/johnsonlee/graphite">Graphite</a> project, documenting architecture decisions and gotchas. Every time Claude Code helps me modify code, I update this file.</p><p>A month from now, its understanding of this project may be deeper than a colleague I’d pull in temporarily.</p><p>That’s the power of compounding.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;When I was working on &lt;a href=&quot;https://github.com/johnsonlee/booster&quot;&gt;Booster&lt;/a&gt;, I wanted to build a dataflow analysis framework, but</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="AI" scheme="https://johnsonlee.io/tags/AI/"/>
    
    <category term="Claude" scheme="https://johnsonlee.io/tags/Claude/"/>
    
    <category term="Career" scheme="https://johnsonlee.io/tags/Career/"/>
    
    <category term="Programming" scheme="https://johnsonlee.io/tags/Programming/"/>
    
  </entry>
  
  <entry>
    <title>A Brief Pause to Go the Distance</title>
    <link href="https://johnsonlee.io/2026/01/10/a-brief-break-to-go-the-distance.en/"/>
    <id>https://johnsonlee.io/2026/01/10/a-brief-break-to-go-the-distance.en/</id>
    <published>2026-01-10T16:00:00.000Z</published>
    <updated>2026-01-10T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Every Saturday morning I take my son to Banpo Stadium for football practice. Recently, due to Winter Break, he had two weeks off – hadn’t touched a ball the entire time. I figured all that progress had gone to waste. During the break, I kept thinking those two idle weeks had undone all the prior effort. There’s an old saying from my hometown: “Three days without practice, and you can’t even hit a cow.” So I’d already set my expectations: once he stepped on the pitch, the old problems would resurface.</p><h2 id="A-Pleasant-Surprise"><a href="#A-Pleasant-Surprise" class="headerlink" title="A Pleasant Surprise"></a>A Pleasant Surprise</h2><p>At the stadium, the coach began warm-ups with my son in the cold wind. I seized the chance to grab a coffee – we’d rushed out that morning without breakfast.</p><p>By the time I returned with my cup, they’d already started proper drills. I sat on a nearby bench, braving the elements, watching his every move. The kid’s footwork was flowing and smooth – nothing like what I’d expected. As the saying goes, “After three days apart, one must take a fresh look.” He’d been away from the coach for a full month and hadn’t practiced at all, yet here he was, performing better than before.</p><p>At first I thought it might be my imagination, or a one-off burst of form. The coach seemed just as surprised – praising him non-stop while asking, “Can you do that again?” After watching him deliver consistently, I was certain: this wasn’t a fluke. This was his real level now.</p><h2 id="A-Pause-to-Better-Hit-the-Target"><a href="#A-Pause-to-Better-Hit-the-Target" class="headerlink" title="A Pause to Better Hit the Target"></a>A Pause to Better Hit the Target</h2><p>The last drill before class ended was a combined exercise – dribbling through defenders, then changing direction to shoot. Over several rounds, the first portion went well each time, but the final shot kept going wrong: either the ball ran away too fast so his foot couldn’t connect with power, or his angle wasn’t adjusted in time. Accuracy had plenty of room for improvement.</p><p>Seeing this, the coach kept repeating:</p><blockquote><p>Before you shoot, slow the ball down. Give your body a moment to find the right angle and the right force. If the ball is moving too fast, your body can’t keep up. The shot will either go too high or too wide.</p></blockquote><p>Sure enough, following the coach’s advice, his shooting accuracy improved noticeably.</p><p>It turns out a brief pause is how you better hit the target.</p><h2 id="A-Holiday-Where-“Nothing-Happened”"><a href="#A-Holiday-Where-“Nothing-Happened”" class="headerlink" title="A Holiday Where “Nothing Happened”"></a>A Holiday Where “Nothing Happened”</h2><p>After class, I chatted with the coach about my son’s performance. The coach was just as surprised, but he understood. He offered an analogy: training is a lot like working out. The session itself is just consumption. What actually makes the body stronger is the rest that follows. If you train non-stop without pausing, muscles just accumulate fatigue. It’s during sleep that muscles recover and grow.</p><p>During the break, my son’s pace of life genuinely slowed down. No training schedule, nobody pushing him to improve. Mostly he just played, slept, and ate.</p><p>On the surface, it looked like a stretch of time where nothing happened. But looking back now, that blank space gave him a chance to recalibrate. The things he’d practiced before but hadn’t fully internalized weren’t overwritten by new material. Instead, as everything slowed down, those lessons quietly became his own.</p><p>Just like the pause before a shot – it looks like a stop, but it’s really preparation for what comes next.</p><h2 id="Closing-Thoughts"><a href="#Closing-Thoughts" class="headerlink" title="Closing Thoughts"></a>Closing Thoughts</h2><p>In that moment, it struck me: life is no different. If you keep charging forward without ever pausing, it looks like hard work, but you risk burning out early. Those who truly go the distance tend to know when to slow down and when to hold steady.</p><p>A brief pause isn’t a step backward. It’s just finding your footing before moving forward again.</p><p>Some “slowness” isn’t wasted time – it’s how you take the next step further.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Every Saturday morning I take my son to Banpo Stadium for football practice. Recently, due to Winter Break, he had two weeks off –</summary>
        
      
    
    
    
    <category term="Life" scheme="https://johnsonlee.io/categories/life/"/>
    
    
    <category term="Korea" scheme="https://johnsonlee.io/tags/Korea/"/>
    
    <category term="Seoul" scheme="https://johnsonlee.io/tags/Seoul/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
  </entry>
  
  <entry>
    <title>短暂的停顿，是为了走得更远</title>
    <link href="https://johnsonlee.io/2026/01/10/a-brief-break-to-go-the-distance/"/>
    <id>https://johnsonlee.io/2026/01/10/a-brief-break-to-go-the-distance/</id>
    <published>2026-01-10T16:00:00.000Z</published>
    <updated>2026-01-10T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>每周六早上都要送儿子去 Banpo 运动场去练习足球，最近因为 Winter Break 放了两周假，足球都没碰过，我想大概是荒废了。休假的时候还想着，这荒废的两周把之前的努力都给抵消掉了。家乡有句老话「三天不打鸟，牯牛都射不倒」，所以我心里其实已经有了预期：一上场又会暴露一堆毛病。</p><h2 id="出乎意料"><a href="#出乎意料" class="headerlink" title="出乎意料"></a>出乎意料</h2><p>到了运动场，教练带着儿子在寒风中开始了热身，趁着这个机会，我去买杯咖啡，早上仓促出门，早餐还没来得及吃。</p><p>等我端着咖啡回来的时候，他们已经开始正式的训练了，附近的长凳上，一边风餐露宿，一边观察着儿子的一举一动。看着这小子的动作如行云流水，嘿，咋跟我想的完全不一样了，有句话叫「士别三日当刮目相看」，但这小子虽然是教练别了有一个月了，但也从来没练过呀。</p><p>我一开始还以为是自己的错觉或者是他单次练习发挥超常，估计教练也有点不敢相信，一边赞不绝口，一边说「你能再来一遍吗？」，在看他反复稳定发挥之后，我确定，这不是我的错觉，也不是发挥超常，这就是他的真实水平。</p><h2 id="停顿是为了更好的达成目标"><a href="#停顿是为了更好的达成目标" class="headerlink" title="停顿是为了更好的达成目标"></a>停顿是为了更好的达成目标</h2><p>临下课前的最后一项内容是综合训练 ———— 从带球对抗到改变路线去射门，几轮下来，每轮的前大半段都挺不错，但到最后一脚射门的时候，不是球跑太快，脚没跟导致射出去的球没有力度，要么就是角度还没得及调整好，总之，准确率还有很大提升的空间。</p><p>教练见状，反复强调道：</p><blockquote><p>在射门之前，先把球的速度降下来，同时给身体一点时间来调整到最佳角度和力度。球一旦跑得太快，身体就很难跟上。结果往往不是打高了，就是打偏了。</p></blockquote><p>果不其然，按照教练的建议，射门的准确度有了显著的提升。</p><p>原来，短暂的停顿，是为了更好的达成目标。</p><h2 id="什么也没做的假期"><a href="#什么也没做的假期" class="headerlink" title="什么也没做的假期"></a>什么也没做的假期</h2><p>下课后，和教练聊起刚才儿子的场上的表现，教练也很是诧异，但他也表示理解，并举例道：训练其实很像健身。练的时候只是消耗，真正让身体变强的，是训练之后的休息。如果一直练，不停下来，肌肉反而会越来越疲惫，而睡觉的时候，正是肌肉休息和生长的时候。</p><p>假期里，儿子的生活节奏确实慢了下来。没有训练计划，也没有人盯着他要进步。更多时候就是玩、睡、吃。</p><p>从表面看，那是一段什么都没发生的时间。可现在回头看，那段空白，反而给了他一次调整的机会。那些之前练过、却还没完全消化的东西，没有被新的内容覆盖，而是在慢下来的过程中，慢慢变成了自己的。</p><p>就像射门前那一下，看起来是停顿，其实是在为后面的动作做准备。</p><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>那一刻，我似乎明白了，人生何尝不是如此。如果一直拼命赶路，不给自己任何停顿，看起来很努力，但很容易提前透支。真正能走得远的，往往更懂得什么时候该慢一点，什么时候该稳住。</p><p>短暂的停顿，不是退后。它只是让你在继续向前之前，重新站稳。</p><p>有些“慢”，不是浪费，而是为了下一步，走得更远。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;每周六早上都要送儿子去 Banpo 运动场去练习足球，最近因为 Winter Break</summary>
        
      
    
    
    
    <category term="Life" scheme="https://johnsonlee.io/categories/life/"/>
    
    
    <category term="Korea" scheme="https://johnsonlee.io/tags/Korea/"/>
    
    <category term="Seoul" scheme="https://johnsonlee.io/tags/Seoul/"/>
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
  </entry>
  
  <entry>
    <title>Being a Mentor in the Age of AI</title>
    <link href="https://johnsonlee.io/2026/01/01/mentor-in-the-age-of-ai.en/"/>
    <id>https://johnsonlee.io/2026/01/01/mentor-in-the-age-of-ai.en/</id>
    <published>2026-01-01T01:00:00.000Z</published>
    <updated>2026-01-01T01:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>The day before Winter Holiday started, the Term 3 School Report came in. The moment I saw it, I was furious. Standing in minus-10-degree wind, I chain-smoked three cigarettes. Back home, I handed the report to my wife. She glanced through it and said: “Looks fine.”</p><blockquote><p>Fine?</p></blockquote><p>If you only look at the report itself, nothing screams disaster – the comments are “proper,” the language is “polite.” But that’s exactly what’s dangerous in the AI era: the more polished the surface information, the easier it is to stop thinking.</p><p>So I pulled out last year’s final-term School Report and compared the two. The problems became glaring: Math and Chinese had dropped from Significant Above. Other subjects had slipped too.</p><p>That evening I called my son into the study and gave him a serious talk. Teary-eyed, he sat there. I asked: do you know what the problem is?</p><p>He wiped his tears and said timidly: Math and Chinese?</p><p>That answer made my heart sink – he saw the “result” but missed the “structure.”</p><blockquote><p>You have 30 minutes. Write down your current problems and solutions, like a report.</p></blockquote><p>Half an hour later, he handed me a sheet of paper: one line per subject, no bullet points, no structure, no logic, all run together.</p><p>I cleared my throat:</p><blockquote><p>Two big problems here.</p><ul><li>Story Telling: Writing isn’t about filling space. It’s about expressing ideas clearly. How is anyone supposed to read this wall of text?</li><li>Insight: You’re looking at the problem too narrowly. Let me tell you what your real problems are.</li></ul></blockquote><h2 id="What’s-the-Core-Competitive-Edge-for-Students-in-the-AI-Era"><a href="#What’s-the-Core-Competitive-Edge-for-Students-in-the-AI-Era" class="headerlink" title="What’s the Core Competitive Edge for Students in the AI Era?"></a>What’s the Core Competitive Edge for Students in the AI Era?</h2><p>Traditional education identified “core competencies” long ago: memorization, test-taking, producing standard answers, following procedures…</p><p>The problem: AI is crushing all of these at exponential speed.</p><p>When “solving problems” becomes a button, “writing essays” becomes a template, and “doing research” becomes a search box – grinding harder on these things is just competing with GPUs on endurance.</p><p>Strip away the competencies that will foreseeably be replaced. What’s left, in my view, comes down to three things:</p><h3 id="Story-Telling-The-Top-Productive-Force-of-the-AI-Era"><a href="#Story-Telling-The-Top-Productive-Force-of-the-AI-Era" class="headerlink" title="Story Telling: The Top Productive Force of the AI Era"></a>Story Telling: The Top Productive Force of the AI Era</h3><p>I put story telling first not because “liberal arts matter” but because it’s fundamentally a composite skill:</p><ul><li>Language ability (clear expression)</li><li>Communication ability (making others understand and want to listen)</li><li>Social ability (understanding people and relationships)</li><li>Influence and leadership (getting people to follow you)</li></ul><p>More critically, in the AI era, story telling is an accelerator for prompt engineering.</p><p>Same model, same tools – the gap often isn’t about “understanding AI,” but about whether you can articulate needs clearly, specify goals precisely, state constraints fully, and provide reusable context.</p><p>If you can’t tell stories, your prompts will always be: “Help me write…”</p><p>If you can, your prompts read like a good director’s brief: character, motivation, conflict, pacing, style, boundary conditions – sentence by sentence, steering the model exactly where it needs to go.</p><h3 id="Math-The-Foundation-of-Computation-and-Abstraction"><a href="#Math-The-Foundation-of-Computation-and-Abstraction" class="headerlink" title="Math: The Foundation of Computation and Abstraction"></a>Math: The Foundation of Computation and Abstraction</h3><p>Math isn’t about test scores. It’s about training a capability: abstraction, modeling, reasoning, verification.</p><p>AI can do the calculations, but it can’t replace your judgment on “should we calculate,” “what’s the right approach,” and “can we trust the result.”</p><p>The most valuable people in the future won’t be “those who can use tools” but “those who know what problem the tool is solving.”</p><h3 id="Computing-Programming-The-Handle-for-Wielding-Tools"><a href="#Computing-Programming-The-Handle-for-Wielding-Tools" class="headerlink" title="Computing &#x2F; Programming: The Handle for Wielding Tools"></a>Computing &#x2F; Programming: The Handle for Wielding Tools</h3><p>AI makes tools more powerful, but the threshold becomes deceptively strange: it looks like anyone can write code, yet nobody can build a system.</p><p>You can use AI to generate a script, but without a computing foundation, you can’t:</p><ul><li>Decompose problems</li><li>Organize data</li><li>Understand boundaries</li><li>Debug errors</li><li>Build maintainable structure</li></ul><p>You end up stuck at “copy-paste and pray it runs.”</p><h2 id="Understanding-the-Current-Problems"><a href="#Understanding-the-Current-Problems" class="headerlink" title="Understanding the Current Problems"></a>Understanding the Current Problems</h2><p>I told my son something blunt that day:</p><blockquote><p>Significant Above means it’s your competitive edge. And now, it’s gone.</p></blockquote><p>Many kids (and parents) treat the Report as a “scorecard.”</p><p>But in the AI era, a Report is more like a Competitiveness Dashboard: what matters isn’t any single score, but the trend of your capability curve.</p><h3 id="The-Vanishing-Competitive-Edge"><a href="#The-Vanishing-Competitive-Edge" class="headerlink" title="The Vanishing Competitive Edge"></a>The Vanishing Competitive Edge</h3><p>His answer “Math and Chinese” showed he only looked at the red text and bold font.</p><p>The truly alarming thing: what used to be a significant lead has suddenly become average.</p><p>Two possibilities:</p><ul><li>The prior lead was “coasting” (luck, foundation, teacher quality, test format)</li><li>After entering a new phase, the learning method didn’t level up, and peers started catching up</li></ul><p>There’s no “coasting” in the AI era. AI flattens basic-skill gaps fast. What remains is a battle of learning systems.</p><h3 id="The-Feedback-Loop-Is-Broken"><a href="#The-Feedback-Loop-Is-Broken" class="headerlink" title="The Feedback Loop Is Broken"></a>The Feedback Loop Is Broken</h3><p>Teacher comments keep mentioning “attitude,” but I’d translate that as: the feedback loop is broken.</p><ul><li>No goals (why am I doing this)</li><li>No feedback (how am I doing)</li><li>No correction (what’s wrong, how to fix it)</li><li>No retrospective (how to do better next time)</li></ul><p>So the kid defaults to the lowest-effort strategy – faking it. Yelling won’t fix this. It requires systematic rebuilding.</p><h2 id="Building-the-Feedback-Loop"><a href="#Building-the-Feedback-Loop" class="headerlink" title="Building the Feedback Loop"></a>Building the Feedback Loop</h2><h3 id="The-Underwhelming-AI-Coding-Class"><a href="#The-Underwhelming-AI-Coding-Class" class="headerlink" title="The Underwhelming AI Coding Class"></a>The Underwhelming AI Coding Class</h3><p>After half a year of online coding classes, I figured he could write something by now. I was planning to walk him through LeetCode, teach some data structures and algorithms. So I gave him the simplest problem:</p><blockquote><p>Find and print all even numbers in an array.</p></blockquote><p>He froze. Had no idea where to start.</p><p>Barely containing my frustration, I asked:</p><blockquote><p>What have you been learning in your weekly AI coding class?</p></blockquote><p>He said: “We used Python for image recognition and voice recognition, but everything was inside the teacher’s software. I’ve never written code in an editor (PyCharm).”</p><p>My reaction: we’re doomed.</p><p>Writing “fill-in-the-blank code” in a sandboxed environment doesn’t teach programming. It teaches button-clicking. That’s like learning to drive in a self-driving car for six months without touching the steering wheel.</p><p>So I told my wife: no more coding classes. I’m teaching him myself.</p><p>I started preparing lessons whenever I had time, and eventually put together an online deck: <a href="https://cs.johnsonlee.io/">https://cs.johnsonlee.io</a></p><p>Starting from zero, teaching real programming in a more engineering-oriented way to solve real-world problems.</p><p>I’ve watched plenty of kids’ coding videos online. Most start with Scratch or games. From where I stand: somewhat useful, but only somewhat.</p><p>Coding is the path you have to walk. Rather than spending tons of time learning Scratch’s “block syntax,” it’s better to start engaging with how the real world expresses things.</p><h3 id="A-Diary-Entry-That-Nearly-Did-Me-In"><a href="#A-Diary-Entry-That-Nearly-Did-Me-In" class="headerlink" title="A Diary Entry That Nearly Did Me In"></a>A Diary Entry That Nearly Did Me In</h3><p>His Chinese teacher had been saying his writing needed improvement, so I planned to have him write a weekly journal – in Chinese or English, either was fine.</p><p>Last weekend we went skiing, and he wrote a diary entry. The moment I read it, I nearly coughed up blood – pure play-by-play:</p><blockquote><p>Had breakfast, had lunch, did stuff in the afternoon, went home at night, the end.</p></blockquote><p>I said to him:</p><blockquote><p>Son, “diary” may literally mean a daily record, but do you think anyone wants to read a blow-by-blow account?<br>Think in reverse: what kind of content would people actually enjoy reading?<br>If it’s an exam, what makes a high-scoring essay? What are the criteria?</p></blockquote><p>I twisted the knife:</p><blockquote><p>Everyone eats breakfast. If what you write is as common as air, it gets ignored.<br>When you read other people’s work, what’s more interesting?<br>Something novel, something different from what everyone else writes – different experiences, different thoughts… Writing is storytelling.</p></blockquote><p>So he rewrote it following my guidance. You think that’s the end? The show was just getting started.</p><p>I had him open ChatGPT, paste both versions of the diary, and ask it to compare and critique them. When he saw the new version receive a much higher rating, he broke into a proud grin.</p><p>One of the things AI does best is serve as a child’s instant review panel. But the prerequisite: the child has to learn to write the “story” first.</p><h3 id="Mentor-vs-Classroom-Teacher"><a href="#Mentor-vs-Classroom-Teacher" class="headerlink" title="Mentor vs. Classroom Teacher"></a>Mentor vs. Classroom Teacher</h3><p>Though I teach my son coding, my real role is more like:</p><ul><li>Observing and identifying current problems – what’s primary, what’s secondary</li><li>Analyzing problems, identifying core competitive edges – what’s the actual winning factor</li><li>Building the feedback loop – how to keep getting stronger</li><li>Using AI to establish evaluation standards – what counts as good, what doesn’t</li><li>Constant supervision, fighting human nature: laziness, avoidance, procrastination, shortcuts</li></ul><h2 id="Closing-Thoughts"><a href="#Closing-Thoughts" class="headerlink" title="Closing Thoughts"></a>Closing Thoughts</h2><p>After that study-room talk, I took a step back and thought about it myself:</p><p>What I want isn’t for him to “bring his grades up this time.” I want him to spend the next three years building a set of capabilities that won’t become obsolete.</p><p>But the hardest part of passing on everything you know isn’t the method – it’s the pacing.</p><p>A child isn’t your project. He won’t ship on schedule just because you wrote the spec.</p><p>The reality is: you teach three times, he absorbs once. You reason with him, he reacts emotionally first. The more you push, the more he retreats.</p><p>So I set three ground rules for myself:</p><ul><li>Incremental progress: tackle one key point at a time, no grand overhauls</li><li>Let him participate in setting the rules: he’ll only maintain a system he helped design</li><li>Use AI for instant feedback, not as a substitute for thinking: AI is the mirror, not the crutch</li></ul><p>I’d love for him to get it sooner rather than later. But I also know that real growth is never a sprint – it’s a marathon.</p><p>After all, the prerequisite for “passing on everything you’ve learned” to your child is learning, first, not to treat him as an extension of yourself when he stumbles. And that might just be the first lesson of being a mentor in the age of AI.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;The day before Winter Holiday started, the Term 3 School Report came in. The moment I saw it, I was furious. Standing in minus-10-degree</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
  </entry>
  
  <entry>
    <title>AI 时代的 Mentor</title>
    <link href="https://johnsonlee.io/2026/01/01/mentor-in-the-age-of-ai/"/>
    <id>https://johnsonlee.io/2026/01/01/mentor-in-the-age-of-ai/</id>
    <published>2026-01-01T01:00:00.000Z</published>
    <updated>2026-01-01T01:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>就在放 Winter Holiday 的前一天，Term 3 的 School Report 下来了。看到 Report 的那一刻，我当场气炸，零下 10 度的寒风里，我连抽了 3 根烟。回家后我把报告递给老婆看，她看完冒出一句：「还行啊。」</p><blockquote><p>还行？</p></blockquote><p>如果只看报告本身，确实看不出特别明显的问题：字都挺“正”，评价也挺“礼貌”。但这恰恰是 AI 时代最危险的地方 —— 表面信息越充分，越容易让人放弃思考。</p><p>于是我翻出了上个学年最后一个学期的 School Report 一对比，问题瞬间变得刺眼：Math 和 Chinese 从 Significant Above 掉下来了。其他项目也有不同程度下滑。</p><p>那天我把儿子单独叫进书房，一顿训下来，他泪眼汪汪。我问他：你知道问题在哪吗？</p><p>他擦擦眼泪，怯怯地说：Math 和 Chinese？</p><p>听到这句，我心里一阵哇凉 —— 他只看到了“结果”，但没看到“结构”。</p><blockquote><p>给你半小时，把你目前存在的问题和解决办法，像写 Report 一样写下来。</p></blockquote><p>半小时后，他交上来一张纸：每个科目一行字，连在一起写，没分点、没结构、没逻辑。</p><p>我清了清嗓子：</p><blockquote><p>你这玩意儿有两个大问题</p><ul><li>Story Telling：写作不是把字写满，是把想法表达清楚。你这一满版让人怎么看？</li><li>洞察力：你看问题太片面。我来告诉你，你真正的问题是什么。</li></ul></blockquote><h2 id="作为-AI-时代的学生，什么才是核心竞争力？"><a href="#作为-AI-时代的学生，什么才是核心竞争力？" class="headerlink" title="作为 AI 时代的学生，什么才是核心竞争力？"></a>作为 AI 时代的学生，什么才是核心竞争力？</h2><p>传统教育早就把“核心竞争力”识别得差不多了：记忆力、刷题能力、标准答案输出能力、按流程执行能力……<br>问题是：这些能力正在被 AI 以指数级碾压。</p><p>当“会做题”变成了按钮，“会写作文”变成了模板，“会查资料”变成了搜索框——你再卷这些，只是在和 GPU 比耐力。</p><p>把那些可预见会被替代的核心竞争力剔除掉，剩下的，我认为就三样：</p><h3 id="Story-Telling：AI-时代的第一生产力"><a href="#Story-Telling：AI-时代的第一生产力" class="headerlink" title="Story Telling：AI 时代的第一生产力"></a>Story Telling：AI 时代的第一生产力</h3><p>我把 story telling 放在首位，不是因为“文科重要”，而是因为它本质上是一种综合能力：</p><ul><li>语言能力（表达清晰）</li><li>沟通能力（让别人听懂、愿意听）</li><li>社会能力（理解人、理解关系）</li><li>影响力与领导力（能让人跟你走）</li></ul><p>更关键的是，在 AI 时代，Story telling 是 prompt engineering 的加速器。</p><p>同样一个模型，同样的工具，差距往往不在“懂不懂 AI”，而在于你能不能把需求讲清楚、把目标讲具体、把约束讲完整、把上下文讲得可复用。</p><p>你不会讲故事，你的 prompt 就永远是：“帮我写一下……”</p><p>你会讲故事，你的 prompt 会像一个好导演：人物、动机、冲突、节奏、风格、边界条件，一句话一句话把模型逼到该去的地方。</p><h3 id="Math：计算与抽象的地基"><a href="#Math：计算与抽象的地基" class="headerlink" title="Math：计算与抽象的地基"></a>Math：计算与抽象的地基</h3><p>数学不是为了考试分数，是为了训练一种能力：抽象、建模、推理、验证。</p><p>AI 可以帮你算，但它替代不了你判断“该不该算”“怎么算才对”“结果是否可信”。</p><p>而未来最值钱的人，往往不是“会用工具的人”，而是“知道工具在解决什么问题的人”。</p><h3 id="Computing-Programming：驾驭工具的抓手"><a href="#Computing-Programming：驾驭工具的抓手" class="headerlink" title="Computing &#x2F; Programming：驾驭工具的抓手"></a>Computing &#x2F; Programming：驾驭工具的抓手</h3><p>AI 让工具更强，但也让门槛变得更诡异：看起来谁都能写代码，实际上谁都写不出来系统。</p><p>你可以用 AI 生成一段脚本，但你没有 computing 基础，就无法：</p><ul><li>拆解问题</li><li>组织数据</li><li>理解边界</li><li>调试错误</li><li>形成可维护的结构</li></ul><p>最终只能停留在“复制粘贴”与“祈祷能跑”的阶段。</p><h2 id="理解当下的问题和挑战"><a href="#理解当下的问题和挑战" class="headerlink" title="理解当下的问题和挑战"></a>理解当下的问题和挑战</h2><p>我当时跟儿子说了一句很扎心的话：</p><blockquote><p>Significant Above 意味着什么？意味着这是你的核心竞争力。<br>而现在，它不复存在了。</p></blockquote><p>很多孩子（以及很多家长）会把 Report 当成“成绩单”。</p><p>但在 AI 时代，Report 更像是一张 Competitiveness Dashboard：你要看的不是某一次的分数，而是你能力曲线的趋势。</p><h3 id="核心竞争力消失"><a href="#核心竞争力消失" class="headerlink" title="核心竞争力消失"></a>核心竞争力消失</h3><p>他回答“Math 和 Chinese”，说明他只会盯着红字和粗体。</p><p>真正可怕的是：过去能显著领先的东西，突然变成普通水平。</p><p>这意味着两种可能：</p><ul><li>要么你之前的领先是“吃老本”（运气、基础、老师、题型）</li><li>要么你进入新阶段后，学习方法没升级，开始被同龄人反超</li></ul><p>AI 时代没有“吃老本”这回事。因为 AI 会把“基础技能的差距”快速抹平，剩下的比拼是：学习系统。</p><h3 id="Feedback-Loop-断了"><a href="#Feedback-Loop-断了" class="headerlink" title="Feedback Loop 断了"></a>Feedback Loop 断了</h3><p>老师评语总说“态度”，但我更愿意把它翻译成：feedback loop 断了。</p><ul><li>没有目标（我为什么要做）</li><li>没有反馈（我做得好不好）</li><li>没有纠偏（我哪里错、怎么改）</li><li>没有复盘（下次怎么更好）</li></ul><p>于是孩子会选择最省力的策略 —— 糊弄过去。这不是骂两句能解决的，这需要系统性重建。</p><h2 id="搭建-Feedback-Loop"><a href="#搭建-Feedback-Loop" class="headerlink" title="搭建 Feedback Loop"></a>搭建 Feedback Loop</h2><h3 id="未及预期的-AI-编程课"><a href="#未及预期的-AI-编程课" class="headerlink" title="未及预期的 AI 编程课"></a>未及预期的 AI 编程课</h3><p>上了大半年编程网课，我以为他至少能写点东西了。我想着带他刷 LeetCode，教他点数据结构和算法。于是给他出了个最简单的题：</p><blockquote><p>从数组中查找偶数并打印出来</p></blockquote><p>结果他愣在原地，无从下手。</p><p>我强憋着火问：</p><blockquote><p>你每周学 AI 编程都学了些啥？</p></blockquote><p>他说：“学了用 python 图片识别、声音识别啥的，都是在老师给的软件里写代码，没在编辑器（PyCharm）里写过。”</p><p>我心想：真是完犊子了。</p><p>你在一个封闭环境里“填空式写代码”，学到的不是 programming，是“点按钮”。这就像你在自动驾驶里学开车，学了半年，连方向盘都没摸过。</p><p>所以我跟老婆说：后面的编程课不报了，我要亲自教。</p><p>于是有时间就备课，后来干脆搞了个在线 PPT：<a href="https://cs.johnsonlee.io/">https://cs.johnsonlee.io</a></p><p>从 0 到 1 开始，用更接近工程化的方式训练真正的编程，去解决现实生活中真正的问题</p><p>我也看了网上很多儿童编程视频，大多从 Scratch 或者游戏开始。从我的角度看：有点用，但也仅仅是有点用。</p><p>Coding 是必经之路。与其把大量时间花在理解 Scratch 的“积木语法”，不如直接开始接触真实世界的表达方式。</p><h3 id="一篇日记把我差点送走"><a href="#一篇日记把我差点送走" class="headerlink" title="一篇日记把我差点送走"></a>一篇日记把我差点送走</h3><p>之前中文课老师一直反馈他写作有待提高，我就计划让他每周写篇周记，无论是中文还是英文，都可以。</p><p>上周末去滑雪，他写了一篇日记。我看到那篇作品的那一刻，一口老血差点喷出来 —— 纯纯流水账：</p><blockquote><p>早上吃了什么，中午吃了什么，下午干了什么，晚上回家了，结束。</p></blockquote><p>我对他说：</p><blockquote><p>儿呀，日记虽然顾名思义叫日记，但你觉得记流水账的文字会有人看吗？<br>你得运用逆向思维：写什么样的内容大家才爱看？<br>如果是考试，那就想想什么样的作文才算高分作文，高分作文的评判标准是什么。</p></blockquote><p>我又补了一刀：</p><blockquote><p>早餐谁不吃啊？如果你写的内容像空气一样随处可见，就会被忽略。<br>你读别人的作品时，什么更有意思？<br>新颖的、和大多数人不一样的 —— 不一样的经历，不一样的思想……写作就是讲故事。</p></blockquote><p>于是他按我的思路重写了一篇。你以为这就完了？好戏才刚刚开始。</p><p>我让他打开 ChatGPT，把前后两篇日记丢进去，让 ChatGPT 对比并点评。当他看到新版本获得更高评价的时候，露出了得意的笑容。</p><p>AI 最适合做的事情之一，是成为孩子的即时评审团。但前提是：孩子得先学会把“故事”写出来。</p><h3 id="Mentor-vs-授课老师"><a href="#Mentor-vs-授课老师" class="headerlink" title="Mentor vs 授课老师"></a>Mentor vs 授课老师</h3><p>虽然我也教儿子编程，但我更多的是：</p><ul><li>观察和发现目前存在的问题 —— 什么是主要问题，什么是次要问题</li><li>分析问题，识别核心竞争力 —— 到底靠什么赢</li><li>搭建 feedback loop —— 怎么持续变强？</li><li>利用 AI 建立评价标准 —— 什么叫好？什么叫不行？</li><li>时刻监督，对抗人性：懒惰、逃避、拖延、投机</li></ul><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>我那天在书房训完他，其实自己也冷静下来想了想：</p><p>我想要的不是他“这次把分数提上来”，而是他在未来 3 年里，能拥有一套不会过时的能力。</p><p>但问题在于 —— 把毕生功力倾囊相授这件事，最难的不是方法，是节奏。</p><p>孩子不是你的项目，不会因为你写了 PRD 就按期上线。</p><p>更现实的情况是：你教三遍，他听一遍；你讲道理，他先情绪；你越急，他越逃。</p><p>所以我给自己定了三条原则：</p><ul><li>循序渐进：一次只抓一个关键点，不搞“大而全”的改造</li><li>让他自己参与制定规则：他参与的系统，他才愿意维护</li><li>用 AI 做即时反馈，而不是用 AI 代替思考：让 AI 当镜子，不当拐杖</li></ul><p>我当然希望他能早点开窍，但我也知道，真正的成长从来不是一场冲刺，而是一场马拉松。</p><p>毕竟，能把“自己的毕生所学”传给孩子的前提是 —— 你得先学会在他跌跌撞撞的时候，别把他当成你自己的延长线。而这，可能才是 AI 时代成为 Mentor 的第一课。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;就在放 Winter Holiday 的前一天，Term 3 的 School Report 下来了。看到 Report 的那一刻，我当场气炸，零下 10 度的寒风里，我连抽了 3</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
  </entry>
  
  <entry>
    <title>Up 30% in Two Years -- What&#39;s Propping Up Korean Housing Prices?</title>
    <link href="https://johnsonlee.io/2025/12/24/what-supports-korean-housing-prices.en/"/>
    <id>https://johnsonlee.io/2025/12/24/what-supports-korean-housing-prices.en/</id>
    <published>2025-12-24T22:00:00.000Z</published>
    <updated>2025-12-24T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>My lease is up in a few months. The three-bedroom I’m in now isn’t bad, honestly – good sunlight, easy commute, plenty of friends nearby. After living here a while, I’ve even grown a bit attached. But the kid is getting bigger, and the space feels increasingly cramped. I started thinking about upgrading to a four-bedroom. Contacted the agent, laid out the requirements, made the budget crystal clear. Two weeks later, the agent finally came back with two listings. One look at the asking prices and my jaw dropped – both were way over budget, and one had just jumped 5% recently.</p><p>What’s even more absurd: the place I’m renting now had a monthly rent of 4.6 million won two years ago. Today, the lowest listing on the market is 6 million. But wait – isn’t Korea’s birth rate in freefall? The population is visibly aging. So where’s this housing market getting its confidence?</p><h2 id="Some-Everyday-Observations"><a href="#Some-Everyday-Observations" class="headerlink" title="Some Everyday Observations"></a>Some Everyday Observations</h2><p>Starting around mid-last year, I kept hearing colleagues complain about finding a place to live.</p><p>Not buying – renting.</p><p>Monthly rents had gotten out of hand. Neighborhoods they knew well were no longer affordable at the old budget. People were being pushed further and further out.</p><p>Meanwhile, every time I walked down Gangnam-daero and saw the crowds on both sides, they were dotted with empty storefronts. It made me wonder – is Korea’s economy really doing okay?</p><p>On that same Gangnam-daero, empty shops were visibly multiplying. Yet at the same time, Olive Young was opening new locations at a pace you could practically watch in real time – two three-story stores within 500 meters on the same side of the street.</p><p>And then there were the bank deposit rates, a bit above 4%, compared to 1% back home in China. Hard not to get excited.</p><p>The world felt a bit schizophrenic.</p><p>It got me thinking:</p><blockquote><p>What kind of economy is Korea, really?<br>And what exactly is holding up these seemingly “logic-defying” housing prices?</p></blockquote><h2 id="Starting-from-Housing-Following-the-Thread"><a href="#Starting-from-Housing-Following-the-Thread" class="headerlink" title="Starting from Housing, Following the Thread"></a>Starting from Housing, Following the Thread</h2><p>If you only look at housing prices, it’s easy to conclude “bubble.”</p><p>But once you start digging into Korea’s housing market, one keyword keeps coming up – household debt ratio.</p><p>Compared to China and Japan, Korea’s household debt ratio has been extremely high for a long time. A massive chunk of it is housing debt. And at the core of that mechanism is an almost uniquely Korean system: jeonse (full-deposit rental).</p><p>Jeonse is essentially a historical artifact.</p><p>Go back further on the timeline – starting with the “Miracle on the Han River,” Korea went through an extremely long period of high-speed inflation. Nominal interest rates weren’t low, but real interest rates were near zero or even negative for years. In that environment, cash was depreciating. Debt was actually a “good thing.” And real estate naturally became the optimal play.</p><p>So:</p><ul><li>Landlords collected massive deposits through jeonse</li><li>Deposits were reinvested into the market or other properties</li><li>Tenants bore the inflation cost</li><li>The entire system ran coherently under “high inflation + low real interest rates”</li></ul><p>This model ran for decades.</p><p>It wasn’t until after 2019, when the pandemic and the global rate-hike cycle hit in succession, that Korea truly transitioned from the long era of low rates into an entirely different world.</p><h2 id="What-Is-Jeonse"><a href="#What-Is-Jeonse" class="headerlink" title="What Is Jeonse?"></a>What Is Jeonse?</h2><p>If you’ve never lived in Korea, you’d probably struggle to understand jeonse.</p><p>In short, jeonse doesn’t mean “rent-free.” You pay a massive lump-sum deposit upfront, live there for two years paying almost no monthly rent, and the landlord returns the full deposit when the lease ends.</p><p>The deposit is typically 50% to 70% of the property’s value. In Seoul, where prices are sky-high, that easily runs into billions of won.</p><p>On the surface, it seems unfair to the tenant – your money is locked up with the landlord for two years, earning no interest.</p><p>But for a long time, the system was a “reasonable” choice for both sides:</p><ul><li>For landlords: the deposit was cheap capital to reinvest – in more property, stocks, or lending. In an era of high inflation and low real rates, it was essentially free money.</li><li>For tenants: instead of paying monthly rent that kept rising, you locked in your housing cost in one shot and handed the inflation risk to the landlord.</li></ul><p>Because of jeonse, Korea’s housing market and rental market were deeply intertwined from the start.</p><p>Housing prices rise -&gt; deposits rise in lockstep -&gt; landlord debt ratios climb -&gt; the entire society becomes increasingly dependent on “property + leverage.”</p><p>The catch: all of this only works under one condition – interest rates can’t get too high.</p><p>And when that premise breaks, jeonse stops being a stabilizer and becomes a risk amplifier.</p><h2 id="From-Jeonse-to-Ban-Jeonse-Half-Deposit-Rental"><a href="#From-Jeonse-to-Ban-Jeonse-Half-Deposit-Rental" class="headerlink" title="From Jeonse to Ban-Jeonse (Half-Deposit Rental)"></a>From Jeonse to Ban-Jeonse (Half-Deposit Rental)</h2><p>When jeonse became dangerous in a high-rate environment, the market didn’t switch straight to pure monthly rent. Instead, it moved to a transitional form – ban-jeonse.</p><p>Ban-jeonse, as the name implies, sits between jeonse and monthly rent:</p><ul><li>The deposit isn’t as absurdly large – typically 20% to 40% of the property’s value</li><li>But you also pay a non-trivial monthly rent</li><li>In essence, it’s a hybrid of deposit + cash flow</li></ul><p>This form didn’t emerge from policy design. It was the market’s organic evolution.</p><p>For landlords:</p><ul><li>A lower deposit means less cash pressure when the lease expires</li><li>Stable monthly rent can cover interest costs and even become the primary income stream</li></ul><p>For tenants:</p><ul><li>Coughing up billions in deposit is no longer realistic</li><li>Even though monthly rent is higher, the pressure gets spread across monthly cash flow</li></ul><p>So the reality is – deposits haven’t dropped by much, but monthly rents have surged.</p><p>The progression from jeonse to ban-jeonse to monthly rent isn’t a housing “upgrade.” It’s the entire real estate system being forced into a risk redistribution under the constraints of high interest rates and high debt.</p><p>Landlords are no longer willing to bear the risk of a lump-sum refund at lease end. Banks don’t want to see even higher leverage. Naturally, the pressure flows to the party with the least bargaining power – tenants.</p><h2 id="What-Really-Hurts-Isn’t-the-Interest-Rate"><a href="#What-Really-Hurts-Isn’t-the-Interest-Rate" class="headerlink" title="What Really Hurts Isn’t the Interest Rate"></a>What Really Hurts Isn’t the Interest Rate</h2><p>Many assume the housing problem comes from “rates being too high.”</p><p>But for Korean property investors, the real pain isn’t the extra monthly interest. It’s the lump-sum deposit refund due when a lease expires.</p><p>In a high-rate environment:</p><ul><li>Deposits are no longer “useful” as cheap capital</li><li>Reinvestment returns have dropped</li><li>The margin of safety on cash flow is shrinking fast</li></ul><p>When a jeonse contract expires, the sudden massive payout is like a long needle piercing through otherwise smooth cash flow – once pricked, the shadow lingers.</p><h2 id="What’s-Actually-Holding-Up-Korean-Housing-Prices"><a href="#What’s-Actually-Holding-Up-Korean-Housing-Prices" class="headerlink" title="What’s Actually Holding Up Korean Housing Prices?"></a>What’s Actually Holding Up Korean Housing Prices?</h2><p>Breaking the logic down:</p><ol><li>Household housing debt is dangerously high – systemic risk is real</li><li>The government can’t afford to let more capital flood into housing</li><li>They maintain relatively high interest rates to curb new leverage</li><li>Jeonse becomes dangerous in a high-rate environment</li><li>Landlords start chasing stable cash flow</li><li>Deposits drop, but monthly rents surge</li><li>Risk transfers from landlords to tenants</li></ol><p>So you see what appears to be a “magical” result:</p><ul><li>Housing prices are rising</li><li>Deposits are falling</li><li>Monthly rents are skyrocketing</li></ul><p>But the truth is, it’s not that homes are “worth more.”</p><p>It’s that the entire market has shifted from large one-time deposits to long-term, stable, predictable cash flow.</p><p>At the end of the day, the wool still comes from the sheep.</p><h2 id="Is-Korean-Real-Estate-Worth-Investing-In"><a href="#Is-Korean-Real-Estate-Worth-Investing-In" class="headerlink" title="Is Korean Real Estate Worth Investing In?"></a>Is Korean Real Estate Worth Investing In?</h2><p>Given the macro environment of the past few years, the picture is fairly clear.</p><p>High rates are driving capital outflows. Foreign exchange pressure is constant. The Korean government is forced to prioritize “stabilizing the won and managing risk” at the top of the agenda.</p><p>What does that mean?</p><ul><li>No aggressive rate cuts – the low-rate era is essentially over</li><li>There may be token cuts to ease pressure on the real economy</li><li>But there’s no going back to the old model of housing-driven, high-leverage growth</li></ul><p>The housing market won’t collapse easily, but it’s unlikely to reclaim its status as a national religion.</p><p>Writing this, I look back at that 7-million-won listing. Somehow, it’s easier to accept now.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;My lease is up in a few months. The three-bedroom I’m in now isn’t bad, honestly – good sunlight, easy commute, plenty of friends</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Korea" scheme="https://johnsonlee.io/tags/Korea/"/>
    
    <category term="Housing" scheme="https://johnsonlee.io/tags/Housing/"/>
    
  </entry>
  
  <entry>
    <title>2年涨30%，是什么支撑韩国的房价？</title>
    <link href="https://johnsonlee.io/2025/12/24/what-supports-korean-housing-prices/"/>
    <id>https://johnsonlee.io/2025/12/24/what-supports-korean-housing-prices/</id>
    <published>2025-12-24T22:00:00.000Z</published>
    <updated>2025-12-24T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>房子的合同还有几个月就到期了。现在住的这套三居，说实话并不差，采光好，通勤也方便，周围朋友也多，住久了甚至还有点舍不得。但孩子慢慢长大，总觉得空间还是局促了一些，心里盘算着要不要换个四居。于是联系了中介，说明需求，预算也交代得很清楚。两个星期过去，中介终于有了消息，给推了两套，再一看报价，令我大吃一惊，不仅远超 budget，其中一套近期还跳价了 5%，简直是不讲武德。</p><p>更离谱的是，我现在住的这套房子，两年前的月租还是 4.6 million，而现在市面上的最低挂牌价，已经到了 6 个 million 了。可问题是，在我的认知里，韩国的出生率不是一路下滑吗？人口结构肉眼可见地老化，这房价，到底是谁给的底气？</p><h2 id="一些日常观察"><a href="#一些日常观察" class="headerlink" title="一些日常观察"></a>一些日常观察</h2><p>大概从去年年中开始，就陆陆续续听同事抱怨找房这件事。</p><p>不是买房，是租房。</p><p>月租涨得有些离谱，原本熟悉的地段，按原来的 budget 已经完全找不到合适的房源了，只能被迫往更远的地方搬。</p><p>而与此同时，每次经过 江南大道，看到人潮汹涌的大街两侧，却夹杂着一间间空置的商铺，又总会让我产生一种错觉 —— 韩国的经济，真的还好吗？</p><p>同样的江南大道，空置商铺在肉眼可见的增多，而与此同时，Olive Young 又在以肉眼可见的速度，不停地开着新店，一边街上不到 500 米就有两家 3 层的店</p><p>再看看银行的定存利率 4% 出头，对比国内的 1% ，很是让人上头。</p><p>这个世界，显得有点分裂。</p><p>这不禁让我开始思考：</p><blockquote><p>韩国，到底是一个什么样的经济体？<br>又到底是什么，在托着这轮看似“违背常识”的房价？</p></blockquote><h2 id="从楼市开始，顺藤摸瓜"><a href="#从楼市开始，顺藤摸瓜" class="headerlink" title="从楼市开始，顺藤摸瓜"></a>从楼市开始，顺藤摸瓜</h2><p>如果只看房价本身，其实很容易得出“泡沫”的结论。</p><p>但真正开始研究韩国楼市之后，会发现一个绕不开的关键词——居民负债率。</p><p>横向对比中、日，韩国的居民负债率长期处在极高水平，而其中相当大的一部分，都是房产负债，而这背后的核心机制，离不开一个几乎“全球独一份”的制度：全租房（전세）。</p><p>全租房的存在，本质上是一种历史产物。</p><p>回到更早的时间线 —— 从“汉江奇迹”开始，韩国经历了极长一段高速通胀的时期。名义利率不低，但实际利率长期接近于零，甚至为负。在这样的环境下，现金是贬值的，负债反而是“好东西”，而房产，自然成了最优解。</p><p>于是，</p><ul><li>房东通过全租收取巨额押金</li><li>押金继续投入市场或再投资</li><li>租户承担通胀成本</li><li>整个系统在“高通胀 + 低实际利率”中自洽运转</li></ul><p>这个模式，一跑就是几十年。</p><p>直到 2019 年之后，疫情、全球加息周期接踵而至，韩国才真正从长期低利率时代，进入到一个完全不同的世界。</p><h2 id="什么是全租房（전세）？"><a href="#什么是全租房（전세）？" class="headerlink" title="什么是全租房（전세）？"></a>什么是全租房（전세）？</h2><p>如果不在韩国生活过，大概率很难理解“全租房”这种东西。</p><p>简单来说，全租不是“不要钱的租房”，而是一次性支付一大笔押金，住上两年，期间几乎不付月租，合同到期后房东原额退还押金。</p><p>这笔押金，通常是房价的 50%～70%，在房价高企的首尔，动辄就是几十亿韩元。</p><p>从表面看，这对租户似乎不公平 —— 钱给了房东，两年不能动，还没有利息。</p><p>但在过去很长一段时间里，这套机制却是对双方都“合理”的选择：</p><ul><li>对房东来说：押金可以拿去再投资、买房、炒股，甚至继续放贷，在高通胀、低实际利率的年代，押金本身就是廉价资金来源。</li><li>对租户来说：与其每个月支付不断上涨的月租，不如一次性锁定居住成本，把通胀风险交给房东。</li></ul><p>也正是因为全租的存在，韩国的楼市和租赁市场，从一开始就深度绑定在一起。</p><p>房价上涨 → 押金水涨船高 → 房东负债率升高 → 整个社会对“房产 + 杠杆”的依赖越来越深。</p><p>问题在于，这一切成立的前提只有一个 —— 利率不能太高。</p><p>而当这个前提被打破的时候，全租房，就不再是一个“稳定器”，而是一个放大风险的装置。</p><h2 id="从全租房到半租房（반전세）"><a href="#从全租房到半租房（반전세）" class="headerlink" title="从全租房到半租房（반전세）"></a>从全租房到半租房（반전세）</h2><p>当全租房在高利率环境下开始变得危险时，市场并没有立刻切换到“纯月租”，而是走向了一个过渡形态——半租房（반전세）。</p><p>半租，顾名思义，介于全租和月租之间。</p><ul><li>押金不再高到夸张，通常只有房价的 20%～40%</li><li>但同时，需要每个月支付一笔不算低的月租</li><li>本质上，是押金 + 现金流的混合模型</li></ul><p>这个形态的出现，并不是政策设计出来的，而是市场自发演化的结果。</p><p>对房东来说，</p><ul><li>押金降低，意味着到期时需要退还的现金压力变小；</li><li>而稳定的月租，则可以直接用来覆盖利息成本，甚至成为主要收入来源。</li></ul><p>对租户来说，</p><ul><li>一次性拿出几十亿韩元的押金变得不再现实；</li><li>即便月租更高，也只能接受，把压力摊到每个月的现金流里。</li></ul><p>于是你会发现一个很现实的变化 —— 押金降得不多，但月租涨得非常快。</p><p>从全租 → 半租 → 月租，并不是居住方式的“升级”，而是整个房地产系统，在高利率和高负债约束下，被迫进行的一次风险重分配。</p><p>房东不再愿意承担“到期一次性还钱”的风险，银行也不希望看到更高的杠杆，最后，压力自然流向了最没有谈判权的一端——租户。</p><h2 id="真正让人难受的，并不是利率"><a href="#真正让人难受的，并不是利率" class="headerlink" title="真正让人难受的，并不是利率"></a>真正让人难受的，并不是利率</h2><p>很多人以为，房价的问题，出在“利率太高”。</p><p>但对韩国的投资客来说，真正难受的，并不是每个月多还的那点利息，而是 —— 合同到期时，需要一次性退还的那笔巨额押金。</p><p>在高利率环境下，</p><ul><li>押金不再“好用”</li><li>再投资回报下降</li><li>资金链的安全边际迅速变薄</li></ul><p>当一份全租合同到期，突如其来的一笔巨额付款在平淌的现金流中就像一根长长的针，狠狠地刺痛着投资客，一旦被刺，就给人留下挥之不去的阴影。</p><h2 id="到底是什么支撑着韩国的房价？"><a href="#到底是什么支撑着韩国的房价？" class="headerlink" title="到底是什么支撑着韩国的房价？"></a>到底是什么支撑着韩国的房价？</h2><p>如果把逻辑拆开来看，大致是这样的：</p><ol><li>居民房产负债过高，系统性风险真实存在</li><li>政府不敢放任资金继续涌向楼市</li><li>通过维持相对高利率，抑制新增杠杆</li><li>全租模式在高利率环境下变得危险</li><li>房东开始追求稳定现金流</li><li>押金降低，但月租大幅上升</li><li>风险，从房东转移给了租户</li></ol><p>于是你会看到一个“看起来很魔幻”的结果：</p><ul><li>房价在涨</li><li>押金在降</li><li>月租在暴涨</li></ul><p>但本质上，并不是房子“更值钱了”，<br>而是整个市场，从一次性高额押金，转向了长期、稳定、可预期的现金流。</p><p>说到底，<br>羊毛还是出在羊身上。</p><h2 id="韩国楼市值得投吗？"><a href="#韩国楼市值得投吗？" class="headerlink" title="韩国楼市值得投吗？"></a>韩国楼市值得投吗？</h2><p>结合这几年的宏观环境，其实脉络已经很清晰了。</p><p>高利率导致资金外流，外汇压力始终存在，韩国政府被迫把“稳外汇、控风险”放在优先级极高的位置。</p><p>这意味着什么？</p><ul><li>不敢大幅降息，低利率时代基本宣告结束</li><li>可能会有象征性的降息，缓解实体经济压力</li><li>但绝不会回到过去那种，靠房产高杠杆支撑增长的模式</li></ul><p>楼市不会轻易崩，但也很难再像过去那样，成为全民信仰。</p><p>写到这里，再回头看那套 7 个 million 的报价，也能接受了。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;房子的合同还有几个月就到期了。现在住的这套三居，说实话并不差，采光好，通勤也方便，周围朋友也多，住久了甚至还有点舍不得。但孩子慢慢长大，总觉得空间还是局促了一些，心里盘算着要不要换个四居。于是联系了中介，说明需求，预算也交代得很清楚。两个星期过去，中介终于有了消息，给推了两</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Korea" scheme="https://johnsonlee.io/tags/Korea/"/>
    
    <category term="Housing" scheme="https://johnsonlee.io/tags/Housing/"/>
    
  </entry>
  
  <entry>
    <title>为什么乘除10的幂几乎不用思考?</title>
    <link href="https://johnsonlee.io/2025/12/20/positional-numeral-system-and-radix-shift/"/>
    <id>https://johnsonlee.io/2025/12/20/positional-numeral-system-and-radix-shift/</id>
    <published>2025-12-20T10:00:00.000Z</published>
    <updated>2025-12-20T10:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>周末在给儿子辅导作业时，注意到他在算 450÷10 时几乎不假思索，但遇到 450÷6 时立刻眉头紧锁，这让我突然意识到一个我们习以为常，却很少认真想过的问题：</p><blockquote><p>为什么在算乘除 10 的幂时，我们几乎完全不需要思考，而换成别的数就特别费劲呢？</p></blockquote><p>加上前段时间和儿子一起探究 <a href="https://en.wikipedia.org/wiki/Positional_notation">Positional Numeral System</a>，想到这里，突然让我茅塞顿开 —— 这不就是 10 进制的位移操作嘛！</p><h2 id="为什么乘-除-10-不需要思考？"><a href="#为什么乘-除-10-不需要思考？" class="headerlink" title="为什么乘/除 10 不需要思考？"></a>为什么乘/除 10 不需要思考？</h2><p>来看一个我们从小就会的操作：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">45 × 10 = 450</span><br><span class="line">450 ÷ 10 = 45</span><br></pre></td></tr></table></figure><p>你在做什么？</p><p>你并没有在算：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">45 × 10 = 10 + 10 + 10 ……</span><br></pre></td></tr></table></figure><p>你做的是 —— 把所有数字整体向左或向右移动一位</p><p>这不是“计算”，而是位置重排。</p><p>只不过我们从小接受的义务教育从来就没有提到「位移」这个概念，老师只是告诉你：</p><ul><li>乘 10 的结果就是在被乘数后面补 1 个 0</li><li>乘 100 的结果就是在被乘数后面补 2 个 0</li><li>乘 1000 的结果就是在被乘数后面补 3 个 0</li><li>以此类推……</li></ul><h2 id="位移真的不是巧合吗？"><a href="#位移真的不是巧合吗？" class="headerlink" title="位移真的不是巧合吗？"></a>位移真的不是巧合吗？</h2><p>如果你对这个结论还有疑问，那咱们不妨用数学的方式来证明一下这并不是巧合。</p><p>在十进制中，一个数可以表示为：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.197ex;" xmlns="http://www.w3.org/2000/svg" width="55.471ex" height="5.524ex" role="img" focusable="false" viewBox="0 -1470.9 24518.3 2441.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,579.1)"><g data-mml-node="mtd"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1000,0)"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(1500,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(2000,0)"></path></g></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(2055.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(3056,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g><g data-mml-node="mo" transform="translate(4714.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5715,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6437.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(7437.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g><g data-mml-node="mo" transform="translate(9096.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(10096.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(10818.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(11818.9,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(13477.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14477.9,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mo" transform="translate(15200.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(16200.3,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(17859.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(18859.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(19581.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(20581.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g><g data-mml-node="mtr" transform="translate(0,-720.9)"><g data-mml-node="mtd" transform="translate(2500,0)"></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(2333.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(2778.2,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(4500.4,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5500.7,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6000.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(6445.3,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(8167.6,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(9167.8,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(10890,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(11890.2,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(13112.4,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14112.7,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g></g></g></g></g></g></svg></mjx-container></p><p>两边同时乘以 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="3.25ex" height="2.003ex" role="img" focusable="false" viewBox="0 -863.3 1436.6 885.3"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,393.1) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g></svg></mjx-container>：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -3.827ex;" xmlns="http://www.w3.org/2000/svg" width="63.247ex" height="8.786ex" role="img" focusable="false" viewBox="0 -2191.7 27955.3 3883.4"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,1300)"><g data-mml-node="mtd"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1000,0)"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(1500,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(2000,0)"></path></g></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(1333.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(1722.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(2444.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(3445,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g><g data-mml-node="mo" transform="translate(5103.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(6104,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6826.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(7826.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g><g data-mml-node="mo" transform="translate(9485.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(10485.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(11207.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(12207.9,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(13866.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14866.9,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mo" transform="translate(15589.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(16589.3,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(18248.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(19248.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(19970.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(20970.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g><g data-mml-node="mo" transform="translate(22407.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(23018.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(24018.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g><g data-mml-node="mtr" transform="translate(0,-141.7)"><g data-mml-node="mtd" transform="translate(2500,0)"></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(2055.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(3056,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z"></path></g></g><g data-mml-node="mo" transform="translate(4714.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5715,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6437.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(7437.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z"></path></g></g><g data-mml-node="mo" transform="translate(9096.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(10096.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(10818.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(11818.9,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g></g><g data-mml-node="mo" transform="translate(13477.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14477.9,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mo" transform="translate(15200.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(16200.3,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g><g data-mml-node="mo" transform="translate(17859.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(18859.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(19581.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(20581.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g><g data-mml-node="mtr" transform="translate(0,-1441.7)"><g data-mml-node="mtd" transform="translate(2500,0)"></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(2333.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(2778.2,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(4278.2,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(4722.9,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(6445.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(7445.3,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(7945.3,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(8390,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(9890,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(10334.7,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(12056.9,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(13057.1,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(14557.1,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(15001.8,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(16724,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(17724.2,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(18724.2,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(19168.9,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(20891.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(21891.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(22391.3,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(22836,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g></g></g></g></g></g></svg></mjx-container></p><p>结合 Place Value (位值)，我们可以对比一下乘 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="3.25ex" height="2.003ex" role="img" focusable="false" viewBox="0 -863.3 1436.6 885.3"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,393.1) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g></svg></mjx-container> 前后，每个「位」的 Place Value 的变化：</p><table><thead><tr><th align="center">Place</th><th align="right">x10 前</th><th align="right">x10 后</th></tr></thead><tbody><tr><td align="center">万位</td><td align="right">10,000</td><td align="right">10,000,000</td></tr><tr><td align="center">千位</td><td align="right">2,000</td><td align="right">2,000,000</td></tr><tr><td align="center">百位</td><td align="right">300</td><td align="right">300,000</td></tr><tr><td align="center">十位</td><td align="right">40</td><td align="right">40,000</td></tr><tr><td align="center">个位</td><td align="right">5</td><td align="right">5,000</td></tr></tbody></table><p>由此可见，确实是每个「位」都往前移了 3 位。</p><h2 id="位移不是二进制的专属"><a href="#位移不是二进制的专属" class="headerlink" title="位移不是二进制的专属"></a>位移不是二进制的专属</h2><p>对于学过编程的人，一提到「位移」，立刻就想到了：</p><ul><li><code>&lt;&lt;</code> → 左移</li><li><code>&gt;&gt;</code> → 右移</li></ul><p>在二进制中，经常会将乘/除 2 的幂写成位移操作，例如，计算矩形水平方向上的中心点：</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> <span class="variable">centerX</span> <span class="operator">=</span> width &gt;&gt; <span class="number">2</span>;</span><br></pre></td></tr></table></figure><p>在 2 进制中，「往右移 1 位」等价于「除以 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.119ex" height="1.887ex" role="img" focusable="false" viewBox="0 -833.9 936.6 833.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mn" transform="translate(533,363) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></g></svg></mjx-container>」</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> <span class="variable">centerX</span> <span class="operator">=</span> width / <span class="number">2</span>;</span><br></pre></td></tr></table></figure><p>而往「往右移 2 位」等价于「除以 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.119ex" height="1.887ex" role="img" focusable="false" viewBox="0 -833.9 936.6 833.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mn" transform="translate(533,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container>」</p><p>到这里大家有没有发现一个规律：</p><ul><li>在 10 进制中，乘/除 10 的幂等价于位移操作</li><li>在 2 进制中，乘/除 2 的幂等价于位移操作</li></ul><p>那么问题来了：</p><blockquote><p>我们是不是可以将这个规律推广到任何进制？即：</p><p><strong>「乘以基数的 n 次方」</strong>等价于<strong>「左移 n 位」</strong><br><strong>「除以基数的 n 次方」</strong>等价于<strong>「右移 n 位」</strong></p></blockquote><h2 id="Radix-Shit"><a href="#Radix-Shit" class="headerlink" title="Radix Shit"></a>Radix Shit</h2><p>没错，这个结论在任何位值制系统中都能成立，这也正是基于 <a href="https://en.wikipedia.org/wiki/Positional_notation">Positional Numeral System</a> 的一个重要推论 —— Radix Shift</p><p>只不过，这个概念从来没有被单独被提及，而是分散在各个语境里：</p><ul><li>小学算术：它被刻意包装成「技巧」，而不是「结构」</li><li>计算机科学：它被重新包装命名为 —— bitwise shift</li><li>信号处理：它又被命名为 —— scaling</li><li>IEEE 754：它又被冠以新的名词 —— exponent</li></ul><h2 id="那为什么“别的数”就很难？"><a href="#那为什么“别的数”就很难？" class="headerlink" title="那为什么“别的数”就很难？"></a>那为什么“别的数”就很难？</h2><p>因为，当乘/除的数不是进制的基数时，就无法只「移动位置」，只能回到：</p><ul><li>乘法分配</li><li>加法叠加</li></ul><p>这些都是算术层面的计算，而不是结构层面的变换。</p><p>换句话说，在任何进制中：</p><ul><li>乘/除基数 (radix) → 在操作「表示法」</li><li>乘/除别的数 → 在操作「数值本身」</li></ul><p>前者是结构变换，后者只是数值计算。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;周末在给儿子辅导作业时，注意到他在算 450÷10 时几乎不假思索，但遇到 450÷6 时立刻眉头紧锁，这让我突然意识到一个我们习以为常，却很少认真想过的问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为什么在算乘除 10</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Programming" scheme="https://johnsonlee.io/categories/computer-science/Programming/"/>
    
    
    <category term="Programming" scheme="https://johnsonlee.io/tags/Programming/"/>
    
  </entry>
  
  <entry>
    <title>Why Is Multiplying or Dividing by Powers of 10 Almost Effortless?</title>
    <link href="https://johnsonlee.io/2025/12/20/positional-numeral-system-and-radix-shift.en/"/>
    <id>https://johnsonlee.io/2025/12/20/positional-numeral-system-and-radix-shift.en/</id>
    <published>2025-12-20T10:00:00.000Z</published>
    <updated>2025-12-20T10:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>While helping my son with homework over the weekend, I noticed he could do 450 / 10 almost without thinking, but the moment he hit 450 / 6, his brow furrowed. It made me suddenly aware of something we all take for granted yet rarely think about:</p><blockquote><p>Why is multiplying or dividing by powers of 10 nearly effortless, while any other number feels so much harder?</p></blockquote><p>Combining this with the exploration of <a href="https://en.wikipedia.org/wiki/Positional_notation">Positional Numeral System</a> my son and I had done recently, it clicked – this is just a shift operation in base 10!</p><h2 id="Why-Does-Multiplying-Dividing-by-10-Require-No-Thought"><a href="#Why-Does-Multiplying-Dividing-by-10-Require-No-Thought" class="headerlink" title="Why Does Multiplying/Dividing by 10 Require No Thought?"></a>Why Does Multiplying/Dividing by 10 Require No Thought?</h2><p>Consider an operation we’ve known since childhood:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">45 x 10 = 450</span><br><span class="line">450 / 10 = 45</span><br></pre></td></tr></table></figure><p>What are you actually doing?</p><p>You’re not computing:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">45 x 10 = 10 + 10 + 10 ...</span><br></pre></td></tr></table></figure><p>What you’re doing is shifting every digit one position to the left or right.</p><p>This isn’t “calculation” – it’s positional rearrangement.</p><p>It’s just that our elementary education never mentions the word “shift.” Teachers simply tell you:</p><ul><li>Multiplying by 10 means appending one 0</li><li>Multiplying by 100 means appending two 0s</li><li>Multiplying by 1000 means appending three 0s</li><li>And so on…</li></ul><h2 id="Is-the-Shift-Really-Not-a-Coincidence"><a href="#Is-the-Shift-Really-Not-a-Coincidence" class="headerlink" title="Is the Shift Really Not a Coincidence?"></a>Is the Shift Really Not a Coincidence?</h2><p>If you’re still skeptical, let’s prove mathematically that this is no coincidence.</p><p>In base 10, a number can be expressed as:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.197ex;" xmlns="http://www.w3.org/2000/svg" width="55.471ex" height="5.524ex" role="img" focusable="false" viewBox="0 -1470.9 24518.3 2441.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,579.1)"><g data-mml-node="mtd"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1000,0)"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(1500,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(2000,0)"></path></g></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(2055.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(3056,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g><g data-mml-node="mo" transform="translate(4714.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5715,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6437.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(7437.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g><g data-mml-node="mo" transform="translate(9096.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(10096.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(10818.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(11818.9,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(13477.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14477.9,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mo" transform="translate(15200.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(16200.3,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(17859.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(18859.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(19581.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(20581.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g><g data-mml-node="mtr" transform="translate(0,-720.9)"><g data-mml-node="mtd" transform="translate(2500,0)"></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(2333.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(2778.2,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(4500.4,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5500.7,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6000.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(6445.3,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(8167.6,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(9167.8,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(10890,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(11890.2,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(13112.4,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14112.7,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g></g></g></g></g></g></svg></mjx-container></p><p>Multiply both sides by <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="3.25ex" height="2.003ex" role="img" focusable="false" viewBox="0 -863.3 1436.6 885.3"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,393.1) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g></svg></mjx-container>:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -3.827ex;" xmlns="http://www.w3.org/2000/svg" width="63.247ex" height="8.786ex" role="img" focusable="false" viewBox="0 -2191.7 27955.3 3883.4"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtable"><g data-mml-node="mtr" transform="translate(0,1300)"><g data-mml-node="mtd"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1000,0)"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(1500,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(2000,0)"></path></g></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mo" transform="translate(1333.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(1722.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(2444.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(3445,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g><g data-mml-node="mo" transform="translate(5103.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(6104,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6826.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(7826.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g><g data-mml-node="mo" transform="translate(9485.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(10485.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(11207.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(12207.9,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(13866.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14866.9,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mo" transform="translate(15589.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(16589.3,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(18248.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(19248.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(19970.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(20970.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g><g data-mml-node="mo" transform="translate(22407.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(23018.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(24018.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g><g data-mml-node="mtr" transform="translate(0,-141.7)"><g data-mml-node="mtd" transform="translate(2500,0)"></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(2055.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(3056,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z"></path></g></g><g data-mml-node="mo" transform="translate(4714.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(5715,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(6437.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(7437.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z"></path></g></g><g data-mml-node="mo" transform="translate(9096.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(10096.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(10818.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(11818.9,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g></g><g data-mml-node="mo" transform="translate(13477.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(14477.9,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mo" transform="translate(15200.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(16200.3,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g><g data-mml-node="mo" transform="translate(17859.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(18859.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(19581.5,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(20581.8,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,413) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g><g data-mml-node="mtr" transform="translate(0,-1441.7)"><g data-mml-node="mtd" transform="translate(2500,0)"></g><g data-mml-node="mtd" transform="translate(2500,0)"><g data-mml-node="mi"></g><g data-mml-node="mo" transform="translate(277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1333.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(2333.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(2778.2,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(4278.2,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(4722.9,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(6445.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(7445.3,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(7945.3,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(8390,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(9890,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(10334.7,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(12056.9,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(13057.1,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(14557.1,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(15001.8,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(16724,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(17724.2,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(18724.2,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(19168.9,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(20891.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(21891.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(22391.3,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(22836,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g></g></g></g></g></g></svg></mjx-container></p><p>Using Place Value, we can compare how each digit’s place value changes before and after multiplying by <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="3.25ex" height="2.003ex" role="img" focusable="false" viewBox="0 -863.3 1436.6 885.3"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="mn" transform="translate(1033,393.1) scale(0.707)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g></g></svg></mjx-container>:</p><table><thead><tr><th align="center">Place</th><th align="right">Before x10</th><th align="right">After x10</th></tr></thead><tbody><tr><td align="center">Ten-thousands</td><td align="right">10,000</td><td align="right">10,000,000</td></tr><tr><td align="center">Thousands</td><td align="right">2,000</td><td align="right">2,000,000</td></tr><tr><td align="center">Hundreds</td><td align="right">300</td><td align="right">300,000</td></tr><tr><td align="center">Tens</td><td align="right">40</td><td align="right">40,000</td></tr><tr><td align="center">Ones</td><td align="right">5</td><td align="right">5,000</td></tr></tbody></table><p>Clearly, every digit has shifted 3 positions to the left.</p><h2 id="Shifting-Isn’t-Exclusive-to-Binary"><a href="#Shifting-Isn’t-Exclusive-to-Binary" class="headerlink" title="Shifting Isn’t Exclusive to Binary"></a>Shifting Isn’t Exclusive to Binary</h2><p>For anyone who’s studied programming, the word “shift” immediately brings to mind:</p><ul><li><code>&lt;&lt;</code> – left shift</li><li><code>&gt;&gt;</code> – right shift</li></ul><p>In binary, multiplying or dividing by powers of 2 is often written as a shift operation. For example, computing the horizontal center of a rectangle:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> <span class="variable">centerX</span> <span class="operator">=</span> width &gt;&gt; <span class="number">2</span>;</span><br></pre></td></tr></table></figure><p>In base 2, “shifting right by 1” is equivalent to “dividing by <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.119ex" height="1.887ex" role="img" focusable="false" viewBox="0 -833.9 936.6 833.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mn" transform="translate(533,363) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></g></svg></mjx-container>”:</p><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> <span class="variable">centerX</span> <span class="operator">=</span> width / <span class="number">2</span>;</span><br></pre></td></tr></table></figure><p>And “shifting right by 2” is equivalent to “dividing by <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.119ex" height="1.887ex" role="img" focusable="false" viewBox="0 -833.9 936.6 833.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mn" transform="translate(533,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container>.”</p><p>Notice a pattern emerging:</p><ul><li>In base 10, multiplying/dividing by powers of 10 is equivalent to a shift operation</li><li>In base 2, multiplying/dividing by powers of 2 is equivalent to a shift operation</li></ul><p>So the question becomes:</p><blockquote><p>Can we generalize this to any base? That is:</p><p><strong>“Multiplying by the radix to the nth power”</strong> is equivalent to <strong>“shifting left by n positions”</strong><br><strong>“Dividing by the radix to the nth power”</strong> is equivalent to <strong>“shifting right by n positions”</strong></p></blockquote><h2 id="Radix-Shift"><a href="#Radix-Shift" class="headerlink" title="Radix Shift"></a>Radix Shift</h2><p>Yes, this holds in any positional numeral system. It’s an important corollary of the <a href="https://en.wikipedia.org/wiki/Positional_notation">Positional Numeral System</a> – Radix Shift.</p><p>The concept has never been taught in isolation. Instead, it shows up scattered across different contexts:</p><ul><li>Elementary arithmetic: packaged as a “trick” rather than a structural property</li><li>Computer science: rebranded as “bitwise shift”</li><li>Signal processing: renamed “scaling”</li><li>IEEE 754: given yet another name – “exponent”</li></ul><h2 id="So-Why-Are-“Other-Numbers”-So-Hard"><a href="#So-Why-Are-“Other-Numbers”-So-Hard" class="headerlink" title="So Why Are “Other Numbers” So Hard?"></a>So Why Are “Other Numbers” So Hard?</h2><p>Because when the multiplier or divisor isn’t the radix, you can’t just “move positions.” You have to fall back to:</p><ul><li>Distributive multiplication</li><li>Additive accumulation</li></ul><p>These are arithmetic-level computations, not structural transformations.</p><p>In other words, in any base:</p><ul><li>Multiplying/dividing by the radix -&gt; operating on the <strong>representation</strong></li><li>Multiplying/dividing by anything else -&gt; operating on the <strong>value itself</strong></li></ul><p>The former is a structural transformation; the latter is mere numerical calculation.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;While helping my son with homework over the weekend, I noticed he could do 450 / 10 almost without thinking, but the moment he hit 450 /</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Programming" scheme="https://johnsonlee.io/categories/computer-science/Programming/"/>
    
    
    <category term="Programming" scheme="https://johnsonlee.io/tags/Programming/"/>
    
  </entry>
  
  <entry>
    <title>为什么计算机要区分文本和数字?</title>
    <link href="https://johnsonlee.io/2025/12/19/why-computers-represent-text-and-numbers-differently/"/>
    <id>https://johnsonlee.io/2025/12/19/why-computers-represent-text-and-numbers-differently/</id>
    <published>2025-12-19T20:00:00.000Z</published>
    <updated>2025-12-19T20:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近从零开始教儿子学编程，在讲解计算机是如何表示文本和数字的时候，儿子突然冒出了一个问题：</p><blockquote><p>为什么要用不同的方式来表示？数字不也是文本吗？</p></blockquote><p>这样一个看似天真的问题，差点把我给整不会了。</p><p>自从大学开始学习 C 语言以来，我们便习以为常的接受「字符串」和「数值」类型，从来没有深入去思考过「为什么」。听到这个问题的时候，我愣了一下，突然意识到我的编程入门是那么的晦涩难懂，为了让儿子更系统性的理解计算机的底层原理，我不得不重构一下整个知识框架。</p><h2 id="最小单位"><a href="#最小单位" class="headerlink" title="最小单位"></a>最小单位</h2><h3 id="文本的最小单位"><a href="#文本的最小单位" class="headerlink" title="文本的最小单位"></a>文本的最小单位</h3><p>为了回答儿子的问题，我没有立刻进入二进制，而是先换了一个角度。</p><p>我问他：</p><blockquote><p>如果把数字和文本拆到最小，它们各自剩下什么？</p></blockquote><p>文本的最小单位是 ——「符号」</p><p>对于文本来说，最小单位是字符。</p><ul><li>‘A’ 是一个符号</li><li>‘中’ 是一个符号</li><li>‘?’ 也是一个符号</li></ul><p>字符本身并不携带“数量”的概念，它只是被人类赋予了某种意义。<br>计算机所做的，只是把这些符号映射成编号，然后原封不动地存起来。</p><p>字符之间不存在天然的数学关系。</p><h3 id="数字的最小单位"><a href="#数字的最小单位" class="headerlink" title="数字的最小单位"></a>数字的最小单位</h3><p>而数字不一样。</p><p>数字的最小单位不是「符号」，而是 ——「值」。</p><p>当我们写下 123 时，并不是在写三个符号，而是在表达一个数量。这个数量，可以被拆解、被计算、被组合。</p><p>然而，在一连串的符号中，每一个符号的位置对于如何表示整个文本并没有直接的关系，但在数字中，每一个数的位置本身就携带着信息。</p><p>在十进制中：</p><ul><li>3 出现在个位，表示 3</li><li>3 出现在十位，表示 30</li><li>3 出现在百位，表示 300</li></ul><p>同一个符号，因为位置不同，含义完全不同。</p><p>这就是 Place Value （位值）的概念，位值的出现，是一个非常深刻的抽象：它意味着 —— 信息不仅存在于符号中，也存在于位置中。</p><p>而 Place Value （位值）这个概念，正是 <a href="https://en.wikipedia.org/wiki/Positional_notation">Positional Numeral System</a> 的重要组成部分。</p><h2 id="Positional-Numeral-System"><a href="#Positional-Numeral-System" class="headerlink" title="Positional Numeral System"></a>Positional Numeral System</h2><p>从小学到大学，从来没有哪本教科书上提到过这个概念，直到我在给儿子准备教材的时候，我才意识到这个概念是如此的重要，以至于不得不把它纳入编程入门的第一个章节。</p><p>当“符号 + 位置”共同决定一个数的大小时，我们就进入了 Positional Numeral System（位值制）。</p><p>我们日常使用的是十进制位值制：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="36.931ex" height="2.565ex" role="img" focusable="false" viewBox="0 -883.9 16323.5 1133.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(389,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1000,0)"></path></g><g data-mml-node="msub" transform="translate(1889,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" transform="translate(422,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g></g></g><g data-mml-node="mo" transform="translate(3345.9,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(4401.7,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(5123.9,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(6124.1,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(7782.9,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(8783.1,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(9505.3,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(10505.5,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="mo" transform="translate(12164.3,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(13164.5,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(13886.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(14887,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g></g></svg></mjx-container></p><p>每一位的“值”，取决于：</p><ul><li>它本身的「符号」</li><li>它所在的「位置」</li></ul><p>十进制如此，二进制也如此：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="42.65ex" height="2.565ex" role="img" focusable="false" viewBox="0 -883.9 18851.4 1133.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(389,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(1000,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(1500,0)"></path></g><g data-mml-node="msub" transform="translate(2389,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" transform="translate(422,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(3492.3,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(4548.1,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(5270.3,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(6270.6,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g><g data-mml-node="mo" transform="translate(7429.3,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(8429.6,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g><g data-mml-node="mo" transform="translate(9151.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(10152,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(11310.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(12311,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(13033.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(14033.4,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="mo" transform="translate(15192.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(16192.4,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(16914.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(17914.9,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g></g></svg></mjx-container></p><p>区别只是：</p><ul><li>使用多少个「符号」</li><li>每一位的「权重」是多少</li></ul><p>而计算机选择二进制，并不是因为它“高级”，只是数学上的自然选择：</p><ul><li>两种状态 → 完美契合电子电路的物理状态（通/断、高/低电平），易于实现高可靠性和稳定性</li><li>位值制 → 运算规则简单，最可扩展</li></ul><h2 id="符号的数字化"><a href="#符号的数字化" class="headerlink" title="符号的数字化"></a>符号的数字化</h2><p>字符本身没有“大小”或“数量”的含义。</p><p>字母 A 并不是“比 B 小 1”，汉字「中」也不存在自然的数学顺序。</p><p>于是，我们做了一件很工程化的事情 —— 给字符编号。</p><ul><li>ASCII：A = 65</li><li>Unicode：中 = U+4E2D</li></ul><p>注意这里的关键点：</p><p>文本在计算机中，是“被映射成数字”的</p><p>也就是说：</p><ul><li>数字 → 天生就是数</li><li>文本 → 被人为编码成数</li></ul><p>这两者在底层虽然都用 0 和 1 表示，但来源完全不同。</p><h2 id="文本-vs-数字"><a href="#文本-vs-数字" class="headerlink" title="文本 vs 数字"></a>文本 vs 数字</h2><p>如果你把 “123” 当成文本：</p><ul><li>你能拼接它：”123” + “4” = “1234”</li><li>但不能直接计算</li></ul><p>如果你把 123 当成数字：                                                             </p><ul><li>你能计算：123 + 4 = 127           </li><li>但它不再“有字符意义”</li></ul><h2 id="为什么不能一视同仁？"><a href="#为什么不能一视同仁？" class="headerlink" title="为什么不能一视同仁？"></a>为什么不能一视同仁？</h2><p>儿子当时又追问了一句：</p><blockquote><p>那为什么不干脆都当成文本呢？</p></blockquote><p>这是一个很自然的想法，但答案也很直接：</p><blockquote><p>因为那样会让计算变得极其低效，甚至不可能。</p></blockquote><p>Positional Numeral System 的意义，不在于“能表示”，而在于“能计算”。</p><ul><li>加法、乘法、比较大小</li><li>溢出、精度、符号位</li></ul><p>这些能力，都是 Positional Numeral System 天然支持的。</p><p>而文本，只能靠一层又一层的解释去“模拟”这些行为。</p><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>回顾我们之前学习编程的顺序，几乎是混乱的，完全没有系统性。</p><p>我们往往从二进制、变量、类型、语法开始，却默认学生“自然就懂”数字是什么、文本是什么、计算是如何发生的，很多问题就只能死记硬背。当真正理解了 Positional Numeral System 这个所有数值抽象的源头之后，一切突然就变得豁然开朗。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近从零开始教儿子学编程，在讲解计算机是如何表示文本和数字的时候，儿子突然冒出了一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为什么要用不同的方式来表示？数字不也是文本吗？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这样一个看似天真的问题，差点把我给整不会了。&lt;/p&gt;</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Programming" scheme="https://johnsonlee.io/categories/computer-science/Programming/"/>
    
    
    <category term="Programming" scheme="https://johnsonlee.io/tags/Programming/"/>
    
  </entry>
  
  <entry>
    <title>Why Do Computers Represent Text and Numbers Differently?</title>
    <link href="https://johnsonlee.io/2025/12/19/why-computers-represent-text-and-numbers-differently.en/"/>
    <id>https://johnsonlee.io/2025/12/19/why-computers-represent-text-and-numbers-differently.en/</id>
    <published>2025-12-19T20:00:00.000Z</published>
    <updated>2025-12-19T20:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I’ve been teaching my son programming from scratch. While explaining how computers represent text and numbers, he suddenly asked:</p><blockquote><p>Why do they need different representations? Aren’t numbers just text too?</p></blockquote><p>This seemingly naive question nearly stumped me.</p><p>Ever since learning C in college, we’ve taken “strings” and “numeric types” for granted, never pausing to ask “why.” When I heard this question, I froze, realizing how opaque my own programming education had been. To give my son a more systematic understanding of how computers work under the hood, I had to restructure the entire knowledge framework.</p><h2 id="The-Smallest-Unit"><a href="#The-Smallest-Unit" class="headerlink" title="The Smallest Unit"></a>The Smallest Unit</h2><h3 id="The-Smallest-Unit-of-Text"><a href="#The-Smallest-Unit-of-Text" class="headerlink" title="The Smallest Unit of Text"></a>The Smallest Unit of Text</h3><p>Rather than jumping straight into binary, I started from a different angle.</p><p>I asked him:</p><blockquote><p>If you break text and numbers down to their smallest pieces, what’s left of each?</p></blockquote><p>The smallest unit of text is – a <strong>symbol</strong>.</p><p>For text, the smallest unit is a character.</p><ul><li>‘A’ is a symbol</li><li>‘B’ is a symbol</li><li>‘?’ is also a symbol</li></ul><p>A character carries no inherent concept of “quantity.” It’s simply something humans have assigned meaning to. All the computer does is map these symbols to codes and store them as-is.</p><p>There’s no natural mathematical relationship between characters.</p><h3 id="The-Smallest-Unit-of-Numbers"><a href="#The-Smallest-Unit-of-Numbers" class="headerlink" title="The Smallest Unit of Numbers"></a>The Smallest Unit of Numbers</h3><p>Numbers are different.</p><p>The smallest unit of a number isn’t a “symbol” – it’s a <strong>value</strong>.</p><p>When we write 123, we aren’t writing three symbols; we’re expressing a quantity. This quantity can be decomposed, computed, and combined.</p><p>In a string of symbols, each symbol’s position has no direct bearing on how the overall text is represented. But in a number, each digit’s position itself carries information.</p><p>In decimal:</p><ul><li>3 in the ones place means 3</li><li>3 in the tens place means 30</li><li>3 in the hundreds place means 300</li></ul><p>The same symbol means completely different things depending on its position.</p><p>This is the concept of Place Value – a profoundly deep abstraction: it means information exists not only in the symbol itself, but also in its position.</p><p>And Place Value is a fundamental component of the <a href="https://en.wikipedia.org/wiki/Positional_notation">Positional Numeral System</a>.</p><h2 id="Positional-Numeral-System"><a href="#Positional-Numeral-System" class="headerlink" title="Positional Numeral System"></a>Positional Numeral System</h2><p>From primary school through university, no textbook ever mentioned this concept. It wasn’t until I was preparing materials for my son that I realized how critical it is – important enough to deserve the first chapter in any programming introduction.</p><p>When “symbol + position” jointly determine a number’s magnitude, we’ve entered the Positional Numeral System.</p><p>The decimal system we use daily is a positional numeral system:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="36.931ex" height="2.565ex" role="img" focusable="false" viewBox="0 -883.9 16323.5 1133.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(389,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1000,0)"></path></g><g data-mml-node="msub" transform="translate(1889,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" transform="translate(422,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g></g></g><g data-mml-node="mo" transform="translate(3345.9,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(4401.7,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(5123.9,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(6124.1,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(7782.9,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(8783.1,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(9505.3,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(10505.5,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="mo" transform="translate(12164.3,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(13164.5,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g><g data-mml-node="mo" transform="translate(13886.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(14887,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g></g></svg></mjx-container></p><p>Each digit’s “value” depends on:</p><ul><li>Its own <strong>symbol</strong></li><li>Its <strong>position</strong></li></ul><p>The same applies to binary:</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="42.65ex" height="2.565ex" role="img" focusable="false" viewBox="0 -883.9 18851.4 1133.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(389,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(1000,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(1500,0)"></path></g><g data-mml-node="msub" transform="translate(2389,0)"><g data-mml-node="mo"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="TeXAtom" transform="translate(422,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(3492.3,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(4548.1,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(5270.3,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(6270.6,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path></g></g></g><g data-mml-node="mo" transform="translate(7429.3,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(8429.6,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g><g data-mml-node="mo" transform="translate(9151.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(10152,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g><g data-mml-node="mo" transform="translate(11310.8,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(12311,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(13033.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(14033.4,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g><g data-mml-node="mo" transform="translate(15192.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(16192.4,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(16914.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(17914.9,0)"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" transform="translate(533,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mn"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></g></g></svg></mjx-container></p><p>The only differences are:</p><ul><li>How many <strong>symbols</strong> are used</li><li>What <strong>weight</strong> each position carries</li></ul><p>Computers chose binary not because it’s “advanced,” but as a natural mathematical choice:</p><ul><li>Two states -&gt; perfectly matches the physical states of electronic circuits (on/off, high/low voltage), enabling high reliability and stability</li><li>Positional system -&gt; simple arithmetic rules, maximum scalability</li></ul><h2 id="Digitizing-Symbols"><a href="#Digitizing-Symbols" class="headerlink" title="Digitizing Symbols"></a>Digitizing Symbols</h2><p>Characters have no inherent notion of “size” or “quantity.”</p><p>The letter A is not “1 less than B,” and there’s no natural mathematical ordering among characters.</p><p>So we did something very engineering-minded – we assigned codes to characters.</p><ul><li>ASCII: A = 65</li><li>Unicode: U+4E2D (for the Chinese character meaning “middle”)</li></ul><p>Here’s the key point:</p><p>Text in a computer is “mapped onto numbers.”</p><p>In other words:</p><ul><li>Numbers -&gt; inherently numeric</li><li>Text -&gt; artificially encoded as numbers</li></ul><p>Although both are represented as 0s and 1s at the bottom, their origins are completely different.</p><h2 id="Text-vs-Numbers"><a href="#Text-vs-Numbers" class="headerlink" title="Text vs. Numbers"></a>Text vs. Numbers</h2><p>If you treat “123” as text:</p><ul><li>You can concatenate: “123” + “4” = “1234”</li><li>But you can’t compute directly</li></ul><p>If you treat 123 as a number:</p><ul><li>You can compute: 123 + 4 = 127</li><li>But it no longer “means” characters</li></ul><h2 id="Why-Not-Treat-Everything-the-Same"><a href="#Why-Not-Treat-Everything-the-Same" class="headerlink" title="Why Not Treat Everything the Same?"></a>Why Not Treat Everything the Same?</h2><p>My son followed up:</p><blockquote><p>Why not just treat everything as text?</p></blockquote><p>A natural thought, but the answer is straightforward:</p><blockquote><p>Because that would make computation extremely inefficient, or even impossible.</p></blockquote><p>The significance of the Positional Numeral System isn’t that it “can represent” – it’s that it “can compute.”</p><ul><li>Addition, multiplication, comparison</li><li>Overflow, precision, sign bits</li></ul><p>These capabilities are natively supported by the Positional Numeral System.</p><p>Text can only “simulate” these behaviors through layer upon layer of interpretation.</p><h2 id="Conclusion"><a href="#Conclusion" class="headerlink" title="Conclusion"></a>Conclusion</h2><p>Looking back at how we traditionally learn programming, the sequence is almost chaotic – completely unsystematic.</p><p>We typically start with binary, variables, types, and syntax, implicitly assuming students “just know” what numbers are, what text is, and how computation happens. Many concepts end up being memorized by rote. But once you truly understand the Positional Numeral System – the origin of all numerical abstraction – everything suddenly clicks into place.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I’ve been teaching my son programming from scratch. While explaining how computers represent text and numbers, he suddenly</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Programming" scheme="https://johnsonlee.io/categories/computer-science/Programming/"/>
    
    
    <category term="Programming" scheme="https://johnsonlee.io/tags/Programming/"/>
    
  </entry>
  
  <entry>
    <title>Education in the Age of AI</title>
    <link href="https://johnsonlee.io/2025/12/06/education-in-the-age-of-ai.en/"/>
    <id>https://johnsonlee.io/2025/12/06/education-in-the-age-of-ai.en/</id>
    <published>2025-12-06T12:00:00.000Z</published>
    <updated>2025-12-06T12:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I thought sending my kids down the international school route would let them escape the hyper-competition back in China. But after moving to Seoul, I realized the rat race here is just as intense. Despite the environment, we’ve been deliberate about not over-scheduling – we only sign them up for classes they actually ask for. After talking with other parents at the international school, I noticed their logic was almost identical: <strong>replicate the last generation’s playbook for international students – stack extracurriculars, pile up credentials, and treat certificates as the keys to elite university admissions.</strong></p><p>But having witnessed everything that’s happened over the past three years, I’m starting to think this playbook may not survive the times.</p><p>From OpenAI’s emergence to the release of Gemini 3.0, AI’s iteration speed doesn’t look like technological progress – it looks like a rewrite of society’s operating system. Facing this kind of acceleration, I can’t help asking myself:</p><blockquote><p>Will the world ten years from now still need the kind of “international kid” we’re so busy cultivating today?</p></blockquote><p>The answer is not encouraging.</p><h2 id="The-Next-Decade-How-Will-Demand-for-Talent-Change"><a href="#The-Next-Decade-How-Will-Demand-for-Talent-Change" class="headerlink" title="The Next Decade: How Will Demand for Talent Change?"></a>The Next Decade: How Will Demand for Talent Change?</h2><p>A picture is forming in my mind – increasingly clear, increasingly cold:</p><p><strong>Ten years from now, 80-90% of people in society will become “non-contributors.”</strong></p><p>Not because of laziness or lack of credentials, but because the frontier of production will have expanded beyond what humans can keep up with.</p><p>AI is growing exponentially in processing information, understanding language, generating content, analyzing data, even writing code – while human improvement remains stuck at the faint, generational pace it has always been.</p><p>This means most future value creation will be done by a small number of people who command technology, not by a large mass of ordinary workers.</p><p>The remaining 80-90% will be forced to rely on social systems to maintain dignity – and may even be redefined as “structurally redundant population” under automation and welfare frameworks.</p><p>We are not experiencing this kind of shift for the first time, but this is the first time the gap between humans and machines is widening at an unbearable speed.</p><p>Put differently:</p><blockquote><p>Society will no longer need “large numbers” of talent – it will only need “a tiny minority who can truly wield technology.”</p></blockquote><p>This structural change will hit the current education system head-on. The extracurricular classes, competition certificates, overseas experience, and even diplomas that once served as “keys to the door” may open nothing important a decade from now.</p><p>Because what society wants is not “well-roundedness” or “diversity” – it’s the rare few who can make AI work for them.</p><h3 id="Non-Contributors-Will-Keep-Growing"><a href="#Non-Contributors-Will-Keep-Growing" class="headerlink" title="Non-Contributors Will Keep Growing"></a>Non-Contributors Will Keep Growing</h3><p>If we look back at the previous generation’s education system:</p><ul><li>We poured enormous effort into training “people who can execute”</li><li>We used standardized tests to filter for “people who can memorize”</li><li>We rewarded “people who can repeat”</li></ul><p>These are precisely the capabilities AI is best at – and where humans have no chance of winning.</p><p>AI doesn’t tire. Models don’t forget. Compute doesn’t complain. In every area we thought “required hard work,” it crushes us effortlessly: copywriting, information synthesis, research, code drafts, project plans, logical analysis, even strategy generation.</p><p>The result: work that used to take 10 people now takes one person plus a few models and robots.</p><p>Society doesn’t need that many people anymore.</p><p>But the education system is still mass-producing “replaceable people.”</p><p>That is the structural tragedy.</p><h3 id="Knowledge-Learning-No-Longer-Depends-on-Teachers-but-on-Mentors"><a href="#Knowledge-Learning-No-Longer-Depends-on-Teachers-but-on-Mentors" class="headerlink" title="Knowledge Learning No Longer Depends on Teachers, but on Mentors"></a>Knowledge Learning No Longer Depends on Teachers, but on Mentors</h3><p>Knowledge is becoming as accessible as air. A child asks AI a question and gets an explanation potentially clearer than any textbook, complete with example problems, step-by-step walkthroughs, and extended discussions.</p><p>The scarcity of knowledge has vanished, teachers’ authority has declined, and the logic of learning is being redefined:</p><ul><li>Before, teachers told you “what to learn.”</li><li>In the future, AI will tell you “how to learn.”</li></ul><p>So what is a mentor’s role?</p><p>A mentor helps the child:</p><ol><li>Build capabilities that won’t be replaced long-term</li><li>Establish an effective feedback loop to continuously track competitiveness</li></ol><p>Many people confuse “mentor” with “tutor,” but these are entirely different things.</p><ul><li>A teacher solves homework problems; a mentor solves life-direction problems.</li><li>A teacher transmits knowledge; a mentor transmits judgment.</li><li>A teacher answers questions; a mentor helps you ask better questions.</li></ul><p>In an age where AI knows more than any teacher, what’s truly scarce is someone who can tell you “what you don’t need to learn.” If the direction is wrong, effort is meaningless.</p><h3 id="Society-No-Longer-Needs-Masses-of-Ordinary-Graduates"><a href="#Society-No-Longer-Needs-Masses-of-Ordinary-Graduates" class="headerlink" title="Society No Longer Needs Masses of Ordinary Graduates"></a>Society No Longer Needs Masses of Ordinary Graduates</h3><p>Many industries are undergoing a quiet revolution, and the direction is remarkably consistent – AI is shrinking “teams of dozens” into “a few people plus a model.”</p><p>This isn’t the future. It’s happening now.</p><h4 id="One-Person-Teams"><a href="#One-Person-Teams" class="headerlink" title="One-Person Teams"></a>One-Person Teams</h4><p>I recently saw someone on X share their experience:</p><blockquote><p>Just hired four new employees</p><p>Gemini handles the frontend<br>Claude Code handles the backend<br>Codex handles architecture<br>Lightning Talk handles typing for the AIs to read</p><p>Almost hitting my management capacity limit</p></blockquote><p>It looks a bit comical, but it is genuinely happening.</p><h4 id="Biotech-AI-Has-Turned-“Running-Experiments”-into-a-Computable-Problem"><a href="#Biotech-AI-Has-Turned-“Running-Experiments”-into-a-Computable-Problem" class="headerlink" title="Biotech: AI Has Turned “Running Experiments” into a Computable Problem"></a>Biotech: AI Has Turned “Running Experiments” into a Computable Problem</h4><p>Drug development used to be an extremely long and expensive path:</p><ul><li>Run experiments, fail, run more experiments, fail again.</li><li>Every step required PhDs, postdocs, and researchers investing enormous amounts of time.</li></ul><p>But now more and more biotech companies are using AI for “virtual experiments”:</p><ul><li>Feed the model millions of molecular structures</li><li>Let AI predict which ones have drug potential</li><li>Send the shortlisted candidates to the lab for validation</li></ul><p>This transforms R&amp;D from “try once, wait once” to “compute once, screen millions.”</p><p>For example, one of this year’s Nobel laureates – David Baker’s team at the University of Washington – recently used RFdiffusion, a generative AI, to design new antibodies from scratch. A process that traditionally required animal immunization, random screening, and months or even years of optimization can now potentially be completed in weeks. Traditional roles in specialized bio&#x2F;chem labs may no longer need as many people – one or two people plus AI could be enough.</p><p>Similarly, in the field of protein structure prediction, AlphaFold solved the decades-old folding problem almost overnight. Many research institutions have since reduced headcount in basic structural research and redirected resources toward AI-driven design and synthesis.</p><p>This trend signals something:</p><blockquote><p>What will truly be valuable in the future is not “how many experiments you can run &#x2F; how many reports you can write &#x2F; how much data you can organize,” but “whether you can wield AI as a tool and creative partner.”<br>The conventional “diligence + diploma” combination is no longer the key. What’s truly scarce is “people who can create, design, and command systems.”</p></blockquote><h2 id="What-Is-the-Way-Out-for-Future-Education"><a href="#What-Is-the-Way-Out-for-Future-Education" class="headerlink" title="What Is the Way Out for Future Education?"></a>What Is the Way Out for Future Education?</h2><p>I believe only two directions are genuinely effective.</p><h3 id="Find-the-Right-Mentor-Direction-Matters-Ten-Thousand-Times-More-Than-Effort"><a href="#Find-the-Right-Mentor-Direction-Matters-Ten-Thousand-Times-More-Than-Effort" class="headerlink" title="Find the Right Mentor: Direction Matters Ten Thousand Times More Than Effort"></a>Find the Right Mentor: Direction Matters Ten Thousand Times More Than Effort</h3><p>Children of the future won’t win by working harder than others. They’ll win by finding the right path sooner.</p><p>A good mentor can help a child:</p><ul><li>Understand the capabilities the AI age truly demands</li><li>Build long-term knowledge structures rather than grinding skills</li><li>Avoid investing in competition tracks from the old era</li><li>Develop their own technological edge</li><li>Become one of the “irreplaceable people” ten years from now</li></ul><p>The era has changed, but direction always matters more than speed.</p><p>The key to the future is not a resume – it’s irreplaceability.</p><p>And a mentor is the key to building that irreplaceability.</p><h3 id="Consistent-Physical-Exercise-The-Body-Is-the-Most-Undervalued-Competitive-Advantage"><a href="#Consistent-Physical-Exercise-The-Body-Is-the-Most-Undervalued-Competitive-Advantage" class="headerlink" title="Consistent Physical Exercise: The Body Is the Most Undervalued Competitive Advantage"></a>Consistent Physical Exercise: The Body Is the Most Undervalued Competitive Advantage</h3><p>As AI pushes skill-level competition to its limits, the real differentiators among humans will be:</p><ul><li>Focus</li><li>Stress tolerance</li><li>Willpower</li><li>Mental resilience</li><li>Capacity for high-intensity learning</li></ul><p>These foundational capabilities are not trained in cram schools – they are built through sustained physical training.</p><p>The body is not just a container; it’s the operating system. The stronger the body, the faster the upgrades; the weaker the body, the more unstable the system.</p><p>In an era of rapid change, this is the key to survival.</p><p>Only someone with a resilient body has the right to keep up with the pace of the AI age.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I thought sending my kids down the international school route would let them escape the hyper-competition back in China. But after</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
  </entry>
  
  <entry>
    <title>AI 时代的教育</title>
    <link href="https://johnsonlee.io/2025/12/06/education-in-the-age-of-ai/"/>
    <id>https://johnsonlee.io/2025/12/06/education-in-the-age-of-ai/</id>
    <published>2025-12-06T12:00:00.000Z</published>
    <updated>2025-12-06T12:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>原本以为让孩子走国际路线可以逃离国内的内卷，但来到首尔后，我发现这里的竞争一点也不比国内少，尽管大环境如此，作为家长，我们对报补习班一直都很克制，不会自作主张给孩子报各种课后班，都是孩子说想学啥才给报。在和国际学校的其他家长们交流后，我才意识到大家的逻辑几乎惊人的一致 —— <strong>复刻上一代国际生的成功路径：卷兴趣、卷特长、卷背景，把各种证书当成申请名校的敲门砖。</strong></p><p>但在亲眼目睹、亲身经历了过去这 3 年内发生的一切，让我渐渐意识到这条路，可能赶不上时代了。</p><p>从 OpenAI 横空出世，到 Gemini 3.0 的发布，AI 的迭代速度不像是在技术进步，更像是在重写社会的底层逻辑。在这样的加速度面前，我忍不住想问自己一个问题：</p><blockquote><p>十年后的世界，还需要我们今天努力培养的这种“国际化孩子”吗？</p></blockquote><p>答案一点也不乐观。</p><h2 id="未来十年：社会对人才的需求会发生什么变化？"><a href="#未来十年：社会对人才的需求会发生什么变化？" class="headerlink" title="未来十年：社会对人才的需求会发生什么变化？"></a>未来十年：社会对人才的需求会发生什么变化？</h2><p>我脑中开始浮现出一个越来越清晰、也越来越冷的画面：</p><p><strong>十年后，社会中 80%～90% 的人，会沦为“无贡献者”。</strong></p><p>不是因为懒惰，也不是因为缺乏学历，而是因为整个社会的生产边界已经扩张到人本身无法跟上的程度。</p><p>AI 在处理信息、理解语言、生成内容、分析数据、甚至写代码方面，都呈现指数式增长，而人类的提升却永远停留在代际之间微弱的变化。</p><p>这意味着，未来社会的大部分价值创造，将由少数掌握科技的人完成，而不是数量庞大的普通劳动者。</p><p>剩下的那 80%～90%，将被迫依赖社会系统来维持体面，甚至可能在自动化与福祉体系下，被重新定义为“结构性冗余人口”。</p><p>我们不是第一次经历这种转变，但这是第一次，人类和机器之间的差距正在以难以接受的速度扩大。</p><p>换句话说：</p><blockquote><p>社会不再需要“大量”的人才，而是只需要“极少数真正能驾驭科技的人”。</p></blockquote><p>而这种结构性的变化，会直接冲击现行教育体系。曾经那些能作为“敲门砖”的兴趣课、竞赛证书、海外背景、甚至文凭，可能在十年后都不再能打开任何重要的大门。</p><p>因为社会要的不是“多样化”，也不是“全面发展”，而是 —— 能让 AI 为自己所用的极少数强者。</p><h3 id="社会无贡献者会越来越多"><a href="#社会无贡献者会越来越多" class="headerlink" title="社会无贡献者会越来越多"></a>社会无贡献者会越来越多</h3><p>如果我们回顾上一代的教育体系会发现：</p><ul><li>我们把大量精力放在训练「能执行的人」</li><li>我们通过标准化考试筛选「能记住的人」</li><li>我们奖励那些「能重复的人」</li></ul><p>而这些能力，恰恰是 AI 最擅长、也是人类最无法取胜的领域。</p><p>AI 不会疲倦，模型不会遗忘，算力不会抱怨，它在我们以为“需要努力”的地方轻松碾压：写文案、整理信息、做研究、代码初稿、项目计划、逻辑分析、甚至策略生成。</p><p>结果就是 —— 过去由 10 个人完成的工作，只需要一个人，再配上几个模型和机器人就行了。</p><p>社会不需要那么多人了。</p><p>但教育系统仍然在拼命制造“可替代的人”。</p><p>这就是结构性悲剧。</p><h3 id="知识型学习不再靠老师，而是靠-mentor"><a href="#知识型学习不再靠老师，而是靠-mentor" class="headerlink" title="知识型学习不再靠老师，而是靠 mentor"></a>知识型学习不再靠老师，而是靠 mentor</h3><p>知识正在变得像空气一样触手可及。孩子问 AI 一个问题，它给出的解释可能比任何教科书还清晰，还附带例题、步骤、延伸讨论。</p><p>知识的稀缺性消失了，老师的权威性下降了，而学习的逻辑也随之被重新定义：</p><ul><li>过去，老师负责告诉你“学什么”。</li><li>未来，AI 会告诉你“怎么学”。</li></ul><p>那么 mentor 的角色是什么？</p><p>Mentor 是帮助孩子：</p><ol><li>构建长期不被替代的能力</li><li>建立一套有效的 feedback loop 来持续跟踪竞争力</li></ol><p>很多人把 mentor 理解为「辅导老师」，但这完全不是一回事。</p><ul><li>老师解决作业问题，mentor 解决人生方向。</li><li>老师传递知识，mentor 传递判断。</li><li>老师回答问题，mentor 帮你提出更好的问题。</li></ul><p>在一个 AI 比任何老师都懂的时代，真正稀缺的，是能告诉你 「什么不需要学」 的人。方向错了，努力就毫无意义。</p><h3 id="社会不再需要大量普通毕业生"><a href="#社会不再需要大量普通毕业生" class="headerlink" title="社会不再需要大量普通毕业生"></a>社会不再需要大量普通毕业生</h3><p>许多行业正在经历悄无声息的革命，而且革命的方向非常一致 —— AI 正在把“需要几十个人的团队”缩减成“几个人配一套模型”。</p><p>这不是未来，而是正在发生。</p><h4 id="一个人的团队"><a href="#一个人的团队" class="headerlink" title="一个人的团队"></a>一个人的团队</h4><p>最近看到 X 上有网友分享了自己的经历：</p><blockquote><p>最近新招了四个员工</p><p>Gemini 负责前端<br>Claude Code 负责后端<br>Codex 负责架构<br>闪电说负责打字给 AI 看</p><p>快达到我的管理能力上限了</p></blockquote><p>虽然看起来有点滑稽，但是切切实实正在发生。</p><h4 id="生物医药行业：AI-已经把“做实验”变成可计算的问题"><a href="#生物医药行业：AI-已经把“做实验”变成可计算的问题" class="headerlink" title="生物医药行业：AI 已经把“做实验”变成可计算的问题"></a>生物医药行业：AI 已经把“做实验”变成可计算的问题</h4><p>以前药物研发是一条极其漫长而昂贵的路径：</p><ul><li>反复做实验、失败、再做实验、再失败。</li><li>每一步都需要博士、博后、研究员投入大量时间。</li></ul><p>但现在越来越多的生物科技公司开始使用 AI 来做“虚拟实验”：</p><ul><li>给模型几百万种分子结构</li><li>让 AI 预测哪些有潜力成为药物</li><li>再把候选结果交给实验室验证</li></ul><p>这让研发流程从“试一次、等一次”变成“计算一次、筛千万次”。</p><p>例如，今年的诺贝尔奖得主之一 ———— 华盛顿大学的 David Baker 团队最近用 RFdiffusion 这个生成式 AI，从头设计出新的抗体；传统上需要动物免疫、随机筛选、数月乃至数年优化的流程，现在可能在几周内完成。专业生物／化学实验室里的传统岗位，可能不再需要那么多人 —— 一两个人加上 AI 就够了。</p><p>再比如蛋白质结构预测领域，AlphaFold 几乎在一夜之间解决了几十年未解的折叠问题。许多科研机构因此缩减基础结构研究的人力投入，把资源转向 AI-设计、AI-合成的新方向。</p><p>这种趋势代表了一个信号：</p><blockquote><p>未来真正有价值的，不是「你会做多少实验／会写多少报告／会整理多少数据」，而是「你能否驾驭 AI，把它当作工具&#x2F;创造伙伴」。<br>普通意义上的「勤奋 + 文凭」组合，不再是敲门砖。真正稀缺的是「能创造／设计／驾驭系统的人」。</p></blockquote><h2 id="未来教育的出路是什么？"><a href="#未来教育的出路是什么？" class="headerlink" title="未来教育的出路是什么？"></a>未来教育的出路是什么？</h2><p>我认为只有两个方向是真正有效的。</p><h3 id="找到合适的-mentor：方向比努力重要一万倍"><a href="#找到合适的-mentor：方向比努力重要一万倍" class="headerlink" title="找到合适的 mentor：方向比努力重要一万倍"></a>找到合适的 mentor：方向比努力重要一万倍</h3><p>未来的孩子不会因为比别人更努力而胜出，他们会因为比别人更早走上正确的路径而胜出。</p><p>一个好的 mentor 能帮孩子：</p><ul><li>理解 AI 时代真正需要的能力</li><li>建立长期的知识结构，而不是刷技能</li><li>避免投入在旧时代的竞争项目</li><li>形成自己的技术优势</li><li>在十年后成为那些“不可替代的人”之一</li></ul><p>时代变了，但方向始终比速度重要。</p><p>未来的敲门砖不再是简历，而是能力的不可替代性。</p><p>而 mentor，就是帮助孩子建立这种不可替代性的关键。</p><h3 id="持续保持体育锻炼：身体是未来最被低估的竞争力"><a href="#持续保持体育锻炼：身体是未来最被低估的竞争力" class="headerlink" title="持续保持体育锻炼：身体是未来最被低估的竞争力"></a>持续保持体育锻炼：身体是未来最被低估的竞争力</h3><p>随着 AI 在技能层面的竞争趋近极限，人类真正的差距将来自：</p><ul><li>专注力</li><li>抗压力</li><li>意志力</li><li>精神韧性</li><li>高强度学习能力</li></ul><p>这些底层能力，不是靠补习班训练出来的，而是靠「长期的体能训练」打造出来的。</p><p>身体不仅是容器，更是操作系统。身体越强，升级越快；身体越弱，系统越不稳定。</p><p>这在高速变化的时代，是生存的关键。</p><p>一个身体强韧的人，才有资格和 AI 时代的速度对抗。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;原本以为让孩子走国际路线可以逃离国内的内卷，但来到首尔后，我发现这里的竞争一点也不比国内少，尽管大环境如此，作为家长，我们对报补习班一直都很克制，不会自作主张给孩子报各种课后班，都是孩子说想学啥才给报。在和国际学校的其他家长们交流后，我才意识到大家的逻辑几乎惊人的一致</summary>
        
      
    
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/categories/Independent-Thinking/"/>
    
    
    <category term="Education" scheme="https://johnsonlee.io/tags/Education/"/>
    
  </entry>
  
  <entry>
    <title>Circle - 链上的美联储</title>
    <link href="https://johnsonlee.io/2025/06/23/circle-the-fed-on-chain/"/>
    <id>https://johnsonlee.io/2025/06/23/circle-the-fed-on-chain/</id>
    <published>2025-06-23T22:00:00.000Z</published>
    <updated>2025-06-23T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>中国的数字人民币项目最早可以追溯到 2014 年，正式落地试点是在 2020 年。从北京、深圳到成都、苏州，各地政务场景、电商补贴、甚至红灯志愿者奖励系统，都开始接入“数币钱包”。</p><p>这是一次国家主导、央行推动的支付系统数字化尝试。但时至今日，数字人民币的普及程度依然有限：用户增长趋缓，线下覆盖不均，支付习惯难以改变，老百姓用微信支付宝惯了，基本还是“扫个码”的层面，而且对于普通人，根本分不清“数币”到底和微信钱包有啥不一样。</p><p>对比之下，美国的央行数字货币（CBDC）项目连试点都没走通。2023 年，美联储发布研究报告称“尚需观望”，而在 2024 年大选年，Trump 直接公开表态反对：“我支持自由货币（Freedom Money），不会允许联邦政府发行监控人民的钱。”</p><p>于是，令人意外的一幕发生了：</p><p><strong>一个非政府机构、一个私人公司 Circle，在没有央行支持、没有国家背书的前提下，靠 USDC 把“美元”搬上了链。</strong></p><p>它不靠印钞，不通过银行，而是收用户的钱，买国债，生成数字稳定币，再让这些“链上美元”在全球流通、转账、结算。</p><p>而它背后的商业模式，甚至可以用一句话概括：</p><blockquote><p>Circle 做了央行想做但做不了的事：发行一种真正能跑在链上的美元。</p></blockquote><p>CRCL 的上市，让这个曾经边缘的项目站到了聚光灯下。我才意识到，USDC 不仅是稳定币，还是美元的链上分身；Circle 也不是科技公司，它更像一个私营的数字铸币厂。</p><h2 id="USDC：美元的链上分身"><a href="#USDC：美元的链上分身" class="headerlink" title="USDC：美元的链上分身"></a>USDC：美元的链上分身</h2><p>很多人第一次接触 USDC，只是当它是一个“1:1 锚定美元”的稳定币——拿来买币、做 DeFi、或者规避交易波动。但 Circle 做的不止是稳定币，它做的是链上美元的再造工程。</p><p>它的基本逻辑是这样的：</p><ul><li>用户用法币兑换 USDC</li><li>Circle 把这些资金存入托管银行或购买短期美债</li><li>Circle 铸造等额 USDC，在链上发行</li><li>用户随时可以 1:1 赎回，Circle 再销毁 USDC</li></ul><p>从金融模型上看，它不靠币价波动赚钱，也不是 Ponzi，而是靠储备资产的利息差盈利——在 2023 年的高息环境下，USDC 储备的短期国债年化利率一度超过 5%，Circle 与 Coinbase 对半分成。</p><h2 id="Circle：不只是铸币"><a href="#Circle：不只是铸币" class="headerlink" title="Circle：不只是铸币"></a>Circle：不只是铸币</h2><p>Circle 绝不仅仅是“铸币”，它还干了央行体系里的好几件关键事。如果说“铸币”只是表面，那它背后真正构建的，是一个链上美元的完整运行系统，包括：</p><table><thead><tr><th>角色</th><th>对应传统机构</th><th>Circle 的表现</th></tr></thead><tbody><tr><td>💰 铸币者</td><td>国家财政部 &#x2F; 央行造币厂</td><td>负责发行和销毁 USDC</td></tr><tr><td>🏦 托管人</td><td>中央银行 or 商业银行</td><td>托管储备金、持有美债、管理货币基金</td></tr><tr><td>📉 货币管理者</td><td>美联储（调节货币供给）</td><td>铸币随需求浮动，间接影响链上流动性</td></tr><tr><td>🌐 支付清算网络</td><td>SWIFT &#x2F; Visa &#x2F; 银联</td><td>提供链上即时到账、跨境支付的基础设施</td></tr><tr><td>📊 市场参与者</td><td>华尔街基金、券商、清算所</td><td>参与美债收益管理、与 Coinbase 分润、接入各类协议</td></tr></tbody></table><p>当我们理解了 Circle 真正的角色之后，有没有发现：</p><blockquote><p>Circle 不是在替政府印钱，而是在悄悄重构一个“平行美元系统”。</p></blockquote><h2 id="链上-链下美元系统"><a href="#链上-链下美元系统" class="headerlink" title="链上&#x2F;链下美元系统"></a>链上&#x2F;链下美元系统</h2><p>我们可以通过对比链下传统的美元系统来更加深入的理解 Circle 作为新一代在这个新的系统里的发挥的作用：</p><table><thead><tr><th>维度</th><th>链下（传统体系）</th><th>链上（新兴体系）</th></tr></thead><tbody><tr><td>货币发行</td><td>美联储造数字美元（Fedwire 结算）</td><td>Circle 铸 USDC</td></tr><tr><td>储备管理</td><td>美联储持有国债，控制基准利率</td><td>Circle 买国债，赚利差</td></tr><tr><td>货币调控</td><td>利率 + QE &#x2F; QT +逆回购</td><td>无主动调控，靠用户需求自动铸销</td></tr><tr><td>分发路径</td><td>商业银行系统 + SWIFT</td><td>钱包 + DEX + Coinbase + 链上合约</td></tr><tr><td>清算系统</td><td>Fedwire &#x2F; CHIPS &#x2F; 银行内网</td><td>区块链本身（如 Ethereum、Solana）</td></tr></tbody></table><p>所以，我们可以说：</p><blockquote><p>Circle 是链上的“影子美联储”——不掌握法定货币权，但执行了部分联储的功能。</p></blockquote><p>它不能调节利率，但它创造了美元的替代供应通道；<br>它没有货币政策工具，但它的铸币行为影响了链上的美元流动性；<br>它不设通胀目标，但它的资产负债表规模已经是部分国家货币当局的量级。</p><p>美联储用 QE 来控制链下美元流动性；<br>Circle 用 USDC 来构造链上美元流动性。<br>两者都绑定美国国债、都在“制造信用”，但使用的是不同的渠道、逻辑、节奏。</p><h2 id="新货币秩序的试验场"><a href="#新货币秩序的试验场" class="headerlink" title="新货币秩序的试验场"></a>新货币秩序的试验场</h2><p>很多人第一次看到 USDC 的运行模式，直觉反应是：“这不就是一个合规的稳定币嘛？”</p><p>但当你把它放进美元体系的更大背景下看，就会发现：它其实是整个美元货币机制的一次“模块化重构”。它不是取代央行，但它确实在把央行原本一体化的系统，拆解成了更小、更灵活的功能组件，并交由市场来执行。</p><p>其中最深刻的变化之一是：</p><blockquote><p>美元信用从“央行背书”转向了“国债+代码托管”的组合模式。</p></blockquote><h3 id="央行信用-vs-国债信用：一次制度级的分离实验"><a href="#央行信用-vs-国债信用：一次制度级的分离实验" class="headerlink" title="央行信用 vs 国债信用：一次制度级的分离实验"></a>央行信用 vs 国债信用：一次制度级的分离实验</h3><p>传统美元体系中，央行（美联储）和财政部（国债）之间虽然机构独立，但在运作上高度捆绑：</p><ul><li>美联储通过 QE (Quantitative Easing) &#x2F; QT (Quantitative Tightening) 控制流动性；</li><li>国债是财政支出的工具，央行用买债的方式间接支持财政赤字；</li><li>最终形成一个“信用闭环”：国家印钱、国家发债、国家流通、国家兑付。</li></ul><p>而 USDC 的模式，则是彻底“拆分”了这个闭环：</p><ul><li>只锚定国债，不靠央行信用；</li><li>由 Circle 管理资产，由代码执行兑付，由用户决定需求；</li><li>美联储缺席，财政部也没有授权，但美元依然诞生了，而且跑得比链下还快。</li></ul><p>这就像是用市场化方式，复制了一套“简化版美联储”出来，而且效果还不差。</p><h3 id="信用分离模型的优势"><a href="#信用分离模型的优势" class="headerlink" title="信用分离模型的优势"></a>信用分离模型的优势</h3><table><thead><tr><th>维度</th><th>传统央行体系</th><th>Circle&#x2F;USDC 模型</th></tr></thead><tbody><tr><td>信用锚定</td><td>美联储的政策信用</td><td>美国国债的主权信用</td></tr><tr><td>铸币机制</td><td>由央行主导，通过利率影响银行放贷</td><td>市场驱动，用户存入法币 → 自动铸币</td></tr><tr><td>发行效率</td><td>依赖银行系统、清算网络、监管通道</td><td>无中介，链上实时到账，全球可用</td></tr><tr><td>风险结构</td><td>中央化，央行错误政策即系统性风险</td><td>分散式结构，可替代、可审计、抗风险更强</td></tr><tr><td>透明程度</td><td>黑箱式政策，央行账本难以实时披露</td><td>每月披露储备结构，第三方审计</td></tr><tr><td>政策中立性</td><td>为经济目标服务（就业、通胀、财政）</td><td>仅承担清算和铸币职能，更接近货币本源</td></tr></tbody></table><p>换句话说：</p><blockquote><p>Circle 和 USDC 所做的，是把「货币」从一个政策工具，重新拉回成一个结算资产，把央行拆成了国债 + 代码 + API 三个模块。</p></blockquote><p>从某种意义上，这不仅是美元的一次底层协议重构，更是整个全球货币体系向“金融 SaaS 化”的过渡试验。</p><p>你不再依赖一个主权政府的背书去发币，而是拿一份美国国债，接上一个智能合约，生成一个“美元副本”，然后发送到任何一条链、任何一个国家、任何一个钱包。</p><p>这就是 USDC，背后也是 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的真正逻辑。</p><h2 id="铸币权的证券化"><a href="#铸币权的证券化" class="headerlink" title="铸币权的证券化"></a>铸币权的证券化</h2><p>如果说 Circle 是链上美元系统的“发行行”，那 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 本质上就是这套“影子美联储”系统的利润凭证。</p><p>但这张凭证，不是来自传统意义上的科技增长，不是 DAU、不是 GMV、也不是产品订阅用户增长曲线，而是来自一种制度结构的变革红利：</p><p>美联储不做数字美元，但市场需要；</p><ul><li>政府不发行全球美元 API，但资本已经先行；</li><li>Coinbase、Visa、BlackRock 等传统金融巨头都在下注 Circle 的新秩序；</li><li>Circle 的收入与国债利率挂钩，而国债，是全球最深、最稳的资产池。</li></ul><p>所以，买 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，不只是买一个 Web3 公司，也不只是押注稳定币需求增长，而是：</p><blockquote><p>参与美元信用外包进程的证券化分红。</p></blockquote><p>这是一种制度套利，也可能是一种范式切换：<strong>如果未来美元的增量，越来越多是通过链上发行完成的，那 CRCL 就不仅是代理者，而是变成了一个半制度型角色——数字铸币权的持有者之一。</strong></p><p>我们还不知道这种模式能否长成真正的新秩序，也不知道监管是否最终会容许它“做大做强”，但我们知道一件事：</p><p>它已经跑在前面了，而且还在盈利。</p><h2 id="下篇预告：USDC-与比特币的矛盾统一"><a href="#下篇预告：USDC-与比特币的矛盾统一" class="headerlink" title="下篇预告：USDC 与比特币的矛盾统一"></a>下篇预告：USDC 与比特币的矛盾统一</h2><p>从某种意义上讲，<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 和比特币代表了两种完全对立的金融哲学：</p><ul><li>比特币去中心、无国家、反监管；</li><li>USDC 中心化、可监管、绑定美国财政。</li></ul><p>但也正因为如此，它们在结构上并不排斥，反而可能互为补充：</p><ul><li>比特币是数字黄金，是链上“价值锚定”的硬资产；</li><li>USDC 是数字美元，是链上流动性的桥梁和燃料；</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;中国的数字人民币项目最早可以追溯到 2014 年，正式落地试点是在 2020</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>Circle: The Fed on Chain</title>
    <link href="https://johnsonlee.io/2025/06/23/circle-the-fed-on-chain.en/"/>
    <id>https://johnsonlee.io/2025/06/23/circle-the-fed-on-chain.en/</id>
    <published>2025-06-23T22:00:00.000Z</published>
    <updated>2025-06-23T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>China’s digital yuan project dates back to 2014, with official pilot programs launching in 2020. From Beijing and Shenzhen to Chengdu and Suzhou, government services, e-commerce subsidies, and even volunteer reward systems started integrating the “digital currency wallet.”</p><p>It was a state-led, central-bank-driven attempt to digitize the payment system. Yet to this day, adoption remains limited: user growth has plateaued, offline coverage is uneven, and payment habits are hard to change. People are used to WeChat Pay and Alipay – it’s still just “scan a QR code,” and for most people, there’s no discernible difference between a “digital yuan” and their WeChat wallet.</p><p>By contrast, the U.S. hasn’t even gotten a central bank digital currency (CBDC) pilot off the ground. In 2023, the Fed published a research report saying it “needs more time to evaluate.” During the 2024 election year, Trump publicly declared his opposition: “I support Freedom Money. I will not allow the federal government to issue money that surveils the people.”</p><p>And then something unexpected happened:</p><p><strong>A non-government entity – a private company called Circle – put the “dollar” on chain without central bank support or sovereign endorsement, using USDC.</strong></p><p>It doesn’t print money or go through banks. It takes users’ deposits, buys Treasuries, mints digital stablecoins, and lets these “on-chain dollars” circulate, transfer, and settle globally.</p><p>Its business model can be summed up in one sentence:</p><blockquote><p>Circle did what the central bank wanted to do but couldn’t: issue a dollar that actually runs on chain.</p></blockquote><p>CRCL’s IPO brought this once-fringe project into the spotlight. That’s when I realized USDC isn’t just a stablecoin – it’s the dollar’s on-chain avatar. And Circle isn’t a tech company – it’s more like a private digital mint.</p><h2 id="USDC-The-Dollar’s-On-Chain-Avatar"><a href="#USDC-The-Dollar’s-On-Chain-Avatar" class="headerlink" title="USDC: The Dollar’s On-Chain Avatar"></a>USDC: The Dollar’s On-Chain Avatar</h2><p>Most people’s first encounter with USDC is as a “1:1 dollar-pegged” stablecoin – used for buying crypto, DeFi, or hedging against volatility. But Circle isn’t just making a stablecoin. It’s re-engineering the dollar for on-chain use.</p><p>The basic logic works like this:</p><ul><li>Users exchange fiat for USDC</li><li>Circle deposits those funds in custodial banks or buys short-term Treasuries</li><li>Circle mints an equivalent amount of USDC and issues it on chain</li><li>Users can redeem 1:1 at any time; Circle burns the USDC</li></ul><p>From a financial model perspective, it doesn’t profit from price speculation and it’s not a Ponzi scheme. It earns from interest on reserve assets – during the high-rate environment of 2023, short-term Treasury yields on USDC reserves exceeded 5% annualized, split evenly between Circle and Coinbase.</p><h2 id="Circle-More-Than-a-Mint"><a href="#Circle-More-Than-a-Mint" class="headerlink" title="Circle: More Than a Mint"></a>Circle: More Than a Mint</h2><p>Circle does far more than “mint coins.” It performs several critical functions from the central banking system. If minting is the surface, what it’s actually building underneath is a complete on-chain dollar operating system:</p><table><thead><tr><th>Role</th><th>Traditional Counterpart</th><th>Circle’s Role</th></tr></thead><tbody><tr><td>Minter</td><td>Treasury &#x2F; Central Bank Mint</td><td>Issues and burns USDC</td></tr><tr><td>Custodian</td><td>Central Bank or Commercial Banks</td><td>Manages reserves, holds Treasuries, manages money market funds</td></tr><tr><td>Monetary Manager</td><td>The Fed (regulates money supply)</td><td>Minting fluctuates with demand, indirectly affects on-chain liquidity</td></tr><tr><td>Payment &amp; Clearing Network</td><td>SWIFT &#x2F; Visa &#x2F; UnionPay</td><td>Provides on-chain instant settlement and cross-border payment infrastructure</td></tr><tr><td>Market Participant</td><td>Wall Street funds, brokers, clearinghouses</td><td>Manages Treasury yields, revenue-shares with Coinbase, integrates with protocols</td></tr></tbody></table><p>Once you understand Circle’s true role, you start to see:</p><blockquote><p>Circle isn’t printing money for the government. It’s quietly rebuilding a “parallel dollar system.”</p></blockquote><h2 id="On-Chain-vs-Off-Chain-Dollar-Systems"><a href="#On-Chain-vs-Off-Chain-Dollar-Systems" class="headerlink" title="On-Chain vs. Off-Chain Dollar Systems"></a>On-Chain vs. Off-Chain Dollar Systems</h2><p>We can deepen our understanding of Circle’s role by comparing the traditional off-chain dollar system with its on-chain counterpart:</p><table><thead><tr><th>Dimension</th><th>Off-Chain (Traditional)</th><th>On-Chain (Emerging)</th></tr></thead><tbody><tr><td>Currency Issuance</td><td>The Fed creates digital dollars (Fedwire settlement)</td><td>Circle mints USDC</td></tr><tr><td>Reserve Management</td><td>The Fed holds Treasuries, controls benchmark rates</td><td>Circle buys Treasuries, earns interest spreads</td></tr><tr><td>Monetary Policy</td><td>Interest rates + QE&#x2F;QT + reverse repo</td><td>No active policy; minting&#x2F;burning driven by user demand</td></tr><tr><td>Distribution</td><td>Commercial banking system + SWIFT</td><td>Wallets + DEX + Coinbase + on-chain contracts</td></tr><tr><td>Clearing System</td><td>Fedwire &#x2F; CHIPS &#x2F; bank intranets</td><td>The blockchain itself (e.g., Ethereum, Solana)</td></tr></tbody></table><p>So we can say:</p><blockquote><p>Circle is the “shadow Fed” on chain – it doesn’t hold legal monetary authority, but it performs a subset of the Fed’s functions.</p></blockquote><p>It can’t set interest rates, but it created an alternative dollar supply channel.<br>It has no monetary policy tools, but its minting behavior affects on-chain dollar liquidity.<br>It doesn’t target inflation, but its balance sheet is already on par with some national monetary authorities.</p><p>The Fed uses QE to control off-chain dollar liquidity.<br>Circle uses USDC to construct on-chain dollar liquidity.<br>Both are backed by U.S. Treasuries, both “manufacture credit” – but through different channels, logic, and cadence.</p><h2 id="A-Testing-Ground-for-a-New-Monetary-Order"><a href="#A-Testing-Ground-for-a-New-Monetary-Order" class="headerlink" title="A Testing Ground for a New Monetary Order"></a>A Testing Ground for a New Monetary Order</h2><p>Most people’s gut reaction to USDC’s operating model is: “Isn’t this just a compliant stablecoin?”</p><p>But when you place it in the broader context of the dollar system, you realize it’s actually a “modular restructuring” of the entire dollar monetary mechanism. It doesn’t replace the central bank, but it is unbundling the Fed’s monolithic system into smaller, more flexible functional components and handing them to the market.</p><p>One of the most profound shifts:</p><blockquote><p>Dollar credit is moving from “central bank endorsement” to a hybrid model of “Treasuries + code-based custody.”</p></blockquote><h3 id="Central-Bank-Credit-vs-Treasury-Credit-An-Institutional-Separation-Experiment"><a href="#Central-Bank-Credit-vs-Treasury-Credit-An-Institutional-Separation-Experiment" class="headerlink" title="Central Bank Credit vs. Treasury Credit: An Institutional Separation Experiment"></a>Central Bank Credit vs. Treasury Credit: An Institutional Separation Experiment</h3><p>In the traditional dollar system, the Fed and the Treasury are institutionally independent but operationally intertwined:</p><ul><li>The Fed controls liquidity through QE (Quantitative Easing) &#x2F; QT (Quantitative Tightening)</li><li>Treasuries are a tool for fiscal spending; the Fed indirectly supports fiscal deficits by buying bonds</li><li>The result is a “credit loop”: the state prints money, the state issues debt, the state circulates currency, the state redeems it</li></ul><p>USDC’s model completely unbundles this loop:</p><ul><li>It anchors to Treasuries only, not central bank credit</li><li>Circle manages the assets, code executes redemptions, users determine demand</li><li>The Fed is absent, the Treasury hasn’t authorized anything – yet the dollar is born anyway, and it moves faster than its off-chain counterpart</li></ul><p>It’s as if a “simplified Fed” has been replicated through market mechanisms – and it’s working.</p><h3 id="Advantages-of-the-Credit-Separation-Model"><a href="#Advantages-of-the-Credit-Separation-Model" class="headerlink" title="Advantages of the Credit Separation Model"></a>Advantages of the Credit Separation Model</h3><table><thead><tr><th>Dimension</th><th>Traditional Central Bank System</th><th>Circle&#x2F;USDC Model</th></tr></thead><tbody><tr><td>Credit Anchor</td><td>The Fed’s policy credibility</td><td>U.S. Treasury sovereign credit</td></tr><tr><td>Minting Mechanism</td><td>Fed-driven, influences bank lending via interest rates</td><td>Market-driven: users deposit fiat, automatic minting</td></tr><tr><td>Issuance Efficiency</td><td>Depends on banking system, clearing networks, regulatory channels</td><td>No intermediaries, real-time on-chain settlement, globally accessible</td></tr><tr><td>Risk Structure</td><td>Centralized; Fed policy errors become systemic risk</td><td>Distributed, replaceable, auditable, more resilient</td></tr><tr><td>Transparency</td><td>Black-box policy; Fed balance sheet not disclosed in real time</td><td>Monthly reserve disclosures, third-party audits</td></tr><tr><td>Policy Neutrality</td><td>Serves economic goals (employment, inflation, fiscal)</td><td>Only handles clearing and minting – closer to the essence of money</td></tr></tbody></table><p>In other words:</p><blockquote><p>What Circle and USDC have done is transform “money” from a policy tool back into a settlement asset, unbundling the central bank into three modules: Treasuries + code + API.</p></blockquote><p>In a sense, this isn’t just a protocol-level restructuring of the dollar – it’s a trial run for the entire global monetary system’s transition toward “financial SaaS.”</p><p>You no longer need a sovereign government’s endorsement to issue currency. You take a U.S. Treasury bond, connect it to a smart contract, generate a “dollar replica,” and send it to any chain, any country, any wallet.</p><p>That’s USDC, and that’s the real logic behind <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>.</p><h2 id="The-Securitization-of-Seigniorage"><a href="#The-Securitization-of-Seigniorage" class="headerlink" title="The Securitization of Seigniorage"></a>The Securitization of Seigniorage</h2><p>If Circle is the “issuing bank” of the on-chain dollar system, then <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is essentially the profit certificate of this “shadow Fed” system.</p><p>But this certificate doesn’t derive from traditional tech growth metrics – not DAU, not GMV, not subscription user growth curves. It derives from the dividend of an institutional restructuring:</p><p>The Fed won’t build a digital dollar, but the market needs one.</p><ul><li>The government won’t issue a global dollar API, but capital has already moved ahead.</li><li>Coinbase, Visa, BlackRock – traditional financial giants are all betting on Circle’s new order.</li><li>Circle’s revenue is pegged to Treasury yields, and Treasuries are the deepest, most stable asset pool on the planet.</li></ul><p>So buying <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> isn’t just buying a Web3 company or betting on stablecoin demand growth. It’s:</p><blockquote><p>Participating in the securitized dividend of the dollar credit outsourcing process.</p></blockquote><p>This is institutional arbitrage, and possibly a paradigm shift: <strong>if an increasing share of dollar growth is issued on chain, then CRCL isn’t just an agent – it becomes a semi-institutional actor, one of the holders of digital seigniorage.</strong></p><p>We don’t yet know if this model can mature into a genuine new order, or if regulators will ultimately allow it to scale. But we do know one thing:</p><p>It’s already ahead. And it’s profitable.</p><h2 id="Next-The-Contradictory-Unity-of-USDC-and-Bitcoin"><a href="#Next-The-Contradictory-Unity-of-USDC-and-Bitcoin" class="headerlink" title="Next: The Contradictory Unity of USDC and Bitcoin"></a>Next: The Contradictory Unity of USDC and Bitcoin</h2><p>In a sense, <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> and Bitcoin represent two diametrically opposed financial philosophies:</p><ul><li>Bitcoin is decentralized, stateless, anti-regulatory.</li><li>USDC is centralized, regulable, and tethered to U.S. fiscal policy.</li></ul><p>But precisely because of this, they don’t structurally exclude each other – they may even be complementary:</p><ul><li>Bitcoin is digital gold, the hard asset that anchors on-chain “store of value.”</li><li>USDC is the digital dollar, the bridge and fuel for on-chain liquidity.</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;China’s digital yuan project dates back to 2014, with official pilot programs launching in 2020. From Beijing and Shenzhen to Chengdu</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>Why I Went All In on CRCL</title>
    <link href="https://johnsonlee.io/2025/06/22/why-i-went-all-in-on-circle.en/"/>
    <id>https://johnsonlee.io/2025/06/22/why-i-went-all-in-on-circle.en/</id>
    <published>2025-06-22T16:00:00.000Z</published>
    <updated>2025-06-22T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>In the previous post <a href="./no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle.md">No Time to Think: From Bottom-Fishing Google&#x2F;Tesla to Going All In on Circle</a>, I mentioned making the all-in decision on gut instinct. Why would I go all in on something I hadn’t had time to research deeply? The story starts with <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> and <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a>.</p><p>In May 2024, Nvidia’s earnings blew past expectations and the stock surged 25% after hours. I’d been looking for a quick earnings trade, but by the time I noticed the anomaly, the price had already broken through $1,000. Instead of chasing, I shorted it. The market taught me a lesson on the spot.</p><p>Over the following months, Nvidia and Tesla were practically chart-topping twins. Shorting <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> cost me that entire rally. Fortunately, I caught the <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> wave in 2024 and rode it hard.</p><p>I hadn’t done deep research on <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> yet, but the feeling it gave me was unmistakable – this wasn’t an ordinary hot stock. It was a <strong>“structural anomaly”</strong> – comparable not to Coinbase or PayPal, but to Tesla in 2020 and NVDA in 2023.</p><h2 id="Paradigm-Rupture"><a href="#Paradigm-Rupture" class="headerlink" title="Paradigm Rupture"></a>Paradigm Rupture</h2><p>In my trading framework, every stock’s movement should have a logical boundary. Technical structure corresponds to a confidence threshold; even sentiment-driven runs have a ceiling. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> was an exception.</p><p>Two weeks after its IPO, the price action practically ignored chip density zones and sentiment recovery patterns. Volume kept setting new records, and volatility looked more like crypto than a Nasdaq-listed company. Most people assumed it was retail mania, but for me, this kind of price action only makes sense under one condition: the market fundamentally cannot price it. I’ve experienced this feeling only a handful of times.</p><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> gave me that same shock. It wasn’t a technical breakdown – it was a paradigm rupture. Not market-maker shakeouts, but the old pricing system going completely offline. If you’re still explaining it with “fair valuation,” “short-term pullback,” or “technically overbought,” you’re navigating a spaceship with a sea chart.</p><p>When you can’t even judge whether your inability to judge is itself reasonable, benchmarking becomes essential.</p><p>After a 300%+ rally, <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>‘s market cap was still under $50 billion – less than <a href="https://finance.yahoo.com/quote/CPNG">$CPNG</a>. The latter built its business on subsidized logistics and warehouses, grinding margins and inventory in a closed domestic market. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is turning dollars into on-chain assets and reorganizing the global payment network at the protocol layer.</p><p>Then look at Tether, isolated from the regulated world, with an IPO valuation of $500 billion. $50 billion vs. $500 billion – that’s absurd.</p><p>This clearly doesn’t add up.</p><blockquote><p>This is the market’s systematic mispricing of a higher-dimensional narrative through a lower-dimensional lens.</p></blockquote><h2 id="What-Capital-Actually-Wants"><a href="#What-Capital-Actually-Wants" class="headerlink" title="What Capital Actually Wants"></a>What Capital Actually Wants</h2><p>By mid-2024, the post-split <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> frenzy had cooled. In July it dipped below $100, and now it’s range-bound around $140. <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> had also quadrupled that year – fueled by the stock split, Robotaxi hype, and Musk’s political maneuvering – before exhaustion set in.</p><p>These experiences taught me a key lesson: traditional valuation methods break down in the face of “narrative assets.”</p><p>Capital doesn’t come to discover value. Capital comes to <strong>find a narrative outlet.</strong></p><p>And when <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> and <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> can no longer contain the flood of capital, the market will inevitably seek the next vessel with global, institutional, and monetary-scale imagination.</p><p>This vessel must be new enough, “legitimate” enough, global enough, and capable of telling the grand story of “dollars beyond the dollar.”</p><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is that story.</p><h2 id="It’s-Not-Me-Going-All-In-–-It’s-the-Era"><a href="#It’s-Not-Me-Going-All-In-–-It’s-the-Era" class="headerlink" title="It’s Not Me Going All In – It’s the Era"></a>It’s Not Me Going All In – It’s the Era</h2><p>If price action is a signal, then policy shifts are the tectonic movement behind it. The <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> explosion isn’t just a speculation wave born from market sentiment – it looks more like a larger trend breaking through at a local point.</p><p>Starting in the second half of 2024, U.S. stablecoin regulation began loosening noticeably. The Clarity for Payment Stablecoins Act was put back on the agenda, with stablecoins recognized for the first time as “payment financial instruments” rather than securities or speculative assets. The Fed and Treasury also began tacitly allowing compliant stablecoins like USDC into traditional bank clearing networks.</p><p>Trump not only publicly backed the USD1 project but signed executive orders promoting “legal, compliant U.S. dollar stablecoins,” explicitly positioning stablecoins as part of U.S. dollar sovereignty extension and global payment dominance. This aligns perfectly with MAGA’s strategic objectives – stablecoins are a key tool for realizing that vision.</p><p>So going all in isn’t gambling on a random theme. It’s acknowledging that capital and policy are moving in lockstep on this new narrative, and <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is the first-mover vehicle.</p><h2 id="A-“New-Species”-in-U-S-Equities"><a href="#A-“New-Species”-in-U-S-Equities" class="headerlink" title="A “New Species” in U.S. Equities"></a>A “New Species” in U.S. Equities</h2><p>Many people treat <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> as a “crypto concept stock,” or compare it to Coinbase or PayPal, or even more crudely understand it as a “blockchain fintech company.” But once you grasp the structure behind <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>, the more accurate analogy becomes clear:</p><p>It’s not equity, not a token, and not a tech product. It’s a “securitized expression” of the dollar system.</p><p>In the past, investing in U.S. stocks – whether tech, financials, or AI concepts – was fundamentally about valuing the profitability of a business model. Even narrative juggernauts like Tesla and Nvidia still anchored to revenue, profit, and free cash flow. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> operates on entirely different logic.</p><p>Its fundamentals aren’t the income statement – they’re network scale. Not user growth, but the custodial depth of circulating dollar assets. Not revenue acceleration, but how much “on-chain dollar” migration it can channel.</p><p>This kind of company doesn’t fit traditional sector classifications. It’s a sort of institutional-architecture API that enables the dollar – the world’s dominant reserve asset – to be exported more efficiently, transparently, and programmably across the globe.</p><p>Traditional financial companies are users of the dollar. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is becoming an infrastructure provider for the dollar.</p><p>More precisely, what it provides isn’t the dollar itself, but “the dollar as a network.”</p><p>U.S. equities have never seen a company like this. It’s not an extension of traditional finance, nor a repackaging of DeFi. It’s an entity building a bridge between “old institutions” and “new technology.” It must satisfy American compliance while operating globally; it’s both a technology service company and an entity with currency-grade influence.</p><p>It’s not new technology. It’s new sovereignty.</p><h2 id="What-Is-Circle-Exactly"><a href="#What-Is-Circle-Exactly" class="headerlink" title="What Is Circle, Exactly?"></a>What Is Circle, Exactly?</h2><p>Circle was founded in 2013 as a U.S.-based fintech company. It started as a crypto payments platform before pivoting to become a stablecoin issuer. Its flagship product – USDC (USD Coin) – is currently the world’s second-largest stablecoin, behind only Tether (USDT).</p><p>Unlike most “coin-issuing companies,” Circle has been compliance-first from day one:</p><ul><li>Headquartered in Boston, USA</li><li>Holds money service business (MSB) licenses in multiple states</li><li>All USDC reserves are subject to third-party audits</li><li>Supports institutional-grade integration (banks, brokerages, financial APIs)</li><li>It’s not a crypto cowboy operation – it’s a Wall Street-pedigreed “compliant stablecoin institution.” The investor roster reflects this:<ul><li>BlackRock is a strategic shareholder</li><li>Coinbase co-launched USDC with Circle</li></ul></li></ul><p>In 2022, Circle originally planned a SPAC listing but shelved it due to regulatory uncertainty.</p><h3 id="What-Is-CRCL"><a href="#What-Is-CRCL" class="headerlink" title="What Is CRCL"></a>What Is CRCL</h3><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is Circle’s NYSE ticker after going public via a reverse merger. It represents equity in Circle the company.</p><p>It’s not a stablecoin, and it doesn’t peg to a stablecoin’s price – but it is pegged to USDC network growth.</p><p>Put simply:</p><blockquote><p>USDC is the product; CRCL is the stock of the company behind that product.</p></blockquote><p>Think of it like:</p><ul><li>Apple makes the iPhone -&gt; iPhone is the product, AAPL is the equity</li><li>Circle issues USDC -&gt; USDC is the product, CRCL is the equity</li></ul><p>What’s special is that USDC itself doesn’t charge fees or earn money the way traditional financial products do. Its value derives from several sources:</p><ul><li>Assets under management (AUM): Total USDC issuance x interest rate &#x3D; revenue</li><li>Clearing channels and API monetization: Enterprises settle on-chain funds via Circle’s APIs</li><li>Network effects and integration depth: The more financial institutions, wallets, and exchanges integrate USDC, the stronger Circle’s control</li></ul><p>So CRCL’s value doesn’t come from “how much profit it made” – it comes from its position as the hub of the dollar token network.</p><h3 id="The-Misconception-About-“Circle-Giving-50-of-Profits-to-Coinbase”"><a href="#The-Misconception-About-“Circle-Giving-50-of-Profits-to-Coinbase”" class="headerlink" title="The Misconception About “Circle Giving 50% of Profits to Coinbase”"></a>The Misconception About “Circle Giving 50% of Profits to Coinbase”</h3><p>In Circle’s business model, Coinbase does take a revenue share, but it’s far from hollowing out the company. Many people see “Circle allocates 50% of stablecoin interest income to Coinbase” and conclude the company is basically working for Coinbase, making <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> not worth investing in. This is a serious misreading.</p><p>Let’s restore the original terms:</p><blockquote><p>Under the 2023 partnership agreement between Circle and Coinbase, the “Net Interest Income” from USDC-related revenue is split 50&#x2F;50, provided that:</p></blockquote><ul><li>The USDC was deposited or generated by Coinbase users</li><li>The interest income comes from Circle’s reserve assets (e.g., Treasury bills, cash)</li></ul><p>Sounds scary? Not really. Net interest income is the main revenue driver, but it’s not all of it, and the “tax” doesn’t apply to everything:</p><p>The real logic:</p><ul><li>Only USDC from Coinbase channels gets the 50&#x2F;50 split</li><li>USDC from Circle’s own channels, enterprise APIs, cross-border settlement, and on-chain native issuance are unaffected</li><li>Most importantly: Coinbase itself is a major Circle shareholder</li></ul><p>This is internal profit restructuring, not channel exploitation.</p><p>You can think of it this way: Coinbase helps Circle mint more USDC, handles KYC, and manages user operations, then shares the on-chain interest spread from that portion. It’s not plundering Circle’s core revenue.</p><p>One-line summary:</p><blockquote><p>Circle doesn’t “give away” profits to Coinbase – it “shares” profits with its primary distribution channel, and Coinbase is also a stakeholder.</p></blockquote><p>This is like Apple sharing iPhone distribution profits with carriers who also happen to be Apple shareholders – that’s in-system synergy, not being hollowed out.</p><p>So claims like “Circle has no profit” or “CRCL isn’t worth investing in” are mostly built on secondhand misreadings and shallow analysis. Once you understand the structure, you realize: <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is a systemic asset, not a wage-earner token.</p><h2 id="USDC-vs-USDT"><a href="#USDC-vs-USDT" class="headerlink" title="USDC vs. USDT"></a>USDC vs. USDT</h2><p>Many people see USDC and USDT as “functionally similar, logically redundant” stablecoins, differing only in that “one is safer, the other more widespread.” But to truly understand <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>, you need to see the fundamental divide between these two projects:</p><p>The difference between USDC and USDT isn’t about users, audits, or compliance details – they represent two entirely different monetary orders.</p><table><thead><tr><th>Metric</th><th>USDC (Circle)</th><th>USDT (Tether)</th></tr></thead><tbody><tr><td>Issuer</td><td>Circle (U.S. company)</td><td>Tether Ltd (BVI)</td></tr><tr><td>Compliance</td><td>Licensed, U.S.-regulated, audited</td><td>No effective regulation, partial reserve disclosure</td></tr><tr><td>Reserves</td><td>Primarily U.S. Treasuries + cash equivalents</td><td>Previously exposed to commercial paper, crypto assets</td></tr><tr><td>Audits</td><td>Regular third-party audits + on-chain transparent addresses</td><td>Inconsistent disclosure, multiple delays</td></tr><tr><td>Backers</td><td>BlackRock, Coinbase, Visa</td><td>Bitfinex-affiliated, opaque support</td></tr><tr><td>Use cases</td><td>CEX, DeFi, enterprise on-chain payments</td><td>Primarily CEX, gray-area off-chain transfers</td></tr></tbody></table><h3 id="The-Core-Difference-Isn’t-On-Chain-–-It’s-in-the-Power-Structure"><a href="#The-Core-Difference-Isn’t-On-Chain-–-It’s-in-the-Power-Structure" class="headerlink" title="The Core Difference Isn’t On-Chain – It’s in the Power Structure"></a>The Core Difference Isn’t On-Chain – It’s in the Power Structure</h3><p>USDT was born to circumvent U.S. financial controls, enabling global capital to “secretly use dollars” on-chain. It’s a loophole in the dollar system, a byproduct of gray-zone arbitrage.</p><p>USDC emerged as the U.S. proactively embracing this demand and bringing it under regulation. It’s not a tech product – it’s an iterative interface for dollar governance.</p><p>To put it bluntly:</p><ul><li>USDT is the “groundwater” of dollar hegemony</li><li>USDC is the “tap water” the U.S. officially lets you access</li><li>One grows in the gray zone; the other grows within the rules.</li></ul><h3 id="USDT-Is-a-Side-Effect-of-Dollar-Runaway-USDC-Is-an-Extension-of-Dollar-Order"><a href="#USDT-Is-a-Side-Effect-of-Dollar-Runaway-USDC-Is-an-Extension-of-Dollar-Order" class="headerlink" title="USDT Is a Side Effect of Dollar Runaway; USDC Is an Extension of Dollar Order"></a>USDT Is a Side Effect of Dollar Runaway; USDC Is an Extension of Dollar Order</h3><p>USDT is a side effect of dollar demand – a conspiracy between offshore markets and on-chain capital. Its existence proves the dollar is so useful that everyone wants to bypass the rules to “bootleg a copy.”</p><p>USDC is part of dollar infrastructure – the U.S. government’s institutional attempt to legitimize this demand, bringing it into the regulatory and financial settlement framework.</p><p>Behind this is an even deeper strategic question:</p><blockquote><p>Will the future dollar maintain global dominance through Treasuries + SWIFT, or rebuild its infrastructure through compliant on-chain stablecoins?</p></blockquote><p>USDC is the answer. CRCL is the chip.</p><p>So if you’re dismissing CRCL just because “USDC has less market share than USDT,” that’s like writing off Apple in 2004 because Nokia had the highest sales volume – you’re ignoring that the structure is changing.</p><p>And once the structure changes, the valuation logic changes with it.</p><h2 id="Next-Up-Circle-–-The-On-Chain-Fed"><a href="#Next-Up-Circle-–-The-On-Chain-Fed" class="headerlink" title="Next Up: Circle – The On-Chain Fed"></a>Next Up: Circle – The On-Chain Fed</h2><p>From a technical perspective, USDC is a stablecoin. From a financial perspective, <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is equity in the on-chain dollarization of the world. But from an institutional perspective, all of this is merely the first step in America’s reinvention of its monetary dominance.</p><p>The Fed can’t directly participate in every cross-border payment or every on-chain transaction. But it can permit a compliant, trustworthy, transparent “dollar replica” to play that role.</p><p>USDC, then, isn’t just a stablecoin. It’s a “delegated intermediary of dollar governance.”</p><p>And <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> is the control-premium expression of that system.</p><p>In the next post, we’ll dive deeper into:</p><ul><li>Circle: More Than a Mint</li><li>The On-Chain &#x2F; Off-Chain Dollar System</li><li>The Testing Ground for a New Monetary Order</li><li>The Securitization of Seigniorage</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;In the previous post &lt;a href=&quot;./no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle.md&quot;&gt;No Time to Think: From</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>为什么 All in CRCL?</title>
    <link href="https://johnsonlee.io/2025/06/22/why-i-went-all-in-on-circle/"/>
    <id>https://johnsonlee.io/2025/06/22/why-i-went-all-in-on-circle/</id>
    <published>2025-06-22T16:00:00.000Z</published>
    <updated>2025-06-22T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>在上一篇 <a href="./no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle.md">无暇思考：从抄底 Google&#x2F;Tesla 到 All in Circle</a> 中有提到，我凭直觉做出 All in 的决策，为什么会 All in 一个还没来得及深入研究的东西呢？这还得从 <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> 和 <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> 说起。</p><p>2024 年 5 月，Nvidia 财报爆炸式超预期，盘后一口气拉了 25%。我原本只是想博个短线财报套利，结果等我意识到异动异常，股价已经突破 1,000 美元。我没追多，反而选择做空，结果……被市场当场教做人。</p><p>那之后的几个月，Nvidia 和 Tesla 几乎天天都是霸榜兄弟。做空 <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> 让我没能吃上那波涨幅。好在 2024 年 <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> 这波行情赶上了，狠狠地吃了一波。</p><p>虽然还没来得及深入研究 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，但它给我的感觉——不是普通热股，它是一种<strong>「结构异动」</strong>——类似的不是 Coinbase，也不是 PayPal，而是 2020 的 Tesla、2023 的 NVDA。</p><h2 id="范式断裂"><a href="#范式断裂" class="headerlink" title="范式断裂"></a>范式断裂</h2><p>在我的交易体系里，每一支股票的涨跌都应有其逻辑边界。技术结构对应信心阈值，情绪驱动也有上限。<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 是个例外。</p><p>它刚上市两周，走势几乎无视筹码密集区和情绪修复规律。成交量不断刷新，波动率像极了币圈，而不是纳斯达克挂牌公司。大多数人以为这只是散户爆炒，但对我来说，这种走势只有在一个前提下才成立：市场对它根本无法定价。类似的感受，我只在极少数时刻经历过。</p><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 给我同样的震撼。它不是技术破位，而是范式破裂；不是主力洗盘，而是旧定价体系彻底失灵。这个时候，如果你还在用“合理估值”“短期回调”“技术超买”来解释它，就等于拿航海图去导航太空船。</p><p>当无法判断本身是否合理时，Benchmark （对标）法就是一个重要的方法。</p><p>经历了 300%+ 的上涨的 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 市值也才不到 500 亿，还不如 <a href="https://finance.yahoo.com/quote/CPNG">$CPNG</a>。后者靠补贴物流、堆仓库起家，在一个封闭内需市场上卷毛利、卷库存；而 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> ，是把美元变成链上资产、在全球范围内重新组织支付网络的底层协议。</p><p>再看看隔离的 Tether，IPO 估值高达 5000 亿，500 vs 5000，这不搞笑嘛。</p><p>这明显不合理嘛！</p><blockquote><p>这是低维市场对高维叙事的系统性误判</p></blockquote><h2 id="资本的真实需求"><a href="#资本的真实需求" class="headerlink" title="资本的真实需求"></a>资本的真实需求</h2><p>2024 年中，<a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> 拆股后的狂热逐渐冷却，7 月一度回调至 $100 以下，如今横盘在 $140 左右；<a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> 在那一年也涨了超过 4 倍，从拆股消息、Robotaxi、马斯克政治动作一路顶到天花板，最终疲态尽显。</p><p>这些经历让我意识到一个关键点：传统估值方法在这些“叙事资产”面前是失效的。</p><p>因为资本不是来做价值发现的，资本是来「寻找叙事出口」的。</p><p>而当 <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a> 和 <a href="https://finance.yahoo.com/quote/TSLA">$TSLA</a> 的故事已经装不下海量资金时，市场必然会寻找下一个具有全球性、制度性、货币性想象空间的容器。</p><p>这个容器，必须足够新、足够“合法”、足够全球，同时必须能讲出“美元之外的美元”的大故事。</p><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 就是那个故事。</p><h2 id="All-in-的不是我，是时代"><a href="#All-in-的不是我，是时代" class="headerlink" title="All in 的不是我，是时代"></a>All in 的不是我，是时代</h2><p>如果说价格行为是一种信号，那政策异动就是信号背后的地壳运动。<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的爆发，不只是市场情绪堆出来的投机潮，更像是一个更大趋势在局部突破了封锁线。</p><p>2024 年下半年开始，美国稳定币监管出现明显松动。《Clarity for Payment Stablecoins Act》重新被提上议程，稳定币首次被视作“支付型金融工具”而非证券或投机品，同时，美联储与财政部也开始默许 USDC 等合规稳定币进入传统银行清算网络。</p><p>Trump 不仅公开支持由其支持的 USD1 项目，还签署行政令，推动“合法合规的美元稳定币”，明确将稳定币作为美元主权延续与全球支付主权的一部分，这与 MAGA 在战略上的目标是完全一致的，也是 Trump 实现 MAGA 的一个重要手段和工具。</p><p>所以 All in 不是在赌个随机题材，而是在承认：资本与政策已经同步布局这个新叙事，<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 是首发壳。</p><h2 id="美股结构里的“新物种”"><a href="#美股结构里的“新物种”" class="headerlink" title="美股结构里的“新物种”"></a>美股结构里的“新物种”</h2><p>很多人把 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 当作“加密概念股”来看待，或者把它类比为 Coinbase、PayPal，甚至更低级地把它理解为一家“区块链金融公司”。但真正理解了 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 背后的结构之后，我意识到一个更准确的类比是：</p><p>它不是股权，不是代币，也不是科技产品，而是一种美元系统的“股份化表达”。</p><p>我们过去投资美股，无论是科技股、金融股、还是 AI 概念，其本质都是对某种商业模式的盈利能力进行估值。哪怕是特斯拉和英伟达这种超级叙事股，说到底仍然挂钩收入、利润、自由现金流。但 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 完全不是这个逻辑。</p><p>它的基本面，不是收入报表，而是网络规模。不是用户增长，而是流通美元的资产托管深度。不是营收增速，而是它能承载多少“链上美元”的迁移通道。</p><p>这种公司，不属于传统行业分类。它是某种制度性架构的 API，让美元这个全球霸权资产，有机会以一种更高效、透明、可编程的方式输出到世界各地。</p><p>传统意义上的金融公司，是美元的使用者；而 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，正在变成美元的基础设施提供者。</p><p>更准确地说，它提供的不是美元，而是“美元作为一种网络”的可能性。</p><p>这种公司，美股历史上没有。它不是传统金融的延申，也不是 DeFi 的再包装，而是一个在「旧制度」和「新技术」之间建立桥梁的实体。既要满足美式合规，也要具备全球运行能力；既是技术服务公司，又隐含货币级别的影响力。</p><p>它不是新科技，而是新主权。</p><h2 id="Circle-到底是什么？"><a href="#Circle-到底是什么？" class="headerlink" title="Circle 到底是什么？"></a>Circle 到底是什么？</h2><p>Circle 成立于 2013 年，是美国本土的金融科技公司。它最初是一家加密支付平台，后来转型为稳定币发行机构。它的明星产品——USDC（USD Coin），是目前全球第二大稳定币，仅次于 Tether（USDT）。</p><p>和大多数“发币的公司”不同，Circle 从一开始就走合规路线：</p><ul><li>总部设在美国波士顿</li><li>持有多个州的货币服务商牌照（MSB）</li><li>所有 USDC 背后资产均须受第三方审计</li><li>支持机构级对接（银行、券商、金融 API）</li><li>它不是币圈土炮，是华尔街出身的“合规稳定币机构”。投资人阵容直接体现这一点：<ul><li>BlackRock 是战略股东</li><li>Coinbase 与其合作推出 USDC</li></ul></li></ul><p>2022 年原本计划 SPAC 上市，但后因监管未决被迫搁置</p><h3 id="CRCL-是什么"><a href="#CRCL-是什么" class="headerlink" title="CRCL 是什么"></a>CRCL 是什么</h3><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 是 Circle 通过反向借壳方式登陆纽交所后的股票代码，代表的是 Circle 这家公司的股权。</p><p>它不是稳定币，也不锚定稳定币的价格，但它锚定了 USDC 网络的增长。</p><p>换句话说：</p><blockquote><p>USDC 是产品，CRCL 是这个产品背后的公司股票。</p></blockquote><p>这就像：</p><ul><li>Apple 推出 iPhone → iPhone 是产品，AAPL 是股权</li><li>Circle 发行 USDC → USDC 是产品，CRCL 是股权</li></ul><p>但特别的是，USDC 本身并不收费，也不以传统金融产品方式赚钱。它的价值更多来自以下几个方面：</p><ul><li>托管资产规模（AUM）：USDC 总发行量 × 利率 &#x3D; 收益</li><li>清算通道和 API 商业化：企业通过 Circle 提供的 API 清算链上资金</li><li>网络效应和集成度：越多金融机构、钱包、交易所集成 USDC，Circle 的控制力就越强</li></ul><p>所以 CRCL 的价值不是来自“赚了多少钱”，而是来自作为美元通证网络的中枢地位。</p><h3 id="对「Circle-要将其-50-利润分给-Coinbase」-的误解"><a href="#对「Circle-要将其-50-利润分给-Coinbase」-的误解" class="headerlink" title="对「Circle 要将其 50% 利润分给 Coinbase」 的误解"></a>对「Circle 要将其 50% 利润分给 Coinbase」 的误解</h3><p>在 Circle 的业务模型里，Coinbase 的确分润，但远没到掏空的地步。很多人看到的那句「Circle 将向 Coinbase 分配 50% 的稳定币利息收入」，就认定这家公司相当于给 Coinbase 打工，<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 不值得投。这是严重误读。</p><p>我们先把原话还原一下：</p><blockquote><p>在 2023 年 Circle 和 Coinbase 签署的合作条款中，USDC 相关收益中的“净利息收益（Net Interest Income）”由双方五五分成，前提是：</p></blockquote><ul><li>该笔 USDC 是由 Coinbase 用户存入或生成的</li><li>利息收益来自于 Circle 持有的托底资产（比如美债、现金）</li></ul><p>听起来很可怕？其实不然。Circle 的收入结构中，净利息收益当然是主力，但并不是全部，更不是“被抽税”的全部：</p><p>✔ 真实逻辑是：</p><ul><li>只有来自 Coinbase 渠道的 USDC 才五五分账</li><li>Circle 自有渠道、企业 API、跨境结算、链上原生发行的 USDC 都不受该协议影响</li><li>更关键的是：Coinbase 本身是 Circle 的大股东</li></ul><p>这相当于内部利润重组而非渠道剥削。</p><p>甚至可以这样理解：Coinbase 帮 Circle 增发 USDC、承接 KYC、负责用户运营，然后共享这部分链上利差，而不是对 Circle 的核心收入进行掠夺。</p><p>一句话总结：</p><blockquote><p>Circle 并没有把利润“分给” Coinbase，而是和主要销售渠道“共享”利润，同时 Coinbase 本身也是利益方。</p></blockquote><p>这就像 Apple 把 iPhone 分销利润分一部分给电信运营商，但运营商也是 Apple 的股东——这叫体系内共赢，不叫被掏空。</p><p>所以，“Circle 没有利润”，“CRCL 不值得投”这类声音，大多建立在二手误读和低维理解上。真正理解它的结构，就知道：<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 是系统性资产，不是打工代币。</p><h2 id="USDC-vs-USDT"><a href="#USDC-vs-USDT" class="headerlink" title="USDC vs USDT"></a>USDC vs USDT</h2><p>很多人把 USDC 和 USDT 看作“功能相似、逻辑重复”的两种稳定币，区别无非是“一个更安全、一个更普及”。但真要理解 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，你必须看清这两个项目之间本质性的分野：</p><p>USDC 和 USDT 的区别，不是用户、审计、合规这些技术细节，而是它们分别代表了两种完全不同的货币秩序。</p><table><thead><tr><th>指标</th><th>USDC（Circle）</th><th>USDT（Tether）</th></tr></thead><tbody><tr><td>发行机构</td><td>Circle（美国公司）</td><td>Tether Ltd（英属维京群岛）</td></tr><tr><td>合规性</td><td>持牌、受美监管、审计合规</td><td>无有效监管、仅披露部分储备</td></tr><tr><td>储备结构</td><td>主要为美国国债+现金等价物</td><td>曾曝出商业票据、加密资产</td></tr><tr><td>审计机制</td><td>定期第三方审计+链上透明地址</td><td>披露不一致、曾多次延期</td></tr><tr><td>支持机构</td><td>BlackRock、Coinbase、Visa</td><td>Bitfinex 关联，支持方模糊</td></tr><tr><td>使用场景</td><td>CEX、DeFi、企业链上支付</td><td>CEX 为主、链下转账灰色地带</td></tr></tbody></table><h3 id="核心区别，不在链上，在权力结构里"><a href="#核心区别，不在链上，在权力结构里" class="headerlink" title="核心区别，不在链上，在权力结构里"></a>核心区别，不在链上，在权力结构里</h3><p>USDT 的诞生，是为了绕开美国金融管制，让全球资本可以在链上“偷偷用美元”做事。它是整个美元体系的漏洞，是灰色套利空间的副产品。</p><p>而 USDC 的出现，是美国主动拥抱这一需求、并将其纳入监管的结果。它不是技术产品，而是美元治理的迭代接口。</p><p>说得再直白一点：</p><ul><li>USDT 是美元霸权的“地下水”</li><li>USDC 是美元官方允许你接的“自来水”</li><li>一个在灰区滋生，一个在规则里成长。</li></ul><h3 id="USDT-是美元失控的副作用，USDC-是美元秩序的延伸"><a href="#USDT-是美元失控的副作用，USDC-是美元秩序的延伸" class="headerlink" title="USDT 是美元失控的副作用，USDC 是美元秩序的延伸"></a>USDT 是美元失控的副作用，USDC 是美元秩序的延伸</h3><p>USDT 是 dollar demand（美元需求）的副作用，是离岸市场和链上资本的共谋，它的存在证明了美元太好用了，以至于所有人都想绕过规则去“仿制一份”。</p><p>而 USDC 是 dollar infrastructure（美元基础设施）的一部分，是美国官方试图通过制度性手段，把这种需求“正名化”，纳入监管、金融系统、结算通道之中。</p><p>这背后其实是一个更深的博弈命题：</p><blockquote><p>未来的美元，是继续靠国债+Swift 维持全球统治，还是用链上合规稳定币重构基础设施？</p></blockquote><p>USDC 是答案，CRCL 是筹码。</p><p>所以你如果只是因为“USDC 市占不如 USDT”而小看 CRCL，那就像 2004 年在诺基亚销量最高时看衰苹果一样——你忽略了结构正在变化。</p><p>而结构一旦变了，估值逻辑也就不一样了。</p><h2 id="下篇预告：Circle-链上的美联储"><a href="#下篇预告：Circle-链上的美联储" class="headerlink" title="下篇预告：Circle - 链上的美联储"></a>下篇预告：Circle - 链上的美联储</h2><p>从技术图景来看，USDC 是稳定币；从金融视角来看，<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 是美元链上化的股份；但从制度视角看，这一切不过是美国在重塑其货币统治方式的第一步。</p><p>美联储不可能直接参与每一笔跨境支付、每一次链上交易；但它可以允许一个合规、可信、透明的“美元副本”来扮演这个角色。</p><p>于是，USDC 不是一个简单的 stablecoin，它是一种“美元治理的委托中介”。</p><p>而 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，就是这个系统背后的控制权溢价表达。</p><p>下篇我们将深入讨论：</p><ul><li>Circle：不只是铸币</li><li>链上&#x2F;链下美元系统</li><li>新货币秩序的试验场</li><li>铸币权的证券化</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;在上一篇 &lt;a href=&quot;./no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle.md&quot;&gt;无暇思考：从抄底 Google&amp;#x2F;Tesla 到 All in</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>无暇思考：从抄底 Google/Tesla 到 All in Circle</title>
    <link href="https://johnsonlee.io/2025/06/21/crcl-01-no-time-to-think/"/>
    <id>https://johnsonlee.io/2025/06/21/crcl-01-no-time-to-think/</id>
    <published>2025-06-21T16:00:00.000Z</published>
    <updated>2025-06-21T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最开始注意到 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，是在富途的“美股异动机会”榜单上。自从 IPO 之后，总是收到关于 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 消息推送，这支股几乎是以“火箭”速度冲上了富途的 「美股异动机会」 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的走势一眼看上去就过热，典型的 IPO 情绪溢价：上市两周，涨了 300%，散户抱团、社媒刷屏、FOMO 情绪浓得像是 2021 年的翻版。毕竟，我的投资风格一直很明确：不追高、专抄底，在回调中去寻找价值，从人弃我取中获得安全边际。而当时的 CRCL，显然还没有进入我的雷达区。<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 上市才十来天，暴涨了 385%，怎么看都不像是那种能跌出机会的标的。更像是已经涨过了头，泡沫高悬，不适合参与。</p><h2 id="轻仓试水：6-17-的回调"><a href="#轻仓试水：6-17-的回调" class="headerlink" title="轻仓试水：6&#x2F;17 的回调"></a>轻仓试水：6&#x2F;17 的回调</h2><p>事情的转折点发生在 6 月 17 日，当天盘前 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 表现出了回调的迹象，于是在盘前小仓位入手了一点。</p><p>盘中确实也迎来了一波较深的回调，一度跌破了前期支撑线。加上木头姐（Cathie Wood）旗下的 ARK 基金在高点却悄悄減持 342,658 股，直接套现 5,170 万美元，市场为之震憾。要知道，她本就是 Circle 的早期投资人，且一直以“长期主义”著称，结果却在二级市场闪电落袋为安。</p><p>当了解到方舟的原本总共持有 450 万股 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 后，掐指一算，減持的 342,658 股占总仓位不过才 7.6% ，但木头姐的减持力度虽然很小，但这个性质来看，有点摸不透后续是否还会持续减持</p><p>开盘急拉之后的跳水看起来更像是震仓，随着主力的震仓，我也比较有克制的补着货，毕竟 <a href="https://finance.yahoo.com/quote/GGLL">$GGLL (2倍做多 Google ETF - Direxion)</a> 和 <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2倍做多 Tesla ETF - Direxion)</a> 占了我 50% 仓位。</p><h2 id="山雨欲来：6-18-清仓大反转"><a href="#山雨欲来：6-18-清仓大反转" class="headerlink" title="山雨欲来：6&#x2F;18 清仓大反转"></a>山雨欲来：6&#x2F;18 清仓大反转</h2><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 经历了前一天的回调，6 月 18 日，盘前表现出上行的迹象，于时准备择机落袋为安。</p><p>而 Tesla 和 Google 的盘前表现平平，自从「马特」决裂风波后，Tesla 大跳水，我也顺势抄了一把 <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2倍做多 Tesla ETF - Direxion)</a> 的底。后来随着两人关系“修复”，Robotaxi 消息放出，Tesla 短线被拉了一波，但很快就开始反复横跳。Google 那边也是一样，$180 久攻不下，始终没能有效站稳。</p><p>与此同时，中东局势开始发酵。以色列与伊朗之间冲突升级，油价波动，美债也有些异动。</p><p>到了盘中，我隐约嗅到了山雨欲来的味道。于是我开始陆续减仓，在 Google 和 Tesla 正式跳水前，<a href="https://finance.yahoo.com/quote/GGLL">$GGLL</a> 和 <a href="https://finance.yahoo.com/quote/TSLL">$TSLL</a> 已经清仓完毕。</p><p>随着 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的不断拉升，等吃到了 10% 的涨幅，也不再贪了，开始分批落袋为安。我的预期涨个 15%～20% 顶天了，于是，到 15% 的时候，已经清了 2&#x2F;3 的仓位了，打算留点底仓位准备睡觉，刚躺下没多久，就被富途的“到价提醒”给惊醒了。</p><p>我滴个天！<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 盘后已过 $200，我一时间都愣住了。这涨幅……不是说好的短线冲高回落吗？我本来预计 15%～20% 差不多封顶了，结果它直接冲破了天花板 。</p><p>我犹豫了几秒，把仅剩下的 1&#x2F;3 仓位也清了。清完之后，顺手挂了个空单——等第二天的回调再吃一遍。</p><p>但命运并没有结束它的玩笑。凌晨，又是一通到价提醒把我惊醒。</p><p>卧擦嘞！<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 盘后直逼 $220，整整拉升了超过 30%。</p><h2 id="理性断裂：下一个-NVDA"><a href="#理性断裂：下一个-NVDA" class="headerlink" title="理性断裂：下一个 $NVDA"></a>理性断裂：下一个 $NVDA</h2><p>那一刻，我脑子里什么逻辑、基本面、利空利多全都清空了，只有一个声音在脑海里响起：</p><blockquote><p>它就是下一个 <a href="(https://finance.yahoo.com/quote/NVDA">$NVDA</a></p></blockquote><p>是的，我承认这是情绪性的决定。</p><p>我不再观望，不再等待逻辑闭环，甚至还没来得及研究清楚它背后到底是个什么结构。</p><p>我直接平掉空单，调转船头，全仓 All In，没有分批，没有犹豫，就是一把梭。</p><p>说实话，当我挂出 All in 单时，我对这家公司知之甚少。只知道它和 USDC 有关，是个发美元稳定币的；名字叫 Circle，但具体做什么？盈利模式？监管结构？毫无概念。</p><p>可这不重要。</p><blockquote><p>2020 年错过了 Tesla，2023 年错过了 Nvidia，但 2025 年不能再错过 Circle。</p></blockquote><p><img src="data:image/png;base64,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" alt="screenshop"></p><h2 id="下一篇预告：为什么我在没研究透的情况下-All-In？"><a href="#下一篇预告：为什么我在没研究透的情况下-All-In？" class="headerlink" title="下一篇预告：为什么我在没研究透的情况下 All In？"></a>下一篇预告：为什么我在没研究透的情况下 All In？</h2><p>在下一篇文章里，我会从头梳理：</p><ul><li>我的决策逻辑</li><li>All In 后对 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的研究成果</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最开始注意到 &lt;a href=&quot;https://finance.yahoo.com/quote/CRCL&quot;&gt;$CRCL&lt;/a&gt;，是在富途的“美股异动机会”榜单上。自从 IPO 之后，总是收到关于 &lt;a</summary>
        
      
    
    
    
    <category term="Investment" scheme="https://johnsonlee.io/categories/Investment/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>No Time to Think: From Buying the Dip on Google/Tesla to All In on Circle</title>
    <link href="https://johnsonlee.io/2025/06/21/crcl-01-no-time-to-think.en/"/>
    <id>https://johnsonlee.io/2025/06/21/crcl-01-no-time-to-think.en/</id>
    <published>2025-06-21T16:00:00.000Z</published>
    <updated>2025-06-21T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I first noticed <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> on Futu’s “US Stock Movers” watchlist. Since its IPO, I’d been getting constant push notifications about <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>. The stock had rocketed up Futu’s “US Stock Movers” list. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>‘s chart screamed overheated at first glance – classic IPO sentiment premium: up 300% in two weeks, retail piling in, social media buzzing, FOMO thick enough to feel like a 2021 flashback. My investing style has always been clear: never chase highs, only buy dips – find value in pullbacks and safety margins in contrarian bets. At the time, CRCL wasn’t anywhere near my radar. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> had been public barely ten days and was up 385%. It didn’t look like the kind of stock that would dip into opportunity. It looked like it had already overshot – foam at the top, not worth touching.</p><h2 id="Testing-the-Waters-The-6-17-Pullback"><a href="#Testing-the-Waters-The-6-17-Pullback" class="headerlink" title="Testing the Waters: The 6&#x2F;17 Pullback"></a>Testing the Waters: The 6&#x2F;17 Pullback</h2><p>The turning point came on June 17th. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> showed signs of a pullback in pre-market, so I took a small position before the open.</p><p>During the session, there was indeed a fairly deep pullback, briefly breaking below the prior support line. On top of that, Cathie Wood’s ARK fund quietly trimmed 342,658 shares at the highs, cashing out $51.7 million. This sent shockwaves through the market. She was an early Circle investor who’d always preached “long-termism,” yet here she was, locking in profits on the secondary market at lightning speed.</p><p>When I learned that ARK originally held a total of 4.5 million shares of <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>, a quick calculation showed the 342,658 shares trimmed were only about 7.6% of the total position. The selling pressure was small in magnitude, but the signal was hard to read – would she keep trimming?</p><p>The post-open pump followed by a sharp drop looked more like a shakeout. As the big players shook the tree, I added cautiously, since <a href="https://finance.yahoo.com/quote/GGLL">$GGLL (2x Bull Google ETF - Direxion)</a> and <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2x Bull Tesla ETF - Direxion)</a> already accounted for 50% of my portfolio.</p><h2 id="Storm-Brewing-The-6-18-Reversal"><a href="#Storm-Brewing-The-6-18-Reversal" class="headerlink" title="Storm Brewing: The 6&#x2F;18 Reversal"></a>Storm Brewing: The 6&#x2F;18 Reversal</h2><p>After the previous day’s pullback, <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> showed pre-market strength on June 18th, so I planned to take profits at the right moment.</p><p>Meanwhile, Tesla and Google were flat in pre-market. Since the “Musk-Altman” feud, Tesla had nosedived and I’d caught the <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2x Bull Tesla ETF - Direxion)</a> dip. Later, as their relationship “mended” and Robotaxi news dropped, Tesla got a short-term pop but quickly resumed choppy trading. Google was the same story – stuck below $180, unable to hold above it.</p><p>At the same time, Middle East tensions were heating up. The Israel-Iran conflict escalated, oil prices swung, and Treasuries showed some unusual moves.</p><p>By midday, I could smell the storm coming. I started trimming. Before Google and Tesla officially dumped, I’d already fully exited <a href="https://finance.yahoo.com/quote/GGLL">$GGLL</a> and <a href="https://finance.yahoo.com/quote/TSLL">$TSLL</a>.</p><p>As <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> kept climbing, I took profits at the 10% gain mark – no point getting greedy. I figured 15-20% was the ceiling. By 15%, I’d sold two-thirds of my position and planned to hold a small core position overnight. I’d barely lain down when Futu’s price alert woke me up.</p><p>Unbelievable. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> was past $200 after hours. I was stunned. This wasn’t supposed to happen – wasn’t this supposed to be a quick pop and fade? I’d pegged 15-20% as the cap, and it had just blown through the ceiling.</p><p>I hesitated for a few seconds, then sold my remaining third. Right after closing, I put on a short – planning to catch the next-day pullback for another ride.</p><p>But fate wasn’t done joking. In the middle of the night, another price alert jolted me awake.</p><p>What the hell. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> was pushing $220 after hours – up over 30%.</p><h2 id="Rationality-Breaks-The-Next-NVDA"><a href="#Rationality-Breaks-The-Next-NVDA" class="headerlink" title="Rationality Breaks: The Next $NVDA"></a>Rationality Breaks: The Next $NVDA</h2><p>In that moment, all logic, fundamentals, bull cases and bear cases evaporated from my mind. There was only one voice echoing in my head:</p><blockquote><p>This is the next <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a></p></blockquote><p>Yes, I admit it was an emotional decision.</p><p>I stopped watching, stopped waiting for the thesis to close, didn’t even have time to research what the company’s structure actually was.</p><p>I closed the short, reversed course, and went all in. No scaling in, no hesitation – just one shot.</p><p>Honestly, when I placed the all-in order, I knew almost nothing about this company. I knew it was connected to USDC, that it issued a dollar stablecoin, and that it was called Circle. But what exactly did it do? Revenue model? Regulatory structure? No clue.</p><p>But none of that mattered.</p><blockquote><p>I missed Tesla in 2020. I missed Nvidia in 2023. I wasn’t going to miss Circle in 2025.</p></blockquote><p><img src="data:image/png;base64,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" alt="screenshop"></p><h2 id="Next-Why-I-Went-All-In-Without-Doing-the-Research"><a href="#Next-Why-I-Went-All-In-Without-Doing-the-Research" class="headerlink" title="Next: Why I Went All In Without Doing the Research"></a>Next: Why I Went All In Without Doing the Research</h2><p>In the next post, I’ll walk through from the beginning:</p><ul><li>My decision-making logic</li><li>What I learned about <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> after going all in</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I first noticed &lt;a href=&quot;https://finance.yahoo.com/quote/CRCL&quot;&gt;$CRCL&lt;/a&gt; on Futu’s “US Stock Movers” watchlist. Since its IPO, I’d been</summary>
        
      
    
    
    
    <category term="Investment" scheme="https://johnsonlee.io/categories/Investment/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>No Time to Think: From Buying the Dip on Google/Tesla to Going All In on Circle</title>
    <link href="https://johnsonlee.io/2025/06/21/no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle.en/"/>
    <id>https://johnsonlee.io/2025/06/21/no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle.en/</id>
    <published>2025-06-21T16:00:00.000Z</published>
    <updated>2025-06-21T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>I first noticed <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> on Futu’s “US Stock Movers” watchlist. Ever since the IPO, I had been getting constant push notifications about <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>. The stock had practically rocketed onto Futu’s “US Stock Movers” list. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>‘s chart screamed overheated at first glance – a textbook IPO sentiment premium: up 300% in two weeks, retail investors piling in, social media buzzing, FOMO thick enough to feel like a 2021 flashback. My investing style has always been clear-cut: never chase highs, only buy dips – find value in pullbacks and build safety margins through contrarian bets. At the time, CRCL was nowhere near my radar. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> had been public barely ten days and was already up 385%. It didn’t look like the kind of stock that would dip into opportunity. More like it had already overshot – foam piled high, not worth touching.</p><h2 id="Testing-the-Waters-The-6-17-Pullback"><a href="#Testing-the-Waters-The-6-17-Pullback" class="headerlink" title="Testing the Waters: The 6&#x2F;17 Pullback"></a>Testing the Waters: The 6&#x2F;17 Pullback</h2><p>The turning point came on June 17. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> showed signs of a pullback in premarket, so I opened a small position before the bell.</p><p>It did pull back sharply intraday, briefly breaking below prior support. On top of that, Cathie Wood’s ARK fund quietly trimmed 342,658 shares at the highs, cashing out .7 million. The market was shaken. After all, she was an early Circle investor who had always preached “long-term conviction” – yet here she was, taking profits at lightning speed on the secondary market.</p><p>When I learned that ARK originally held a total of 4.5 million <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> shares, some quick math showed the 342,658 shares amounted to just 7.6% of her position. The trim was modest in size, but coming from Cathie Wood, the signal was ambiguous – I couldn’t tell whether more selling was on the way.</p><p>The post-open spike followed by a nosedive looked more like a shakeout. I added to my position with discipline as the main players shook out weak hands, since <a href="https://finance.yahoo.com/quote/GGLL">$GGLL (2x Long Google ETF - Direxion)</a> and <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2x Long Tesla ETF - Direxion)</a> still occupied 50% of my portfolio.</p><h2 id="Storm-Brewing-The-6-18-Full-Reversal"><a href="#Storm-Brewing-The-6-18-Full-Reversal" class="headerlink" title="Storm Brewing: The 6&#x2F;18 Full Reversal"></a>Storm Brewing: The 6&#x2F;18 Full Reversal</h2><p>After the previous day’s pullback, <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> showed upward momentum in premarket on June 18. I was getting ready to lock in profits.</p><p>Meanwhile, Tesla and Google were flat in premarket. Ever since the “Musk-Trump” fallout, Tesla had plunged, and I had seized the opportunity to buy the dip on <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2x Long Tesla ETF - Direxion)</a>. Later, as the relationship “mended” and Robotaxi news dropped, Tesla got a short-term pump, but then went right back to chopping around. Google was the same – \80 proved impenetrable, and it never managed to hold above that level.</p><p>At the same time, tensions in the Middle East were escalating. The Israel-Iran conflict intensified, oil prices swung, and Treasuries showed some unusual moves.</p><p>By midday, I could smell the storm coming. I started unwinding positions, and cleared out my <a href="https://finance.yahoo.com/quote/GGLL">$GGLL</a> and <a href="https://finance.yahoo.com/quote/TSLL">$TSLL</a> before Google and Tesla officially rolled over.</p><p>As <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> kept climbing, I rode it to a 10% gain and decided not to get greedy – I started taking profits in batches. My expectation was 15-20% upside at best. By the time it hit 15%, I had already sold two-thirds. I planned to hold the remaining position and go to bed, but shortly after lying down, Futu’s price alert jolted me awake.</p><p>Good lord. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> was already past  in after-hours. I was stunned. This rally… wasn’t it supposed to be a short-term spike and fade? I had figured 15-20% was the ceiling, and it had just blown straight through.</p><p>I hesitated a few seconds, then dumped the last third. After closing, I immediately placed a short – planning to ride the next day’s pullback for another round.</p><p>But fate wasn’t done with its prank. In the middle of the night, another price alert woke me up.</p><p>What the hell. <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> was pushing toward  in after-hours – up over 30%.</p><h2 id="Reason-Breaks-The-Next"><a href="#Reason-Breaks-The-Next" class="headerlink" title="Reason Breaks: The Next"></a>Reason Breaks: The Next</h2><p>In that moment, every shred of logic, fundamentals, bull case, bear case – all wiped clean. Only one voice echoed in my head:</p><blockquote><p>It’s the next <a href="https://finance.yahoo.com/quote/NVDA">$NVDA</a>.</p></blockquote><p>Yes, I admit this was an emotional decision.</p><p>I stopped watching, stopped waiting for the thesis to close, hadn’t even had time to research what the company’s structure actually looked like.</p><p>I covered the short, reversed course, and went all in. No scaling in, no hesitation. One single bet.</p><p>Honestly, when I placed that all-in order, I knew almost nothing about the company. I knew it was related to USDC, that it issued a dollar-pegged stablecoin. The name was Circle, but what exactly did it do? Revenue model? Regulatory structure? No clue.</p><p>But that didn’t matter.</p><blockquote><p>I missed Tesla in 2020, Nvidia in 2023, but I won’t miss Circle in 2025.</p></blockquote><p><img src="data:image/png;base64,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" alt="screenshop"></p><h2 id="Preview-Why-I-Went-All-In-Without-Doing-the-Research"><a href="#Preview-Why-I-Went-All-In-Without-Doing-the-Research" class="headerlink" title="Preview: Why I Went All In Without Doing the Research"></a>Preview: Why I Went All In Without Doing the Research</h2><p>In the next post, I’ll lay out from the beginning:</p><ul><li>My decision-making logic</li><li>What I found when I actually researched <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> after going all in</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;I first noticed &lt;a href=&quot;https://finance.yahoo.com/quote/CRCL&quot;&gt;$CRCL&lt;/a&gt; on Futu’s “US Stock Movers” watchlist. Ever since the IPO, I</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>无暇思考：从抄底 Google/Tesla 到 All in Circle</title>
    <link href="https://johnsonlee.io/2025/06/21/no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle/"/>
    <id>https://johnsonlee.io/2025/06/21/no-time-to-think-from-bottom-fishing-google-tesla-to-going-all-in-on-circle/</id>
    <published>2025-06-21T16:00:00.000Z</published>
    <updated>2025-06-21T16:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最开始注意到 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a>，是在富途的“美股异动机会”榜单上。自从 IPO 之后，总是收到关于 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 消息推送，这支股几乎是以“火箭”速度冲上了富途的 「美股异动机会」 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的走势一眼看上去就过热，典型的 IPO 情绪溢价：上市两周，涨了 300%，散户抱团、社媒刷屏、FOMO 情绪浓得像是 2021 年的翻版。毕竟，我的投资风格一直很明确：不追高、专抄底，在回调中去寻找价值，从人弃我取中获得安全边际。而当时的 CRCL，显然还没有进入我的雷达区。<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 上市才十来天，暴涨了 385%，怎么看都不像是那种能跌出机会的标的。更像是已经涨过了头，泡沫高悬，不适合参与。</p><h2 id="轻仓试水：6-17-的回调"><a href="#轻仓试水：6-17-的回调" class="headerlink" title="轻仓试水：6&#x2F;17 的回调"></a>轻仓试水：6&#x2F;17 的回调</h2><p>事情的转折点发生在 6 月 17 日，当天盘前 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 表现出了回调的迹象，于是在盘前小仓位入手了一点。</p><p>盘中确实也迎来了一波较深的回调，一度跌破了前期支撑线。加上木头姐（Cathie Wood）旗下的 ARK 基金在高点却悄悄減持 342,658 股，直接套现 5,170 万美元，市场为之震憾。要知道，她本就是 Circle 的早期投资人，且一直以“长期主义”著称，结果却在二级市场闪电落袋为安。</p><p>当了解到 ARK 基金的原本总共持有 450 万股 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 后，掐指一算，減持的 342,658 股占总仓位不过才 7.6% ，但木头姐的减持力度虽然很小，但这个性质来看，有点摸不透后续是否还会持续减持</p><p>开盘急拉之后的跳水看起来更像是震仓，随着主力的震仓，我也比较有克制的补着货，毕竟 <a href="https://finance.yahoo.com/quote/GGLL">$GGLL (2倍做多 Google ETF - Direxion)</a> 和 <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2倍做多 Tesla ETF - Direxion)</a> 占了我 50% 仓位。</p><h2 id="山雨欲来：6-18-清仓大反转"><a href="#山雨欲来：6-18-清仓大反转" class="headerlink" title="山雨欲来：6&#x2F;18 清仓大反转"></a>山雨欲来：6&#x2F;18 清仓大反转</h2><p><a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 经历了前一天的回调，6 月 18 日，盘前表现出上行的迹象，于时准备择机落袋为安。</p><p>而 Tesla 和 Google 的盘前表现平平，自从「马特」决裂风波后，Tesla 大跳水，我也顺势抄了一把 <a href="https://finance.yahoo.com/quote/TSLL">$TSLL (2倍做多 Tesla ETF - Direxion)</a> 的底。后来随着两人关系“修复”，Robotaxi 消息放出，Tesla 短线被拉了一波，但很快就开始反复横跳。Google 那边也是一样，$180 久攻不下，始终没能有效站稳。</p><p>与此同时，中东局势开始发酵。以色列与伊朗之间冲突升级，油价波动，美债也有些异动。</p><p>到了盘中，我隐约嗅到了山雨欲来的味道。于是我开始陆续减仓，在 Google 和 Tesla 正式跳水前，<a href="https://finance.yahoo.com/quote/GGLL">$GGLL</a> 和 <a href="https://finance.yahoo.com/quote/TSLL">$TSLL</a> 已经清仓完毕。</p><p>随着 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的不断拉升，等吃到了 10% 的涨幅，也不再贪了，开始分批落袋为安。我的预期涨个 15%～20% 顶天了，于是，到 15% 的时候，已经清了 2&#x2F;3 的仓位了，打算留点底仓位准备睡觉，刚躺下没多久，就被富途的“到价提醒”给惊醒了。</p><p>我滴个天！<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 盘后已过 $200，我一时间都愣住了。这涨幅……不是说好的短线冲高回落吗？我本来预计 15%～20% 差不多封顶了，结果它直接冲破了天花板 。</p><p>我犹豫了几秒，把仅剩下的 1&#x2F;3 仓位也清了。清完之后，反手就挂了个空单——等第二天的回调再吃一遍。</p><p>但命运并没有结束它的玩笑。凌晨，又是一通到价提醒把我惊醒。</p><p>卧擦嘞！<a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 盘后直逼 $220，整整拉升了超过 30%。</p><h2 id="理性断裂：下一个-NVDA"><a href="#理性断裂：下一个-NVDA" class="headerlink" title="理性断裂：下一个 $NVDA"></a>理性断裂：下一个 $NVDA</h2><p>那一刻，我脑子里什么逻辑、基本面、利空利多全都清空了，只有一个声音在脑海里响起：</p><blockquote><p>它就是下一个 <a href="(https://finance.yahoo.com/quote/NVDA">$NVDA</a></p></blockquote><p>是的，我承认这是情绪性的决定。</p><p>我不再观望，不再等待逻辑闭环，甚至还没来得及研究清楚它背后到底是个什么结构。</p><p>我直接平掉空单，调转船头，全仓 All In，没有分批，没有犹豫，就是一把梭。</p><p>说实话，当我挂出 All in 单时，我对这家公司知之甚少。只知道它和 USDC 有关，是个发美元稳定币的；名字叫 Circle，但具体做什么？盈利模式？监管结构？毫无概念。</p><p>可这不重要。</p><blockquote><p>2020 年错过了 Tesla，2023 年错过了 Nvidia，但 2025 年不能再错过 Circle。</p></blockquote><p><img src="data:image/png;base64,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" alt="screenshop"></p><h2 id="下一篇预告：为什么我在没研究透的情况下-All-In？"><a href="#下一篇预告：为什么我在没研究透的情况下-All-In？" class="headerlink" title="下一篇预告：为什么我在没研究透的情况下 All In？"></a>下一篇预告：为什么我在没研究透的情况下 All In？</h2><p>在下一篇文章里，我会从头梳理：</p><ul><li>我的决策逻辑</li><li>All In 后对 <a href="https://finance.yahoo.com/quote/CRCL">$CRCL</a> 的研究成果</li></ul>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最开始注意到 &lt;a href=&quot;https://finance.yahoo.com/quote/CRCL&quot;&gt;$CRCL&lt;/a&gt;，是在富途的“美股异动机会”榜单上。自从 IPO 之后，总是收到关于 &lt;a</summary>
        
      
    
    
    
    <category term="Investing" scheme="https://johnsonlee.io/categories/investing/"/>
    
    
    <category term="Stock" scheme="https://johnsonlee.io/tags/Stock/"/>
    
  </entry>
  
  <entry>
    <title>Booster 5.0.0 版本发布</title>
    <link href="https://johnsonlee.io/2024/07/21/booster-v5-0-0-released/"/>
    <id>https://johnsonlee.io/2024/07/21/booster-v5-0-0-released/</id>
    <published>2024-07-21T22:00:00.000Z</published>
    <updated>2024-07-21T22:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Booster v5.0.0 主要的变更如下：</p><ul><li>支持 AGP 8.0, 8.1, 8.2，不再支持 AGP 8 以下的版本</li><li>移除 <code>booster-android-instrument-shared-preferences</code> 模块</li><li>移除 <code>booster-android-instrument-webview</code> 模块</li><li>移除 <code>booster-task-analyser</code> 模块</li><li>移除 <code>booster-task-check-snapshot</code> 模块</li><li>移除 <code>booster-task-compression-cwebp</code> 模块</li><li>移除 <code>booster-task-compression-pngquant</code> 模块</li><li>移除 <code>booster-task-compression-processed-res</code> 模块</li><li>移除 <code>booster-task-compression</code> 模块</li><li>移除 <code>booster-task-resource-deredundancy</code> 模块</li><li>移除 <code>booster-transform-br-inline</code> 模块</li><li>移除 <code>booster-transform-service-loader</code> 模块</li><li>移除 <code>booster-transform-shared-preferences</code> 模块</li><li>移除 <code>booster-transform-webview</code> 模块</li></ul><blockquote><p>参见：<a href="https://github.com/didi/booster/blob/master/RELEASE-NOTES.md#v4163">Release Notes</a><br>参见：<a href="https://reference.johnsonlee.io/booster">API Rereference</a><br>参见：<a href="https://booster.johnsonlee.io/zh/migration/">Migrate to v5.x</a></p></blockquote>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Booster v5.0.0 主要的变更如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持 AGP 8.0, 8.1, 8.2，不再支持 AGP 8 以下的版本&lt;/li&gt;
&lt;li&gt;移除</summary>
        
      
    
    
    
    <category term="Computer Science" scheme="https://johnsonlee.io/categories/computer-science/"/>
    
    <category term="Open Source" scheme="https://johnsonlee.io/categories/computer-science/open-source/"/>
    
    <category term="Booster" scheme="https://johnsonlee.io/categories/computer-science/open-source/booster/"/>
    
    
    <category term="Booster" scheme="https://johnsonlee.io/tags/Booster/"/>
    
    <category term="ReleaseNote" scheme="https://johnsonlee.io/tags/ReleaseNote/"/>
    
  </entry>
  
  <entry>
    <title>Living in Seoul (1)</title>
    <link href="https://johnsonlee.io/2024/04/27/living-in-seoul-1.en/"/>
    <id>https://johnsonlee.io/2024/04/27/living-in-seoul-1.en/</id>
    <published>2024-04-27T00:00:00.000Z</published>
    <updated>2024-04-27T00:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Time flies. Before I knew it, I’m about to spend my second spring in Seoul. The transition from spring to summer here is neither as crisp as Beijing nor as persistently drizzly as Shanghai. The occasional surprise shower catches young commuters off guard. After weathering life’s own storms, an umbrella has become standard gear for a middle-aged man. I prefer dry weather, but the occasional sprinkle is tolerable.</p><p>My connection with Korea started a decade ago when I joined Samsung China. That’s when I began to learn more about Korean culture, though mostly limited to the food. I never imagined that ten years later, I’d get the chance to pick up where that left off.</p><h2 id="Why-Korea"><a href="#Why-Korea" class="headerlink" title="Why Korea"></a>Why Korea</h2><p>Working abroad was never in my plans. But my company happened to offer an opportunity to relocate to Seoul. The distance wasn’t bad – flying from Beijing to Seoul is actually quicker than going back to my hometown. On top of that, the benefits were compelling: the Korean government offers foreign employees a flat 19% income tax rate for up to 5 years (later extended to 20 years). What does that mean in practice? In China, any income above 960,000 RMB is taxed at 45%. If you only look at cash compensation, HR typically caps it at around 960,000 and fills the rest of the total package with stock options or RSUs. So the cash portion’s effective tax rate isn’t too different from Korea’s 19%. The big difference is in equity. The 45% personal income tax is just the first cut. If the stock price at exercise or RSU vesting is higher than the grant price, there’s a second hit – a 20% capital gains tax waiting for you. A 10 million RMB stock grant shrinks by half before it reaches your pocket. Wouldn’t that sting?</p><p>It stings, sure. But what can you do? As an employee, as long as you’re in the system, there’s absolutely nothing you can do – unless you step outside the system. For high-income earners, the tax benefit is like nectar, tempting and hard to resist. Better yet, Korea’s 19% rate doesn’t tax stock income on the full amount – it taxes the spread (vesting value minus grant value), just like capital gains. Save a few hundred thousand to over a million RMB a year – tell me that’s not sweet.</p><h2 id="Preparations"><a href="#Preparations" class="headerlink" title="Preparations"></a>Preparations</h2><p>From making the decision to being fully ready, the whole process took less than two months. Although Beijing’s COVID restrictions were already easing by late 2022, there were still plenty of hassles. Visas and medical exams alone took about half a month. Applying for the kids’ school took roughly another month from application to acceptance letter. With everything in place, all that was left was packing. Thankfully, the company had vendors providing end-to-end relocation services – from packing to finding a place to live. When I watched 17 boxes of our belongings get shipped out, I finally exhaled. I was worried 17 boxes might be too many – we barely brought any furniture; the only piece was my office chair. Then I heard a colleague shipped over a hundred boxes. OMG, did they move their entire house?</p><h2 id="The-Unexpected-Airport-Welcome"><a href="#The-Unexpected-Airport-Welcome" class="headerlink" title="The Unexpected Airport Welcome"></a>The Unexpected Airport Welcome</h2><p>Right before boarding, I received the contact info for our airport pickup. After about a 2-hour flight, we landed at Incheon Airport. The moment the plane stopped, we heard an announcement calling my wife’s name. I was puzzled: “Did the company send someone to greet us? This doesn’t match my idea of an airport pickup.” I started picturing K-drama scenes of powerful conglomerates controlling everything. “Has Coupang become a chaebol? Their reach extends to civil aviation now?” Then it hit me: “Wait – why are they calling my wife’s name instead of mine?”</p><p>A Korean flight attendant walked straight toward us and “invited” us to deplane first. Under the gaze of the entire cabin, our family of four stepped out. A staff member led us to the arrival hall, where three tall, well-built guys were waiting. Judging by their attire, I quickly realized they weren’t ordinary airport staff – they looked like plainclothes police. In Korean-accented English, one of them asked: “Have you been to Korea before?”</p><p>I’d clearly been watching too many K-dramas. Of course the company pickup would use my name. I replied: “This is our first time in Korea.”</p><p>“What brings you to Korea?” the plainclothes officer continued.</p><p>“I am here for work. I am an employee of Coupang.” (I made a point of mentioning the company name – Coupang is practically a household name in Korea, after all.)</p><p>They checked our passports and let us through. I was completely baffled, with no idea what just happened or why we’d been questioned. Nothing else came of it, and everything went smoothly after leaving the airport. I didn’t give the episode much thought – until my wife’s application for a driver’s license got rejected. The reason: a problem with her entry-exit records. With the help of an assistant from the relocation agency, we finally pieced the story together.</p><p>It turned out my wife’s name and passport number matched those of a Chinese woman who had overstayed in Korea ten years ago. How did we know she overstayed? Because her last immigration record was an entry – with no departure record after that.</p><p>Unbelievable. Of all the odds, this happened to us. Fortunately, our passports were newly issued in 2022. Both the timeline and our old passport numbers proved we had nothing to do with it. The agency wrote us a note in Korean to hand to the local immigration office, which then reprinted a corrected entry-exit record. We finally got the driver’s license.</p><p>We thought that was the end of it. But on our second trip to Seoul, we once again received the “priority deplaning treatment.” After we explained the situation, the plainclothes officers gave us a document with a phone number to call and get the matter resolved for good. I joked to my wife: “Most people don’t get this kind of VIP deplaning service.”</p><p>“The priority deplaning is nice, but the interrogation part isn’t. Next time, let them question you instead.”</p><h2 id="Cost-of-Living"><a href="#Cost-of-Living" class="headerlink" title="Cost of Living"></a>Cost of Living</h2><p>The day we arrived in Seoul, we checked into the Oakwood hotel near Coex. After settling in, it was already evening and we were hungry. We headed out to find some Korean food. We walked a big loop around the block but couldn’t find any restaurants. Walking down the street, I felt like an illiterate person – couldn’t read a single character. The kids were exhausted. We finally spotted a restaurant that looked like a seafood place from its sign. We went up the stairs to the second floor, where a large fish tank sat by the entrance. The server spoke only Korean, which we couldn’t understand. We tried English – she didn’t seem to understand that either. As a last resort, they brought out the only Chinese-speaking person from the kitchen. He spoke broken Chinese, but it was understandable enough. We ordered a few dishes that looked like Shanghai street food. Then the bill came: 140,000 won. I’d never seen a number that big on a restaurant check. It took a moment to register. I pulled out my phone calculator – roughly 750 RMB. For that little bit of food, it would have been 300 RMB tops back home. That was my first visceral encounter with Seoul’s prices.</p><p>The next day, we decided to cook in the hotel. The room had a kitchen with all the utensils. We found a supermarket downstairs. One look at the meat prices – 2,900 won per 100g – and my brain couldn’t map it to Beijing prices fast enough. A head of cabbage: 80 RMB. Ten cloves of garlic (basically 1-2 bulbs): 15 RMB. We didn’t buy much, but the bill came to over 1,000 RMB. Back at the hotel, I used Google Translate to go through the receipt item by item. Prices were roughly 3x Beijing levels. The supermarket downstairs was probably a premium one, so slightly pricier than average. That evening we set up the Coupang app and experienced our own product firsthand. Speaking of which, it was kind of absurd – a dev team of over a hundred people building an app that none of them had actually used as real customers. That’s probably rare even on a global scale. I tried the Rocket Delivery service: fresh groceries arrived at the hotel door at 7 AM sharp, with two ice packs in the delivery box to keep everything fresh. Prices were a bit cheaper than the supermarket downstairs – roughly 2x Beijing levels.</p><p>I’d heard about Seoul’s cost of living before coming. There’s that story about Koreans being amazed at Chinese people scooping watermelon with a spoon. I thought it was a joke. Then I saw the watermelon prices at the supermarket and realized it was no joke at all. Back in Beijing, I already thought a 30 RMB Qilin melon was pricey. Now picture a green-skinned watermelon going for 200 RMB. Forget financial freedom – let’s start with fruit freedom.</p><p>To get a real picture of the annual cost of living in Seoul, I tracked income and expenses every month. After a year, I found that without at least 20,000 RMB per month, life gets pretty tight. And that’s just daily expenses. Add winter coats and a ski trip, and 30,000-40,000 RMB vanishes like nothing – not including rent or the kids’ school fees. On average: 30,000 RMB per month.</p><h2 id="Healthcare"><a href="#Healthcare" class="headerlink" title="Healthcare"></a>Healthcare</h2><p>A few months after arriving, one of the kids got sick with a fever. A late-night ER visit to a nearby hospital started at about 1,500 RMB. Thankfully we had private insurance. Except for dental, it was generally sufficient. As my colleague put it: “If you actually used up the full coverage, you’d basically be on your deathbed.” You have to book appointments in advance, but who knows when they’ll get sick? By the time you’re actually ill, it’s too late. The ER doesn’t solve the problem – it just buys you time.</p><p>At hospitals that supported direct insurance billing, the experience was actually quite good. Someone accompanied you through the entire process, and medication was delivered to your hands. Genuine VIP treatment. Since we don’t speak Korean, every hospital visit was conducted in English. As you can imagine, medical terminology is brutally hard to remember. Every visit doubled as a vocabulary lesson. For particularly obscure terms, the doctor would open Google Translate and explain with Korean-Chinese side-by-side. It worked out fine.</p><p>I remember going to a nearby hospital for a toothache. They immediately took me to get an X-ray. I’d barely ever been to a dentist – the only time was when a tiny Sichuan peppercorn stem got stuck between my molars during hotpot and caused inflammation. I’d never heard of X-rays for a toothache. It scared me. I asked the dental assistant why they wanted an X-ray before I’d even seen the doctor. I said I didn’t want one – let me see the doctor first. Reluctantly, the assistant took me to the dentist. He was a young guy who patiently explained: the gum was swollen, so they couldn’t see whether a wisdom tooth was hiding underneath. They needed the X-ray to confirm. Fine. I went along with it, and sure enough, there was a wisdom tooth. The doctor recommended extraction. Good thing I’d checked the dental insurance reimbursement policy beforehand – you pay upfront, and there’s a cap on reimbursement.</p><p>I’ve never had a great impression of dentists. Every annual checkup, the dentist would suggest pulling my wisdom teeth. I never understood why such a dubious practice gets promoted so aggressively. My gut told me: once you get on that train, you never get off. Tooth extraction is a racket. The only time I actually saw a dentist was in Beijing – they removed the peppercorn stem from between my molars, prescribed some anti-inflammatory medicine, and that was it. If I’d let one of these extraction-happy dentists treat me, who knows what they’d have done.</p><p>So I told the doctor: “I don’t want to have an extraction right now. Please prescribe some antibiotics first. If there’s no improvement after I finish the medication, I will consider the extraction.” He gave me a week’s supply. The toothache was gone before I even finished the course. From that point on, I was even more convinced: don’t let those dentists talk you into anything.</p><p><em>(To be continued…)</em></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;Time flies. Before I knew it, I’m about to spend my second spring in Seoul. The transition from spring to summer here is neither as</summary>
        
      
    
    
    
    <category term="Life" scheme="https://johnsonlee.io/categories/life/"/>
    
    
    <category term="Korea" scheme="https://johnsonlee.io/tags/Korea/"/>
    
    <category term="Seoul" scheme="https://johnsonlee.io/tags/Seoul/"/>
    
  </entry>
  
  <entry>
    <title>Living in Seoul (1)</title>
    <link href="https://johnsonlee.io/2024/04/27/living-in-seoul-1/"/>
    <id>https://johnsonlee.io/2024/04/27/living-in-seoul-1/</id>
    <published>2024-04-27T00:00:00.000Z</published>
    <updated>2024-04-27T00:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>时光飞逝，犹如白驹过隙，不知不觉，马上就要在首尔度过第二个春天，春夏交替之季，即不像北京的清爽，也不像上海的阴雨连绵，偶尔突出其来的淅沥小雨，让年轻的上班族措手不及，经历了人生的风风雨雨，雨伞成了中年男人的标配之一，虽然我更喜欢干爽的气候，偶尔的小雨也勉强能接受。</p><p>与韩国的缘份始于十年前入职三星中国，那会儿开始对韩国的文化有了更进一步的了解，但也主要是局限于饮食文化上，谁曾想，十年后竟有机会再续前缘。</p><h2 id="为什么是韩国"><a href="#为什么是韩国" class="headerlink" title="为什么是韩国"></a>为什么是韩国</h2><p>异国打工人并不在我的规划清单里，只不过正好公司有机会可以 relocate 到首尔，看着距离也不是很远，从北京飞首尔比回一趟老家还方便，加上比较有竞争力的福利——韩国政府为外籍员工提供长达 5 年（后来又延长到 20 年）的 19% 固定税收优惠，这意味着什么呢？原本在国内超过 96 万的部分要按 45% 的税率来交税，如果只看现金部分，基本上 HR 都会把现金控制在 96 万以内，总包剩余的部分用期权或股票补齐，所以，现金部分的年税率基本上跟韩国的 19%  相差无几，大头还是在股票期权，45% 的个人所得税只是第一道税，如果在期权行权或者限制性股票（RSU）解禁时，股价高于授予的价格，还有第二道税——20% 的资本利得税等着你哦，一千万的股票，到手就缩水了一半，换作你，你肉疼不？</p><p>疼归疼，那又有什么办法呢？作为打工人，只要你在这个体系里，你是完全没有办法的，一点办法都没有，除非——跳出这个体系。税率优惠对高收入人群而言，犹如甘露，诱人且难以抗拒，加上韩国的 19% 税率对于股票所得税的计税方式并不是按全额计税，而是像资本利得率一样，按差额（解禁时的价值减去授予时的价值）计税，一年省个几十上百万，你说香不香？</p><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><p>从做决定到一切准备就绪，前前后后也不到两个月，2022 年下半年虽然北京的疫情已经开始全面放开，但还是有诸多不便，签证和体检基本上花了大半个月，加上为孩子申请学校，从发出申请到收到录取通知，基本上也花了一个月的时间，万事俱备，就等搬家打包行李了，好在公司有相应的供应商提供一条龙的 relocation 服务，从打包搬家到找房子入住，基本上不用自己太操心。看着 17 箱行李打包运走，总算是松了一口气。我还担心 17 箱东西是不是太多了，基本上没带啥家具，唯一的家具也就是我的办公椅了。后来听说另一同事打包了一百多箱，OMG，这是把整个家都搬来了吗？</p><h2 id="超预期的接机待遇"><a href="#超预期的接机待遇" class="headerlink" title="超预期的接机待遇"></a>超预期的接机待遇</h2><p>临登机前，收到了接机人联系方式，大概 2 小时的航程，很快就落地仁川机场了，飞机刚停稳，就听见广播叫我老婆的名字。我心里一阵纳闷：“难道是我司来接机了？这跟我理解的接机好像不太一样啊” 于是开始脑补韩剧中几大财阀手眼通天，控制各行各业的情形，心想：“难道 Coupang 也是由财阀控制的？这势力范围都扩张到民航啦？” 转念一想：“不对啊，为啥叫的是我老婆的名字，不应该叫我的名字吗？” </p><p>只见一韩国空姐径直朝我们走来，“请”我们先下机，在机舱全体人员的注目下，我们一家四口出了舱门，在一位工作人员的指引下，来到出机口的大厅，只见 3 个身材挺拔的小哥在等着我们，看着那着装打扮，我很快意识到，这并不像一般的工作人员，像是身着便衣的警察，然后操着一口韩式的英语问我们：“你们之前有来过韩国吗？”</p><p>果然还是韩剧看多了，我就说公司派人接机应该也是喊我的名字嘛，我回复道：“This is our first time in Korea”</p><p>“你们来韩国做什么？” 那位便衣继续问道</p><p>“I am here for work, I am an employee of Coupang” （特意提了一下公司名称，好歹 Coupang 在韩国也算得上是国民级的应用了）</p><p>然后，检查了一下我们的护照，就放行了，我也一脸懵逼，不知道发生了啥，为啥要盘问我们，好在也没啥事，出机场后也一切顺利，也就没把这段经历放在心上，直到去办驾照，我老婆的申请被拒了，说是出入境记录有问题，在代理公司派来的助理的帮助下，终于搞清楚是怎么一回事儿了。</p><p>竟然是因为“重名又重护照号”了，也就是说我老婆的名字和护照号跟一位 10 年前在韩国黑下来的中国女人重了，怎么知道是黑下来的呢，因为，最后一次出入境记录是入境记录，在那之后再也没有出境记录。</p><p>我滴个天啦，这种情况也被我们碰上了，好在我们的护照都是 2022 年新发的，无论是时间线、还是旧护照号，都能证明跟我们没关系，于是，在代理的帮助下，给我们用韩文写了个小纸条，让我们交给社区负责办理出入境记录的工作人员，然后，重新打印了一张出入境记录，总算是拿到驾照了。</p><p>以为这就万事大吉了，没曾想，第二次来首尔的时候，我们又一次享受「优先下机待遇」，在我们的解释下，便衣警察给了我们一份文件，让我们联系文件上的电话，把这个事情给彻底解决掉，我跟老婆开玩笑道：“这优先下机的待遇一般人还享受不到呢。”</p><p>“优先下机是挺好的，但是老是盘问也很不爽啊，下次让他们盘问你试试。”</p><h2 id="物价"><a href="#物价" class="headerlink" title="物价"></a>物价</h2><p>刚到首尔的那天，我们下榻在 Coex 旁边的 Oakwood 酒店，收拾完毕，已经到了傍晚，肚子有点饿了，于是打算出去找个地儿品尝一下韩式美食，从一楼出了酒店，马路上兜了一大圈，也没有找到啥餐馆，而且走在大街上，感觉自己就像个文盲，一个字也认识，孩子们都走不动了，终于看到有一家餐厅，看招牌像是吃海鲜的，于是顺着旁边的楼梯上了二楼，门口摆着一个大鱼缸，服务员一口韩语完全听不懂，我们说英文好像她也听不懂，无赖之下，请出了唯一会中文的后厨来帮我们点菜，后厨操着一口蹩脚的中文，勉强能听懂，七七八八点了几份，看起来也就是像上海小吃似的，结果一结账，14万韩元，吃饭结账从来没遇到这么大的数字，有点儿没反应过来，结完账，掏出手机计算器一算，差不多 750 RMB 了，就那么点儿破小吃，在国内撑死也就 300 块，顿时对首尔的物价有了一个体感的认知。</p><p>第二天决定在酒店里自己做饭，酒店房间是带厨房的，工具一应俱全，不如自己做吧，下去发现了一个超市，一看肉价，上面标着2900 &#x2F; 100g ，这数字，我尝试用北京的物价来 mapping 发现脑子一时算不过来了，一颗白菜 80 RMB，10 瓣大蒜（相当于1-2 颗蒜头）15 RMB，也没多少东西，一结账，一千多 RMB 没了，回到酒店拿着 Google 翻译对着小票翻译看明细，发现价格基本上是北京的3倍，可能楼下超市是中高端超市，价格比一般的超市要贵点儿，晚上弄好了 Coupang App，体验了一把自己开发成果，说来也是奇葩，上百人的研发团队开发了一款连自己也没有真正体验过的 app，估计这种情况放眼全球也不多见，体验了一下把火箭配送，生鲜食品在早上 7 点准时放到酒店门口，配送盒里还放着 2 个冰袋以保持食材的新鲜，价格嘛，比楼下超市还便宜一些，差不多是北京的 2 倍。</p><p>来之前对首尔的物价有所耳闻，听说韩国人对于中国人拿着勺子挖西瓜吃觉得不可思议，以为是开玩笑，当我在超市里看到西瓜的价格时，终于相信了那不是玩笑，在北京 30 块一个的麒麟瓜都感觉有点不便宜了，再看看 200 RMB 一个的绿皮瓜，先把财务自由放一边，咱先水果自由吧。</p><p>为了看看首尔一年的生活成本到底有多高，我每月都会记录一下进账出账，一年下来，发现一个月没有个 2 万 RMB 基本上日子会过得很拮据，这还只是日常生活开销，像冬天添置两套羽绒服、再出去滑个雪啥的，3-4 万RMB 轻轻松松就没了，这还不包括房租和孩子上学相关的费用哦。平均下来，每个月 3 万 RMB 开销。</p><h2 id="就医"><a href="#就医" class="headerlink" title="就医"></a>就医</h2><p>刚来没几个月，孩子就感冒发烧，大晚上去附近的医院看个急诊，基本上 1500 RMB 是起步价，好在有商业保险，除了牙科，基本上是够用的，用我同事的话说，那个额度还不够用，基本上那人快不行了。看病就医都要提前预约，可问题是，谁知道自己啥时候生病吗？等真正生病的时候，又来不及，急诊并不解决问题，只能缓急一下症状。</p><p>对于支持医保直付的医院，体验确实不错，全程都有人带着，药给送到手上，切实的 VIP 待遇了。因为不会韩语，每次去医院都只能用英文跟医生沟通，大家也知道，那些医学专业词汇，太 TM 难记了，每去一次医院都能学上好些个单词，对于一些比较晦涩的词汇，医生只好打开谷歌翻译，韩中对照着讲解，基本上也无大碍。</p><p>记得有一次牙疼，去附近的医院看牙，上来就领我去拍 X 光，我以前基本上不怎么看牙，唯一一次看牙医好像还是吃火锅的时候一个花椒小枝藏在槽牙缝隙里没弄出来而发炎了，从来没见看牙齿还拍 X 光的，把我给吓着了，我问医生助理，为啥上来还没看医生就先让我拍 X 光？我说我不拍，先让我见医生，医生助理无赖之下，只好带我去见医生，原来是个年轻小伙子，给我耐心的解释为啥要拍 X 光，因为牙龈肿了，看不到里面是不是有智齿，所以需要用 X 光确认一下，好吧，就配合拍了一下 X 光，果然是有智齿，医生建议让我拔了，还好我提前问了一下牙科的保险报销情况，得先自己垫付，而且报销是有上限的。</p><p>我一直对牙医的印象不太好，因为每年体检的时候，牙科医生就建议我把智齿给拔了，我一直搞不懂，像这种坑人的治疗方式为啥还能堂而皇之的到处推广，凭我的直觉，一旦上了他们的船，就再也下不来了，拔牙就是一个彻头彻尾的骗局。唯一一次看牙医的经历是在北京，就把槽牙缝隙里的花椒枝给弄出来，开了点消炎药就没事儿，要是让这么动不动就拔牙的医生治，指不定给搞成啥样呢。</p><p>我就对医生说：“I don’t want to have a extraction right now. Please prescribe some antibiotics first. If there’s no improvement after I finish the medication, I will consider the extraction.”，医生给开了一周的量，结果还没吃完，牙就没事儿了，自此，我更坚信，不能被那帮坑人的医生给忽悠了。</p><p><em>（未完待续。。。）</em></p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;时光飞逝，犹如白驹过隙，不知不觉，马上就要在首尔度过第二个春天，春夏交替之季，即不像北京的清爽，也不像上海的阴雨连绵，偶尔突出其来的淅沥小雨，让年轻的上班族措手不及，经历了人生的风风雨雨，雨伞成了中年男人的标配之一，虽然我更喜欢干爽的气候，偶尔的小雨也勉强能接受。&lt;/p&gt;
</summary>
        
      
    
    
    
    <category term="Life" scheme="https://johnsonlee.io/categories/life/"/>
    
    
    <category term="Korea" scheme="https://johnsonlee.io/tags/Korea/"/>
    
    <category term="Seoul" scheme="https://johnsonlee.io/tags/Seoul/"/>
    
  </entry>
  
  <entry>
    <title>Recommended Reading: Thinking Frameworks</title>
    <link href="https://johnsonlee.io/2024/04/20/recommended-reading-thinking.en/"/>
    <id>https://johnsonlee.io/2024/04/20/recommended-reading-thinking.en/</id>
    <published>2024-04-20T00:00:00.000Z</published>
    <updated>2024-04-20T00:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>A colleague recently asked me: “How do sharp thinkers always see things so clearly? Any tips you can share?” It’s an interesting question. In today’s age of information overload, truly sharp minds always seem to find the signal in the noise and see through to the essence. There’s a classic line from <em>The Godfather</em> – the person who sees through the nature of things in half a second and the one who spends a lifetime never seeing it are destined for fundamentally different fates. The reason sharp thinkers have such incisive insight is that they master and skillfully apply “frameworks.” Most things follow patterns. So how do we cultivate this ability?</p><p>My own systematic study of framework thinking was driven by the need to conduct interviews. I had to evaluate candidates senior to me, and at first I had no idea how to gauge someone’s caliber and potential in just one hour. So I turned to books for answers.</p><h2 id="Getting-Started"><a href="#Getting-Started" class="headerlink" title="Getting Started"></a>Getting Started</h2><h3 id="Structured-Strategic-Thinking-by-Zhou-Guoyuan"><a href="#Structured-Strategic-Thinking-by-Zhou-Guoyuan" class="headerlink" title="Structured Strategic Thinking by Zhou Guoyuan"></a>Structured Strategic Thinking by Zhou Guoyuan</h3><p>This was my first book on framework thinking. Centered on structured thinking, it covers clearly defining problems, logical reasoning and data analysis, using frameworks and models for organization, effective communication, and clear execution plans – helping people navigate complexity, make sound decisions, and turn ideas into action.</p><h3 id="“The-Decision-Book”-by-Mikael-Krogerus-Roman-Tschappeler"><a href="#“The-Decision-Book”-by-Mikael-Krogerus-Roman-Tschappeler" class="headerlink" title="“The Decision Book” by Mikael Krogerus &amp; Roman Tschappeler"></a>“The Decision Book” by Mikael Krogerus &amp; Roman Tschappeler</h3><p>A perfect primer on framework thinking. It presents 50 decision-making tools and mental models for tackling everyday challenges. The authors explain each tool’s usage and context – the 80&#x2F;20 principle for time management, risk assessment frameworks for navigating uncertainty. Concrete examples turn abstract concepts into actionable techniques, helping beginners quickly understand and apply these tools.</p><h3 id="“Smart-Choices-A-Practical-Guide-to-Making-Better-Decisions”-by-John-S-Hammond-Ralph-L-Keeney-and-Howard-Raiffa"><a href="#“Smart-Choices-A-Practical-Guide-to-Making-Better-Decisions”-by-John-S-Hammond-Ralph-L-Keeney-and-Howard-Raiffa" class="headerlink" title="“Smart Choices: A Practical Guide to Making Better Decisions” by John S. Hammond, Ralph L. Keeney, and Howard Raiffa"></a>“Smart Choices: A Practical Guide to Making Better Decisions” by John S. Hammond, Ralph L. Keeney, and Howard Raiffa</h3><p>This book lays out a clear strategy for better decision-making and problem-solving. From identifying the real root of a problem, to gathering and analyzing relevant information, to formulating and executing solutions – the authors walk through the entire process. Rich case studies show how these strategies apply in the real world, particularly when dealing with complex and volatile situations.</p><h3 id="“Goals-How-to-Get-Everything-You-Want-–-Faster-Than-You-Ever-Thought-Possible”-by-Brian-Tracy"><a href="#“Goals-How-to-Get-Everything-You-Want-–-Faster-Than-You-Ever-Thought-Possible”-by-Brian-Tracy" class="headerlink" title="“Goals! How to Get Everything You Want – Faster Than You Ever Thought Possible” by Brian Tracy"></a>“Goals! How to Get Everything You Want – Faster Than You Ever Thought Possible” by Brian Tracy</h3><p>Brian Tracy provides a comprehensive framework for improving decision quality. He explores the psychological foundations of decision-making and introduces concrete techniques like goal setting, priority ranking, and evaluating potential consequences. The book emphasizes self-awareness, teaching readers to recognize and overcome personal biases and cognitive limitations.</p><h2 id="Intermediate-Level"><a href="#Intermediate-Level" class="headerlink" title="Intermediate Level"></a>Intermediate Level</h2><h3 id="“The-7-Habits-of-Highly-Effective-People”-by-Stephen-R-Covey"><a href="#“The-7-Habits-of-Highly-Effective-People”-by-Stephen-R-Covey" class="headerlink" title="“The 7 Habits of Highly Effective People” by Stephen R. Covey"></a>“The 7 Habits of Highly Effective People” by Stephen R. Covey</h3><p>A classic in personal development. Covey’s seven-habit framework guides readers toward becoming more effective individuals and team members. From being proactive to beginning with the end in mind to continuous self-renewal – each habit is built on a clear framework that helps identify core values in personal and professional life for wiser decision-making.</p><h3 id="“Thinking-Fast-and-Slow”-by-Daniel-Kahneman"><a href="#“Thinking-Fast-and-Slow”-by-Daniel-Kahneman" class="headerlink" title="“Thinking, Fast and Slow” by Daniel Kahneman"></a>“Thinking, Fast and Slow” by Daniel Kahneman</h3><p>This landmark work reveals two modes of human thinking – intuitive (fast) and logical (slow) – and how they shape our decisions. It wasn’t until I saw news of Kahneman’s passing that I fully appreciated his significance. As a Nobel laureate in Economics, his research transformed our understanding of human behavior in economic decision-making, particularly challenging the traditional assumption that people always act rationally.</p><h3 id="“Framers-Human-Advantage-in-an-Age-of-Technology-and-Turmoil”-by-Kenneth-Cukier-Viktor-Mayer-Schoenberger-and-Francis-de-Vericourt"><a href="#“Framers-Human-Advantage-in-an-Age-of-Technology-and-Turmoil”-by-Kenneth-Cukier-Viktor-Mayer-Schoenberger-and-Francis-de-Vericourt" class="headerlink" title="“Framers: Human Advantage in an Age of Technology and Turmoil” by Kenneth Cukier, Viktor Mayer-Schoenberger, and Francis de Vericourt"></a>“Framers: Human Advantage in an Age of Technology and Turmoil” by Kenneth Cukier, Viktor Mayer-Schoenberger, and Francis de Vericourt</h3><p>This book explores how to leverage framework thinking for competitive advantage in an era of technological disruption. While the Chinese translation is somewhat simplified and introductory, the original offers richer information and deeper case studies on navigating the future amid globalization and rapid technological change.</p><h2 id="Theory"><a href="#Theory" class="headerlink" title="Theory"></a>Theory</h2><h3 id="“Complexity-and-the-Art-of-Public-Policy”-by-David-Colander-and-Roland-Kupers"><a href="#“Complexity-and-the-Art-of-Public-Policy”-by-David-Colander-and-Roland-Kupers" class="headerlink" title="“Complexity and the Art of Public Policy” by David Colander and Roland Kupers"></a>“Complexity and the Art of Public Policy” by David Colander and Roland Kupers</h3><p>A deep dive into complexity theory and its application to public policy. The authors analyze the complexity inherent in policymaking and propose systems thinking approaches to address these challenges. Written for readers with serious interest in public policy and complex systems, it offers insights that bridge theory and practice.</p><h3 id="“Thinking-in-Systems-A-Primer”-by-Donella-H-Meadows"><a href="#“Thinking-in-Systems-A-Primer”-by-Donella-H-Meadows" class="headerlink" title="“Thinking in Systems: A Primer” by Donella H. Meadows"></a>“Thinking in Systems: A Primer” by Donella H. Meadows</h3><p>An essential introduction to systems thinking, covering fundamental concepts, tools, and applications. Through rich examples, Meadows demonstrates how systems thinking can be applied to complex environmental and social problems. A valuable resource for scholars and practitioners seeking deeper theoretical understanding.</p><h3 id="“A-Pattern-Language-Towns-Buildings-Construction”-by-Christopher-Alexander"><a href="#“A-Pattern-Language-Towns-Buildings-Construction”-by-Christopher-Alexander" class="headerlink" title="“A Pattern Language: Towns, Buildings, Construction” by Christopher Alexander"></a>“A Pattern Language: Towns, Buildings, Construction” by Christopher Alexander</h3><p>This book explores pattern language in architecture and urban planning, showing how specific design patterns can create beautiful, functional, and enduring environments. Alexander’s ideas have had a profound influence on theoretical frameworks, offering a structured approach to analyzing and solving design problems – methods that readily transfer to complex problems in other domains.</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;A colleague recently asked me: “How do sharp thinkers always see things so clearly? Any tips you can share?” It’s an interesting</summary>
        
      
    
    
    
    <category term="Reading" scheme="https://johnsonlee.io/categories/reading/"/>
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
  </entry>
  
  <entry>
    <title>推荐阅读（思维篇）</title>
    <link href="https://johnsonlee.io/2024/04/20/recommended-reading-thinking/"/>
    <id>https://johnsonlee.io/2024/04/20/recommended-reading-thinking/</id>
    <published>2024-04-20T00:00:00.000Z</published>
    <updated>2024-04-20T00:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近又有同学问我：“森哥，为什么大佬看待事情的眼光总是那么犀利？有什么诀窍可以传授一下吗？”，嗯，这确实是个有意思的话题，在如今信息爆炸的时代，每天都有海量的信息涌现，在面对错综复杂的信息时，真正的大佬似乎总能从错综复杂的信息中找到关键信息，轻松地洞察事物的本质。《教父》里有一句经典的台词——花半秒钟就看透事物本质的人，和花一辈子都看不清事物本质的人，注定是截然不同的命运。之所以大佬的眼光犀利，见解独到，主要还是他们精通和熟练运用“框架”，其实很多事情都是有迹可循的，那我们如何培养这种能力呢？</p><p>我真正对框架思维进行系统性的研究主要因为面试的需要，因为要面试职级比自己还要高的大佬，一开始，我也是毫无头绪，如何仅通过一个小时的交流就能洞察候选人的水平和潜力？于是，我开始尝试从书中寻找答案。</p><h2 id="入门篇"><a href="#入门篇" class="headerlink" title="入门篇"></a>入门篇</h2><h3 id="麦肯锡结构化战略思维：如何想清楚、说明白、做到位-by-周国元"><a href="#麦肯锡结构化战略思维：如何想清楚、说明白、做到位-by-周国元" class="headerlink" title="麦肯锡结构化战略思维：如何想清楚、说明白、做到位 by 周国元"></a>麦肯锡结构化战略思维：如何想清楚、说明白、做到位 by 周国元</h3><p>这本书算是我读的第一本关于框架思维方面的书，这本书以结构化为核心理念，通过清晰地定义问题、逻辑推理和数据分析、使用框架和模型进行组织、有效沟通和明确的执行计划，帮助人们在复杂环境中理清头绪、做出明智的决策，并将思想转化为实际行动，从而取得成功。</p><h3 id="“The-Decision-Book”-by-Mikael-Krogerus-Roman-Tschappeler"><a href="#“The-Decision-Book”-by-Mikael-Krogerus-Roman-Tschappeler" class="headerlink" title="“The Decision Book” by Mikael Krogerus &amp; Roman Tschäppeler"></a>“The Decision Book” by Mikael Krogerus &amp; Roman Tschäppeler</h3><p>这本书是框架思维的完美入门读物，提供了50种决策工具和思维模型，帮助读者在日常生活中应对各种挑战。作者详细解释了每种工具的使用方法和适用场景，如二八原则帮助优化时间管理，风险评估框架协助在不确定性中做出决策。书中的实际例子让抽象的概念变得具体可行，使初学者能够快速理解并应用这些工具，提高解决问题的效率和效果。</p><h3 id="“Smart-Choices-A-Practical-Guide-to-Making-Better-Decisions”-by-John-S-Hammond-Ralph-L-Keeney-and-Howard-Raiffa"><a href="#“Smart-Choices-A-Practical-Guide-to-Making-Better-Decisions”-by-John-S-Hammond-Ralph-L-Keeney-and-Howard-Raiffa" class="headerlink" title="“Smart Choices: A Practical Guide to Making Better Decisions” by John S. Hammond, Ralph L. Keeney, and Howard Raiffa"></a>“Smart Choices: A Practical Guide to Making Better Decisions” by John S. Hammond, Ralph L. Keeney, and Howard Raiffa</h3><p>这本书展示了一套清晰的策略，旨在提升读者的决策和问题解决能力。从识别问题的真正源头开始，到收集和分析相关信息，再到制定和执行解决方案，作者详尽地阐述了整个过程。书中包含了丰富的案例分析，帮助读者看到这些策略在现实世界中的应用，特别是在处理复杂和多变的问题时如何保持思路清晰。</p><h3 id="“Goals-How-to-Get-Everything-You-Want-—-Faster-Than-You-Ever-Thought-Possible”-by-Brian-Tracy"><a href="#“Goals-How-to-Get-Everything-You-Want-—-Faster-Than-You-Ever-Thought-Possible”-by-Brian-Tracy" class="headerlink" title="“Goals! How to Get Everything You Want — Faster Than You Ever Thought Possible” by Brian Tracy"></a>“Goals! How to Get Everything You Want — Faster Than You Ever Thought Possible” by Brian Tracy</h3><p>布赖恩·特雷西在这本书中提供了一套全面的框架来提升决策质量。特雷西不仅探讨了决策的心理学基础，还介绍了一系列具体技巧，如设定目标、排序优先级以及评估可能的后果。书中特别强调了自我认知的重要性，教导读者如何识别和克服个人偏见和思维局限，从而做出更明智的选择。</p><h2 id="进阶篇"><a href="#进阶篇" class="headerlink" title="进阶篇"></a>进阶篇</h2><h3 id="“The-7-Habits-of-Highly-Effective-People”-by-Stephen-R-Covey"><a href="#“The-7-Habits-of-Highly-Effective-People”-by-Stephen-R-Covey" class="headerlink" title="“The 7 Habits of Highly Effective People” by Stephen R. Covey"></a>“The 7 Habits of Highly Effective People” by Stephen R. Covey</h3><p>这本书是自我提升领域的经典之作，柯维通过七个习惯框架，引导读者如何成为更有效的个人和团队成员。这些习惯包括从积极主动到以终为始，再到不断更新自我。每个习惯都构建在清晰的框架之上，帮助读者识别个人和职业生活中的核心价值，并据此做出明智的决策。</p><h3 id="“Thinking-Fast-and-Slow”-by-Daniel-Kahneman"><a href="#“Thinking-Fast-and-Slow”-by-Daniel-Kahneman" class="headerlink" title="“Thinking, Fast and Slow” by Daniel Kahneman"></a>“Thinking, Fast and Slow” by Daniel Kahneman</h3><p>这部著作由 Daniel Kahneman 撰写，深刻地揭示了人类思维的两种模式：直觉思维（快速）和逻辑思维（慢速），以及它们如何影响我们的决策。直到最近我看到关于 Kahneman 去世的消息，才意识到这位作者的重要性。作为诺贝尔经济学奖得主，他的研究改变了我们对经济决策过程中人类行为的理解，特别是他对行为经济学的贡献，挑战了经济决策中人们总是理性行为的传统观点。</p><h3 id="“Framers-Human-Advantage-in-an-Age-of-Technology-and-Turmoil”-by-Kenneth-Cukier-Viktor-Mayer-Schoenberger-and-Francis-de-Vericourt"><a href="#“Framers-Human-Advantage-in-an-Age-of-Technology-and-Turmoil”-by-Kenneth-Cukier-Viktor-Mayer-Schoenberger-and-Francis-de-Vericourt" class="headerlink" title="“Framers: Human Advantage in an Age of Technology and Turmoil” by Kenneth Cukier, Viktor Mayer-Schoenberger, and Francis de Vericourt"></a>“Framers: Human Advantage in an Age of Technology and Turmoil” by Kenneth Cukier, Viktor Mayer-Schoenberger, and Francis de Vericourt</h3><p>这本书探讨了在技术和动荡时代如何运用框架思维获得竞争优势。尽管中文译本《框架思维》内容较为简化，属于入门级别，原版则提供了更丰富的信息和深入的案例分析，探讨如何在全球化和技术迅猛发展的背景下，利用框架思维导航未来。</p><h2 id="理论篇"><a href="#理论篇" class="headerlink" title="理论篇"></a>理论篇</h2><h3 id="“Complexity-and-the-Art-of-Public-Policy”-by-David-Colander-and-Roland-Kupers"><a href="#“Complexity-and-the-Art-of-Public-Policy”-by-David-Colander-and-Roland-Kupers" class="headerlink" title="“Complexity and the Art of Public Policy” by David Colander and Roland Kupers"></a>“Complexity and the Art of Public Policy” by David Colander and Roland Kupers</h3><p>本书深入探讨了复杂系统理论及其在公共政策制定中的应用。作者分析了政策制定中的复杂性问题，并提出了利用系统思维来解决这些问题的方法。这本书是为那些对公共政策和复杂系统有深入研究兴趣的读者准备的，提供了理论和实践相结合的深刻见解。</p><h3 id="“Thinking-in-Systems-A-Primer”-by-Donella-H-Meadows"><a href="#“Thinking-in-Systems-A-Primer”-by-Donella-H-Meadows" class="headerlink" title="“Thinking in Systems: A Primer” by Donella H. Meadows"></a>“Thinking in Systems: A Primer” by Donella H. Meadows</h3><p>这本书是系统思维领域的入门书籍，详细介绍了系统思维的基本概念、工具和应用。Donella Meadows 通过丰富的实例展示了如何运用系统思维来理解和解决复杂的环境和社会问题。这本书对希望在理论层面上深入理解系统思维的学者和实践者都是一份宝贵的资源。</p><h3 id="“A-Pattern-Language-Towns-Buildings-Construction”-by-Christopher-Alexander"><a href="#“A-Pattern-Language-Towns-Buildings-Construction”-by-Christopher-Alexander" class="headerlink" title="“A Pattern Language: Towns, Buildings, Construction” by Christopher Alexander"></a>“A Pattern Language: Towns, Buildings, Construction” by Christopher Alexander</h3><p>这本书探讨了建筑和城市规划中的模式语言，展示了如何通过特定的设计模式来创造美丽、实用而持久的环境。Christopher Alexander 的观点对理论框架有重要影响，他提供了一种结构化的方法来分析和解决设计问题，这些方法也可以应用于其他领域的复杂问题。</p>]]></content>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最近又有同学问我：“森哥，为什么大佬看待事情的眼光总是那么犀利？有什么诀窍可以传授一下吗？”，嗯，这确实是个有意思的话题，在如今信息爆炸的时代，每天都有海量的信息涌现，在面对错综复杂的信息时，真正的大佬似乎总能从错综复杂的信息中找到关键信息，轻松地洞察事物的本质。《教父》里</summary>
        
      
    
    
    
    <category term="Reading" scheme="https://johnsonlee.io/categories/reading/"/>
    
    
    <category term="Independent Thinking" scheme="https://johnsonlee.io/tags/Independent-Thinking/"/>
    
  </entry>
  
</feed>
