1 - SmartCode AI编码助手

SmartCode AI编码助手是一款基于人工智能的编码助手,能够帮助开发者提高编码效率,减少重复劳动,提升代码质量。SmartCode 提供了主流IDE工具上的插件并提供多种开发语言的支持。

1.1 - SmartCode AI编码助手 VSCode插件

SmartCode 为使用 Visual Studio Code IDE 的开发者提供了简单易用的 AI编码助手 插件,提供多种开发语言 包括:JavaScript、Node.JS、Java、Kotlin、Python、Go、C#等的支持。提供智能代码补全、智能代码生成、智能代码重构、智能代码导航、智能代码分析等功能,帮助开发者提升编码效率,降低编码成本,提高代码质量。本文档将引导用户完成SmartCode插件的安装和登录AISE系统的基本操作,同时对插件更新机制和插件配置进行说明。

安装、配置和登录系统

本文档引导用户完成 SmartCode 插件的安装和登录AISE系统的基本操作,同时对插件更新机制和插件配置进行说明。

强烈建议:所有初次使用SmartCode的用户完成此练习内容。

获取插件安装包

SmartCode VSCode 插件作为 AISE系统针对 Visual Studio Code 提供的 AI编码助手 插件,可以通过 AISE服务 进行获取。您需要首先从您组织指定的 AISE管理员 处获取以下信息:

  • AISE服务地址
  • 您的AISE账号

获取以上信息后,请按以下操作步骤进行操作:

  1. 打开浏览器,并输入 【AISE服务地址】

  2. 输入您的 【AISE账号】,即可进入如下界面

用户登录首页

  1. 点击左侧菜单的 应用 | 应用市场 ,即可进入如下界面

应用市场首页

  1. 根据您所使用的IDE点击对应应用上的 安装 按钮,即可下载最新的 插件安装包。VSCode安装包为vsix格式。

插件安装和更新

插件安装和服务地址配置

  1. 下载完成后,打开 Visual Studio Code,在左侧工具栏上点击 插件 图标,在右上角的 菜单 上选择 从 VSIX 安装,在弹出的文件选择对话框中选择上一步下载的 vsix 文件,即可完成安装。

VSCode 插件安装

  1. 安装完成后会出现类似以下提示信息,并在工具栏上显示 SmartCode 字样,表示安装成功。

VSCode 插件安装

  1. 配置 【AISE服务地址】,如果您的插件是通用插件,可能需要先配置服务地址才能使用。

点击上图中的 打开设置,或者点击 SmartCode图标,在弹出的菜单中选择 设置

VSCode SmartCode 配置入口

这个操作会开启 VSCode 内置的设置界面,同时过滤到 SmartCode 相关的配置项上,在其中找到 AISE服务地址 配置项,输入您的 【AISE服务地址】。如果您的地址正确,底部状态栏会变成 SmartCode [请登录] 的状态。

VSCode SmartCode 配置服务地址

登录

以上配置好服务地址后,用户即可使用自己的 【AISE账号】登录系统。

  1. 点击状态栏上 SmartCode 图标,在弹出的菜单中选择 登录

VSCode SmartCode 登录

  1. VSCode 会提示用户打开浏览器或者通过复制登录地址方式手工登录,点击 打开 按钮。

VSCode SmartCode 登录

  1. 在开启的浏览器中使用您的【AISE账号】完成登录,浏览器显示如下信息,即代表登录成功。插件端应该在几秒钟内检测到登录状态,自行完成登录。完整登录过程视频如下

获取插件信息

SmartCode 插件提供一个 关于 界面,包含了插件和IDE的基本信息,这些信息有助于在遇到问题时的定位。用户可以通过点击状态栏 SmartCode图标 并选择 插件信息 开启。

插件信息

弹出的视图中包含一个 复制 按钮,可以用来复制所有信息。

插件信息

插件配置

SmartCode for VSCode 的插件配置分为 通用配置 和 Chat配置 两部分,通用配置通过 VSCode 内置的配置系统实现,属于静态配置;Chat配置则嵌入在 SmartCode Chat 界面中,为用户提供更灵活的动态配置能力。

管理通用配置

管理通用配置可以通过点击 SmartCode 状态栏图标,并选择 配置 进入以下界面

插件信息

