一、引言

随着软件行业的快速发展和技术的进步,人工智能(AI)正在成为软件开发领域的一个重要组成部分。近年来,越来越多的AI辅助工具被引入到开发流程中,旨在提高效率、减少错误并加速创新。在这样的背景下,阿里云推出了通义灵码AI程序员——一款基于先进的自然语言处理技术和深度学习模型的AI编程助手。这款工具不仅在国内率先实现了AI程序员的概念落地,而且通过集成于Visual Studio Code (VS Code) 和 JetBrains IDEs 中,为开发者提供了前所未有的便捷性和灵活性。

通义灵码AI程序员的独特之处在于它能够覆盖从前端到后端的整个开发流程,利用对话式交互方式协助开发者完成从需求理解到最终产品发布的全过程。该系统不仅支持多文件级别的代码修改任务,如需求实现、问题修复以及批量生成单元测试等,还引入了诸如多版本快照管理和上下文自由组合等高级功能,进一步提升了开发者的生产力和项目管理能力。

二、唤起AI程序员

首先使用通义灵码AI程序员,需要将通义灵码IDE插件升级到最新版本(2.0.0及以上版本)。
image.png

当开发者期望和AI程序员一起完成一个研发任务时,可以通过IDE扩展导航打开通义灵码插件的窗口,并切换到AI程序员模块,或使用快捷键 ctrl+shift+I唤起AI程序员,即可开始使用。
image.png

切换到deepseekV3。
image.png

三、AI程序员功能

可以在对话框中输入:AI程序员都有哪些功能。就可以看到AI程序员都可以帮助我们做什么。
image.png

通义灵码中的智能问答和AI程序员在功能和定位上有以下区别:

  1. 智能问答

    • 功能:主要提供研发相关的问答服务,帮助开发者解决编程中的问题,如语法查询、API使用、错误排查等。
    • 定位:作为一个辅助工具,提供即时的信息查询和问题解答,帮助开发者快速找到解决方案。
  2. AI程序员

    • 功能:具备更广泛的编程能力,包括代码续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、异常报错排查、代码优化建议、代码重构以及跨语言支持等。
    • 定位:作为一个更全面的编程助手,不仅提供问答服务,还能直接参与代码的编写和优化,提升开发效率和质量。

总结来说,智能问答更侧重于信息查询和问题解答,而AI程序员则具备更全面的编程能力,能够直接参与代码的编写和优化。

四、输入需求

让AI程序员帮我设计一个在线电商网站各个模块,并且使用微服务架构。

AI程序员会把所有需要的模块都一一生成,包括用户服务、商品服务、订单服务、支付服务、购物车服务、推荐服务、通知服务、库存服务、网关服务、日志服务、配置服务、认证服务、搜索服务、评价服务等。
image.png

在生成过程中可以看到促销服务失败了,我们需要重新生成下。

image.png

QQ_1740815326897.png

在工作区可以看到对应的模块生成代码,点击接受。

image.png

image.png

五、优化代码

选中代码片段,进行优化。
image.png

image.png

可以看到我选中的是UserService.java,但是帮我优化的是PromotionService.java。这里AI理解出现了偏差。
image.png

重新再执行下上面的任务。可以看到UserService.java优化后的对比,此外还优化了PyamentService和AuthenticationService。理解的还是不够精准。
image.png

若不想全部接受,这里还可以选择对应的代码块进行接受,方便我们只进行局部代码修改。

image.png

六、多轮对话

当进行了一轮对话并生成代码变更文件后,如需继续补充需求或者修改需求,可在当前任务的会话流中继续提问,AI 程序员将结合前序轮次生成的代码变更分析补充的需求,并生成新的代码修改建议,产生一个或多个新的代码变更文件。

继续对上述的网站设计汇总增加对数据库接入模块。
image.png

生成的代码也是在工作区中,如下所示:
image.png

七、快照查看

当需要查看或回退到前序轮次的修改时,可单击下拉箭头查看当前会话任务中产生的多次代码变更快照,选择后,可以看到相关信息变化或进行切换操作。无须我们自己手工再去手工改写回退。
image.png

