他今天给博客发布了一个新页面:Newsletters 索引页,把免费周更的 Substack 通讯和每月赞助者专属更新汇总在一起。整个功能几乎全靠语音完成——他一边做晚饭,一边对着笔记本电脑说话。
他用的工具是 ChatGPT 桌面应用的 Codex 标签页,开启语音对话模式,跑在本地开发环境上。
![]()
第一步不是说话,是打字。他先输入一句指令,让开发服务器启动并在浏览器中打开。这样他就能看到模型正在改的站点,后面也可以随时让它展示新页面,用眼睛跟踪进度。
然后他点了「开始新的语音对话」按钮——不是那个麦克风图标,是它右边那个。接着把笔记本架在厨房里,开始边做饭边聊。
他对要做什么心里有数:一个 Django 功能,不算复杂。新增一个模型、一次数据库迁移、一些视图代码、模板,再加两个从外部数据源填充数据库的导入函数。他确信模型(这次是 GPT-6 Astra High)能搞定。
Codex 记录下了他的语音转写。原文里充满了停顿和反复:
「嗯,它们不会。嗯,这会是一种新的内容类型。嗯,它不会显示在……哦等等。对,不——我不希望它出现在我的标签页和日期归档页里……其实,不,我想想……我不想要它出现在标签页。我不想要它出现在博客索引页。但我觉得我确实希望它出现在按日期排列的页面上。你知道,如果你导航到 9 月 19 日,而我在那天发了一份通讯,我希望它能显示出来。所以……我觉得我们可能需要一个新模型。另一件事是我希望它们可以被搜索,呃,Substack 那些是不可搜索的,因为那些实际上只是我博客上其他内容的副本。这些每月更新的确实包含独特内容,而且一旦它们……发布,比如发出一个月后公开了,我希望它们出现在搜索结果里。」
这段话磕磕绊绊,但模型居然听懂了。完整的转写记录,包括所有不流畅的地方,都放在了一个 Gist 里。
就这样聊了大约半小时——正好是做一顿晚饭的时间。模型会回复,偶尔问几个澄清问题,然后动手改代码。
靠纯语音,他们推进得意外地远。
功能几乎可以发布了。问题出在导入上:Astra 提议从他本地的副本导出数据,让他导入到生产环境,但他希望这部分能像其他导入脚本一样工作。由于部分数据存放在一个私有 GitHub 仓库里,这需要创建一个新的 API 密钥,而他知道这件事必须坐在键盘前花点时间。
饭做完、判断功能基本完整之后,他让 Codex 建了一个分支并打开一个拉取请求。
他在 GitHub 的 PR 界面里审查代码。代码几乎就是他要的,只有一个问题:其中一个导入脚本,模型选择了在子进程里调用 Git。他需要其中一个导入从私有 Git 仓库拉取数据,觉得用 API 更合适。于是他切换成打字,让 Codex 把它换成基于 API 的导入。
审查期间做的改动都体现在 PR 的额外提交里。他修好了导入机制,又对那几个公开页面的展示做了几处微调。又花了半小时用打字的方式提示,才达到可以满意地合并 PR、部署到生产环境的程度。
最终结果可以在新的通讯索引页看到,也可以查看之前某个月度通讯的页面。索引页把他最近的 Substack 周更通讯和 GitHub 赞助者月度通讯混在一起,按时间倒序排列。页面往下是按年份归档的链接。
页面设计由 GPT-6 Astra 完成,然后根据他隔着厨房瞄一眼本地预览后给出的语音反馈进行调整。
OpenAI 喜欢在 DevDay 这类场合用这种语音驱动的演示,而且在那种环境下效果确实不错。但他不认为这会成为自己的日常主力工具。
他以前写过,自己在遛狗时用手机上的 ChatGPT 语音模式能完成多少「工作」——主要是研究和头脑风暴,偶尔也真的做点开发,让 ChatGPT 写并测试代码片段。
这次感觉不一样。加上可视化预览,以及在需要表达某些不适合用语音说的事情时能用键盘打字或粘贴,这让与编码智能体交互的方式强大得多。
不过一旦进入细节,他还是会切回打字。能粘贴示例和错误信息,或者直接高亮需要修改的代码或功能,仍然比用语言描述更高效。
他主要在家工作,这挺好,因为在共享办公空间里他绝不会想这样跟电脑说话。
对他来说最杀手级的功能是多任务处理。他平时做饭会开着播客或 TikTok,现在他可以真正地做点东西了。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.