当前位置: 首页 > news >正文

AI编程5:阿里云的Qoder CN

通义灵码阿里云推出的智能编程助手,‌安装插件并登录阿里云账号‌即可在IDE中直接使用,支持代码补全智能问答单元测试生成等功能

通义灵码的VS Code插件没有下架,只是最近经历了一次重要的品牌更名和服务升级。你可能会发现在扩展商店里找不到“通义灵码”,但搜索“Qoder CN”就能找到它。

产品更名:2026年5月20日,阿里云将“通义灵码(Lingma)”正式升级更名为“Qoder CN”。

官方网站:https://lingma.aliyun.com/lingma/不知道为啥这东西要改头换面,新产品升级直接换名字,也换了官网地址:https://qoder.com.cn/

通义灵码和qoder有什么区别

qoder的插件和独立IDE有什么区别

vscode中的通义灵码

在vscode插件中搜索“通义灵码”,结果如下图所示,安装第一个qoder cn。

安装成功之后左侧状态栏多一个图标,点击,有提示要进行登录的界面,进行登陆(要先注册阿里云账号)

登录完成之后界面如下。其中有几个点进行说明

左上角有一排按钮,其中一个有提示credits套餐余量的,类似token消耗,默认赠送300credits(价值8元左右),一个月有效期。点击那个查看详情可以进入网页后台对消费进行详细查看。右下角也有个图标,这个达标工作状态,如果仍然在思考会是一个圆圈一直转,停了则是思考完了。左下角是一个对话框,是给AI下发指令的窗口。可以进行选择是智能问答还是智能体,前者是只是进行回答和提示,后者可以直接帮你操作,也可以进行大模型的切换

网上找点C++代码(一个框框版本的贪吃蛇游戏)进行测试