切换到快照0,可以看到回到了最开始。
image.png

image.png

还可以切回到最新。这些快照都是自动的,无法手动保存。

image.png

八、单元测试

单元测试智能体是 AI 程序员所具备的一种专项能力,可以针对代码变更、单个或多个代码文件批量生成单元测试文件。选中有测试的代码,然后执行单元测试。

image.png
image.png
image.png
image.png

也可以在+号处选择要单元测试的代码。这里看到AI程序员有理解不太准确了。多测试了databaseService。
image.png
image.png

可以继续优化单元测试,让其可以自动化进行测试。
image.png

开发者输入被测内容、生成要求,AI 程序员即可自动生成测试计划、测试用例、编译、运行以及根据错误信息进行自动修复,大幅提升测试用例覆盖度和用例的生成质量,降低开发者编写单元测试用例的成本。

九、解析图片

支持选择、拖拽或粘贴将图片添加为上下文,自动分析图片内容,并根据需求描述生成代码建议或问题解决方案等。
image.png
image.png
image.png

对如下图片设计的架构组件,生成对应部分的代码。
image.png

第一次正确解析了图片中的内容,

image.png

但没有达到想实现的效果,继续交互,用户服务使用Java,支付服务使用PHP,订单服务使用.NET,这三部分的代码都需要用对应的语言来生成。这次完成的不错。
image.png

十、历史会话

当不再需要上下文,或者重新开始一个需求,可以新建一个任务。
image.png

如果需要回顾历史的会话任务,可单击会话历史按钮,就可以回看。
image.png

image.png

十一、实战小游戏

在对话输入自己的需求,1分钟就可以让AI程序员生成一个贪食蛇小游戏。

image.png

import pygame
import time
import random# 初始化pygame
pygame.init()# 定义颜色
white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)# 定义显示窗口大小
dis_width = 800
dis_height = 600# 创建显示窗口
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('贪食蛇游戏')# 定义时钟
clock = pygame.time.Clock()# 定义蛇的大小和速度
snake_block = 10
snake_speed = 15# 定义字体样式
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)# 显示得分
def Your_score(score):value = score_font.render("Your Score: " + str(score), True, yellow)dis.blit(value, [0, 0])# 绘制蛇
def our_snake(snake_block, snake_list):for x in snake_list:pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])# 显示消息
def message(msg, color):mesg = font_style.render(msg, True, color)dis.blit(mesg, [dis_width / 6, dis_height / 3])# 游戏循环
def gameLoop():game_over = Falsegame_close = Falsex1 = dis_width / 2y1 = dis_height / 2x1_change = 0y1_change = 0snake_List = []Length_of_snake = 1foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0while not game_over:while game_close == True:dis.fill(blue)message("You Lost! Press C-Play Again or Q-Quit", red)Your_score(Length_of_snake - 1)pygame.display.update()for event in pygame.event.get():if event.type == pygame.KEYDOWN:if event.key == pygame.K_q:game_over = Truegame_close = Falseif event.key == pygame.K_c:gameLoop()for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_blocky1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_blocky1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_blockx1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_blockx1_change = 0if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:game_close = Truex1 += x1_changey1 += y1_changedis.fill(blue)pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])snake_Head = []snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)if len(snake_List) > Length_of_snake:del snake_List[0]for x in snake_List[:-1]:if x == snake_Head:game_close = Trueour_snake(snake_block, snake_List)Your_score(Length_of_snake - 1)pygame.display.update()if x1 == foodx and y1 == foody:foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0Length_of_snake += 1clock.tick(snake_speed)pygame.quit()quit()# 启动游戏
gameLoop()

启动之后,验证可以正常工作,完美。

image.png

十一、体验反馈

AI程序员不仅支持多文件级别的代码修改任务,还引入了工作区空间管理、快照回滚机制等创新功能,旨在为开发者提供更加便捷和高效的开发体验。下面是我的使用反馈。

1、工作区空间管理

