<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://zachc.ai/feed.xml" rel="self" type="application/atom+xml" /><link href="https://zachc.ai/" rel="alternate" type="text/html" /><updated>2026-04-19T00:58:47+00:00</updated><id>https://zachc.ai/feed.xml</id><title type="html">Zach’s Compass</title><subtitle>Tech and life, one post at a time.</subtitle><author><name>ZachC</name></author><entry><title type="html">Putting a Custom Domain on GitHub Pages: Six Gotchas</title><link href="https://zachc.ai/blog/owning-my-domain-github-pages-cloudflare/" rel="alternate" type="text/html" title="Putting a Custom Domain on GitHub Pages: Six Gotchas" /><published>2026-04-18T00:00:00+00:00</published><updated>2026-04-18T00:00:00+00:00</updated><id>https://zachc.ai/blog/owning-my-domain-github-pages-cloudflare</id><content type="html" xml:base="https://zachc.ai/blog/owning-my-domain-github-pages-cloudflare/"><![CDATA[<div class="lang-en">

  <p>I bought <code class="language-plaintext highlighter-rouge">zachc.ai</code> today. Thought the setup would take five minutes. It took forty-five.</p>

  <p>The happy path really is simple: add a <code class="language-plaintext highlighter-rouge">CNAME</code> file, set five DNS records, wait for a cert. But every layer (DNS, Cloudflare, GitHub, corporate network) has its own quirks, and when they interact you can burn an afternoon. Here’s the playbook that worked, then the six things that bit me.</p>

  <hr />

  <h2 id="the-architecture">The Architecture</h2>

  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Browser
  ↓
Cloudflare DNS (DNS-only, gray cloud)
  ↓
GitHub Pages IPs
  ↓
Jekyll static site built from main
  ↓
TLS via Let's Encrypt, auto-issued &amp; auto-renewed by GitHub
</code></pre></div>  </div>

  <p>Zero servers. Cert renewal is automatic. Total cost: the annual domain fee.</p>

  <p>Registrar: <strong>Cloudflare Registrar</strong> — at-cost pricing, free WHOIS privacy, free DNS, free CDN. Porkbun is a fine alternative. Host: <strong>GitHub Pages</strong>.</p>

  <hr />

  <h2 id="the-setup">The Setup</h2>

  <h3 id="add-a-cname-file-to-the-repo">1. Add a CNAME file to the repo</h3>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"zachc.ai"</span> <span class="o">&gt;</span> CNAME
</code></pre></div>  </div>

  <h3 id="update-configyml">2. Update <code class="language-plaintext highlighter-rouge">_config.yml</code></h3>

  <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">url</span><span class="pi">:</span> <span class="s2">"</span><span class="s">https://zachc.ai"</span>
</code></pre></div>  </div>

  <p>This updates sitemap, RSS, and canonical links. Skip it and search engines keep indexing the <code class="language-plaintext highlighter-rouge">.github.io</code> URL.</p>

  <h3 id="set-the-custom-domain-via-the-github-api">3. Set the custom domain via the GitHub API</h3>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gh api repos/&lt;owner&gt;/&lt;repo&gt;/pages <span class="se">\</span>
  <span class="nt">--method</span> PUT <span class="se">\</span>
  <span class="nt">--field</span> <span class="nv">cname</span><span class="o">=</span>zachc.ai
</code></pre></div>  </div>

  <p>Don’t set <code class="language-plaintext highlighter-rouge">https_enforced=true</code> yet — the cert doesn’t exist, it’ll 404.</p>

  <h3 id="add-dns-records-in-cloudflare-all-dns-only--gray-cloud">4. Add DNS records in Cloudflare (all DNS-only / gray cloud)</h3>

  <table>
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Content</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages apex IP #1</em></td>
      </tr>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages apex IP #2</em></td>
      </tr>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages apex IP #3</em></td>
      </tr>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages apex IP #4</em></td>
      </tr>
      <tr>
        <td>CNAME</td>
        <td><code class="language-plaintext highlighter-rouge">www</code></td>
        <td><code class="language-plaintext highlighter-rouge">&lt;owner&gt;.github.io</code></td>
      </tr>
    </tbody>
  </table>

  <p>Fetch the four current apex A-record IPs from <a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site-apex-domain">GitHub’s docs</a> — they’ve changed before and will change again.</p>

  <p>Then <strong>SSL/TLS → Overview → Full (strict)</strong>.</p>

  <h3 id="wait-for-the-cert-then-enforce-https">5. Wait for the cert, then enforce HTTPS</h3>

  <p>Wait until <code class="language-plaintext highlighter-rouge">gh api .../pages/health</code> shows <code class="language-plaintext highlighter-rouge">responds_to_https: true</code>, then:</p>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gh api repos/&lt;owner&gt;/&lt;repo&gt;/pages <span class="se">\</span>
  <span class="nt">--method</span> PUT <span class="se">\</span>
  <span class="nt">--field</span> <span class="nv">cname</span><span class="o">=</span>zachc.ai <span class="se">\</span>
  <span class="nt">--field</span> <span class="nv">https_enforced</span><span class="o">=</span><span class="nb">true</span>
</code></pre></div>  </div>

  <p>Done.</p>

  <hr />

  <h2 id="the-six-gotchas">The Six Gotchas</h2>

  <h3 id="cloudflares-orange-cloud-breaks-cert-provisioning">1. Cloudflare’s orange cloud breaks cert provisioning</h3>

  <p><strong>Symptom:</strong> <code class="language-plaintext highlighter-rouge">curl https://zachc.ai</code> returns Cloudflare <strong>526 “Invalid SSL certificate from origin”</strong>. GitHub refuses to issue a cert.</p>

  <p><strong>Cause:</strong> GitHub needs to see its own IPs during the ACME challenge. With the orange cloud on, public DNS resolves to Cloudflare’s edge instead, and Cloudflare in Full (strict) mode demands a cert GitHub can’t issue. Deadlock.</p>

  <p><strong>Fix:</strong> Keep gray cloud (DNS-only) until the cert is live. Turn orange on after.</p>

  <h3 id="cloudflare-ssl-modes-only-one-is-correct">2. Cloudflare SSL modes: only one is correct</h3>

  <ul>
    <li><strong>Flexible</strong> → infinite redirect loop. CF↔origin is HTTP; GitHub redirects HTTP→HTTPS; CF serves the redirect; browser loops forever.</li>
    <li><strong>Full</strong> → works but doesn’t verify origin cert.</li>
    <li><strong>Full (strict)</strong> → works <em>and</em> verifies. This is the only right answer.</li>
  </ul>

  <p>Most “my site redirects forever” posts are someone stuck on Flexible.</p>

  <h3 id="httpsenforcedtrue-404s-before-the-cert-exists">3. <code class="language-plaintext highlighter-rouge">https_enforced=true</code> 404s before the cert exists</h3>

  <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"The certificate does not exist yet"</span><span class="p">,</span><span class="w"> </span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"404"</span><span class="p">}</span><span class="w">
</span></code></pre></div>  </div>

  <p>GitHub won’t enforce HTTPS until the cert is actually on their edge. Two API calls: cname first, then the enforcement flag.</p>

  <h3 id="the-cert-queue-stalls--the-ui-knows-something-the-api-doesnt">4. The cert queue stalls — the UI knows something the API doesn’t</h3>

  <p><strong>Symptom:</strong> DNS is correct, <code class="language-plaintext highlighter-rouge">is_https_eligible: true</code>, but <code class="language-plaintext highlighter-rouge">peer_failed_verification</code> won’t clear. Re-PUT via API — nothing. Wait ten more minutes — nothing.</p>

  <p><strong>Fix:</strong> Open Settings → Pages. Click <strong>Remove</strong> next to the domain. Wait ten seconds. Type it back in. Click <strong>Save</strong>. Sixty seconds later my cert was approved.</p>

  <p>Something in the UI path triggers a more aggressive re-queue than the REST endpoint. I don’t know why. I do know that if you’re past ten minutes of <code class="language-plaintext highlighter-rouge">peer_failed_verification</code>, stop staring and do the UI kick.</p>

  <h3 id="corporate-vpns-often-hijack-dns">5. Corporate VPNs often hijack DNS</h3>

  <p><strong>Symptom:</strong> <code class="language-plaintext highlighter-rouge">dig zachc.ai</code> returns an internal landing-page IP. <code class="language-plaintext highlighter-rouge">dig @1.1.1.1</code> times out.</p>

  <p><strong>Cause:</strong> Many corporate VPNs intercept port-53 traffic and rewrite queries to external domains.</p>

  <p><strong>Fix:</strong> Use DNS-over-HTTPS — port 443 is usually not intercepted at the DNS layer.</p>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-sH</span> <span class="s1">'accept: application/dns-json'</span> <span class="se">\</span>
  <span class="s1">'https://1.1.1.1/dns-query?name=zachc.ai&amp;type=A'</span> | jq
</code></pre></div>  </div>

  <p>Useful general-purpose VPN workaround, not specific to GitHub Pages.</p>

  <h3 id="enterprise-gateways-block-newly-registered-domains">6. Enterprise gateways block newly registered domains</h3>

  <p><strong>Symptom:</strong> From the office network, <code class="language-plaintext highlighter-rouge">https://zachc.ai</code> shows a corporate “Page Blocked — newly registered website” page.</p>

  <p><strong>Cause:</strong> Enterprise Secure Web Gateways (Zscaler, Palo Alto Prisma, Netskope, etc.) auto-block <strong>Newly Registered Domains</strong> for 14–30 days. NRDs are a top indicator of phishing/malware, so the category is blocked until reputation accumulates. The block is at the HTTP proxy layer — the origin site is fine and unaware.</p>

  <p><strong>Fix (in parallel):</strong></p>

  <ol>
    <li><strong>File an allowlist ticket</strong> with your internal security team (1–3 business days). “Personal domain, registered YYYY-MM-DD, blog on GitHub Pages” is enough.</li>
    <li><strong>Verify off-network</strong> — phone on cellular, or tether + disconnect VPN. Confirms the block is local policy.</li>
    <li><strong>Wait it out</strong> — typically clears in a few weeks as threat-intel feeds age the domain.</li>
  </ol>

  <p>If you’re going to register a personal domain while working at a large company, file the ticket on day one.</p>

  <hr />

  <p>If you’re about to do this yourself: keep Cloudflare on DNS-only until the cert issues, file the corporate allowlist ticket the same day you register. Everything else you can back out of.</p>

  <h3 id="sources">Sources</h3>

  <ul>
    <li><a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site">GitHub Pages — Managing a custom domain</a></li>
    <li><a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/">Cloudflare — SSL/TLS encryption modes</a></li>
    <li><a href="https://letsencrypt.org/how-it-works/">Let’s Encrypt — How it works</a></li>
    <li><a href="https://blog.talosintelligence.com/newly-registered-domains/">Cisco Talos on Newly Registered Domains</a></li>
  </ul>

</div>

<div class="lang-zh lang-hidden">

  <p>今天买了 <code class="language-plaintext highlighter-rouge">zachc.ai</code>。以为配置五分钟搞定，结果花了四十五分钟。</p>

  <p>顺利路径其实不复杂：加一个 <code class="language-plaintext highlighter-rouge">CNAME</code> 文件，配五条 DNS 记录，等证书签出来。但每一层（DNS、Cloudflare、GitHub、公司网络）都有自己的坑，交互起来就能吃掉一个下午。下面先写能跑通的流程，再写我踩过的六个坑。</p>

  <hr />

  <h2 id="section">架构</h2>

  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>浏览器
  ↓
Cloudflare DNS（纯 DNS 模式，灰色云）
  ↓
GitHub Pages 的 IP
  ↓
main 分支构建的 Jekyll 静态站
  ↓
Let's Encrypt 证书，GitHub 自动签发、自动续期
</code></pre></div>  </div>

  <p>零服务器。证书自动续期。成本就是每年的域名费。</p>

  <p>注册商：<strong>Cloudflare Registrar</strong>——按成本价卖，免费 WHOIS 隐私、DNS、CDN。Porkbun 也行。托管：<strong>GitHub Pages</strong>。</p>

  <hr />

  <h2 id="section-1">配置流程</h2>

  <h3 id="cname-">1. 在仓库根目录加 CNAME 文件</h3>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"zachc.ai"</span> <span class="o">&gt;</span> CNAME
</code></pre></div>  </div>

  <h3 id="configyml">2. 更新 <code class="language-plaintext highlighter-rouge">_config.yml</code></h3>

  <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">url</span><span class="pi">:</span> <span class="s2">"</span><span class="s">https://zachc.ai"</span>
</code></pre></div>  </div>

  <p>这影响 sitemap、RSS、canonical 链接。不改的话，搜索引擎会一直索引 <code class="language-plaintext highlighter-rouge">.github.io</code> 地址。</p>

  <h3 id="github-api-">3. 通过 GitHub API 设置自定义域名</h3>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gh api repos/&lt;owner&gt;/&lt;repo&gt;/pages <span class="se">\</span>
  <span class="nt">--method</span> PUT <span class="se">\</span>
  <span class="nt">--field</span> <span class="nv">cname</span><span class="o">=</span>zachc.ai
</code></pre></div>  </div>

  <p><strong>先不要</strong>带 <code class="language-plaintext highlighter-rouge">https_enforced=true</code>——证书还没签出来，会 404。</p>

  <h3 id="cloudflare--dns--dns-only--">4. 在 Cloudflare 加 DNS 记录（全部 DNS-only / 灰色云）</h3>

  <table>
    <thead>
      <tr>
        <th>类型</th>
        <th>名称</th>
        <th>内容</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages 根域 IP #1</em></td>
      </tr>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages 根域 IP #2</em></td>
      </tr>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages 根域 IP #3</em></td>
      </tr>
      <tr>
        <td>A</td>
        <td><code class="language-plaintext highlighter-rouge">@</code></td>
        <td><em>GitHub Pages 根域 IP #4</em></td>
      </tr>
      <tr>
        <td>CNAME</td>
        <td><code class="language-plaintext highlighter-rouge">www</code></td>
        <td><code class="language-plaintext highlighter-rouge">&lt;owner&gt;.github.io</code></td>
      </tr>
    </tbody>
  </table>

  <p>四条根域 A 记录的当前 IP 去 <a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site-apex-domain">GitHub 文档</a>拿——历史上变过，未来还会变。</p>

  <p>然后 <strong>SSL/TLS → Overview</strong> 设为 <strong>Full (strict)</strong>。</p>

  <h3 id="https">5. 等证书，再强制 HTTPS</h3>

  <p>等到 <code class="language-plaintext highlighter-rouge">gh api .../pages/health</code> 显示 <code class="language-plaintext highlighter-rouge">responds_to_https: true</code>，再执行：</p>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gh api repos/&lt;owner&gt;/&lt;repo&gt;/pages <span class="se">\</span>
  <span class="nt">--method</span> PUT <span class="se">\</span>
  <span class="nt">--field</span> <span class="nv">cname</span><span class="o">=</span>zachc.ai <span class="se">\</span>
  <span class="nt">--field</span> <span class="nv">https_enforced</span><span class="o">=</span><span class="nb">true</span>
</code></pre></div>  </div>

  <p>完。</p>

  <hr />

  <h2 id="section-2">六个坑</h2>

  <h3 id="cloudflare-">1. Cloudflare 的橙色云会卡住证书签发</h3>

  <p><strong>症状：</strong> <code class="language-plaintext highlighter-rouge">curl https://zachc.ai</code> 返回 Cloudflare <strong>526 “Invalid SSL certificate from origin”</strong>。GitHub 拒绝签证书。</p>

  <p><strong>原因：</strong> GitHub 在跑 ACME 验证时需要看到<strong>自己</strong>的 IP。橙色云打开后，公共 DNS 解析到 Cloudflare 边缘，而 Cloudflare 在 Full (strict) 模式下又要求源站有合法证书——GitHub 因为被挡住签不出来。死锁。</p>

  <p><strong>解决：</strong> 证书签出来之前保持灰色云（DNS-only）。之后想开橙色云再开。</p>

  <h3 id="cloudflare--ssl-">2. Cloudflare 的 SSL 模式只有一个是对的</h3>

  <ul>
    <li><strong>Flexible</strong> → 无限重定向。CF 回源走 HTTP，GitHub 把 HTTP 重定向到 HTTPS，CF 把重定向返回给浏览器，无限循环。</li>
    <li><strong>Full</strong> → 能用，但不验证源站证书。</li>
    <li><strong>Full (strict)</strong> → 能用，<strong>且</strong>验证证书。唯一正确选项。</li>
  </ul>

  <p>大多数”我的站点无限重定向”的帖子，都是卡在 Flexible。</p>

  <h3 id="httpsenforcedtrue--404">3. 证书没签出来之前，<code class="language-plaintext highlighter-rouge">https_enforced=true</code> 会 404</h3>

  <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="nl">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"The certificate does not exist yet"</span><span class="p">,</span><span class="w"> </span><span class="nl">"status"</span><span class="p">:</span><span class="w"> </span><span class="s2">"404"</span><span class="p">}</span><span class="w">