#include <iostream> #include <windows.h> #include <time.h> #include <conio.h> #define H 22 #define W 22 using namespace std; class chessboard { public: char qp[H][W]; int i, j, x1, y1; chessboard(); // 构造函数 void food(); void prt(int grade, int score, int gamespeed); }; chessboard::chessboard() // 初始化地图 { for (i = 1; i <= H - 2; i++) for (j = 1; j <= W - 2; j++) qp[i][j] = ' '; // 中间空白区域 for (i = 0; i <= H - 1; i++) qp[0][i] = qp[H - 1][i] = '#'; for (i = 1; i <= H - 2; i++) qp[i][0] = qp[i][W - 1] = '#'; // 边框 food(); // 初始化食物 } void chessboard::food() // 随机产生食物 { srand(time(0)); do { x1 = rand() % W - 2 + 1; y1 = rand() % H - 2 + 1; } while (qp[x1][y1] != ' '); qp[x1][y1] = '$'; // 生成食物 } void chessboard::prt(int grade, int score, int gamespeed) // 打印 { system("cls");//实现动画效果 cout << endl; for (i = 1; i < H-1; i++) { cout << "\t"; for (j = 1; j < W-1; j++) cout << qp[i][j] << ' '; if (i == 0) cout << "\tGrade:" << grade; if (i == 2) cout << "\tScore:" << score; if (i == 4) cout << "\tAutomatic forward"; if (i == 5) cout << "\ttime interval:" << gamespeed << "ms"; cout << endl; } } class snake : public chessboard // 继承了chessboard函数 { public: int zb[2][100]; long start; int head, tail, grade, score, gamespeed, length, timeover, x, y; char direction; snake(); void move(); }; snake::snake() // 构造函数 { // cout<<"\n\n\t\tThe game is about to begin!"<<endl; // for(i=3;i>=0;i--)//倒计时效果 // { // start=clock(); // while(clock()-start<=1000); // system("cls");//清屏 // if(i>0) // cout << "\n\n\t\tCountdown:" << i << endl; // } for (i = 1; i <= 3; i++) // 初始化尾巴 qp[1][i] = '*'; qp[1][4] = '@'; // 初始化头 for (i = 0; i < 4; i++) // zb数组存放打印点的横纵坐标,第一行x,第二行y { zb[0][i] = 1; zb[1][i] = i + 1; } } void snake::move() { score = 0; head = 3, tail = 0; grade = 1, length = 4; gamespeed = 500; direction = 77; // 右 while (1) { timeover = 1; start = clock(); /* 有键盘输入时kbhit函数返回1,反之0。 该空循环的作用,当到达时间或有键盘输入时跳出循环 */ while ((timeover = (clock() - start <= gamespeed)) && !kbhit()); //如果在超时前收到键盘信号,timeover=1,更新方向;如果超时,timeover=0,不更新方向,按原方向运动。 if (timeover) { getch(); // 按下某个字符时,无需回车自动读取 direction = getch(); } switch (direction) // 控制移动 { // xy存放头的坐标 case 72: x = zb[0][head] - 1; y = zb[1][head]; break; // 上 case 80: x = zb[0][head] + 1; y = zb[1][head]; break; // 下 case 75: x = zb[0][head]; y = zb[1][head] - 1; break; // 左 case 77: x = zb[0][head]; y = zb[1][head] + 1; break; // 右 } // if (x == 0 || x == 21 || y == 0 || y == 21) // 撞墙over // { // system("cls"); // cout << "\tGame over!" << endl; // system("pause"); // break; // } if (qp[x][y] != ' ' && !(x == x1 && y == y1)) // 到达的目标不为空且没吃到食物(撞墙、撞尾巴)over { system("cls"); cout << "\tGame over!" << endl; system("pause"); break; } if (x == x1 && y == y1) // 吃到食物那一帧的处理 { length++; score = score + 100; if (length >= 8) // 随着时间推移越来越快,难度增大 { length -= 8; // 每吃8个增加一次难度 grade++; if (gamespeed >= 200) gamespeed = 550 - grade * 50; } qp[x][y] = '@'; // 吃到食物后,食物处为头 qp[zb[0][head]][zb[1][head]] = '*'; // 原本头变成* head = (head + 1) % 100; // zb变长,取整数的最后二位数 zb[0][head] = x; // 更新头坐标 zb[1][head] = y; food(); // 吃到食物后更新食物 prt(grade, score, gamespeed); } else // 没吃到食物移动 {//实现贪吃蛇移动方式的算法 qp[zb[0][tail]][zb[1][tail]] = ' '; // 更新最后的一个点为空 tail = (tail + 1) % 100;//更新最后一个点后,倒数第二个点就成了尾巴 qp[zb[0][head]][zb[1][head]] = '*'; // 更新头点为* head = (head + 1) % 100;//%100是在数组溢出时回到开头重新使用 zb[0][head] = x; zb[1][head] = y; qp[zb[0][head]][zb[1][head]] = '@'; // 更新头点 prt(grade, score, gamespeed); } } } int main() { // 创建游戏对象:棋盘和贪吃蛇实例 chessboard cb; snake s; s.move(); }

游戏效果如下图

1.统计代码行数

在左下角对话框里面输入上述提示语,AI会自动统计,并展示如下结果

2.断网测试

我们把自己网络断了,再次进行测试,

可见这玩意儿其实就是个客户端,真正干活的是后台,断了网不干活

3.右键菜单

在代码窗口右键,可见多一个栏目(Qoder CN),有四个子菜单:解释代码、生成单元测试、生成注释、优化代码。可以先选中具体代码,在进行对应的条目进行工作。

我们选中一段代码,选择解释代码,效果如下图:

我们全选代码,选择生成单元测试,会看到同目录下生成一些单元测试文件。

我们选中main函数体,选择生成注释。如果当初选择的是问答模式,则AI会给我回答,

如何切换为智能体的模式,AI会直接修改我们的代码,并且给出前后对比

我们选中main函数体,选择优化代码,可以看到也可以进行代码优化

4.代码格式化

我们发下代码写的格式不好,有的缩进都没做好,可以在代码框里输入“代码格式化”,可以AI对代码进行了格式化。

5.修改游戏背景色为红色