优势:

  • 集中化管理: 通义灵码AI程序员增加了一个专门的工作区空间,所有与AI交互的需求描述及生成的代码都集中存储于此。这种设计极大地简化了项目的管理和维护过程,使得开发者能够更轻松地跟踪每一次对话及其对应的代码变更。
  • 清晰组织: 工作区内的内容按需分类,便于快速查找和回顾历史记录。这对于需要频繁切换任务或处理复杂项目结构的开发者来说尤为有用。

改进建议:

  • 界面优化: 虽然工作区提供了良好的集中管理功能,但在某些情况下,界面布局可能显得不够直观。未来版本可以考虑进一步优化UI/UX设计,使信息呈现更加清晰易懂。
2、快照回滚机制

优势:

  • 版本控制: 快照功能自动保存变更的代码,并在必要时回滚到之前的版本。这不仅提高了开发过程中的灵活性,也为错误修复提供了强有力的支持。
  • 数据保护: 在面对突发情况(如误操作导致的数据丢失)时,快照可以迅速恢复至稳定状态,确保业务连续性不受影响。

改进建议:

  • 手动创建: 虽然自动化的快照智能高效,但这些快照无法修改名字,一旦修改代码比较频繁时,无法记住每个快照对应的代码内容了,所以希望可以增加手动快照,可以自定义名字,方便回退。
3、AI理解偏差问题

挑战:

  • 准确性有待提高: 在AI程序员解析输入任务时偶尔会出现理解偏差,添加不必要的内容或忽略重要细节。这种情况可能导致最终生成的内容不符合预期要求。

改进建议:

  • 增强训练数据集: 通过不断丰富和完善训练数据集,特别是针对特定领域或行业案例的学习材料,可以有效减少AI的理解误差。
  • 用户引导优化: 提供更为详细的指导文档或教程,帮助用户更好地构建需求描述,以降低因表述不清引发的误解概率。
4、代码优化对比功能

亮点:

  • 可视化对比: 当进行代码优化时,系统会自动生成优化前后的对比视图,让开发者一目了然地看到具体改动之处。此外,还支持选择性修改特定代码段,给予用户更大的自主权。
  • 高效决策: 这种方式不仅加快了决策速度,也增强了开发者对最终结果的信心,因为可以根据实际需求做出最佳选择。

进一步探索:

  • 深度学习算法集成: 结合最新的深度学习算法,持续优化代码优化逻辑,使其不仅能识别表面差异,还能洞察深层次的性能瓶颈,从而提出更具针对性的改进建议。
5、总结

总体而言,通义灵码AI程序员凭借其独特的工作区空间管理、实用的快照回滚机制以及强大的代码优化能力,已经证明了其在提升开发效率方面的巨大潜力。对于追求高效敏捷开发流程的企业和个人开发者来说,通义灵码无疑是一个值得尝试的选择。未来,随着更多用户反馈的积累和技术进步,我们期待看到这款AI编程助手带来更多惊喜。

十二、1.0和2.0对比

去年测评了初出茅庐但已崭露头角的小鲜肉通义灵码1.0——工作上个的好搭子——通义灵码测评分享。

现在经过千锤百炼、带着一身绝技归来的大佬——通义灵码2.0出来了。今天最后对两者进行一个简单的对比。

1、代码生成能力:从片段到框架

通义灵码1.0主要提供基本的代码补全和简单的代码片段生成功能。在一定程度上提高了编码效率,但在处理复杂功能开发时,代码质量和逻辑完整性还有待提升16。

2.0版在此基础上有了显著改进,能够根据需求描述生成高质量的代码框架,包括详细的逻辑处理、数据结构设计和异常处理。例如,在设计电商网站时,2.0版能够提供一个完整的架构设计,涵盖了各个模块。

2、跨语言编程:从“菜鸟”到“大佬”的转变

再来聊聊跨语言编程这个话题。1.0版就像是一个初学者,也能玩转几种编程语言,而在处理复杂转换时总显得有些力不从心,需要手动调整的地方不少。

而2.0版则完全不同,不仅能轻松跨越多种语言之间的障碍,还能自动处理语言间的差异,生成符合规范的转换代码,并且提供了详细的注释和转换说明,简直就是开发者们的贴心小棉袄!

3、单元测试自动生成:从“新手村”到“王者段位”

