Simon Willison在手机上用Claude Code给博客加野生动物观察功能

Simon Willison用Claude Code在手机上为博客构建了野生动物观察记录同步功能
知名开发者Simon Willison使用Claude Code网页版,直接在手机上为个人博客添加了"Sightings"功能,将iNaturalist上的野生动物照片同步到博客中。该功能基于博客已有的Beats内容聚合系统构建,回溯导入了十年间208条观察记录,从原型到上线仅用一天,展示了AI编程工具在移动端场景中的实用化程度。
开发者用AI编程工具在手机上构建博客新功能
Simon Willison——知名开发者、Datasette 创始人——最近分享了一个有趣的个人项目:他用 Claude Code 的网页版,直接在手机上为自己的博客添加了一个「Sightings(观察记录)」功能,将他在 iNaturalist 上分享的野生动物照片同步到个人博客中。
Simon Willison 是 Django Web 框架的联合创始人之一,Django 是 Python 生态中最流行的 Web 开发框架。Django 最初由 Lawrence Journal-World 报社的开发团队于 2003 年创建,Simon Willison 和 Adrian Holovaty 是核心开发者。Django 采用 MTV(Model-Template-View)架构模式,内置 ORM、管理后台、表单处理等组件,以"batteries included"(自带电池)的设计哲学著称,驱动了 Instagram、Pinterest、Mozilla 等知名网站的早期版本。Simon 在离开 Django 核心开发后,将注意力转向数据工具和 AI 领域,但他的博客系统仍然基于 Django 构建,这也是本文中 Beats 系统和 Sightings 功能的技术底座。
他后来创建了 Datasette——一个用于探索和发布数据的开源工具,能将 SQLite 数据库即时转化为可交互的 API 和网页界面。Datasette 的核心理念是将 SQLite 数据库文件视为一种数据发布格式。SQLite 是全球部署量最大的数据库引擎,它以单文件形式存储整个数据库,无需独立的服务器进程。Datasette 利用这一特性,让用户只需提供一个 .db 文件即可自动生成可浏览的 Web 界面和 JSON API。这种"数据即产品"的思路深刻影响了 Simon 后续的项目设计,包括他博客中 Beats 系统对数据聚合和展示的处理方式。
他同时也是 AI 领域最活跃的技术博主之一,长期记录和评测各类大语言模型及 AI 开发工具的实际表现。
这个案例虽然看似轻量,但它展示了 AI 辅助编程工具在实际开发流程中的渗透程度——甚至连移动端、个人项目这样的场景都已经被覆盖。
项目背景:从新相机到博客功能
Simon 最近入手了一台 Canon R6 Mark II,开始大量拍摄鸟类和野生动物照片。Canon R6 Mark II 是佳能于 2022 年底发布的全画幅无反相机,以其出色的自动对焦系统和每秒 40 张的电子快门连拍速度著称。该机型搭载了基于深度学习的动物眼部检测 AF,能够识别并追踪鸟类、猫狗等动物的眼睛,这使其成为野生动物摄影爱好者的热门选择。
他一直在 iNaturalist(一个全球性的自然观察社区平台)上分享自己拍到的野生动物照片。iNaturalist 是由加州科学院和国家地理学会联合运营的全球性公民科学平台,拥有超过 1.5 亿条观察记录。用户上传野生动物或植物照片后,社区成员和 AI 模型会协助进行物种鉴定。其物种鉴定系统结合了计算机视觉模型和社区专家的人工审核——AI 模型基于卷积神经网络训练,能够识别超过 7.6 万个物种,但最终的"研究级"鉴定需要至少两位社区成员达成共识。平台采用 RESTful API 设计,支持按用户、物种、地理范围、时间区间等维度查询数据,返回的 JSON 数据包含丰富的元信息(如分类学层级、观察质量等级、Creative Commons 许可证类型等),这为开发者构建下游应用提供了极大便利,也正是 Simon 能够实现自动同步的技术基础。
在 5 月 1 日完成了一个成功的原型验证后,他决定将这些观察记录正式整合到自己的博客系统中。新功能上线后,用户可以在他的博客上浏览带有照片的野生动物观察记录,包括物种名称、拍摄时间等信息。
技术实现:Beats 内容聚合系统 + Claude Code
基于已有的内容聚合架构
Simon 的博客有一套名为「Beats」的内容聚合系统,专门用于将外部平台的内容同步到博客中。Beats 的设计灵感来源于新闻编辑室中的"跑口记者"(beat reporter)概念——每个 Beat 对应一个外部内容源(如 GitHub stars、Mastodon 帖子、书签等),通过定时任务拉取数据并统一存储到博客数据库中。
这种架构实现了 POSSE(Publish on your Own Site, Syndicate Elsewhere)理念的反向操作——将分散在各平台的内容聚合回个人站点,确保内容的长期可控性和可发现性。更准确地说,Simon 实践的是 IndieWeb 社区所称的 PESOS(Publish Elsewhere, Syndicate to your Own Site)策略。IndieWeb 运动兴起于 2010 年代初,旨在对抗社交媒体平台对用户内容的控制权垄断,其核心主张是个人应当拥有自己发布内容的主副本。PESOS 承认内容首先产生在第三方平台上,但通过技术手段将其回收到个人站点。这种做法在实际操作中往往比纯 POSSE 更务实,因为许多平台(如 iNaturalist)本身提供了独特的社区价值和 AI 辅助功能,用户有充分理由在这些平台上首发内容。
Sightings 功能正是作为这个系统的扩展来构建的。同步后的观察记录会像其他内容一样出现在:
- 博客首页
- 日期归档页面
- 站内搜索结果中
在手机上用 Claude Code 完成全部开发
最值得关注的细节是:整个功能是在手机上使用 Claude Code for web 完成开发的。
Claude Code 是 Anthropic 推出的 AI 编程助手产品,最初以命令行工具形式发布,后来推出了网页版(Claude Code for web)。与传统的代码补全工具(如 GitHub Copilot 的行内建议模式)不同,Claude Code 能够理解整个代码仓库的上下文,执行从需求分析、代码编写、测试生成到提交 Git 变更的完整开发流程。
要理解这一工具的定位,需要了解 AI 编程工具的技术演进谱系。第一代以 GitHub Copilot(2021年)为代表,主要提供行级或函数级的代码补全,基于 OpenAI Codex 模型。第二代工具如 Cursor、Windsurf 等 AI-native IDE,开始支持多文件编辑和项目级上下文理解。第三代则以 Claude Code、Devin、OpenAI Codex agent 等为代表,它们以 agent 模式运行——能够自主规划任务、读写文件系统、执行终端命令、运行测试并根据结果迭代修复。Claude Code 最初于 2025 年 2 月以研究预览形式发布,随后迅速迭代,其网页版允许 AI 直接操作连接的 GitHub 仓库,创建分支、提交代码和发起 Pull Request,这使得"无本地环境开发"成为可能。
网页版的推出意味着开发者无需本地开发环境,只需浏览器即可驱动 AI 完成复杂的编程任务——这正是 Simon 能够在手机上完成整个功能开发的关键。
Simon 在 GitHub PR #668 中公开了完整的代码变更和使用的 prompt。这一做法本身具有重要的方法论价值。Pull Request 是 GitHub 引入的协作代码审查机制,开发者在独立分支上完成修改后,通过 PR 请求将变更合并到主分支,其他团队成员可以逐行审阅代码、提出修改建议。在 AI 辅助编程的语境下,公开 prompt 和生成的代码让其他开发者能够评估 AI 的实际输出质量、理解 prompt 工程的技巧,以及判断哪些类型的任务适合委托给 AI。这种透明度对于建立社区对 AI 编程工具的校准认知至关重要——它提供的是真实项目中的证据,而非精心挑选的演示案例。
这意味着从需求描述、代码生成到提交 PR,整个流程都在移动设备上通过 AI 辅助完成。对于一个涉及数据同步、页面渲染、搜索集成的功能来说,这体现了当前 AI 编程工具的实用性已经达到了相当高的水平。
回溯填充十年 iNaturalist 观察数据
Simon 不仅实现了增量同步,还回溯导入了超过十年的 iNaturalist 观察记录。这意味着他 2019 年在马达加斯加拍摄的狐猴照片,现在也可以通过博客的搜索功能找到。目前系统中已有 208 条观察记录,涵盖了橡树啄木鸟、西部篱蜥、鱼鹰、白冠麻雀等多种物种。
AI 辅助编程正在走向日常化
这个案例的意义不在于技术复杂度,而在于它所代表的趋势:
1. 开发场景的去桌面化:传统上,编写和提交代码需要在电脑前完成——开发者依赖本地 IDE、终端、Git 客户端等桌面工具链。Claude Code 的网页版让开发者可以在任何设备上进行有意义的编程工作,手机编程不再只是应急方案。这与云端开发环境(如 GitHub Codespaces、Gitpod)的趋势一脉相承。GitHub Codespaces 基于 VS Code 的远程开发架构,在云端虚拟机中运行完整的开发环境;Gitpod 则采用了基于容器的即时开发环境方案。这些工具解决了"在我机器上能跑"的环境一致性问题,但仍然要求开发者具备传统的代码编写能力和 IDE 操作技能。AI 的加入进一步降低了对复杂交互界面的依赖——当 AI 能够理解自然语言指令并自主完成代码编写时,开发者与代码之间的交互界面从 IDE 简化为对话框。在手机的小屏幕上操作传统 IDE 几乎不可行,但输入几段自然语言 prompt 则完全没有障碍,这才真正打开了移动端编程的可能性。
2. AI 工具融入个人开发工作流:Simon 作为 AI 领域的深度参与者,已经将 AI 编程工具作为日常开发的默认选择,而不仅仅是用于演示或实验。这代表了一种从"尝鲜"到"依赖"的转变——当开发者发现 AI 工具在真实项目中的输出质量足够可靠时,它就会自然地成为工作流的一部分。
3. 从原型到生产的周期大幅压缩:从 5 月 1 日的原型到 5 月 2 日的正式上线,AI 辅助编程显著缩短了从想法到实现的时间。传统开发流程中,即使是经验丰富的开发者,一个涉及 API 对接、数据模型设计、模板渲染和搜索集成的功能通常也需要数天的开发周期。AI 工具通过自动处理样板代码、API 调用逻辑和测试编写等重复性工作,让开发者能够将精力集中在架构决策和产品设计上。
小结
Simon Willison 的这个小项目是 AI 辅助编程在真实场景中应用的一个缩影。当一个经验丰富的开发者选择在手机上用 Claude Code 来构建博客功能,并且效果足够好到直接投入使用时,这本身就是对当前 AI 编程工具成熟度的一种验证。随着这类工具的持续进化,开发者的工作方式正在发生实质性的改变——编程正在从一项需要特定环境和工具链的专业活动,逐步演变为一种可以随时随地、以自然语言驱动的创造性工作。
核心要点
- Simon Willison 使用 Claude Code 网页版在手机上为博客构建了野生动物观察记录(Sightings)功能
- 该功能基于博客已有的 Beats 内容聚合系统,将 iNaturalist 上的照片和数据同步到博客中
- 系统回溯导入了超过十年的观察记录(208条),支持首页展示、日期归档和站内搜索
- 从原型验证到正式上线仅用一天,展示了 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小时高效软件开发。