光标 BugBot 与智能
介绍
Entelligence AI 扩展程序的推出,为VS Code、Cursor 和 Windsurf引入了 IDE 内置代码审查器,即使在您打开拉取请求之前,也能提供即时反馈。
本文将对比Entelligence AI和Cursor(BugBot)的优劣。无论您是专注于深度代码审查、快速修复还是简化工作流程,您都能从中找到更适合您的工具,并了解 Entelligence AI 为何可能正是您所需要的。
什么是人工智能?
Entelligence.AI是您团队的 AI 驱动型工程智能平台,可简化开发流程、增强协作并提高工程效率。它就像代码库的默默守护者,帮助您的团队保持目标一致,而无需改变您的工作方式。
它不会要求你遵循新的流程,而是支持日常任务,例如审核拉取请求、新员工入职和跟踪团队绩效。它的设计初衷就是为了处理那些经常被忽略的重要事项。
它还尊重您的隐私,您的代码绝不会用于培训,如有需要,您还可以自行托管。
BugBot是什么?
BugBot是 Cursor 内置的工具,用于审查 GitHub 上的拉取请求。安装后,它会自动运行(或在您通过命令行请求时运行bugbot run),并扫描您的拉取请求以查找潜在的错误或问题。
它的运作方式如下:
-
拉取请求检查:每次您打开或更新 PR 时,BugBot 都会检查更改的代码,并对任何可能的错误留下评论。
-
快速修复流程:如果 BugBot 发现问题,它会在光标处添加一个“修复”链接,点击该链接即可打开编辑器,并预先加载问题上下文。
-
灵活的设置:您可以将其设置为始终运行或仅在调用时运行,并决定在未发现问题时是否显示结果。
-
团队设置:仓库管理员可以为每个仓库启用或禁用此功能,设置费用限制,并管理跨团队的权限。
BugBot是Cursor 1.0版本的一部分,并提供7天免费试用。试用期结束后,需要订阅Cursor的Max模式才能使用。
对比:智能AI vs Cursor的BugBot
选择一款能在 IDE 中运行的代码审查工具可能比较棘手,尤其是在多款工具乍看之下都很相似的情况下。为了简化选择过程,我们在一个名为“Should I Do It?”的简单 React 应用中测试了Entelligence AI和Cursor 的 BugBot。
它使用开放 API 和基本异步逻辑,因此我们可以检查每个工具如何处理真实代码:获取请求、错误处理、组件结构和异步错误。
我们没有采取宽泛的做法,而是专注于实际开发过程中重要的事情,而不仅仅是着陆页上的内容。
代码审查
Entelligence AI和Cursor 的 BugBot之间的一个主要区别在于它们何时允许你审查你的代码。
人工智能
有了 Entelligence,您无需等待提交 pull request。它会在编辑器中直接审核您的更改,因此您可以在代码离开分支之前就获得建议。
我们用故意写得很糟糕的fetchAnswer.js函数测试了这一点。
const fetchAnswer = async () => {
try {
const url = 'https://yesno.wtf/api';
const config = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': '*/*',
'Cache-Control': 'no-cache',
'Pragma': 'no-cache',
},
redirect: 'follow',
referrerPolicy: 'no-referrer'
};
let result, data;
try {
result = await fetch(url, config);
} catch (networkErr) {
console.log('Maybe the internet is down? Or maybe not.');
console.error(networkErr.message || 'Some error happened');
result = null;
}
if (!result) {
console.warn('Fetch result is empty or undefined or null or broken');
return { answer: 'maybe', image: 'https://placekitten.com/200/200' }; // placeholder nonsense
}
if (result.status === 200 || result.status === 201 || result.status === 204) {
try {
data = await result.json();
} catch (jsonError) {
console.log('JSON might be corrupted or evil');
console.error(jsonError);
return { answer: 'error-parsing-json', image: '' };
}
if (!data || typeof data !== 'object') {
console.log('Data is not what we expected, but let's just go with it');
return { answer: '¯\_(ツ)_/¯', image: '' };
}
if (data && Object.keys(data).length > 0 && data.answer && data.image) {
return {
answer: `${data.answer}`,
image: `${data.image}`
};
} else {
console.log('Something was missing, but let's not worry too much');
return {
answer: 'almost',
image: 'https://http.cat/404'
};
}
} else {
console.warn('Status was weird: ', result.status);
return {
answer: 'uncertain',
image: 'https://http.cat/500'
};
}
} catch (err) {
console.error('Global meltdown', err);
return {
answer: 'panic',
image: 'https://http.cat/418'
};
}
};
export default fetchAnswer;
以下是情报部门指出的情况:
-
不必要的控制台日志会使代码变得杂乱。
-
使用“何时
let使用”会更合适urlconst -
过度使用模板字面量,例如
${data.answer}whendata.answer可以正常工作 -
对 HTTP 状态码处理不当,例如将
204(No Content) 等同于200
它不仅指出了这些问题,还提供了直接的修复建议。您可以直接接受更改,无需额外步骤,也无需单独的审核窗口。
即使在提出公关投诉之后,Entelligence 也没有停止提供帮助。
-
它总结了拉取请求。
-
提供PR 内容的详细介绍,包括一个有用的序列图。
-
您可以使用 👍 / 👎 表情符号提供反馈,以帮助系统了解您的评价偏好。
-
如果公关稿看起来不错,它会自动评论“LGTM 👍”。
-
它会显示已启用的审核设置,并允许您直接在智能AI控制面板中自定义这些设置。
您甚至可以在仪表板内跟踪分析数据,例如有多少 PR 处于打开、合并或审核状态,以及团队贡献的总体质量。
虫虫机器人
使用 Cursor 的 BugBot 时,您需要先提交一个 pull request。然后 BugBot 会自动审查代码(如果已启用),或者您可以通过添加注释来手动运行它bugbot run。
对同一文件运行 BugBot 后,它标记了以下内容:
-
冗余数据验证
-
控制台消息随意且不一致
-
使用不必要的字符串插值
-
令人困惑的 HTTP 状态逻辑
BugBot 提供了详细且结构化的反馈,并包含一个“在 Cursor 中修复”按钮,点击后即可打开 Cursor 并应用更改。它运行良好,但需要提交 PR 或评论这一额外步骤,使得反馈循环稍显缓慢。
简而言之:
-
智能AI会在您编写代码时提供反馈,并在提交拉取请求后继续提供帮助,包括摘要、图表和可自定义的评审。它旨在贯穿您的整个工作流程。
-
BugBot也能给出很好的建议,但只有在你提交 pull request 或手动触发它之后才会启动。
漏洞检测
代码审查之后,下一个重大考验是错误检测,特别是这些工具能够多快、多深入地发现那些经常会漏到运行时或生产环境中的小问题。
为了测试这一点,我们创建了一个简单但有缺陷的 React 组件AnswerBox.jsx:
import React from 'react';
const AnswerBox = ({ answer }) => {
return (
<div style={{ textAlign: 'center', padding: 20, fontFamily: 'sans' }}>
<h2>Your answer is:</h2>
<p>{answer.answer || 'No answer available yet'}</p>
{answer.image ? (
<img
src={answer.image}
alt="answer"
width="300px"
height="auto"
style={{
marginTop: 20,
border: '3px dashed purple',
borderRadius: 4,
boxShadow: '0px 0px 20px rgba(0,0,0,0.2)',
objectFit: 'coverd'
}}
/>
) : (
<p style={{ color: '#888' }}>No image provided</p>
)}
</div>
);
};
export default AnswerBox;
它看起来无害,但实际上充满了容易被忽略的小逻辑缺陷、可访问性问题和样式错误。
人工智能检测
在我们编写文件时,人工智能实时提供了建议,无需等待拉取请求。它立即指出:
-
错误的 CSS 属性- 发现
objectFit: 'coverd'并指出了'cover'一个常见但棘手的拼写错误。 -
无效字体系列- 已捕获
fontFamily: 'sans'并正确推荐'sans-serif'。 -
无障碍访问问题- 标记
alt="answer"为过于模糊,并建议为屏幕阅读器提供更有意义的替代文本。 -
性能建议- 指出图像未延迟加载,这可能会影响较慢连接上的性能。
-
内联样式反馈- 建议将内联样式切换到可重用的 CSS 模块或 styled-components,以提高可维护性。
-
错误处理- 提到图像加载失败时没有回退行为。
-
响应式设计缺陷- 警告:固定设计
width: "300px"可能会破坏跨屏幕尺寸的响应式效果。 -
属性安全- 注意到该组件未使用 PropTypes 验证属性,这可能会导致大型应用程序出现运行时问题。
这些建议是在提交任何 PR 之前提出的,节省了审核时间,也使得在出现问题时更容易进行修复。
Cursor(BugBot)评测
要从 BugBot 获取建议,我们首先需要提交一个 PR。PR 激活后,BugBot 分析了差异,并留下了包含多条建议的有用评论:
-
我也发现了同样的
objectFit: 'coverd'拼写错误。 -
发现字体无效,已将其更正为
'sans-serif'。 -
标记了缺失的 PropTypes,甚至分享了如何定义它们。
-
建议避免使用内联样式,并建议将 CSS 外部化。
-
警告缺少
answer道具可能导致崩溃,并建议了备用处理方案。 -
提供了一个结构更合理、错误处理更完善、可访问性更高的组件重构版本。
这两个工具都指出了关键问题,但它们真正的区别在于何时以及如何指出问题。
如果你喜欢在错误造成更大影响之前就将其发现并纠正,那么 Entelligence AI 会更自然地融入你的日常工作中。而 Cursor 则为那些注重结构化代码审查检查点的团队提供了一道可靠的安全保障。
代码生成与修复
作为 PR 流程的一部分,我尝试了一种不同的方法。我没有直接修改文件,而是在文件中添加了这个占位符,看看他们是否明白我需要在文件中添加什么内容。
添加一个包含“是”、“否”和“可能”选项的下拉菜单。只有当用户选择与 API 获取的响应匹配时,才应显示答案和图片。
这是观察Intelligence AI和Cursor在审查和参与实时代码更改时的表现的绝佳机会。
光标
Cursor 不仅仅是编辑。它从零开始编写了整个功能,包括获取 API 响应、管理用户选择、处理加载和错误状态,以及仅在答案/图像匹配时才显示它们。
{apiResponse && userSelection && userSelection === apiResponse.answer && (
<div>
<h3>API Answer: {apiResponse.answer}</h3>
<img src={apiResponse.image} alt={apiResponse.answer} />
</div>
)}
它甚至用清晰的错误边界和良好的加载体验包裹了所有内容。这并非简单的调整,而是一个完全符合生产环境规范的实现,它尊重用户界面流程、用户体验状态和代码风格。
光标已处理:
-
API集成
-
下拉菜单状态逻辑
-
匹配条件
-
加载 + 错误边界
-
简洁的内联样式和易用性
人工智能
智能AI采用了一种更为渐进的方法。它并非从头到尾构建功能,而是扫描现有组件,并以差异化的方式插入满足新条件所需的逻辑。
+ const [selectedOption, setSelectedOption] = React.useState("yes");
+ {answer.answer.toLowerCase() === selectedOption && (
<>
<h2>{answer.answer.toUpperCase()}</h2>
<img src={answer.image} alt={answer.answer} />
</>
)}
它运行速度很快,但不像 Cursor 那样具备完整的用户流程感知能力。它没有 API 获取功能,没有加载或错误提示,也没有结构化的回退机制。
人工智能处理:
-
本地下拉菜单逻辑
-
条件渲染
-
最低限度的上下文感知
-
差异优先建议模式
文档生成
在保持文档更新方面,人工智能会发挥主导作用,并在后台默默地完成这项工作。
自动和在线更新
一旦 PR 合并或代码库发生更改,Entelligence 就会自动更新相关文档。无论是函数、组件,甚至是新添加的文件,该工具都会读取代码、理解上下文,并实时更新相关文档。
无需切换标签页或打开单独的工具。您还可以使用简单的命令从 IDE 手动触发更新:
/updateDocs
最棒的是什么?它没有被锁定。您可以轻松修改生成的文档,使其更符合您的语气,添加注释或扩展上下文,所有操作都无需从头开始编写。
光标的局限性
Cursor 目前不提供自动或辅助文档生成功能。虽然它可以帮助您在明确要求的情况下编写注释,但它不会跟踪更改或随着项目的发展维护最新的文档。您仍然需要自行编写和管理文档,这可能会导致文档随着时间的推移而过时、不一致或缺失。
你应该选择哪一个?
| 特征 | 人工智能 | 光标(BugBot) |
|---|---|---|
| 代码审查时间安排 | 即时,在编辑器中边编码边编辑 | PR 提交或手动触发后 |
| 漏洞检测 | 实时,在你输入时即可捕获错误 | 公关稿发布后,虽然有帮助但有所延迟。 |
| 代码修复与建议 | 差异化、快速编辑,并带有上下文 | 完整实现,内联且简洁 |
| 情境感知 | 高水平,理解组件结构,标记辅助功能和样式 | 较为温和,抓住了关键问题,但整合程度不够深。 |
| 文档生成 | 自动更新支持 Markdown 的文档(/updateDocs) |
没有内置文档支持 |
| 易用性 | 无缝、极简设置,始终在线 | 不错,但大多数行动都依赖于公关。 |
| 最适合 | 希望获得快速、持续反馈和完善文档的开发人员/团队 | 偏好结构化、PR后代码审查流程的团队/开发人员 |
| 超越代码审查 | 负责文档管理、新员工入职、团队洞察等等 | 仅限代码建议和审查 |
如果您喜欢紧密的反馈循环,希望在 PR之前发现 bug ,并希望自动生成文档,那么智能 AI无疑是最佳选择。
如果你的团队采用PR 优先的工作流程,并且你想在编辑器内进行完整的代码重写,那么Cursor(和 BugBot)仍然是一个强大的选择。
了解更多关于 Entelligence AI 代码审查扩展的信息:
结论
Intelligence AI和Cursor都能为您的编码工作流程带来强大的 AI 功能,但方式却截然不同。
-
智能AI就像一位在你耳边默默支持的资深工程师,在你编写代码的同时,帮助你审查、修复和记录代码。它非常适合那些希望保持高效工作状态、及早发现bug并以最小成本维护项目健康的开发者。
-
Cursor(BugBot)就像一个结构化的代码审查员,会在你完成代码后介入。它响应迅速、乐于助人,并且能够编写出色的代码,但你需要提交 PR 或手动触发它才能从中受益。
在代码快速迭代的世界里,拥有一款能够随着你的思考过程(而不仅仅是你的差异)而成长的工具,意义重大。
如果你每天都在构建代码,Entelligence 就像一个伙伴。光标就像一个审阅者。
选择适合你们团队节奏的。
安装 Entelligence AI VS Code 扩展⛵
文章来源:https://dev.to/entelligenceai/cursor-bugbot-vs-entelligence-37d9