说到单元测试自动生成,1.0版本可能只能算是刚刚走出新手村,能够生成简单的单元测试用例,但覆盖面和准确性都有待提高。

但是2.0版本呢?嘿,这家伙直接跳到了王者段位!能根据代码逻辑自动生成全面的测试用例,覆盖面广,能有效发现潜在bug,而且还提供了执行反馈,帮助开发者快速定位问题。

4、图生代码:从“画蛇添足”到“点石成金”

最后不得不提的是图生代码功能。1.0版本在这个领域有点像是在“画蛇添足”,支持的图形类型有限,生成的代码准确度也有待提升。

2.0版本则是掌握了点石成金的秘籍,支持多种图形类型,通过绘制图形就能迅速生成结构清晰、逻辑性强的代码,特别适合复杂的业务逻辑和系统设计。

通义灵码1.0曾经带给我们的惊喜与成长。正是有了1.0的基础,才有了今天的2.0。期待它的下一次进化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/72094.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/72094.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/72094.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rocky Linux 8.5 6G内存 静默模式(没图形界面)安装Oracle 19C

Oracle19c 下载地址 Database Software Downloads | Oraclehttps://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee 目录 一、准备服务器 1、服务器可以克隆、自己装 2、修改主机名 3、重启 4、关闭selinux 5、关闭防火墙 5.1、…

另辟蹊径:多维度解析 STM32 微控制器

开篇&#xff1a;STM32 的广泛影响力 在嵌入式系统的广阔天地中&#xff0c;STM32 系列微控制器宛如一颗璀璨的明星&#xff0c;散发着耀眼的光芒。它凭借出色的性能、丰富的资源以及高性价比&#xff0c;在工业、医疗、消费电子等众多领域广泛应用&#xff0c;成为无数开发者…

DeepSeek 使用窍门与提示词写法指南

一、通用提示词技巧 窍门分类技巧说明示例提示词明确需求用“角色任务要求”明确目标作为健身教练&#xff0c;为30岁上班族设计一周减脂计划&#xff0c;需包含饮食和15分钟居家训练结构化提问分步骤、分模块提问第一步&#xff1a;列出Python爬虫必备的5个库&#xff1b;第二…

全监督、半监督、弱监督、无监督

全监督、半监督、弱监督、无监督 全监督学习&#xff08;Fully Supervised Learning&#xff09; 数据标注&#xff1a;使用的数据集包含大量的输入数据&#xff08;特征&#xff09;以及与之对应的准确标注信息&#xff08;标签&#xff09;。学习目标&#xff1a;通过学习输…

c#实现485协议

在C#中实现RS-485协议通信,需要结合串口(SerialPort)操作和硬件收发控制(如RTS信号切换)。以下是详细的步骤和示例代码: 1. RS-485通信原理 物理层:RS-485是差分信号标准,支持多点通信(半双工)。 收发控制:通过控制RTS(Request to Send)或DTR引脚切换发送/接收模式…

删除变慢问题

问题&#xff1a; 有一个场景&#xff0c;每天都会删除数据&#xff0c;SQL为delete from xxx where record_date < DATE_SUB(now(), INTERVAL ? DAY) limit 1000 &#xff0c;一直循环执行&#xff0c;当执行到最后一次满足条件的时候&#xff0c;就会很慢 原理分析 索引与…

lua基础语法学习

lua基础语法学习 文章目录 lua基础语法学习1. 基础2. 输入输出3. 分支结构与循环结构4. 函数5. 元表与元方法6. 面向对象 1. 基础 注释 --单行注释--[[ 多行注释 --]]标识符 标识符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母&#xff0c;下划线&…

使用DeepSeek实现自动化编程:类的自动生成

目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节&#xff0c;让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中&#xff0c;自动化编程工具如…

【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验

Spring Boot 数据访问技术及特性 目录标题 Spring Boot 数据访问技术及特性摘要1. 引言2. Spring Data架构与原理2.1 Spring Data概述2.2 Spring Data核心组件2.3 Spring Boot与Spring Data的集成机制 3. Spring Boot与JDBC的整合3.1 JDBC整合流程3.2 数据源自动配置3.3 JdbcTe…

