<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Learning on Hypho - AI Agent 技术博客</title><link>https://blog.hypho.cn/tags/learning/</link><description>Recent content in Learning on Hypho - AI Agent 技术博客</description><image><title>Hypho - AI Agent 技术博客</title><url>https://blog.hypho.cn/papermod-cover.png</url><link>https://blog.hypho.cn/papermod-cover.png</link></image><generator>Hugo -- 0.148.2</generator><language>zh-cn</language><lastBuildDate>Mon, 08 Jun 2026 10:06:01 +0800</lastBuildDate><atom:link href="https://blog.hypho.cn/tags/learning/index.xml" rel="self" type="application/rss+xml"/><item><title>Vibe Coding 让你跳过学习，这个开源项目偏要让你亲手写代码</title><link>https://blog.hypho.cn/posts/lathe-llm-learn-by-doing-not-vibecoding/</link><pubDate>Mon, 08 Jun 2026 10:06:01 +0800</pubDate><guid>https://blog.hypho.cn/posts/lathe-llm-learn-by-doing-not-vibecoding/</guid><description>当 AI 编程助手让开发者习惯&amp;#34;跳过思考直接出代码&amp;#34;时，开源项目 Lathe 反其道而行——用 LLM 生成手把手教程，要求你亲手敲每一行代码。这种&amp;#34;反 Vibe Coding&amp;#34;的学习方式，可能才是 LLM 时代真正需要的开发者工具。</description><content:encoded><![CDATA[<p>最近 HN 上有篇帖子引起了我的注意：一个叫 Lathe 的开源项目，247 points，标题是&quot;Use LLMs to learn a new domain, not skip past it&quot;。</p>
<p>说实话，看到这个标题的第一反应是：又一个 LLM 教学工具？市面上这类东西已经太多了——NotebookLM、各种 AI tutor、ChatGPT 自己就能教你任何东西。但仔细看完 README 和 HN 评论区之后，我觉得这个项目抓住了一个很多人没说出口的痛点。</p>
<h2 id="问题出在哪">问题出在哪？</h2>
<p>过去一年，&ldquo;Vibe Coding&quot;这个概念从 Andrej Karpathy 的一条推文变成了整个行业的主流工作方式。打开 Claude Code、Cursor 或者 Copilot，描述你想要什么，AI 帮你生成代码，你负责 Review 和微调。效率确实高，但这里有一个很少被正面讨论的问题：<strong>你到底学到了什么？</strong></p>
<p>HN 上另一篇今天 807 points 的帖子——&ldquo;LLMs are eroding my software engineering career&rdquo;——把这个焦虑写得很直白。一位资深工程师说，LLM 正在侵蚀他的软件工程职业，他不知道该怎么办。评论区里各种声音都有，但核心矛盾其实就一个：当 AI 代劳了思考过程，工程师的价值在哪里？</p>
<p>这不是杞人忧天。看看现在的 AI 编程成本追踪工具（比如 <a href="/posts/budi-ai-coding-cost-tracker/">Budi</a>）就知道，很多团队每个月在 AI 编程上的开销已经不小了。但如果你问这些开发者&quot;你从 AI 生成的代码里学到了什么&rdquo;，大部分人会沉默。</p>
<h2 id="lathe-的反直觉设计">Lathe 的反直觉设计</h2>
<p>Lathe 的作者 Deven Jarvis 在 README 里写了一段很长的个人经历，我读完觉得挺真诚的。他在 2000 年代通过 PSP 自制游戏社区学会了编程，后来通过各种 hands-on 教程（build-your-own-x、Crafting Interpreters 这类）不断精进。他说这些教程给他的不只是知识，更是&quot;从零到一&quot;的信心和继续深入的底气。</p>
<p>然后他发现 LLM 把这个过程跳过了。</p>
<p>Lathe 的设计哲学很明确：<strong>LLM 应该是你的老师，不是你的代笔。</strong> 具体来说，它做的是：</p>
<ol>
<li><strong>生成手把手教程</strong>：你给一个主题（比如&quot;用 Zig 写一个 3D 切片器&quot;），Lathe 会生成多部分的详细教程，每一步都有代码和解释</li>
<li><strong>你必须亲手敲代码</strong>：教程在本地 UI 里展示，但代码不会自动复制到你的编辑器——你得自己打</li>
<li><strong>带验证机制</strong>：教程可以被 LLM 自己验证，跑一遍看能不能编译通过</li>
<li><strong>记录信源</strong>：每个教程都记录它参考了哪些资料，方便你溯源</li>
</ol>
<p>技术实现上，Lathe 是一个 Go CLI + LLM Skills 的组合。CLI 负责存储和管理教程（存在 <code>~/.lathe/tutorials/</code>），本地 Web 服务（端口 4242）负责展示，而生成、验证、提问这些操作都通过 LLM Skills 完成。目前支持 Claude Code、Cursor 和 Codex。</p>
<h2 id="skills-架构比想象中更精巧">Skills 架构：比想象中更精巧</h2>
<p>Lathe 的 Skills 设计值得单独说一下。它不是简单地让 LLM &ldquo;写一篇教程&rdquo;，而是拆分成了多个专门的 Skills：</p>
<table>
  <thead>
      <tr>
          <th>Skill</th>
          <th>功能</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>/lathe</code></td>
          <td>生成教程（单篇或系列）</td>
      </tr>
      <tr>
          <td><code>/lathe-extend</code></td>
          <td>在现有教程基础上追加新部分</td>
      </tr>
      <tr>
          <td><code>/lathe-verify</code></td>
          <td>在临时目录里跑一遍教程，验证能不能正常工作</td>
      </tr>
      <tr>
          <td><code>/lathe-ask</code></td>
          <td>针对教程内容提问</td>
      </tr>
      <tr>
          <td><code>/lathe-tag</code></td>
          <td>给教程添加搜索标签</td>
      </tr>
      <tr>
          <td><code>/lathe-voice</code></td>
          <td>自定义写作风格</td>
      </tr>
  </tbody>