</span></code></pre></div>  </div>

  <p>GitHub 在证书真正落到边缘之前拒绝强制 HTTPS。拆成两次 API 调用：先 cname，再强制标志。</p>

  <h3 id="ui--api-">4. 证书队列会卡住——UI 比 API 有用</h3>

  <p><strong>症状：</strong> DNS 正确，<code class="language-plaintext highlighter-rouge">is_https_eligible: true</code>，但 <code class="language-plaintext highlighter-rouge">peer_failed_verification</code> 就是不消失。API 重新 PUT——没反应。再等十分钟——还是没反应。</p>

  <p><strong>解决：</strong> 打开 Settings → Pages，点域名旁边的 <strong>Remove</strong>，等十秒，把域名输回去，点 <strong>Save</strong>。六十秒后我的证书就批准了。</p>

  <p>UI 路径里有某个机制会比 REST 接口更”激进”地重新入队。我不知道原因。我只知道：如果你盯着 <code class="language-plaintext highlighter-rouge">peer_failed_verification</code> 超过十分钟，别盯了，去做 UI 那一下。</p>

  <h3 id="vpn--dns">5. 公司 VPN 经常劫持 DNS</h3>

  <p><strong>症状：</strong> <code class="language-plaintext highlighter-rouge">dig zachc.ai</code> 返回内部跳转页的 IP。<code class="language-plaintext highlighter-rouge">dig @1.1.1.1</code> 直接超时。</p>

  <p><strong>原因：</strong> 很多公司 VPN 拦截 53 端口流量，改写外部域名的查询结果。</p>

  <p><strong>解决：</strong> 用 DNS-over-HTTPS——443 端口通常不会在 DNS 层被检查。</p>

  <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-sH</span> <span class="s1">'accept: application/dns-json'</span> <span class="se">\</span>
  <span class="s1">'https://1.1.1.1/dns-query?name=zachc.ai&amp;type=A'</span> | jq
</code></pre></div>  </div>

  <p>通用的 VPN 绕行方法，不只适用于 GitHub Pages。</p>

  <h3 id="section-3">6. 企业安全网关会屏蔽新注册域名</h3>

  <p><strong>症状：</strong> 在公司网络下打开 <code class="language-plaintext highlighter-rouge">https://zachc.ai</code>，看到公司品牌的”页面被屏蔽——新注册网站”页面。</p>

  <p><strong>原因：</strong> 企业 Secure Web Gateway（Zscaler、Palo Alto Prisma、Netskope 等）会自动屏蔽<strong>新注册域名</strong> 14~30 天。NRD 是钓鱼和恶意软件最常见的指标之一，所以默认屏蔽，直到域名累积信誉。屏蔽发生在 HTTP 代理层——源站完全没事，也完全不知道有过这次请求。</p>

  <p><strong>解决（并行做）：</strong></p>

  <ol>
    <li><strong>提内部白名单工单</strong>（一般 1~3 个工作日）。理由写”个人域名，注册时间 YYYY-MM-DD，GitHub Pages 博客”就够了。</li>
    <li><strong>在公司网络外验证</strong>——手机切蜂窝数据，或者开热点断 VPN。确认屏蔽是本地策略。</li>
    <li><strong>等</strong> —— 通常几周后会随着威胁情报源给域名”续年头”而自动解除。</li>
  </ol>

  <p>如果你打算在大公司工作期间注册个人域名，注册<strong>当天</strong>就去提白名单。</p>

  <hr />

  <p>如果你要做同样的事：证书签出来之前 Cloudflare 保持 DNS-only，注册域名当天就去提公司的白名单工单。其他的坑踩了都能爬出来。</p>

  <h3 id="section-4">来源</h3>

  <ul>
    <li><a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site">GitHub Pages — 管理自定义域名</a></li>
    <li><a href="https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/">Cloudflare — SSL/TLS 加密模式</a></li>
    <li><a href="https://letsencrypt.org/how-it-works/">Let’s Encrypt — 工作原理</a></li>
    <li><a href="https://blog.talosintelligence.com/newly-registered-domains/">Cisco Talos 关于新注册域名</a></li>
  </ul>

</div>]]></content><author><name>ZachC</name></author><category term="tech" /><category term="web" /><category term="infrastructure" /><category term="diy" /><category term="tutorial" /><category term="github-pages" /><category term="cloudflare" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">The Curse of Possibility</title><link href="https://zachc.ai/blog/the-curse-of-possibility/" rel="alternate" type="text/html" title="The Curse of Possibility" /><published>2026-04-08T00:00:00+00:00</published><updated>2026-04-08T00:00:00+00:00</updated><id>https://zachc.ai/blog/the-curse-of-possibility</id><content type="html" xml:base="https://zachc.ai/blog/the-curse-of-possibility/"><![CDATA[<div class="lang-en">

  <h2 id="the-seed">The Seed</h2>

  <p>I stopped in the middle of organizing my notes today. Not because there was nothing to do — the opposite. Too much to do.</p>

  <p>I have an Obsidian vault with around 300 files. Claude Code helped me build an automated workflow: morning planning, task dispatch, knowledge digestion, cross-project sync. Before AI, I would never have attempted any of this — too complex, not worth the time investment. But now, “not worth it” has become “maybe I could.”</p>

  <p>Then I noticed a paradox: everything became “doable,” but everything took longer than expected. The tools got stronger, but I got more tired.</p>

  <p>I thought it was just me — maybe I wasn’t efficient enough, maybe I hadn’t found the right workflow. Until I saw the data:</p>

  <blockquote>
    <p>Upwork’s 2024 research found that <strong>over half of employees using AI tools feel MORE overwhelmed</strong> — not less burdened, but more exhausted.</p>
  </blockquote>

  <p>It’s not just me. It’s structural.</p>

  <hr />

  <h2 id="i-the-pipe-is-fixed">I. The Pipe Is Fixed</h2>

  <p>Zhuangzi said something over two thousand years ago that hits different now:</p>

  <blockquote>
    <p>“My life has a limit, but knowledge has none. To pursue the limitless with the limited — that is perilous.”
— Zhuangzi, <em>Nourishing Life</em></p>
  </blockquote>

  <p>Not a platitude. Cognitive science spent the next two thousand years proving him right.</p>

  <p>In 1956, psychologist George A. Miller published what became a landmark paper: <em>The Magical Number Seven, Plus or Minus Two</em>. He found that human working memory can hold roughly <strong>7 chunks of information</strong> at once. Not 7GB. Not 7TB. Seven chunks. This is a hardware constraint, not a software issue. You can’t upgrade it by “trying harder,” just as you can’t grow an extra heart chamber by running.</p>

  <p>John Sweller’s Cognitive Load Theory (late 1980s) added another layer: working memory isn’t just small — it’s also short-lived. Everything has to squeeze through this bottleneck before it can reach long-term memory. Pile on too many options, too complex an interface, too much noise — and your ability to learn and decide just falls apart.</p>

  <p>Then there’s <strong>Directed Attention Fatigue</strong>, from Rachel and Stephen Kaplan at Michigan. Your brain burns energy just suppressing distractions — and that fuel tank is finite. When it runs dry: more mistakes, worse planning, shorter temper, dumber impulses.</p>

  <p>In other words: your brain is a pipe with a fixed diameter. From Miller to Sweller to Kaplan, over half a century of research says the same thing — <strong>the pipe doesn’t get wider.</strong></p>

  <hr />

  <h2 id="ii-ten-times-more-valves">II. Ten Times More Valves</h2>

  <p>Herbert Simon, 1978 Nobel laureate in economics, wrote in 1971:</p>

  <blockquote>
    <p>“In an information-rich world, the wealth of information means a dearth of something else — a scarcity of whatever it is that information consumes: the attention of its recipients.”</p>
  </blockquote>

  <ol>
    <li>No internet, no smartphones, no AI. Simon was just watching TV channels and newspapers multiply. But he already saw the core truth: <strong>attention is zero-sum.</strong> Give it to A, and B gets less. Period.</li>
  </ol>

  <p>Now apply this logic to the AI era.</p>

  <p>Before AI, my day had maybe 5-10 decision points: what tasks to do, what methods to use, how to prioritize. Now, with Claude Code, I might face 50: Should I let AI refactor this code? Is its output correct? Should I iterate again? Is this automation worth building? Who fixes the bugs later? Do I understand AI’s suggested approach? If not, how long will it take to understand?</p>

  <p>Every new “possibility” is a new valve. Every valve asks: open or not?</p>

  <p>There’s a famous Israeli study on parole judges that shows what this does to people. They found: approval rates start at roughly <strong>65%</strong> at the beginning of each session, then <strong>gradually drop to near 0%</strong> as decisions accumulate. After a break, they reset to 65%. The cases didn’t get worse — the judges’ brains got tired.</p>

  <p>David Meyer’s research is even more direct: multitasking increases completion time by <strong>more than double</strong>. The brain produces zero-progress “restart” time when switching between tasks. And only <strong>2-5% of people</strong> are true “supertaskers” — the other 95% perform worse when multitasking.</p>

  <p>That’s the trap. AI lets you open more valves, but the pipe hasn’t changed. Every new valve doesn’t add output — it just thins what each one gets.</p>

  <hr />

  <h2 id="iii-the-data-doesnt-lie">III. The Data Doesn’t Lie</h2>

  <p>If it were just me, fine — maybe I’m doing it wrong. But the numbers say otherwise.</p>

  <p><strong>APA’s 2023 Work in America Survey (n=2,515):</strong></p>

  <ul>
    <li><strong>38%</strong> of employees worry AI will make their jobs obsolete</li>
    <li>Among those worried: <strong>51%</strong> say work hurts their mental health, <strong>64%</strong> feel tense or stressed daily, <strong>37%</strong> report emotional exhaustion</li>
    <li>Even among those NOT worried about AI replacement, stress is rising — <strong>56%</strong> feel micromanaged by tech surveillance</li>
  </ul>

  <p><strong>Microsoft’s 2024 Work Trend Index:</strong></p>

  <ul>
    <li><strong>75%</strong> of knowledge workers now use AI at work</li>
    <li><strong>78%</strong> bring their own AI tools (BYOAI)</li>
    <li>Yet <strong>59%</strong> of leaders admit they can’t quantify AI’s productivity gains</li>
    <li><strong>60%</strong> of companies lack an AI vision or plan</li>
    <li><strong>46%</strong> of global workers are considering quitting within the year — an all-time high</li>
  </ul>

  <p><strong>Upwork’s 2024 Research (the most damning):</strong></p>

  <ul>
    <li><strong>Over 50%</strong> of AI-using employees report feeling “overwhelmed”</li>
    <li>Workers with AI tool access report <strong>more burnout</strong>, not less</li>
  </ul>

  <p><strong>Gallup 2021 Global Emotions Report:</strong></p>

  <ul>
    <li><strong>41%</strong> of adults worldwide report stress — all-time high</li>
    <li><strong>42%</strong> report worry — all-time high</li>
  </ul>

  <p>Back in 2007, Tarafdar named five flavors of technostress: overload (work faster), invasion (always on), complexity (steep learning curves), insecurity (will I be replaced?), uncertainty (this tool will be obsolete next quarter).</p>

  <p>Sound familiar? AI cranks every single one up.</p>

  <hr />

  <h2 id="iv-history-repeats">IV. History Repeats</h2>

  <p>This isn’t the first time.</p>

  <p>In 1987, Nobel economist Robert Solow wrote a line that became known as the “Solow Paradox”:</p>

  <blockquote>
    <p>“You can see the computer age everywhere but in the productivity statistics.”</p>
  </blockquote>

  <p>Erik Brynjolfsson quantified this in 1993: computing power grew <strong>100x</strong> in the 1970s-80s, yet labor productivity growth <em>fell</em> from <strong>over 3%</strong> in the 1960s to <strong>roughly 1%</strong>. More computers didn’t mean more productivity — at least not in the short term.</p>

  <p>Same story with steam and electricity — the productivity payoff took decades. 1870s factories bolted electric motors onto steam-era floor plans and wondered why nothing changed. It wasn’t until someone rethought the entire factory layout that electricity actually delivered.</p>

  <p>Today’s AI era is replaying this cycle:</p>

  <p><strong>Tool explosion → Cognitive overload → Organizational adaptation lag → Productivity stagnation</strong></p>

  <p>75% are using AI, but 59% of leaders can’t tell you what it’s actually doing for them. More tools, more exhaustion. The problem isn’t AI — it’s that our habits, organizations, and brains haven’t caught up.</p>

  <hr />

  <h2 id="v-knowing-when-to-stop">V. Knowing When to Stop</h2>

  <p>So what do we do? Reject AI? Obviously unrealistic. Use AI harder? The data already shows that road leads to burnout.</p>

  <p>Lao Tzu said:</p>

  <blockquote>
    <p>“He who knows when to stop does not find himself in danger.”
— <em>Tao Te Ching</em>, Chapter 44</p>
  </blockquote>

  <p>And an even sharper one:</p>

  <blockquote>
    <p>“Less brings gain; more brings confusion.”
— <em>Tao Te Ching</em>, Chapter 22</p>
  </blockquote>

  <p>Two and a half thousand years apart, same answer: <strong>do less, not more.</strong></p>

  <p>When Steve Jobs returned to Apple in 1997, the first thing he did wasn’t launch new products — it was killing 70% of the product line. He later said:</p>

  <blockquote>
    <p>“People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas.”</p>
  </blockquote>

  <p>Focus isn’t saying yes to the goal. Focus is saying no to a hundred other good ideas.</p>

  <p>Obama wore the same gray or blue suit every day. Zuckerberg wore the same gray T-shirt. Not because they couldn’t afford variety — because they understood a fact: every trivial daily decision draws from the same pool of limited cognitive resources. Reducing unimportant decisions protects the quality of important ones.</p>

  <p>My own recent realization: Claude Code can help me with dozens of things — note automation, code refactoring, knowledge curation, data analysis, documentation. But when I try to advance all these possibilities simultaneously, I’m more exhausted than before AI. Every new automated pipeline means one more system to maintain, one more potential failure point, one more “is this AI output correct?” judgment call.</p>

  <p>The moments that actually work are when I decide <strong>not to do</strong> something. Not because I can’t — precisely because I can, which makes “not doing” an active decision that must be deliberately made.</p>

  <p>Jacoby’s experiments showed the same thing: <strong>more brand information actually led to worse decisions</strong>. Barry Schwartz called it the “paradox of choice” — past a certain point, more options just mean more anxiety and more regret.</p>

  <p>AI has handed us more options than we’ve ever had. But our ability to choose well? Still the same.</p>

  <hr />

  <h2 id="closing">Closing</h2>

  <p>Let me return to Zhuangzi.</p>

  <p>“To pursue the limitless with the limited is perilous” — but Zhuangzi didn’t say “so do nothing.” He was talking about <em>nourishing life</em>. Nourishing what? The pipe itself.</p>

  <p>Here’s what I keep coming back to: <strong>the more you CAN do, the less you SHOULD do.</strong></p>

  <p>Not rejecting tools. Using the power of tools to do fewer, deeper things — not more, shallower things. The pipe diameter won’t change. The water pressure will keep rising. The only thing you can control is how many valves you choose to open.</p>

  <p>Eric Schmidt once warned that too much information could get in the way of “deep thinking, comprehension, and memory formation.” Clay Shirky put it better: the problem isn’t information overload — it’s filter failure. Our filters can’t keep up.</p>

  <p>AI generates information faster than anything before it. But the hard part was never generating more — it’s throwing most of it away and actually paying attention to what’s left.</p>

  <p>Simon made it clear in 1971: in an information-rich world, the scarce resource isn’t information — it’s attention.</p>

  <p>So in an AI-rich world, what’s scarce?</p>

  <p>The moments you decide <strong>not</strong> to use AI.</p>

  <hr />

  <p><em>Written April 8, 2026. An evening when I used AI to organize 300 note files — and found myself more exhausted than before I started.</em></p>

  <h3 id="sources">Sources</h3>

  <ul>
    <li><a href="https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two">The Magical Number Seven, Plus or Minus Two</a> — George A. Miller’s landmark 1956 paper on working memory limits</li>
    <li><a href="https://en.wikipedia.org/wiki/Cognitive_load">Cognitive Load Theory</a> — John Sweller’s framework on working memory bottlenecks</li>
    <li><a href="https://en.wikipedia.org/wiki/Attention_restoration_theory">Attention Restoration Theory</a> — Kaplan &amp; Kaplan on directed attention fatigue</li>
    <li><a href="https://www.upwork.com/research/ai-enhanced-work-models">Upwork 2024 Research</a> — AI and workforce overwhelm</li>
    <li><a href="https://www.microsoft.com/en-us/worklab/work-trend-index/">Microsoft 2024 Work Trend Index</a> — AI adoption and productivity metrics</li>
    <li><a href="https://www.apa.org/pubs/reports/work-in-america/2023-workplace-health-well-being">APA 2023 Work in America Survey</a> — AI anxiety and workplace mental health</li>
    <li><a href="https://en.wikipedia.org/wiki/The_Paradox_of_Choice">The Paradox of Choice</a> — Barry Schwartz on choice overload</li>
    <li><a href="https://en.wikipedia.org/wiki/Productivity_paradox">Solow Paradox</a> — The productivity paradox of new technology</li>
  </ul>

</div>

<div class="lang-zh lang-hidden">

  <h2 id="section">缘起</h2>

  <p>今天下午我在整理笔记的时候，突然停下来了。</p>

  <p>不是因为没事做——恰恰相反，是因为事情太多了。</p>

  <p>我面前有一个Obsidian vault，大概300多个文件。Claude Code帮我搭了一个自动化工作流：晨间规划、任务调度、知识摘要、跨项目同步。以前这些事情我根本不会去做——太复杂了，不值得投入时间。但现在，有了AI，”不值得”变成了”好像可以”。</p>

  <p>然后我发现了一个悖论：每件事都变得”可以做了”，但每件事做起来都比我预想的要多花时间。工具更强了，但我更累了。</p>

  <p>我以为这是我的问题——可能是我效率不够高，可能是我还没找到正确的工作方式。直到我看到了一组数据：</p>

  <blockquote>
    <p>Upwork 2024年的研究发现，<strong>超过一半使用AI工具的员工感到更加不堪重负（overwhelmed）</strong>——不是更轻松，是更累。</p>
  </blockquote>

  <p>这不是我一个人的错觉。这是一个结构性问题。</p>

  <hr />

  <h2 id="section-1">一、管道是固定的</h2>

  <p>庄子两千多年前说过一句话，现在读起来后背发凉：</p>

  <blockquote>
    <p>“吾生也有涯，而知也无涯。以有涯随无涯，殆已。”