【时序预测】深度时序预测算法的对比与核心创新点分析

时间序列预测是机器学习和深度学习领域的重要研究方向&#xff0c;广泛应用于金融、交通、能源、医疗等领域。近年来&#xff0c;随着深度学习技术的发展&#xff0c;各种基于深度学习的时间序列预测算法层出不穷。这些算法在模型架构、训练方式和应用场景上各有特色。本文将对…

JVM线程分析详解

java线程状态&#xff1a; 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用start()方法。运行(RUNNABLE)&#xff1a;Java线程中将就绪&#xff08;ready&#xff09;和运行中&#xff08;running&#xff09;两种状态笼统的称为“运行”。 线程对象创建…

android智能指针android::sp使用介绍

android::sp 是 Android 中的智能指针&#xff08;Smart Pointer&#xff09;的实现&#xff0c;用于管理对象的生命周期&#xff0c;避免手动管理内存泄漏等问题。它是 Android libutils 库中重要的一部分&#xff0c;常用于管理继承自 android::RefBase 的对象。 与标准库中…

spring整合mybatis详细步骤

spring整合mybatis的全部过程(整合方式一 &#xff1a;简单版) 1.在pom.xml中导入mybatis相应的jar包&#xff1a; (2) < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis</ artifactId > < version >3.5.3&…

2025年Linux主力系统选择指南:基于最新生态的深度解析(附2025年发行版对比速查表)

Linux发行版生态在2025年持续演进&#xff0c;既有经典系统的迭代升级&#xff0c;也有新兴项目的崛起。本文结合最新行业动态&#xff0c;从个人用户到企业场景&#xff0c;梳理主力系统选择策略&#xff0c;助你找到最适合的Linux发行版。 一、新手友好型&#xff1a;平滑过渡…

ai-2、机器学习之线性回归

机器学习之线性回归 1、机器学习2、线性回归2.1、梯度下降法 3、python下调用scikit-learn 1、机器学习 2、线性回归 ####所以y可以当成我们需要的结果&#xff0c;根据公式可以求的y一撇的值更小&#xff0c;所以更接近需要的结果&#xff0c;所以y一撇拟合性更好 2.1、梯度下…

Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存

Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 目录 Flutter 学习之旅 之 flutter 在 Android 端进行简单的打开前后相机预览 / 拍照保存 一、简单介绍 二、简单介绍 camera 三、安装 camera 四、简单案例实现 五、关键代码 一、简单…

【原创】Open WebUI 本地部署

使用官网的默认部署&#xff0c;遇到不少的问题。比如白屏问题&#xff0c;其实需要修改几个参数即可。 其实在部署的时候有不少参数 WEBUI_AUTH False ENABLE_OPENAI_API 0 PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG C.UTF-8…

【造个轮子】使用Golang实现简易令牌桶算法

本文目录 1. 令牌桶算法2. 调用第三方库实现令牌桶3. 手撕令牌桶 前言&#xff1a;之前在Bluebell社区项目中&#xff0c;我们使用了开源的库来实现令牌桶限流&#xff0c;这次我们试着使用Go来手撕实现下令牌桶算法。 1. 令牌桶算法 为了防止网络拥塞&#xff0c;需要限制流…

C#开发的Base64编码及解码完整源码及注意事项

在软件开发时&#xff0c;经常用Base64编码和解码功能。本文介绍一个简单易用的Base64 编码和解码工具&#xff0c;顾名思义&#xff0c;就是简单快捷地进行 Base64 代码的解码或编码操作。您的数据可以轻松地编码为 Base64 编码&#xff0c;也可以解码为可读的格式。传输数据时…

【Linux第一弹】Linux基础指令(上)

目录 1.ls指令 1.1 ls使用实例 2.pwd指令 3.cd指令 3.1 cd使用实例 4.touch指令 4.1touch使用实例 5.mkdir指令 5.1mkdir使用实例 6.rmdir指令和rm指令 6.1 rmdir指令使用实例->: 6.2 rm指令使用实例 7.man指令 8.cp指令 8.1 cp 使用实例 9.mv指令 9.1mv使用…