当前支持的配置项和功能说明如下

配置项 说明
Smartcode:Language
SmartCode 语言
控制在Chat中大模型回复所使用的默认语言,支持:
• 中文(默认)
• 英文
说明:此配置可以与VSCode的界面语言不同,允许用户实现英文版VSCode上使用中文大模型进行交互
Smartcode:Version Check Mode
SmartCode 自动更新模式
控制SmartCode的自动更新行为
• Always(默认)- 在新版本出现时总是提示用户,由用户选择安装
• AlwaysUpdateQuite - 在新版本出现时立即下载并更新,只提示用户重新启动VSCode应用更新
• Manual - 不会自动检查新版本,由用户通过菜单中的 版本检查 触发新版本检查和更新动作
Smartcode:Version Check Notification
SmartCode 自动更新通知提示方式
控制SmartCode在检测到新版本时对用户的通知行为
• On(默认)- 在检测到新版本是立即通知用户
• Off - 不通知用户
• OffUntilRestart - 在下次重启VSCode之前停止通知
说明:新版本通知上提供按钮,允许用户设置为 Off 或者 OffUntilRestart。
Smartcode:Aise Host
AISE服务地址
控制SmartCode插件所连接的服务器地址
说明:企业版插件一般都会内置服务器地址。
Smartcode:Enable
编程语言代码补全控制
针对代码补全特性,允许用户控制在某种开发语言中开启或者禁用代码补全特性。需要通过手工编辑 setting.json 的方式实现。
Smartcode:Inline Suggest:Enable
是否提供行内代码补全
控制是否启用代码补全功能
Smartcode:Editor: Enable Auto Completions
自动显示行内代码补全
控制是否在编辑器中自动显示补全内容
Smartcode:Emoji Enabled
简化版Emoji表情符号作为Git提交信息
控制是否在生成提交注释时使用Emoji表情符号
Smartcode:Full Git Moji Spec
完整的 GitEmoji 表情符号作为Git提交信息
控制是否在生成提交注释时使用完整的 GitEmoji 表情符号

管理Chat配置

点击Chat窗口右上角的 设置图标 即可进入Chat配置页面

插件信息

当前支持的配置项和功能说明如下

配置项 说明
模型 控制当前对话所使用的大模型实例。
AISE服务允许配置多个大模型实例,并允许管理员根据用户在部门控制面板可见的对话模型。此列表中列出的是当前用户可用的大模型实例。
AI助理 控制当前对话为大模型设定的AI助理角色。
AISE服务允许管理员为不同用户设定不同的AI助理角色行为,即大模型的系统消息设置(System Message),通过系统消息可以控制模型当前的角色设定,确保模型行为符合企业组织策略。
AISE服务也允许用户通过AISE服务
行为 控制大模型行为模式,提供以下选项
• 精确(默认)- 适用于大多数软件开发场景,确保模型在同样提示下所生成的内容尽量保持一致
• 平衡 - 适当放宽模型的自由度,适合于需要尝试不同选择的场景,模型在同样提示下产生不同生成内容的可能性适当增加
• 创造力 - 允许模型进行发挥和创造
回复长度 控制每次大模型请求生成内容的最大token长度,提供以下选项
• 400(默认)
• 800
• 1000
• 2500
说明:由于不同模型所支持的最大生成token宽度不同,此设定需要根据当前模型的能力适当调整
历史 控制是否为当前大模型请求添加历史消息,提供以下选择
• 自动(默认):根据当前用户上下文token余量,自动添加尽量多的历史消息
• 不包含:禁用历史消息,每次对话均独立

自动升级

SmartCode for VSCode 插件配合 AISE服务 支持自动升级能力,此功能不依赖VSCode插件市场,可以在企业内部实现新版插件的推送和自动更新,并允许用户或者管理员对于升级行为进行细化控制。 版本检测或者升级过程如下

  1. 当用户重新启动VSCode时,SmartCode会自动连接服务器检查是否存在可升级的新版本。用户也可以通过点击 状态栏的SmartCode图标,在弹出的菜单中选择 版本检查 的方式手工触发。 一旦检测到新版本,会弹出以下消息提示用户。用户可以选择 升级 或者 取消 本次升级。

