当前位置: 首页 > news >正文

详解使用CodeBuddy解决高难度项目问题

要问近几年什么技术最革新,毫无疑问只能是AI了,AI可以写文、画图、做视频,也可以写代码。

要想不被时代抛弃,AI必须得会用

1、前情提要

不论是生活中遇到问题、开发中遇到问题,要解决问题基本是下面四步:描述问题、寻找问题、提出方案、解决问题。使用AI助手CodeBuddy依然是如此。

解决问题步骤

解决问题步骤

2、描述问题

这里先描述一下当前项目的技术背景,项目是一个基于事件的流程引擎,技术需求是输出的日志必须精确的,哪一天发生了什么事件,A事件的发生催生了B事件,其中催生的时间是无比重要的,需要十分精确,不能把发生在三天前的事件输出后是今天发生的事件,而又导致了后续所有事件都不准确了。

问题就出在了时间上,刚开始的问题更严重,A事件结束的时间应该是B事件的开始时间,但输出的结果是时间完全错乱;经过整整一天的改造,终于把大问题找到了。但依然有一些小问题,输出的事件发生日期不是按照发生时间顺序输出的,它先是把所有的完成事件执行了,再去统一执行完成事件触发的开始事件。问题截图如下,可以看到几乎所有的事件输出都是错乱的。

问题详情

问题详情

程序上的逻辑是没问题的,至少自认为是没问题的,手动逻辑梳理了一个执行流程,可以与后续CodeBuddy分析后的结果进行比较一下。

代码逻辑

代码逻辑

2.1、构建分析问题的Prompt

在和人工智能(AI)交流时,Prompt(提示语)是与 AI 模型进行交互的最核心的“工具”。Prompt是一个人类输入的指令,目的是引导 AI 执行特定的任务或生成相应的内容。

针对上面介绍的问题,下面是发送给CodeBuddy的Prompt内容,同时引用了觉得很可能存在问题的类。

注意!让CodeBuddy分析问题时建议勾选图中我箭头所指的“问答模式”,还是最开始的那句话,一定要围绕描述问题→寻找问题→提出方案→解决问题的路线,先让CodeBuddy寻找出来问题并提出方案后由开发者提出CodeBuddy应该使用的解决方案。

1、检查当前项目中生成“流程日志”的时机。

2、dispatch方法内部应该都是同步的,但为什么处理完所有的完成事件后才去处理完成事件触发的开始事件。

3、理想状态应该是完成事件的回调函数触发了下一个开始事件,下一个开始事件的时间早于下一个完成事件的事件时应该排序排到最前面。

描述问题Prompt

描述问题Prompt

2.2、拆解Prompt

下面开始拆解Prompt这三条内容:

第一条:检查当前项目中生成“流程日志”的时机。

让CodeBuddy能够确定思考方向,由于项目代码工程量非常大,这能够避免CodeBuddy无意义的逻辑分析。

可以看到CodeBuddy在分析时会进行预期,根据预期也可以了解自己的Prompt是否精确到病根,正所谓药到病除,下药得下对地方:

预期结果:我会查看这些类中关于事件添加、determined 列表的添加与处理、回调调用点、以及任何写日志(流程日志)的代码位置。

第二条:dispatch方法内部应该都是同步的,但为什么处理完所有的完成事件后才去处理完成事件触发的开始事件。

此条说明了当前的问题,让CodeBuddy知道我的病因在哪里,上了手术台得让大夫知道病灶在哪。

第三条:理想状态应该是完成事件的回调函数触发了下一个开始事件,下一个开始事件的时间早于下一个完成事件的事件时应该排序排到最前面。

此条说明期望的效果,给CodeBuddy制定一个明确的目标,否则即使知道“病因”在哪,CodeBuddy也不知道自己应该干什么,是干掉病灶还是重写病灶。

3、寻找问题

寻找问题当然是由CodeBuddy进行,这里CodeBuddy分析内容是很多的,这里贴一下核心部分。

