news 2026/5/29 22:03:08

AI编程5:阿里云的Qoder CN

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 22:00:28

Upload-Labs 文件上传靶场本地Docker配置

Upload-Labs 文件上传靶场本地 Docker 配置记录0x01 环境说明 本次环境为 Windows 本地环境&#xff0c;使用 Docker Desktop 部署 Upload-Labs 靶场。 环境大致如下&#xff1a; 操作系统&#xff1a;Windows 11虚拟化环境&#xff1a;WSL2 / Docker Desktop靶场镜像&#xff…

作者头像 李华
网站建设 2026/5/29 21:57:16

实测淋雨不短路!我家院子门禁开关终于选对了

家里的院子铁门一直缺一个室外门禁开关&#xff0c;以前图便宜买了个塑料面板的&#xff0c;结果半年后按键卡涩&#xff0c;一下雨还乱响&#xff08;估计是进水触发了回路&#xff09;。这次决定好好选一个真防雨的。翻了一圈&#xff0c;看中了中优这款ZU-KBM86F&#xff0c…

作者头像 李华
网站建设 2026/5/29 21:57:15

别再只用SSH了!AWS EC2实例创建后,这3种图形化远程连接方式更高效(VNC/RDP/EC2 Instance Connect)

解锁AWS EC2图形化远程管理的3种高效方案当你第一次通过AWS控制台成功启动EC2实例后&#xff0c;面对那个只有IP地址和密钥文件的空白终端界面&#xff0c;是否感到无从下手&#xff1f;特别是对于习惯图形界面操作的前端开发者、数据分析师或设计人员来说&#xff0c;纯命令行…

作者头像 李华
网站建设 2026/5/29 21:56:53

测试开发干货:用 Python 玩转数据库,告别 pymysql 的繁琐操作!

好久不见&#xff0c;我是ai橙好测开&#xff0c;专注 AI 测试开发与性能测试&#xff5e;在做接口自动化、性能测试或者日常数据校验时&#xff0c;数据库操作是绕不开的一环。相信很多同学和我一样&#xff0c;最开始接触 Python 操作数据库时&#xff0c;用的都是 pymysql 这…

作者头像 李华