<?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>Cursor on Chico's Tech Blog</title><link>https://realtime-ai.chat/tags/cursor/</link><description>Recent content in Cursor on Chico's Tech Blog</description><image><title>Chico's Tech Blog</title><url>https://github.com/chicogong.png</url><link>https://github.com/chicogong.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 18 May 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://realtime-ai.chat/tags/cursor/index.xml" rel="self" type="application/rss+xml"/><item><title>Vibe Coding：当编程变成聊天，程序员该何去何从</title><link>https://realtime-ai.chat/posts/vibe-coding-era/</link><pubDate>Wed, 14 Jan 2026 10:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/vibe-coding-era/</guid><description>Vibe Coding 时代来临:当编程变成与 AI 聊天,程序员的角色如何转变,又该如何应对。</description><content:encoded><![CDATA[<h2 id="什么是-vibe-coding">什么是 Vibe Coding？</h2>
<p>2025年初，OpenAI前研究总监 <strong>Andrej Karpathy</strong> 发了一条推文，引爆整个技术圈：</p>
<blockquote>
<p>&ldquo;I just mass-mass-produce code with AI. I barely look at the diffs. I call this Vibe Coding.&rdquo;</p>
<p>&ldquo;我现在用AI大规模生产代码，几乎不看diff。我称之为 Vibe Coding。&rdquo;</p></blockquote>
<p>这不是玩笑。这位顶级AI科学家在认真描述他的日常工作方式：</p>
<ul>
<li>用自然语言告诉AI要做什么</li>
<li>AI生成代码</li>
<li>直接运行看效果</li>
<li>有问题就让AI改</li>
</ul>
<p><strong>不看代码，只看结果。</strong></p>
<p>这就是 Vibe Coding —— 一种全新的编程范式。</p>
<hr>
<h2 id="从写代码到描述需求">从&quot;写代码&quot;到&quot;描述需求&quot;</h2>
<h3 id="传统编程">传统编程</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 手动实现一个用户登录功能</span>
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">login</span><span class="p">(</span><span class="n">username</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 验证输入</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="ow">not</span> <span class="n">username</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">password</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&#34;用户名和密码不能为空&#34;</span><span class="p">)</span>
</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">    <span class="n">user</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">User</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">User</span><span class="o">.</span><span class="n">username</span> <span class="o">==</span> <span class="n">username</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">raise</span> <span class="n">AuthError</span><span class="p">(</span><span class="s2">&#34;用户不存在&#34;</span><span class="p">)</span>
</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">    <span class="k">if</span> <span class="ow">not</span> <span class="n">verify_password</span><span class="p">(</span><span class="n">password</span><span class="p">,</span> <span class="n">user</span><span class="o">.</span><span class="n">hashed_password</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="k">raise</span> <span class="n">AuthError</span><span class="p">(</span><span class="s2">&#34;密码错误&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 生成token</span>
</span></span><span class="line"><span class="cl">    <span class="n">token</span> <span class="o">=</span> <span class="n">create_access_token</span><span class="p">(</span><span class="n">user</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="p">{</span><span class="s2">&#34;token&#34;</span><span class="p">:</span> <span class="n">token</span><span class="p">,</span> <span class="s2">&#34;user&#34;</span><span class="p">:</span> <span class="n">user</span><span class="o">.</span><span class="n">to_dict</span><span class="p">()}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>你需要：</p>
<ol>
<li>了解所有API</li>
<li>处理边界情况</li>
<li>手动写每一行</li>
</ol>
<h3 id="vibe-coding">Vibe Coding</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">You: 实现用户登录功能，要验证输入、查数据库、验密码、返回JWT token
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">AI: [生成完整代码]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">You: 跑一下
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">AI: [执行测试] 测试通过
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">You: 加个登录失败次数限制，超过5次锁定账号
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">AI: [修改代码] 已添加
</span></span></code></pre></td></tr></table>
</div>
</div><p>你需要：</p>
<ol>
<li>清楚地描述需求</li>
<li>验证结果是否符合预期</li>
<li>迭代优化</li>
</ol>
<p><strong>代码变成了&quot;中间产物&quot;，不再是最终目标。</strong></p>
<hr>
<h2 id="为什么现在可行了">为什么现在可行了？</h2>
<h3 id="1-模型能力的跃升">1. 模型能力的跃升</h3>
<p>Claude 3.5 Sonnet → Claude Opus 4.5 → GPT-5，代码能力指数级提升：</p>
<table>
  <thead>
      <tr>
          <th style="text-align: left">指标</th>
          <th style="text-align: left">2023年</th>
          <th style="text-align: left">2025年</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left">SWE-bench</td>
          <td style="text-align: left">20%</td>
          <td style="text-align: left">75%</td>
      </tr>
      <tr>
          <td style="text-align: left">HumanEval</td>
          <td style="text-align: left">67%</td>
          <td style="text-align: left">96%</td>
      </tr>
      <tr>
          <td style="text-align: left">复杂项目理解</td>
          <td style="text-align: left">单文件</td>
          <td style="text-align: left">整个仓库</td>
      </tr>
  </tbody>
</table>
<h3 id="2-工具链的成熟">2. 工具链的成熟</h3>
<ul>
<li><strong>Cursor</strong>：AI原生IDE，理解整个项目</li>
<li><strong>Claude Code</strong>：终端里的AI程序员</li>
<li><strong>Windsurf</strong>：Copilot++，无缝集成</li>
<li><strong>Replit Agent</strong>：从描述到部署一条龙</li>
</ul>
<h3 id="3-上下文窗口爆炸">3. 上下文窗口爆炸</h3>
<ul>
<li>2023年：4K tokens（一个文件）</li>
<li>2024年：128K tokens（小型项目）</li>
<li>2025年：1M+ tokens（大型代码库）</li>
</ul>
<p>AI终于能&quot;看懂&quot;整个项目了。</p>
<hr>
<h2 id="vibe-coding-实战演示">Vibe Coding 实战演示</h2>
<h3 id="场景从零搭建一个博客系统">场景：从零搭建一个博客系统</h3>
<p><strong>传统方式</strong>：2-3天</p>
<p><strong>Vibe Coding方式</strong>：2小时</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">第1轮对话：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">You: 我要做一个个人博客系统，技术栈用 Next.js 14 + Prisma + PostgreSQL。
</span></span><span class="line"><span class="cl">功能需要：
</span></span><span class="line"><span class="cl">- Markdown 文章编辑
</span></span><span class="line"><span class="cl">- 文章分类和标签
</span></span><span class="line"><span class="cl">- 评论系统
</span></span><span class="line"><span class="cl">- 暗黑模式
</span></span><span class="line"><span class="cl">帮我搭建项目框架。
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">AI: 好的，我来创建项目...
</span></span><span class="line"><span class="cl">[执行 npx create-next-app@14 ...]
</span></span><span class="line"><span class="cl">[创建 prisma/schema.prisma]
</span></span><span class="line"><span class="cl">[创建数据库模型]
</span></span><span class="line"><span class="cl">[创建基础组件]
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">框架搭建完成，运行 npm run dev 查看效果。
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">第2轮对话：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">You: 首页看起来太丑了，参考 Vercel 官网的设计风格美化一下
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">AI: 明白，我来调整样式...
</span></span><span class="line"><span class="cl">[修改 globals.css]
</span></span><span class="line"><span class="cl">[修改 components/Header.tsx]
</span></span><span class="line"><span class="cl">[添加渐变背景和动画效果]
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">已更新，刷新页面查看。
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">第3轮对话：
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">You: 文章编辑器需要支持实时预览，左边写 Markdown 右边显示效果
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">AI: 
</span></span><span class="line"><span class="cl">[安装 react-markdown]
</span></span><span class="line"><span class="cl">[创建 SplitEditor 组件]
</span></span><span class="line"><span class="cl">[添加语法高亮支持]
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">编辑器已完成。
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>2小时后</strong>：一个功能完整、样式精美的博客系统上线。</p>
<hr>
<h2 id="谁适合-vibe-coding">谁适合 Vibe Coding？</h2>
<h3 id="最适合">最适合</h3>
<ol>
<li>
<p><strong>资深开发者</strong></p>
<ul>
<li>知道要做什么，懒得写具体实现</li>
<li>能快速判断AI代码质量</li>
<li>专注架构设计和业务逻辑</li>
</ul>
</li>
<li>
<p><strong>创业者/独立开发者</strong></p>
<ul>
<li>一个人当一个团队用</li>
<li>快速验证想法，MVP开发</li>
<li>把时间花在更重要的事情上</li>
</ul>
</li>
<li>
<p><strong>非专业程序员</strong></p>
<ul>
<li>产品经理自己做原型</li>
<li>设计师实现交互效果</li>
<li>运营搭建内部工具</li>
</ul>
</li>
</ol>
<h3 id="需要谨慎">需要谨慎</h3>
<ol>
<li>
<p><strong>涉及核心算法的场景</strong></p>
<ul>
<li>交易系统的风控逻辑</li>
<li>推荐算法的核心实现</li>
<li>需要100%正确的关键路径</li>
</ul>
</li>
<li>
<p><strong>安全敏感场景</strong></p>
<ul>
<li>加密解密实现</li>
<li>认证授权逻辑</li>
<li>需要人工审查每一行</li>
</ul>
</li>
<li>
<p><strong>性能极端场景</strong></p>
<ul>
<li>毫秒级响应要求</li>
<li>资源受限环境</li>
<li>需要手工优化</li>
</ul>
</li>
</ol>
<hr>
<h2 id="程序员的新技能栈">程序员的新技能栈</h2>
<p>Vibe Coding 时代，程序员需要的能力正在转变：</p>
<h3 id="重要性降低">重要性降低</h3>
<ul>
<li>❌ 记忆API语法</li>
<li>❌ 手写样板代码</li>
<li>❌ 调试简单Bug</li>
<li>❌ 代码格式规范</li>
</ul>
<h3 id="重要性提升">重要性提升</h3>
<ul>
<li>✅ <strong>需求分析</strong>：把模糊需求转化为清晰描述</li>
<li>✅ <strong>架构设计</strong>：决定系统如何组织</li>
<li>✅ <strong>代码审查</strong>：快速判断AI输出质量</li>
<li>✅ <strong>Prompt工程</strong>：如何让AI更好地理解你</li>
<li>✅ <strong>测试验证</strong>：确保结果符合预期</li>
<li>✅ <strong>领域知识</strong>：理解业务，而不只是技术</li>
</ul>
<h3 id="新的工作流程">新的工作流程</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">传统：需求 → 设计 → 编码 → 测试 → 部署
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Vibe：需求 → 描述 → AI编码 → 审查 → 迭代 → 部署
</span></span><span class="line"><span class="cl">          ↑_________←_________|
</span></span></code></pre></td></tr></table>
</div>
</div><p>核心变化：<strong>你从&quot;生产者&quot;变成了&quot;指挥者&quot;和&quot;质检员&quot;</strong>。</p>
<hr>
<h2 id="一些实用建议">一些实用建议</h2>
<h3 id="1-学会说人话">1. 学会&quot;说人话&quot;</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">❌ 不好的描述：
</span></span><span class="line"><span class="cl">&#34;写一个函数处理用户数据&#34;
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">✅ 好的描述：
</span></span><span class="line"><span class="cl">&#34;写一个函数，接收用户注册表单数据（name, email, password），
</span></span><span class="line"><span class="cl">验证邮箱格式和密码强度（至少8位，包含大小写和数字），
</span></span><span class="line"><span class="cl">验证通过返回处理后的数据，失败抛出具体错误信息&#34;
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="2-分步迭代">2. 分步迭代</h3>
<p>不要试图一次性让AI写完所有功能。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">第1步：搭建基础框架
</span></span><span class="line"><span class="cl">第2步：实现核心功能
</span></span><span class="line"><span class="cl">第3步：添加边界处理
</span></span><span class="line"><span class="cl">第4步：优化性能
</span></span><span class="line"><span class="cl">第5步：完善样式
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="3-保持代码审查习惯">3. 保持代码审查习惯</h3>
<p>AI不会100%正确。关键代码一定要review：</p>
<ul>
<li>安全相关（认证、权限、加密）</li>
<li>性能相关（循环、查询、缓存）</li>
<li>业务相关（核心逻辑、金额计算）</li>
</ul>
<h3 id="4-建立项目规范">4. 建立项目规范</h3>
<p>在项目中维护一个 <code>CLAUDE.md</code> 或 <code>.cursorrules</code> 文件：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="cl"><span class="gh"># 项目规范
</span></span></span><span class="line"><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="cl"><span class="gu">## 技术栈
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> Next.js 14 (App Router)
</span></span><span class="line"><span class="cl"><span class="k">-</span> TypeScript 严格模式
</span></span><span class="line"><span class="cl"><span class="k">-</span> Tailwind CSS
</span></span><span class="line"><span class="cl"><span class="k">-</span> Prisma ORM
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 代码风格
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 使用函数式组件
</span></span><span class="line"><span class="cl"><span class="k">-</span> 所有函数必须有 JSDoc 注释
</span></span><span class="line"><span class="cl"><span class="k">-</span> 错误处理使用自定义 Error 类
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="gu">## 禁止
</span></span></span><span class="line"><span class="cl"><span class="gu"></span><span class="k">-</span> 使用 any 类型
</span></span><span class="line"><span class="cl"><span class="k">-</span> 直接操作 DOM
</span></span><span class="line"><span class="cl"><span class="k">-</span> 在组件中写内联样式
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="这是终点吗">这是终点吗？</h2>
<p>Vibe Coding 可能只是开始。</p>
<p><strong>接下来可能发生的</strong>：</p>
<ol>
<li><strong>AI理解产品文档</strong>：直接从PRD生成代码</li>
<li><strong>AI参与代码审查</strong>：自动发现问题并修复</li>
<li><strong>AI运维系统</strong>：监控、报警、自动修复</li>
<li><strong>AI产品经理</strong>：分析用户行为，提出优化建议</li>
</ol>
<p><strong>终极形态</strong>：</p>
<blockquote>
<p>你描述一个想法，AI完成从设计到开发到部署到运维的全流程。</p></blockquote>
<p>这不是科幻，可能就在3-5年内。</p>
<hr>
<h2 id="结语">结语</h2>
<p>Vibe Coding 不是要消灭程序员，而是在重新定义什么是编程。</p>
<p>20年前，&ldquo;程序员&quot;意味着要懂汇编和指针。
10年前，&ldquo;程序员&quot;意味着要懂框架和设计模式。
今天，&ldquo;程序员&quot;可能意味着要懂需求分析和AI协作。</p>
<p><strong>不变的是</strong>：解决问题的能力、对技术的理解、对产品的洞察。</p>
<p><strong>变化的是</strong>：实现方式从&quot;手写代码&quot;变成了&quot;指挥AI&rdquo;。</p>
<p>你可以选择抵触，也可以选择拥抱。但无论如何，这个浪潮已经来了。</p>
]]></content:encoded></item><item><title>AI IDE 这半年:Cursor、Claude Code、Windsurf 之后</title><link>https://realtime-ai.chat/posts/ai-ide-2026/</link><pubDate>Mon, 18 May 2026 11:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/ai-ide-2026/</guid><description>复盘 2026 上半年 AI 编程工具的演变:从代码补全到后台 agent,Cursor、Claude Code、Windsurf、Copilot 的真实定位与差异,以及开发者从写代码转向审代码、派活的工作方式变化。</description><content:encoded><![CDATA[<p>上周三下午,我同时开着四个东西:Cursor 里一个 agent 在改重构,终端里 Claude Code 在跑测试,GitHub 上一个 Copilot 后台 agent 在处理我早上随手丢过去的 issue,还有一个 Cursor 云端 automation 在等 CI 结果。我本人那段时间在干嘛?在看 Linear 上的工单,决定下一个派给谁。</p>
<p>我没写一行代码。但那个下午合并了五个 PR。</p>
<p>这不是什么&quot;未来已来&quot;的感慨。这是 2026 年 5 月一个普通工程师的普通下午。半年前——也就是 2025 年底——我的工作方式还不是这样。那时候 AI 编程工具的主流形态是&quot;一个很聪明的补全&quot;,你在编辑器里写代码,它帮你接下一段。现在,补全这件事我几乎已经感觉不到它的存在了,因为我的注意力整个挪到了别处。</p>
<p>这半年到底发生了什么,值得拆开看看。</p>
<h2 id="三级跳补全--终端-agent--后台-agent">三级跳:补全 → 终端 agent → 后台 agent</h2>
<p>如果要给 AI 编程工具这半年画一条线,它是这样三级跳的:</p>
<pre class="mermaid">flowchart LR
  A[代码补全<br/>2023-2024] --> B[IDE 内 agent<br/>2025] --> C[终端 agent<br/>2025 下半年] --> D[后台/云端 agent<br/>2026]
  style A fill:#e8e8e8,stroke:#999
  style B fill:#fde7c2,stroke:#e8b23c
  style C fill:#fde7c2,stroke:#e8b23c
  style D fill:#c2e0fd,stroke:#3c8ce8
</pre><p>第一级是<strong>补全</strong>:Copilot 那套,光标后面灰字提示,你按 Tab 接受。这个形态决定了一件事——AI 是你的副驾驶,方向盘还在你手里,你得一直盯着路。</p>
<p>第二级是 <strong>IDE 内的 agent</strong>:Cursor 的 Composer、Windsurf 的 Cascade。它不再是接一段,而是&quot;你说要干什么,它跨多个文件改完给你看&quot;。方向盘开始松动了,但你还在车里。</p>
<p>第三级是 <strong>终端 agent</strong>:Claude Code 是把这个形态做出影响力的那个。它干脆不要 IDE 这个壳了,就是个命令行程序,你跟它说话,它自己读文件、改代码、跑测试、看报错、再改。这一步的意义比看上去大——它把 AI 编程从&quot;编辑器里的一个功能&quot;变成了&quot;一个独立的进程&quot;。一旦是独立进程,你就能开很多个,就能让它在后台跑。</p>
<p>第四级,也就是现在,是<strong>后台 / 云端 agent</strong>:活儿不在你机器上跑了。Cursor 的 cloud agents、GitHub 的 coding agent、Cognition 的 Devin,它们在云端的容器里干活,干完给你提个 PR。你甚至可以在手机上派活。</p>
<p>每跳一级,人和代码之间就多隔一层。半年前我的手指还在键盘上,现在我的手指主要在做一件事:点&quot;approve&quot;或者&quot;reject&quot;。</p>
<h2 id="当前四强各自站在哪">当前四强,各自站在哪</h2>
<p>把这半年最主流的四个工具摆在一起,它们其实已经不在同一个赛道上竞争了——这是很多人没意识到的。</p>
<table>
  <thead>
      <tr>
          <th>工具</th>
          <th>当前形态</th>
          <th>真实定位</th>
          <th>适合谁</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Cursor(3.4 / Composer 2.5)</td>
          <td>AI 原生 IDE + 云端 agent</td>
          <td>&ldquo;派活中枢&rdquo;:本地写 + 云端并行</td>
          <td>想一个人指挥一支 agent 小队的人</td>
      </tr>
      <tr>
          <td>Claude Code(2.x)</td>
          <td>终端 agent + Agent View</td>
          <td>&ldquo;干重活的那个&rdquo;:复杂改动、长任务</td>
          <td>信任命令行、要做深度改动的人</td>
      </tr>
      <tr>
          <td>Windsurf(Wave 13)</td>
          <td>AI IDE,归 Cognition</td>
          <td>&ldquo;通往 Devin 的入口&rdquo;</td>
          <td>喜欢 Cascade 体验、赌 Cognition 的人</td>
      </tr>
      <tr>
          <td>GitHub Copilot</td>
          <td>补全 + Agent Mode + 云端 coding agent</td>
          <td>&ldquo;贴着 GitHub 的那个&rdquo;</td>
          <td>重度 GitHub workflow、企业团队</td>
      </tr>
  </tbody>
</table>
<p><strong>Cursor</strong> 这半年走得最稳。3.3、3.4 连着发,Composer 2.5 五月中刚出。它现在的核心卖点已经不是&quot;补全多准&quot;,而是 <code>/multitask</code>——你可以同时开一堆异步子 agent 并行干活,加上云端 automation 能直接从 Linear、Jira、GitHub 读工单、起 PR、回写状态。Cursor 想做的是你的<strong>指挥台</strong>:本地一份 agent,云端一支舰队,你坐中间派活。它甚至能帮你把云端 agent 需要的开发环境(克隆仓库、装依赖、配凭据)自动搭好——因为没有环境,agent 舰队就跑不起来。</p>
<p><strong>Claude Code</strong> 走的是另一条路。它不抢&quot;IDE&quot;这个身份,就守着终端。这半年它加了 Agent View——一个能同时盯多个后台会话的界面,加了 <code>/goal</code>——你给它一个目标,它自己写代码、跑测试、debug、再跑,直到达成。我个人的体感:Claude Code 是这四个里最适合干&quot;脏活重活&quot;的。一个要动二十个文件、还得反复跑测试验证的重构,我现在默认丢给它。它的 fast mode 现在默认跑 Opus 4.7。</p>
<p><strong>Windsurf</strong> 是这半年最唏嘘的一个。2025 年底它被 Cognition(做 Devin 的那家)以约 2.5 亿美元收购,这中间还夹着 Google 的技术授权和 OpenAI 当初的竞购,过程一地鸡毛。产品本身没死,Wave 13 还带来了多 agent 会话和 Git worktree 支持,2026 年 2 月它在 LogRocket 的 AI 开发工具榜上还排第一。但今年 3 月它把原来便宜、可预测的 15 美元信用额度套餐换成了 20 美元加严格日 / 周配额,直接惹毛了一批老用户。更要命的是定位上的不确定:Cognition 明说了想把 Windsurf 的 IDE 能力并进 Devin。所以现在用 Windsurf,你得想清楚——你是在用一个 IDE,还是在用一个早晚会变成 Devin 入口的东西。</p>
<p><strong>GitHub Copilot</strong> 是那个&quot;看起来落后、其实没掉队&quot;的。补全起家的它,这半年把 Agent Mode 和云端 coding agent 都补齐了:coding agent 现在能自己选模型、开 PR 前先用 code review 自审一遍、还在流程里跑代码扫描和密钥泄露检查。它最大的护城河从来不是模型,是它长在 GitHub 身体里——issue、PR、Actions、code review 一条龙。五月它还放出了从 JetBrains IDE 把任务交给本地 Copilot CLI agent 的预览。Copilot 不耀眼,但对一个深度绑在 GitHub 上的企业团队,它是阻力最小的选择。</p>
<p>我的判断是:<strong>别再问&quot;哪个最好&quot;了</strong>。这个问题在 2025 年还成立,现在不成立。Cursor 是指挥台,Claude Code 是重型施工队,Copilot 是贴着 GitHub 的传送带,Windsurf 是一张赌 Cognition 未来的票。它们解决的是不同的问题。我自己是 Cursor + Claude Code 一起用,前者派活、后者啃硬骨头,一点都不冲突。</p>
<h2 id="终端-agent为什么会赢">&ldquo;终端 agent&quot;为什么会赢</h2>
<p>值得单独说一句:为什么 2025 下半年杀出来的是终端 agent 这个形态,而不是更花哨的 IDE?</p>
<p>因为终端 agent 砍掉了&quot;图形界面&quot;这个包袱,换来了三样东西:<strong>可组合、可并行、可上云</strong>。</p>
<p>一个命令行程序,你能用 shell 脚本把它串起来,能在 CI 里调它,能开十个进程同时跑。一个 IDE 你做不到这些——IDE 天生是给&quot;一个人坐在前面&quot;设计的。当 AI 编程从&quot;辅助一个人&quot;变成&quot;同时干很多活&rdquo;,IDE 这个外壳反而成了约束。</p>
<pre class="mermaid">flowchart TB
  Dev[开发者] --> Plan[拆任务 / 写清楚要什么]
  Plan --> A1[agent 1: 后台改 bug]
  Plan --> A2[agent 2: 本地写新功能]
  Plan --> A3[agent 3: 云端跑重构]
  A1 --> Review[人:审 diff / 提 PR / 决定合不合]
  A2 --> Review
  A3 --> Review
  Review --> Dev
  style Dev fill:#fde7c2,stroke:#e8b23c
  style Review fill:#fde7c2,stroke:#e8b23c
</pre><p>注意这张图里,人只出现在两个地方:<strong>开头拆活,结尾审活</strong>。中间那段&quot;写代码&quot;已经不在人的关键路径上了。这就是这半年最实质的变化——它不是工具变好用了,是工作流的形状变了。</p>
<p>Cursor 也很清楚这一点,所以它一边守着 IDE 这个用户习惯,一边拼命往云端 agent 和 <code>/multitask</code> 上加码。它在用 IDE 的外壳,装终端 agent 的内核。</p>
<h2 id="你的工作从写变成了审和派">你的工作从&quot;写&quot;变成了&quot;审&quot;和&quot;派&quot;</h2>
<p>这是我最想说的一段,也是这半年我自己感受最深的。</p>
<p>半年前,我的核心技能是写代码。现在不是了。现在我每天花最多时间的三件事是:</p>
<p><strong>第一,把活拆清楚。</strong> Agent 干得好不好,八成取决于你派活派得清不清楚。一个含糊的&quot;帮我优化下这个模块&quot;,和一个&quot;把这个模块的数据库查询从 N+1 改成批量加载,保持现有接口不变,加上对应测试&quot;——出来的东西天差地别。这半年我越来越觉得,<strong>写清楚需求本身就是一种正在升值的技能</strong>。Claude Code 的 <code>/goal</code> 之所以好用,前提是你得能说清楚那个 goal。</p>
<p><strong>第二,审 diff。</strong> 这是最累、也最危险的一件事。Agent 一天能给你交十几个 PR,业界数据是引入 agent 后 PR 数量涨了 40% 到 60%。问题来了:你审得过来吗?审不过来就会有人开始&quot;假装审过了&quot;——扫一眼,点 approve。这是 2026 年最真实的风险,不是 AI 写出 bug,是<strong>人审不动了,于是不审了</strong>。</p>
<p>我给自己定了条规矩:<strong>agent 写的代码,审查标准要比人写的更高,不是更低</strong>。因为人写错了通常错得&quot;有道理&quot;、好猜;agent 错起来经常错得很离谱、很自信,藏在一堆看着没问题的代码中间。</p>
<p><strong>第三,决定什么不交给 agent。</strong> 这点反直觉但很重要。核心架构、安全边界、那些&quot;错了代价很大&quot;的地方,我现在反而更倾向自己写,或者自己写完让 agent 来挑错。会派活的人不是把所有活都派出去的人,是知道<strong>哪些该派、哪些该自己攥着</strong>的人。</p>
<p>工具厂商其实也在顺着这个变化走。GitHub Copilot 的 coding agent 现在开 PR 前会先自审一遍、跑安全扫描——本质上是它知道&quot;人审不过来了&quot;,所以先帮你过一遍。Cursor 给你看 agent 的 context 用量,也是同一个逻辑:当你不亲自写,你至少得知道它在想什么。</p>
<p>所以如果你问我,这半年一个开发者最该练的是什么,我的答案是三个词:<strong>拆活、审 diff、判断边界</strong>。写代码的肌肉不会废掉——你得能写,才看得懂 agent 写的——但它不再是那块最值钱的肌肉了。</p>
<h2 id="接下来半年我赌什么">接下来半年,我赌什么</h2>
<p>简单说几个判断,赌错了年底再来认。</p>
<p><strong>后台 agent 会变成默认,但&quot;全自动&quot;还早。</strong> 派活给云端 agent、它提 PR 给你审,这套流程会变成常规操作。但&quot;把整个需求扔进去、不管了&quot;——Devin 那个最初的承诺——我认为这半年还到不了。卡点不在模型聪不聪明,在<strong>验证</strong>:你怎么确认它真做对了?在这个问题被解决之前,人必须留在审查这一环。</p>
<p><strong>工具会继续分化,不会收敛。</strong> 不会出现一个&quot;赢家通吃&quot;的 AI IDE。终端 agent、IDE、云端 agent 是三种不同的形态,服务三种不同的场景,它们会长期共存。你最终大概率是手上同时握着两三个,按场景切。</p>
<p><strong>审查会变成瓶颈,然后变成新工具的战场。</strong> 当 agent 产出快到人审不过来,下一波工具竞争的焦点不会是&quot;写得更快&quot;,而是&quot;帮你审得更快、更可信&quot;。谁能让人重新跟得上 agent 的产出速度,谁就赢下 2026 下半年。</p>
<p>半年前我担心的是 AI 会不会写不好代码。现在我不担心这个了——它写得够好。我现在担心的是另一件事:当写代码这件事变得这么便宜,我们会不会因为审不过来,而让一堆没真正看懂的代码,合进了主干。</p>
<p>工具的演化已经跑到前面去了。该追上的,是我们自己审视代码的方式。</p>
]]></content:encoded></item><item><title>AI编程助手怎么选？Copilot vs Cursor vs Claude Code</title><link>https://realtime-ai.chat/posts/ai-coding-tools/</link><pubDate>Thu, 15 Jan 2026 10:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/ai-coding-tools/</guid><description>GitHub Copilot、Cursor、Claude Code 三大 AI 编程助手怎么选:实测体验对比与选型建议。</description><content:encoded><![CDATA[<h2 id="先说结论">先说结论</h2>
<table>
  <thead>
      <tr>
          <th>场景</th>
          <th>推荐</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>公司统一采购</td>
          <td>GitHub Copilot</td>
      </tr>
      <tr>
          <td>个人开发追求效率</td>
          <td>Cursor</td>
      </tr>
      <tr>
          <td>复杂项目重构</td>
          <td>Claude Code</td>
      </tr>
      <tr>
          <td>学生党/尝鲜</td>
          <td>都试试，反正有免费版</td>
      </tr>
  </tbody>