我并没有向CodeBuddy描述程序的执行逻辑,而这里CodeBuddy只用了1分钟时间把代码执行逻辑完整的分析出来了。如下图所示为CodeBuddy代码逻辑分析:

CodeBuddy代码逻辑分析

CodeBuddy代码逻辑分析

根据上面这个代码逻辑,CodeBuddy又继续对当前看似合理的代码提出了一些可能的问题:

CodeBuddy寻找问题

CodeBuddy寻找问题

4、提出方案

针对分析出来的问题,CodeBuddy提出了自己的解决方案,同时还给了一些优化方案。

CodeBuddy提出方案

CodeBuddy提出方案

5、解决问题

此时开发者可以针对CodeBuddy给出的方案选择合适的方案,复制并粘贴到输入框中,并切换至智能体模式”,因为只有“智能体模式”CodeBuddy才会去修改你的代码。

开发者“选择方案”

开发者“选择方案”

我觉得这里有必要放一下CodeBuddy整个编辑代码的过程,根据我要求的方案,CodeBuddy多次修改了代码文件。

CodeBuddy解决问题

CodeBuddy解决问题

最后!重启项目,验证效果,注意看如下修改后的“事件发生日期”,跟前文中贴的有问题时的状态,完美解决。到这里,我只跟CodeBuddy说了两句话,并且这两句话我在上文中都完整的截图放在文中了,再并且CodeBuddy完美的解决了我可能需要调试半天,甚至一天才能处理的问题。

最终效果-解决问题

最终效果-解决问题

6、总结

一定要学会与CodeBuddy学会“沟通”,拒绝无效沟通。再重复一次我的理论:描述问题、寻找问题、提出方案、解决问题。

开发者只需要先通过“问答模式”描述问题,之后由CodeBuddy寻找问题并提出解决问题的方案,再由开发者根据CodeBuddy的方案驱使CodeBuddy解决问题;除了描述问题,其他的三步都由CodeBuddy来进行。

当然最重要的自然是描述问题,这里有很大学问,不能盲目的提问题,让CodeBuddy能够聚焦问题,才能找到问题从而提出方案。

http://www.dtcms.com/a/541005.html

相关文章:

  • Days.js实时更新时间格式文案在切换全局语言之后的方案
  • 网站icp备案时间网站营销网站营销推广
  • 广州官方宣布网络公司网站优化网站建设
  • 【黑马点评|2 Redis缓存 面试题】
  • 大学学院教授委员会制度研究(二)理论基础与分析框架-杨立恒毕业论文
  • Nginx基础入门篇-基础配置
  • 雅可比SVD算法:高精度矩阵分解的经典方法
  • 在 Python 中测试中assert断言和 if分支的区别
  • 【题解】洛谷 P1169 [ZJOI2007] 棋盘制作 [思维 + dp]
  • 音频限幅器D2761使用手册
  • 网站金融模版wordpress轮播代码
  • 【工具推荐】电脑手机多端互通协作实用
  • 一般网站的跳出率dede做双语网站
  • 自己制作的网站如何发布建筑设计公司经营范围有哪些
  • 51c大模型~合集39
  • 操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:串口
  • 【牛客CM11】链表分割
  • .NET 对象转Json的方式
  • 广西住建局官方网站大数据营销的应用领域
  • Linux ioctl 深度剖析:从原理到实践
  • 网站备案流程解答做最漂亮的网站
  • LED驱动电路(三)
  • Keil工程编译垃圾清理
  • 同城跑腿APP源码开发技术全景:即时订单、骑手定位与路线优化算法
  • 【数据工程】15. Stream Query Processing
  • 鄂州网站设计效果wordpress comment_form_after
  • 爱网站关键词查询工具潍坊营销网站
  • java程序生成pdf或wod乱码
  • 做网站和游戏是如何赚钱crm系统开发
  • 网页pdf下载攻略--以混元上传的pdf为例