Cursor 实战:AI 代码编辑器真的能提升生产力吗?
我用 Cursor 写了三个月代码,说说真实感受。Cursor 能提升生产力,但没那么神。有爽点也有坑,适合用来写样板代码、快速原型验证,但不适合写核心业务逻辑。
# Cursor 实战:AI 代码编辑器真的能提升生产力吗?
我用 Cursor 写了三个月代码,想说说真实感受。
先说结论
Cursor 能提升生产力,但没那么神。它更像是一个"聪明的代码补全工具",而不是什么"AI 配对编程"。如果你期待它能替代你思考,那还是算了。
我怎么开始用 Cursor 的
去年年底,团队里有人推荐 Cursor。那时候我正在重构一个老项目,代码里到处是意大利面条式的逻辑,改一处崩一片。我想着试试 AI 工具能不能帮上忙。
第一次用 Cursor 的时候,我被它的代码补全惊到了。不是那种简单的"猜下一个词",而是真的能理解上下文。比如我在写一个数据处理函数,它居然能猜到我想过滤掉空值,然后自动补全了那段逻辑。
// 我在写这个
function processUserData(users) {
const validUsers = users.filter(u =>
// Cursor 自动补全了下面的逻辑
u &&
u.email &&
u.email.includes('@') &&
u.status === 'active'
);
return validUsers.map(u => ({
id: u.id,
name: u.name || u.username,
// 又补全了
email: u.email.toLowerCase(),
lastLogin: new Date(u.last_login)
}));
}
说实话,那时候我觉得这玩意儿有点东西。
爽点在哪
1. 代码补全真的聪明
跟 GitHub Copilot 比,Cursor 的补全更"懂你"。它不是简单地根据变量名猜,而是会看你的整个文件,甚至跨文件理解上下文。
有次我在写一个 React 组件,需要从一个 API 拿数据然后展示。我刚写完 fetchData 函数,Cursor 就自动帮我写好了 useEffect 和 useState 的逻辑。虽然不完美,但省了我不少时间。
2. Cmd+K 改代码很爽
选中一段代码,按 Cmd+K,然后用自然语言描述你想怎么改,Cursor 会直接帮你改。
比如我有这么一段烂代码:
def get_user_orders(user_id):
orders = []
for order in db.query("SELECT * FROM orders WHERE user_id = ?", user_id):
items = []
for item in db.query("SELECT * FROM order_items WHERE order_id = ?", order['id']):
items.append({
'product_id': item['product_id'],
'quantity': item['quantity'],
'price': item['price']
})
orders.append({
'id': order['id'],
'items': items,
'total': sum(i['quantity'] * i['price'] for i in items)
})
return orders
我选中这段代码,按 Cmd+K,输入 "convert to use JOIN and optimize N+1 queries",Cursor 直接给我改成了:
def get_user_orders(user_id):
query = """
SELECT
o.id as order_id,
o.created_at,
oi.product_id,
oi.quantity,
oi.price
FROM orders o
LEFT JOIN order_items oi ON o.id = oi.order_id
WHERE o.user_id = ?
ORDER BY o.id
"""
rows = db.query(query, user_id)
orders = {}
for row in rows:
order_id = row['order_id']
if order_id not in orders:
orders[order_id] = {
'id': order_id,
'items': [],
'total': 0
}
orders[order_id]['items'].append({
'product_id': row['product_id'],
'quantity': row['quantity'],
'price': row['price']
})
orders[order_id]['total'] += row['quantity'] * row['price']
return list(orders.values())
这改得确实可以,N+1 查询的问题解决了,代码也简洁了不少。
3. 聊天功能适合用来探索代码库
Cursor 的聊天窗口(Cmd+L)可以索引整个代码库,然后你可以问它"这个函数在哪被调用了"、"这个模块是干什么的"之类的问题。
我接手那个老项目的时候,用这个功能快速理解了代码库的结构。虽然有时候它也会胡说八道,但大部分时候还是靠谱的。
坑在哪
1. 它会自信地写错代码
这是最要命的。Cursor 生成的代码看起来很合理,逻辑也通顺,但就是错的。
有次我让它帮我写一个并发控制的逻辑,它给了我这段代码:
async function processTasksConcurrently(tasks, maxConcurrency) {
const results = [];
for (let i = 0; i < tasks.length; i += maxConcurrency) {
const batch = tasks.slice(i, i + maxConcurrency);
const batchResults = await Promise.all(
batch.map(task => task())
);
results.push(...batchResults);
}
return results;
}
看起来没问题对吧?但我实际跑的时候发现,这个"并发控制"根本不并发。它每次等一个 batch 跑完才跑下一个,但实际上 Promise.all 已经把 batch 里的任务都并发了。真正的并发控制应该是这样的:
async function processTasksConcurrently(tasks, maxConcurrency) {
const results = [];
const running = new Set();
for (const task of tasks) {
const promise = task().then(result => {
running.delete(promise);
return result;
});
running.add(promise);
results.push(promise);
if (running.size >= maxConcurrency) {
await Promise.race(running);
}
}
return Promise.all(results);
}
Cursor 生成的代码能跑,但逻辑不对。如果你不仔细看,直接 merge 进去,那就是给自己埋坑。
2. 上下文窗口有限,大项目会懵
Cursor 声称能索引整个代码库,但实际用起来,当你的项目超过几万行代码,它就开始犯迷糊了。
它会忘记之前文件里定义的函数,或者搞混不同模块里的同名变量。这时候你得手动把相关文件添加到上下文里,不然它生成的东西就是错的。
3. 太依赖它会让你变懒
这是我个人的感受。用了一段时间 Cursor 之后,我发现我开始变懒了。遇到不会的 API,我不再去查文档,而是直接让 Cursor 帮我写。遇到报错,我不再去仔细看错误信息,而是直接把报错扔给 Cursor,让它帮我修。
这导致一个问题:我对代码的"感觉"变差了。以前我会仔细思考每一行代码的含义,现在我只是"大概知道"它在干什么。
有次 code review,同事问我这段代码为什么这么写,我居然答不上来,因为那是 Cursor 帮我生成的。
我的使用建议
1. 把它当辅助工具,别当主力
Cursor 适合用来:
不适合用来:
2. 生成的代码必须 review
这是铁律。不管 Cursor 生成的代码看起来多合理,你必须逐行 review。重点关注:
3. 学会写好的 prompt
跟 Cursor 交互的时候,prompt 写得好不好直接影响输出质量。
不好的 prompt:
帮我写一个用户登录的功能
好的 prompt:
实现一个用户登录函数,需求:
越具体,它生成的东西越靠谱。
4. 不要过度依赖
定期强迫自己不用 Cursor,纯手写代码。保持对代码的"手感"。
我现在的规定是:周末的项目不用 Cursor,平时的工作可以适度使用。这样既能享受 AI 的便利,又不会让自己退化。
它值那个价钱吗?
Cursor 现在的价格是 $20/月(Pro 版)。值不值取决于你怎么用。
如果你只是用来写写简单的脚本、做做原型,那可能不值。GitHub Copilot 更便宜,而且集成更好。
但如果你是在维护大型代码库、经常需要重构代码、或者要快速理解陌生项目,那 Cursor 的聊天和代码索引功能还是很有价值的。
我个人觉得,$20/月换来 20-30% 的效率提升,还是划算的。但如果你期待它能让你效率翻倍,那还是算了。
总结
Cursor 是个好工具,但它只是工具。它能帮你省时间,但不能替代你思考。
用它的前提是你已经是一个有经验的开发者,知道什么是好代码,什么是烂代码。如果你还是新手,我建议先打好基础,再来用这些 AI 工具。不然你只是从一个坑掉进另一个坑。
最后说一句:AI 不会取代程序员,但会用 AI 的程序员会取代不会用的。关键是,你得知道自己在干什么。
*写完这篇文章,我去看了眼 Cursor 给我生成的代码,发现有个边界条件没处理。果然,还是得自己来。*
VkingAI