通义灵码提供了企业代码补全增强的能⼒,在开发者使⽤通义灵码 IDE 插件的⾏间代码补全时,可以结合企业上传的代码库作为上下⽂进⾏⾏间代码补全,使代码补全更加贴合企业代码规范、业务特点。本⽂将分享如何构建⾼质量的企业代码库,以及开发者在前端和后端开发场景的使⽤实践。
管理员如何准备高质量企业代码库
Cloud Native
准备指南
2. 请避免上传以下内容。
-
测试数据与代码:请勿上传测试脚本、测试⽤例或任何不包含业务逻辑的测试相关代码。 -
Mock ⽅法:排除所有由模拟⽅法和⼯具⽣成的代码,除非这些代码包含对业务逻辑的具体实现。 -
构建产物:
-
前端:排除通过构建⼯具(如 Webpack、Gulp 等)⽣成的⽂件,这些⽂件通常位于 dist 或 build ⽬录下。 -
后端:排除编译⽣成的 DLL ⽂件及其他所有编译输出。
3. 注释要求如下。
-
对希望被检索到的函数,在函数头部应添加详尽的注释。 -
注释应提供充分的信息以区分不同的函数,建议参考注释模板或根据企业规范进⾏相应调整。
/*** 更新指定订单状态。** @param orderId 订单的唯⼀标识符。* @param newStatus 新的订单状态。* @return boolean 表示更新是否成功。*/
-
如果函数注释较为简单,则函数名称必须能够准确描述其功能。 -
使⽤清晰且具描述性的命名⽅式,例如:exportOrdersToPDF、updateOrderStatus ⽽不是 func1 。
上传指南
-
打包压缩⽂件:将代码⽂件打包为 .zip、.gz 或 .tar.gz 格式。 -
代码包⼤⼩限制:每个代码包的⼤⼩不得超过 100 MB。
开发者如何使用企业代码生成增强
Cloud Native
插件版本要求
后端场景使用实践
/*** 使⽤雪花算法⽣成唯⼀序列号* @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;}
步骤二:输入注释
//请通过雪花算法⽣成唯⼀编号的代码,返回⽣成的id
/*** 使⽤雪花算法⽣成唯⼀序列号* @param wId* @return*/
-
注释⻓度要求:在编写代码时,注释应尽量避免过于简短,建议⻓度⾄少 15 个字符,过短的注释将无法触发召回。 -
注释语义要求:确保注释的语义准确且有意义,最好包含关键词与返回值说明,以便通义灵码准确地理解和匹配相应的代码。 -
多语⾔⽀持:⽀持中英⽂注释,代码库中的注释和实际编码时的注释可以使⽤不同的语⾔。 -
参数名称灵活性:参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。
步骤三:代码⽣成

说明:
-
如果您的注释中包含参数,灵码将⾃动调整⽣成代码中的参数名,确保命名⼀致性。
-
如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。
步骤一:代码库代码上传
步骤二:输入函数签名
public List<Object> nextList(String name, int size)
函数签名说明:
-
函数名称:使⽤较为清晰的函数名称,需要具备⼀定语义作为相似性依据。 -
参数和返回值:类型和顺序需要与⽬标函数保持⼀致,但参数名称可以灵活处理,通义灵码会根据提供的参数⾃动调整以匹配召回的代码。
步骤三:代码补全

说明:
-
灵码将根据您提供的参数名,⾃动调整⽣成代码中的参数名,确保命名⼀致性。
-
如果需要刷新缓存获取新的补全建议,macOS 可以使⽤ ⌥(option) P ⼿动触发⾏间补全,windows 可以使⽤ Alt P ⼿动触发。
前端场景使用实践
步骤一:代码库代码上传
<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,};}}/>
步骤三:代码⾃动补全

重要:请在完整的组件标签内触发您的补全。
步骤一:代码库代码上传
/*** 根据报错信息⽣成,以id为键值的对象* @param {Array<validator,Result>} results* @return {Record<string,string>}*/function getErrObj(results) {// ... 函数实现代码 ...}
//根据报错信息⽣成以 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 进程。

