DevChat:VSCode中的AI黑马

前言

编程对于很多人来说,可能是一件复杂且耗时的事情。在结合当下各类AI产品层出不穷的情况下,我是有在认真的去拥抱AI来结合我们的工作,帮助我们的工作提升效率,尝试过我们的官方G P T,以及各类国产AI产品,其实讲实话在编程方面还是有点繁琐,毕竟想要借助AI需要从我们的代码屏幕中切换到AI,帮我们生成部分代码复制后在嵌入我们的项目中,来回切屏的时间消耗当然问题不大,但是更重要的是思路会受到干扰,作为前端人的我们常用编辑器就是VSCode,所以后面也寻找并尝试集成在编辑器中的一些产品,讲实话省去切屏的步骤思路是不会受到干扰,但是整体的生成结果总是不尽人意,不过最近发现的DevChat算得上是我目前体验下来后觉得非常赞的一款产品;

DevChat做最务实好用的智能编程工具,不做AI试验品,前面这句话呢不是我说的,是DevChat自己说的,不过整体体验下来,我是比较认可他的这句宣传标语的,DevChat的魅力,首先来自于它的全面性。代码补全、语法检查、智能推荐,这些原本需要耗时耗力的任务,现在只需一键即可完成。而这一切,都得益于DevChat背后强大的AI算法。但DevChat不仅仅满足于此。它的真正价值,在于对用户体验的极致追求。无论是界面设计还是操作流程,DevChat都展现出了极高的水准。每一个细节,都经过了精心打磨,确保用户能够享受到最流畅、最便捷的体验。而对于那些对技术有着极高要求的开发者来说,DevChat背后的技术原理更是充满了魅力。机器学习、自然语言处理…这些前沿的技术,都被DevChat完美地融入到了日常的编程中。

在这里插入图片描述

与其他同类产品相比,DevChat的优势更为明显。不仅功能更为强大,更重要的是,它真正做到了与用户的心灵沟通。每一次更新、每一次优化,都是为了更好地满足用户的需求。总的来说,DevChat不仅是一款插件,更是一种编程的革新。它让编程变得更加智能,也更加人性。如果你还在为编程的效率而烦恼,那么不妨试试DevChat,它或许会给你带来意想不到的惊喜。下面我就来带大家感受一下这款AI工具DevChat https://meri.co/jwv

安装

我们访问上面的官方地址后首先进行个注册,注册的时候非常简单,就是邮箱加验证码,那么注册的时候会有一封邮件告知注册成功,里面包含了一个Access Key 的内容,这个内容我们下面会用到;然后回到官方后右上角有一个安装教程,里面讲解的比较详细,当然考虑大家看本篇文章的连贯性,我就也把步骤罗列一下:

安装依赖软件

这个几乎我们所有的程序员都是不需要的,如果你打开终端运行 git --version 返回版本号表明无需操作本步骤,如果你确实没有返回版本号,那你就参考 https://git-scm.com/book/en/v2/Getting-Started-Installing-Git 操作。完成安装于行上面命令出现版本号即可;

在这里插入图片描述

安装插件

打开咱们前端的趁手工具 VSCode,插件市场中搜索“devchat”,如下图,点击安装即可;

在这里插入图片描述

设置key

点击左下角的设置,选择命令面板/Command Palette,在弹出的命令面板中输入“devchat key”,点击如下命令

在这里插入图片描述

在这里插入图片描述

在最开始的时候跟大家提到过,我们注册成功邮箱收到邮件,其中包含了 Access Key 我们拿出来在弹窗中输入按下回车即可;

在这里插入图片描述

然后我们在插件中输入任意内容,测试下,正常回答就说明我们是ok了;在这里插入图片描述

当然我们这款插件可选择的AI版本还是比较齐全的;可以根据自己需求来进行切换

在这里插入图片描述

插件体验

我们先来小小的尝试一下,请帮我写一个js方法,要求传入一个树形结构的数组,和一个id,这个方法就可以给我返回匹配的ID所在层级和name值

