2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

通义灵码企业代码补全增强使用实践

发布日期:2024-09-12 21:11:19 浏览次数: 2724
作者:阿里云云原生

微信搜一搜,关注“阿里云云原生”

通义灵码提供了企业代码补全增强的能⼒,在开发者使⽤通义灵码 IDE 插件的⾏间代码补全时,可以结合企业上传的代码库作为上下⽂进⾏⾏间代码补全,使代码补全更加贴合企业代码规范、业务特点。本⽂将分享如何构建⾼质量的企业代码库,以及开发者在前端和后端开发场景的使⽤实践。

管理员如何准备高质量企业代码库




Cloud Native

为确保代码数据的有效处理,我们建议您遵循以下指导原则来准备代码库。这将有助于提升检索的效率与准确性。

准备指南

1. 上传限制仅适⽤于源代码⽂件,代码库中应仅上传实际编写的源代码⽂件。例如,对于 Java 应上传 .java ⽂件,对于 C# 应上传 .cs ⽂件,对于 JavaScript 应上传 .js 或 .jsx ⽂件等。

2. 请避免上传以下内容。

  • 测试数据与代码:请勿上传测试脚本、测试⽤例或任何不包含业务逻辑的测试相关代码。
  • Mock ⽅法:排除所有由模拟⽅法和⼯具⽣成的代码,除非这些代码包含对业务逻辑的具体实现。
  • 构建产物:
  • 前端:排除通过构建⼯具(如 Webpack、Gulp 等)⽣成的⽂件,这些⽂件通常位于 dist 或 build ⽬录下。
  • 后端:排除编译⽣成的 DLL ⽂件及其他所有编译输出。

