AI助力,从零基础开发一个vscode插件

VS Code 与AI编程助手 Fitten Code 能够根据您的代码自动生成相关注释,通过分析您的代码逻辑和结构,为您的代码提供清晰易懂的解释和文档,不仅提高代码的可读性,还方便其他开发人员理解和使用您的代码。Fitten Code 能够根据您的代码自动生成相关注释,通过分析您的代码逻辑和结构,为您的代码提供清晰易懂的解释和文档,不仅提高代码的可读性,还方便其他开发人员理解和使用您的代码。(1)选中需要进行翻译的代码段,右键选择"Fitten Code – 重构选择代码",然后在输入框中输入需求即可完成转换。有以下两种方法可以实现。 阅读详情
AI摘要

本文介绍了借助腾讯云AI代码助手,从零基础开发vscode插件实现console.log功能的过程。包括开发环境准备、运行插件,实现生成和清除console.log等功能,解决代码缩进问题,还实现回车生成console.log,以及DIY和添加注释等,体现了AI在编程中的助力。

前言

在日常的代码开发中,总会遇到很多很小的知识点,想用却无从记起。尤其是在日常的前端开发,想要添加一个自己想要的css样式,却又想不起属性名,然后再css网站和笔记中搜索。当时想,如果能在IDE中内嵌一个AI编程助手就好了。

后来GitHub推出了Copilot,再后来腾讯云基于混元大模型,推出了腾讯云AI代码助手。在惊喜之余,更多的是想要体验一下腾讯云AI代码助手的功能。

开发需求

以前都是用IDEA做代码开发,但是IDEA太占内存,所以最近在朋友的推荐下,开始尝试使用vscode做前端开发。但是在开发中发现一个问题:vscode不和IDEA一样的是,在一个字符或者变量后面紧跟.log,无法自动补全为console.log。

我在IDEA可以自动补全console.log:

而在vscode中,却无法使用.log生成console.log,只能输入console.log,然后通过腾讯云AI编程助手的自动补全功能,补全括号和其中的变量部分:

vscode有着丰富的插件,同时也给开发者提供了独立开发插件的功能。虽然我对vscode插件开发没有涉猎过,但是这次想借着腾讯云AI代码助手的“东风”,看我是否可以从零基础,独自开发一个vscode的插件,实现IDEA中console.log的功能。

腾讯云AI代码助手

首先我们先在vscode中安装腾讯云AI助手的插件。在vscode插件市场中搜索腾讯云AI代码助手下载安装。

安装之后在下方就能看到AI助手的图标,点击即可使用。

腾讯云AI代码助手除了提供完善的自动补全代码、根据注释生成代码、代码解释、生成测试代码、转换代码语言、技术对话等能力,还内置了很多对话快捷指令,在对话输入框中输入 / 或 @ 就可调用快捷指令:

  1. /clear:清空当前会话。
  2. /comments:为所选的代码添加文档注释。
  3. /newNotebook:创建一个新的 Jupyter 笔记本。
  4. /explain:解释所选代码的工作原理。
  5. /fix:针对所选代码中的问题提出修复方案。
  6. /tests:为所选代码生成单元测试。
  7. /nameVariable:变量命名。
  8. @vscode:询问 VS Code。
  9. @terminal:询问如何在终端中执行某些操作。
  10. @workspace:询问您的工作空间,将自动引用当前代码。

插件开发环境准备

询问腾讯云AI代码助手创建vscode插件的流程:

根据给出的代码安装vocode插件的开发依赖和环境。在腾讯云AI代码助手给出的操作代码中,我们无需再通过选中,然后CTRL + C复制,在代码助手中提供了辩解的一键复制功能。

然后在terminal中执行代码,创建过程中根据提示操作,最后打包方式选择unbundled。

这样,vscode创建项目就创建完成。在src中只生成了一个extension.ts文件,猜测这就是vscode插件的代码文件。

选中代码,使用腾讯云AI代码助手的代码解释(Explain code),来解释一下代码。

从下图中可以看出,上面操作与在对话框中直接输入 @workpace /explain 的快捷指令效果相同。

通过腾讯云AI代码助手的代码解释,明白了extension.ts是如何定义插件的。对于开发者要做的就是在vscode.commands.registerCommand接口中,定义插件的逻辑代码即可。

const disposable = vscode.commands.registerCommand('test.helloWorld', () => {
   
   
		// 在这里编写插件的功能代码
		vscode.window.showInformationMessage('Hello World from aqi!');
	});

	context.subscriptions.push(disposable);
}

在给出的模板代码中,插件功能主题是vscode.window.showInformationMessage,在vscode中展示提示信息,提示信息我改成了“Hello World from aqi!”。

而test.helloWorld就是插件注册的命令,调用这个命令就可以执行插件的功能。同时,也需要在package.json声明这个命令。

其中title意味着在命令界面输入Hello World,就可以调用这个插件命令。

运行插件

第一次使用vscode,第一次开发vscode插件,还是要求助腾讯云AI代码助手:如何在vscode中运行自己开发的插件。

F5启动vscode的debug,进入Extension Development Host页面。

AI大模型(二):AI编程实践 如何通过GPT的指导,使不会代码的人从0-1实现开发需求 阅读详情

相关推荐

零基础必装10款VSCode神仙插件

VSCode神仙插件,手把手安装+使用教程,小白开箱即用,编码效率翻倍