— 庄子《养生主》</p>
  </blockquote>

  <p>这不是鸡汤。这是认知科学的预言。</p>

  <p>1956年，心理学家George A. Miller发表了一篇日后成为经典的论文：《神奇的数字7±2》。他发现人类工作记忆（working memory）一次只能同时保持大约<strong>7个信息单元</strong>。不是7GB，不是7TB——是7个chunks。这是硬件限制，不是软件问题。你不能通过”更努力”来升级它，就像你不能通过跑步来让心脏多长出一个腔室。</p>

  <p>1980年代末，John Sweller的认知负荷理论又补了一刀：工作记忆不光小，还短命。所有信息都得先挤过这个瓶颈才能存进长期记忆。选项太多、界面太乱、信息太杂——学习和决策质量直接崩盘。</p>

  <p>还有一个维度：密歇根大学Kaplan夫妇提出的<strong>定向注意力疲劳</strong>。大脑要集中注意力，得不断压制周围的干扰——但这个”压制”本身就在烧能量，烧完了就没了。后果：判断失误、规划变差、脾气变大、做事冲动。</p>

  <p>换句话说：你的大脑是一根固定口径的管道。从Miller到Sweller到Kaplan，半个多世纪的研究都在说同一件事——<strong>管道不会变粗</strong>。</p>

  <hr />

  <h2 id="section-2">二、阀门多了十倍</h2>

  <p>Herbert Simon，1978年诺贝尔经济学奖得主，在1971年写下了一句话：</p>

  <blockquote>
    <p>“在信息丰富的世界里，信息的富裕意味着其他东西的匮乏——即信息所消耗的东西的匮乏：接收者的注意力。”</p>
  </blockquote>

  <p>1971年。没有互联网，没有智能手机，没有AI。Simon看到的只是电视和报纸变多了。但他已经看透了：<strong>注意力是零和的</strong>。给了A，B就少了。</p>

  <p>现在把这个逻辑放到AI时代。</p>

  <p>以前，我的一天大概有5-10个决策点：今天做什么任务、用什么方法、优先级怎么排。现在，有了Claude Code，我的决策点可能是50个：要不要让AI帮我重构这段代码？它生成的结果对不对？要不要再迭代一次？这个自动化流程值不值得搭建？搭建了之后出了bug谁来修？AI建议的这个方案，我理解吗？不理解的话，我要花多少时间去理解？</p>

  <p>每一个新的”可能性”都是一个新的阀门。每个阀门都在问你：开还是不开？</p>

  <p>以色列有个很有名的假释法官研究，结果很扎心：每轮裁决开始时，批准率约为<strong>65%</strong>。随着决策数量的增加，批准率<strong>逐渐降至接近0%</strong>。休息之后，恢复到65%。不是案件变差了——是法官的大脑累了。</p>

  <p>David Meyer的研究更直接：多任务切换使完成时间增加<strong>一倍以上</strong>。大脑在任务之间切换时，产生零进展的”重启”时间。而且只有<strong>2-5%的人</strong>是真正的”超级任务者”——其余95%的人在多任务时都会表现下降。</p>

  <p>陷阱就在这里。AI让你能开更多阀门，但管道没变粗。每多开一个，不是多了产出——是每个阀门分到的水更少了。</p>

  <hr />

  <h2 id="section-3">三、数据不说谎</h2>

  <p>如果只是我自己的感觉，大可以说”你自己的问题”。但数据不这么说。</p>

  <p><strong>APA 2023年美国职场调查（2,515人）：</strong></p>

  <ul>
    <li><strong>38%</strong> 的员工担心AI会使他们的工作过时</li>
    <li>在这些担忧AI的员工中：<strong>51%</strong> 认为工作损害了他们的心理健康，<strong>64%</strong> 在工作日感到紧张或压力，<strong>37%</strong> 感到情感耗竭</li>
    <li>即使是不担心AI取代的员工，压力水平也在上升——<strong>56%</strong> 感到被技术监控微管理</li>
  </ul>

  <p><strong>Microsoft 2024年工作趋势指数：</strong></p>

  <ul>
    <li><strong>75%</strong> 的知识工作者现在在工作中使用AI</li>
    <li><strong>78%</strong> 自带AI工具上班（BYOAI）</li>
    <li>但<strong>59%</strong> 的领导承认无法量化AI的生产力收益</li>
    <li><strong>60%</strong> 的公司承认缺乏AI的愿景和计划</li>
    <li><strong>46%</strong> 的全球职场人考虑在一年内辞职——历史最高</li>
  </ul>

  <p><strong>Upwork 2024年研究（最扎心的一组）：</strong></p>

  <ul>
    <li><strong>超过50%</strong> 使用AI的员工报告感到”不堪重负”</li>
    <li>有AI工具访问权限的员工报告了<strong>更多的倦怠（burnout）</strong>，而非更少</li>
  </ul>

  <p><strong>Gallup 2021全球情绪报告：</strong></p>

  <ul>
    <li>全球<strong>41%</strong> 的成年人感到压力——历史新高</li>
    <li>全球<strong>42%</strong> 的成年人感到担忧——历史新高</li>
  </ul>

  <p>2007年Tarafdar总结过五种技术压力：过载（逼你加速）、入侵（永远在线）、复杂（学不完的新工具）、不安全（怕被替代）、不确定（下个季度又换一套）。</p>

  <p>放到AI身上，五条全中，而且每条都在加码。</p>

  <hr />

  <h2 id="section-4">四、历史总在重复</h2>

  <p>这不是第一次发生了。</p>

  <p>1987年，诺贝尔经济学奖得主Robert Solow写了一句话，后来被称为”Solow悖论”：</p>

  <blockquote>
    <p>“你到处都能看到计算机时代，唯独在生产力统计中看不到。”</p>
  </blockquote>

  <p>Erik Brynjolfsson在1993年量化了这个悖论：1970-80年代，计算能力增长了<strong>100倍</strong>，但劳动生产率反而从1960年代的<strong>3%以上</strong>下降到<strong>约1%</strong>。更多计算机没有带来更高的生产力——至少在短期内没有。</p>

  <p>蒸汽机和电力也一样——生产力红利花了几十年才兑现。1870年代的工厂装上电动机，车间布局还是蒸汽机时代那套——直到有人想明白要重新设计整个流程，电力的好处才真正显现。</p>

  <p>今天的AI时代正在重复这个循环：</p>

  <p><strong>工具爆发 → 认知过载 → 组织适应滞后 → 生产力停滞</strong></p>

  <p>75%的人在用AI，但59%的领导说不清楚AI到底带来了什么。工具更多了，人更累了。不是AI不行——是我们的习惯、组织和脑子还没跟上。</p>

  <hr />

  <h2 id="section-5">五、知止</h2>

  <p>所以怎么办？拒绝AI？显然不现实。更努力地用AI？数据已经告诉你这条路通向倦怠。</p>

  <p>老子说：</p>

  <blockquote>
    <p>“知止不殆。”
— 《道德经》第四十四章</p>
  </blockquote>

  <p>还有一句更狠的：</p>

  <blockquote>
    <p>“少则得，多则惑。”
— 《道德经》第二十二章</p>
  </blockquote>

  <p>两千五百年前说的，和今天的认知科学说的，是一回事：<strong>不是做更多，是选更少。</strong></p>

  <p>Steve Jobs在1997年回归Apple之后，做的第一件事不是推出新产品——而是砍掉70%的产品线。他后来说：</p>

  <blockquote>
    <p>“People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas.”</p>
  </blockquote>

  <p>专注不是对目标说”是”。专注是对一百个其他好主意说”不”。</p>

  <p>Obama每天穿同款灰色或蓝色西装。Zuckerberg每天穿同款灰色T恤。不是因为他们买不起衣服——是因为他们理解一个事实：每一个微小的日常决策都在消耗同一池有限的认知资源。减少不重要的决策，是为了保护重要决策的质量。</p>

  <p>我自己最近的一个体会：Claude Code能帮我做的事情有几十种——自动化笔记、代码重构、知识整理、数据分析、写文档。但当我试图同时推进所有这些可能性的时候，我比不用AI的时候还要累。每多一条自动化流程，就多一个需要维护的系统、多一个可能出错的环节、多一次”这个AI输出对不对”的判断。</p>

  <p>真正有效的时刻，是我决定<strong>不做</strong>某件事的时候。不是因为做不到——恰恰是因为能做到，所以”不做”才成为一个需要主动做出的决策。</p>

  <p>Jacoby的实验也说了同样的事：<strong>给消费者的品牌信息越多，决策反而越差</strong>。Barry Schwartz管这叫”选择的悖论”——选项多到一定程度，带来的不是满足，而是焦虑和后悔。</p>

  <p>AI给了我们空前多的选项。但选的能力呢？还是老样子。</p>

  <hr />

  <h2 id="section-6">收束</h2>

  <p>让我回到庄子。</p>

  <p>“以有涯随无涯，殆已”——用有限去追无限，是危险的。但庄子没有说”所以什么都别做”。他说的是养生。养的是什么？是那根管道本身。</p>

  <p>我反复想到的一句话是：<strong>你能做的事越多，你应该做的事越少。</strong></p>

  <p>不是拒绝工具。是用工具的力量去做更少、更深的事情，而不是更多、更浅的事情。管道口径不会变。水压还会继续上升。唯一能控制的，是你主动打开多少个阀门。</p>

  <p>Eric Schmidt说过，信息太多会妨碍”深度思考、理解和记忆形成”。Clay Shirky说得更到位：问题不是信息太多，是”过滤失败”——我们的过滤能力跟不上信息的增长速度。</p>

  <p>AI是有史以来最猛的信息生成器。但真正稀缺的从来不是生成更多信息——而是扔掉大部分之后，还能对剩下的东西深度集中注意力。</p>

  <p>Simon在1971年就说清楚了：在信息丰富的世界里，匮乏的不是信息——是注意力。</p>

  <p>那么在AI丰富的世界里，匮乏的是什么？</p>

  <p>是你决定<strong>不用</strong>AI的那些时刻。</p>

  <hr />

  <p><em>写于2026年4月8日。一个用AI帮自己整理了300个笔记文件、然后发现自己比整理之前还累的晚上。</em></p>

  <h3 id="section-7">来源</h3>

  <ul>
    <li><a href="https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two">The Magical Number Seven, Plus or Minus Two</a> — George A. Miller 1956年关于工作记忆限制的经典论文</li>
    <li><a href="https://en.wikipedia.org/wiki/Cognitive_load">认知负荷理论</a> — John Sweller的工作记忆瓶颈框架</li>
    <li><a href="https://en.wikipedia.org/wiki/Attention_restoration_theory">注意力恢复理论</a> — Kaplan &amp; Kaplan关于定向注意力疲劳的研究</li>
    <li><a href="https://www.upwork.com/research/ai-enhanced-work-models">Upwork 2024研究</a> — AI与职场压力</li>
    <li><a href="https://www.microsoft.com/en-us/worklab/work-trend-index/">Microsoft 2024工作趋势指数</a> — AI采用率与生产力指标</li>
    <li><a href="https://www.apa.org/pubs/reports/work-in-america/2023-workplace-health-well-being">APA 2023美国职场调查</a> — AI焦虑与职场心理健康</li>
    <li><a href="https://en.wikipedia.org/wiki/The_Paradox_of_Choice">选择的悖论</a> — Barry Schwartz关于选择过载</li>
    <li><a href="https://en.wikipedia.org/wiki/Productivity_paradox">Solow悖论</a> — 新技术的生产力悖论</li>
  </ul>

</div>]]></content><author><name>ZachC</name></author><category term="life" /><category term="cognitive-load" /><category term="ai" /><category term="productivity" /><category term="philosophy" /><category term="burnout" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">The Journey Is the Scripture</title><link href="https://zachc.ai/blog/the-journey-is-the-scripture/" rel="alternate" type="text/html" title="The Journey Is the Scripture" /><published>2026-04-05T00:00:00+00:00</published><updated>2026-04-05T00:00:00+00:00</updated><id>https://zachc.ai/blog/the-journey-is-the-scripture</id><content type="html" xml:base="https://zachc.ai/blog/the-journey-is-the-scripture/"><![CDATA[<div class="lang-en">

  <h2 id="the-spark">The Spark</h2>

  <p>March 28, 2026, Portugal. World Superbike Championship, WorldSSP class.</p>

  <p>A motorcycle numbered ZX820RR-RS crosses the finish line four seconds ahead of Yamaha. The next day, the same bike recovers from third to first and wins again. Back-to-back victories. The rider, Valentin Debise, is French — but the machine under him is entirely Chinese. Engine, brake discs, suspension, calipers — all from a Chongqing company called ZXMOTO, founded by a man named Zhang Xue.</p>

  <p>This broke decades of monopoly by Ducati, Yamaha, and Kawasaki. Watching the livestream from Chongqing, Zhang Xue cried.</p>

  <p>Most people will focus on the championship. What moved me was something Zhang Xue once said:</p>

  <blockquote>
    <p>“Doing something not for the result but out of genuine love — the outcome might truly be different.”</p>
  </blockquote>

  <p>That reminded me of a line attributed to Feng Ji, the creator of <em>Black Myth: Wukong</em>:</p>

  <blockquote>
    <p>“Setting out on the journey to the West is more important than obtaining the scripture itself.”</p>
  </blockquote>

  <p>This line has been spinning in my head. Because I’ve noticed — across eras and cultures, the people who ultimately built something real were all saying the same thing.</p>

  <hr />

  <h2 id="zhang-xue-ride-first-learn-the-gap-later">Zhang Xue: Ride First, Learn the Gap Later</h2>

  <p>In 2013, Zhang Xue arrived in Chongqing with 20,000 yuan. He assembled motorcycles, modified them, sold them online. In 2017 he founded Kaiyue Motorcycle, scaling from 800 to 30,000 units per year. In 2024 he left to start ZXMOTO, focused on high-performance bikes and proprietary engine R&amp;D.</p>

  <p>The gap between Chinese motorcycle manufacturing and Japan/Italy is real. The conventional approach: catch up on technology first, then go race. Zhang Xue did the opposite: race first, discover gaps on the track, improve through the gaps.</p>

  <p>He said:</p>

  <blockquote>
    <p>“Maybe I’m completely inferior to you in other ways — my talent isn’t as good, my resources aren’t as good — but when my effort exceeds yours tenfold, why shouldn’t this be mine? It IS mine!”</p>
  </blockquote>

  <p>And:</p>

  <blockquote>
    <p>“If you do it while young, even if you fail when you grow old, you won’t regret it — absolutely not.”</p>
  </blockquote>

  <p>That Portugal championship didn’t fall from the sky. It was earned from 20,000 yuan, through countless last-place finishes, retirements, and doubts — lap by lap.</p>

  <hr />

  <h2 id="jiaozi-make-it-first-talk-later">Jiaozi: Make It First, Talk Later</h2>

  <p>Jiaozi (Yang Yu) graduated from Sichuan University’s School of Pharmacy in 2002. He abandoned a conventional career to teach himself animation. His mother’s monthly pension of 1,000 yuan was his only income. Three and a half years later, alone, he produced the short film <em>Beat Up the Big Watermelon</em>, which won a special commendation at the Berlin International Short Film Festival in 2008.</p>

  <p>He wrote a line for his film that became a rallying cry for all of Chinese animation:</p>

  <blockquote>
    <p>“My fate is my own, not decided by the heavens.”</p>
  </blockquote>

  <p>This isn’t just a line from Ne Zha — it’s Jiaozi’s own life. A pharmacy graduate with no animation training, no industry connections, surviving on his mother’s pension, questioned by everyone. His choice wasn’t to prove he was qualified to make animation — it was to just make it.</p>

  <p><em>Ne Zha</em> grossed 5 billion RMB in 2019. <em>Ne Zha 2</em> hit $2.2 billion globally in 2025, becoming the highest-grossing animated film in history. But the starting point was one person, one computer, 1,000 yuan a month, and one decision: start.</p>

  <hr />

  <h2 id="the-ancients-already-knew">The Ancients Already Knew</h2>

  <h3 id="lu-xun-there-were-no-roads">Lu Xun: There Were No Roads</h3>

  <blockquote>
    <p>“There were no roads to begin with. But when enough people walk the same way, a road appears.”
— Lu Xun, <em>My Old Home</em></p>
  </blockquote>

  <p>Roads aren’t planned. They’re walked into existence. The first person to walk had no road — the road appeared <em>because</em> he walked.</p>

  <h3 id="wang-yangming-unity-of-knowledge-and-action">Wang Yangming: Unity of Knowledge and Action</h3>

  <blockquote>
    <p>“Knowledge is the beginning of action; action is the completion of knowledge.”
— Wang Yangming</p>
  </blockquote>

  <p>Wang Yangming spent his life arguing one point: you think you “know” something, but if you haven’t done it, you know nothing. True knowledge comes only from action. Every step on the journey <em>is</em> the scripture.</p>

  <h3 id="lao-tzu-a-thousand-miles">Lao Tzu: A Thousand Miles</h3>

  <blockquote>
    <p>“A journey of a thousand miles begins with a single step.”
— Lao Tzu, <em>Tao Te Ching</em>, Chapter 64</p>
  </blockquote>

  <p>Perhaps the most quoted line ever. But most people see “a thousand miles” and miss the key word: “begins.” The point isn’t the distance. It’s the starting.</p>

  <h3 id="li-bai-the-hard-road">Li Bai: The Hard Road</h3>

  <blockquote>
    <p>“I want to cross the Yellow River, but ice blocks the channel;
