Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AutoDev 1.8 融合 DevOps 规范和实践,构建演进式 AI 辅助编码

AutoDev 1.8 融合 DevOps 规范和实践,构建演进式 AI 辅助编码

作者头像
Phodal
发布于 2024-04-10 11:30:26
发布于 2024-04-10 11:30:26
3540
举报
文章被收录于专栏:phodalphodal

在新版本的 AutoDev 中,我们又融入了一系列软件开发的实践,以更好地辅助开发人员的日常工作。这些新的特性,融合了我们对于 AI 辅助编码的新理解。诸如于:

  • 重构:AI 重命名、坏味道重构、重构建议。
  • 提交信息优化:结合用户输入的,提交信息生成
  • CLI 生成:结合用户输入的,生成 CLI 命令

还要最重要的中文 prompt 支持 —— 以更好地适应国内的模型和开发习惯,以及一系列的 bugfix 和新特性。

演进式 AI 辅助编码

生成式 AI 辅助编码的两条技术路线是:重新生成还是代码变更。Unit Mesh 是我们设计的 AI 编码的重新生成架构范式,当来了新需求时,每次都生成新的代码。哪怕是重新生成的效果再好,也受限于生成式 AI 的能力。因此,在实际落地的过程中,AutoDev 这样的辅助代码变更工具,才是当前适合于我们的演进路径。

代码变更,意味着我们需要人类和 AI 能理解现有的代码,以做出合适的决策建议。而如果我们预期 AI 能理解代码、需求,并编写出规范化的代码, 就依赖于我们构建了研发的知识工程体系。两个典型的场景是:现有需求总结和重构。

  • 现有需求总结。理解用户输入,检索到对应的现有代码实现逻辑,由AI 来总结已有的逻辑实现
  • 重构。AI 重构的难度介于自动生成代码与架构设计之间,是一个非常不错的探索场景。

尽管结合 RAG 技术,可以提供足够没用的信息,以生成可能更适用用户意图的信息,但是并不适合开发人员的日常高频场景上使用。因此,如何在 AI 辅助工具中构建规范与最佳实践,并内建软件开发知识工程,以拉升基线水平是一个非常有意思的挑战。

引子 1:如何让 AI 更好地重构出理想的代码?

如果你探索过使用 AI 来构建代码时,你会发现:AI 懂的重构手法你都懂,但是看别人使用 AI 重构似乎非常顺手。这是为什么呢?重构通常依赖于好的上下文,即需要开发人员拥有大量的先验经验。简单来说就是:表达意图与构建意图所有的上下文

简单来说,当你缺少一个代码改进的方向时,无法给 AI 一个明确的意图,剩下的就要靠 AI 随机了 —— 因此,大部分情况下,AI 只是进行简单的重命名、方法提取之类基本的重构手法。而:

  • 如果你告诉 AI,你要重构多个 if 到策略模式,那么它就会给你生成策略模式的代码。
  • 如果你给了 AI 对应的继承关系,那么它就会考虑到继承关系。
  • 如果你给了 AI 一些坏味道,那么它就会考虑到坏味道。

理解这一点,在工具上实现辅助重构就变得非常简单了。

引子 2:AI 辅助理解需求与实现

在研发数字化程度足够高时,我们可以轻松从一个线上的日常位置,自动关联到对应的需求变更原因。即从线上的日记信息,关联到发布与构建信息、代码库, 结合代码的变更行数,再结合变更信息(提交信息),找到对应的需求。

然,现实是遇到以下的两类场景,你就跪了:

  • AI 理解现有需求。大量的系统中,需求是没有有效记录(细节等)的,最后以代码中的实现为主。
  • AI 匹配需求变更点。代码中必然存在大量的 yydsSort、cxkdlq 词汇,这一类词汇连人类也是无法理解的。

这两类场景,都是从 1-60 的能力辅助范围,可以大大节省我们的时间。可是,我们可能会遇到的问题是,我们处于的位置是 0 的阶段,缺少对应的数字化。

融合规范、实践的工具落地

为了解决上述的多种问题,我们引入了一系列的新特性,以将规范、实践、软件知识工程融合到我们的工具中。

示例 1:提交信息生成,构建研发孪生

在“标准”的 DevOps 实践中,在流水线门禁中,限制提交信息的格式,以保证提交信息的质量。因为代码的变更提交信息直接关联到了需求与代码的关系, 对于研发数字化来说,是一个非常重要的环节。在结合 AI + IDE 时,过程应该是:

  1. IDE 中接入内部 OA 系统,以获取当前的用户信息。
  2. 根据用户信息,获取当前用户的需求信息,如需求 ID。
  3. 结合需求 ID 和代码变更信息,生成提交信息。

