<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Vibe Coding on Svtter's Blog</title><link>https://svtter.cn/tags/vibe-coding/</link><description>Recent content in Vibe Coding on Svtter's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 15 Dec 2025 20:45:35 +0800</lastBuildDate><atom:link href="https://svtter.cn/tags/vibe-coding/index.xml" rel="self" type="application/rss+xml"/><item><title>CS146S 是一门好课程</title><link>https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/</link><pubDate>Mon, 15 Dec 2025 20:45:35 +0800</pubDate><guid>https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/</guid><description>&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/bg.png" alt="Featured image of post CS146S 是一门好课程" /&gt;&lt;p&gt;&lt;a class="link" href="https://themodernsoftware.dev/" target="_blank" rel="noopener"
&gt;CS146S&lt;/a&gt; 是一门好课程，原因之一，是因为他教会了现代软件工程师如何更好的与AI协作。其二，它基本上涵盖了我所有的现代化 coding 能力。&lt;em&gt;（It&amp;rsquo;s a joke!）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;在接下来的内容里，我会将课程中的 slides 以超链接的形式嵌入在我的文字中。如果你感兴趣，可以直接点击超链接打开对应的 slides。&lt;/p&gt;
&lt;h2 id="基本技巧"&gt;基本技巧
&lt;/h2&gt;&lt;p&gt;基本能力我想大家和我一样，都已经掌握了。更清晰明确的 prompt，让 LLM 能够无二义性的执行指令。此外，还有 prompt 优化技巧，以及使用 &lt;a class="link" href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompt-improver" target="_blank" rel="noopener"
&gt;claude 优化 prompt&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;课程也聊了如何 &lt;a class="link" href="https://docs.google.com/presentation/d/11CP26VhsjnZOmi9YFgLlonzdib9BLyAlgc4cEvC5Fps/edit?usp=sharing" target="_blank" rel="noopener"
&gt;构建 coding agent&lt;/a&gt; ，着重强调了可以使用 &lt;a class="link" href="https://platform.claude.com/docs/en/agent-sdk/overview" target="_blank" rel="noopener"
&gt;claude code sdk&lt;/a&gt;。现在叫做 claude agent sdk 了。&lt;/p&gt;
&lt;p&gt;增加 LLM 能力，还可以使用 &lt;a class="link" href="https://docs.google.com/presentation/d/1zSC2ra77XOUrJeyS85houg1DU7z9hq5Y4ebagTch-5o/edit?usp=drive_link" target="_blank" rel="noopener"
&gt;mcp 服务&lt;/a&gt; 服务。我构建了 &lt;a class="link" href="https://github.com/Svtter/git-mcp" target="_blank" rel="noopener"
&gt;git-mcp&lt;/a&gt;，还有一个未开源的实验启动 MCP。&lt;/p&gt;
&lt;h3 id="mcp-a-bit-deeper-ppt-中的内容"&gt;MCP a bit deeper (ppt 中的内容）
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/clipboard-1765805054231.png"
width="2442"
height="1268"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/clipboard-1765805054231_hu_5bb5ee36b6e10e41.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/clipboard-1765805054231_hu_70c54c437868eb9.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="192"
data-flex-basis="462px"
&gt;&lt;/p&gt;
&lt;p&gt;MCP 值得注意的是 Host/Server/Client 概念。很多 Host 是没有开源的。Deepchat 的 Host 可以借鉴。&lt;/p&gt;
&lt;p&gt;局限性：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Agents&lt;/span&gt; &lt;span class="n"&gt;don&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;handle&lt;/span&gt; &lt;span class="n"&gt;many&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="n"&gt;very&lt;/span&gt; &lt;span class="n"&gt;well&lt;/span&gt; &lt;span class="n"&gt;today&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;APIs&lt;/span&gt; &lt;span class="n"&gt;eat&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;window&lt;/span&gt; &lt;span class="n"&gt;quickly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Design&lt;/span&gt; &lt;span class="n"&gt;APIs&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;AI&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;native&lt;/span&gt; &lt;span class="n"&gt;rather&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;rigid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="ide-agent"&gt;IDE agent
&lt;/h2&gt;&lt;p&gt;从 &lt;a class="link" href="https://docs.google.com/presentation/d/11pQNCde_mmRnImBat0Zymnp8TCS_cT_1up7zbcj6Sjg/edit?usp=sharing" target="_blank" rel="noopener"
&gt;IDE&lt;/a&gt; 角度来说，我从经常使用 cursor 已经转换成使用 claude code + vscode 来进行编程了。我感觉 claude code 作为一个 cli 要强大更多一些。不过有一段时间没有使用 cursor 了，不知道是否有一些进步。&lt;a class="link" href="https://www.trae.ai/solo" target="_blank" rel="noopener"
&gt;Trae 的 solo 模式&lt;/a&gt; 也就那样，基本智力不足是最大的问题。Trae CN。&lt;/p&gt;
&lt;p&gt;额外值得说的是，&lt;a class="link" href="https://www.linkedin.com/in/silasalberti/" target="_blank" rel="noopener"
&gt;Silas Alberti&lt;/a&gt;, Head of Research &lt;a class="link" href="https://cognition.ai/" target="_blank" rel="noopener"
&gt;Cognition&lt;/a&gt; 的 &lt;a class="link" href="https://docs.google.com/presentation/d/1i0pRttHf72lgz8C-n7DSegcLBgncYZe_ppU7dB9zhUA/edit?usp=sharing" target="_blank" rel="noopener"
&gt;slides&lt;/a&gt; 非常强大。&lt;/p&gt;
&lt;p&gt;这张图的总结是太棒了。&lt;code&gt;真的是可以免费看的吗？&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/axis.png"
width="2709"
height="1491"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/axis_hu_4f423a1898a3c4be.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/axis_hu_f0b3717c50b18ca0.png 1024w"
loading="lazy"
alt="local-cloud/sync-async 象限"
class="gallery-image"
data-flex-grow="181"
data-flex-basis="436px"
&gt;&lt;/p&gt;
&lt;p&gt;这篇文章中还提到了并行 agent 的概念。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/cloud-sync.png"
width="2730"
height="1428"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/cloud-sync_hu_888ea075db809469.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/cloud-sync_hu_aad727e671ca1c8d.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="191"
data-flex-basis="458px"
&gt;&lt;/p&gt;
&lt;p&gt;所以对我来说，下一步精进的方向是 cloud + async。&lt;/p&gt;
&lt;p&gt;这是 Silas Alberti 给的意见：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/asyncagent.png"
width="2730"
height="1596"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/asyncagent_hu_8737468dad94135f.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/asyncagent_hu_7975af118f4c1c9b.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="410px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://devin.ai/" target="_blank" rel="noopener"
&gt;devin&lt;/a&gt; 和 &lt;a class="link" href="https://claude.ai/code" target="_blank" rel="noopener"
&gt;claude code cloud&lt;/a&gt; 版本如出一辙。实际上已经完全可以使用 claude code cloud 版本进行 vibe coding。&lt;/p&gt;
&lt;h2 id="agent-manager"&gt;Agent Manager
&lt;/h2&gt;&lt;p&gt;工程师要成为 agent manager，而不是单纯的 software engineer。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/history.png"
width="2843"
height="1514"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/history_hu_dff75fbff84f0862.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/history_hu_9ea6b729a07f56bc.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
&gt;&lt;/p&gt;
&lt;p&gt;在 claude code designer 的思路下，设计软件的流程应该是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide high level requirements 🟩&lt;/li&gt;
&lt;li&gt;Convert requirements into a design doc 🟩/🟦&lt;/li&gt;
&lt;li&gt;Implement solution from doc 🟦&lt;/li&gt;
&lt;li&gt;Add tests 🟦&lt;/li&gt;
&lt;li&gt;Ensure CI (continuous integration) passes 🟦&lt;/li&gt;
&lt;li&gt;Code review 🟦&lt;/li&gt;
&lt;li&gt;Update docs 🟦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我的习惯更多是，编写简单的 requirements，然后生成 design，然后剩下的让 claude code 自己实现。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;最近发现它不太行。我采用了测试驱动开发的方法，确保每一步都做对。否则实际上 CI 和 Add tests 就没有意义了。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Techniques for directing agents&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent behavior files (Claude.md/Cursorrules/agents.md)&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;li&gt;Commands&lt;/li&gt;
&lt;li&gt;Subagents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;subagents 和 commands 我已经使用的很多了。但是 hooks 我一直没有找到 killing senario。&lt;/p&gt;
&lt;h3 id="best-practice-claude-code"&gt;Best practice claude code
&lt;/h3&gt;&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/best-prac-cc.png"
width="2613"
height="1149"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/best-prac-cc_hu_6f1f8b4de9bcdaad.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/best-prac-cc_hu_bd247f1e483fdf39.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="227"
data-flex-basis="545px"
&gt;&lt;/p&gt;
&lt;p&gt;我想说的是，尽可能多使用 subagents 来避免 lost in the middle 现象。&lt;/p&gt;
&lt;h3 id="claude-code-安利"&gt;&lt;a class="link" href="https://docs.google.com/presentation/d/1bv7Zozn6z45CAh-IyX99dMPMyXCHC7zj95UfwErBYQ8/edit?slide=id.g35e8acebb8e_0_106#slide=id.g35e8acebb8e_0_106" target="_blank" rel="noopener"
&gt;claude code 安利&lt;/a&gt;
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;之所以买 claude code，是因为？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/clipboard-1765805228031.png"
width="2850"
height="1659"
srcset="https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/clipboard-1765805228031_hu_970bdc1680b37577.png 480w, https://svtter.cn/p/cs146s-%E6%98%AF%E4%B8%80%E9%97%A8%E5%A5%BD%E8%AF%BE%E7%A8%8B/pics/clipboard-1765805228031_hu_e272c05700bf0f37.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="412px"
&gt;&lt;/p&gt;
&lt;p&gt;我们可以通过 sdk 做更多事情：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude -p &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; “what did i &lt;span class="k"&gt;do&lt;/span&gt; this week?” &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;&lt;/span&gt; --allowedTools Bash&lt;span class="o"&gt;(&lt;/span&gt;git log:*&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --output-format stream-jso
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;这个课程是免费的，但是里面的 insights 超过了大多数的收费课程。如果能看懂并且快速吸收，不要吝啬自己的时间，学起来。&lt;/p&gt;</description></item></channel></rss>