A new feature for my blog, built using my voice

TL;DR · AI 摘要
Simon Willison 使用语音指令与 Codex 协作开发博客的 Newsletter 页面,展示了 AI 在代码生成中的应用潜力。
核心要点
- 通过语音指令,Codex成功生成了Django模型和迁移
- 语音交互开发节省了时间,但需要清晰的指令和模型理解
- 新功能支持按日期搜索Newsletter,并导入Substack内容
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- AI语音协作开发
- 开发工具
- Codex语音模式
- GPT-6 Astra High
- 实现功能
- Django模型生成
- RSS导入
- 日期搜索
- 开发过程
- 语音指令交互
- 代码生成验证
金句 / Highlights
值得收藏与分享的关键句。
通过语音指令生成Django模型和迁移,节省了手动编码时间
GPT-6 Astra High模型成功解析了包含停顿的模糊语音指令
实现Newsletter页面按日期搜索功能,但未解决RSS导入的API限制
用我的声音为我的博客新增一个功能
Simon Willison’s Weblog
通讯
#smallhead
由以下公司赞助:
Deepgram — Flux TTS能够记住对话,因此你的代理在回复时表现得更自然
试听演示
用我的声音为我的博客新增一个功能
2026年10月9日
今天我为我的博客新增了一个功能:通讯页面,这个页面提供了我发送过的所有通讯的索引,包括我免费的每周Substack通讯和仅限赞助者的月度更新。我几乎完全使用语音来构建这个功能,在做饭时通过语音与笔记本电脑交流。
#### Codex语音模式
我使用了ChatGPT桌面应用的Codex标签页,通过语音对话模式与本地开发环境交互。以下是具体操作界面:
我通过输入以下命令启动了本地simonwillisonblog项目的会话:
启动开发服务器并在浏览器中打开
这让我预览了即将工作的网站界面,之后我可以要求它展示新页面以便直观跟踪进度。
然后我点击了“开始新语音对话”按钮(这不是麦克风按钮,而是它右侧的按钮),并将笔记本电脑搬到厨房,这样在做饭时可以与它对话。
#### 与电脑对话
我对自己要构建的内容有清晰的想法,这个简单的Django功能(我确信GPT-6 Astra High模型能够实现)包括:新模型、数据迁移、视图代码、模板以及几个用于从外部来源导入数据到数据库的函数。
以下是Codex记录的语音转录文本摘录:
嗯,它们不会。嗯,这将是一种新的内容类型。嗯,它不会显示...哦,等一下。是的,不,我不希望它显示在我的标签页面和日期归档页面上...实际上,不,我想...我不希望它出现在标签页面上。我不希望它出现在博客索引页面上。但我想让它显示在基于日期的页面上。你知道,如果你导航到9月19日,而我在那天发送了通讯,我想让它显示出来。所以...这是-所以我认为我们可能需要一个新模型。另一件事是,我希望它们可以搜索,Substack的那些不能搜索,因为它们实际上是博客上其他内容的副本。这些月度通讯包含独特内容,一旦它们...发布,比如在发送一个月后公开时,我希望它们能显示在我的搜索结果中。
显然,这些描述足够清晰,模型准确理解了我的需求!你可以在这个Gist中阅读完整的转录文本,包括所有语流不畅的部分。
我们就这样持续了大约半小时(也就是做晚饭所需的时间)。模型会回复并偶尔提出澄清问题,然后开始修改代码。
#### 我们构建了什么
通过语音交互,我们取得了令人惊讶的进展:
- 一个新模型和数据迁移,用于在Django中表示导入的通讯,以及该模型的Django管理后台配置
- 四个正常工作的数据导入:通过 RSS 获取最新的 Substack 内容 通过 Substack 未公开的 API 获取其他 Substack 内容(GPT-6 Astra 曾尝试直接访问 /api/v1/archive 接口,随后通过搜索确定分页方式并找到 Karen Spinner 的这篇文章) 从我的 simonw/monthly-newsletter-archive GitHub 仓库中获取所有已发布的月度通讯 我最近一次仅限私密赞助者的月度通讯(来自私有仓库)
- /newsletters/ 和 /newsletters/2026/ 公共归档页面
- 通讯内容同时出现在按天和按月归档页面上,但不会出现在标签页面或我的主页上
- 每周 Substack 通讯会链接到 Substack 主站;归档的月度通讯则拥有独立页面
- 与我的网站搜索引擎集成
它几乎已经准备好发布。唯一的问题在于数据导入:Astra 提议从我的本地副本导出数据以便导入生产环境,但我希望它能像其他导入脚本一样运行。由于部分数据存储在私有 GitHub 仓库中,这需要创建新的 API 密钥,而我知道这需要我亲自在键盘上操作一段时间。
#### 通过代码审查完成最终调整
当我完成开发并认为功能基本完整后,让 Codex 创建了一个分支并发起拉取请求。
我在 GitHub 的 PR 界面审查了代码。它几乎符合我的需求,只是其中一个导入脚本选择使用 Git 子进程。由于我需要某个导入功能从私有 Git 仓库获取数据,我认为使用 API 会更可靠。我切换到打字模式,让 Codex 将该脚本改为基于 API 的导入方式。
你可以在 PR 的额外提交记录中看到我在审查期间所做的修改。我修复了导入机制,并对公开页面的显示做了一些微调。通过额外半小时的打字提示,我最终对部署到生产环境感到满意。
#### 最终成果
你可以在新的通讯索引页面 查看最终成果,或查看之前的月度通讯页面 。
索引页面混合展示了我最新的 Substack 周通讯和 GitHub 赞助者月度通讯,按时间倒序排列。页面下方还有链接指向我的年度归档页面。
GPT-6 Astra 设计了这个页面,随后根据我在厨房里快速查看本地预览时的语音反馈对设计进行了调整。
#### 更适合多任务处理而非日常使用
OpenAI 喜欢在 DevDay 等场景中使用这种语音驱动的演示——它们在那种环境中确实表现良好。但我觉得这不会成为我的日常使用工具。
我之前写过关于使用手机上的 ChatGPT 语音模式在遛狗时完成多少"工作"的文章——主要是研究和头脑风暴,偶尔也会让 ChatGPT 写代码片段并进行测试。
这次体验感觉不同。视觉预览功能的加入,加上在需要非语音交流时能通过键盘输入或粘贴内容的能力,使这种与编码代理的交互方式变得更加强大。
不过当我深入细节时,还是会切换回打字模式。能够粘贴示例和错误信息,或直接高亮需要修改的代码和功能,这种方式比用语言描述要高效得多。
我主要在家工作,这很好,因为如果在共享办公空间里,我肯定不想用这种方式和电脑交流!
对我来说最吸引人的功能是能够多任务处理。我通常在听播客或看TikTok时做饭;现在我终于可以真正开始做些实际的事情了。
发布于 下午12:54 · 关注我在
Mastodon
、
Bluesky
、
或
订阅我的电子通讯
更近的文章
- Claude Haiku 5.5 - 2026年10月7日
- 我们需要在几乎所有东西上设置默认的硬性预算上限 - 2026年10月3日
- OpenAI DevDay 2026 实时博客 - 2026年9月29日
- 2026年LLMs进展(截至目前) - 2026年9月27日
#primary
这是我的博客的一项新功能,由Simon Willison用我的声音创建,发布于2026年10月9日。
系列文章:我如何使用LLMs和ChatGPT
- 两项新的Showboat工具:Chartroom和datasette-showboat - 2026年2月17日,凌晨12:43
- 用SwiftUI编写代码是一种非常有趣的体验 - 2026年3月27日,晚上8:59
- 将Moebius 0.2B图像修复模型移植到浏览器中使用Claude Code运行 - 2026年6月22日,晚上11:43
- 我的博客的一项新功能,使用我的声音创建 - 2026年10月9日,下午12:54
text-to-speech 21 ai 2,273 openai 475 generative-ai 2,015 llms 1,981 24 coding-agents 256 codex 59 speech-to-text 22 site-upgrades 28
上一篇:Claude Haiku 5.5
月度简报
每月赞助我10美元,即可获得本月最重要的LLM进展精选邮件摘要。
支付我以减少发送频率!
赞助并订阅
#secondary
#wrapper
- 披露信息
- 附录
- ©
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026