插件升级

  1. 用户点击 升级 按钮后,SmartCode会在后台自动下载新版本安装包并更新当前环境的插件。升级完成后会有如下提示。

插件升级

  1. 点击 重新加载 即可完成整个升级过程。

1.2 - SmartCode AI编码助手 JetBrains插件

SmartCode 为使用 JetBrains 全系列IDE的开发者提供的简单易用的AI编程助手插件,支持IntelliJ IDEA, PyCharm, GoLand, Rider, PhpStorm, WebStorm和Andriod Studio全系列JetBrains IDE。提供多种开发语言,Java、Kotlin、Python、Go、C#等的支持。提供智能代码补全、智能代码生成、智能代码重构、智能代码导航、智能代码分析等功能,帮助开发者提升编码效率,降低编码成本,提高代码质量。本文档将引导用户完成SmartCode插件的安装和登录AISE系统的基本操作,同时对插件更新机制和插件配置进行说明。

安装、配置和登录系统

本文档引导用户完成 SmartCode 插件的安装和登录AISE系统的基本操作,同时对插件更新机制和插件配置进行说明。

获取插件安装包

SmartCode VSCode 插件作为 AISE系统针对 Visual Studio Code 提供的 AI编码助手 插件,可以通过 AISE服务 进行获取。您需要首先从您组织指定的 AISE管理员 处获取以下信息:

  • AISE服务地址
  • 您的AISE账号

获取以上信息后,请按以下操作步骤进行操作:

  1. 打开浏览器,并输入 【AISE服务地址】

  2. 输入您的 【AISE账号】,即可进入如下界面

用户登录首页

  1. 点击左侧菜单的 应用 | 应用市场 ,即可进入如下界面

应用市场首页

  1. 根据您所使用的IDE点击对应应用上的 安装 按钮,即可下载最新的 插件安装包。IDEA安装包为zip格式。

插件安装和更新

插件安装和服务地址配置

  1. 下载完成后,打开 JetBrains IDE,通过菜单进入设置 | 插件 视图,并点击 齿轮 图标,在弹出的对话框中选择 从磁盘安装插件 …。在弹出的文件选择对话框中选择上一步下载的 zip文件。

插件安装

  1. 安装完成后SmartCode插件会出现在 已安装 的插件列表中,请点击 重启IDE 完成激活过程。

插件安装完成

  1. 配置 【AISE服务地址】,如果您的插件是通用插件,可能会出现以下提示信息,表示需要先配置服务地址才能使用。

插件安装完成

点击上图中的 修改设置,或者点击 SmartCode 图标,在弹出的菜单中选择 修改设置

插件安装完成

这个操作会开启 JetBrains IDE 内置的设置界面,同时过滤到 SmartCode 相关的配置项上,在其中找到 AISE服务地址 配置项,输入您的 【AISE服务地址】。如果您的地址正确,底部状态栏会显示 登录以使用AISE 的状态。

插件安装完成

登录

以上配置好服务地址后,用户即可使用自己的 【AISE账号】登录系统。

  1. 点击状态栏上 SmartCode 图标,在弹出的菜单中选择 登录到AISE

插件登录

  1. JetBrains 会自动打开浏览器进入 AISE登录界面,如果您之前已经登录AISE服务器,那么会自动完成登录动作。

插件登录

  1. 在开启的浏览器中使用您的【AISE账号】完成登录,浏览器显示如下信息,即代表登录成功。

插件登录

插件端应该在几秒钟内检测到登录状态,自行完成登录。完整登录过程视频如下

获取插件信息

SmartCode 插件提供一个 关于 界面,包含了插件和IDE的基本信息,这些信息有助于在遇到问题时的定位。用户可以通过点击状态栏 SmartCode图标 并选择 关于 开启。

插件信息

弹出的视图中包含一个 复制 按钮,可以用来复制所有信息。

插件信息

插件配置

SmartCode for JetBrains 的插件配置分为 通用配置Chat配置 两部分,通用配置通过 JetBrains IDE 内置的配置系统实现,属于静态配置;Chat配置则嵌入在 SmartCode Chat 界面中,为用户提供更灵活的动态配置能力。

管理通用配置

管理通用配置可以通过点击 SmartCode 状态栏图标,并选择 修改配置 进入以下界面

插件信息

当前支持的配置项和功能说明如下