</table>
<p>下面说说为什么。</p>
<hr>
<h2 id="github-copilot稳">GitHub Copilot：稳</h2>
<p><strong>优点：</strong></p>
<ul>
<li>和VS Code集成最好，不卡</li>
<li>企业合规，公司一般都愿意买单</li>
<li>代码补全中规中矩，不会出太离谱的东西</li>
</ul>
<p><strong>缺点：</strong></p>
<ul>
<li>对整个项目的理解不如Cursor</li>
<li>有时候补全太保守，不敢写多</li>
</ul>
<p><strong>适合谁：</strong> 大厂员工、需要合规的团队</p>
<hr>
<h2 id="cursor快">Cursor：快</h2>
<p>我现在主力用Cursor。</p>
<p><strong>为什么？</strong></p>
<ol>
<li>
<p><strong>Tab补全太爽了</strong>。它能预测你下一步要改哪个文件、哪一行，按Tab就跳过去了。用久了回不去普通IDE。</p>
</li>
<li>
<p><strong>对代码库理解深</strong>。问它&quot;这个项目怎么加个新API&quot;，它真的会去翻代码，不是瞎编。</p>
</li>
<li>
<p><strong>Composer模式</strong>。告诉它&quot;帮我重构这个模块&quot;，它能同时改好几个文件。</p>
</li>
</ol>
<p><strong>缺点：</strong></p>
<ul>
<li>有时候太激进，改得多你得仔细review</li>
<li>月费$20，不便宜</li>
</ul>
<p><strong>适合谁：</strong> 追求效率的老手、个人开发者</p>
<hr>
<h2 id="claude-code聪明">Claude Code：聪明</h2>
<p>Claude Code是后来者，但确实有点东西。</p>
<p><strong>亮点：</strong></p>
<ul>
<li>理解能力最强，复杂逻辑描述清楚它就能写对</li>
<li>解释代码特别清楚</li>
<li>处理大项目上下文比较好</li>
</ul>
<p><strong>缺点：</strong></p>
<ul>
<li>速度比Cursor慢一点</li>
<li>还在迭代，功能没那么完善</li>
</ul>
<p><strong>适合谁：</strong> 需要处理复杂项目、喜欢AI帮忙想方案的人</p>
<hr>
<h2 id="我的使用习惯">我的使用习惯</h2>
<p>日常写代码：<strong>Cursor</strong>
遇到复杂问题：切到 <strong>Claude Code</strong> 聊两句
公司项目：用公司配的 <strong>Copilot</strong></p>
<p>不冲突，看场景切换就行。</p>
<hr>
<h2 id="一点建议">一点建议</h2>
<p>别把AI编程工具当&quot;代码生成器&quot;，把它当&quot;结对编程的同事&quot;。</p>
<ul>
<li>它写的代码你得review</li>
<li>它不懂的地方你得教它（给上下文）</li>
<li>它写错了跟它说，它会改</li>
</ul>
<p>用好了效率能提升2-3倍，用不好反而添乱。</p>
<p>有问题留言，我看到会回。</p>
]]></content:encoded></item></channel></rss>