在这里插入图片描述

function findNode(tree, id) {let result = {};// 递归遍历树形结构的数组function traverse(nodes, level) {for (let node of nodes) {if (node.id === id) { // 匹配idresult = { level, name: node.name };return;}if (node.children) { // 继续遍历子节点traverse(node.children, level + 1);}}}traverse(tree, 0); // 从根节点开始遍历return result;
}

我们可以看到他生成的代码;相对而言很精准的能够知道我想要的是什么,我们这款插件每次生成后会有一个按钮 insertCode,他可以将生成的内容直接push到我们的代码中的光标位置,非常的丝滑跟方便,那我让他帮我生成数据来验证一下吧!

function findNode(tree, id) {let result = {};// 递归遍历树形结构的数组function traverse(nodes, level) {for (let node of nodes) {if (node.id === id) { // 匹配idresult = { level, name: node.name };return;}if (node.children) { // 继续遍历子节点traverse(node.children, level + 1);}}}traverse(tree, 0); // 从根节点开始遍历return result;
}const tree = [{id: 1,name: 'Node 1',children: [{id: 2,name: 'Node 2',children: []},{id: 3,name: 'Node 3',children: [{id: 4,name: 'Node 4',children: []}]}]},{id: 5,name: 'Node 5',children: []}
];const id = 4;
const result = findNode(tree, id);
console.log(result); // 输出: { level: 2, name: 'Node 4' }

在这里插入图片描述

一次性能够生成这种比较精准的代码还是比较考验AI能力的,同时能够跟我们的编辑器做到这么高的融合程度真的很值得推荐;我们在来提升一下难度让他写一段贪吃蛇试试看;