I want to climb Taihang, but snow fills the slopes…
Yet someday I will ride the long wind and break the heavy waves,
and set my cloudy sail straight across the deep, deep sea.”</p>
  </blockquote>

  <p>When Li Bai wrote this, his career was blocked and every path seemed closed. But the poem doesn’t end in despair — it ends in “riding the wind and breaking the waves.” Knowing the road is hard and walking it anyway — that IS the answer.</p>

  <hr />

  <h2 id="the-west-says-the-same-thing">The West Says the Same Thing</h2>

  <h3 id="theodore-roosevelt-the-man-in-the-arena">Theodore Roosevelt: The Man in the Arena</h3>

  <blockquote>
    <p>“The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood… who at best knows, in the end, the triumph of high achievement, and who, at the worst, if he fails, at least fails while daring greatly.”
— “Citizenship in a Republic,” 1910</p>
  </blockquote>

  <p>Roosevelt and Zeng Guofan said the same thing: the spectator is never wrong — but never wins either.</p>

  <h3 id="steve-jobs">Steve Jobs</h3>

  <blockquote>
    <p>“The journey is the reward.”</p>
  </blockquote>

  <p>Jobs said this when Apple was nowhere near a trillion-dollar company. The point: don’t walk for the destination. The walking itself is the meaning.</p>

  <h3 id="cp-cavafy-ithaca">C.P. Cavafy: <em>Ithaca</em></h3>

  <blockquote>
    <p>As you set out for Ithaca,
hope the voyage is a long one,
full of adventure, full of discovery.
Laistrygonians and Cyclops,
angry Poseidon — don’t be afraid of them:
you’ll never find things like that on your way
as long as you keep your thoughts raised high,
as long as a rare excitement
stirs your spirit and your body.</p>

    <p>Hope the voyage is a long one.
May there be many a summer morning when,
with what pleasure, what joy,
you come into harbors seen for the first time;
may you stop at Phoenician trading stations
to buy fine things,
mother of pearl and coral, amber and ebony,
sensual perfume of every kind —
as many sensual perfumes as you can;
and may you visit many Egyptian cities
to gather stores of knowledge from their scholars.</p>

    <p>Keep Ithaca always in your mind.
Arriving there is what you are destined for.
But do not hurry the journey at all.
Better if it lasts for years,
so you are old by the time you reach the island,
wealthy with all you have gained on the way,
not expecting Ithaca to make you rich.</p>

    <p>Ithaca gave you the marvelous journey.
Without her you would not have set out.
She has nothing left to give you now.</p>

    <p>And if you find her poor, Ithaca won’t have fooled you.
Wise as you will have become, so full of experience,
you will have understood by then what these Ithacas mean.</p>

    <p>— C.P. Cavafy, <em>Ithaca</em> (1911)</p>
  </blockquote>

  <p>The poem says it all. Ithaca’s greatest value is that it made you set out. Everything you encounter along the way — storms, harbors, strangers — that’s what you actually receive. And if the destination turns out to be less than you imagined, it hasn’t fooled you. By then, you’ll understand what Ithaca really meant.</p>

  <h3 id="reid-hoffman">Reid Hoffman</h3>

  <blockquote>
    <p>“Starting a company is like throwing yourself off a cliff and assembling an airplane on the way down.”</p>
  </blockquote>

  <blockquote>
    <p>“If you aren’t embarrassed by the first version of your product, you shipped too late.”</p>
  </blockquote>

  <p>His first principle is speed. Nobody starts when they’re ready. Everyone learns to fly on the way down — and if that first version doesn’t make you cringe, you waited too long to jump.</p>

  <h3 id="jensen-huang">Jensen Huang</h3>

  <p>At Stanford’s 2024 commencement, Jensen Huang told the graduates:</p>

  <blockquote>
    <p>“I hope suffering happens to you.”</p>
  </blockquote>

  <p>He wasn’t cursing them. NVIDIA nearly died in 1997 — one month of payroll left. He later said building NVIDIA was “a million times harder” than expected. If he’d known the pain ahead, he probably wouldn’t have started. But he started. And the suffering taught him everything he needed.</p>

  <h3 id="rilke">Rilke</h3>

  <blockquote>
    <p>“Be patient toward all that is unsolved in your heart and try to love the questions themselves. Live the questions now. Perhaps you will then gradually, without noticing it, live along some distant day into the answer.”
— Rilke, <em>Letters to a Young Poet</em> (1903)</p>
  </blockquote>

  <p>Rilke and Wang Yangming said the same thing: you don’t find the answer and then set out — you live your way into the answer along the road.</p>

  <hr />

  <h2 id="why-just-start-is-so-hard">Why “Just Start” Is So Hard</h2>

  <p>If everyone knows this, why do most people still not move?</p>

  <p>Because setting out on the journey has a hidden cost: <strong>you expose your imperfection.</strong></p>

  <p>If you don’t race, you can always say “my bike is still being tuned.” If you don’t ship, you can always say “I’m still polishing.” If you don’t try building with new tools, you can always say “the technology isn’t mature enough.”</p>

  <p>Standing still, your self-image is intact — “I just haven’t started yet; once I do, I’ll be amazing.” But once you step out, reality holds up a mirror. You see the gaps, your own clumsiness, others who are faster, better, more experienced.</p>

  <p>Zhang Xue saw that mirror — and kept riding. Jiaozi saw it — and kept drawing. Feng Ji saw it — and kept building.</p>

  <p>This is what “personal cultivation” means — not a moral judgment, but the ability to face real feedback without running away.</p>

  <hr />

  <h2 id="the-journey-is-the-scripture">The Journey <em>Is</em> the Scripture</h2>

  <p>In <em>Journey to the West</em>, Tang Seng and his disciples endure eighty-one trials to reach Vulture Peak and obtain the scriptures. But think carefully — what are the scriptures, really?</p>

  <p>Are they the rolls of paper with words on them?</p>

  <p>No. The real scripture is Sun Wukong learning restraint, Zhu Bajie learning perseverance, Sha Wujing learning responsibility, and Tang Seng learning trust. These things weren’t at Vulture Peak — they were on the road.</p>

  <p>The eighty-one trials aren’t “obstacles before the scripture” — they <em>are</em> the scripture.</p>

  <hr />

  <h2 id="closing">Closing</h2>

  <p>I’ve been rebuilding my workflow with AI recently — from how I organize knowledge to how I plan my day. Honestly, 90% of the time I don’t know what I’m doing. Tools change, models change, best practices get overturned every week.</p>

  <p>But I think of Zhang Xue, Jiaozi, and Wang Yangming’s “knowledge is the beginning of action” — you can’t fully understand before doing. You can only understand through doing.</p>

  <p>Lu Xun said roads are made by walking. Cavafy said Ithaca is just the reason to set out. Roosevelt said credit belongs to the man in the arena. Jobs said the journey is the reward.</p>

  <p>They’re all saying the same thing:</p>

  <blockquote>
    <p><strong>Setting out on the journey is more important than reaching the destination.</strong></p>
  </blockquote>

  <p>Because every step on that journey <em>is</em> the scripture.</p>

  <hr />

  <p><em>Written April 5, 2026. A week after Zhang Xue’s championship in Portugal.</em></p>

</div>

<div class="lang-zh lang-hidden">

  <h2 id="section">缘起</h2>

  <p>2026年3月28日，葡萄牙。世界超级摩托车锦标赛（WSBK）WorldSSP组别。</p>

  <p>一辆编号ZX820RR-RS的摩托车冲过终点线，领先雅马哈四秒。第二天，同一辆车从第三位追到第一，再次夺冠。连续两场。骑手Valentin Debise来自法国，但他胯下的机器——从发动机到制动盘到悬挂，全部来自重庆一家叫”张雪机车”的公司。</p>

  <p>这打破了Ducati、雅马哈、川崎几十年的垄断。远在重庆看直播的张雪，哭了。</p>

  <p>很多人会关注那个冠军。但让我真正触动的，是张雪说过的一句话：</p>

  <blockquote>
    <p>“做一件事不是奔着结果去，而是因为热爱，可能结果真的不一样。”</p>
  </blockquote>

  <p>这让我想起了一句话，据说来自《黑神话：悟空》的制作人冯骥：</p>

  <blockquote>
    <p>“踏上取经路，比取到真经更重要。”</p>
  </blockquote>

  <p>这句话一直在我脑子里打转。因为我发现，古今中外，最终做成事情的人，都在说同一件事。</p>

  <hr />

  <h2 id="section-1">张雪：先骑出去，才知道差距在哪</h2>

  <p>2013年，张雪带着两万块钱到了重庆。组装摩托、改装摩托、网上卖摩托。2017年创立凯越机车，从年产800台做到30000台。2024年离开凯越，成立张雪机车（ZXMOTO），专注高性能摩托车和自主发动机研发。</p>

  <p>中国摩托车工业和日本、意大利比，差距是客观存在的。传统思路是：先把技术追上来，再去比赛。张雪的选择反过来：先去比赛，在赛道上发现差距，在差距中改进。</p>

  <p>他自己说过：</p>

  <blockquote>
    <p>“有可能我的其他方面完全不如你，我的天赋不如你，我的资源不如你，但是我的努力比你多十倍的时候，凭什么不是我的？就是我的！”</p>
  </blockquote>

  <p>还有一句：</p>

  <blockquote>
    <p>“年轻做了就算到老了，失败了不会后悔，肯定不会。”</p>
  </blockquote>

  <p>葡萄牙的那个冠军，不是从天上掉下来的。是从两万块钱、无数次垫底、退赛、被质疑中，一圈一圈跑出来的。</p>

  <hr />

  <h2 id="section-2">饺子：做了再说</h2>

  <p>饺子（杨宇），四川大学药学院毕业，2002年。放弃了稳定的职业道路，自学动画。母亲每月1000块钱的退休金，是他唯一的经济来源。三年半，一个人在家做出了短片《打，打个大西瓜》，2008年拿到柏林国际短片节评委会特别奖。</p>

  <p>他在电影里写了一句台词，后来成了整个中国动画的精神标杆：</p>

  <blockquote>
    <p>“我命由我不由天。”</p>
  </blockquote>

  <p>这不只是哪吒说的话——这是饺子自己的人生。一个药学毕业生，没有动画训练，没有行业人脉，靠母亲的退休金活着，被所有人质疑。他的选择不是证明自己有资格做动画——而是先做出来。</p>

  <p>《哪吒之魔童降世》2019年票房50亿人民币。《哪吒2》2025年全球票房22亿美元，成为有史以来票房最高的动画电影。但起点是一个人、一台电脑、每月1000块钱、和一个决定：先做。</p>

  <hr />

  <h2 id="section-3">古人早就知道了</h2>

  <h3 id="section-4">鲁迅：世上本没有路</h3>

  <blockquote>
    <p>“其实地上本没有路，走的人多了，也便成了路。”
— 鲁迅《故乡》</p>
  </blockquote>

  <p>路不是被规划出来的。路是被走出来的。第一个走的人，脚下没有路——他走过之后，才有了路。</p>

  <h3 id="section-5">王阳明：知行合一</h3>

  <blockquote>
    <p>“知者行之始，行者知之成。”
— 王阳明《传习录》</p>
  </blockquote>

  <p>王阳明一辈子在说的核心就是：你以为你”知道”了，但如果你没有做，你其实什么都不知道。真正的知，只能从行中来。取经路上的每一步，才是真经本身。</p>

  <h3 id="section-6">老子：千里之行</h3>

  <blockquote>
    <p>“千里之行，始于足下。”
— 老子《道德经》第六十四章</p>
  </blockquote>

  <p>这可能是最被引用的一句话了。但大部分人只看到了”千里”——而忽略了”始”。重点不是距离，是开始。</p>

  <h3 id="section-7">李白：行路难</h3>

  <blockquote>
    <p>“欲渡黄河冰塞川，将登太行雪满山。”
“长风破浪会有时，直挂云帆济沧海。”
— 李白《行路难》</p>
  </blockquote>

  <p>李白写这首诗的时候，仕途受阻，前路茫茫。黄河冰封，太行雪满——每一条路都走不通。但诗不是在绝望中结束的。它在”长风破浪”中结束。明知道路难，还要走——这本身就是李白的答案。</p>

  <hr />

  <h2 id="section-8">西方也在说同一件事</h2>

  <h3 id="theodore-roosevelt">Theodore Roosevelt：竞技场上的人</h3>

  <blockquote>
    <p>“荣耀属于那个真正站在竞技场上的人，他的脸上沾满灰尘、汗水和鲜血……即使失败了，至少他在大胆尝试。”
— “Citizenship in a Republic,” 1910</p>
  </blockquote>

  <p>Roosevelt说的和曾国藩说的”躬身入局”是一回事：站在场外评论的人永远不会错——但也永远不会赢。</p>

  <h3 id="steve-jobs-1">Steve Jobs</h3>

  <blockquote>
    <p>“旅程就是回报。”</p>
  </blockquote>

  <p>Jobs说这话的时候，Apple还不是万亿市值。他在说的是：不要为了终点而走路。走路本身就是意义。</p>

  <h3 id="cp-cavafy">C.P. Cavafy：《伊萨卡》</h3>

  <p>希腊诗人卡瓦菲斯写过一首诗叫《伊萨卡》，讲的是奥德修斯的归乡之路：</p>

  <blockquote>
    <p>当你出发去伊萨卡，
愿你的道路漫长，
充满奇迹，充满发现。
莱斯特律戈涅斯人、独眼巨人、
愤怒的波塞冬——不要惧怕他们：
只要你的思想高远，
只要有一种罕见的激情
激荡着你的灵魂和肉体，
你就永远不会在路上遇到那些东西。</p>

    <p>愿你的道路漫长。
愿有许多个夏天的早晨，
你带着多大的愉悦，多大的欢喜，
第一次驶入从未见过的港口；
愿你在腓尼基人的贸易站前驻足，
买那些精美的货物——
珍珠母、珊瑚、琥珀、乌木，
各种各样感官的香料——
尽可能多的感官的香料；
愿你去许多埃及城市，
从学者那里获取知识的储备。</p>

    <p>心中要始终怀有伊萨卡。
抵达那里是你的命运。
但不要匆忙赶路。
最好让旅途延续多年，
等你年老时才到达那座岛屿，
带着一路所得的丰盈，
而不指望伊萨卡让你富有。</p>

    <p>伊萨卡给了你美丽的旅途。
没有它，你不会出发。
但它已经没有更多可以给你的了。</p>

    <p>如果你发现它贫瘠，伊萨卡并没有欺骗你。
当你变得如此智慧，如此阅历丰富，
你那时就已经明白了，这些伊萨卡意味着什么。</p>

    <p>— C.P. Cavafy,《伊萨卡》(1911)</p>
  </blockquote>

  <p>这首诗已经说尽了。伊萨卡最大的价值，是它让你出发了。旅途中遇到的一切——风暴、港口、陌生人——才是你真正得到的东西。即使终点不如想象中辉煌，它也没有骗你。因为到那时，你已经明白了伊萨卡的真正含义。</p>

  <h3 id="reid-hoffman-1">Reid Hoffman</h3>

  <blockquote>
    <p>“创业就是从悬崖上跳下去，在下落的过程中组装飞机。”</p>
  </blockquote>

  <blockquote>
    <p>“如果你第一版的产品没让你出洋相，那你产品面市的时间其实已经晚了。”</p>
  </blockquote>

  <p>他的第一原则是速度。没有人是准备好了才开始的。所有人都是在下落中学会飞的——如果第一版没让你脸红，说明你跳晚了。</p>

  <h3 id="jensen-huang-1">Jensen Huang</h3>

  <p>2024年斯坦福毕业典礼，黄仁勋对台下的毕业生说：</p>

  <blockquote>
    <p>“我希望苦难发生在你们身上。”</p>
  </blockquote>

  <p>他不是在诅咒。NVIDIA差点没活过1997年——只剩一个月的现金流。他后来说，创建NVIDIA比想象中难”一百万倍”。如果当初知道要承受多少”痛苦、羞耻和尴尬”，他可能不会开始。但他开始了。然后他在痛苦中学到了活下来需要的一切。</p>

  <h3 id="rilke-1">Rilke</h3>

  <blockquote>
    <p>“对你心中一切未解之事保持耐心，试着去爱问题本身。活在问题之中。也许你会不知不觉地，在某个遥远的日子里，活进答案之中。”
— Rilke,《给青年诗人的信》(1903)</p>
  </blockquote>

  <p>里尔克说的和王阳明说的是同一件事：你不是先找到答案再出发——你是在路上活成了答案。</p>

  <hr />

  <h2 id="section-9">为什么”先做”这么难</h2>

  <p>如果所有人都知道这个道理，为什么大部分人还是不动？</p>

  <p>因为”踏上取经路”有一个隐藏的代价：<strong>你会暴露自己的不完美</strong>。</p>

  <p>不上赛道，你可以永远说”我的车还在调试”。不发布作品，你可以永远说”我还在打磨”。不尝试用新工具改造工作流，你可以永远说”工具还不够成熟”。</p>

  <p>停在原地，你的自我形象是完整的——”我只是还没开始，一旦开始一定很厉害。”但一旦你踏出去，现实会给你一面镜子。你会看到差距，看到自己的笨拙，看到别人比你快、比你好、比你有经验。</p>

  <p>张雪看到了这面镜子——然后继续骑。饺子看到了——然后继续画。冯骥看到了——然后继续做。</p>

  <p>这就是”人格修养”——不是道德审判，是面对真实反馈时不逃跑的能力。</p>

  <hr />

  <h2 id="section-10">取经路就是真经</h2>

  <p>《西游记》里，唐僧师徒四人历经九九八十一难，到了灵山取到真经。但你仔细想想——真经到底是什么？</p>

  <p>是那几卷写了字的纸吗？</p>

  <p>不是。真经是孙悟空学会的克制，是猪八戒学会的坚持，是沙僧学会的承担，是唐僧学会的信任。这些东西不在灵山——在路上。</p>

  <p>九九八十一难不是”到达真经之前的障碍”——它们就是真经本身。</p>

  <hr />

  <h2 id="section-11">收束</h2>

  <p>我最近在做一件事：用AI重新构建我的工作流——从知识管理到每日任务调度。坦率讲，90%的时间我不知道自己在做什么。工具在变，模型在变，最佳实践每周都在推翻上周的。</p>

  <p>但我想起张雪，想起饺子，想起王阳明说的”知者行之始”——你不可能在做之前就完全理解。你只能在做的过程中理解。</p>

  <p>鲁迅说路是走出来的。卡瓦菲斯说伊萨卡只是让你出发的理由。Roosevelt说荣耀属于场上的人。Jobs说旅途就是回报。</p>

  <p>他们都在说同一件事：</p>

  <blockquote>
    <p><strong>踏上取经路，比取到真经更重要。</strong></p>
  </blockquote>

  <p>因为取经路上的每一步，本身就是真经。</p>

  <hr />

  <p><em>写于2026年4月5日。张雪在葡萄牙夺冠后一周。</em></p>

