为防止眼疲劳,我用Cursor 1天开发VS Code护眼插件 | AI编程的5个心得

前言

大家好,我是一诺,一个95后奶爸程序员。最近因为工作太投入,长时间盯着屏幕眼酸眼胀超难受。于是我用Cursor编程,仅用一天时间就开发出一款护眼工具,帮助自己和更多程序员告别眼疲劳。

先看效果,已发布到插件市场,欢迎反馈。

👉 一诺:保护视力小卫士(编程防疲劳助手) - Visual Studio Marketplace

科学的45-5工作法则时间管理

● 🔔 智能渐进提醒,当你沉溺代码中时,及时弹出提醒休息。

● ⚙️ 高度自定义配置(提醒间隔、休息时长、提醒风格)

● 🔍 智能检测:当检测到无操作时自动暂停计时 ● 📊 状态栏实时进度显示

这篇文章将分享我的开发历程,主要三个部分:

  1. 需求挖掘:使用KANO模型,找到真需求
  2. AI编程实战:Cursor快速实现核心功能
  3. 5个实用建议:普通人也能用AI实现创意

一、从痛点到需求

程序员的通病,也是我的困扰

你有没有这样的经历?

  • 盯着屏幕几小时后,眼睛干涩得像撒了沙子
  • 沉浸在代码中,直到脖子酸痛才回过神
  • 出门被风一吹,眼泪不受控制地往外流

这些都是我的日常。尤其是干眼症的困扰,让我一度以为自己的眼睛出了严重问题,连忙去医院检查。医生的诊断很直接:没什么大问题,就是累的了。

既然问题出在不懂得休息,为什么不做一个智能提醒工具呢?

从模糊问题到具体需求

我在梁宁老师《真需求》这本书中,发现一个特别好用的需求分析模型。叫做 KANO模型 ,如图分享给大家。

KANO模型将需求分为五类:

  1. 必备需求:没有会不满意,有了也不会特别满意
  2. 期望需求:满足得越多,用户越满意
  3. 魅力需求:意料之外的惊喜,有则惊喜,无则无感
  4. 无差异需求:有无都无所谓
  5. 反向需求:有了反而不满意

按照这个模型,我分析了我的护眼神器需求:

必备需求(Must-be)

  • 定时提醒休息功能
  • 不影响正常工作
  • 提醒足够明显

期望需求(Performance)

  • 可自定义工作和休息时长
  • 状态可视化(知道还有多久到休息时间)
  • 提醒方式多样化

魅力需求(Delighters)

  • 智能检测工作状态,无操作自动暂停
  • 提供护眼小贴士
  • 休息时锁定屏幕强制休息

通过KANO模型的分析,我明确了目标:

  1. 目标用户:我自己和其他程序员
  2. 核心功能:定时提醒休息,强制中断工作
  3. 使用场景:主要在写代码时使用
  4. 参考产品:类似番茄工作法的时间管理工具

思考后,我确定了更具体的需求:

我需要一个工具,能够按照45分钟工作、5分钟休息的节奏提醒我。提醒要足够明显,但不能太烦人。在休息时要有倒计时,并能根据我的使用状态智能判断是否暂停计时。

二、AI 编程实战

选择合适的开发方式

确定了需求,接下来要选择如何实现。我考虑了几种方案:

  1. ❌ 开发手机App:太复杂,需要iOS和Android两个版本
  2. ❌ 做网页应用:使用场景不够聚焦,离开浏览器就没用了
  3. ✅ VSCode插件:直击程序员主战场,使用场景精准

虽然我是程序员,但我没开发过VSCode插件。这时,我已经用了半年的Cursor成了我的得力助手。

如何向AI描述需求

向AI描述需求有几个关键点:

  1. 具体胜于抽象:不说"做个提醒软件",而是详细描述功能
  2. 结果导向:专注于"做什么"而非"怎么做"
  3. 自然语言:虽然我懂编程,但在不熟悉的领域还是用自然预览描述需求

比如:

我想开发一个VSCode插件实现护眼提醒功能。具体需要实现45分钟工作、5分钟休息的循环提醒,如何开始?

AI给出的代码,没有编程基础的朋友,不必担心看不懂。直接告诉AI你不懂编程,请它用简单类比解释核心概念。

比如"这段代码会为我实现什么功能?"或"能用生活例子解释这个概念吗?"。始终关注最终效果,而不是实现细节。

三、迭代优化全过程

从最简原型开始

作为开发者,我知道不要一开始就求完美。先做出最简单的版本,然后逐步完善。我的第一个版本只有一个功能:定时弹出提醒。

得到这个版本后,我继续向AI提问:

我:如何在状态栏添加一个进度显示,让用户知道还有多久到休息时间

开发出来的效果

遇到问题的解决方式

即使是有经验的开发者,在新领域也会遇到问题。这时我采用了这个原则:问具体问题,指明你的背景

例如,当我遇到VSCode插件生命周期管理问题时:

