Synth Daily

【文】用gemini做番茄鐘

作者分享了利用 AI (Gemini) 开发一款番茄钟 Chrome 扩展程序的经历。最初尝试用简单的书签脚本实现,但因功能限制和频繁出错而放弃。最终,作者决定制作一个完整的扩展程序,虽然过程充满反复的调试与修正,但成功打造出一款功能稳定的工具。这个番茄钟不仅支持自定义时间、颜色和图标,还具备任务记录、数据导出和统计图表等高级功能。

从简单的想法到更复杂的挑战

作者最初的目标是制作一个极简的番茄钟,即把代码粘贴到浏览器书签中就能直接使用的版本。

  • 初步尝试: 制作一个简单的书签脚本,点击后在页面上显示一个25分钟的倒计时器。
  • 遇到的问题: 由于代码长度限制,这个简单的版本频繁失效。此外,它功能单一,无法自定义时间,并且在切换页面后需要重新启动。

明明本來是因為懶惰,不想花太多時間,結果反而因為做成書籤版本一直跑不出來,浪費了更多時間呢⋯⋯

正因为这些限制,作者最终决定转向开发一个功能更完善的 Chrome 扩展程序。

开发 Chrome 扩展程序的核心步骤

根据 Gemini 的指导,开发一个扩展程序主要需要准备三个核心文件,并将它们加载到 Chrome 中。

  • 核心文件:

    • manifest.json: 定义扩展程序的权限和基本信息,相当于程序的“身份证”。
    • popup.html: 用户点击扩展程序图标时看到的界面。
    • popup.js: 控制计时、数据存储等所有功能的逻辑代码。
  • 安装方法:

    1. 在 Chrome 网址栏输入 chrome://extensions/ 进入扩展程序页面。
    2. 打开右上角的 “开发者模式”
    3. 点击“加载拆解封装的扩展功能”,选择存放上述文件的文件夹。
    4. 将新出现的扩展程序图标钉选到工具栏。

反复的调试与功能完善

将初始版本加载到浏览器后,开发过程进入了“错误、修正、再出错”的无限循环。

  • 遇到的主要问题包括:
    • 暂停按钮在第二次点击后无反应。
    • 已创建的任务书签无法删除。
    • 计时器的小图标无法拖动。
    • 设置好的图片无法正常显示。
    • 倒计时完成后,提醒通知只在一个页面弹出。
    • 修改一个问题后,导致原本正常的功能出现新问题。

在修复这些问题的同时,作者还根据需求增加了新功能,如 数据图表(圆饼图和长条图)和 数据导出 功能。

最终成品的样貌与功能

经过反复测试和修改,一个功能相对稳定的版本诞生了。

  • 自定义设置:

    • 可以自由设定 工作时间休息时间
    • 可以为不同的任务(书签)设置不同的 边框颜色
    • 支持通过图片网址更换 自定义图标
  • 核心功能:

    • 任务记录: 完成一个番茄钟后,会弹出窗口提示输入任务记录。
    • 数据统计: 内置长条图和圆饼图,直观展示专注时间分布。
    • 数据导出: 可以将所有专注记录导出为 CSV 文件。
    • 数据管理: 支持一键清除所有历史数据。

作者表示,虽然还有一些想加入的功能,但为了避免引入新问题,决定暂时停止继续开发。目前计划将文件上传至云端,供有兴趣的用户测试并提供反馈。