<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI 编程 on Zampo Blog</title><link>https://blog.cpdd.fyi/tags/ai-%E7%BC%96%E7%A8%8B/</link><description>Recent content in AI 编程 on Zampo Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 20 May 2026 10:39:00 +0800</lastBuildDate><atom:link href="https://blog.cpdd.fyi/tags/ai-%E7%BC%96%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>给 Cursor 一个小需求，怎样让它先计划、再修改、再验收</title><link>https://blog.cpdd.fyi/posts/cursor-small-task-workflow/</link><pubDate>Wed, 20 May 2026 10:39:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/cursor-small-task-workflow/</guid><description>&lt;p&gt;这篇不讲安装，也不讲一堆按钮。&lt;/p&gt;
&lt;p&gt;我们只做一件小事：给 Cursor 一个登录页，让它把页面视觉调得更像一个正式产品，但不允许它改业务逻辑。&lt;/p&gt;
&lt;p&gt;任务很小，正好适合练手。小到你能看完所有 diff；也真实到足够暴露问题。很多人用 Agent 翻车，不是让它做了多复杂的架构，而是从一句“帮我优化一下页面”开始，最后发现字段、校验、接口路径都被顺手动了。&lt;/p&gt;
&lt;p&gt;这一次不追求“让 Cursor 改得多快”。&lt;/p&gt;
&lt;p&gt;我们只看一件事：它能不能按你的节奏走，分析、计划、执行、验收。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/cursor-small-task-workflow/cover.png" alt="Cursor 小需求实操封面"&gt;&lt;/p&gt;
&lt;h2 id="准备一个小到能验收的项目"&gt;准备一个小到能验收的项目&lt;/h2&gt;
&lt;p&gt;我用的是一个最小登录页 demo，只有四个核心文件：&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;span class="lnt"&gt;5
&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-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cursor-agent-demo/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── index.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── style.css
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── login.js
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── tests/login.test.js
&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;p&gt;页面里有两个字段：邮箱和密码。&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;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-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;loginForm&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/api/login&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;email&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;email&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;email&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;password&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;password&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;password&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt; &lt;span class="na"&gt;minlength&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;8&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&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;p&gt;这次需求只允许改视觉层：背景、卡片、阴影、圆角、按钮质感。&lt;/p&gt;
&lt;p&gt;不能改这些东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;表单字段名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;form action&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;请求路径&lt;/li&gt;
&lt;li&gt;&lt;code&gt;required&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minlength&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提交流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你第一次练 Cursor Agent，我建议也从这种项目开始。不要一上来就让它改业务模块、重构页面、接新接口。项目越大，你越容易被一堆看起来很努力的 diff 淹没。&lt;/p&gt;
&lt;p&gt;Agent 不是不能做大任务。&lt;/p&gt;
&lt;p&gt;但你得先练会怎么管住小任务。&lt;/p&gt;
&lt;h2 id="第一步只分析不许改"&gt;第一步：只分析，不许改&lt;/h2&gt;
&lt;p&gt;很多人给 Cursor 的第一句话是：&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&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;p&gt;这句话太危险。&lt;/p&gt;
&lt;p&gt;“优化”是什么？只改样式，还是改交互？能不能抽组件？能不能动校验？能不能顺手把 HTML 结构也重排？你没说清楚，Agent 就只能猜。&lt;/p&gt;</description></item><item><title>TypeScript 押注 Go：10 倍提速背后，不是语言胜负，是工程约束</title><link>https://blog.cpdd.fyi/posts/typescript-go-native-port/</link><pubDate>Tue, 19 May 2026 20:30:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/typescript-go-native-port/</guid><description>&lt;p&gt;TypeScript 的 10 倍提速，最容易被讲歪。&lt;/p&gt;
&lt;p&gt;一歪成“Go 打赢 Rust”。&lt;/p&gt;
&lt;p&gt;再歪成“以后 TypeScript 业务代码快 10 倍”。&lt;/p&gt;
&lt;p&gt;这两个说法都抓人，也都危险。前者把工程决策讲成语言饭圈，后者直接把性能场景讲错了。&lt;/p&gt;
&lt;p&gt;真正有意思的地方不是 Go 有多神，也不是 Rust 或 C# 有多不行，而是 TypeScript 团队这次面对的目标非常特殊：他们不是要从零设计一个新编译器，而是要把一个成熟、庞大、被整个前端生态依赖的工具链，迁到 native 实现里。&lt;/p&gt;
&lt;p&gt;这件事一旦说清楚，Go 为什么胜出，就没那么玄学了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/typescript-go-native-port/cover.svg" alt="TypeScript 与 Go native port 封面图"&gt;&lt;/p&gt;
&lt;h2 id="10-倍提速先别理解错"&gt;10 倍提速，先别理解错&lt;/h2&gt;
&lt;p&gt;官方博客里的 10 倍，不是说你写出来的 JavaScript 业务代码运行快 10 倍。&lt;/p&gt;
&lt;p&gt;TypeScript 最后还是编译成 JavaScript，线上跑得快不快，主要看 JS 引擎、业务逻辑、网络、渲染、数据结构和运行时环境。TypeScript 这次提速，发生在开发期工具链：&lt;code&gt;tsc&lt;/code&gt;、类型检查、项目加载、语言服务、编辑器响应。&lt;/p&gt;
&lt;p&gt;这区别很重要。&lt;/p&gt;
&lt;p&gt;因为一个错的期待，会毁掉一个本来很有价值的技术升级。&lt;/p&gt;
&lt;p&gt;官方 benchmark 里，VS Code 代码库的 &lt;code&gt;tsc&lt;/code&gt; 检查从 77.8 秒降到 7.5 秒，Playwright 从 11.1 秒降到 1.1 秒，TypeORM 从 17.5 秒降到 1.3 秒。编辑器加载 VS Code 项目，也从约 9.6 秒降到约 1.2 秒。&lt;/p&gt;</description></item><item><title>Cursor 真正难的不是安装，是别把 Agent 用成自动补全</title><link>https://blog.cpdd.fyi/posts/cursor-agent-workflow/</link><pubDate>Fri, 15 May 2026 18:45:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/cursor-agent-workflow/</guid><description>&lt;p&gt;你只是想让 Cursor 改一个登录页。&lt;/p&gt;
&lt;p&gt;它很积极。顺手改了组件结构、路由命名、校验逻辑，还帮你重排了几个文件。&lt;/p&gt;
&lt;p&gt;diff 很长，像是干了很多活。问题是你不敢合并。&lt;/p&gt;
&lt;p&gt;这就是很多人用 Cursor 的真实卡点。不是不会安装，不是不知道 Chat 在哪，也不是模型不够强。&lt;/p&gt;
&lt;p&gt;难的是：你得学会管住一个会主动行动的 Agent。&lt;/p&gt;
&lt;p&gt;Cursor 的价值不在“让 AI 多写几行代码”。它真正改变的是开发者和代码库之间的关系。过去你是在编辑器里写代码，现在你是在编辑器里指挥一个会读文件、改文件、跑命令、解释 diff 的执行者。&lt;/p&gt;
&lt;p&gt;如果还把它当成更聪明的自动补全用，结果通常只有两种：要么大材小用，要么放它乱跑。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/cursor-agent-workflow/cover.svg" alt="Cursor Agent 工作流封面"&gt;&lt;/p&gt;
&lt;h2 id="低门槛反而容易误判"&gt;低门槛，反而容易误判&lt;/h2&gt;
&lt;p&gt;Cursor 对 VS Code 用户很友好。&lt;/p&gt;
&lt;p&gt;打开项目，侧边栏聊天，选中文件提问，让它解释一段代码，或者直接让它改一个小功能。这些动作都很自然。Cursor 官方文档里也把 Agent 定义得很直接：它可以完成复杂编码任务，可以运行终端命令，也可以编辑代码。&lt;/p&gt;
&lt;p&gt;这很方便，但方便会制造一个错觉：装上就会用了。&lt;/p&gt;
&lt;p&gt;实际上，装上 Cursor 只是打开了入口。真正决定结果的，是你怎么给它上下文、怎么限制改动范围、怎么验收输出。&lt;/p&gt;
&lt;p&gt;很多人第一次用 Cursor，都会写这种 prompt：&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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&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;p&gt;这句话看起来没问题，实际问题很大。&lt;/p&gt;
&lt;p&gt;“优化”是什么意思？改视觉，还是改交互？能不能动接口请求？能不能改路由？能不能顺手抽组件？改完怎么判断对不对？&lt;/p&gt;
&lt;p&gt;你没说，Agent 就只能猜。&lt;/p&gt;
&lt;p&gt;Agent 的可怕之处不是它不会做事，而是它太愿意做事。你给一个含糊任务，它会补齐你的空白。补得对，是惊喜；补得错，就是事故。&lt;/p&gt;
&lt;h2 id="不要直接让它改先让它只分析"&gt;不要直接让它改，先让它只分析&lt;/h2&gt;
&lt;p&gt;我做了一个最小实测项目：一个纯 HTML/CSS/JS 登录页。&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;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&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-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cursor-agent-demo/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── index.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── style.css
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── login.js
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── tests/login.test.js
&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;p&gt;任务也很小：只调整登录页的视觉层，不改变字段、表单 action、请求路径和校验逻辑。&lt;/p&gt;</description></item><item><title>Claude Code vs Cursor：不是选工具，是选入口</title><link>https://blog.cpdd.fyi/posts/claude-code-vs-cursor/</link><pubDate>Fri, 08 May 2026 11:30:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/claude-code-vs-cursor/</guid><description>&lt;p&gt;花 $200 买了 Cursor Ultra，发现请求数不够用。&lt;/p&gt;
&lt;p&gt;又花 $100 买了 Claude Code Max，结果两个工具各跑各的。Claude 改完代码，Cursor 不知道；Cursor 里聊了半天，Claude 从头开始。&lt;/p&gt;
&lt;p&gt;最后两边都浪费，你还得花精力在两个界面之间切换。&lt;/p&gt;
&lt;p&gt;这不是工具的问题。&lt;/p&gt;
&lt;p&gt;是你没想清楚一件事：&lt;strong&gt;你习惯在哪干活，就该在哪接 AI。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人选 Claude Code 还是 Cursor，看的是功能对比表：谁上下文更大、谁模型更强、谁更便宜。&lt;/p&gt;
&lt;p&gt;这个思路从一开始就错了。&lt;/p&gt;
&lt;p&gt;工具选型不是比功能，是比入口。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/claude-code-vs-cursor/inline-01.png" alt="Claude Code vs Cursor 入口对比"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="先说结论两个都能用但入口不同"&gt;先说结论：两个都能用，但入口不同&lt;/h2&gt;
&lt;p&gt;Claude Code 和 Cursor 的核心差异，不是&amp;quot;谁更强&amp;quot;。&lt;/p&gt;
&lt;p&gt;是&lt;strong&gt;交互入口不同&lt;/strong&gt;。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Claude Code&lt;/th&gt;
 &lt;th&gt;Cursor&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;入口&lt;/td&gt;
 &lt;td&gt;终端&lt;/td&gt;
 &lt;td&gt;编辑器/对话环境&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;工作流&lt;/td&gt;
 &lt;td&gt;命令驱动，批量操作&lt;/td&gt;
 &lt;td&gt;对话驱动，可视化交互&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;上下文管理&lt;/td&gt;
 &lt;td&gt;需要手动 &lt;code&gt;/compact&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;最高 1M tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;自动化&lt;/td&gt;
 &lt;td&gt;天然适合 CI/CD、脚本&lt;/td&gt;
 &lt;td&gt;更适合人工交互&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;适合谁&lt;/td&gt;
 &lt;td&gt;终端重度用户、批量编码&lt;/td&gt;
 &lt;td&gt;习惯对话式开发、大上下文项目&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cursor 2.0 之后，已经明显偏向对话式开发环境。不要再把它简单理解成&amp;quot;看代码和调试&amp;quot;的辅助 IDE。&lt;/p&gt;