</div>]]></content><author><name>ZachC</name></author><category term="life" /><category term="philosophy" /><category term="perseverance" /><category term="journey" /><category term="china" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Hype, Trends, and the Inner Anchor</title><link href="https://zachc.ai/blog/hype-trends-and-the-inner-anchor/" rel="alternate" type="text/html" title="Hype, Trends, and the Inner Anchor" /><published>2026-04-01T00:00:00+00:00</published><updated>2026-04-01T00:00:00+00:00</updated><id>https://zachc.ai/blog/hype-trends-and-the-inner-anchor</id><content type="html" xml:base="https://zachc.ai/blog/hype-trends-and-the-inner-anchor/"><![CDATA[<div class="lang-en">

  <h2 id="the-seed">The Seed</h2>

  <p>I wrote three lines in my notebook this morning. They came out fast — the way things do when you’ve been chewing on something for months without realizing it.</p>

  <blockquote>
    <p>Don’t chase hype blindly.
Don’t ignore trends willfully.
Hold your ground, embrace change, and cherish everything you have and everyone you meet.</p>
  </blockquote>

  <p>I work in AI infrastructure. Every morning I open my laptop to a new “revolution.” Vibe coding. AI agent frameworks. Yet another startup claiming it will change everything. Last week’s trending repo is already forgotten.</p>

  <p>But at the same time, something fundamental <em>is</em> shifting. GPU compute is reshaping the entire computing infrastructure. The infrastructure work I do every day didn’t exist three years ago. Ignoring these changes is just as dangerous as chasing every hot take.</p>

  <p>The question isn’t whether to pay attention. It’s <em>what</em> deserves attention — and what’s just noise wearing the costume of signal.</p>

  <p>There’s no formula. But I’ve found three anchors.</p>

  <hr />

  <h2 id="i-dont-chase-hype">I. Don’t Chase Hype</h2>

  <p>In January 2019, WeWork was worth $47 billion. Nine months later, it couldn’t even go public. The valuation crashed 78%, the CEO cashed out $700 million before being shown the door, and the company filed for bankruptcy in 2023.</p>

  <p>In May 2022, Terra/Luna evaporated $45 billion in a single week. FTX followed. Celsius. Three Arrows Capital. The entire crypto world fell like dominoes. The people who jumped in weren’t those who truly understood blockchain — they were those who saw everyone else making money.</p>

  <p>The pattern is always the same: a real innovation (shared workspaces, blockchain) gets inflated by capital and FOMO until the price tag has nothing to do with the underlying value. The people who get hurt aren’t the builders — they’re the followers.</p>

  <p>Buffett talks about the “circle of competence”:</p>

  <blockquote>
    <p>“The size of your circle doesn’t matter. Knowing its boundaries does.”</p>
  </blockquote>

  <p>Chasing hype is stepping outside your circle of competence while believing you’re still inside it. You don’t understand the underlying logic, but you see prices rising, others profiting, feeds buzzing — so you follow. That’s not investing. It’s imitation.</p>

  <p>Naval Ravikant puts it more directly: “Escape competition through authenticity.” The opposite of chasing hype isn’t doing nothing — it’s honestly asking yourself: <em>Do I actually understand this, or am I just afraid of missing out?</em></p>

  <p>The AI space is going through the same cycle. In Y Combinator’s Winter 2025 batch, 25% of startups had codebases that were 95% AI-generated. Sounds cool. But research shows AI-generated code has 2.74x the security vulnerability rate of human-written code, and senior developers actually became 19% slower when using AI tools. “Vibe coding” was coined by Karpathy, but his definition was “fully giving up on understanding the code itself” — that’s a warning, not a recommendation.</p>

  <p>The SEC has already started fining companies for “AI washing” — slapping “AI-powered” on products with no meaningful AI inside. It’s the “.com” suffix of our era.</p>

  <p>Laozi said: <em>The highest good is like water. Water benefits all things and does not compete.</em></p>

  <p>Water doesn’t rush to be where everyone else is. It finds the low places that others avoid. And precisely because of this — nothing is stronger.</p>

  <p>Not competing isn’t not moving. It’s not being swept along by others’ movement.</p>

  <hr />

  <h2 id="ii-dont-ignore-trends">II. Don’t Ignore Trends</h2>

  <p>In 1975, Kodak engineer Steven Sasson built the world’s first digital camera. 10,000 pixels.</p>

  <p>He brought it to management. Management said: Nice, but our film business makes $16 billion a year. Drop it.</p>

  <p>In 2012, Kodak filed for bankruptcy.</p>

  <p>Kodak’s tragedy wasn’t a technology blind spot — they <em>invented</em> the technology. The tragedy was that they saw the trend and chose not to look.</p>

  <p>Blockbuster’s story is even more absurd. In 2000, Netflix came knocking with a $50 million acquisition offer. Blockbuster laughed and said no. At the time, Blockbuster had over 9,000 stores and 84,000 employees. A decade later, it filed for bankruptcy. Netflix is now worth $300 billion.</p>

  <p>A former Blockbuster executive later admitted: “Digital would have changed Blockbuster’s business… but it wasn’t its killer. That credit belongs to Blockbuster itself.”</p>

  <p>What kills you isn’t change — it’s your avoidance of it.</p>

  <p>Marcus Aurelius wrote in <em>Meditations</em>:</p>

  <blockquote>
    <p>“The universe is change; our life is what our thoughts make it.”</p>
  </blockquote>

  <p>He also said: “Observe constantly that all things take place by change, and accustom thyself to consider that the nature of the Universe loves nothing so much as to change the things which are.” This isn’t self-help — it’s practical philosophy written by a Roman emperor on battlefields and during plagues. Change isn’t an exception. Change is the default state.</p>

  <p>Laozi used water to explain this: <em>Nothing in the world is softer or weaker than water, yet for attacking the hard and strong, nothing surpasses it.</em></p>

  <p>Water doesn’t resist change. Water <em>is</em> change itself. It doesn’t need to become a rock to fight a rock — it flows around, seeps in, and given enough time, the rock is split open.</p>

  <p>Trends are like water. You may not like them, but you can’t pretend they don’t exist. GPU compute is changing the computing paradigm — this isn’t hype, this is the reality of my daily work. LLMs aren’t a passing fad — they’re rewriting the fundamental assumptions of software engineering.</p>

  <p>The difference between a trend and a hype is durability. Hype disappears when the money runs out. A trend reshapes the landscape even after the excitement fades.</p>

  <p>The way to tell them apart is simple: when the money pulls out, is it still there?</p>

  <hr />

  <h2 id="iii-hold-your-ground-embrace-change-cherish-everything">III. Hold Your Ground, Embrace Change, Cherish Everything</h2>

  <p>If “don’t chase hype” and “don’t ignore trends” were enough, everyone would be doing it. The hard part is the third line: how do you hold your ground and embrace change at the same time?</p>

  <p>NVIDIA gave us an answer.</p>

  <p>In 1993, three people started a company at a Denny’s restaurant, each putting in $200. Jensen Huang later said that if he had known how hard the road would be — “a million times harder” — he might not have started. In 1997, the company had only one month of cash flow left. His go-to line in internal talks was: “We are thirty days from going out of business.”</p>

  <p>In 2006, NVIDIA released CUDA — a platform for general-purpose GPU computing. Nobody cared. Gaming companies didn’t care. The scientific computing community didn’t care. Wall Street didn’t care.</p>

  <p>Huang didn’t chase mobile chips when that was hot. Didn’t pivot to social media. Didn’t rebrand as a crypto company when miners were buying every GPU on the planet. He stayed on GPU compute. For thirty years.</p>

  <p>Then the AI wave came. Suddenly, the whole world realized only NVIDIA had the infrastructure. By October 2025, NVIDIA became the first company to exceed $5 trillion in market capitalization.</p>

  <p>Sun Tzu’s <em>Art of War</em> captures this in four characters: 守正出奇 — defend the orthodox, attack with the extraordinary. The “orthodox” is holding your ground — your foundation doesn’t move. The “extraordinary” is embracing change — on top of that foundation, you constantly adapt and explore. NVIDIA’s “orthodox” was GPU computing. Its “extraordinary” was that every time a new wave came, it was already ready.</p>

  <p>Zeng Guofan, the Qing dynasty statesman, put it more bluntly:</p>

  <blockquote>
    <p>“Shouting opinions from the sidelines is useless. You must step into the arena, shoulder the responsibility, before success is even possible.”</p>
  </blockquote>

  <p>守正出奇 isn’t armchair wisdom — it’s wisdom born from being in the arena. You have to be on the field before you can talk about defense and offense.</p>

  <p>There’s an image from Buddhism that I keep coming back to. Dhammapada, verse 401:</p>

  <blockquote>
    <p>“Like water on a lotus leaf, or a mustard seed on the point of a needle — he who does not cling to sensual pleasures, him do I call a holy man.”</p>
  </blockquote>

  <p>The lotus leaf doesn’t reject the water. The water falls on the leaf, fully in contact. But the water doesn’t stick. The leaf doesn’t absorb. They meet, then each goes its own way.</p>

  <p>Not clinging to hype, not clinging to the status quo, not clinging to outcomes. Fully in contact with the world — but not stuck to it.</p>

  <p>My work puts me at a unique intersection: where AI meets infrastructure. Every day I see two forces collide — a genuine computing paradigm shift, and all the noise surrounding it. My anchor isn’t a technology or a trend. It’s something deeper: the conviction that value lives in the gaps between layers. Others see systems as stacks. I see the dark spaces between them — and I build until information flows through. This doesn’t expire with any hype cycle, because it’s not about any particular layer. It’s about the act of weaving connections itself.</p>

  <hr />

  <h2 id="closing">Closing</h2>

  <p>Seneca wrote: “You should not copy the bad simply because they are many, nor should you hate the many because they are unlike you.”</p>

  <p>Probably the best social media usage guide from 2,000 years ago.</p>

  <p>Naval said: “Desire is a contract that you make with yourself to be unhappy until you get what you want.”</p>

  <p>Chasing hype is a form of desire. Fear of trends is also a form of desire. Both keep you living in the future instead of the present.</p>

  <p>Holding your ground isn’t stubbornness. Embracing change isn’t chasing wind. Cherishing what you have isn’t platitude — it’s the water on the lotus leaf: fully in contact with the world, bound by none of it.</p>

  <p>Zeng Guofan also said:</p>

  <blockquote>
    <p>“A troubled mind and anxious thoughts — these are precisely the forge that tempers heroes and refines you to completion.”</p>
  </blockquote>

  <p>So don’t fear confusion. Feeling torn between hype and trends — that itself is the forging process. The key isn’t to eliminate the tension, but to find your anchor — and then, step into the arena.</p>

  <p>The tension between hype and trends isn’t a problem to solve. It’s a forge. Find your anchor, step into the arena, and build.</p>

  <hr />

  <p><em>Written on April 1, 2026 — a morning when, predictably, three new AI frameworks were announced.</em></p>

</div>

<div class="lang-zh lang-hidden">

  <h2 id="section">缘起</h2>

  <p>今天早上，我在笔记里写下三句话：</p>

  <blockquote>
    <p>对热点，不要趋之若鹜。
对趋势，不要熟视无睹。
要固守本心，拥抱变化，珍惜所拥有的和遇到的一切。</p>
  </blockquote>

  <p>写得很快——就像那种你咀嚼了好几个月、却没意识到的东西，突然成型时那样。</p>

  <p>我做AI基础设施相关的工作。每天打开电脑，都有一个新的”革命”在等我。Vibe coding。AI agent框架。又一个号称要改变一切的startup。上周trending的repo，这周已经没人提了。</p>

  <p>但与此同时，有些东西确实在发生根本性的变化。GPU算力正在重塑整个计算基础设施。我每天做的基础设施工作，三年前根本不存在。忽略这些变化，和追逐每一个热点一样危险。</p>

  <p>问题不在于要不要关注，而在于<em>什么</em>值得关注——什么只是伪装成信号的噪音。</p>

  <p>这个问题没有公式。但我找到了三个锚点。</p>

  <hr />

  <h2 id="section-1">一、对热点，不要趋之若鹜</h2>

  <p>2019年1月，WeWork估值470亿美元。九个月后，它连IPO都完成不了。估值暴跌78%，CEO套现7亿美元后被扫地出门，公司最终在2023年申请破产。</p>

  <p>2022年5月，Terra/Luna一周蒸发了450亿美元。FTX紧随其后。Celsius。Three Arrows Capital。整个加密世界像多米诺骨牌一样倒下。追进去的人，不是因为真正理解了区块链技术，而是因为别人都在赚钱。</p>

  <p>模式总是一样的：一个真正的创新（共享办公、区块链）被资本和FOMO不断放大，直到价格与底层价值完全脱节。受伤的不是建设者——是跟风者。</p>

  <p>巴菲特讲过一个概念叫”能力圈”：</p>

  <blockquote>
    <p>“圈的大小不重要，重要的是你知道边界在哪。”</p>
  </blockquote>

  <p>追热点的本质，是走出能力圈却以为自己还在里面。你不理解底层逻辑，但你看到了价格在涨、别人在赚、朋友圈在刷——于是你跟进了。这不是投资，是模仿。</p>

  <p>Naval Ravikant说得更直接：”Escape competition through authenticity.” 通过真实来逃离竞争。追热点的反面不是躺平，而是诚实地面对一个问题：<em>这件事，我是真的理解还是只是害怕错过？</em></p>

  <p>AI领域正在经历同样的循环。Y Combinator 2025年冬季批次中，25%的创业公司代码库95%是AI生成的。听起来很酷。但研究显示，AI生成的代码安全漏洞率是人工的2.74倍，资深开发者用AI工具后反而慢了19%。”Vibe coding”这个词是Karpathy造的，但他的定义是”完全放弃理解代码本身”——这是一个warning，不是一个recommendation。</p>

  <p>SEC已经开始对”AI washing”开罚单——在没有实质AI功能的产品上贴”AI-powered”标签。这是我们这个时代的”.com”后缀。</p>

  <p>老子说：上善若水。水善利万物而不争。</p>

  <p>水不争。水不急着去所有人都在的地方。水找到别人避开的低处。正因如此——没有什么比它更强大。</p>

  <p>不争，不是不动。是不被别人的运动裹挟。</p>

  <hr />

  <h2 id="section-2">二、对趋势，不要熟视无睹</h2>

  <p>1975年，柯达工程师Steven Sasson造出了世界上第一台数码相机。10000像素。</p>

  <p>他把它带给管理层。管理层说：好东西，但我们的胶卷业务每年赚160亿。别搞了。</p>

  <p>2012年，柯达申请破产。</p>

  <p>Kodak的悲剧不是技术盲区——他们<em>发明</em>了那个技术。悲剧在于，他们看到了趋势，选择了不看。</p>

  <p>Blockbuster的故事更荒诞。2000年，Netflix上门求收购，开价5000万。Blockbuster笑着拒绝了。当时Blockbuster有9000多家门店，84000名员工。十年后，它申请破产。Netflix现在市值3000亿。</p>

  <p>一位前Blockbuster高管后来承认：”数字化会改变Blockbuster的业务……但它不是杀手。真正的杀手是Blockbuster自己。”</p>

  <p>杀死你的不是变化，是你对变化的回避。</p>

  <p>Marcus Aurelius在《沉思录》里写道：</p>

  <blockquote>
    <p>“宇宙即变化，我们的生命由思想塑造。”</p>
  </blockquote>

  <p>他还说：”留意万物皆为变化的结果，习惯这样的认知：自然最喜欢做的事，就是改变现有的形态。”这不是鸡汤——这是一个罗马皇帝在战场上、在瘟疫中写下的实操哲学。变化不是意外，变化是默认状态。</p>

  <p>老子用水来解释这件事：<em>天下莫柔弱于水，而攻坚强者莫之能胜。</em></p>

  <p>水不抗拒变化。水就是变化本身。它不需要成为石头来对抗石头——它绕过去，渗进去，年深日久，石头被切开了。</p>

  <p>趋势就是水。你可以不喜欢它，但你不能假装它不存在。GPU算力正在改变计算范式——这不是炒作，这是我每天工作的现实。LLM不是会消失的时髦玩意——它正在重写软件工程的基本假设。</p>

  <p>热点和趋势的区别在于持久性。热点在钱撤走后消失。趋势在兴奋消退后依然重塑格局。</p>

  <p>区分两者的方法其实很简单：钱撤走之后，它还在不在？</p>

  <hr />

  <h2 id="section-3">三、固守本心，拥抱变化，珍惜一切</h2>

  <p>如果只是”不追热点”加”不忽略趋势”，那不过是一句正确的废话。真正难的是第三句：怎么同时做到固守和拥抱？</p>

  <p>NVIDIA给了一个答案。</p>

  <p>1993年，三个人在Denny’s餐厅里创业，每人出了200美元。Jensen Huang后来说，如果他当时知道这条路有多难——”a million times harder”——他可能不会开始。1997年，公司只剩一个月的现金流。他内部演讲的口头禅是：”我们离倒闭只有30天。”</p>

  <p>2006年，NVIDIA发布了CUDA。一个让GPU做通用计算的平台。当时没人在乎。游戏公司不在乎，科学计算社区不在乎，华尔街不在乎。</p>

  <p>Huang没有在移动芯片火的时候追移动芯片，没有转向社交媒体，没有在矿工买光所有GPU的时候给公司重新贴上加密货币的标签。他坚守GPU计算，三十年。</p>

  <p>然后AI浪潮来了。突然间，全世界发现只有NVIDIA有这个基础设施。2025年10月，NVIDIA成为第一家市值超过5万亿美元的公司。</p>

  <p>孙子兵法有四个字：守正出奇。以正合，以奇胜。守正是固守本心——你的根基不动。出奇是拥抱变化——在根基之上，你不断适应、不断探索。NVIDIA守的”正”是GPU计算，出的”奇”是每一次浪潮来的时候，它已经准备好了。</p>

  <p>曾国藩说得更实在：</p>

  <blockquote>
    <p>“凡天下事，在局外呐喊议论，总是无益；必须躬身入局，挺膺负责，方有成事之可冀。”</p>
  </blockquote>

  <p>守正出奇不是坐在家里的智慧——是躬身入局之后的智慧。你得先站在场上，才有资格谈守和攻。</p>

  <p>佛教里有一个意象，我很喜欢。《法句经》第401偈：</p>

  <blockquote>
    <p>“如同荷叶上的水珠，如同针尖上的芥子——不执着于感官愉悦的人，我称他为圣者。”</p>
  </blockquote>

  <p>荷叶不拒绝水——水落在叶上，叶与水完全接触。但水不沾叶。叶不吸水。它们相遇，然后各自自在。</p>

  <p>不执着于热点，不执着于现状，也不执着于结果。和世界充分接触——但不被黏住。</p>

  <p>我的工作让我站在一个特殊的位置：AI与基础设施的交叉点。每天我都看到两种力量的碰撞——真正的计算范式转移，和围绕它的一切噪音。我的锚点不是某个技术，不是某个趋势，而是一个更底层的信念：价值住在层与层之间的缝隙里。别人看到层，我看到连接。这个信念不会因为热点变化而过时，因为它不是关于任何一层的——它是关于建造脉络本身。</p>

  <hr />

  <h2 id="section-4">收束</h2>

  <p>Seneca写道：”不要因为他人众多就去模仿，也不要因为他人与你不同就去厌恶。”</p>

  <p>这大概是2000年前最好的社交媒体使用指南。</p>

  <p>Naval说：”Desire is a contract that you make with yourself to be unhappy until you get what you want.” 欲望是你和自己签的一份合同——在得到想要的东西之前，你同意保持不快乐。</p>

  <p>追热点是一种欲望。对趋势的恐惧也是一种欲望。两者都让你活在未来而不是当下。</p>

  <p>固守本心不是固执。拥抱变化不是追风。珍惜一切不是鸡汤——是荷叶上的水珠：与万物接触，不为万物所缚。</p>

  <p>曾国藩最后还说了一句：</p>

  <blockquote>
    <p>“困心衡虑，正是磨练英雄，玉汝于成。”</p>
  </blockquote>

  <p>所以，别怕困惑。在热点和趋势之间感到撕裂，这本身就是锻造的过程。关键不是消除张力，而是找到你的锚点——然后，躬身入局。</p>

  <hr />

  <p><em>写于2026年4月1日，一个又有三个新AI框架发布的早晨。</em></p>

