掘金 人工智能 前天 09:23
从零开始:使用 Amazon Q CLI 开发一款软件
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了Amazon Q Developer CLI,一款由亚马逊云科技推出的AI驱动的命令行工具,旨在辅助开发者进行编程和云资源管理。它通过自然语言处理,能够实现代码生成、解释和优化,简化亚马逊云科技资源的管理,并支持系统操作和开发工作流集成。文章还分享了使用Amazon Q CLI构建依赖包生命周期检查工具eol-check的实践经验,总结了使用技巧,并展望了AI工具对开发者工作方式的潜在改变和技能提升方向。

✨Amazon Q Developer CLI是亚马逊云科技推出的AI驱动的命令行工具,它通过自然语言交互,提供代码生成、解释和优化等功能,帮助开发者提高编程效率,简化云资源管理。

🛠️Amazon Q CLI能够生成和修改CloudFormation、CDK、Terraform等IaC配置文件,简化基础设施管理;还能执行系统命令并自动化常见任务,如批量文件处理、数据转换等。

🚀在实际应用中,Amazon Q CLI可以用于构建依赖包生命周期检查工具,通过对接endoflife.date网站的数据,帮助开发者快速、准确地检查项目依赖包的生命周期状态,提高软件供应链的安全性和可维护性。

💡使用Amazon Q CLI时,提供详尽的需求说明、保证文档和代码一致性、严谨地描述功能需求、控制单文件行数以及及时保存里程碑是提高效率的关键。

一、项目背景

在现代软件开发中,依赖包的生命周期管理是一个常被忽视但至关重要的环节。当前市面上没有一款专门检查代码中依赖包生命周期(EOL, End of Life)的工具,但存在一个第三方网站 endoflife.date,可以查询常用库的 EOL 时间。我发现许多开发团队往往使用已经过期或即将过期的依赖包,这些过期的依赖包可能存在以下问题:

因此,我决定开发一个轻量级但功能强大的工具 eol-check,旨在帮助开发者快速、准确地检查项目依赖包的生命周期状态,提高软件供应链的安全性和可维护性。这个工具将直接对接 endoflife.date 网站的数据,为开发者提供实时、准确的依赖包生命周期信息。

本期最新实验为《Agentic AI 帮你做应用 —— 从0到1打造自己的智能番茄钟

✨ 自然语言玩转命令行,10分钟帮你构建应用,1小时搞定新功能拓展、测试优化、文档注释和部署

💪 免费体验企业级 AI 开发工具,质量+安全全掌控

⏩️[点击进入实验] 即刻开启 AI 开发之旅构建无限, 探索启程!

在探索解决方案的过程中,我决定借助 Amazon Q CLI 这一创新的 AI 开发辅助工具来构建 eol-check。Amazon Q CLI 提供了强大的 AI 驱动的代码生成和智能辅助能力,这为快速开发高效、准确的依赖包生命周期检查工具提供了绝佳的技术支持。通过利用 Amazon Q CLI 的自然语言理解和代码生成能力,我能够全面实现这个工具的所有功能。

二、什么是 Amazon Q Developer CLI

Amazon Q Developer CLI 是亚马逊云科技推出的一款命令行界面工具,为开发者提供 AI 驱动的编程和云资源管理辅助功能。它是 Amazon Q 产品家族中专为开发者设计的命令行工具,能够直接在终端中提供智能帮助。

1. 核心功能

2. 与其他 Amazon Q 产品线的关系和区别

Amazon Q Developer CLI 是 Amazon Q 产品家族的一部分,但与其他产品有明显区别:

相比其他产品,CLI 版本更适合习惯命令行操作的开发者,提供了更直接的系统交互能力。

3. 技术架构概述

Amazon Q Developer CLI 采用客户端-服务器架构:

三、Amazon Q Developer CLI 能做些什么

1. 代码辅助功能

Amazon Q Developer CLI 提供了强大的代码辅助能力,帮助开发者提高编程效率:

2. 亚马逊云科技资源管理

作为亚马逊云科技原生工具,Q CLI 在云资源管理方面表现出色:

3. 系统操作

Q CLI 能够执行各种系统级操作,简化开发者的日常工作:

4. 开发工作流集成

Q CLI 设计为与现代开发工作流无缝集成:

四、我如何打造这个工具

1. 软件安装

官网下载 Q CLI,目前支持的操作系统包括:

macOS

Linux

Windows

具体参考安装适用于命令行的 Amazon Q

2. 开始构建

2.1 使用 Q

打开命令行工具,执行 q login 命令,进行注册/登录,然后执行 q chat 开启交互界面。

按照我们的一般思路,简单描述我们的功能需求,我们先让 Q 先产生一份详细的产品规格说明书。

本例使用提示词使用:

我要用 python 写一个包依赖检查是否过期工具,这个工具会从 endoflife.date 上通过 API 获取软件版本过期信息,然后与指定目录中的项目依赖文件进行比对。工具需要支持 python,nodejs,java。生成一份详细的产品规格说明书,并生成代码。

经过一番等待,我们中间可能要按数次 y 以确认 Q 要执行的命令行。如果你想让 Q 一次性完成所有指令的执行,可以输入 t

等待任务完成后,我们已经获得一份代码,并生成了 README.md 文件。

2.2 关于调试