&lt;p&gt;Claude Code 把工作流压进终端，Cursor 把工作流放进对话环境。&lt;/p&gt;
&lt;p&gt;你选的不是工具。&lt;/p&gt;</description></item><item><title>别让 Claude Code 一路狂奔：高手都在盯这 5 个地方</title><link>https://blog.cpdd.fyi/posts/claude-code-best-practices/</link><pubDate>Fri, 08 May 2026 11:30:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/claude-code-best-practices/</guid><description>&lt;p&gt;Claude 修一个 bug，顺手改了 12 个文件。&lt;/p&gt;
&lt;p&gt;它删了旧组件，换了依赖，重写了一段状态管理。终端里日志飞快滚动，看起来很努力，也很专业。&lt;/p&gt;
&lt;p&gt;你隐约觉得不对，但没按 &lt;code&gt;Esc&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;十分钟后，测试挂了，页面也挂了。最麻烦的是，你已经看不清它到底从哪一步开始跑偏。&lt;/p&gt;
&lt;p&gt;很多人用 Claude Code 的进阶方式，恰好是错的：把权限开大，把确认关掉，把任务丢进去，然后等它“一路跑完”。这不是高手，这是把方向盘交出去。&lt;/p&gt;
&lt;p&gt;Claude Code 真正好用的地方，不是它能连续工作，而是你能在它工作时不断校准。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;真正的进阶，不是放手，而是会接管。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.cpdd.fyi/images/claude-code-best-practices/inline-01.png" alt="Claude Code 控制回路"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="先理解它为什么会跑偏"&gt;先理解它为什么会跑偏&lt;/h2&gt;
&lt;p&gt;Anthropic 的 Cal 在官方最佳实践分享里提到一个很关键的心智模型：Claude Code 很像一个“只用终端的同事”。&lt;/p&gt;
&lt;p&gt;它不是靠提前索引整座代码库，然后从向量数据库里召回文件。按照官方分享里的说法，它更像一个新同事进入项目：用搜索、glob、grep、find 之类的方式，一点点探索代码库，看到结果后再决定下一步搜哪里。&lt;/p&gt;
&lt;p&gt;这套方式很灵活，但也有代价。&lt;/p&gt;
&lt;p&gt;它会不断读文件、跑命令、改代码，上下文越来越长，判断会受当前看到的信息影响。如果你一开始没给规则，中途不看计划，最后也不跑测试，它当然可能越走越偏。&lt;/p&gt;
&lt;p&gt;所以 Claude Code 的进阶，不是让它更自由。&lt;/p&gt;
&lt;p&gt;而是给它一条轨道。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第一个地方claudemd不是备忘录是项目规则"&gt;第一个地方：CLAUDE.md，不是备忘录，是项目规则&lt;/h2&gt;
&lt;p&gt;很多人知道 &lt;code&gt;/init&lt;/code&gt; 可以生成 &lt;code&gt;CLAUDE.md&lt;/code&gt;，但写完就放在那里了。&lt;/p&gt;
&lt;p&gt;这很浪费。&lt;/p&gt;
&lt;p&gt;官方分享里说得很清楚：当你启动 Claude Code 时，如果当前工作目录里有 &lt;code&gt;CLAUDE.md&lt;/code&gt;，它会被放进上下文里，作为开发者留给 Claude 的重要指令。&lt;/p&gt;
&lt;p&gt;这不是“给 Claude 留一句备注”。&lt;/p&gt;
&lt;p&gt;这是你给它的项目规则。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 里至少应该有三类信息：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;类型&lt;/th&gt;
 &lt;th&gt;应该写什么&lt;/th&gt;
 &lt;th&gt;例子&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;项目结构&lt;/td&gt;
 &lt;td&gt;模块在哪里，测试在哪里，入口在哪里&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;src/app&lt;/code&gt; 是路由，&lt;code&gt;src/lib&lt;/code&gt; 放业务逻辑&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;运行方式&lt;/td&gt;
 &lt;td&gt;怎么启动、测试、构建&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;npm test&lt;/code&gt;、&lt;code&gt;npm run typecheck&lt;/code&gt;、&lt;code&gt;npm run lint&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;工程约束&lt;/td&gt;
 &lt;td&gt;不能做什么，修改前要注意什么&lt;/td&gt;
 &lt;td&gt;不要引入新状态库；改 API 前先看兼容层&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一个实用模板：&lt;/p&gt;</description></item><item><title>装了 Claude Code，别上来就写 prompt</title><link>https://blog.cpdd.fyi/posts/claude-code-beginner-guide/</link><pubDate>Fri, 08 May 2026 10:00:00 +0800</pubDate><guid>https://blog.cpdd.fyi/posts/claude-code-beginner-guide/</guid><description>&lt;p&gt;装好 Claude Code，打开终端，输入第一句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;帮我做一个办公室排班应用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;五分钟后，Claude 生了一堆文件。&lt;code&gt;npm install&lt;/code&gt; 跑不起来，页面打不开，你盯着终端不知道该从哪开始修。&lt;/p&gt;
