在软件项目中使用ChatGPT Codex和Claude Code的考量

关于我如何在开发WordPress插件时使用两种不同的AI代理作为协作者,以及对这种新型软件开发方式的印象。

介绍

最近几周,我在周末或晚饭后一直在开发一个名为Asset Lending ManagerALM)的插件,供我所在的天文爱好者协会使用。由于我在之前的帖子中已经详细描述了其功能 [1],这里我只简单说明其目的是管理和促进组织内各种设备和物品的借用,然后我将重点介绍所使用的开发方法。

从一开始,我就发现自己进展缓慢,缺乏热情,感觉这又是一个需要用常规方法和经典问题解决的项目;总之,前景不太乐观,因为我承担了这项工作,必须独自处理。

然而,在某个时刻,在阅读了一些社交媒体上的热情帖子后,我决定尝试一些新东西:寻求协作者的帮助ChatGPTClaude

我已经使用这两个平台一个月了,我必须提前说我不后悔,因为这是一段激动人心且有趣的经历,而且就在几天前,我发布了这个产品的第一个版本。

开发方法

我不知道这是否可以称为“Vibe coding”或其他名称,我愿意接受批评和建议;同时,我分享我如何处理这种情况以及如何为AI创建一个“上下文”,我计划在其他项目中也使用这种方法,进行适当的修改。

首先,在Visual Studio Code(VSC)的提示符中打开代理终端后,我发现它们会在当前目录中寻找特定文件:ChatGPT codex寻找名为AGENTS.md的文件,而Claude Code寻找名为CLAUDE.md的文件。

显然,这些文件的目的是自动为代理提供指令和解释,以避免每次都重新编写,并确保它们始终一致。

因此,我决定创建一个更复杂的“上下文”,涵盖项目的各个方面:描述、功能、开发规则等。

我创建了一种启动程序(bootstrap),即一系列具有特定目的的文件,按定义的顺序让AI读取,从默认读取的文件开始。

在描述文件之前,需要说明我所说的项目:

  • 位于我本地克隆的GIT仓库中,
  • 已配置为适当使用VSC进行管理,
  • 已配置为使用PHPCS作为linterxdebug进行调试
  • 我已经激活了ChatGPTClaude的月度订阅(目前试用ChatGPT Codex只需免费订阅,而试用Claude Code至少需要Pro订阅)[4]。

还需要说明的是,现在VSC中有集成插件,不需要从提示符调用代理,启动程序的工作方式保持不变。

话虽如此,添加到项目中的文件如下:

  1. AGENTS.mdChatGPT Codex自动读取的文件,实际上只是将代理的注意力重定向到文件AI_RULES_CHATGPT.md
  2. CLAUDE.mdClaude Code自动读取的文件,实际上只是将代理的注意力重定向到文件AI_RULES_CLAUDE.md
  3. AGENTS/AI_RULES_CHATGPT.mdChatGPT引导阶段的入口点。在此文件中定义了引导顺序,并有一些仅适用于ChatGPT的工作规则。
  4. AGENTS/AI_RULES_CLAUDE.md:与前一个文件相同,但仅适用于Claude
  5. AGENTS/AGENTS_README.md:说明创建AGENTS文件夹的原因,并简要描述每个文件的内容和目的。
  6. AGENTS/PROJECT.md:项目描述、产品范围、主要功能和角色。它是插件的功能视图:它做什么,为谁设计,哪些部分已经可用。它有助于快速了解产品的目标和范围。
  7. AGENTS/ARCHITECTURE.md:描述架构、主要模块、关键目录、公共挂钩/端点、数据模型、技术栈和参考资料。它是系统的技术地图。帮助理解代码中的干预点以及组件如何相互连接。
  8. AGENTS/AI_BEHAVIOR.md:指定代理在开发、研究和解决问题时的行为和操作方式。包括操作触发器完成定义待办事项管理
  9. AGENTS/CODING_STANDARDS.md:编码约束和质量标准。确保遵循WordPress编码规则(PHP/HTML/CSS/JS和i18n),并定义安全性和风格的实际规则。是开发和重构期间的参考。

前两个文件位于项目根目录中,而其他文件我收集在一个名为AGENTS的目录中,除了PROJECT.mdARCHITECTURE.md文件,这些文件显然因项目而异,其他文件可以在其他项目中重用(实际上我已经这样做了),只需进行少量修改。

AGENTS中,还有另外三个文件仅在某些情况下根据前面文件中指定的方式读取:

  1. AGENTS/GIT_WORKFLOW.md:用于指定如何使用GIT仓库,如何提交,以及在提交前进行哪些检查。
  2. AGENTS/ISSUES_TODO.md:列出未解决的问题和待处理的任务。允许根据严重性类别优先处理工作。
  3. AGENTS/ISSUES_RESOLVED.md:已解决问题的存档。
