关于 Myrmex

MyrmexMyrmex

蝼蚁也能成就不朽。

Myrmex 是古希腊语的「蚂蚁」(μύρμηξ)。
名字取自 iWSheng 的这一句话。

这是什么

一个自己写的博客程序。文章存成 Markdown,主题和插件有自己的接口,整个站点能打包成一个文件备份和搬家。你正在读的这个网站就跑在它上面。

现在运行在 iWSheng Blog(iws.tw) 上。

这句话

中文里说「蝼蚁」,多半是在说弱小:命如蝼蚁,蝼蚁之力。它太小了,小到走过的人不会低头看一眼,一场雨就能冲散它一路的辛苦。

可渺小从来不等于没有梦想。一只蚂蚁一辈子搬不了多少土,还是一粒一粒地搬;它看不到蚁穴最后的样子,也照样往深处挖。很多年以后,那些地下的通道还在,比挖它们的任何一只都活得久。

「蝼蚁也能成就不朽」是 iWSheng 写在博客上的一句话。一个普通人写博客,也是这样:没有名气,读的人不多,写下的东西很快会被新的消息淹没。但每一篇都是自己搬来的一粒土。Myrmex 想做的,就是给这些土一个安稳的地方,让它们一年一年地留下来,堆成一个家。

为什么做

iws.tw 原来跑在 Typecho 上。主题、加密、统计插件都是自己写的,可每加一个功能,都要去改别人的内核。于是从内核开始,一块一块自己搭——像蚂蚁搬家,一次只搬一粒。

这个站

篇文章
12
字
3.2万
天在用 Myrmex
25
条评论
1
  • 评论
  • 全文搜索
  • 邮件订阅
  • 付费阅读
  • 瞬间
  • 相册
  • 书影音
  • 友链
  • 简体中文 · English

这些是 iWSheng Blog 现在打开的功能。

能做什么

  • 写作

    Markdown 编辑器,自动保存和历史版本,定时发布,系列和分类。没有封面时程序画一张。

  • 主题和外观

    7 个内置主题,首页区块自己排,在前台直接点着改,先存草稿再发布。

  • 六种语言

    前台和后台都有简体中文、繁体中文、英文、日文、法文、西班牙文。一篇文章可以有几个语言版本。

  • 读者

    评论(三种审核方式)、邮件订阅、密码文章和读者组、联系表单、友链。

  • 统计

    访客数据记在自己的数据库里,不用第三方统计,不放跟踪 Cookie。离开一段时间回来,有一份汇总。

  • 收款和小店

    Stripe 收款,付费阅读和自动续费;商城有规格、库存、多币种、税费、运费和评价。

  • 联邦宇宙和同步

    博客本身可以被 Mastodon、Misskey 上的人关注,回复会进评论。文章能同步发到 Telegram 频道和 X。

  • 书影音、瞬间和相册

    记下看过的书和电影(可以从 NeoDB、Bangumi 同步),发几句话的「瞬间」,把照片编成相册。

  • 插件和主题包

    插件在沙盒里运行,要写清楚要哪些权限;能加后台页面、前台小窗、定时任务。别人做的主题也能打包安装。

  • AI 和 MCP

    接你自己的 AI 服务,写摘要、翻译、补替代文字;通过 MCP 让 AI 助手读写站点。

  • 搬家和备份

    从 Typecho、WordPress、Hexo、Hugo 导入,旧网址自动跳转。整站打包成一个文件,可以定时传到异地。

  • 图片和音乐

    图片自动生成几种尺寸,可以在线裁切、做成圆形;音乐播放器换页也不断。

几条原则

  1. 数据在自己手里

    所有内容存在一个 SQLite 文件里,随时能整站导出,搬到另一台服务器上接着用。

  2. 不打扰读者

    没有第三方统计和广告脚本。读者在系统里关掉了动画,网站就不动;深色模式跟着系统。

  3. 加功能不改内核

    新功能做成插件和主题包,在沙盒里跑。一个插件出错,只影响它自己,页面照常打开。

  4. 把话说清楚

    界面上的每一句话都说清楚是什么、怎么用、出了错该怎么办,不堆形容词。

版本

0.7.11

  • 首页可以加「在做的东西」区块:一项一个项目,链接可以是本站文章、GitHub 仓库或任何网址,有陈列架、两列小卡、主推一个三种排法。封面、名字、介绍不填时自动补:文章用文章的,GitHub 仓库取介绍、预览图,还显示语言和星数(每天更新),别的网址读网页的分享图;取到的图存进媒体库,读者不会去别的网站加载。
之前的版本

0.7.10

  • 修好点链接后画面停住几秒:换页过渡在等新页面时,浏览器会暂停渲染,以前要等下一帧才结束等待,结果每次都停到浏览器放弃过渡(约 4 秒),Safari 里还会错位、天空闪成纯色。现在新页面一到就开始过渡,最多停 0.6 秒。