我:作为后端开发者,我理解资源管理的重要性。VSCode插件中的"disposable"看起来像是资源释放机制,它与我熟悉的后端资源管理有什么异同?

Cursor:是的,disposable确实是资源管理机制。在VSCode插件中,它类似于后端开发中的连接池释放或事件监听器移除。区别在于VSCode使用订阅模式,当插件被停用时,会自动调用所有注册的disposable的dispose方法...

注意我提问时先说明了自己的背景,这样AI能给出更有针对性的解释。

四、普通人也能用AI开发:我的5个实用建议

一诺用cursor开发有大半年的时间了,无论工作还是副业带来很大的帮助,我总结了几点建议,分享给想尝试AI编程的朋友。我会用具体案例来说明,方便大家理解和实操。

1. 从真实需求出发:解决自己的实际问题是最好的起点

案例:我有个朋友小王,每天要处理大量Excel表格,经常加班到很晚。他告诉我:"我特别希望能有个工具,自动把多个Excel文件合并,并按照日期排序。"

这就是一个真实需求!小王没有说"我要开发一个数据处理系统",而是从自己的实际困扰出发。他后来用AI开发了一个简单的Excel合并工具,每天节省了2小时工作时间。

实操建议

  • 先写下你日常工作中最耗时、最烦人的3个任务
  • 思考这些任务能否通过自动化工具解决
  • 用一句话描述:"我希望有个工具能帮我..."

2. 清晰描述目标:用简单语言说清楚你想要什么

案例:我另一个朋友小李想做个记账工具,他这样描述需求:

❌ "我要开发一个财务管理系统,包含收入支出记录、数据可视化、预算管理等功能"

✅ "我想要一个简单的记账工具,就像手机备忘录那样,可以记录每天花了多少钱,月底能自动统计总支出,最好能显示饼图看看钱都花在哪里了"

实操建议

  • 避免使用专业术语
  • 用"就像...那样"的句式,参考你熟悉的产品
  • 把复杂功能拆分成具体的小功能

3. 小步快跑:先做最简版本,再逐步完善

案例:我开发护眼插件的过程:

第一步:只实现定时提醒功能

第二步:添加状态栏显示倒计时

第三步:增加自定义配置选项

第四步:添加智能检测功能

实操建议

  • 先列出所有想要的功能
  • 按重要性排序
  • 只实现最核心的1-2个功能
  • 使用满意后再添加新功能

4. 利用已有知识:告诉AI你的背景,获得更有针对性的帮助

案例:我有个做设计的同事想开发一个图片处理工具,她这样和AI对话:

"我是做UI设计的,熟悉Photoshop但不了解编程。我想做个工具能自动调整图片尺寸,就像Photoshop里的'图像大小'功能那样。能帮我实现吗?"

AI立即用设计相关的概念解释技术细节,让她更容易理解。

实操建议

  • 开头就说明你的专业背景
  • 用你熟悉的领域概念做类比
  • 例如:"我是做销售的,我想做个客户管理系统,就像Excel表格那样..."

5. 专注不熟悉的部分:将AI作为在陌生领域的指导者

案例:我有个做财务的朋友想开发一个报表工具,他这样和AI沟通:

"我熟悉Excel公式,但不懂如何做网页。我想做个在线报表工具,能自动计算数据并生成图表。Excel部分我可以自己写,但网页显示这部分需要帮助。"

实操建议

  • 明确说明你懂什么、不懂什么
  • 让AI重点解释你不熟悉的部分
  • 例如:"我懂Excel,但不懂如何把数据变成网页图表,能详细解释这部分吗?"

最后

一诺作为程序员,曾经习惯了用代码解决问题。但在AI时代,关键不在于你懂多少技术细节,而在于你能多清晰地描述问题和解决方案。

如果你也有自己的创意,不妨试试借助AI来实现它

相关推荐
coder_pig8 小时前
Coze+Trae+掘金MCP = "✨掘金微热榜"
coze·mcp·trae
盏灯12 小时前
国产❓Trae ❓收费❓❗︎
trae
石小石Orz13 小时前
浏览器指纹-探究前端如何识别用户设备
trae
anyup14 小时前
记一次解决 uni-app 真机运行时导致的白屏问题:Trae vs 通义灵码 vs Cursor
前端·uni-app·trae
Wo在稀土掘金17 小时前
Trae 智能体--git自动提交代码
ai编程·trae
日升20 小时前
如何在 Chrome 136+ 用 browser-use 打开「带登录态」的浏览器
python·ai编程·trae
Goboy21 小时前
用 Trae 一键生成“水波纹按钮”,连 CSS 动画都不用自己写了!
ai编程·trae
Goboy21 小时前
用 Trae 打造创意 Loading 动画生成器:只需三个词,就能玩出花来!
ai编程·trae
Pitayafruit1 天前
还在配置规则文件和智能体?Roo Commander:预置90+领域专家,开箱即用的AI编程新体验
aigc·ai编程·trae
杭州胖敬亭2 天前
Trae终於有付费版本了,一分价钱一分货
前端·cursor·trae