https://github.com/seahyinghang8/blinky/assets/7028464/8a41a523-b3ce-4bf6-b15d-b4939f5983b7
Blinky 是一个面向 VSCode 的开源 AI 调试助手,它利用大语言模型(LLMs)来帮助识别和修复后端代码错误(灵感来源于 SWE-agent)。
Blinky 结合 VSCode API、语言服务器协议(LSP)和打印语句调试,来定位并解决真实后端系统中的错误。
注意:首次运行时,系统会提示您提供 OpenAI API 密钥。该密钥将存储在您本地的 VSCode 配置中,用于后续调用 OpenAI 服务器。



在助手运行时,您可以随时提供反馈。助手会在后续步骤中采纳这些反馈。\

助手完成后,您将看到一个界面,用于接受或拒绝助手所做的更改。\

如果您觉得 Blinky 有帮助,请给我们的仓库点个星 ⭐ 以示支持!
我们深受 SWE-Agent 背后团队杰出工作的启发,并借鉴了他们的成果——我们的核心助手循环是从他们那里移植过来的。
我们扩展了他们在构建良好人机交互界面方面的核心见解,通过 VSCode 的语言服务器协议(LSP)为其提供了额外的导航工具,如 GoToDefinition 和 GetAllReferences,以高效遍历代码库。我们还添加了 GetFilesRelevantToEndpoint 以更好地导航后端系统。
其次,我们认为将 SWE-agent 嵌入 VSCode 会很酷,这样开发者可以在开发过程中使用它,并通过 VSCode 扩展界面在过程中提供反馈。
我们还尝试使用“匹配并替换”技术来编辑文件,而不是使用起始行号、结束行号和新文本。aider.chat 的团队也做了类似的事情。
截至 2024 年 5 月,最先进的 LLM 在进行大范围编辑时仍存在困难,导致助手需要多次迭代才能做出正确的编辑。
我们的“匹配并替换”技术强制助手生成带有行号前缀的原始文本。行号和文本内容的冗余有助于捕捉幻觉和缩进错误。通过生成原始文本,似乎也有助于生成正确缩进的替换文本。
Verify 工具有什么作用?Verify 是一个允许助手运行用户指定的复现步骤的工具。助手需要迭代调试代码,直到复现步骤中的测试通过。Verify 还允许助手利用其打印语句的执行反馈。
Verify 类似于 SWE-agent 创建的用于复现错误的 reproduce.py。
Verify 运行需要很长时间?请务必检查 Verify 的输出,看看是否有任何明显问题。以下是一些常见问题:
Verify 需要等待构建/运行步骤完成后才能运行测试步骤。如果构建步骤退出或者日志匹配 src/tools/verifier.ts 中的任何模式,则认为构建步骤完成。\
由于本仓库是开源的,您可以编辑 src/config/default.yaml 中的提示词并重新构建扩展。目前,对于最终用户来说,没有无需重新构建就能轻松编辑提示词的方法。如果有足够的需求,我们可以将其加入路线图。
Blinky 专注于后端系统,因为我们希望针对特定的开发栈优化用户体验。后端错误也往往更容易通过程序复现,并且可以方便地以文本形式表达,从而更容易输入到大多数 LLM 中。
最终,我们计划将应用范围扩展到后端系统之外,涵盖其他开发栈。
本仓库中的所有代码都是开源的(MIT 许可证)。
⭐ 给我们的仓库点星以示支持!
加入 我们的 Discord 社区 提问并关注 Blinky 的开发进展。请留言告诉我们您如何使用 Blinky,我们很乐意了解更多。
如果您能在 GitHub 上提交错误报告和功能请求,我们将不胜感激,这有助于我们持续改进 Blinky!
如果您有兴趣为 Blinky 的代码库做贡献,我们欢迎提交 Issue 和 Pull Request!
本地开发快速入门:运行 npm run install:all 开始,然后按 F5 或从命令面板(⇧⌘P)运行命令 Debug: Start Debugging。查看此指南获取更多关于 VS Code 扩展开发的详细信息。