从一个烦恼到开源项目:我用 AI 做了一个工作区管理工具

该产品之前的故事

最近因为工作的原因,常常是这样的状态:同时开着 VS Code、Chrome 十几个标签页、文件夹、文档…十几个页面或是窗口,可是打开时间久了之后,电脑性能就会降低,就需要我重启电脑,来使电脑性能提高点。可是重启后看着空空的桌面,我整个人都不好了😭

重新打开软件,调整窗口位置,找回之前的标签页…这种机械重复的工作真的让人抓狂,有时候还会漏掉打开的软件。这种主动关闭和打开的还好,至少自己还记得。要是电脑蓝屏/断电/周末自动重启,那都不知道自己当时打开了哪些页面,恢复起来真实让人抓狂。

我在想能不能设计一款软件来记录这些信息呢?能让我重启电脑之后自动恢复我的页面呢?

可是我对 WINDOWS 的一些 API 接口可是一无所知,我不可能自己硬写一个出来。我于是想到用 AI 来帮我试试,看能不能写出来。我这也是试着看的心态。因为我了解 AI 在网页的编写上有天然优势,像这种桌面端软件的开发还没尝试过,所以也只是试着的心态。

AI 结对编程

正好这段时间一直在研究 AI 辅助编程,就想着何不把这个项目作为实践?
整个过程算是磕磕碰碰的进行了下来。

技术选型

  • 最开始我期望这个软件能够跨平台运行,又能可交互,那就是有GUI窗口。这点我首先想到了 QT ,它支持跨平台运行。
  • 既然选择了QT,那么编程语言就是C++了。
  • 接着是代码管理手段,既然上了C++,又想跨平台,那么采用 CMAKE 进行配置管理又是必不可少的了
  • 那么编译器的选择,我就选择了 windows 端 C++ 编程最常用的 Visual Studio 了。

在技术上确定了之后,我接着考虑产品的设计形态。

需求挖掘 && 产品设计

我只有一个最初的需求,就是期望我桌面上的窗口和开启的软件信息能够自动保存,然后电脑重启之后能够恢复之前的页面。

我理解只有这一条需求,是做不出一个完整产品的。

此时,我想着,我把这条需求喂给 AI ,它又将给我什么结果呢?

结果 AI 直接返回给我一份完整的基于该需求同时扩展的产品设计手册,修改完善之后如下:

**1. 产品概述**

**1.1 产品简介**

Workspace Saver 是一款桌面应用程序,旨在解决用户在重启电脑后需要手动重新打开大量应用程序、文件和网页的痛点。它通过在系统关机或重启前自动记录当前的桌面状态,并在开机后提供可选的恢复功能,帮助用户快速回到之前的工作环境,从而节省时间、提高效率,并减少认知负担。

**1.2 产品愿景**

成为用户信赖的桌面效率工具,让用户不再为频繁重启电脑而烦恼,享受无缝衔接的工作体验。

**1.3 产品目标**

- 提供流畅、稳定、可靠的桌面状态记录和恢复功能。
- 支持主流操作系统(Windows 和 macOS)。
- 兼容常用的办公软件、文件类型和浏览器。
- 提供简单易用的用户界面和操作流程。
- 尽可能减少对系统资源的占用和对用户体验的影响。

**2. 目标用户**

**2.1 主要用户群体**

- 需要长时间使用电脑进行工作的办公人员,如程序员、设计师、数据分析师、文案编辑、行政人员等。
- 经常需要打开多个应用程序、文件和网页进行工作的用户。
- 电脑配置较低,需要频繁重启以维持系统流畅性的用户。

**2.2 用户画像示例**

- **李明,30岁,软件工程师:** 每天需要打开多个开发工具(IDE、终端、文档)、浏览器(多个网页)、通讯工具等。他经常需要重启电脑来解决卡顿问题,每次重启后都需要花费大量时间重新打开这些软件,感到非常烦躁。
- **张丽,25岁,平面设计师:** 经常需要同时打开 Photoshop、Illustrator、多个设计素材文件夹以及浏览器(查找灵感、下载素材)。她希望能够在重启电脑后快速回到之前的工作状态,继续进行设计工作。

**3. 功能需求**

**3.1 核心功能**

- **状态记录:**
    - **记录范围:**
        - 本地文件夹的打开状态及路径
        - 特定应用程序的打开状态(支持列表见附录 A)
        - 特定类型文件的打开状态(支持列表见附录 B)
        - 主流浏览器的打开状态及 URL 列表(支持列表见附录 C)
        - 以上内容打开的窗口位置和大小
    - **触发机制:**
        - 系统关机或重启前自动触发
        - (可选)每隔一段时间进行静默备份 (可选功能,防止意外断电或其他情况下的程序异常终止)
    - **记录方式:**
        - 异步记录,避免阻塞系统关机/重启流程。
        - 增量记录,只记录相对于上次记录发生变化的部分。
        - 数据压缩,减少存储空间占用。