</div>]]></content><author><name>ZachC</name></author><category term="life" /><category term="philosophy" /><category term="career" /><category term="ai" /><category term="strategy" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">From Executor to Steersman</title><link href="https://zachc.ai/blog/from-executor-to-steersman/" rel="alternate" type="text/html" title="From Executor to Steersman" /><published>2026-03-28T00:00:00+00:00</published><updated>2026-03-28T00:00:00+00:00</updated><id>https://zachc.ai/blog/from-executor-to-steersman</id><content type="html" xml:base="https://zachc.ai/blog/from-executor-to-steersman/"><![CDATA[<div class="lang-en">

  <blockquote>
    <p>Every new control layer shifts the human role from doing the work to designing the feedback loop — observe, compare, adjust, repeat. Same pattern since 1780.</p>
  </blockquote>

  <h2 id="a-250-year-pattern">A 250-Year Pattern</h2>

  <p>George (@odysseus0z) identified a pattern recurring three times across 250 years while reading OpenAI’s harness engineering post:</p>

  <ol>
    <li><strong>Watt’s centrifugal governor (1780s)</strong>: worker shifts from manually adjusting the valve to designing the automatic governor mechanism.</li>
    <li><strong>Kubernetes</strong>: engineer shifts from restarting services to writing the declarative spec the system reconciles against.</li>
    <li><strong>AI agent harness</strong>: engineer shifts from writing code to designing environments, feedback loops, and constraints for agents to write code.</li>
  </ol>

  <p>Norbert Wiener named this in 1948: <strong>cybernetics</strong>, from Greek <em>kubernētēs</em> (steersman). The core structure is always the same: observe actual state, compare with desired state, adjust, loop. Each time, humans shift from rower to steersman — not disappearing, but moving up one abstraction layer.</p>

  <h2 id="why-this-is-universal">Why This Is Universal</h2>

  <p>This pattern transcends domains entirely: it applies to mechanical engineering, software infrastructure, AI workflows, management, and biological homeostasis. The pattern holds in any system where a feedback loop can replace direct manual control.</p>

  <h2 id="the-missing-link-maltz-1960">The Missing Link: Maltz (1960)</h2>

  <p>Maxwell Maltz is the missing link in the cybernetics chain. He applied Wiener’s 1948 framework to <em>human psychology</em> 60+ years before AI harness engineering — framing the brain as a goal-seeking servo-mechanism that auto-corrects via feedback.</p>

  <p>The steersman role maps precisely: set the target (self-image/goal), trust the automatic process, don’t micromanage the servo-mechanism’s execution.</p>

  <p>Maltz’s formulation predates Kubernetes by 54 years and AI harness engineering by 66 years, yet describes the same pattern.</p>

  <p><strong>The timeline:</strong></p>
  <ul>
    <li>Wiener (1948) — theory</li>
    <li>Maltz (1960) — human psychology</li>
    <li>Kubernetes (2014) — infrastructure</li>
    <li>AI harness (2026) — agent engineering</li>
  </ul>

  <p>The lesson: the steersman role isn’t new. We’ve been discovering it again and again across every domain. The question isn’t whether this shift will happen in your field — it’s whether you’ll recognize it when it does.</p>

  <p><strong>Sources:</strong></p>
  <ul>
    <li><a href="https://x.com/odysseus0z/status/2030416758138634583">George (@odysseus0z) on X</a></li>
    <li><a href="https://openai.com/index/harness-engineering/">OpenAI: Harness Engineering</a></li>
  </ul>

</div>

<div class="lang-zh lang-hidden">

  <blockquote>
    <p>每一层新的控制层都将人类角色从”执行工作”转变为”设计反馈环”——感知、比较、调整、循环。1780 年以来同一模式。</p>
  </blockquote>

  <h2 id="section">跨越 250 年的模式</h2>

  <p>George (@odysseus0z) 在读 OpenAI 的 harness engineering 文章时，识别出一个跨越 250 年的模式，出现了三次：</p>

  <ol>
    <li><strong>瓦特离心调速器 (1780s)</strong>：工人从手动调节阀门转变为设计自动调速机构。</li>
    <li><strong>Kubernetes</strong>：工程师从重启服务转变为编写系统据以协调的声明式 spec。</li>
    <li><strong>AI Agent Harness</strong>：工程师从写代码转变为设计环境、反馈循环和约束，让 agent 写代码。</li>
  </ol>

  <p>Norbert Wiener 在 1948 年命名了这个模式：<strong>控制论 (cybernetics)</strong>，源自希腊语 <em>kubernētēs</em>（舵手）。核心结构始终相同：感知实际状态、与期望状态比较、调整、循环。人类每次都从划桨者变成舵手——不是消失，而是上移一个抽象层。</p>

  <h2 id="section-1">为什么这是普适的</h2>

  <p>这个模式完全超越领域：适用于机械工程、软件基础设施、AI 工作流、管理和生物稳态。只要反馈环能替代直接手动控制，这个模式就成立。</p>

  <h2 id="maltz-1960">缺失的一环：Maltz (1960)</h2>

  <p>Maxwell Maltz 是控制论链条中缺失的一环。他在 AI harness engineering 出现 60 多年前就将 Wiener 的 1948 框架应用于_人类心理学_——将大脑定义为通过反馈自动修正的目标寻求伺服机构。</p>

  <p>舵手角色精确映射：设定目标（自我形象/目标），信任自动过程，不要微观管理伺服机构的执行。</p>

  <p>Maltz 的理论比 Kubernetes 早 54 年，比 AI harness engineering 早 66 年，却描述了同一个模式。</p>

  <p><strong>时间线：</strong></p>
  <ul>
    <li>Wiener (1948) — 理论</li>
    <li>Maltz (1960) — 人类心理学</li>
    <li>Kubernetes (2014) — 基础设施</li>
    <li>AI harness (2026) — agent 工程</li>
  </ul>

  <p>启示：舵手角色并不新鲜。我们在每个领域一次又一次地重新发现它。问题不是这种转变是否会发生在你的领域——而是当它发生时，你能否认出它。</p>

  <p><strong>来源：</strong></p>
  <ul>
    <li><a href="https://x.com/odysseus0z/status/2030416758138634583">George (@odysseus0z) on X</a></li>
    <li><a href="https://openai.com/index/harness-engineering/">OpenAI: Harness Engineering</a></li>
  </ul>

</div>]]></content><author><name>ZachC</name></author><category term="tech" /><category term="systems-thinking" /><category term="architecture" /><category term="cybernetics" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Give Agents Libraries, Not Instructions</title><link href="https://zachc.ai/blog/give-agents-libraries-not-instructions/" rel="alternate" type="text/html" title="Give Agents Libraries, Not Instructions" /><published>2026-03-28T00:00:00+00:00</published><updated>2026-03-28T00:00:00+00:00</updated><id>https://zachc.ai/blog/give-agents-libraries-not-instructions</id><content type="html" xml:base="https://zachc.ai/blog/give-agents-libraries-not-instructions/"><![CDATA[<div class="lang-en">

  <blockquote>
    <p>Store scripts and helper functions in skill folders so agents spend tokens on composition and decision-making, not reconstructing boilerplate.</p>
  </blockquote>

  <h2 id="the-insight">The Insight</h2>

  <p>Anthropic found that “one of the most powerful tools you can give Claude is code.” When skills include executable scripts and function libraries, Claude doesn’t need to spend tokens generating data-fetching code from scratch — it calls existing functions and focuses on composing them to answer higher-level questions.</p>

  <p><strong>Concrete example:</strong> a data science skill includes helper functions to fetch data from an event source. When the user asks “What happened on Tuesday?”, Claude doesn’t write data-fetching code — it generates a script composing existing functions for filtering, aggregation, and analysis. Tokens spent on logic and judgment, not infrastructure.</p>

  <h2 id="the-technique">The Technique</h2>

  <p>Identify repetitive operations in your workflows (API calls, data transforms, file operations), extract them into script libraries within the skill folder, and document them in the SKILL.md. The agent discovers and composes them instead of reinventing them each session.</p>

  <p>This shifts agent effort from <em>reconstruction</em> to <em>composition</em> — a fundamentally higher-leverage use of tokens and context window.</p>

  <h2 id="cli-anything-the-logical-extreme">CLI-Anything: The Logical Extreme</h2>

  <p>CLI-Anything (HKUDS, 21.5k GitHub stars) takes this to its logical extreme: a 7-phase automated pipeline that transforms any desktop software into an installable CLI package. <code class="language-plaintext highlighter-rouge">pip install</code> and the agent can control Blender, GIMP, OBS, etc. through structured JSON commands.</p>

  <p>The agent doesn’t learn the software’s API or GUI; it calls a pre-built CLI library. Each generated CLI includes:</p>
  <ul>
    <li>A <strong>SKILL.md</strong> for auto-discovery</li>
    <li>A <strong>REPL</strong> for exploration</li>
    <li><strong>Undo/redo</strong> for safe state management</li>
  </ul>

  <p>This is the most literal implementation of “give agents libraries”: the library IS the CLI package.</p>

  <h2 id="the-principle">The Principle</h2>

  <p>The pattern generalizes: anywhere you find yourself writing the same kind of instructions repeatedly for an agent, you should extract that into a callable library instead. Instructions are consumed once and forgotten. Libraries persist across sessions and compose with each other.</p>

  <p><strong>Sources:</strong></p>
  <ul>
    <li><a href="https://x.com/trq212/status/2033949937936085378">Thariq on X — How We Use Skills</a></li>
    <li><a href="https://github.com/HKUDS/CLI-Anything">CLI-Anything (GitHub)</a></li>
  </ul>

</div>

<div class="lang-zh lang-hidden">

  <blockquote>
    <p>在 skill 文件夹中存储脚本和辅助函数，让 agent 把 token 花在组合和决策上，而非重建样板代码。</p>
  </blockquote>

  <h2 id="section">核心洞察</h2>

  <p>Anthropic 发现”给 Claude 代码是最强大的工具之一”。当 skill 包含可执行脚本和函数库时，Claude 不需要花 token 从头生成获取数据的代码——它可以直接调用已有函数，把精力花在组合这些函数来回答更高层次的问题上。</p>

  <p><strong>具体例子：</strong>数据科学 skill 包含一组从事件源获取数据的辅助函数。当用户问”周二发生了什么？”时，Claude 不需要写数据获取代码——它生成一个脚本来组合已有函数，做过滤、聚合和分析。Token 花在了逻辑和判断上，而不是基础设施上。</p>

  <h2 id="section-1">技巧</h2>

  <p>识别工作流中的重复操作（API 调用、数据转换、文件操作），将它们提取为 skill 文件夹内的脚本库，在 SKILL.md 中记录。Agent 发现并组合它们，而不是每次会话都重新发明。</p>

  <p>这将 agent 的精力从_重建_转移到_组合_——一种从根本上更高杠杆的 token 和上下文窗口使用方式。</p>

  <h2 id="cli-anything">CLI-Anything：逻辑极限</h2>

  <p>CLI-Anything（HKUDS，21.5k GitHub stars）将这个理念推到了逻辑极限：一条 7 步自动化流水线，将任意桌面软件转化为可安装的 CLI 包。<code class="language-plaintext highlighter-rouge">pip install</code> 后 agent 就能通过结构化 JSON 命令控制 Blender、GIMP、OBS 等。</p>

  <p>Agent 不需要学习软件的 API 或 GUI，直接调用预构建的 CLI 库。每个生成的 CLI 都包含：</p>
  <ul>
    <li><strong>SKILL.md</strong> 用于自动发现</li>
    <li><strong>REPL</strong> 用于探索</li>
    <li><strong>Undo/redo</strong> 用于安全操作</li>
  </ul>

  <p>这是”给 agent 库而非指令”最字面的实现：库就是 CLI 包本身。</p>

  <h2 id="section-2">原则</h2>

  <p>这个模式可以泛化：凡是你发现自己反复为 agent 编写同类指令的地方，都应该提取为可调用的库。指令被消费一次就遗忘，库则跨会话持久存在且能互相组合。</p>

  <p><strong>来源：</strong></p>
  <ul>
    <li><a href="https://x.com/trq212/status/2033949937936085378">Thariq on X — How We Use Skills</a></li>
    <li><a href="https://github.com/HKUDS/CLI-Anything">CLI-Anything (GitHub)</a></li>
  </ul>

