<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cursor on 姚玉亮的网络日志</title><link>https://yusanwen-code.github.io/tags/cursor/</link><description>Recent content in Cursor on 姚玉亮的网络日志</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Mon, 12 Jan 2026 10:30:00 +0800</lastBuildDate><atom:link href="https://yusanwen-code.github.io/tags/cursor/index.xml" rel="self" type="application/rss+xml"/><item><title>Cursor 与 Claude Code 对比：我的 AI 编程实战配置</title><link>https://yusanwen-code.github.io/posts/post-56/</link><pubDate>Mon, 12 Jan 2026 10:30:00 +0800</pubDate><guid>https://yusanwen-code.github.io/posts/post-56/</guid><description>&lt;img src="https://yusanwen-code.github.io/images/post-56-cover.jpg" alt="Featured image of post Cursor 与 Claude Code 对比：我的 AI 编程实战配置" /&gt;&lt;h2 id="两个工具两种脾气"&gt;两个工具，两种脾气&#10;&lt;/h2&gt;&lt;p&gt;过去一年我同时深度使用 Cursor 和 Claude Code。一个是 IDE，一个是 CLI 加 Agent，定位并不重叠。在某科技公司的统一认证中心、知识库问答服务后端，以及 alchemy-furnace 全栈项目里，我慢慢形成了「日常写代码用 Cursor，复杂重构和跨服务任务用 Claude Code」的组合，而不是二选一。&lt;/p&gt;&#10;&lt;h2 id="各干各的活"&gt;各干各的活&#10;&lt;/h2&gt;&lt;p&gt;Cursor 的 Tab 补全和 Cmd+K 内联编辑最跟手。写熟悉的业务代码、前端 JSX、SQL 时效率极高，适合「我知道要写什么，只是想快一点」。Claude Code 的 Plan 模式、子任务和工具调用（Bash/Read/Edit）适合另一类活：「我知道目标，但需要它自己摸代码、跑测试、改一轮」，比如跨多个微服务加一个字段、批量修复 lint、写数据迁移脚本。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="一个任务进来，按性质分流给两个工具" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://yusanwen-code.github.io/images/post-56-cursor-vs-claude.svg"&gt;&lt;/p&gt;&#10;&lt;h2 id="两份规则文件"&gt;两份规则文件&#10;&lt;/h2&gt;&lt;p&gt;Cursor 的 &lt;code&gt;.cursorrules&lt;/code&gt;：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&#10;&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;&#10;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;1&#10;&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;2&#10;&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;3&#10;&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;4&#10;&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;5&#10;&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;&#10;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- You are an expert Go backend engineer.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Prefer table-driven tests.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Never ignore returned errors; wrap with fmt.Errorf(&amp;#34;...: %w&amp;#34;, err).&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Use zap for structured logging, no fmt.Println in business code.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- For GORM, always pass ctx and specify table name explicitly.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- Frontend: Next.js App Router, shadcn/ui, Tailwind. Keep components server by default.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;Claude Code 的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 在上一篇已经展示过，重点是项目结构、命令和领域术语。两份文件内容不同，思路一致：把团队约定固化下来，而不是每次靠 prompt 提醒。&lt;/p&gt;&#10;&lt;p&gt;两个工具我都要求同一件事：改完代码自己跑测试。Cursor 用 Composer 执行 &lt;code&gt;go test ./...&lt;/code&gt;，Claude Code 直接调 Bash 工具，看到失败再回头改。&lt;/p&gt;&#10;&lt;h2 id="踩过的坑"&gt;踩过的坑&#10;&lt;/h2&gt;&lt;p&gt;第一，上下文管理思路不同。Cursor 靠 &lt;code&gt;@file&lt;/code&gt;、&lt;code&gt;@git&lt;/code&gt;、&lt;code&gt;@docs&lt;/code&gt; 手动引用，精确，但前提是你得知道该引用什么；Claude Code 会自己 grep 和 read，容易把上下文撑爆，得靠 Plan 模式和子任务控制范围。&lt;/p&gt;&#10;&lt;p&gt;第二，补全质量。Cursor 在短片段补全上更跟手，尤其前端 props；Claude Code 不做实时补全，但整段生成和跨文件重构更强。&lt;/p&gt;&#10;&lt;p&gt;第三，价格与合规。Cursor 可以切不同模型，但企业代码要考虑合规；Claude Code 走我自己的 API Key 或订阅，代码不外传到第三方索引，对公司项目更安心。我们在统一认证中心项目里明确禁止把含密钥或客户数据的文件贴到任何 SaaS 工具。&lt;/p&gt;&#10;&lt;p&gt;第四，终端场景。Claude Code 在服务器、容器、tmux 里能直接跑，改 KubeSphere 部署脚本、调试线上 Pod 时比 SSH 加本地 IDE 方便；Cursor 需要本地有仓库或 Remote-SSH。&lt;/p&gt;&#10;&lt;p&gt;第五，别迷信任何一个工具。我见过同事一路 Tab 出几百行没跑过的代码，也见过让 Agent 自主改一下午、最后全是幻觉 API 的。生成越顺手，检查越不能省。&lt;/p&gt;&#10;&lt;p&gt;第六，两者都需要一份清晰的项目规则文件。没有 &lt;code&gt;.cursorrules&lt;/code&gt; 或 &lt;code&gt;CLAUDE.md&lt;/code&gt;，它们都会按「通用最佳实践」写，和你项目的真实风格完全不搭。&lt;/p&gt;&#10;&lt;h2 id="我的组合"&gt;我的组合&#10;&lt;/h2&gt;&lt;p&gt;Cursor 当主力编辑器，处理日常 CRUD 和前端；Claude Code 当 Agent，处理跨文件、跨服务、需要自己跑命令的任务。两个工具都配好项目规则，都要求改完自跑测试，都不让它碰密钥。这三个「都」，比选哪个工具更重要。&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;封面图：&lt;a class="link" href="https://www.flickr.com/photos/48126477@N05/6036720300" target="_blank" rel="noopener"&#10; &gt;MattsMacintosh / Flickr&lt;/a&gt; · CC BY 2.0&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;</description></item></channel></rss>