Simon Willison用手机和Claude Code为博客构建野生动物观察功能

Simon Willison用手机上的Claude Code为博客构建了iNaturalist野生动物观察记录同步功能
Django联合创始人Simon Willison利用Claude Code网页版,直接在手机上为个人博客开发了「Sightings」功能,将iNaturalist上的野生动物观察记录自动同步到博客。该功能基于其Beats内容聚合系统扩展,回溯导入了十年以上的历史数据。这一案例展示了AI编程代理如何改变开发场景,使编程从依赖桌面IDE的重型活动变为可随时随地进行的轻型创造活动。
概述
知名开发者 Simon Willison(Django 联合创始人、Datasette 作者)近日分享了一个有趣的个人项目:他利用 Claude Code 的网页版,直接在手机上为自己的博客构建了一个「Sightings(观察记录)」功能,将他在 iNaturalist 上分享的野生动物照片自动同步到个人博客中。
Simon Willison 在开发者社区中有着广泛的影响力。他是 Python Web 框架 Django 的联合创始人之一,后来创建了 Datasette——一个用于探索和发布数据的开源工具。近两年来,他成为 AI 辅助编程领域最活跃的实践者和记录者之一,他的博客几乎每天都在记录各种 LLM 工具的使用心得和技术分析,其 TIL(Today I Learned)系列更是成为许多开发者了解 AI 工具进展的重要信息源。
这个看似简单的功能背后,展示了 AI 辅助编程在日常开发场景中的实际应用,以及个人博客作为内容聚合中心的设计理念。
项目背景:从新相机到博客新功能
Simon 最近入手了一台 Canon R6 Mark II 相机,开始大量拍摄鸟类和野生动物照片。Canon R6 Mark II 是佳能于 2022 年底发布的全画幅无反相机,搭载了 2420 万像素传感器和先进的动物眼部自动对焦系统(Animal Eye AF),能够识别鸟类、猫、狗等动物的眼睛并持续追踪,配合最高 40fps 的电子快门连拍速度,使其成为野生动物摄影的热门选择。这类相机大幅降低了野生动物摄影的技术门槛,让业余爱好者也能拍出清晰的鸟类飞行照片。
他一直将最好的野生动物照片分享在 iNaturalist——一个全球知名的自然观察社区平台。iNaturalist 由加州科学院和国家地理学会联合运营,拥有超过 200 万注册用户,累计记录了超过 1.5 亿条自然观察数据。该平台的核心特色在于其社区驱动的物种鉴定机制:用户上传照片后,平台会先通过计算机视觉模型(基于深度学习训练)给出物种建议,随后由社区中的专家和爱好者进行人工验证。当多位用户对同一鉴定达成共识时,该观察记录即被标记为「研究级别」(Research Grade),可被全球生物多样性数据库(如 GBIF)收录,用于科学研究。iNaturalist 提供了完善的 API 接口,支持按用户、物种、地理位置等维度查询观察数据,这也是 Simon 能够实现数据同步的技术基础。
在 5 月 1 日完成了一个成功的原型验证后,他决定将这些观察记录正式整合到自己的博客系统中。最终呈现的效果是一个带有搜索功能的「Sightings」页面,展示了超过 208 条观察记录,包括啄木鸟、鱼鹰、白冠麻雀等各种物种的照片。
技术实现:手机上用Claude Code完成开发
基于Beats系统的内容聚合架构
这个功能并非从零构建,而是基于 Simon 此前开发的 Beats 系统——一个用于聚合外部内容的框架。Beats 系统的核心设计理念是将分散在各平台的内容统一同步到个人博客,使博客成为真正的内容中心。
这种设计理念与 IndieWeb 社区倡导的 PESOS(Publish Elsewhere, Syndicate to Own Site)模式一脉相承。PESOS 的核心思想是:即使你在第三方平台(如 Twitter、Instagram、iNaturalist)上发布内容,也应该将这些内容的副本同步回自己控制的网站。与之对应的还有 POSSE(Publish on Own Site, Syndicate Elsewhere)模式,即先在自己的网站发布,再分发到其他平台。Simon 的 Beats 系统本质上是一个 PESOS 实现框架,它通过定时任务调用各平台 API,拉取新内容并转换为统一的数据格式存储在博客数据库中。这种架构的优势在于:即使第三方平台关闭或改变政策,用户的内容仍然安全地保存在自己的服务器上。
野生动物观察记录作为一种新的内容类型,被无缝集成到这个系统中。与其他聚合内容一样,观察记录会出现在:
- 博客首页
- 日期归档页面
- 站内搜索结果中
在手机上用Claude Code完成全部开发
说个细节,Simon 明确提到这个功能是在手机上使用 Claude Code for web 完成的。这意味着整个开发流程——从需求描述到代码生成、调试和提交——都是通过与 AI 对话在移动设备上完成的。
Claude Code 是 Anthropic 推出的一款 AI 编程代理工具,它与传统的代码补全工具(如 GitHub Copilot)有本质区别。传统代码补全工具在你编写代码时提供行级或函数级的建议,而 Claude Code 是一个具备完整开发能力的 AI 代理(Agent):它可以读取项目文件、理解代码库结构、编写新代码、运行测试、执行 shell 命令,甚至直接提交 Git commit。Claude Code 最初以命令行工具形式发布,需要在终端中运行;而其网页版(Claude Code for web)则将这些能力搬到了浏览器中,用户只需通过自然语言描述需求,AI 就能在云端完成代码的编写、测试和提交。这意味着开发者不再需要本地安装 IDE、配置开发环境,只要有浏览器就能进行完整的软件开发——这正是 Simon 能在手机上完成整个功能开发的技术基础。
他在 GitHub 上提交了 完整的 PR(#668),其中包含了他使用的 prompt。这种透明的开发方式本身就是对 AI 辅助编程实践的一种记录和倡导。
十年iNaturalist数据回溯导入
Simon 不仅实现了增量同步,还回溯导入了超过十年的 iNaturalist 观察数据。这意味着他 2019 年在马达加斯加拍摄的狐猴照片,现在也可以通过博客的搜索功能找到。这种数据回溯能力体现了系统设计的完整性。
从技术角度看,回溯导入涉及到 iNaturalist API 的分页查询、历史数据的时间戳处理、图片 URL 的有效性验证等问题。iNaturalist 的 API 支持按用户 ID 查询所有历史观察记录,返回的数据包含物种分类信息(界、门、纲、目、科、属、种的完整分类树)、地理坐标、观察时间、照片 URL 以及社区鉴定状态等丰富的结构化数据。这些数据经过转换后存入博客的 Django 数据库,并建立适当的索引以支持搜索和按时间浏览。
AI辅助编程的现实启示
改变的不仅是编码效率,更是开发场景
Simon 的这个案例展示了 AI 辅助编程的一个重要维度:它改变的不仅是编码效率,更是开发的场景和方式。在手机上、在碎片化时间里完成一个完整的功能开发,这在传统开发模式下几乎不可想象。
Claude Code 的网页版让开发者摆脱了对桌面 IDE 的依赖,只要能打开浏览器就能启动一个开发任务。这对于个人项目的推进效率提升是显而易见的。
这种转变的深层意义在于:编程正在从一种需要特定环境和大块时间的「重型」活动,逐渐演变为一种可以随时随地进行的「轻型」创造活动。就像智能手机让摄影从专业行为变成了日常行为一样,AI 编程代理可能正在让软件开发经历类似的民主化过程。当然,这并不意味着所有开发工作都适合在手机上完成——复杂的系统架构设计、性能调优、大规模重构等任务仍然需要传统的开发环境。但对于像 Simon 这样的个人项目中的功能迭代,这种新的开发方式已经展现出了明显的优势。
个人项目的最佳实践
对于个人开发者来说,这个案例提供了几个值得借鉴的思路:
- 先做原型验证:Simon 在前一天完成了原型,确认可行后才正式开发
- 基于已有系统扩展:利用 Beats 框架的可扩展性,而非重新造轮子
- 数据完整性:回溯历史数据,确保功能的完整价值
- 开放透明:公开 PR 和 prompt,为社区提供参考
总结
这个项目虽然规模不大,但它是 AI 辅助编程融入日常开发工作流的一个典型缩影。Simon Willison 作为 AI 工具的深度使用者和布道者,持续通过自己的实践展示着这些工具的实际价值——不是替代开发者,而是让开发者能在更多场景下、以更低的摩擦完成想法到实现的转化。
对于关注 AI 编程工具发展的开发者来说,Simon 公开的 PR 和 prompt 是很好的学习素材,值得仔细研究他如何组织需求描述、如何与 Claude Code 协作完成一个完整功能的开发。从更宏观的视角来看,这个案例也反映了个人网站/博客在社交媒体时代的新定位:不再仅仅是发布原创文章的地方,而是成为个人数字生活的聚合枢纽,将散落在互联网各处的数字足迹汇聚在一个自己完全掌控的空间中。
核心要点
- Simon Willison 使用 Claude Code 网页版在手机上为博客构建了野生动物观察记录功能,将 iNaturalist 数据同步到个人博客
- 该功能基于其此前开发的 Beats 内容聚合系统扩展而来,观察记录可出现在首页、归档页和搜索结果中
- 项目回溯导入了超过十年的 iNaturalist 历史数据,包含 208 条以上的观察记录
- 整个开发过程在手机上通过 AI 对话完成,展示了 AI 辅助编程改变开发场景和方式的潜力
- Simon 公开了完整的 GitHub PR 和 prompt,为社区提供了 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小时高效软件开发。