内容提要
作者停更近三年后重启博客,将站点从Hexo迁移至Astro,并以Obsidian笔记库作为内容源。迁移由Claude Code等AI代理完成,保留原有极简主题与旧链接,Disqus留言转为只读存档,部署仍采用S3加CloudFront。作者借此反思AI时代写博客的意义,希望继续写属于自己的内容。
延伸解读
AI代理完成迁移的实践与审查
作者使用Claude Code等AI代理将博客从Hexo迁移到Astro,过程中AI代理编写约定、拆分任务,并设置硬规矩如不许改笔记库和旧站。审查由另一个代理复核,发现留言时间错误等问题。这展示了AI代理在复杂任务中的协作潜力,但也需人工监督关键决策,如留言处理和URL保留。
内容源与工作流的转变
博客文章不再与博客程序同仓库,改为直接从Obsidian笔记库读取,利用Astro的content loader扫描目录。这整合了个人知识库,支持wikilink等Obsidian写法,并实现快速预览。这种分离提升了内容管理的灵活性,但依赖笔记库的稳定性和git版本控制。
保留旧貌与留言存档的取舍
迁移遵循只移植不重新设计的原则,保留原极简主题和旧链接,Disqus留言转为只读存档,共268条。作者放弃Artalk因成本高,选择构建时生成静态留言。这平衡了历史延续与维护成本,但留言功能暂时关闭,未来或考虑serverless方案。
部署流程与历史问题修复
部署仍采用S3加CloudFront,同步脚本微调,上线后抽查页面与本地构建一致。迁移中修复了旧站日期时区错误和头图失效问题,统计从Universal Analytics换为GA4。这些改进提升了站点可靠性,但部署流程未大变,保持了技术栈的连续性。
Q&A
木匣子博客为什么从Hexo迁移到Astro?
作者认为Hexo已经略显老旧,而Astro是现代站点构建工具,注重Web最佳实践、性能和开发体验,且代码大多换成TypeScript,更符合当前技术栈。
新博客的内容源是如何管理的?
博客文章不再和博客程序放在同一个repo里,而是直接从作者的Obsidian笔记库读取。新写的日志由Astro的content loader扫描该目录发现并渲染成HTML,同时支持Obsidian的wikilink等写法。
迁移过程中如何保持原有主题和链接不变?
迁移规矩是只移植不重新设计。保留2019年自写的hexo-theme-mutoo极简主题,由Claude将EJS模板逐个改写成Astro组件,类名、结构、文案和SCSS数值都没动,jQuery交互改用原生TypeScript重写。旧链接通过Cloudfront前端Lambda@Edge重定向保持有效。
Disqus留言是如何处理的?
留言通道暂时关闭,构建时把Disqus导出的数据直接生成到页面里,变成只读的留言存档。现在有60个页面下挂着当年的留言,一共268条,作者自己的回复标上了「OP」。
这次迁移用了哪些AI工具?具体过程是怎样的?
主要使用Claude Code等AI代理。作者在Claude Code里写需求,AI先写约定、定规矩,然后拆给多个sub-agent分头做,再分视角Review,每条发现由另一个agent复核。整个过程中作者发了三十来条消息,没有写一行代码,验收在浏览器预览里进行。前后跑了36个sub-agent,用掉约741万token。
迁移后部署方式有变化吗?
部署还是2019年那一套S3 + Cloudfront,只是同步脚本改了一点。上线后抽查页面与本地构建逐字节一致。统计从Universal Analytics换成了GA4。
迁移过程中发现了哪些旧站问题?
发现带时区的日期会被hexo多平移一次,例如《写在2021年末》实际是12月3日凌晨两点写的,旧站显示12月2日;头图用的source.unsplash.com早已下线,旧站头图一直是坏的。迁移后改为构建前先解析图片地址。