诸如于: refactor(rename): handle exceptions and improve logging for rename suggestions #129。简单来说,借助生成式 AI 的能力, 将提交信息生成的过程自动化,在提升开发人员体验的同时,也构建了研发孪生的基石。

PS:由于 Rename 可能是高频场景,所以需要手动在配置页开启: AutoDev -> AutoDev Coder -> Enable Rename suggestion

示例 2:标识坏味道,改进代码质量

如上所述,重构依赖于好的上下文或者意图,而代码中的坏味道就是一个非常好的意图。结合 IDE 自带的代码检查工具,我们可以获取到代码中的坏味道信息, 并将其转化为 AI 可以理解的信息,生成重构完后的代码,或者对应的重构建议。

类似的工具,还有诸如于 [Alibaba Java Coding Guidelines](虽然官方已经不维护了,但是毕竟开源),只需要获取对应的静态分析结果, 诸如于: Variable 'content' is never used,便可以让生成式 AI 发挥更大的作用。

当然了,在 AutoDev 1.8 中,我们优化了(复制了 JetBrains)的提示词,同时还提供了随机的重构建议,以鼓励用户在不满意的情况下,尝试更多的重构。

示例 3:语义化重构,可检索的代码实体

当代码发生变更时,原有的函数名、类名,便与原先的语义发生变化。而为了让后续的代码检索更加方便,需要将代码实体命名更加语义化。因此结合 #132 与 #129,我们添加了 AI 重命名的功能。

AutoDev Rename

在这个场景下,当用户使用了 IDE 的重命名功能,AI 就会生成 5 个对应的函数名、类名建议,以供用户选择。

示例 4:终端 CLI 增强,统一常见范式

相似的,当我们在终端中使用 CLI 时,我们也需要 AI 的帮助。诸如于,创建发布分支是一个常见的工作,在这个场景下,我们需要分支格式,诸如于 release_v20240406 的格式。

Shell Suggest

为了让 AI 具备如此的能力,我们需要在上下文内置日期,以让他知道今天、明天;以及诸如于操作系统、Shell 工具等,以生成合适于当前工具上下文的命令。

此时,只需要问 AI:

  • "创建今天的分支",就会生成对应的分支名: git checkout -b feature/20240406
  • "创建新的发布分支",就会生成对应的分支名: git checkout -b release-20240406

对于组织内部来说,我们可以结合更多的规范等信息。

AutoDev 1.8 其它新特性:中文提示词等

在新版本中,还有一些其它的新特性更新。

  • 辅助开发特性
    • 中文配置页。可以通过语言选择,选择中文配置页。
    • 中文提示词。当选择了中文配置页后,提示词也会变成中文。
    • 更便捷的 LLM 服务器测试。你可以在配置页,直接测试 LLM 是否可用。
    • 2024.1 版本支持。即 241 兼容性处理。
  • 智能体特性
    • AutoSQL 优化。在 SQL 生成中,新增了更多的错误信息处理。
    • 代码引用优化。支持到第 N 个 column 形式的字符 yml#L1C1-L2C12

总结