&lt;p&gt;问题不在 Claude Code，在你给 prompt 的方式。&lt;/p&gt;
&lt;p&gt;很多人装完 Claude Code 的第一反应是把它当聊天机器人用——扔一句话，等它干活。结果就是：代码能生成，但跑不起来；功能有，但结构乱；改一处，崩三处。&lt;/p&gt;
&lt;p&gt;这篇文章不罗列功能，不背参数。只讲一件事：&lt;strong&gt;怎么从装好 Claude Code 到做出第一个能跑的项目，中间不翻车。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="claude-code-是什么"&gt;Claude Code 是什么&lt;/h2&gt;
&lt;p&gt;一句话：Anthropic 出的终端 AI 编程工具。&lt;/p&gt;
&lt;p&gt;它不是 IDE，不是编辑器，是一个跑在终端里的 AI 代理。你能跟它对话，它能读你的代码、改你的文件、跑你的命令、提交你的 Git。&lt;/p&gt;
&lt;p&gt;Anthropic 团队里有个说法很准确：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Claude Code 就像那个只用终端的同事——从不碰 GUI，但什么都能搞定。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它和 Cursor 的区别也很简单：Claude Code 是终端里的 AI，Cursor 2.0 之后更偏向对话式开发环境。两者不冲突，但分工不能再按老版本 Cursor 来理解——不要再把 Cursor 简单当成“看代码和调试”的辅助位。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="安装三分钟搞定"&gt;安装：三分钟搞定&lt;/h2&gt;
&lt;h3 id="前置条件"&gt;前置条件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;装了 Node.js（&lt;code&gt;node -v&lt;/code&gt; 能出版本就行）&lt;/li&gt;
&lt;li&gt;有 Claude 付费订阅（Pro / Max / Teams / Enterprise），或者有 API Key&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;2026 年 4 月 21 日 Anthropic 曾短暂从 Pro 计划中移除 Claude Code 访问权限，后恢复。定价政策可能波动，写这篇文章时的价格是：Pro $20/月、Max 5x $100/月、Max 20x $200/月。&lt;/p&gt;</description></item></channel></rss>