配置项 说 明
显示语言 控制在插件相关界面中所使用的自然语言,包括插件本身控制界面和Chat中文模型回复的默认语言
• 中文(默认)
• 英文
说明:此配置可以与JetBrains的界面语言不同,支持用户实现中文版本JetBrains上使用中文与大模型进行交互
版本检查模式 控制SmartCode的自动检查版本更新的行为
• 自动检查(每小时)(默认)- 在新版本出现时总是提示用户,并由用户选择合适安装。每次自动检查间隔一小时。
• 手工检查 - 不会自动检查新版本,由用户通过菜单中的检查更新触发新版本检查和更新动作
AISE服务地址 控制SmartCode插件所连接的服务器地址
说明:企业版插件一般都会内置服务器地址。
最大补全Token数 控制代码补全特性每次从模型请求的补全长度
• 默认值:300
说明:不建议用户自行调整参数,过长的补全长度会降低补全的速度和精度,并会对模型服务造成较大压力。
自动补全 控制是否启用代码补全功能
• 开启(默认)
• 关闭
补全模式 控制代码补全的模式
• 单行补全(行级)(默认)
• 多行补全(方法级)
CodeLens 控制是否在函数方法体上方使用悬浮方式显示快捷菜单
日志级别 控制SmartCode输出日志的模式
• 信息(默认)
• 调试
说明:一般情况下不建议设置为调试模式,该模式应由技术支持人员指定情况下使用。

管理Chat配置

点击Chat窗口右上角的 设置图标 即可进入Chat配置页面

插件信息

当前支持的配置项和功能说明如下

配置项 说明
模型 控制当前对话所使用的大模型实例。
AISE服务允许配置多个大模型实例,并允许管理员根据用户在部门控制面板可见的对话模型。此列表中列出的是当前用户可用的大模型实例。
AI助理 控制当前对话为大模型设定的AI助理角色。
AISE服务允许管理员为不同用户设定不同的AI助理角色行为,即大模型的系统消息设置(System Message),通过系统消息可以控制模型当前的角色设定,确保模型行为符合企业组织策略。
AISE服务也允许用户通过AISE服务
行为 控制大模型行为模式,提供以下选项
• 精确(默认)- 适用于大多数软件开发场景,确保模型在同样提示下所生成的内容尽量保持一致
• 平衡 - 适当放宽模型的自由度,适合于需要尝试不同选择的场景,模型在同样提示下产生不同生成内容的可能性适当增加
• 创造力 - 允许模型进行发挥和创造
回复长度 控制每次大模型请求生成内容的最大token长度,提供以下选项
• 400(默认)
• 800
• 1000
• 2500
说明:由于不同模型所支持的最大生成token宽度不同,此设定需要根据当前模型的能力适当调整
历史 控制是否为当前大模型请求添加历史消息,提供以下选择
• 自动(默认):根据当前用户上下文token余量,自动添加尽量多的历史消息
• 不包含:禁用历史消息,每次对话均独立

自动升级

SmartCode for JetBrains 插件配合 AISE服务 支持自动升级能力,AISE服务 内置兼容JetBrains插件市场的API,可以在企业内部实现新版插件的推送和自动更新,并允许用户或者管理员对于升级行为进行细化控制。

SmartCode JetBrains插件已实现在后台自动下载新版本并完成更新,不再依赖JetBrains内置的插件市场机制进行下载和更新,简化和减少了用户操作。

版本检测或者升级过程如下

  1. 当用户重新启动JetBrains IDE 时,SmartCode会自动连接服务器检查是否存在可升级的新版本。用户也可以通过点击 状态栏的SmartCode图标,在弹出的菜单中选择 检查更新 的方式手工触发。 一旦检测到新版本,会弹出以下消息提示用户。用户可以选择 升级 或者 取消 本次升级。

插件信息 插件信息

  1. 用户点击 升级 按钮后,弹出SmartCode 后台下载中提示

插件信息

  1. SmartCode插件下载完成后,会弹出是否重启idea弹窗,重启IDE 提示插件自动更新完成。 插件信息 插件信息

JCEF安装步骤

