用 AI 重新折腾 Firekylin

2026-11-07
2692 字
7 分钟阅读时长
Featured Image

看过我之前文章的同学应该知道,我和 Firekylin 的缘分已经很久了。2016 年我还写过一篇《PMBlog 转火麒麟》,当时为了搬博客,专门写了个导出插件。后来博客又折腾过其它方案,不过兜兜转转,这次我又把 Firekylin 拿出来折腾了一遍。

区别在于,这次有 AI 一起干活了。

本来是个积累了不少历史包袱的老项目,这一轮却从基础库、后台组件,一路改到了模板引擎和插件体系。折腾下来最大的感受就是:AI 真的太强了。

Firekylin 默认主题首页

本地示例站点的默认主题首页,使用展示用文章。

老项目升级,AI 比我想象中能干

Firekylin 是一个有些年头的项目,里面不少基础库也跟着停留在了很多年前。拿 React 来说,这次直接从 0.15 升到了 React 19,原来的 Class Component 也一起改成了 Function Component。其它基础库的升级同样跨过了好几个大版本。

这种升级如果自己做,光是看各个版本的变化、找替代写法、修改已有代码,就得花不少工夫。然而交给 AI 之后,整个过程比我想象中顺畅得多。我主要需要做的事情,就是把需求描述清楚,再做一些简单的 Code Review。

原本看着觉得“这得改到什么时候”的老代码,AI 改起来居然没什么压力。这种感觉还是挺奇妙的。

模板引擎直接换了一套

其中让我印象最深的是模板引擎的换血。

Firekylin 原来使用的是 Nunjucks,这次换成了 Eta。换一个依赖只是开始,真正麻烦的是主题里已有的模板也要跟着改。原来取数据、做判断、遍历列表的写法,都得转换成新引擎支持的形式。

结果这种事情刚好是 AI 特别擅长的。把迁移需求说清楚之后,它就能把原来的主题模板翻译成 Eta 的写法,整个过程相当丝滑。

以前碰到这种改造,我可能光想想要改多少文件就已经开始头疼了。现在发现,只要目标明确,这类大量重复、又需要理解上下文的修改,AI 做起来是真的轻松。

参考一个项目,不用先把它研究透

另一个印象比较深的事情,是插件体系。

我希望 Firekylin 能有一套更完整的插件扩展能力,于是让 AI 参考 Typecho 的插件体系,结合 Firekylin 的现状给出改造方案。

有意思的地方在于,我并不需要先把 Typecho 的具体实现研究得非常透彻,再逐项告诉 AI 应该怎么写。把想参考的方向和需要解决的问题说明白,它就能去理解相关实现,给出一套架构比较清晰、又能结合 Firekylin 当前情况的方案。

参考别人的思路,再结合自己项目做取舍,这件事情以前也能做,只是中间需要花很多时间去阅读和理解。现在 AI 能帮忙把这部分工作一起做掉了。

当然,改造一大,代码量也会跟着上来。如果一次给出一个巨大的 PR,Review 起来还是挺费劲的。这时候可以让 AI 把改造分成几个步骤,提交多个 PR,我们再逐个 Review、合并。

需求拆清楚,改造分步走,每次看一块。整个过程就没有一开始想象得那么吓人了。

顺便把 Firekylin 和 Waline 接到了一起

这次还有一件挺开心的事情,就是终于把我自己的两个项目,Firekylin 和 Waline,接到一起了。

Firekylin 之前本身没有评论管理能力,一直用的是第三方评论服务。文章在博客里写,评论则交给另外一套服务处理。这次改造之后,Firekylin 后台也能直接查看、回复和管理评论了。原生评论管理,算是这一轮比较直观的变化。

既然我自己就在维护 Waline,那评论能力当然可以从这里接过来。不过,要做的也不只是给文章页挂一个评论框。我们希望评论的业务能力能复用,数据和管理流程又能融入 Firekylin 本身。

其实 Waline 之前就有用户提出过,希望把评论能力接入自己的系统。所以在能力设计上,我们一直保持着开放,并不是只能按一套固定的部署方式来使用。

为了进一步解耦,这次又把评论的核心业务逻辑抽象成了 @waline/core。第三方系统需要接入时,可以直接复用这部分业务逻辑,再把它需要的依赖接好。

比如数据怎么存、用户身份怎么识别、Markdown 怎么渲染,这些事情由接入方提供对应实现。评论核心不用跟某一个系统绑死,接入方也不用重新写一遍评论业务。放到 Firekylin 里,就是把这些依赖接到它已有的数据模型和服务上。

而这部分工作,正好也是 AI 擅长的事情。两边的职责和接口明确之后,让 AI 帮忙梳理需要哪些依赖,再结合 Firekylin 的现有实现逐项适配,就能把两个项目之间的连接补起来。

这和前面迁移模板有点相似:需要理解两边的上下文,也有不少具体的转换和对接工作。目标说清楚之后,AI 能把这些事情一起推进,不用我自己挨个接口从头写起。

Firekylin 原生评论管理后台 隔离示例站点的实际评论管理界面,图中为演示评论。可以筛选待审核和垃圾评论,也可以直接回复、编辑和删除。

对我来说,这件事情还有点额外的乐趣。两个各自维护了很久的项目,终于通过一层清晰的核心接口连到了一起。Firekylin 获得了原生评论管理,Waline 的核心能力也更方便被其它系统复用了。

我需要做的事情也变了

这次改造让我感受比较明显的是,很多以前要自己逐个文件修改的事情,现在可以交给 AI 去完成了。

比如把 Class Component 改成 Function Component,把老模板转换成 Eta,或者梳理一套现有项目里的扩展接口。这些事情当然各有细节,但只要把目标和需求描述清楚,AI 就能把大量具体工作接过去。

我主要做的事情,变成了说明白想要什么,再看看它改得是不是那么回事。碰到范围比较大的改造,就让它拆开提交,每次 Review 一部分。

这里说的简单 Code Review,也不是完全不看代码了。需求有没有理解偏、方案是不是适合 Firekylin、改完后的行为是不是自己想要的,还是得自己判断。只是不用每一行都亲手写,整个事情就轻松了很多。

以前想给老项目做一次大升级,光是列出待办事项可能就不太想动了。这次真正做下来,发现这些积攒了很久的改造,已经没有想象中那么难推进了。

然后,让博客本身也能用上 AI

用 AI 升级完程序之后,我又把 AI 接进了博客本身。

现在可以在编辑器里生成标题、摘要,逐处审阅修改;也可以在后台直接对话,让 AI 调用工具查文章、整理草稿。再通过 MCP,自己常用的 AI 客户端也能连接博客。

这些功能具体怎么配置、怎么用,我放到了另一篇《Firekylin:一个 AI 友好的博客平台》里,配了实际操作的截图和录屏。Eta 主题市场和基于 Widget 的扩展体系,也一起介绍。

这篇就先记一下这次折腾的感受。对我来说,AI 带来的变化很具体:一个放了很久、知道应该改却迟迟没动的项目,现在终于能继续往前走了。

感兴趣的同学可以看看 Firekylin 的源码,也欢迎一起折腾。

本文作者lizheming

发布于 2026-11-07,最后更新于 2026-11-07

Comments

评论加载中…