</div>]]></content><author><name>ZachC</name></author><category term="tech" /><category term="claude-code" /><category term="ai" /><category term="tooling" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Agentic Engineering Patterns — Simon Willison</title><link href="https://zachc.ai/blog/agentic-engineering-patterns-simon-willison/" rel="alternate" type="text/html" title="Agentic Engineering Patterns — Simon Willison" /><published>2026-03-22T00:00:00+00:00</published><updated>2026-03-22T00:00:00+00:00</updated><id>https://zachc.ai/blog/agentic-engineering-patterns-simon-willison</id><content type="html" xml:base="https://zachc.ai/blog/agentic-engineering-patterns-simon-willison/"><![CDATA[<div class="lang-en">

  <p>Simon Willison (Django co-creator, datasette author) distills his hands-on patterns for using AI coding agents like Claude Code and OpenAI Codex. The guide covers five areas: principles, testing &amp; quality, understanding code, annotated prompts, and appendices. See also: <a href="https://news.ycombinator.com/item?id=47243272">HN discussion</a>.</p>

  <hr />

  <h2 id="i-principles">I. Principles</h2>

  <h3 id="writing-code-is-cheap-now">1. Writing Code Is Cheap Now</h3>

  <p>AI agents fundamentally change software economics — writing code is now nearly free, but writing <em>good</em> code remains expensive. Good code means: correct, tested, documented, solving the right problem, handling edge cases, simple enough, maintainable, and meeting non-functional requirements (security, reliability, accessibility).</p>

  <p>The paradigm shift: past engineering decisions — both micro (should I refactor? should I write a test?) and macro (project planning, feature evaluation) — were all based on “writing code is expensive.” Now you can spin up multiple agent sessions in parallel to explore approaches. “The worst outcome is learning it doesn’t work ten minutes later.”</p>

  <p>The challenge: the industry needs new habits and practices to harness agent capabilities while maintaining strict quality standards.</p>

  <h3 id="hoard-things-you-know-how-to-do">2. Hoard Things You Know How to Do</h3>

  <p>“Knowing something is theoretically possible” and “having seen it run with your own eyes” are completely different. Build a collection of working examples — blog posts, GitHub repos (Willison has 1000+), tool sites, research repos — each becomes a reusable building block.</p>

  <p>The most powerful pattern: have agents recombine multiple working codebases. His OCR tool combined Tesseract.js (OCR) and PDF.js (PDF rendering) — two existing JS libraries merged into one unified solution. Document once, agents deploy repeatedly.</p>

  <hr />

  <h2 id="ii-testing--quality">II. Testing &amp; Quality</h2>

  <h3 id="redgreen-tdd">3. Red/Green TDD</h3>

  <p>TDD is critical for AI agents because agents risk generating non-functional code or adding unwanted features. TDD mitigates this via automatic verification:</p>

  <ul>
    <li><strong>Red phase:</strong> Write failing tests first — proving the test actually checks new functionality</li>
    <li><strong>Green phase:</strong> Implement code to make all tests pass</li>
  </ul>

  <p>Skipping the red phase means your test might have passed from the start — rendering it useless. Practical prompt: <code class="language-plaintext highlighter-rouge">"Build a Python function to extract headers from a markdown string. Use red/green TDD."</code></p>

  <h3 id="first-run-the-tests">4. First Run the Tests</h3>

  <p>The four-word mantra: start every session with “First run the tests.” The chain reaction:</p>

  <ol>
    <li>Forces the agent to find and run tests — establishing test awareness</li>
    <li>Reveals project scale and complexity through test count</li>
    <li>Sets a test-centric mindset for the session</li>
    <li>Activates the model’s built-in quality discipline</li>
  </ol>

  <p>“If code has never been executed, it working in production is pure luck.”</p>

  <hr />

  <h2 id="iii-understanding-code">III. Understanding Code</h2>

  <h3 id="linear-walkthroughs">5. Linear Walkthroughs</h3>

  <p>When you’ve vibe-coded a project or inherited an unfamiliar codebase, have the agent read the source and generate a structured file-by-file walkthrough document. Even a 40-minute vibe-coded toy project becomes a learning opportunity after a walkthrough. “AI making code faster to write” doesn’t mean “you don’t need to understand the code.”</p>

  <h3 id="interactive-explanations">6. Interactive Explanations</h3>

  <p><strong>The problem: cognitive debt.</strong> Agent-generated code you don’t understand becomes a black box blocking future development. <strong>The solution:</strong> Have the agent create interactive visualizations to explain algorithms.</p>

  <p>Willison had Claude Code generate an interactive HTML page to step through a word-cloud placement algorithm (Archimedean spiral + random angle offset) — with pause, speed control, and frame-by-frame playback. “A good coding agent can generate these on demand to explain code — whether it wrote it or someone else did.”</p>

  <hr />

  <h2 id="iv-annotated-prompts">IV. Annotated Prompts</h2>

  <p>A complete prompt case study (sent from an iPhone):</p>

  <blockquote>
    <p>“gif-optimizer.html Compile gifsicle to WASM, then build a web page that lets you open or drag-drop an animated GIF onto it…”</p>
  </blockquote>

  <p>Key techniques:</p>
  <ul>
    <li><strong>Filename first</strong> — <code class="language-plaintext highlighter-rouge">gif-optimizer.html</code> as the opening word tells the agent the output format and project structure</li>
    <li><strong>Leverage agent knowledge</strong> — “Compile gifsicle to WASM” relies on the agent knowing gifsicle (a 30-year-old compression tool) and the Emscripten toolchain</li>
    <li><strong>Integrate testing</strong> — the prompt includes <code class="language-plaintext highlighter-rouge">"Run 'uvx rodney --help'"</code> to ensure the agent tests during development</li>
    <li><strong>Iterate</strong> — follow-up requests to move build scripts to subdirectories, commit WASM bundles, add attribution</li>
  </ul>

  <hr />

  <h2 id="v-appendix-custom-instructions">V. Appendix: Custom Instructions</h2>

  <p>Willison’s Artifacts custom instructions: always vanilla HTML + JS (no React), CSS with 2-space indent + <code class="language-plaintext highlighter-rouge">box-sizing: border-box</code>, 16px input fonts + Helvetica, JS with module syntax + 2-space indent.</p>

  <p>For proofreading: check spelling, grammar, repetition, logic errors, factual inaccuracies, weak arguments, bad links. Importantly, <strong>he never lets LLMs ghostwrite opinion pieces or first-person blog posts</strong> — only proofread and update technical docs.</p>

  <hr />

  <h2 id="takeaways">Takeaways</h2>

  <ol>
    <li><strong>“First run the tests”</strong> should become the opening line of every Claude Code session, especially when modifying existing code.</li>
    <li><strong>Hoard working examples.</strong> Your Second Brain can serve as a “solution library” — document each solved problem, and future agents can recombine them.</li>
    <li><strong>Interactive explanations.</strong> For complex logic (data pipelines, algorithms), have agents generate visualizations to build understanding.</li>
    <li><strong>Cheap code != cheap good code.</strong> Agents generate fast, but verification, testing, and architecture remain human responsibilities.</li>
    <li><strong>Good prompts aren’t long essays</strong> — they’re precise anchors: filename + test command + existing examples.</li>
  </ol>

</div>

<div class="lang-zh lang-hidden">

  <p>Simon Willison（Django 联合创始人、datasette 作者）总结了他使用 Claude Code、OpenAI Codex 等 AI 编程代理的实战模式。全文分为五个板块：原则、测试与质量、理解代码、带注释的提示词、附录。参见：<a href="https://news.ycombinator.com/item?id=47243272">HN 讨论</a>。</p>

  <hr />

  <h2 id="section">一、原则</h2>

  <h3 id="section-1">1. 写代码现在很便宜了</h3>

  <ul>
    <li><strong>核心论点</strong>：AI 代理从根本上改变了软件开发的经济学。”写代码”本身几乎免费了，但”写好代码”依然昂贵。</li>
    <li><strong>好代码的定义</strong>：功能正确、有测试、有文档、解决正确的问题、处理边界情况、足够简单、可维护、满足非功能性需求（安全、可靠性、无障碍等）。</li>
    <li><strong>范式转变</strong>：过去工程师的微观决策（要不要重构、要不要写测试）和宏观决策（项目规划、功能评估）都基于”写代码很贵”的假设。现在可以并行启动多个代理会话来尝试——”最坏的结果是十分钟后发现不行”。</li>
    <li><strong>挑战</strong>：行业需要建立新的习惯和实践来利用 AI 代理的能力，同时保持代码质量的严格标准。</li>
  </ul>

  <h3 id="section-2">2. 囤积你知道怎么做的事</h3>

  <ul>
    <li><strong>核心洞察</strong>：”知道某件事理论上可行”和”亲眼见过它跑起来”是完全不同的。</li>
    <li><strong>建立你的收藏库</strong>：博客记录、GitHub 仓库（Willison 有 1000+ 个）、工具站点、研究仓库——每个都是可复用的”积木”。</li>
    <li><strong>重组示例</strong>：最强大的用法是让代理把多个已有的可运行代码组合起来。例如他的 OCR 工具就是把 Tesseract.js（OCR）和 PDF.js（PDF 渲染）两个已有的 JS 库合并成一个统一方案。</li>
    <li><strong>代理放大效应</strong>：代理可以搜索你的文档、拉取远程代码、整合多个样本、在本地执行——你只需文档化一次，代理就能反复部署。</li>
  </ul>

  <hr />

  <h2 id="section-3">二、测试与质量</h2>

  <h3 id="tdd">3. 红/绿 TDD</h3>

  <ul>
    <li><strong>为什么 TDD 对 AI 代理至关重要</strong>：代理面临特殊风险——可能生成不能用的代码、或加了不需要的功能。TDD 通过自动验证来缓解这些问题。</li>
    <li><strong>红绿流程</strong>：
      <ul>
        <li><strong>红色阶段</strong>：先写测试，确认测试<strong>失败</strong>（证明测试确实在检验新功能）</li>
        <li><strong>绿色阶段</strong>：实现代码，让所有测试<strong>通过</strong></li>
      </ul>
    </li>
    <li><strong>关键</strong>：跳过红色阶段 = 测试可能一开始就通过了 = 测试形同虚设。</li>
    <li><strong>实用提示词</strong>：<code class="language-plaintext highlighter-rouge">"Build a Python function to extract headers from a markdown string. Use red/green TDD."</code></li>
  </ul>

  <h3 id="section-4">4. 先跑测试</h3>

  <ul>
    <li><strong>四字咒语</strong>：每次会话开头说 <code class="language-plaintext highlighter-rouge">"First run the tests"</code> 或 <code class="language-plaintext highlighter-rouge">"Run 'uv run pytest'"</code>。</li>
    <li><strong>连锁效果</strong>：
      <ol>
        <li>强制代理找到并执行测试 → 建立测试意识</li>
        <li>通过测试数量暴露项目规模和复杂度</li>
        <li>给代理一个”以测试为核心”的思维定式</li>
        <li>激活模型内置的质量纪律</li>
      </ol>
    </li>
    <li><strong>核心论断</strong>：”如果代码从未被执行过，它能在生产中工作纯属运气。”</li>
  </ul>

  <hr />

  <h2 id="section-5">三、理解代码</h2>

  <h3 id="section-6">5. 线性走读</h3>

  <ul>
    <li><strong>场景</strong>：你 vibe coded 了一个项目、或拿到一个不熟悉的代码库——需要理解它怎么工作。</li>
    <li><strong>方法</strong>：让代理读源码，生成一个结构化的逐文件走读文档。</li>
    <li><strong>价值</strong>：即使是 40 分钟 vibe coded 的玩具项目，走读后也能变成探索新技术栈的学习机会。”AI 让代码写得更快”不代表”你不需要理解代码”。</li>
  </ul>

  <h3 id="section-7">6. 交互式解释</h3>

  <ul>
    <li><strong>问题：认知债务</strong>：代理生成的代码你不理解 → 成为黑箱 → 阻碍未来开发。</li>
    <li><strong>解法</strong>：让代理创建<strong>交互式可视化</strong>来解释算法。</li>
    <li><strong>示例</strong>：Willison 用 Claude Code 生成了一个 Rust 词云工具，但”阿基米德螺线放置+随机角度偏移”这段描述太抽象。于是让代理生成了一个交互式 HTML 页面，可以暂停、调速、逐帧播放词云的放置过程。</li>
    <li><strong>核心洞察</strong>：”一个好的编程代理可以按需生成这些来解释代码——无论是它自己写的还是别人写的。”</li>
  </ul>

  <hr />

  <h2 id="section-8">四、带注释的提示词</h2>

  <p>一个完整的提示词案例分析（从 iPhone 发送）：</p>

  <blockquote>
    <p>“gif-optimizer.html Compile gifsicle to WASM, then build a web page that lets you open or drag-drop an animated GIF onto it…”</p>
  </blockquote>

  <p><strong>关键技巧</strong>：</p>
  <ul>
    <li><strong>文件名先行</strong>：<code class="language-plaintext highlighter-rouge">gif-optimizer.html</code> 作为第一个词 → 代理自动理解输出格式和项目结构</li>
    <li><strong>利用代理的知识</strong>：”Compile gifsicle to WASM” → 代理知道 Gifsicle（30 年历史的压缩工具）和 Emscripten 工具链</li>
    <li><strong>测试集成</strong>：提示词中包含 <code class="language-plaintext highlighter-rouge">"Run 'uvx rodney --help'"</code> → 确保代理在开发中就测试</li>
    <li><strong>迭代精炼</strong>：后续要求把构建脚本放到子目录、确保 WASM bundle 被提交、添加归属声明</li>
  </ul>

  <hr />

  <h2 id="section-9">五、附录：常用提示词</h2>

  <p>Willison 的 Artifacts 自定义指令：永远不用 React → 纯 HTML + vanilla JavaScript，CSS 用 2 空格缩进 + <code class="language-plaintext highlighter-rouge">box-sizing: border-box</code>，输入框 16px 字体 + Helvetica，JS 用 module 语法 + 2 空格缩进。</p>

  <p>校对自定义指令：检查拼写、语法、重复措辞、逻辑错误、事实不准确、弱论证、坏链接。<strong>重要原则</strong>：Willison 明确不让 LLM 代写观点性内容或第一人称博文——只做校对和技术文档更新。</p>

  <hr />

  <h2 id="section-10">要点总结</h2>

  <ol>
    <li><strong>“先跑测试”</strong>：这个四字咒语应该成为每次 Claude Code 会话的开场白，尤其在修改已有代码时。</li>
    <li><strong>囤积可运行示例</strong>：你的 Second Brain 可以充当”解决方案库”——每次解决问题后记录下来，未来代理可以重组。</li>
    <li><strong>交互式解释</strong>：对于复杂逻辑（数据管道、算法），可以让代理生成可视化来帮助理解。</li>
    <li><strong>写代码便宜了 ≠ 好代码便宜了</strong>：代理能快速生成代码，但验证、测试、架构设计仍是人的责任。</li>
    <li><strong>好的提示词不是长篇大论</strong>——而是精确的锚点：文件名 + 测试命令 + 已有示例。</li>
  </ol>

</div>]]></content><author><name>ZachC</name></author><category term="digest" /><category term="ai" /><category term="engineering" /><category term="testing" /><category term="productivity" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Constraint Design Is the Meta-Skill</title><link href="https://zachc.ai/blog/constraint-design-is-the-meta-skill/" rel="alternate" type="text/html" title="Constraint Design Is the Meta-Skill" /><published>2026-03-22T00:00:00+00:00</published><updated>2026-03-22T00:00:00+00:00</updated><id>https://zachc.ai/blog/constraint-design-is-the-meta-skill</id><content type="html" xml:base="https://zachc.ai/blog/constraint-design-is-the-meta-skill/"><![CDATA[<div class="lang-en">

  <blockquote>
    <p>The highest-leverage design work is choosing which constraints to impose — they determine what the system discovers on its own.</p>
  </blockquote>

  <h2 id="the-breakthrough">The Breakthrough</h2>

  <p>When building a topology visualization for a data analytics platform, the initial approach was hardcoding known relationships — manually listing which tables feed which functions. This was incomplete within days. The breakthrough was switching to constraint-based design: define parsing rules (regex patterns, parameter defaults) and let the system discover relationships automatically. It found 2-3x more connections than manual effort ever could.</p>

  <p>This generalizes far beyond code. Designing good constraints — in systems, processes, organizations, or even personal workflows — is the meta-skill. A well-chosen constraint doesn’t limit; it channels energy toward emergent behavior you couldn’t have predicted or enumerated.</p>

  <h2 id="system-convergence-in-the-ai-era">System Convergence in the AI Era</h2>

  <p>AI-Ghost-Lab’s “system convergence” concept is constraint design applied to AI-era development. His earlier mistake: relying on broad test coverage to contain AI-generated chaos. An AI agent might take three different paths from A to B, tripling the test burden. The fix: funnel similar functionality through unified entry points — control the core nodes, everything else can flex.</p>

  <p>The specific constraints that work:</p>
  <ul>
    <li>Clear module boundaries</li>
    <li>Centralized state management</li>
    <li>Unified extension points</li>
    <li>Unified error handling</li>
  </ul>

  <p>His metaphor captures it perfectly: “AI can make a mess, but only where you allow it — not in the living room.”</p>

  <h2 id="constraining-agents-not-railroading-them">Constraining Agents, Not Railroading Them</h2>

  <p>Anthropic’s skill-writing advice embodies constraint design for AI agents. Two key principles:</p>

  <ol>
    <li><strong>“Don’t state the obvious”</strong> — Don’t constrain what the model already does well. Focus constraints on where its defaults are wrong.</li>
    <li><strong>“Avoid railroading”</strong> — Overly specific instructions limit adaptability.</li>
  </ol>

  <p>The art is constraining where the model goes wrong while leaving freedom where it goes right. The <code class="language-plaintext highlighter-rouge">frontend-design</code> skill is a perfect example: it doesn’t teach CSS (Claude knows CSS). It specifically corrects Claude’s aesthetic defaults — the tendency toward Inter font and purple gradients. That surgical constraint produces better results than a wall of instructions ever could.</p>

  <h2 id="the-principle">The Principle</h2>

  <p>The best designers — of systems, organizations, or AI workflows — don’t enumerate every behavior they want. They choose a small number of constraints that make the right behaviors emerge naturally. The meta-skill isn’t building; it’s knowing where to put the walls.</p>

</div>