Andriod Studio 是 Google 基于 JetBrains的IDE框架另外开发的用户andriod开发的IDE环境,默认不带JCEF框架。JCEF框架是用来在IDE中嵌入web应用的框架。SmartCode插件的chat组件使用了一个本地运行的web app应用,需要使用JCEF框架才能在Android Studio中正常显示和使用。其他JetBrains家族产品,比如IDEA,pycharm等会自带JCEF框架,无需按照本文档进行处理。 注意:Android Studio 版本低于2023.3.1的不支持选择本地路径。只能联网自动下载,需要配置Android Studio的代理,设置代理的主要目的是让 Android Studio 可以连接到github获取JCEF sdk包的列表数据,如果连接不到github,用户将看不到这个列表。

安装JCEF的步骤分为2步,以下2个步骤完成后,需要重新启动IDE再安装SmartCode插件。如果在使用本文档之前已经安装了SmartCode需要先卸载掉。

  1. 安装JCEF
  2. 修改Andriod Studio注册表

下载对应版本

https://github.com/JetBrains/JetBrainsRuntime/releases/tag/jbr-release-17.0.10b1087.21

Android Studio设置自定义JBR

  • 打开菜单项帮助查找操作…并搜索 “Choose Boot Java runtime for the IDE…”

JCEF安装

  • 选择解压的JBR目录,IDE 将重新启动。

JCEF安装

低于2023.3.1安装

设置代理的主要目的是让 Android Studio 可以连接到github获取JCEF sdk包的列表数据,如果连接不到github,用户将看不到这个列表。 因此,用户可以自行解决代理的问题,只要确保Andriod Studio可以连接到github就可以。

  • 设置代理

JCEF安装

  • 打开菜单项帮助查找操作…并搜索 “Choose Boot Java runtime for the IDE…”
  • 在下拉列表中选择一个带JCEF的版本安装
  • 打开菜单项帮助查找操作…并搜索 “Registry…”,修改注册表
  • 重启后安装插件

JCEF安装

修改Andriod Studio注册表

  • 打开菜单项帮助查找操作…并搜索 “Registry…”

JCEF安装

JCEF安装

ide.browser.jcef.contextMenu.devTools.enabled true
ide.browser.jcef.sandbox.enable false
ide.browser.jcef.gpu.disable true

重启Android Studio后安装插件

以上操作完成后,重新启动Andriod Studio再安装SmartCode插件。

2 - Code Review Agent 代码评审智能体

基于AI的代码评审工具,使用此工具可以自动生成 Pull Request(PR) 描述,提供代码改进建议,生成Change Logs。支持接入主流DevOps 平台。

代码评审智能体(Code Review Agent)是利用生成式AI技术实现的自动化代码评审功能,它可以自动扫描用户提交的代码变更,生成概要性描述或者评审意见,也可以接收用户的提问并根据代码变更内容给出答案。代码评审智能体旨在为参与代码评审的团队成员提高工作效率,特别是在面对改动量比较大的评审任务时,使用代码评审智能体可以大幅节省评审者用来阅读代码/理解代码的时间,同时也可以帮助被评审者提供可能的修复建议。

根据我们的测试,大多数团队的代码评审任务会涉及10个左右的文件修改以及几十处代码修改,类似的评审任务需要评审者花费至少30分钟的时间阅读和理解代码,再花费大致30分钟到1小时的时间给出评审意见。代码评审智能体则可以在5分钟内给出概要性说明(使用 summary 指令)以及评审意见(使用review)指令,然后再由评审者阅读这些概要性说明和评审意见。仅这一个环节就将为团队成员在每个评审任务上节省超过15-20分钟的时间,效率提升3倍以上(按人工30分钟完成理解,AI辅助下只需要10分钟完成理解)。

代码评审智能体支持与常见的DevOps平台进行集成,通过 Web Hook 的方式在用户提交 Git 拉取请求 (Pull Request 或者 Merge Request)的时候自动启动智能体介入评审过程,也可以通过指令的方式独立触发特定评审任务。

使用场景

场景1 - 自动生成PR摘要信息

利用自动摘要特性,可以简化用户创建PR的流程,同时也可以帮助用户快速了解PR的内容。对于一个包含10项代码变更的PR,使用自动摘要特性可以节省用户大约10分钟的时间。

  1. Azure DevOps 中创建一个 拉取请求(PR),这个过程和创建普通的PR没有任何区别,用户也不必对PR内容进行任何说明,这些内容可以由Code Review Agent自动生成了填写。在以下 New pull request 界面中,直接点击 Create 按钮即可。