如果发现代码运行失败,我们可以直接将运行错误信息复制过来,然后粘贴到 q chat 中,Q 会自动帮我们分析错误日志,并修复代码。

2.3 迭代与完善功能

排除运行错误后,然后我们需要测试一下这个工具。根据测试,我们可能会发现,工具只是简单从 java 的 pom.xml 中解析了中的依赖,但是没有检查依赖包的子依赖。

再使用提示词进行修改项目:

我发现现在检测只解析了 pom.xml 中解析了中的依赖,没有解析子依赖项目。检查并修复这个问题。同时检查 nodejs 和 python 项目是否存在同样问题,并修复。

经过等待一段时间,现在这个项目已经可以用 npm、pip、mvn 等工具来检查子依赖项,并去重后进行比对版本。到了这个时候,这个工具已经基本可用。

最后我们再优化一下交互功能和性能:

添加网络请求缓存功能,缓存时间可以配置。增加网络请求的连接池,并发数默认为 CPU 数*2。添加扫描进度条,提取项目名在扫描报告中,扫描的报告需要支持 text、json、html 格式,扫描结果的不同状态用 emoji 进行表示。添加 REAMDE 的中文版本。

等待 Q 的一番操作,最后我们就获得了 eol-check 这样一个工具。

3. 成果展示

该工具目前已经发布在了 pypi.org/project/eol…

扫描报告示例

0.2.0 版本,还额外添加了 GUI 的部分,可以查看本地 Cache 的情况。使用 eol-check --ui 启动 GUI 界面。

GUI 界面

五、经验总结

在 Amazon Q CLI 几个小时的体验中,我总结了以下几点建议。

1. 提供详尽的需求说明

如果一开始我们对软件就有明确且详尽的功能说明文档,就可以减少任务调用的次数。以下情况 b 就会比 a 开发完成整体任务的对话次数少。虽然 a 和 b 在后期都需要进行继续优化调整,即便这样,b 总体耗时也会少很多。

a. 用 python 开发一个可以将程序依赖包对比 endoflife.date 上版本信息的程序。

b. 用 python 开发一个可以将程序依赖包和子依赖包对比 endoflife.date 上版本信息的程序,同时需要支持 java、python、nodejs 的项目。程序支持以多种格式进行结果报告的输出包括 text、json、html、csv。在检查过程中,应用程序会缓存网络请求的结果以优化下一次请求的速度。网络请求会使用多线程进行处理,默认线程数为 cpu 核心数*2。

2. 保证文档和代码一致

有时候代码和文档会出现不对齐的时候,可以让 Q 检查代码和文档是否一致。例如:“请根据 REAMME.md 文档检查代码和功能是否一致,如果不一致请更新文档。”

3. 尽量严谨地描述

功能需求不严谨的情况下,可能会生成一些硬编码,需要人工进行 review 发现,提出通用性改造的要求。例如我在实现 spring-boot-starter-parent 检查子依赖包 spring-boot 的时候,描述:“实现对 spring-boot-starter-parent 的子依赖包 spring-boot 的检查”。结果 Q 只对 spring-boot 这个包实现了硬编码的检查,而不是通用性的遍历子依赖的方式进行检查。这时候就需要人工检查并发现这个问题,然后及时提出修改建议。

4. 单文件行数不要过长

对于单文件非常长的时候,需要及时对 Q 提出优化代码的要求,减少单个文件的代码总行数。例如:“请根据单一功能的原则拆分源代码中的大文件。”拆分后的短小代码,在后续的修改中成功率会更高,步骤数更少。过长的代码可能导致 Q 阅读和修改代码的时候,只是进行了局部操作,忽略上了过长的上下文,导致局部逻辑正确,整体代码结构错乱,例如在一个 500 行的 python 代码中修改曾经出现,修改后的代码片段“缩进格式不正确”,然后 Q 会反复尝试修改以最小修改量来修复这个错误,最后花了很多时间迭代数十次才完成任务。

5. 及时保存里程碑

当我们完成一个里程碑任务的时候,建议使用 git commit 命令为项目保存状态,防止后续的连续开发过程中造成整体结构性的变化,导致项目无法正常运行。例如升级了某些依赖包的大版本,Q 又整体修改了一遍所有兼容代码后,发现这个依赖包出现了冲突无法使用,必须回退。这个时候用 git 的 commit 进行回滚,会比让 Q 来进行回滚处理,快得多。然后在下一次对 Q 提出要求的时候,将版本兼容问题同时写在“要求”里,则能更有效地让 Q 完成任务。

六、对开发工作未来的展望

1. 对开发者工作方式的潜在改变

AI 工具将重塑开发者的日常工作方式:

2. 技能提升和学习方向建议

为了在 AI 辅助开发时代保持竞争力,开发者应该:

我期望这篇文章不仅能帮助你了解 Amazon Q Developer CLI,更能启发你思考 AI 时代的软件开发方向。技术工具在不断进化,但核心始终是为人类创造价值。作为开发者,我们的使命是利用这些工具,构建更美好的数字世界。

*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

参考链接

Amazon Q Developer 官方文档

AWS 博客:Amazon Q Developer CLI 介绍

GitHub:Amazon Q Developer CLI 示例集

AWS re:Invent 2023:Amazon Q 相关演讲

开发者社区:Amazon Q 最佳实践讨论

本篇作者

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Amazon Q CLI AI开发 云资源管理 eol-check
相关文章