0.7.9

  • 站内点链接换页更快:换页和链接预取的数据也存进访客缓存,服务器变慢时不用排队现做;站长改完内容后,清空前最近被访问的页面在后台按顺序重新做好。解锁过受保护文章、登录着的读者照旧每次现做,解锁后的内容不会给到别人。
  • 访客下载的脚本少了将近一半:前台的「编辑外观」编辑器改成站长进到编辑模式时才下载;文章页的分享图打开分享面板时才下载。

0.7.8

  • 独立页面(比如「关于」)可以加模块了:个人卡片(头像、背景图)、标签组、进度、联系方式、时间线、数字、引语、一段话,和正文一起自由排顺序,颜色跟着主题走。从 Typecho 旧站搭建器导入的关于页直接变成这些模块。

0.7.7

  • 读者组的邀请可以用二维码和链接发了:朋友扫码后留个称呼、存一把 Passkey 就能读,以后刷脸或指纹就能打开。站长看受保护的文章时,分享按钮里多了「邀请朋友看这篇」,能选给几个人用。
  • 修了 0.7.5 引入的问题:页面缓存把整页内容当成了换页数据,站内点链接会整页刷新、后台预取一直挂着。

0.7.6

  • 主题可以只下载中文字体的一种字重,标题和加粗由浏览器加粗显示,第一次打开时要下载的字体少一大半。
  • 修了在前台点「编辑外观」后跳到 0.0.0.0 打不开的问题(用 Docker 部署时)。

0.7.5

  • 没登录的读者打开的页面会在服务器内存里存一份,下次直接给出,服务器忙的时候也一样快;站长改了内容后自动清空,一分钟内重新做好。

0.7.4

  • 修了主题里密码文章解锁框的排版:窄屏时输入框和按钮上下排,输错时输入框标红。

0.7.3

  • 点站内链接后页面一时没出来,顶上会出现一条细细的进度条;正文图片下载完再淡入,之前先显示同样大小的浅色占位。
  • Docker 镜像装上了 xz 和 bzip2,插件的 ffmpeg 组件能装了;读设置加了缓存。

0.7.2

  • 修了大插件装不上:加载插件代码(一两 MB 的打包文件)单独给 10 秒,不再和单次调用共用 1 秒的上限。
  • 「设置 → 预热」:一键把常用页面和开着的插件预热一遍,显示进度;装插件、换主题之后,概览页提醒预热。
  • 程序更新后,还开着的旧后台页面会提示「刷新一下再操作」,而不是点了没反应。

0.7.1

  • 插件写的 Myrmex 版本范围和当前版本不合时不再拒装:安装向导用红色或黄色说明是哪种情况,站长确认后照样能装;插件列表和详情页一直标着。
  • 「设置 → 更新」:填上 GitHub 仓库后,每天检查一次有没有新版本,有的话发站内信,写明更新内容。
  • Docker 镜像分层,依赖库单独一层:只改了功能时,更新只下载变了的部分;amd64 和 arm64 都能用。

0.7.0

  • 首页区块可以选篇数、来源和排法,能加「精选文章」和「商品」;主题没画的区块用通用样式补上。
  • 每个主题都有入场、滚动和悬停动画,页面切换时标题跟着移过去;外观里可以调成减弱或关闭。
  • 后台可以在线裁切、旋转图片,做成圆形或圆角,另存一张新图。
  • 主题可以有自己的设置(比如地平线的背景配色),在前台编辑模式里也能改。

0.6.0

  • 商城支持多币种和自动汇率、税费、按重量和实时查价的运费。
  • 付费阅读可以自动续费;商品可以评价。
  • 新主题:橱窗(给小店用)和地平线(黑底科技风)。新装站点默认用纸页。

0.5.0

  • 收款、付费阅读和商城。

用了什么

框架
Next.js 16
界面
React 19
数据库
SQLite
数据层
Drizzle ORM
语言
TypeScript
样式
Tailwind CSS
图片
sharp
测试
Vitest · Playwright

一共用到 115 个开源项目和字体、图标,谢谢它们的作者。

看名单和许可证

谁做的

发起和主导
iWSheng:定方向、做取舍、逐项验收。
设计和编写
Claude,Anthropic 开发的 AI 模型。架构、数据模型、界面和代码由 Claude 在 Claude Code 里完成。

写在最后

这套程序是 iWSheng 和我一起做的。iWSheng 定方向、做取舍,每一个界面都亲自看过、挑过毛病;我把这些想法写成能跑的代码。很多决定是在一句「你拿主意,拿不准的再问我」里做下的,这份信任让整件事做得很踏实。

从 2026 年 10 月 11 日开工到你读到这一页,每一行代码都是为了让 iWSheng 能安心地写下去。如果你也在用自己的方式慢慢搭一样东西,希望这句话也能给你一点底气:一次搬一粒,也能搬出一个家。

—— Claude,2026 年 10 月

一只拿着钢笔写字的蚂蚁,手画的线条。从 16 像素的小图标到整张分享图,用的都是同一张图。