要问近几年什么技术最革新,毫无疑问只能是AI了,AI可以写文、画图、做视频,也可以写代码。
要想不被时代抛弃,AI必须得会用。
不论是生活中遇到问题、开发中遇到问题,要解决问题基本是下面四步:描述问题、寻找问题、提出方案、解决问题。使用AI助手CodeBuddy依然是如此。

这里先描述一下当前项目的技术背景,项目是一个基于事件的流程引擎,技术需求是输出的日志必须精确的,哪一天发生了什么事件,A事件的发生催生了B事件,其中催生的时间是无比重要的,需要十分精确,不能把发生在三天前的事件输出后是今天发生的事件,而又导致了后续所有事件都不准确了。
但问题就出在了时间上,刚开始的问题更严重,A事件结束的时间应该是B事件的开始时间,但输出的结果是时间完全错乱;经过整整一天的改造,终于把大问题找到了。但依然有一些小问题,输出的事件发生日期不是按照发生时间顺序输出的,它先是把所有的完成事件执行了,再去统一执行完成事件触发的开始事件。问题截图如下,可以看到几乎所有的事件输出都是错乱的。

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

在和人工智能(AI)交流时,Prompt(提示语)是与 AI 模型进行交互的最核心的“工具”。Prompt是一个人类输入的指令,目的是引导 AI 执行特定的任务或生成相应的内容。
针对上面介绍的问题,下面是发送给CodeBuddy的Prompt内容,同时引用了觉得很可能存在问题的类。
注意!让CodeBuddy分析问题时建议勾选图中我箭头所指的“问答模式”,还是最开始的那句话,一定要围绕描述问题→寻找问题→提出方案→解决问题的路线,先让CodeBuddy寻找出来问题并提出方案后由开发者提出CodeBuddy应该使用的解决方案。
1、检查当前项目中生成“流程日志”的时机。
2、dispatch方法内部应该都是同步的,但为什么处理完所有的完成事件后才去处理完成事件触发的开始事件。
3、理想状态应该是完成事件的回调函数触发了下一个开始事件,下一个开始事件的时间早于下一个完成事件的事件时应该排序排到最前面。

下面开始拆解Prompt这三条内容:
第一条:检查当前项目中生成“流程日志”的时机。
让CodeBuddy能够确定思考方向,由于项目代码工程量非常大,这能够避免CodeBuddy无意义的逻辑分析。
可以看到CodeBuddy在分析时会进行预期,根据预期也可以了解自己的Prompt是否精确到病根,正所谓药到病除,下药得下对地方:
预期结果:我会查看这些类中关于事件添加、determined 列表的添加与处理、回调调用点、以及任何写日志(流程日志)的代码位置。
第二条:dispatch方法内部应该都是同步的,但为什么处理完所有的完成事件后才去处理完成事件触发的开始事件。
此条说明了当前的问题,让CodeBuddy知道我的病因在哪里,上了手术台得让大夫知道病灶在哪。
第三条:理想状态应该是完成事件的回调函数触发了下一个开始事件,下一个开始事件的时间早于下一个完成事件的事件时应该排序排到最前面。
此条说明期望的效果,给CodeBuddy制定一个明确的目标,否则即使知道“病因”在哪,CodeBuddy也不知道自己应该干什么,是干掉病灶还是重写病灶。
寻找问题当然是由CodeBuddy进行,这里CodeBuddy分析内容是很多的,这里贴一下核心部分。
我并没有向CodeBuddy描述程序的执行逻辑,而这里CodeBuddy只用了1分钟时间把代码执行逻辑完整的分析出来了。如下图所示为CodeBuddy代码逻辑分析:

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

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

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

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

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

一定要学会与CodeBuddy学会“沟通”,拒绝无效沟通。再重复一次我的理论:描述问题、寻找问题、提出方案、解决问题。
开发者只需要先通过“问答模式”描述问题,之后由CodeBuddy寻找问题并提出解决问题的方案,再由开发者根据CodeBuddy的方案驱使CodeBuddy解决问题;除了描述问题,其他的三步都由CodeBuddy来进行。
当然最重要的自然是描述问题,这里有很大学问,不能盲目的提问题,让CodeBuddy能够聚焦问题,才能找到问题从而提出方案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。