Try AI
本文记录了一些我借助 Agent 创建/修改的小工具/小项目。开发这些事物主要是为了方便我自己的使用和满足探索欲。
PAM
众也许不周知,我是一个 Linux 用户,除了偶尔使用 Windows 制作 slides 以外,平时的工作和学习环境都是 Linux。
某天突发奇想能否玩一玩 PAM, 实现我人在身边时能够免密解锁。
这里先介绍一下: PAM 是 Pluggable Authentication Modules 的缩写,是 Linux 系统中一种灵活的认证机制。它允许系统管理员通过配置文件来定义不同的认证方式和策略,从而实现对用户身份验证的控制。
只需要编写/修改一下 KDE login 对应的 PAM 配置,就可以改变认证的逻辑,比如是否需要密码、增加特定认证方式等。
然后,我又让 LLM 教会了我如何写 Shell 脚本判断蓝牙耳机(或其他合适的设备)是否和笔记本连接了。
最终我实现了在 KDE 解锁时,若耳机在连接状态下则无需输入密码。我还纠结过要不要给 sudo 也加入这个逻辑,后来想想还是算了,万一某天 Agent 调用 sudo ,我并不希望直接静默通过。
桌面 TODO List
在 KDE Plasma 桌面上,原生支持添加小部件。但是开发小部件的人并不多,很多功能找不到。
曾经在我赶稿前某天颓废时,我写了一个倒计时小部件,它会显示距离截止日期还有多少时间。 当时我还不知道 Agent 的存在,完全是对照着别的小部件的代码和文档,用 LLM 辅助编写。 (其实很好写,只要了解简单 QML 的语法即可)
这几天我忽然想要一个在桌面上显示 TODO List 的小部件,并搜到了一个现成的。 只是安装下来之后发现它的界面实在不符合我的审美,而且有些局限性,比如只能添加一行文本。
于是我直接让 Agent 帮我改代码,我只需要清晰地描述我的需求,在有显示问题的时候告诉它显示的效果和预期效果的区别,它就能帮我修改代码,最终实现了一个符合我审美的 TODO List 小部件。
Calendar Sync
在 KDE Plasma 桌面中,时间小部件可以点击进入日历界面,其中可以显示一些事件/日程信息。 在学习生活中,我现在广泛依赖邮箱的日历功能来管理我的日程,因此我希望能够将邮箱日历中的事件同步到 KDE 的日历界面中。 我使用的邮箱软件是 Thunderbird。
通过探索,我发现 Thunderbird 的日历信息是直接保存在若干 SQLite 数据库文件,因此数据源的问题已经解决,只需要考虑如何将这些数据同步到 KDE 的日历界面中。
我直接clone了 KDE 相关项目的源代码,然后告诉 Agent 我的目的,让它帮我分析代码。没多久 Agent 就找到了相关接口,告诉我需要编写一个插件,编译为动态链接库放到特定文件夹下就可以被 KDE 加载。
后面的流程就非常顺利了,直接让 Agent 实现,经过了几轮迭代就完成了。
截至现在,功能已经实现,但是数据似乎不太全,还没开始具体 debug。
Blog Theme
众所周知,写前端是一项有些枯燥的事情,但是我又总是看着我的博客主题不够好看。 于是我就开始使用 Agent 来帮我修改/美化我的博客主题。
我还是一个很古法编程的人…… 但是不得不承认 Agent 写代码确实非常方便。 好在对于 CSS 我并不会有太强的代码强迫症,因此还是很快乐地使用。
我首先尝试了一次,直接使用了一个很模糊的指令,让它自己去尝试优化外观,结果是它猛猛改文件,把样式完全改乱了。 最终效果确实脱胎换骨…… 但是我还是觉得太过激进。在这个过程中,它因为自己的修改,产生了新的bug,但是它并没有定位到问题源头,而是用了很多冗余且奇怪的修复。
最终我还是回退重来了一遍。给它更明确的一个个任务,比如将某两个模块的公共排版逻辑提取到上层文件、将某一些硬编码改为可配置项等等。 这样的任务它完成的还是非常不错的,基本上我再浏览一遍它的修改就接受了。
最终借助 Agent 的帮助,将主题的代码精简很多,并将学术主页与博客页面进行了整合,文本的样式也得到了很多优化(LLM经验丰富啊!)。