<div class="lang-zh lang-hidden">

  <blockquote>
    <p>最高杠杆的设计工作是选择施加哪些约束——它们决定了系统自己能发现什么。</p>
  </blockquote>

  <h2 id="section">突破</h2>

  <p>在构建数据分析平台的拓扑可视化时，最初的方法是硬编码已知关系——手动列出哪些表喂哪些函数。这在几天内就过时了。突破在于切换到基于约束的设计：定义解析规则（正则模式、参数默认值），让系统自动发现关系。它发现的连接比手动方式多 2-3 倍。</p>

  <p>这个原则超越了代码。在系统、流程、组织甚至个人工作流中设计好的约束，就是元技能。一个精选的约束不是限制——它将能量引导向你无法预测或穷举的涌现行为。</p>

  <h2 id="ai-">AI 时代的系统收敛</h2>

  <p>AI-Ghost-Lab 的”系统收敛”概念是约束设计在 AI 时代开发中的应用。他曾犯的错误：依靠广泛的测试覆盖来兜底 AI 产生的混乱。AI 从 A 到 B 可能走三条不同的路，测试负担成倍增长。正确做法：让相同功能走同一个入口——控制住核心节点，其余随意。</p>

  <p>有效的具体约束手段：</p>
  <ul>
    <li>明确模块边界</li>
    <li>集中状态管理</li>
    <li>统一扩展入口</li>
    <li>统一错误处理</li>
  </ul>

  <p>他的比喻很到位：”AI 可以拉屎，但必须在你指定的地方拉，不能在客厅拉。”</p>

  <h2 id="agent-agent">约束 Agent，而非束缚 Agent</h2>

  <p>Anthropic 的技能编写建议体现了面向 AI agent 的约束设计。两个关键原则：</p>

  <ol>
    <li><strong>“不要说显而易见的”</strong> — 不要约束模型本来就做得好的地方。把约束集中在它默认行为有偏差的地方。</li>
    <li><strong>“避免过度指令”</strong> — 过于具体的指令会限制适应性。</li>
  </ol>

  <p>技巧在于：在模型出错的地方设置约束，在它做得好的地方留出自由。<code class="language-plaintext highlighter-rouge">frontend-design</code> 技能是个好例子：它不教 CSS（Claude 懂 CSS），而是专门纠正 Claude 的审美默认值——总是倾向 Inter 字体和紫色渐变。这种精准的约束比一堵墙的指令产生更好的效果。</p>

  <h2 id="section-1">原则</h2>

  <p>最好的设计师——无论是设计系统、组织还是 AI 工作流——不会穷举他们想要的每一种行为。他们选择少量约束，让正确的行为自然涌现。元技能不是建造，而是知道把墙放在哪里。</p>

</div>]]></content><author><name>ZachC</name></author><category term="tech" /><category term="engineering" /><category term="ai" /><category term="design" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Protecting Your Prefrontal Cortex</title><link href="https://zachc.ai/blog/prefrontal-cortex-protection/" rel="alternate" type="text/html" title="Protecting Your Prefrontal Cortex" /><published>2026-03-16T00:00:00+00:00</published><updated>2026-03-16T00:00:00+00:00</updated><id>https://zachc.ai/blog/prefrontal-cortex-protection</id><content type="html" xml:base="https://zachc.ai/blog/prefrontal-cortex-protection/"><![CDATA[<div class="lang-en">

  <p>Your prefrontal cortex (PFC) is the brain’s CEO — it handles planning, decision-making, focus, impulse control, and emotional regulation. It’s also the last region to mature (around age 25) and one of the most vulnerable to damage. Here’s what the research says about what hurts it and what protects it.</p>

  <h2 id="what-damages-it">What Damages It</h2>

  <p><strong>Chronic stress</strong> is the biggest threat. Sustained cortisol exposure literally shrinks the dendritic spines in your PFC, weakening connections and shifting control from your rational brain to your emotional brain (Arnsten, 2009, <em>Nature Reviews Neuroscience</em>).</p>

  <p><strong>Sleep deprivation</strong> hits hard. Even one bad night drops PFC-dependent attention and decision-making by 20-30% (Lim &amp; Dinges, 2010). Long-term, poor sleep accelerates beta-amyloid buildup — the protein linked to neurodegeneration.</p>

  <p><strong>Sedentary lifestyle</strong> starves the PFC. Without exercise, your brain produces less BDNF (brain-derived neurotrophic factor), the molecule that drives neuroplasticity and keeps neurons healthy.</p>

  <p>Other risk factors: ultra-processed diets (inflammation + oxidative stress), chronic multitasking (depletes PFC’s finite cognitive resources), social isolation (the PFC’s social cognition circuits atrophy without use), and substance abuse.</p>

  <h2 id="what-protects-it">What Protects It</h2>

  <p>The research points to two interventions that stand above the rest:</p>

  <p><strong>Exercise</strong> — 150 min/week of moderate aerobic activity. It increases BDNF, improves cerebral blood flow to the PFC, lowers baseline cortisol, and optimizes dopamine and norepinephrine levels. A 6-month aerobic training program significantly increased PFC gray and white matter volume in older adults (Colcombe et al., 2006).</p>

  <p><strong>Sleep</strong> — 7-9 hours, consistent schedule. During deep sleep, the glymphatic system becomes 10-20x more active, flushing metabolic waste from the PFC. Slow-wave sleep is when PFC-hippocampus memory consolidation happens.</p>

  <p><strong>Meditation</strong> rounds out the top tier. 8 weeks of mindfulness practice increased PFC gray matter density (Hölzel et al., 2011). The mechanism: it strengthens the PFC’s top-down control over the amygdala.</p>

  <p>Other evidence-backed strategies: Mediterranean-style anti-inflammatory diet (omega-3, polyphenols, magnesium), meaningful social interaction, and learning new skills (instruments, languages, strategic games). Emerging evidence supports intermittent fasting and cold exposure, though human data is still limited.</p>

  <h2 id="the-three-pillars">The Three Pillars</h2>

  <p>PFC function rests on three foundations:</p>

  <ol>
    <li><strong>Neurotransmitter balance</strong> — Dopamine and norepinephrine follow an inverted-U curve. Too little = unfocused. Too much = anxious. Exercise, sleep, and meditation keep them in the sweet spot.</li>
    <li><strong>Synaptic plasticity</strong> — BDNF is the key driver. Exercise boosts it more than any other intervention. Chronic stress and inflammation suppress it.</li>
    <li><strong>Vascular health</strong> — PFC blood flow correlates directly with cognitive function. Aerobic fitness, omega-3, and polyphenols improve it. Hypertension and diabetes damage it.</li>
  </ol>

  <p>The good news: most negative changes are reversible with intervention, typically within weeks to months.</p>

  <h2 id="daily-checklist">Daily Checklist</h2>

  <p><strong>Non-negotiable:</strong> Sleep 7+ hours. Move 30+ minutes. Avoid junk food.</p>

  <p><strong>High-impact additions:</strong> 10-20 min meditation. Omega-3 intake. Stress buffer (nature walk, journaling, deep breathing).</p>

  <p><strong>Optimize further:</strong> Learn something new. Single-task instead of multitask. Try intermittent fasting if it suits you.</p>

  <p><strong>Avoid at all costs:</strong> Chronic sleep debt (&lt;6h/night for a week+). Frequent heavy drinking. Sustained high stress with no recovery. Prolonged sedentary lifestyle.</p>

  <h2 id="a-personal-take-ai-and-context-switching">A Personal Take: AI and Context Switching</h2>

  <p>One thing that stood out to me: context switching is one of the most expensive operations your PFC performs. Every time you shift focus — between tabs, between tasks, between a thought and a notification — your prefrontal cortex pays an energy tax. Ophir et al. (2009) showed that heavy multitaskers actually get <em>worse</em> at filtering, not better.</p>

  <p>This has implications for how we work with AI. The typical pattern — rapid back-and-forth prompting, constant micro-decisions about what to ask next, switching between your own thinking and the AI’s output — is essentially high-frequency context switching. It feels productive, but it’s draining the very part of your brain that’s supposed to be steering.</p>

  <p>An alternative: treat your AI interactions more like a message queue. Batch your intent. Write out what you need, hand it off, and step away. Let the AI do its work asynchronously instead of co-piloting every keystroke. You stay in your own flow; the AI stays in its. When you come back, you review the output with a fresh PFC instead of one that’s been ping-ponging for an hour.</p>

  <p>Less interactive doesn’t mean less effective. It might mean your prefrontal cortex still has something left in the tank by the end of the day.</p>

  <hr />

  <p><em>Key references: Arnsten (2009), Colcombe et al. (2006), Hölzel et al. (2011), Mattson et al. (2018), Erickson et al. (2011), Lim &amp; Dinges (2010), Jacka et al. (2017)</em></p>

</div>

<div class="lang-zh lang-hidden">

  <p>前额叶皮层（PFC）是大脑的 CEO——负责计划、决策、专注、冲动控制和情绪调节。它也是最晚成熟（约25岁）且最脆弱的脑区之一。以下是研究告诉我们的：什么在伤害它，什么在保护它。</p>

  <h2 id="section">什么在损害它</h2>

  <p><strong>慢性压力</strong>是最大的威胁。持续的皮质醇暴露会导致 PFC 树突棘萎缩，突触连接减弱，大脑的控制权从理性脑转移到情绪脑（Arnsten, 2009, <em>Nature Reviews Neuroscience</em>）。</p>

  <p><strong>睡眠不足</strong>打击巨大。哪怕只是一晚没睡好，PFC 主导的注意力和决策能力就会下降 20-30%（Lim &amp; Dinges, 2010）。长期来看，睡眠不足会加速 β-淀粉样蛋白堆积——与神经退行性疾病直接相关。</p>

  <p><strong>久坐不动</strong>在慢慢”饿死”你的 PFC。缺乏运动会降低 BDNF（脑源性神经营养因子）的分泌，而 BDNF 正是驱动神经可塑性、维持神经元健康的关键分子。</p>

  <p>其他风险因素：高糖高加工饮食（引发炎症和氧化应激）、长期多任务切换（消耗 PFC 有限的认知资源）、社交孤立（社会认知回路因缺乏使用而退化），以及物质滥用。</p>

  <h2 id="section-1">什么在保护它</h2>

  <p>研究指向两个最强干预手段：</p>

  <p><strong>运动</strong>——每周 150 分钟中等强度有氧运动。它能提升 BDNF、改善 PFC 的脑血流、降低皮质醇基线、优化多巴胺和去甲肾上腺素水平。一项为期 6 个月的有氧训练显著增加了老年人 PFC 的灰质和白质体积（Colcombe et al., 2006）。</p>

  <p><strong>睡眠</strong>——7-9 小时，规律作息。深度睡眠时，类淋巴系统活跃度提升 10-20 倍，清除 PFC 的代谢废物。慢波睡眠是 PFC 与海马完成记忆巩固的关键阶段。</p>

  <p><strong>冥想</strong>紧随其后。8 周正念练习即可增加 PFC 灰质密度（Hölzel et al., 2011）。机制：强化 PFC 对杏仁核的自上而下调控。</p>

  <p>其他有证据支持的策略：地中海式抗炎饮食（Omega-3、多酚类、镁）、有意义的社交互动、学习新技能（乐器、语言、策略游戏）。间歇性禁食和冷暴露有初步证据支持，但人体数据仍然有限。</p>

  <h2 id="section-2">三大支柱</h2>

  <p>PFC 功能建立在三个基础之上：</p>

  <ol>
    <li><strong>神经递质平衡</strong>——多巴胺和去甲肾上腺素遵循倒 U 型曲线。太低 = 注意力涣散，太高 = 焦虑。运动、睡眠和冥想帮助它们保持在最佳浓度。</li>
    <li><strong>突触可塑性</strong>——BDNF 是关键驱动因子。运动对 BDNF 的提升效果超过任何其他干预。慢性压力和炎症是可塑性的最大抑制因子。</li>
    <li><strong>血管健康</strong>——PFC 血流量与认知功能直接相关。有氧运动、Omega-3 和多酚类能改善它。高血压和糖尿病则在损害它。</li>
  </ol>

  <p>好消息：大多数负面变化在干预后是可逆的，通常在数周到数月内就能看到恢复。</p>

  <h2 id="section-3">每日清单</h2>

  <p><strong>基础层（不可妥协）：</strong> 睡够 7 小时以上。运动 30 分钟以上。远离垃圾食品。</p>

  <p><strong>强化层：</strong> 10-20 分钟冥想。摄入 Omega-3。压力缓冲（自然散步、写日记、深呼吸）。</p>

  <p><strong>优化层：</strong> 学点新东西。单任务深度工作，减少上下文切换。如果适合你，试试间歇性禁食。</p>

  <p><strong>红线（绝对避免）：</strong> 连续一周以上每晚不到 6 小时睡眠。频繁大量饮酒。长期高压无恢复期。久坐不动的生活方式。</p>

  <h2 id="ai-">个人思考：AI 与上下文切换</h2>

  <p>有一点让我印象深刻：上下文切换是前额叶最昂贵的操作之一。每一次你在标签页之间、任务之间、自己的思路和一条通知之间切换焦点，前额叶都要为此支付能量税。Ophir et al. (2009) 的研究表明，频繁的多任务切换者在过滤信息方面反而变得更差，而不是更好。</p>

  <p>这对我们与 AI 的协作方式有直接启示。典型的使用模式——快速来回对话、不断做微决策、在自己的思考和 AI 的输出之间反复切换——本质上就是高频上下文切换。感觉很高效，实际上在消耗你大脑中最该掌舵的那部分。</p>

  <p>另一种方式：把你和 AI 的交互当作一个消息队列。把意图打包好，交出去，然后走开。让 AI 异步完成工作，而不是每一个按键都陪着它一起飞。你保持自己的心流，AI 保持它的。等你回来时，是用一个恢复过的前额叶来审视结果，而不是一个已经来回弹跳了一个小时的。</p>

  <p>减少交互频率不等于降低效率。它可能意味着到了一天结束时，你的前额叶还剩点余力。</p>

  <hr />

  <p><em>核心文献：Arnsten (2009), Colcombe et al. (2006), Hölzel et al. (2011), Mattson et al. (2018), Erickson et al. (2011), Lim &amp; Dinges (2010), Jacka et al. (2017)</em></p>

</div>]]></content><author><name>ZachC</name></author><category term="digest" /><category term="neuroscience" /><category term="productivity" /><category term="ai" /><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Rediscovering Curiosity After a Decade</title><link href="https://zachc.ai/blog/rediscovering-curiosity/" rel="alternate" type="text/html" title="Rediscovering Curiosity After a Decade" /><published>2026-03-16T00:00:00+00:00</published><updated>2026-03-16T00:00:00+00:00</updated><id>https://zachc.ai/blog/rediscovering-curiosity</id><content type="html" xml:base="https://zachc.ai/blog/rediscovering-curiosity/"><![CDATA[<div class="lang-en">

  <p>There’s a kind of curiosity you have when you’re young — the kind where you stay up late not because you have to, but because you can’t stop. Everything is a puzzle. Every new thing connects to three more things you want to try.</p>

  <p>At some point, without noticing, I drifted away from that. Life got busy. I got good at executing, at being efficient, at knowing what to focus on. And those are fine qualities. But efficiency and curiosity pull in different directions — one narrows, the other wanders. I chose narrowing for a long time.</p>

  <hr />

  <p>Then AI happened. Not the buzzword version — the version where you sit down with a tool and realize it fundamentally changes what one person can build. I started tinkering. Small experiments at first. Then staying up late again. Waking up with ideas. Building things on weekends — not for a deadline, not for anyone else, but because I genuinely wanted to see what would happen.</p>

  <p>It took me a while to recognize the feeling. It was the same one I had as a kid learning to code. The same one from every time life dropped me into a new environment as an underdog — no reputation, no playbook, just raw curiosity and a willingness to figure things out.</p>

  <hr />

  <p>What I think happened is that AI leveled the playing field in a way that gave me permission to be a beginner again. When the tools are this new, nobody has ten years of experience. The people who move fastest are the ones most willing to experiment and fail. That’s the underdog mindset — and I’ve been there before. Every time, I found my way. Not by being the smartest in the room, but by being the most willing to stay in the room.</p>

  <p>I’m choosing that again. Not because I have to. Because I remember how alive it feels.</p>

  <hr />

  <p>If you’ve been running on autopilot for a while — executing but not exploring, optimizing but not wondering — I’d encourage you to find something that makes you feel like a beginner again. The discomfort of not knowing is where curiosity lives.</p>

  <p>I drifted away from it once. I don’t plan to again.</p>

</div>

<div class="lang-zh lang-hidden">

  <p>年轻的时候有一种好奇心——那种让你熬夜不是因为必须，而是因为停不下来的好奇心。什么都是谜题，每学一样新东西，就牵出三个更想探索的方向。</p>

  <p>不知道从什么时候起，这种感觉慢慢淡了。生活越来越忙，我变得越来越擅长执行、提高效率、抓重点。这些当然都是好事。但效率和好奇心其实是两个方向——一个在收窄，一个在发散。我选择了收窄，一选就是很多年。</p>

  <hr />

  <p>后来，AI 来了。不是那个被说烂了的概念，而是你真正坐下来用它、意识到一个人能做的事被彻底改变的那个版本。我开始折腾。一开始是小实验，然后又开始熬夜了，又开始早上醒来满脑子想法了，又开始周末自己造东西了——不是为了交差，不是为了别人，纯粹是想看看会发生什么。</p>

  <p>我花了一段时间才意识到这种感觉是什么。它和小时候第一次学编程的感觉一模一样。和每一次被丢进陌生环境、从零开始、没有名声也没有套路、只有好奇心和一股不服输的劲儿的感觉一模一样。</p>

  <hr />

  <p>我觉得 AI 做了一件事：它把所有人拉回了同一起跑线，给了我重新当初学者的机会。工具这么新，没人有十年经验。跑得最快的人，是最愿意去试、去错、去学的人。这就是我熟悉的那个”从底层往上爬”的心态——我经历过很多次。每一次，我都找到了自己的路。不是因为我最聪明，而是因为我最愿意留在场上。</p>

  <p>我决定再来一次。不是因为不得不，而是因为我记得那种活着的感觉。</p>

  <hr />

  <p>如果你也已经在自动驾驶模式上运行了一段时间——只顾执行、不再探索，只顾优化、不再好奇——我建议你去找一件让自己重新变成初学者的事。不知道答案的那种不安感，恰恰是好奇心住的地方。</p>

  <p>我曾经丢了它。这次不打算再丢了。</p>

</div>]]></content><author><name>ZachC</name></author><category term="life" /><category term="life" /><category term="learning" /><category term="ai" /><summary type="html"><![CDATA[]]></summary></entry></feed>