3. 注释要求如下。

  • 对希望被检索到的函数,在函数头部应添加详尽的注释。
  • 注释应提供充分的信息以区分不同的函数,建议参考注释模板或根据企业规范进⾏相应调整。

    /*** 更新指定订单状态。** @param orderId 订单的唯⼀标识符。* @param newStatus 新的订单状态。* @return boolean 表示更新是否成功。*/
    4. 函数名称规范要求。
    • 如果函数注释较为简单,则函数名称必须能够准确描述其功能。
    • 使⽤清晰且具描述性的命名⽅式,例如:exportOrdersToPDF、updateOrderStatus ⽽不是 func1 。

    上传指南

    • 打包压缩⽂件:将代码⽂件打包为 .zip、.gz 或 .tar.gz 格式。
    • 代码包⼤⼩限制:每个代码包的⼤⼩不得超过 100 MB。

    开发者如何使用企业代码生成增强




    Cloud Native

    插件版本要求

    仅适⽤于 VSCode 1.3.9 及以上版本,以及 JetBrains 1.3.10 及以上版本。

    后端场景使用实践

    1. 通过⾃然语⾔注释⽣成代码。
    步骤一:企业代码库代码上传
    上传包含所需功能代码的压缩包⾄企业代码库,例如雪花算法的代码,并确保⽬标函数遵循注释规范,注释位于函数头部。更详细代码库准备指南请参⻅上述管理员如何准备⾼质量代码库。
      /*** 使⽤雪花算法⽣成唯⼀序列号* @param workerId* @return*/public synchronized Long getSnowFlowerId(long workerId){long id = -1L;if (workerId < 0 || workerId > snowFlowerProperties.getMaxWorkerId()) {throw new IllegalArgumentException(String.valueOf("workerID must gte 0 and lte " + snowFlowerProperties.getMaxWorkerId()));}// ... 算法实现代码 ...return id;}

      步骤二:输入注释

      在集成开发环境(IDE)中定位到某 Java 类内,输入与期望召回的函数相匹配的注释。注释格式可以灵活,但应确保含义的准确性和⼀致性。
      第一种方式
        //请通过雪花算法⽣成唯⼀编号的代码,返回⽣成的id
        第二种方式
          /*** 使⽤雪花算法⽣成唯⼀序列号* @param wId* @return*/
          注释说明:
          • 注释⻓度要求:在编写代码时,注释应尽量避免过于简短,建议⻓度⾄少 15 个字符,过短的注释将无法触发召回。
          • 注释语义要求:确保注释的语义准确且有意义,最好包含关键词与返回值说明,以便通义灵码准确地理解和匹配相应的代码。
          • 多语⾔⽀持:⽀持中英⽂注释,代码库中的注释和实际编码时的注释可以使⽤不同的语⾔。
          • 参数名称灵活性:参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。

          步骤三:代码⽣成

          ⾸次回⻋后,灵码将提供基于注释⽣成补全建议;再次回⻋后,灵码将根据企业代码库中的代码进⾏补全。

          说明:

          • 如果您的注释中包含参数,灵码将⾃动调整⽣成代码中的参数名,确保命名⼀致性。

          • 如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。

          2. 通过函数签名⽣成代码。

          步骤一:代码库代码上传

          上传包含所需功能代码的压缩包⾄企业代码库,并确保这些函数具有清晰且独特的标识,以便于检索和识别。更详细代码库准备指南请参⻅上述管理员如何准备⾼质量代码库。

          步骤二:输入函数签名

          在集成开发环境(IDE)中定位到某 Java 类内,键入⽬标函数的签名部分。参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。
            public List<Object> nextList(String name, int size)

            函数签名说明:

            • 函数名称:使⽤较为清晰的函数名称,需要具备⼀定语义作为相似性依据。
            • 参数和返回值:类型和顺序需要与⽬标函数保持⼀致,但参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。

            步骤三:代码补全

            ⾸次回⻋后,灵码将提供代码补全建议;再次回⻋后,灵码将根据企业代码库中的代码进⾏⾃动补全。

            说明:

            • 灵码将根据您提供的参数名,⾃动调整⽣成代码中的参数名,确保命名⼀致性。

            • 如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。

            前端场景使用实践

            1. 通过标签补全前端⾃研组件代码。

            步骤一:代码库代码上传

            在开始之前,您需要确保所有必要的前端组件代码已经上传到企业代码库中。如下是 React 框架示例。
              <LTableisReady={isReady}formInitialValues={formInitialValues}rowKey="key"tableRef={tableRef}toolbarLeft={<Button type="primary">新增</Button>}formItems={formItems}formRef={formRef}columns={columns}request={async (params, requestType) => {const res: Record<string, any> = await apiGetUserList(params);return {data: res.data,total: res.total,};}}/>
              步骤二:编写组件代码
              在您的 IDE 中打开相应的 .jsx ⽂件,并开始编写代码。输入基础 HTML 标签或⾃定义组件标签,例如 <BatchUntagEditor />

              步骤三:代码⾃动补全

              当您输入的代码达到⼀定⻓度,并且能够与企业组件库中的代码匹配时,IDE 将⾃动触发代码补全功能,为您⽣成完整的组件代码。您也可以通过回⻋,主动触发代码补全。

              重要:请在完整的组件标签内触发您的补全。

              2. 通过⾃然语⾔注释⽣成代码。

              步骤一:代码库代码上传

              上传包含所需功能代码的压缩包⾄企业代码库,并确保每个函数都遵循注释规范,注释位于函数头部。更详细代码库准备指南⻅管理员如何准备⾼质量企业代码库章节。如下是 JavaScript 示例。
                /*** 根据报错信息⽣成,以id为键值的对象* @param {Array<validator,Result>} results* @return {Record<string,string>}*/function getErrObj(results) {// ... 函数实现代码 ...}
                步骤二:输入注释
                在 IDE 中,在 JavaScript ⽂件内输入特定的注释内容,如下示例。
                  //根据报错信息⽣成以 id 为键值的对象

                  注释说明:

                  • 注释⻓度要求:在编写代码时,注释应尽量避免过于简短,建议⻓度⾄少 15 个字符,过短的注释将无法触发召回。
                  • 注释语义要求:确保注释的语义准确且有意义,最好包含关键词与返回值说明,以便通义灵码准确地理解和匹配相应的代码。
                  • 多语⾔⽀持:⽀持中英⽂注释,代码库中的注释和实际编码时的注释可以使⽤不同的语⾔。
                  • 参数名称灵活性:参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。
                  步骤三:代码⽣成
                  ⾸次回⻋后,灵码将提供基于注释⽣成补全建议;再次回⻋后,灵码将根据企业代码库中的代码进⾏补全。

                  说明:

                  • 如果您的注释中包含参数,灵码将⾃动调整⽣成代码中的参数名,确保命名⼀致性。

                  • 如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。

                  常见问题:在重新安装插件后,即便重启 IDE 或重新登录,仍无法成功召回知识库中的代码

                  解决⽅案:
                  • 在 macOS 系统中,请执⾏以下命令以重启进程并清除缓存。

                    ps -ef|grep lingma|grep start|awk '{print $2}'|xargs -I {} kill -9 {}
                    • 如果是 Windows 系统,请在进程管理器中结束 Lingma 进程。

                    53AI,企业落地大模型首选服务商

                    产品:场景落地咨询+大模型应用平台+行业解决方案

                    承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

                    联系我们

                    售前咨询
                    186 6662 7370
                    预约演示
                    185 8882 0121

                    微信扫码

                    添加专属顾问

                    回到顶部

                    加载中...

                    扫码咨询

                    扫码登录
                    登录即表示您同意《53AI网站服务协议》
                    服务协议

                    欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

                    在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

                    一、 定义

                    本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

                    会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

                    知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

                    二、 账号注册与登录

                    登录方式:本网站支持以下登录方式,您可根据实际情况选择:

                    微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

                    手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

                    账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

                    实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

                    未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

                    三、 服务内容与规范

                    知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

                    服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

                    禁止行为:您在使用服务时不得实施以下行为:

                    利用技术手段批量爬取、下载、转存知识库内容;

                    将知识库内容用于商业目的或未经授权地向第三方传播;

                    干扰本网站正常运行或侵犯其他用户合法权益;

                    发布违法违规信息或从事违反公序良俗的活动。

                    四、 知识产权声明

                    权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

                    有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

                    侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

                    五、 个人信息保护

                    我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

                    您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

                    您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

                    六、 免责声明

                    内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

                    不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

                    第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

                    七、 违约责任

                    如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

                    如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

                    八、 法律适用与争议解决

                    本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

                    因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

                    九、 其他

                    本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

                    本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

                    我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


                    已查阅