因为经常做一些自动化的工作,所以我会写一些脚本,不管是用无头浏览器去获取一些网站的内容,还是利用apple script将Keynote转为视频。这些年陆陆续续的算下来手上的脚本已经有几十上百个。
但是它们散落在代码库的各个地方,每次用的时候都很难找到。更麻烦的是各个脚本之间使用的语言接口都不一样。有时候想把它们串起来用,还需要进行重写。
所以我想要不我就干脆写一个工具把这些脚本统一管理起来。
它可以是一个命令行工具,这样各种场景之间可以通过命令行传递参数。成为一个非常强大的胶水。
它又可以加载不同的模块,这样可以重用以前做好的功能。为了省事,我决定使用NPM来进行包管理,同时这个工具也因此成为一个完全开放的系统。
每回编写脚本的时候,分析参数和编写help都让人很烦躁,我们可以把它直接作为package的json的一部分。这样在命令行里面就可以直接输出帮助内容。
最终这个东西就成为了FXD。
它可以用过 npm 直接安装,然后通过 fxd <package> <method>
的形式调用。后来我还写了个客户端叫做FlowDeer,通过GUI来批量管理任务,同时启动一个本地API,可以把这些脚本作为AI的工具箱使用。
比如,fxd-app-fetch 可以抓取网页的主要内容并转为Markdown;fxd-app-search 可以搜索google,在ChatKuma中,它们可以作为LLM的Tool直接使用。
我为这个工具重写了大量之前用到的脚本,现在已经有小几十个应用可以使用。包括检测网页内容、自动发布微博和推文。而实际上编写的代码部分非常的少,一旦写完,命令行的帮助文档、客户端的界面都自动完成;同时还能直接被LLM调用。
几个月用下来,自我感觉不错,如果你也有类似需求的话,欢迎一起来写FXD的应用。
- 仓库:https://github.com/easychen/fxd
- 手册:https://ft07.com/fxd/
- 视频教程:编写一个自动推文发布应用 – https://www.bilibili.com/video/BV1bC41177W7/