如何将大量的日常性工作,融入到开发者的日常工作中,是一个非常有意思的探索。对于 AutoDev 来说,我们要面临一个新挑战是,如此多的功能,难以让不熟悉插件的开发人员快速上手。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 phodal 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI 辅助编码的开发者体验演进:Less Chat 到 More Auto,再到 Easy Verify
本来不想写一篇吐槽国内开发工具的文章,但是考虑到最近 Replit 的裁员动作,以及其他 AI 辅助研发工具的发展。我还是想从开发者体验的角度来谈谈 AI 辅助研发工具的开发者体验。尽管大部分开发者都没有工具上的决策权或购买权,但我仍然想写一篇关于这个话题的文章。
Phodal
2024/06/06
1770
AI 辅助编码的开发者体验演进:Less Chat 到 More Auto,再到 Easy Verify
构建你自己的 AI 辅助编码助手:从 IDE 插件、代码数据生成和模型微调(万字长文)
我们会在 GitHub 上持续更新这个教程: https://github.com/phodal/build-ai-coding-assistant,欢迎在 GitHub 上讨论。
Phodal
2024/01/02
5.6K0
构建你自己的 AI 辅助编码助手:从 IDE 插件、代码数据生成和模型微调(万字长文)
AutoDev 1.4 规模化 AI 研发辅助:团队 Prompts、自定义活文档、代码检视
在过去的两个月里,随着 Thoughtworks 内部的大规模 AI 辅助软件交付(AI4SoftwareDelivery)的展开 —— 在全球,有上千名的 Thoughtworker 这一个涉及不同角色、不同地区,以及几十场内部分享的活动。
Phodal
2023/10/25
6820
AutoDev 1.4 规模化 AI 研发辅助:团队 Prompts、自定义活文档、代码检视
如何构建全流程辅助的 AI4EE 能力:从 Team AI 到企业级 AI 辅助研发的思考?
年前,我们分析、调研了大量国内外 DevOps 工具链企业的 AI 采用点,思考 2024 的总体趋势, 即《2024 年 AI 辅助研发趋势预测》。从趋势上来看,领先的企业 已经在探索和构建端到端的 AI 辅助研发能力,相似的,我们也在 UnitMesh 开源方案中融入了一部分的思考。
Phodal
2024/03/13
3350
如何构建全流程辅助的 AI4EE 能力:从 Team AI 到企业级 AI 辅助研发的思考?
LLM as Co-pilot:AutoDev 1.0 发布,开源全流程 AI 辅助编程
四月,在那篇《AutoDev:AI 突破研发效能,探索平台工程新机遇》,我们初步拟定了 AI 对于研发的影响。我们有了几个基本的假设:
Phodal
2023/08/11
8660
LLM as Co-pilot:AutoDev 1.0 发布,开源全流程 AI 辅助编程
AI 助手背后的体验设计:从AI辅助写作和编程的增强说起
在过去的一年里,越来越多的生成式 AI 应用来到了我们的日常,Copilot 似的 AI 大大改善了我们的工作和生活体验。而作为工程师,仅仅使用 AI 工具是不合时宜的,在恰当的时候,加入 AI 原生应用的开发大军,才是更适合被誉为 “夕阳产业” 从业人员的一种选择。
Phodal
2023/11/07
5410
AI 助手背后的体验设计:从AI辅助写作和编程的增强说起
场景驱动的 AI 体验设计:如何让智能 IDE 赋能遗留系统重写
作为 AutoDev 的核心开发,我们不仅在不断丰富 AutoDev 的功能以满足不同公司的定制需求,还在与各种团队进行持续交流。在处理遗留系统时,我们发现程序员们日常工作中需要面对大量使用过时技术、基础设施混乱的系统。
Phodal
2023/11/20
4690
场景驱动的 AI 体验设计:如何让智能 IDE 赋能遗留系统重写
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
PS:本文节选自开源电子书《AI 辅助软件工程:实践与案例解析》第一部分《AI4SE 体系设计》(https://aise.phodal.com/design-aise.html)
Phodal
2024/11/22
3480
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
“用调评” 一体化:生成上下文数据集,改善 AI 测试生成质量
最近,我们在围绕 AutoDev 开源插件,构建完整的端到端开源辅助编程方案。即:
Phodal
2023/12/26
2610
“用调评” 一体化:生成上下文数据集,改善 AI 测试生成质量
借助生成式 AI 提升鸿蒙 APP 开发体验?试试 AutoDev 新功能
生成式 AI 在软件研发和知识管理上,有着非常大的潜力,也因此这项技术被越来越多的企业所采用。而在一些新兴的技术上,诸如于鸿蒙操作系统,它带来了一些新 的理念、开发工具 DevEco Studio、新的语言 ArkTS、新的 UI 框架 ArkUI 等等。从模式上来说,它与生成式 AI 结合企业内部的基础设施过程非常相似。
Phodal
2024/03/04
4530
借助生成式 AI 提升鸿蒙 APP 开发体验?试试 AutoDev 新功能
开源 UnitEval —— 构建 AI 辅助编程的高质量数据集与代码模型微调评估
Unit Eval 是一个针对于构建高质量代码微调的开源工具箱。其三个核心设计原则:
Phodal
2023/12/13
7670
开源 UnitEval —— 构建 AI 辅助编程的高质量数据集与代码模型微调评估
开源 AI 编程助手 AutoDev 0.7 发布—— 生成规范化代码,深入开发者日常
几个月前,我们朝着探索:如何结合 AIGC 的研发效能提升的目标?开源了 AutoDev,如 GitHub 所介绍的:
Phodal
2023/08/11
9930
开源 AI 编程助手 AutoDev 0.7 发布—— 生成规范化代码,深入开发者日常
面向 Workspace 知识增强:AutoDev 领域知识生成、动态项目规则、提示词优化器
TL;DR,在最新的 AutoDev 2.0.7 中,我们引入了 Workspace 的概念,来帮助用户使用 AutoDev Sketch 智能体,它包含:
Phodal
2025/04/11
1050
面向 Workspace 知识增强:AutoDev 领域知识生成、动态项目规则、提示词优化器
编码数据集生成框架 UnitGen 0.4.0:代码文档生成、测试代码生成
UnitGen 是我们从 UnitEval 拆分出来的代码数据集生成项目,旨在为基于开源模型供的私有化部署提供更好的编码数据集。
Phodal
2024/01/10
2850
编码数据集生成框架 UnitGen 0.4.0:代码文档生成、测试代码生成
我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?
上周微软发布了自家的 AI 编程和软件开发智能体框架:AutoDev,其与我们开发的 IDE 插件 AutoDev 有颇多的相似之处,特别是一些设计思路,以及在对于辅助软件开发任务的智能体以及一些基础设施上。
Phodal
2024/03/25
5700
我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?
开源 AI 研发提效方案 Unit Mesh 总结
回顾 2023 年,可以明显地看到生成式 AI 带给软件工程带来的新思考,每个组织也在探索结合生成式 AI 的可能性。Unit Mesh (https://github.com/unit-mesh) GitHub 组织正是基于我与我的同事的研究,所构建的一系列围绕于生成式 AI 应用于软件研发的开源项目。
Phodal
2023/12/19
8210
开源 AI 研发提效方案 Unit Mesh 总结
AIGC 重塑软件工程 Code Review 篇:IDE 插件 + DevOps 平台协同组合
在软件开发团队里,Code Review 是非常重要的一个质量保障环境。好的 Code Review 能促进团队成长,差的 Code Review 形同流水。而在有了 LLM 之后,事情又发生了一些微妙的变化:
Phodal
2023/10/25
1.9K0
AIGC 重塑软件工程 Code Review 篇:IDE 插件 + DevOps 平台协同组合
AutoDev 1.5.3:精准的自动化测试生成、本地模型强化与流程自动化优化
而今我们在朝这一目标的努力又更进一步了:一键生成精准的单元测试。在这篇文章中,我们将介绍从 1.4 版本(适用于团队的 Team AI)到 1.5.3 版本的一些特性:
Phodal
2024/01/17
1.3K0
AutoDev 1.5.3:精准的自动化测试生成、本地模型强化与流程自动化优化
Team AI:简化繁琐日常任务,打造团队智能协作
在过去的几个月里,我的同事们(Thoughtworker)一直在构建 Team AI 项目,一个围绕于 AIGC 辅助开发团队的野心勃勃的计划。在内部,我们还有一个名为 Team AI Hackathon 的活动,基于一个内部的 Team AI 代码库,探索构建适合于不同软件研发团队的 Team AI。
Phodal
2023/11/03
6530
Team AI:简化繁琐日常任务,打造团队智能协作
2024 年 AI 辅助研发趋势:从研发数字化到 AI + 开发工具 2.0,不止于 Copilot
在上一年里,已经有不少的企业在工具链上落地了生成式 AI,结合我们对于这些企业的分析,以及最近在国内的一些 “新技术” 趋势,诸如于鸿蒙原生应用的初步兴起。从这些案例与趋势中,我们也看到了一些新的可能方向。
Phodal
2024/03/05
1.1K0
2024 年 AI 辅助研发趋势:从研发数字化到 AI + 开发工具 2.0,不止于 Copilot
推荐阅读
AI 辅助编码的开发者体验演进:Less Chat 到 More Auto,再到 Easy Verify
1770
构建你自己的 AI 辅助编码助手:从 IDE 插件、代码数据生成和模型微调(万字长文)
5.6K0
AutoDev 1.4 规模化 AI 研发辅助:团队 Prompts、自定义活文档、代码检视
6820
如何构建全流程辅助的 AI4EE 能力:从 Team AI 到企业级 AI 辅助研发的思考?
3350
LLM as Co-pilot:AutoDev 1.0 发布,开源全流程 AI 辅助编程
8660
AI 助手背后的体验设计:从AI辅助写作和编程的增强说起
5410
场景驱动的 AI 体验设计:如何让智能 IDE 赋能遗留系统重写
4690
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
3480
“用调评” 一体化:生成上下文数据集,改善 AI 测试生成质量
2610
借助生成式 AI 提升鸿蒙 APP 开发体验?试试 AutoDev 新功能
4530
开源 UnitEval —— 构建 AI 辅助编程的高质量数据集与代码模型微调评估
7670
开源 AI 编程助手 AutoDev 0.7 发布—— 生成规范化代码,深入开发者日常
9930
面向 Workspace 知识增强:AutoDev 领域知识生成、动态项目规则、提示词优化器
1050
编码数据集生成框架 UnitGen 0.4.0:代码文档生成、测试代码生成
2850
我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?
5700
开源 AI 研发提效方案 Unit Mesh 总结
8210
AIGC 重塑软件工程 Code Review 篇:IDE 插件 + DevOps 平台协同组合
1.9K0
AutoDev 1.5.3:精准的自动化测试生成、本地模型强化与流程自动化优化
1.3K0
Team AI:简化繁琐日常任务,打造团队智能协作
6530
2024 年 AI 辅助研发趋势:从研发数字化到 AI + 开发工具 2.0,不止于 Copilot
1.1K0
相关推荐
AI 辅助编码的开发者体验演进:Less Chat 到 More Auto,再到 Easy Verify
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档