AI 程序员使用指南
通义灵码 AI 程序员,具备多文件代码修改(Multi-file Edit)和工具使用(Tool-use)的能力,可以与开发者协同完成编码任务,如需求实现、问题解决、单元测试用例生成、批量代码修改等。
AI 程序员可以帮助开发者快速完成一个研发任务的代码编写工作,在与 AI 程序员对话过程中,可以遵循以下几点建议:
清晰的需求描述:首先需要澄清我们需要 AI 程序员帮我们做什么,建议包含一个明确的目标,并通过步骤式的结构化描述,详细地描述你期望完成的开发任务要求;
指定需要的上下文:选择代码文件、图片、codebase、codeChanges 等上下文,可以帮助 AI 程序员获取需求相关的语境。同时,结合详细执行步骤和要求,AI 程序员更精准地了解你的意图,生成最佳的方案和建议代码;
明确生成要求:告诉 AI 程序员在生成代码修改建议时,你期望它遵循的要求,比如语言、规范、格式、变更目标等,如“生成变更时,同时为每个方法生成英文注释”;
善用快照功能:当 AI 生成内容不符合预期,或你的需求有变化时,可以通过快照功能回退到之前的对话轮次和代码变更,继续重新提问;
审查和修改变更:AI 程序员完成多个文件的代码变更后,开发者可以通过变更对比查看视图(Diff View)进行审查,以及对局部代码片段进行接受、拒绝、修改,保证最后得到符合预期的代码变更。
通义灵码,每天进步不止一点点,可以和开发者协同完成编码任务。
唤起 AI 程序员(Summon your AI Developer)
当开发者期望和 AI 程序员一起完成一个研发任务时,可以通过 IDE 扩展导航打开通义灵码插件的窗口,并切换到 AI 程序员模块,或使用快捷键 ⌘
⇧
I
唤起 AI 程序员,即可开始使用。
操作 | macOS | Windows |
打开/关闭 AI 程序员 |
|
|
与 AI 程序员一起编程(Coding with AI Developer)
AI 程序员与开发者一起围绕开发任务进行编码工作时,开发者需要输入清晰的需求描述和要求,AI 程序员可以为开发者在工程内进行多个文件的修改,开发者审查并接受相关代码变更即可。
同时,通义灵码提供了相关的交互界面帮助开发者与 AI 程序员进行对话和交互,整体交互界面区域如下:
新建会话:如果和 AI 程序员正在对话并有文件变更,单击后将出现二次确认,确认后会终止或取消当前文件变更,同时创建一个新的会话;
AI 程序员对话区域:展示开发者(问题)和 AI 程序员(回答)对话的过程,如果涉及到文件变更、计划确认等,也将在会话流的回答卡片中进行状态展示或操作;
工作区:承载代码变更文件的展示,以及针对当前会话流中的多次对话产生的多次变更文件进行快照管理,同时提供查看、拒绝、接受代码变更的相关操作入口;
需求描述输入区域:开发者进行需求描述输入的区域,提供了选择上下文、自然语言输入、自然语言和上下文组装的能力;
变更对比查看和操作区域:当前快照下文件与其对应本地文件的变更差异查看视图,并提供针对代码变更片段进行修改、拒绝或接受的操作,以及文件级别的变更接受或拒绝操作。
需求描述输入(User Input)
打开 AI 程序员后,即可看到需求输入区域,在输入框内单击 ➕ 或者输入#
即可选择需要的相关上下文。输入完成后发送即可,AI 程序员将根据需求描述自动进行需求理解、相关信息检索、任务拆解、编码实现等。
多文件代码修改(Multi-file Edit)
变更文件生成过程
当 AI 程序员对工程内多个代码文件进行修改时,每一个文件的修改将至少经历生成、应用的过程,生成代码变更的过程中,可在 AI 程序员的回答卡片中和工作区中看到相关的变更文件,以及相应的状态:
生成中(Generating):根据任务拆解的修改计划生成对各个文件的代码片段修改建议的过程;
应用中(Applying):某文件的代码片段修改建议生成完成后,将自动结合原文件内容和代码片段修改建议,生成相关代码变更文件(非原文件);
应用完成(Applied): 代码变更文件生成完成。
回答卡片中的文件或工作区的文件在生成中、应用中的状态时,单击对应文件,即可看到对应文件的代码修改建议生成过程、代码变更文件与原文件变更对比(Diff)生成过程。
AI 程序员完成的代码变更文件将聚合在工作区,方便开发者进行查看和操作。
审查、接受、拒绝代码变更
单击工作区的查看变更按钮或单击文件列表中的某文件,即可看到对应文件的变更对比查看视图(Diff View),开发者在此视图中可以进行如下操作:
单击上下键进行切换查看当前文件的多个变更点;
单击某变更点上的拒绝、采纳按钮进行决策操作;
单击文件级操作区的前后键进行多个变更文件的查看;
单击文件级操作区的拒绝、采纳按钮进行决策操作;
局部修改当前变更文件。
JetBrains IDEs 的视图和操作位置,示意如下::
VS Code 的视图和操作位置,示意如下:
开发者基于当前快照的代码变更文件产生的修改,将统一进入当前快照的最新内容中,进行拒绝或接受操作时,将统一被拒绝或接受;
当单击接受某片段、某文件的代码变更时,变更内容将被合并到原文件代码内容中。
当所有代码变更文件均被操作过拒绝或接受变更后,当前快照会变为已接受、部分接受、已拒绝状态,各个状态的相关释义如下:
已接受:某文件有代码变更接受,视为该文件为已接受状态;所有文件为已接受状态,当前快照为已接受状态;
部分接受:某文件有代码变更接受,视为该文件为已接受状态;有部分文件为已接受状态,当前快照为部分接受状态;
已拒绝:某文件在无代码变更被接受,视为该文件为已拒绝状态;所有文件为已拒绝状态,当前快照为已拒绝状态。
多轮对话及变更快照(Multi-turns & Snapshot)
进行多轮次需求对话
当进行了一轮对话并生成代码变更文件后,如需继续补充需求或者修改需求,可在当前任务的会话流中继续提问,AI 程序员将结合前序轮次生成的代码变更分析补充的需求,并生成新的代码修改建议,产生一个或多个新的代码变更文件。
快照查看和变更回退
当需要查看或回退到前序轮次的修改时,可单击下拉箭头查看当前会话任务中产生的多次代码变更快照,选择后,可以看到相关信息变化或进行切换操作:
会话流中自动定位到产生该快照代码变更文件的回答卡片;
快照下方文件列表自动切换到所选快照下的代码变更文件,单击后可查看代码变更内容;
单击“切换”按钮,将当前代码变更回退到所选快照的代码变更状态。
单元测试生成(UnitTest Agent)
单元测试智能体是 AI 程序员所具备的一种专项能力,可以针对代码变更(#codeChanges)、单个或多个代码文件批量生成单元测试文件。开发者输入被测内容、生成要求,AI 程序员即可自动生成测试计划、测试用例、编译、运行以及根据错误信息进行自动修复,大幅提升测试用例覆盖度和用例的生成质量,降低开发者编写单元测试用例的成本。
目前在 IntelliJ IDEA 的通义灵码插件已上线单元测试智能体(自动编译、运行和修复),更多端的支持敬请期待。其他端可使用 AI 程序员直接生成对应的单元测试用例文件。
选择被测代码并输入测试要求
打开 AI 程序员后,在输入框内单击 ➕ 或者输入#
即可选择需要的相关上下文,并输入相关的指令要求(建议输入和生成单元测试相关要求的内容),输入完成后发送即可,AI 程序员会自动感知意图,开始进入生成单元测试的流程。
选择和确认环境信息
收到测试要求后,AI 程序员会自动检测本地环境 Java 版本、构建工具、测试框架、Mock 框架等信息,如果检测到多个版本,开发者可主动选择需要的版本;如果无法识别,将看到提示错误,单击“如何修复”按钮,开发者可以进一步了解如何配置相关组件。
确定被测方法
环境信息检查通过后,AI 程序员将自动分析被测文件,并生成测试计划,开发者可以主动选择需要覆盖的方法,选择并确认完成后,单击确定按钮,即可开始为每个方法生成单元测试用例。
每次至少选择 1 个方法为其生成测试用例,最多选择 20 个方法;
选择方法后,会提示整体生成过程预计需要的时间,以供参考。
查看生成进展
在确定被测方法后,AI 程序员将自动根据开发者选择的被测方法进行单测用例生成工作,并自动对生成的结果进行编译、运行和自动修复。最终的结果会展示在界面中,状态及释义如下:
状态 | 图标含义 |
代表运行通过的用例 | |
代表编译通过但运行失败的用例 | |
代表编译失败的用例 |
当所有方法的用例生成完成后,AI 程序员自动将编译通过和运行通过的用例合并成最终测试用例文件,并根据被测文件自动进行命名。对于编译失败的测试用例代码,开发者可自行选择是否需要,所有用例代码确认后,可单击完成按钮,测试用例文件将自动与原测试用例文件进行差异对比。
审查、接受测试用例文件代码
确认完成后,测试用例文件会出现在工作区中,开发者可单击工作区的查看变更按钮或单击文件列表中的某文件,即可看到对应文件的变更对比查看视图(Diff View),开发者可进行审查、局部修改、接受或拒绝部分代码等。确认所有代码变更后,单击接受按钮,,测试用例文件变更代码将正式进入到当前代码工程。
查看会话历史
如果需要回顾历史的会话任务,可单击会话历史按钮。你与 AI 程序员的会话均有 @AI Developer
标签,单击后即可查看相关对话过程。