我们尝试让AI帮我们修改一下程序背景色,可以看到AI对代码进行了调整

运行效果也变成了红色

这个是让我听吃惊的,这玩意儿真能理解代码呀

6.去除多余的注释

测试成功,不做截图

7.添加必要的注释

测试成功,不做截图

8.重构一下代码。是代码可读性更好一些

测试成功,不做截图

9.给chessboard添加一个排序冒泡函数,输入参数了类型为std::list<int>,实现从小到大排序

测试成功,不做截图

10.给当前项目生成一个C++简单工程,并输出helloworld

前面都是测试修改工程的,这次测试新建一个工程,也成功了

11.给当前项目生成一个C++工程,该工程是一款贪吃游戏

既然上述成功了,加大难度,也成功了

12.给当前项目生成一个C++工程,该工程是一款贪吃游戏,带有图形界面的

失败了,编译不过,连续几次让他解决编译错误问题,始终没解决掉

13.给黑框框贪吃蛇游戏设置背景图

失败了,因为本来就是console工程,没有渲染引擎,他也不知道该怎么加

14.解决12号编译错误

解决几次没有成功

15.检查有几个地方可能发生内存泄露

随机在代码里添加如下代码,然后问AI上述问题,AI成功找到

int *p1 = new int(10);

int *p2 = new int[10];

16.查出来程序崩溃原因

随机在代码里添加如下代码,然后问AI上述问题,AI成功找到

int *p1 = new int(10);

p1[2] = 2;

http://www.gsyq.cn/news/1423641.html

相关文章:

  • 宇树机器人G1二次开发实战: 地图管理
  • 盈利分析怎么做?1个万能公式,解决所有盈利分析!
  • 2026科研滤膜干货|强酸强碱过滤材质适配深度分享
  • 2026/5/28
  • lat.md:将任意项目代码转换为可查询的知识图谱
  • Java还有前景吗?2026年还能学吗?过来人谈谈见解
  • AgentScope:一个多Agent框架
  • 题解:洛谷 P13019 [GESP202506 八级] 树上旅行
  • 文旅 GEO×AIAGC:OPD 一人部门如何引爆文旅内容与获客效率革命
  • 别再纠结QCustomPlot、QtChart和QWT了!手把手教你用PyQt5为Arduino/STM32数据选对绘图库
  • 小红书怎么无水印保存视频到相册?2026详细操作攻略 - 科技大爆炸
  • 2026最新台州玉环黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 诚信金利回收
  • 测试开发干货:用 Python 玩转数据库,告别 pymysql 的繁琐操作!
  • 华硕笔记本终极控制指南:用G-Helper替代Armoury Crate的完整教程
  • 多符号连续 Chirp 调制解调系统(433MHz载波+数据chirp调制解调)V2.0
  • Claude商业分析报告合规性危机预警:GDPR/CCPA/《生成式AI服务管理暂行办法》三重穿透审计清单(含6份可直接套用模板)
  • 星球助手发布更新v1.9.0
  • OPC中国适合大学生吗?一份 AI 实践能力与作品集核验清单
  • 3步搞定加密压缩包密码恢复:ArchivePasswordTestTool专业级解决方案
  • USB3.2 Gen1 对拷线方案 —— 沁恒 CH9339
  • 2026最新绵阳安县黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 五金回收
  • 如何高效批量下载抖音无水印视频:douyin-downloader终极指南
  • 2026最新绵阳北川黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 五金回收
  • ArchivePasswordTestTool实战指南:5分钟找回遗忘的压缩包密码
  • 【字节跳动】贵州贵阳高山溶洞恒温天然冷源超算中心
  • 2026最新临沂沂南黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 五金回收
  • API管理平台选型策略:聚焦五大平台深度评估
  • 如何彻底解决Paradox游戏模组冲突:IronyModManager终极指南
  • 2026最新甘孜康定黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 金诚回收
  • 我做了一个 AI Agent 状态核心灯:ESP32 + OLED + WS2812 + 3D打印