创建PR

  1. 稍等片刻,Code Review Agent 会自动更新当前PR的页面,这个过程根据PR所包含的变更多少会有所变化,一般需要30秒-1分钟的时间完成整个更新过程。这个过程中用户无需刷新页面,Azure DevOps 的 PR 视图可以实时更新任何修改。

下图展示了更新完成的PR视图,其中包含了4项更新内容:

  • (1) 自动识别了PR类型为:增强功能
  • (2) 自动扫描所有变更内容后,生成了条目化的汇总信息,方便用户迅速了解PR内容
  • (3) 对所有变更内容进行分类,比如:功能/文档,并对每个文件的变更内容进行汇总说明
  • (4) 利用Azure DevOps所提供的标记功能对当前PR进行标记,方便后续检索

PR摘要信息

场景2 - 自动生成评审意见

利用自动生成评审意见的特性,用户可以快速了解PR中可能存在的问题,同时也可以提高评审质量。根据代码变更的复杂程度和数量,使用自动生成评审意见特性为每一处评审点节省10-20分钟的时间,同时还可以帮助开发者定位一些人工难以发现的问题。

  1. 用户可以通过 /review 指令对当前PR内容提出评审请求,Code Review Agent 会给出评审意见。在当前PR的评论中输入 /review 指令,并点击 Comment

PR Review

  1. 稍等片刻,Code Review Agent 会在后台自动评审代码,生成评审意见。这个过程中你可能会看到以下提示:

PR Review Progress

  1. 生成的审查意见如下,其中包括3部分内容
  • (1) PR审查建议:包括给予评审者的建议以及对这个PR评审难度的一个预估;识别当前PR是否包含了测试内容(主要识别单元测试);可能需要关注的重点问题以及代码改进意见。
  • (2) 可能出现的安全问题
  • (3) 按文件给出的评审意见

PR Review Result

场景3 - 智能问答

针对一些表难以理解的代码变更,利用智能问答特性可以帮助用户快速了解PR中的变更内容。根据我们的测试,每一次智能问答可以为用户节省大约10分钟或者更多的时间。当用户遇到一些自己不熟悉的代码语言、语法或着问题领域时,可能需要花费更多的时间去补充自己的知识才能识别PR中的问题,在这种场景下,智能问答特性可以帮助用户节省更多的时间。

  1. 用户可以通过 /ask 指令询问任何有关当前PR的问题,比如用户可以按以下格式输入问题:
/ask 这个PR对levenshteinDistance这个方法进行了什么修改?
  1. 生成的结果如下

注意:这里给出了详细的变更内容,并对变更内容进行了自然语言说明。利用这个特性,用户可以对PR中比较难以理解的变更内容进行询问,提高处理PR的效率和质量。

PR ASK

指令列表

当前 Code Review Agent 所支持的指令内容如下,我们持续改进现有指令的生成效果并根据需要持续添加新的指令内容:

  • /summary: 生成PR描述,创建PR时会自动生成,也可以手工执行。
  • /review:触发代码审查并提供反馈。
  • /ask [问题]:提出具体问题并获取回答。
  • /update_changelog:自动生成并更新变更日志。
  • /generate_labels:自动生成标签,并添加到当前PR中

配置指南

使用 Code Review Agent 之前需要在 Azure DevOps 对应的 团队项目(Team Project) 中配置对应的Service Hook,请参考以下链接获取详细的配置指南:配置指南

3 - SmartChat 企业级ChatGPT服务

SmartChat 为企业用户提供了一个基于浏览器的ChatGPT聊天工具,用户可以通过这个工具与各种AI模型进行智能对话,并且支持自定义AI助理、自定义提示词、多模态图片识别、文档对话和知识库对话等特性。

4 - SmartAnswer 企业知识库

SmartAnswer 企业知识库为企业用户提供了智能知识库服务,支持自动索引文件、信息管理系统,比如:Jira, Confluence, GitHub Issue 等内容,自动构建向量化知识库,提供智能搜索、智能问答等功能,帮助企业用户快速构建知识库,提升知识管理效率。