Simon Willison用手机+Claude Code为博客添加野生动物观察功能

开发者Simon Willison用Claude Code在手机上为博客开发了野生动物观察记录功能
知名开发者Simon Willison使用Claude Code网页版,直接在手机上为个人博客开发了「Sightings」功能,将iNaturalist上的野生动物观察记录整合到博客中。该功能基于其Beats内容聚合系统,支持搜索、RSS订阅和分页浏览,并回溯导入了十年历史数据。这一案例展示了AI编程工具正从效率提升走向开发场景的根本性拓展,同时也反映了AI降低个人网站开发门槛、推动个人博客复兴的趋势。
开发者用AI编程工具在手机上构建博客新功能
Simon Willison——知名开发者、Datasette 创始人——最近分享了一个有趣的项目:他用 Claude Code 的网页版,直接在手机上为自己的博客添加了一个「Sightings(观察记录)」功能,将他在 iNaturalist 上分享的野生动物照片同步到个人博客中。
Simon Willison 在开发者社区中有着广泛的影响力。他是 Python Web 框架 Django 的早期核心贡献者之一,曾参与 Django 在英国《卫报》(The Guardian)新闻编辑室的早期开发工作。他创建的 Datasette 是一个开源的数据探索和发布工具,能够将任何 SQLite 数据库即时转化为可交互的 Web 界面和 API,被广泛应用于数据新闻、开放数据发布和快速原型开发领域。近年来,Simon 成为 AI 辅助编程领域最活跃的实践者和记录者之一,他的博客几乎是追踪 LLM 工具在实际开发中应用的必读资源。
这个看似简单的功能背后,折射出 AI 辅助编程工具正在改变开发者的工作方式——不仅是效率的提升,更是开发场景的根本性拓展。
从新相机到新功能:项目的起因
Simon 最近入手了一台 Canon R6 Mark II 相机,开始大量拍摄鸟类和野生动物照片。Canon R6 Mark II 是佳能于 2022 年底发布的全画幅无反相机,搭载了 2420 万像素传感器和 DIGIC X 图像处理器,最高支持每秒 40 张的电子快门连拍速度,并配备了基于深度学习的被摄体检测自动对焦系统,能够识别并追踪人物、动物(包括鸟类的眼睛、头部和身体)以及车辆等目标。这些特性使其成为野生动物和鸟类摄影爱好者的热门选择——高速连拍能捕捉飞行中的鸟类瞬间,而动物眼部对焦则大幅提升了出片率。
他将最好的作品分享到 iNaturalist——一个全球性的自然观察社区平台。iNaturalist 由加州科学院(California Academy of Sciences)和国家地理学会(National Geographic Society)联合运营,拥有超过数百万注册用户,累计记录了数十亿条生物观察数据。用户上传的每一张照片都会经过社区成员和 AI 模型的双重鉴定:平台内置的计算机视觉模型可以自动建议物种名称,而社区中的分类学专家则会进一步确认或修正这些识别结果。当一条观察记录获得足够的社区共识后,它会被标记为「研究级别」(Research Grade),这些数据随后会被同步到全球生物多样性信息网络(GBIF)等科学数据库中,成为真正的公民科学贡献。iNaturalist 还提供了完善的 API 接口,这也是 Simon 能够将数据回流到个人博客的技术基础。
在完成原型验证后,Simon 决定将这些内容整合到自己的博客系统中。
新功能的核心是一个「Sightings」页面,展示他的野生动物观察记录,包括:
- 按时间排序的观察列表
- 每次观察包含的物种名称和照片
- 支持搜索、RSS 订阅和分页浏览
- 总计回溯导入了超过十年的 iNaturalist 数据
一个有趣的细节:由于回溯了历史数据,用户现在可以在他的博客中搜索「lemur」,就能看到他 2019 年在马达加斯加拍摄的狐猴照片。
技术实现:基于Beats系统的内容聚合架构
这个功能并非从零构建,而是基于 Simon 此前开发的 Beats 系统——一个用于聚合外部内容的博客扩展框架。Beats 系统的设计理念是将来自不同平台的内容统一纳入博客的内容体系中。
在传统的博客和内容管理系统(CMS)中,内容类型通常是预定义的——文章、页面、评论等。如果要添加新的内容形式(比如书签、短笔记或观察记录),往往需要修改数据库模型、创建新的管理界面和前端模板,工作量不小。Beats 系统的巧妙之处在于它提供了一个通用的内容聚合层:每一种外部内容源(Simon 称之为一个「Beat」)都可以通过统一的接口接入博客系统,自动获得时间线展示、归档、搜索索引和 RSS 输出等基础能力。这种架构类似于 WordPress 的自定义文章类型(Custom Post Types)机制,但更加轻量且专注于外部内容的聚合场景。开发者只需要定义数据的获取方式和展示模板,其余的基础设施由 Beats 框架统一处理。
通过这次扩展,Sightings 与博客的其他内容形式实现了完全整合:
- 首页展示:观察记录会出现在博客首页的内容流中
- 日期归档:按日期归档页面中可以看到对应日期的观察记录
- 站内搜索:所有观察记录都被索引,支持全文搜索
- RSS 订阅:提供独立的 RSS feed
RSS(Really Simple Syndication)是一种诞生于 1999 年的 Web 内容分发格式,它允许用户通过 RSS 阅读器(如 Feedly、NetNewsWire、Miniflux 等)订阅网站更新,而无需反复访问网站本身。尽管在社交媒体崛起的年代 RSS 一度被认为已经「过时」,但近年来随着用户对算法推荐的疲劳和对信息自主权的重视,RSS 正在经历显著的回归。在独立博客和技术社区中,提供 RSS feed 几乎是一种基本礼仪,它代表着对开放 Web 和用户选择权的尊重。Simon 为 Sightings 功能提供独立的 RSS feed,意味着读者可以单独订阅他的野生动物观察记录,而不必关注博客的全部内容。
这种「将外部平台内容回流到个人博客」的做法,体现了 IndieWeb 运动中「POSSE」(Publish on your Own Site, Syndicate Elsewhere)理念的反向实践——从各处聚合内容回自己的领地。
IndieWeb 是一个始于 2011 年的草根技术运动,其核心主张是:个人应该拥有自己的在线身份和内容,而不是将一切托付给大型平台。IndieWeb 社区提出了一系列技术标准和实践原则,其中最知名的就是 POSSE——先在自己的网站上发布内容,然后再将其分发(syndicate)到 Twitter、Mastodon、Medium 等第三方平台。这样即使某个平台关闭或改变政策,你的内容依然安全地保存在自己的服务器上。Simon 的做法实际上更接近 IndieWeb 中的另一个概念——PESOS(Publish Elsewhere, Syndicate to your Own Site),即内容首先发布在外部平台(iNaturalist),然后回流聚合到个人网站。这两种策略并不矛盾,它们共同服务于同一个目标:让个人网站成为你所有数字内容的权威来源和永久归档。
在手机上用Claude Code完成全部开发
最值得关注的是开发方式本身。Simon 明确表示,这个功能是在手机上使用 Claude Code for web 完成的。他在 GitHub 上公开了对应的 PR #668 和使用的提示词。
Claude Code 是 Anthropic 推出的一款 agentic 编程工具。与传统的代码补全工具(如早期的 GitHub Copilot 主要在 IDE 中提供行级或函数级的代码建议)不同,Claude Code 采用的是「代理式」(agentic)工作模式:开发者用自然语言描述需求或任务,AI 会自主规划执行步骤,读取项目中的相关文件以理解代码库上下文,编写和修改代码,运行测试,甚至直接创建 Git 提交和 Pull Request。它不仅仅是一个「更聪明的自动补全」,而更像是一个能够理解整个项目结构并独立执行开发任务的 AI 编程助手。Claude Code 最初以命令行工具的形式发布,后来推出了网页版(Claude Code for web),这使得它可以在任何有浏览器的设备上使用——包括手机。正是这一点让 Simon 得以在手机上完成整个开发流程。
这意味着整个开发流程——从需求描述、代码生成到提交 PR——都在移动设备上通过与 AI 对话完成。这不是一个玩具项目,而是一个涉及数据模型扩展、API 集成、前端展示和搜索索引的完整功能。
AI辅助编程的场景突破
传统的软件开发高度依赖桌面环境:IDE、终端、多显示器。而 Claude Code 这类工具正在打破这个限制。当开发者可以用自然语言描述需求,AI 负责将其转化为可运行的代码时,输入设备的限制就不再是瓶颈。
这种转变的意义需要放在 AI 辅助编程工具的整体发展脉络中理解。2021 年 GitHub Copilot 的发布标志着 AI 编程工具进入主流视野,它基于 OpenAI 的 Codex 模型,在 IDE 中提供实时代码建议。此后,这一领域迅速演化:Cursor 将 AI 能力深度集成到代码编辑器中,支持跨文件的上下文理解和代码重构;Windsurf(原 Codeium)提供了类似的智能编辑体验;Replit 的 Ghostwriter 和 Google 的 Gemini Code Assist 也在各自的生态中发力。而 Claude Code 代表的 agentic coding 方向则更进一步——它不再要求开发者逐行审查和接受建议,而是让 AI 自主完成从理解需求到交付代码的完整链路。这种从「辅助」到「代理」的跃迁,正是让「在手机上完成完整功能开发」成为可能的关键技术转折点。
这对开发者日常工作流的影响是深远的:
- 碎片化时间利用:通勤、等待时都可以推进项目
- 降低上下文切换成本:灵感来了就能立即动手
- 原型验证加速:从想法到可工作的代码,周期大幅缩短
个人博客的复兴:AI降低了自建数字空间的门槛
Simon Willison 的这个项目也反映了一个更大的趋势:在 AI 编程工具的加持下,个人博客正在经历某种复兴。过去,维护一个功能丰富的个人网站需要大量的开发时间,这让很多人转向了第三方平台。但当 AI 能够大幅降低开发成本时,「拥有自己的数字空间」变得更加可行。
这一趋势与更广泛的互联网文化转向相呼应。过去十年间,内容创作者和普通用户越来越意识到依赖中心化平台的风险:Twitter(现 X)的政策剧变、Medium 不断调整的付费墙策略、Reddit 的 API 定价争议、以及各平台算法对内容可见性的不透明控制,都在推动人们重新审视「数字主权」的价值。与此同时,静态网站生成器(如 Hugo、Astro、11ty)的成熟、Vercel 和 Netlify 等平台提供的免费托管服务,以及现在 AI 编程工具的加入,共同将搭建和维护个人网站的技术门槛降到了历史最低点。Simon 的案例尤其具有说服力:他不仅在维护一个博客,而是在构建一个功能完备的个人数字平台——集成了文章发布、链接收藏、野生动物观察记录等多种内容形式,并且这一切的增量开发可以在手机上通过与 AI 对话完成。
从技术博客到野生动物摄影画廊,从搜索引擎到 RSS 聚合器——一个个人博客可以成为真正的数字家园,而 Claude Code 这样的 AI 编程工具让这一切的实现门槛大幅降低。
核心要点
- Simon Willison 使用 Claude Code 网页版在手机上为博客开发了野生动物观察记录(Sightings)功能
- 该功能基于其 Beats 内容聚合系统,将 iNaturalist 上的观察数据完整整合到博客的首页、归档和搜索中
- 回溯导入了超过十年的 iNaturalist 历史数据,实现了个人内容的统一管理
- 在手机上通过 AI 对话完成完整功能开发,展示了 AI 编程工具对开发场景的根本性拓展
- 体现了 AI 工具降低个人网站开发门槛、推动个人博客复兴的趋势
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验
Cursor工程师Eric分享AI软件工厂构建实战:从自动化六层级、护栏设计、并行Agent管理到规模化扩展,详解如何用多Agent协作实现7×24小时高效软件开发。