30 秒看懂
在这期 2023 年 7 月的教程中,Matthew Berman 配合 GPT-4 使用 Aider,先构建并修改 Python 贪吃蛇游戏,再让它更新 Ruby on Rails 项目中的依赖。他介绍早期基于 Universal Ctags 的仓库映射,并展示与 Git 配合的编辑。这些是非正式演示,暴露了一项未完成的游戏修改和一个实际上并非最新的依赖版本;视频简介还补充了录制时遗漏的安装步骤。
- 1终端编程助手Berman 介绍 Aider 及其迭代修改文件和现有项目的能力。
- 2历史设置他创建 Python 环境并使用 OpenAI 密钥;视频简介补充了一条遗漏的安装命令。
- 3仓库映射他解释早期的 Universal Ctags 映射,它压缩选定的代码信息,而不是向模型提供所有细节。
- 4贪吃蛇示例助手生成并修改一个小游戏,但其中一项请求的修改并未完成。
- 5编辑 Rails 项目Aider 建议修改 Sidekiq 并使用 Bundler,但提出的版本并非最新。
要点建议
- Aider 是一款终端编程助手,可以提出修改并在 Git 仓库中工作。
- 2023 年的演示使用托管的 OpenAI API 密钥;软件免费并不意味着 API 使用免费。
- 早期仓库映射是一份简洁摘要,并非每个文件的完整内容。
- 一次贪吃蛇修改保留了第一个食物的原始符号,说明生成的修改需要测试。
- 演示中建议的 Sidekiq 6.3.1 即使在 2023 年 7 月也不是最新版本。
- 视频简介补充了遗漏的 Aider 安装步骤;现代设置和仓库映射方式已经改变。
按章节阅读整理后的全文
介绍 Aider 与环境设置
Berman 介绍 Aider、创建环境并讨论 API 访问。视频简介补充了演示中遗漏的安装步骤。
Matthew Berman 在 2023 年 7 月介绍 Aider,一款由 Paul Gauthier 创建的终端编程助手。他感兴趣的是它提出并迭代修改代码、展示变更以及在现有 Git 仓库中工作的能力。视频展示的是小型示例,并非对大型项目可靠性的广泛评估。
他介绍自己使用的版本支持 GPT-4 和 GPT-3.5,并希望未来支持开放模型。这反映的是 2023 年的版本;此后可用模型和集成选项已经改变。助手软件本身可能无需付费,但调用托管模型 API 可能产生费用。
Berman 在 Mac 上创建并激活使用 Python 3.11.3 的 Conda 环境,然后导出 OpenAI API 密钥,并表示会撤销演示用密钥。视频简介补充了一个遗漏步骤:使用 pip install aider-chat 或仓库依赖安装 Aider。这些是历史说明,并非经过验证的当前安装指南。
映射仓库
他解释早期 Universal Ctags 集成及其压缩仓库上下文的作用。映射必然有所取舍。
Berman 介绍 Universal Ctags,称其可作为处理大型代码库的可选辅助工具。在他演示的早期版本中,它帮助生成紧凑的仓库符号和结构映射。受 token 限制的映射只是选取或摘要,并非整个代码库,也不能保证模型理解所有相关上下文。
他展示如何使用 Homebrew 安装 Universal Ctags 并检查版本。这是视频录制时的工作流程;Aider 后来说明,它用基于 tree-sitter 的方法取代了原先基于 Ctags 的仓库映射,因此不应假设当前版本仍需要这一旧依赖。
创建并完善贪吃蛇
Berman 生成 Python 游戏、添加得分并更改食物符号。最后一项修改只部分成功。
Berman 创建新文件夹,并用 snake.py 启动 Aider。屏幕显示当前没有 Git 仓库,仓库映射也被禁用。他请求制作 Python 贪吃蛇游戏;助手提出使用 curses 的代码,在这次演示中,他成功运行了生成的游戏。

他让助手添加一个得分,显示蛇吃掉了多少食物。Aider 展示并应用修改,Berman 再次运行游戏,展示得分。这是一次迭代编辑和人工检查的例子,并非全面的游戏测试。
接着他要求将食物符号改成数字 8。测试时,他发现第一个食物仍使用原始符号,后面的食物才使用 8。他指出可以再迭代一次来解决;初次修改没有完全满足请求。
Berman 展示聊天内命令,包括添加或移除文件、查看差异和提交,然后退出并打开现有的 Ruby on Rails 项目。这次终端识别到 Git 仓库,并显示预算为 1,024 个 token 的 Universal Ctags 仓库映射。
现有 Rails 项目
他让 Aider 更新 Sidekiq,并检查它提出的 Gemfile 和 Bundler 步骤。所建议的版本不能证明已成功升级到最新版本。

他让 Aider 将 Sidekiq 升级到最新版本。助手请求访问 Gemfile,提出版本约束,并讨论使用 Bundler 更新 Gemfile.lock。屏幕显示版本 6.3.1;RubyGems 已于 2023 年 5 月发布 Sidekiq 7.1.0,因此这一建议不能证明是当时最新的版本。

Berman 欣赏助手认识到锁文件由 Bundler 生成,而不是直接手动编辑它。演示展示的是建议的工作流程,并非已经完成并验证的依赖升级或兼容性测试。他认为 Aider 可以帮助自己继续迭代现有项目。
同频道的其他文章
34:21EN → 简体中文
0:26EN → 简体中文
0:36EN → 简体中文
0:21EN → 简体中文
25:50EN → 简体中文
32:20EN → 简体中文