</table>
<p>这个设计的好处是：每个 Skill 都有明确的输入输出和行为约束，不会出现&quot;LLM 突然开始帮你写代码而不是教你&quot;的情况。尤其是 <code>/lathe-verify</code>，它在 <code>mktemp -d</code> 临时目录里执行，不会碰你的项目代码，但能验证教程的可执行性。</p>
<p>自定义 Voice 功能也很有意思。默认有两种风格：&ldquo;plainspoken&rdquo;（平实直接）和&quot;companion&quot;（温暖的第一人称）。你还可以用 <code>/lathe-voice</code> 让 LLM 采访你的写作偏好，生成自定义风格。不过有一点值得注意：所有 Voice 都被要求不能冒充真人、不能伪造资质、不能否认 LLM 作者身份。这种透明性设计在现在的 AI 写作工具里其实不多见。</p>
<h2 id="与-notebooklm-和传统-ai-教学的区别">与 NotebookLM 和传统 AI 教学的区别</h2>
<p>HN 评论区有人问&quot;这和 Google NotebookLM 有什么区别&quot;。我觉得核心区别在于：</p>
<p><strong>NotebookLM 是被动学习</strong>：你上传资料，它帮你总结和回答问题。学习的主体还是你，但交互模式是问答式的。</p>
<p><strong>Lathe 是主动学习</strong>：它生成结构化的动手教程，要求你实际操作。学习过程中你会遇到真实的编译错误、运行时问题，这些&quot;挫折&quot;本身就是学习的一部分。</p>
<p>还有一个关键区别：Lathe 的教程会记录信源（sources），在 UI 里展示&quot;Researched against N sources&quot;。这意味着你可以追溯 LLM 的知识来源，而不是像 ChatGPT 那样凭空给你一段看起来很专业的解释。</p>
<h2 id="坦白说这个方案也有局限">坦白说，这个方案也有局限</h2>
<p>Lathe 不是万能的。作者自己也很坦诚地承认了几个问题：</p>
<ol>
<li><strong>幻觉风险依然存在</strong>：虽然教程要求你亲手写代码（这意味着你会自然地发现不合理的地方），但 LLM 生成的教程本身可能有错误</li>
<li><strong>学习效果取决于你的投入</strong>：如果你只是机械地抄代码而不思考，效果和直接让 AI 写没区别</li>
<li><strong>依赖 Claude Code 等付费工具</strong>：作者提到 Claude Code 的 headless 模式即将收费（2026-06-15），这可能影响成本</li>
<li><strong>目前主要在 macOS + Claude Code 上测试</strong>：其他平台的兼容性还需要验证</li>
</ol>
<p>但我觉得，这些问题恰恰说明了 Lathe 的定位很清醒——它不是要取代人类写的教程（作者明确说&quot;能找到人类写的教程就先看那个&quot;），而是填补那些&quot;没有现成教程的冷门领域&quot;的空白。</p>
<h2 id="对开发者工具的启示">对开发者工具的启示</h2>
<p>Lathe 给我最大的启发不是它本身，而是它代表的一种设计模式：<strong>用 LLM 的能力来增强人的学习，而不是替代人的思考。</strong></p>
<p>在 <a href="/posts/claude-code-routines/">Claude Code 的 Routines</a> 这类工具里，我们已经看到 LLM 可以被约束成&quot;按规则办事&quot;的执行者。Lathe 更进一步，把 LLM 约束成&quot;按规则教学&quot;的老师。这种思路可能比单纯追求&quot;AI 帮你写更多代码&quot;更有长期价值。</p>
<p>想想看，如果每个 AI 编程工具都有一个&quot;学习模式&quot;——在帮你写完代码之后，用教程的形式解释为什么这样写、背后的原理是什么、有哪些替代方案——那&quot;LLM 侵蚀工程师职业&quot;的焦虑可能会小很多。</p>
<h2 id="怎么用">怎么用？</h2>
<p>如果你感兴趣，安装很简单：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># macOS（推荐）</span>
</span></span><span class="line"><span class="cl">brew install devenjarvis/tap/lathe
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Linux</span>
</span></span><span class="line"><span class="cl">curl -sSf https://raw.githubusercontent.com/devenjarvis/lathe/main/install.sh <span class="p">|</span> sh
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 或者 Go 安装</span>
</span></span><span class="line"><span class="cl">go install github.com/devenjarvis/lathe@latest
</span></span></code></pre></div><p>然后在 Claude Code（或 Cursor/Codex）里：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 安装 Skills</span>
</span></span><span class="line"><span class="cl">lathe skills install
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 生成教程</span>
</span></span><span class="line"><span class="cl">/lathe build a raytracer in Rust
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启动本地 UI</span>
</span></span><span class="line"><span class="cl">lathe serve
</span></span></code></pre></div><p>项目地址：<a href="https://github.com/devenjarvis/lathe">github.com/devenjarvis/lathe</a></p>
<p>目前 550 stars，MIT 协议，4 个 release，作者（和 Claude）123 commits，非常活跃。如果你和我一样，觉得&quot;Vibe Coding 虽然爽但总有点心虚&quot;，可以试试这个。</p>
<hr>
<p><strong>参考资料：</strong></p>
<ul>
<li><a href="https://github.com/devenjarvis/lathe">Lathe GitHub README</a></li>
<li><a href="https://news.ycombinator.com/item?id=48433756">HN: Show HN: Lathe</a></li>
<li><a href="https://human-in-the-loop.bearblog.dev/llms-are-eroding-my-software-engineering-career-and-i-dont-know-what-to-do/">HN: LLMs are eroding my software engineering career</a></li>
</ul>
]]></content:encoded></item></channel></rss>