在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<style>#game-board {position: relative;height: 300px;width: 300px;border: 1px solid black;}.dot {position: absolute;height: 20px;width: 20px;background: #000;}#fruit {position: absolute;height: 20px;width: 20px;background: #f00;}
</style>
</head>
<body>
<div id="game-board"></div>
<script>var dotSize = 20;var gameBoardSize = 300;var direction = 'Right';var snake = [{ top: 0, left: 0}];var fruit = null;function updateGameBoard() {var gameBoard = document.getElementById('game-board');// Clear boardwhile (gameBoard.firstChild) {gameBoard.firstChild.remove();}// Draw snakesnake.forEach(function(dot) {var dotEl = document.createElement('div');dotEl.classList.add('dot');dotEl.style.top = `${dot.top}px`;dotEl.style.left = `${dot.left}px`;gameBoard.appendChild(dotEl);});// Draw fruitif (fruit == null) {// No fruit - create onefruit = {top: Math.floor(Math.random() * gameBoardSize / dotSize) * dotSize,left: Math.floor(Math.random() * gameBoardSize / dotSize) * dotSize,};}var fruitEl = document.createElement('div');fruitEl.id = 'fruit';fruitEl.style.top = `${fruit.top}px`;fruitEl.style.left = `${fruit.left}px`;gameBoard.appendChild(fruitEl);}function updateGame() {var head = Object.assign({}, snake[0]); // Start with current headswitch (direction) {case 'Up': head.top -= dotSize; break;case 'Down': head.top += dotSize; break;case 'Left': head.left -= dotSize; break;case 'Right': head.left += dotSize; break;}// Game overif (head.top < 0 || head.top === gameBoardSize ||head.left < 0 || head.left === gameBoardSize ||snake.find(function(dot) { return dot.top === head.top && dot.left === head.left })) {snake = [{ top: 0, left: 0 }];direction = 'Right';fruit = null;return;}// Eating fruitif (fruit && fruit.top === head.top && fruit.left === head.left) {fruit = null; // Eat the fruit} else {snake.pop(); // Not eating - need to remove tail}snake.unshift(head);}window.setInterval(function() {updateGame();updateGameBoard();}, 200);window.onkeydown = function(e) {switch (e.key) {case 'ArrowUp': direction = 'Up'; break;case 'ArrowDown': direction = 'Down'; break;case 'ArrowLeft': direction = 'Left'; break;case 'ArrowRight': direction = 'Right'; break;}};
</script></body>
</html>

在这里插入图片描述

写在最后

虽然会有一些小的问题但是整体上的思路很赞,当然这种尝试我也只是想看看复杂情况下他的效果,真实不错,其实我们在日常的开发中,经常会有一些非业务层面的代码量,那么能够让我们的DevChat去帮我们搞定,对我们来讲就会节省时间去处理业务逻辑,从而就会提升我们的工作效率;在开发工程中我们也会遇到一些冗余代码或者是欠优化代码,其实我们都可以之际复制到左边让DevChat来帮我们搞定;很大的优势也在于它是真的不需要科技就可以直接体验AI的效果,因为我们很多时候其实在开发过程中的网络问题是不支持我们运用科技的,但是这个差价无需科技,而且响应速度很快的;推荐搭建使用!DevChat https://meri.co/jwv

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

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

相关文章

centos7虚拟机部署苍穹私有云环境记录

物理机建议16G内存以上&#xff0c;不然安装gpass过程中带不动虚拟机 步骤1&#xff1a;迅雷下载centos7.9镜像文件&#xff0c;并创建虚拟机&#xff0c;手动安装 http://ftp.sjtu.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 后面安装gpass时会有校验…

5.OsgEarth加载地形

愿你出走半生,归来仍是少年&#xff01; 在三维场景中除了使用影像体现出地貌情况&#xff0c;还需要通过地形体现出地势起伏&#xff0c;还原一个相对真实的三维虚拟世界。 osgEarth可通过直接加载Dem数据进行场景内的地形构建。 1.数据准备 由于我也没有高程数据&#xff0c…

【C程序设计】用心浇灌<C程序>

目录 数据类型 整数类型 实例 浮点类型 void 类型 类型转换 数据类型 在 C 语言中&#xff0c;数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间&#xff0c;以及如何解释存储的位模式。 C 中的类型可分为以下几种&…

C++ 重载

C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。 重载声明 是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不相同。 重载声明 当…

CUMCM历年赛题汇总

题目来源&#xff1a; 全国大学生数学建模竞赛官网 注&#xff1a;题目和数据均可在官网下载 2021–2023年 年份题号题目2023A定日镜场的优化设计2023B多波束测线问题2023C蔬菜类商品的自动定价与补货决策2023D圈养湖羊的空间利用率2023E黄河水沙监测数据分析2022A波浪能最大…

软考高级之系统架构师之软件工程

软件工程 面向对象设计原则 单一职责&#xff1a;设计目的单一的类开闭原则&#xff1b;对扩展开放&#xff0c;对修改关闭里氏替换&#xff1a;子类可以替代父类依赖倒置&#xff1a;要依赖于抽象&#xff0c;而不是实现。要针对接口编程&#xff0c;不要针对实现编程接口隔…

————python网络并发测试题————

理论篇 1、简述 OSI 七层协议 2、 什么是 C/S 和 B/S 架构 ? 3、 简述 TCP 三次握⼿、四次挥⼿的流程。 4、TCP 和 UDP 的区别 ? 为何基于 tcp 协议的通信⽐基于 udp 协议的通信更可靠? 5、 什么是 socket? 简述基于 tcp 协议的套接字通信流程 6、 简述进程、线程、协…

k8s中 pod 或节点的资源利用率监控

pod 或节点的资源利用率监控 1 简介2 Kubectl Top介绍3 生效kubectl top命令3.1 下载配置components.yaml3.2 修改配置components.yaml参数3 kubectl top 应用3.1 查看node节点的资源占⽤率3.2 查看pod的资源占⽤率1 简介 通过Kubectl Top命令,可以查看你k8snode节点或者pod的…

NSSCTF做题第9页(3)

[GKCTF 2020]CheckIN 代码审计 这段代码定义了一个名为ClassName的类&#xff0c;并在脚本的最后创建了一个ClassName类的实例。 在ClassName类的构造函数中&#xff0c;首先通过调用$this->x()方法获取了请求参数$_REQUEST中的值&#xff0c;并将其赋值给$this->code属性…

1049 数列的片段和

一.问题&#xff1a; 给定一个正数数列&#xff0c;我们可以从中截取任意的连续的几个数&#xff0c;称为片段。例如&#xff0c;给定数列 { 0.1, 0.2, 0.3, 0.4 }&#xff0c;我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4)…

做好事情 讲好故事 开启成功的网络口碑营销

从人类开始交换商品的时代开始&#xff0c;口碑营销就已经存在&#xff0c;是靠口耳传播的营销方式。小马识途认为进入当今移动互联网时代&#xff0c;口碑营销又有了新的发展&#xff0c;网络口碑营销推广开始普及。营销人员将传统口碑营销与移动互联网营销相结合&#xff0c;…

京东平台数据分析:2023年9月京东扫地机器人行业品牌销售排行榜

鲸参谋监测的京东平台9月份扫地机器人市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;9月份&#xff0c;京东平台扫地机器人的销量近14万&#xff0c;环比增长约2%&#xff0c;同比降低约4%&#xff1b;销售额为2.9亿&#xff0c;环比降低约4%&#xff0…

threejs(7)-精通粒子特效

一、初识Points与点材质 // 设置点材质 const pointsMaterial new THREE.PointsMaterial(); import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import gsa…

Linux云服务器限制ip进行ssh远程连接

对Linux云服务器限制IP进行SSH远程连接的原因主要有以下几点&#xff1a; 增加安全性&#xff1a;SSH是一种加密的网络传输协议&#xff0c;可以保护数据的机密性和完整性。通过限制SSH连接的IP地址&#xff0c;可以防止未经授权的访问和数据泄露。只有拥有访问权限的IP地址才…

Makefile三个版本的编写

1.Makefile Makefile是一个工程管理文件&#xff0c;简化编译的流程&#xff0c;完成自动化编译的过程 在Makefile中&#xff0c;会把编译的过程分为两步&#xff0c;先生成.o文件&#xff0c;再对.o文件链接&#xff0c;生成可执行文件 Makefile由变量、函数、和规则构成 2.引…

分治算法解决归并排序问题

分治算法定义&#xff1a;分治算法是一种问题解决方法&#xff0c;它将一个大问题划分为多个相同或相似的子问题&#xff0c;然后递归地解决这些子问题&#xff0c;最后将子问题的解合并得到原问题的解 作用&#xff1a; 排序算法分治算法在排序算法中得到广泛应用。例如&…

辅助驾驶功能开发-执行器篇(03)-Mobileye Control Requirements

1. 目的 本文描述了产品开发不同阶段(研发、验证和产品化)车辆集成的控制要求。 2. 控制接口要求 2.1 接口类型 控制模块与车辆之间的接口应基于CAN协议或Flexray协议。 2.2 通讯频率 控制模块与车辆之间的通讯频率应高于36Hz。通信频率优先选择为 50 Hz。 2.3 延迟 所有…

STM32 APP跳转到Bootloader

stm32 app跳转到bootloade 【STM32】串口IAP功能的实现&#xff0c;BootLoader与App相互跳转 STM32 从APP跳入BootLoader问题

一、基础算法精讲:双指针

目录 1、相向双指针 11.1 两数之和 II - 输入有序数组1.2 三数之和1.3 最接近的三数之和1.4 四数之和1.5 统计和小于目标的下标对数目1.6 有效三角形的个数 2、相向双指针 22.1 盛最多水的容器2.2 接雨水 3、同向双指针&#xff1a;滑动窗口&#xff08;区间大小可变&#xff0…

docker docker-compose安装(centos7)

docker安装 1.卸载旧版 卸载旧版 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.安装一个yum工具 yum install -y yum-utils3.配置docker的yum源 yum-config-manager -…