- **状态恢复:**
    - **触发机制:** 系统开机后自启动。
    - **恢复界面:**
        - 非模态对话框形式
        - 提示文本:"检测到上次关机前的工作区状态,是否需要恢复?"
        - 待恢复项列表(带复选框)
        - 默认全选所有项
        - 提供"全选/取消全选"按钮
        - "确认"和"取消"按钮
    - **操作场景:**
        - 直接点"确认":恢复所有默认勾选项
        - 点"取消全选"后点"确认":不恢复任何项
        - 手动选择部分项后点"确认":仅恢复选中项
        - 点"取消":不做任何恢复
    - **异常处理:**
        - 恢复过程采用非阻塞方式
        - 单项恢复失败不影响其他项的恢复
        - 恢复完成后统计失败项
        - 通过非模态对话框提示用户失败项
        - 提供失败项的手动恢复位置和方法说明

**3.2 辅助功能**

- **设置选项:**
    - 开机自启动开关。
    - 恢复提示框设置(自动弹出、手动触发)。
    - 自定义需要记录的应用程序和文件类型列表(可选功能,高级用户使用)。
    - 设置定时备份时间间隔。(可选功能,防止意外断电或其他情况下的程序异常终止)
- **异常处理:**
    - 恢复失败提示:对恢复失败的程序或文件,弹出非模态提示框告知用户,并提供手动恢复建议。
    - 日志记录:记录软件运行过程中的错误信息,方便用户反馈和开发者调试。
- **帮助文档:** 提供详细的使用说明和常见问题解答。

**4. 非功能需求**

- **性能:**
    - 记录和恢复过程快速高效,不明显影响用户体验。
    - 软件本身占用最少的系统资源(CPU、内存、磁盘)。
- **可靠性:**
    - 准确地记录和恢复桌面状态,不出现错误或丢失数据。
    - 在各种情况下都能稳定运行,不会崩溃或导致系统不稳定。
- **安全性:**
    - 记录的数据仅存储在本地,恢复后即销毁。
    - 不收集用户的任何个人数据。
- **兼容性:**
    - 支持 Windows 10 及以上版本。
    - 支持 macOS 10.15 及以上版本。
    - 兼容常用的办公软件、文件类型和浏览器(详见附录)。
- **易用性:**
    - 软件操作简单,无需复杂的设置或配置。
    - 用户界面简洁直观,易于理解和使用。
- **可维护性:**
    - 代码结构清晰,易于维护和扩展。
    - 提供完善的日志记录和错误处理机制。

**5. 技术架构**

- **编程语言:** 优先考虑使用跨平台的开发语言和框架,例如:
    - **Windows:** C# + .NET (WPF/WinForms) 或 C++ + Qt
    - **macOS:** Swift + Cocoa 或 C++ + Qt
    - **跨平台:** Electron (JavaScript + Node.js),但需要注意其性能问题
- **数据存储:**
    - 使用轻量级的本地数据库或文件格式,如 SQLite、JSON 或 XML。
- **系统交互:**
    - **Windows:** 使用 Windows API 来获取和设置窗口信息、进程信息、监听系统事件等。
    - **macOS:** 使用 AppleScript 或 Cocoa API 来实现类似的功能。
- **架构模式:**
    - 采用 MVVM 或 MVC 模式,使代码结构清晰,易于维护和测试。

**6. 用户界面设计**

- **设计原则:**
    - 简洁:界面元素清晰明了,避免冗余信息。
    - 直观:操作流程符合用户直觉,易于上手。
    - 一致:软件内部的视觉风格和操作逻辑保持一致。
- **主要界面:**
    - **恢复清单窗口:**
        - 列表形式展示待恢复的项目,包括图标、名称、路径/URL。
        - 提供“全选/取消全选”按钮。
        - 提供“确定”和“取消”按钮。
    - **设置窗口:**
        - 开机自启动开关。
        - 恢复提示框设置。
        - 自定义记录列表(可选)。
    - **提示框:**
        - 非模态提示框,用于告知用户恢复失败的项目和原因。

**7. 开发计划**

- **阶段一:MVP(最小可行产品)**
    - **功能:** 记录和恢复本地文件夹、Word 文档和 Chrome 网页的打开状态和窗口位置。
    - **平台:** 优先支持 Windows 平台。
    - **时间:** 预计 X 个月。
