vscode ai相关工具

232 阅读5分钟

本地应用细节功能完善

功能细节

GitHub Copilot:

  • 自动代码补全能力强,能够准确定位。
  • 并且拥有多文件操作能力
  • chat聊天流畅。
  • github copliot提供了review的能力,为团队管理,其中提供了submit for review功能,GitHub 网页。
  • 具有代码安全分析能力

Tabnine:

  • 生成的代码可 insert 放入对应文件,以及创建新文件并放入其中.
  • 选中文件进行test code,其中有较为详细的测试方法,以及测试方案,以及可通过chat 进行下一步测试方案或者结果,对应指令insert,copy等,可直接生成测试代码。
  • 提供了tabnine protected。
  • 能根据当前项目语法语义编写当前代码,如小程序。
  • tabnine claude,以及gpt4有条数限制,可使用tabnine protect
  • 测试方案为条例,可逐条查看
  • 提供团队能力
  • tabnine更多的功能在pro版本,需要付费。
  • 提供Atlassian Jira接入能力,概述的需求生成代码
  • codeReview能力,需要体验feed your coding standards ,支持平台GitHub。

Codeium:

  • 当前代码可直接看到其对应指令 refactor explain,generate function comment ,可操作性高。
  • 存在着不稳定性,初始化加载插件一直未出来。
  • 对多文件情况,适合查询,insert,update不适用。
  • 另外的几个ai工具无法使用,需要付费。

DeepSeek R1:

  • 有对应语言系统,提供简体中文
  • 在使用过程流畅度存疑,出现过403未知错误之类的,loading时间较长。
  • 可增加预定义的词条生成对应代码

Fitten Code

  • 在使用过程流畅度存疑,出现过403未知错误之类的,loading时间较长。
  • 该工具基于deepseek r1 建议和deepseek R1二选一。
  • 可添加常用语能够根据自身习惯添加。
  • 生成的测试代码直接生成对应测试文件以及对应代码。
  • 有预览功能
  • 能够根据图片编写代码,但该能力较弱

TONGYI Lingma

  • 其不止集成了deepseek,还有阿里的qwen,该qwen使用性较差,在对问题的判断上定位不够准确
  • 在使用过程流畅度存疑,出现过403未知错误之类的,loading时间较长。
  • 当前代码可直接看到其对应指令。
  • 其中提供了AI developer功能,可以解析项目上下文,对选中文件操作,并且根据文件语法自动处理,并反馈调整内容,但整体速度较慢。

Cursor

  • 本身可基于vscode 进行开发,vscode所有能力均可在该工具使用,包括插件。
  • 提供了3种模式,ask,edit,agent,这三种对应不同场景
  • 加入内置system prompt,根据具体需求增加内置的系统提示。
  • 可以和git联动。
  • 可以和第三方工具联动。
  • notepad应用。
  • 根据图片生成的代码准确度较高,目前能够定位swiper,根据当前场景生成小程序代码,以及定义当前数据方法,包括常用的代码习惯。
  • 并且能根据当前图片分析功能,将功能描述通过chat进行调整。
  • notepad 目前可作为需求文档,加入图片,进行代码生成。
  • 提供了linter error能力,校验代码规范,代码优化建议。

目前推荐Cursor

Cursor交互细节功能展示

  • 代码补全能力(能够根据上下文,以及自身代码习惯推荐对应代码,按tab键即可获取)

  • 自然语言生成能力(能够根据注释内容生成对应函数方法)

  • 根据图片以及notepad描述生成对应代码(能够根据输入的描述以及图片,较为准确的输出代码以及功能,并贴合当前项目代码)

1,输入chat内容:根据notepad描述以及图片生成该功能

2,描述以及应用的图片

3,功能反馈描述(可以通过聊天的方式去校正我们的需求)

4,输出代码

<template>

<view class``=``"floating-service" :``class``=``"{ 'is-hidden': isHidden }"``>

<!-- 电话按钮 -->

<view class``=``"service-item" @tap``=``"handlePhone"``>

<view class``=``"service-icon"``>

<image src=``"/static/images/icons/phone.png" mode=``"aspectFit" />

</view>

<text class``=``"service-text"``>``400 616 1698``</text>

</view>

<!-- 在线客服按钮 -->

<view class``=``"service-item" @tap``=``"handleCustomerService"``>

<view class``=``"service-icon"``>

<image src=``"/static/images/icons/customer-service.png" mode=``"aspectFit" />

</view>

<text class``=``"service-text"``>在线客服</text>

</view>

<!-- 发送邮件按钮 -->

<view class``=``"service-item" @tap``=``"handleEmail"``>

<view class``=``"service-icon"``>

<image src=``"/static/images/icons/email.png" mode=``"aspectFit" />

</view>

<text class``=``"service-text"``>发送邮件</text>

</view>

<!-- 问卷按钮 -->

<view class``=``"service-item" @tap``=``"handleSurvey"``>

<view class``=``"service-icon"``>

<image src=``"/static/images/icons/survey.png" mode=``"aspectFit" />

</view>

<text class``=``"service-text"``>问卷</text>

</view>

<!-- 关闭按钮 -->

<view class``=``"close-button" @tap``=``"handleClose"``>

<text class``=``"close-icon"``>×</text>

</view>

</view>

</template>

<script>

export default {

name: 'FloatingService'``,

data() {

return {

isHidden: false``,

phoneNumber: '400 616 1698'

}

},

methods: {

handlePhone() {

// 拨打电话

uni.makePhoneCall({

phoneNumber: this``.phoneNumber,

success: () => {

console.log(``'拨打电话成功'``)

},

fail: () => {

uni.showToast({

title: '拨打电话失败'``,

icon: 'none'

})

}

})

},

handleCustomerService() {

// 打开客服聊天框

this``.$emit(``'open-customer-service'``)

},

handleEmail() {

// 跳转到联系客服页面

uni.navigateTo({

url: '/pages/contact/customer-service'

})

},

handleSurvey() {

// 打开问卷反馈页面

uni.navigateTo({

url: '/pages/feedback/survey'

})

},

handleClose() {

this``.isHidden = true

this``.$emit(``'close'``)

}

}

}

</script>

<style lang=``"scss" scoped>

.floating-service {

position: fixed;

left: 30rpx;

bottom: 120rpx;

z-index: 100``;

display: flex;

flex-direction: column;

gap: 20rpx;

transition: transform 0``.3s ease;

&.is-hidden {

transform: translateX(-``200``%);

}

.service-item {

display: flex;

align-items: center;

padding: 16rpx 30rpx;

background: #``000``;

border-radius: 100rpx;

box-shadow: 0 4rpx 12rpx rgba(``0``, 0``, 0``, 0.1``);

.service-icon {

width: 40rpx;

height: 40rpx;

margin-right: 16rpx;

image {

width: 100``%;

height: 100``%;

}

}

.service-text {

color: #fff;

font-size: 28rpx;

white-space: nowrap;

}

}

.close-button {

position: absolute;

bottom: -80rpx;

left: 50``%;

transform: translateX(-``50``%);

width: 60rpx;

height: 60rpx;

background: #``000``;

border-radius: 50``%;

display: flex;

align-items: center;

justify-content: center;

box-shadow: 0 4rpx 12rpx rgba(``0``, 0``, 0``, 0.1``);

.close-icon {

color: #fff;

font-size: 40rpx;

line-height: 1``;

}

}

}

</style>

5,结果呈现: