随着AI在软件开发领域的快速创新,高质量的代码生成需要一个可靠的实时测试运行环境。开发者经常需要花费大量时间调试和迭代AI生成的代码,以确保其符合项目需求,从而导致功能交付延迟。此前Amazon Q Developer开发代理主要专注于代码生成。在最新的版本更新中,该代理现在可以实时构建和测试代码,在开发者审核之前进行代码验证。这一新功能主要针对亚马逊社区开发者,对代码推荐、生成质量的反馈意见,包括检测错误、保持生成的代码与工程项目当前状态同步,并通过简化代码生成和测试流程,加快开发进程。
借助自然语言输入和项目代码的特定上下文,Amazon Q Developer代理能够帮助开发者实现复杂的多代码文件生成功能、修复Bug以及编写测试用例。例如开发者可以请求Amazon Q Developer代理为电商应用程序添加结账功能。代理会分析现有代码库,并在几分钟内完成所有必要的代码修改和测试,包括运行单元测试和构建代码,以确保代码可以被审核。这种方式显著提升了开发效率并减少错误。要在IDE中使用Amazon Q Developer代理,只需安装Amazon Q扩展,并在聊天窗口中输入/dev
命令即可启动请求。
当开发者在IDE中输入/dev
命令后,代理会打包项目并安全地上传至Amazon Q,然后启动针对特定项目的代码生成。Amazon Q Developer代理不仅负责代码生成,还能与开发者保持实时连接,在整个过程中提供更新,并最终交付一个完善的补丁或功能实现。
实时执行依赖Devfile
Amazon Q Developer的实时代码执行功能由Devfile - 容器化开发环境工具提供支持,它定义了开发环境以及代理在启动应用时执行的命令。如果项目中尚未包含Devfile,Amazon Q Developer将在首次运行/dev
后提示开发者创建一个。如果没有Devfile,代理仍然可以利用AI代码助手开发解决方案,但无法对应用进行构建或单元测试,限制了开发者获取实时反馈的能力。Devfile需符合 Devfile 2.2.0 规范。目前,Amazon Q Developer支持安装(install)、构建(build)和测试(test)命令。
最新Amazon Q Developer更新中的核心增强功能
- 自定义命令:开发者可以在Devfile中指定代理可执行的命令,以减少不必要的步骤,提高准确性。
- 灵活的环境设置:开发者可以使用预装依赖项的自定义Docker镜像来加快容器化开发环境的启动速度,确保代理具备所需工具。
- 沙盒安全性:Amazon Q Developer在隔离环境内执行代码,提供全面的日志记录和严格的权限控制,确保代码修改的安全性。
在该设置下,Amazon Q Developer可以直接在沙盒环境中执行测试、应用数据库迁移和运行安装命令,并将反馈提供给代理,以便进行应用迭代改进。
安全性与隔离机制
鉴于在AI代码助手中构建和测试我们的代码可能引入安全风险,Amazon Q Developer代理引入了多项安全防护措施:
- 环境隔离:所有命令都在隔离的安全沙盒环境中执行,且该环境不包含任何访问非公网资源的秘钥和密码,确保只有明确允许的操作能够安全执行。
- Devfile驱动:整个过程完全依赖于Devfile配置文件执行,开发者可以通过Devfile完全控制代理在SDLC过程中执行的命令。
开始使用Amazon Q Developer代理
要开始使用Amazon Q代码生成代理,大家需要拥有亚马逊云科技Builder ID,或使用IAM Identity Center进行组织级别授权,以便使用Amazon Q Developer。要在Visual Studio Code中使用Amazon Q Developer代理进行软件开发,只需安装Amazon Q扩展。扩展的最新版本可以在Amazon Q Developer页面找到。此外,该扩展还支持JetBrains、Eclipse(预览版)和Visual Studio IDE。关于支持的IDE列表及各IDE支持的功能,可以参考Amazon Q Developer文档。
接下来大家就可以在Amazon Q Developer的聊天窗口中输入“/dev”激活代码开发助手。
执行过程概览
Amazon Q Developer依托隔离的沙盒环境来安全地执行代理生成的代码,确保生成的代码安全运行并与原始代码库的代码不会有冲突。以下是执行过程的详细步骤:
1. 启动执行环境
在接收到开发者的请求后,Amazon Q Developer代理会启动一个沙盒实例或开发者指定的Docker容器,作为代码执行的隔离环境。
2. 安全执行命令
代理在沙盒环境中,基于Devfile规定的命令,安全地执行一系列Shell命令。Devfile起到测试环境配置的作用,确保开发环境的可复现性,并减少手动设置的工作量。
开发者可以在Devfile中定义自定义命令,用于安装依赖项、运行测试、应用数据库迁移或执行构建脚本,从而提高准确性和效率。
3. 反馈与同步
每个命令执行后,代理会跟踪代码变更并实时提供反馈,在命令执行过程中就进行实时迭代改进。
在本系列的上篇中,我们介绍了通过Amazon Q Developer代理的实时代码生成和测试功能,开发者可以更高效地交付高质量代码,同时减少错误,提升整体开发体验。欢迎大家继续关注小李哥的生成式AI应用安全系列,了解国际前沿的亚马逊云科技解决方案,关注我不要错过未来更多的干货内容!