- **阶段二:完善功能**
    - **功能:** 支持更多常用软件、文件类型和浏览器。增加系统托盘图标和常用操作。优化性能和稳定性。
    - **平台:** 支持 macOS 平台。
    - **时间:** 预计 X 个月。
- **阶段三:高级功能**
    - **功能:** 支持定时备份,支持自定义记录列表。
    - **时间:** 预计 X 个月。
- **阶段四:用户体验优化**
    - **功能优化:**
        - 优化系统托盘菜单响应速度
        - 改进托盘图标的交互体验
        - 优化菜单弹出的流畅度
    - **性能优化:**
        - 预加载菜单资源
        - 优化事件处理机制
        - 减少不必要的信号-槽连接
    - **时间:** 预计 X 个月。

**8. 未来发展计划**

- **云同步:** 支持将记录的数据同步到云端,实现跨设备恢复。
- **智能推荐:** 基于用户的使用习惯,智能推荐需要记录和恢复的项目。
- **与其他软件集成:** 与常用的效率工具集成,提供更完整的解决方案。

**9. 附录**

**附录 A:支持的应用程序列表(持续更新)**

| 类别 | 应用程序 |
| --- | --- |
| 办公软件 | Microsoft Office (Word, Excel, PowerPoint), WPS Office |
| 浏览器 | Chrome, Edge, Firefox |
| 通讯工具 | 微信,钉钉,企业微信 |
| 文本编辑器 | VSCode, Sublime Text |
| ..... | ..... |

**附录 B:支持的文件类型列表(持续更新)**

| 文件类型 | 扩展名 |
| --- | --- |
| 文档 | .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .pdf |
| 图片 | .jpg, .jpeg, .png, .gif |
| 音频 | .mp3, .wav, .flac |
| 视频 | .mp4, .avi, .mkv |
| ... | ... |

**附录 C:支持的浏览器列表(持续更新)**

浏览器

---

Chrome

---

Edge

---

Firefox

---

**10. 总结**

Workspace Saver 是一款旨在解决用户痛点的实用工具,具有广阔的市场前景。通过精心的设计和开发,我们相信能够打造一款深受用户喜爱的优秀产品。 这份产品设计书将作为我们开发的指导,并在开发过程中不断完善和更新。

代码开发

代码开发部分,我采用用的是 Cursor , 将上述的产品设计手册,和需要的技术栈都喂给它,然后 Cursor 就能基于该设计实施编写代码了。

编码的过程就在此省略了。每个人的使用 AI 能力不同,编码的完整度也会不一样,但是限定和清晰化需求的情况下,AI 的完成度还是很高的。

有一点得注意:就是 AI 会过度理解你的意思,或过度修改代码,这块确实挺烦,不过每次提最小化的需求和进行相应的限定,能够很好的解决这些问题。

然后就是漫长的 bug 修复时间。

磕磕碰碰这个产品算是完成了。

产品介绍

就这样,WorkspaceSaver 诞生了。它能:

  • 默默在后台保存你的窗口布局,就像 Word 的自动保存
  • 电脑重启后,一键恢复之前的工作环境
  • 支持多显示器,再也不用记住哪个窗口放哪个屏幕
  • 所有数据都存本地,对隐私安全很重视

通常情况下,双击该软件,该软件会自动在注册表中进行注册,这样有助于下次电脑重启时能够自启动。然后它隐藏在托盘中。
请添加图片描述
当鼠标单击(左击,右击都行)它时,能看到它的详细相关设置:

请添加图片描述
这时候该程序会默认在后台运行,通过你设置(或者默认设置)的时间间隔来记录当前界面上的情况。

当电脑主动或意外关闭之后,然后电脑被重启启动,该软件会自启动,然后通过窗口的形式列出上次电脑关闭之前的工作空间情况。由你有选择的进行恢复。

请添加图片描述
当你确认无误之后,点击 Restore ,即可恢复页面。

有趣的发现

开发过程中最大的感悟是:

  1. AI 真的可以成为开发者的好搭档,关键是要学会如何提问和配合
  2. 做工具类产品,解决自己的痛点往往就是解决他人的痛点
  3. 简单可靠比功能堆砌更重要

开源地址

该项目已经开源,介绍页如下:https://workspace-saver.vercel.app

请添加图片描述
欢迎各位老铁试用,提建议,一起改进~

如果觉得有用请给个星星⭐,这是对我最大的鼓励!

一个彩蛋

最后有个彩蛋告诉大家:这个介绍页本身也是我用 AI 生成的。欢迎交流。项目地址是:https://github.com/lemoabc/WorkspaceSaver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值