瘦瘦瘦大人的博客 694

巧用 VSCode 与 AI 编码提升 Vue 前端开发效率

VSCode 与 Marscode AI、GitHub Copilot 等 AI 扩展工具的结合,为 Vue 前端开发带来了前所未有的便利和效率提升。通过合理使用这些工具,开发者可以快速生成代码、解决问题,减少重复劳动,将更多的精力放在业务逻辑的实现和创新上。希望本文介绍的方法和技巧能帮助更多的开发者利用这些工具,提升自己的 Vue 开发效率。在未来的开发过程中,不妨尝试将这些工具融入到自己的工作流程中,相信你会体验到它们带来的巨大改变。让我们一起借助科技的力量,开启高效的 Vue 开发之旅!

Judy1623 2937

AI开发模式:ideal或vscode + 插件continue+DeepSeek R1

Continue(代码生成) + DeepSeek-R1(部署优化) + TensorRT(加速引擎)/deepseek 如何将DINO-X模型量化到INT8并部署到Jetson Orin?:NVIDIA Jetson Orin(边缘端)+ RTX 4090(开发机)A[VSCode本地开发] -->|提交代码| B(GitLab仓库)C -->|生成ONNX模型| D[边缘设备OTA更新]# 使用DINO-X检测智能货柜中的商品,输出类别和位置。B -->|CI/CD| C[云端训练集群]

1635

【AI应用】在VSCode中集成AI编程 ------CodeGeeX智能编程助手

CodeGeeX是一款基于大模型的全能的智能编程助手。它可以实现代码的生成与补全、自动添加注释、代码翻译以及智能问答等功能,能够帮助开发者显著提高工作效率。CodeGeeX支持主流的编程语言,并适配多种主流IDE。CodeGeeX的功能:本文以VSCode中安装使用CodeGeeX插件为例,介绍CodeGeeX的使用方法;领略一下AI的强大;打开VSCode,在扩展中搜索CodeGeeX,点击安装即可,如下图所示: 安装成功后如下图所示: 在左侧就可以看到这个插件了;点击接受即可;然后长按下图图标,拖动到最

AnChenliang_1002的博客 5758

source tree clone error:fatal remote error: Repository not found

source tree clone error:fatal remote error: Repository not found

Linda的前端开发路 3077

使用Docker搭建MaxKB智能体平台

【代码】使用Docker搭建MaxKB智能体平台。

janthinasnail的博客 711

RISC-V嵌入式开发实战:手把手教你读懂并修改CH32V103的链接脚本(.ld)

本文深入解析RISC-V嵌入式开发中CH32V103链接脚本(.ld)的编写与优化技巧。从内存布局、段分配到实战调试,详细讲解如何解决程序跑飞、变量异常等典型问题,特别针对RISC-V架构的gp寄存器优化、中断向量表处理等特性提供专业指导,帮助开发者充分利用64KB Flash和20KB RAM资源。

weixin_33704234的博客 175

cesium 气象云(体积云)

本文介绍了基于Cesium的气象云渲染技术方案,其核心是通过GPU加速的光线投射算法实现气象云的三维可视化。方案采用分层架构设计:GPU计算层由顶点着色器和片段着色器组成,负责光线投射计算、3D纹理采样和颜色映射;CPU控制层处理数据预处理、纹理创建和参数配置。关键技术包括:顶点着色器计算相机位置和光线方向,片段着色器实现光线步进采样、颜色映射和半透明混合。该方案高效解决了气象数据与地理场景的融合问题,支持云图、温度场等复杂三维气象数据的实时渲染,具有高真实感和良好性能。

God's asylum的博客 1204

Python爬虫实战:公共资源交易平台招标数据采集实战 - 从零构建企业情报系统(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 1288

06 - 深度学习处理器原理

深度学习处理器的重要性在于它们可以加速深度学习任务的执行,从而推动了人工智能的发展。传统的通用处理器虽然可以执行深度学习任务,但它们不够高效,需要消耗大量的能量和时间。深度学习处理器通过硬件加速和特定设计来优化深度学习任务的执行,从而可以提高执行效率、降低能耗和加速训练和推断过程。 深度学习处理器的发展也推动了深度学习算法的创新,因为算法的发展需要硬件的支持和驱动。同时,深度学习处理器的出现也促进了更广泛的应用场景,包括自动驾驶、人脸识别、语音识别、图像识别等领域。因此,深度学习处理器的重要性不仅在于加速

m0_51339444的博客 752

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

Transformer时间序列预测-多变量输入-单变量输出+多变量输出,完整代码数据,可直接运行

9794

UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取

在采用NXOpen C++进行二次开发时,采用Menu/UIStyler是一种很常见的方式,这样可以制作精美的界面,而且常用的块对象也集成了快速编程的代码,我们可以快速的利用这些块来定制我们需要的界面。但是,对于很多初学者可能对选择对象的获取不是很熟悉,我们本文以选择“指定平面”来讲一下如何获取选择的对象和对象的参数。另外,由于我们的UG NX二次开发学习讨论群QQ一群已满,有希望参与学习的有志之士加入我们的QQ二群:683566590。

GimiGimmy 1091

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: LLM学习笔记02:两行Python代码,如何实现情感分析
下一篇: mac的Vmware提示无法获取内核符号
叫我阿柒啊
博客等级 码龄9年 2433粉丝 2369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值