引导阶段根据代理而有所不同:
  • CHATGPT CODEX –> AI_RULES_CHATGPT.md –> AGENTS_README.md –> PROJECT.md –> ARCHITECTURE.md –> AI_BEHAVIOR.md –> CODING_STANDARDS.md
  • CLAUDE CODE –> AI_RULES_CLAUDE.md –> AGENTS_README.md –> PROJECT.md –> ARCHITECTURE.md –> AI_BEHAVIOR.md –> CODING_STANDARDS.md

在这种设置之后会发生什么?

在第一次请求或明确要求时,代理会读取并执行引导,创建一个非常有效的上下文,使其能够适当地操作。

此时,可以开始询问代理项目的进展情况以及从哪里开始工作,实际上我从不这样做,因为在AGENTS的指令中规定了在开始工作或完成任务时提供建议,因此我总是有关于下一个任务的指示。

触发命令

这些天我经常使用的一个非常有用的功能是触发命令,实际上我定义了一些短语,这些短语会导致代理执行一系列活动并生成某种类型的报告:

  • 对文件X进行完整审查:执行文件的完整审查(错误、安全性、风格、合规性、lint和HTML检查(如适用)),并在屏幕上显示报告。

  • “检查URL X”:启动页面的HTML/JS质量、加载效率、响应性、可访问性和性能审计。

  • 检查是否有新问题:重新查看未解决的待办事项,并根据优先级和影响识别需要解决的问题。

  • “给我一个问题的表格总结:按类别/严重性生成一个带有总计和初步建议的表格,并建议从4到5个问题开始。

这些功能非常有用,可以恢复工作,汇总项目状态,进行复杂的检查和验证。

临时文件

当需要实现新功能、进行重构或在需要先评估各种可能性的情况下,我发现另一个有用的做法是让代理编写一个文档(在完成任务后可以删除的临时文件),记录与代理进行的所有“推理”。

还可以让一个代理分析另一个代理写的文本,并提供意见。

如果希望暂停实现并进行思考,可以从该文档重新开始讨论。

无论如何,在执行任务之前,需要告诉代理重新阅读该文件。

如果任务复杂,需要多个步骤,则可以按编号列表逐步实现,以便始终控制情况。

系统配置

在Windows上配置系统非常简单。只需在电脑上安装一个较新的Node.js版本,然后执行以下命令:

npm i -g @openai/codex
npm install -g @anthropic-ai/claude-cod

对于Claude Code,实际上,目前通过npm安装已被弃用,建议使用其他两种通过本地安装程序的方法。

第一种方法是先安装Git for WindowsGit.scm),然后根据所用的shell使用以下两个命令之一进行安装:

#使用POWERSHELL:
irm https://claude.ai/install.ps1 | iex

#使用DOS提示符:
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

第二种方法是使用WSL2(Windows Subsystem for Linux)

curl -fsSL https://claude.ai/install.sh | bash

我使用npm安装了它们,因为当时这是我唯一的选择,未来几天我会尝试使用WSL2。

考量

经过一个月与我的两位协作者的合作,我认为是时候进行一些反思了。

这种新的编程方法让我更快、更高效,我能够独自实现大量功能,并更轻松地控制错误和报告。我认为再也无法回头,日常工作的改进和结果如此显著,以至于无法想象回到过去,做得更少更差。

在每个会话中,我总是尝试将工作分成小任务,逐一实现或修正;这样,修改或添加的文件和代码行数始终较少,并且在每次提交之前,我可以轻松检查所做的工作。

代理甚至可以通过一个提示实现整个程序,但这会产生程序员完全不熟悉的代码。

另一个建议是始终进行测试:单元测试、集成测试和功能测试,以避免发布引入错误或回归的版本。

因此,我认为代理是优秀的副驾驶,但绝不应因懒惰或匆忙而将所有工作委托给他们,并且不逐步监控项目的进展。如果这样做,结果将是灾难性的,因为你将拥有一个你不了解、不理解其工作原理且无法管理的产品。

 

 

来源和参考

  1. Asset Lending Manager项目ALM)在GitHub.com上。
  2. OpenAI ChatGPT Codex。
  3. Claude Code
  4. 订阅费率:OpenAI的ChatGPTAnthropic Claude

*** 注意:本文通过使用n8n和OpenAI的自动流程翻译。

3 months ago

Leave a Reply

Your email address will not be published. Required fields are marked *

评论审核已启用。您的评论可能需要一段时间后才能被显示。