你有没有打开过一个看起来很有趣的GitHub问题,通读了描述,然后意识到你完全不知道从哪里开始?
我有。
前一分钟,你还兴奋地为一个开源项目做贡献。接下来,您在问题描述、注释、文档和存储库文件之间跳跃,试图理解问题实际上是什么。
有时,这期杂志会提到一个你从未见过的功能。https://www.iissbbs.com其他时候,它引用了您一无所知的代码库的一部分。
在您编写一行代码之前,您已经花了大量的时间进行调查。
我为开源项目做出了贡献,包括Signal Android和Lawnchair,我学到的一件事是发现问题和理解问题是两码事。
GitHub使发现问题变得容易。对一个不熟悉的项目有足够的了解来参与其中是事情变得困难的地方。
那次经历给了我一个想法:
如果我可以将GitHub问题URL粘贴到一个工具中,并获得问题的清晰解释,我需要了解什么,以及我应该从哪里开始调查,会怎么样?
不是为我写解决方案的东西,而是在我开始写代码之前帮助我理解问题的东西。
就是这样发行方式发生了。
参加今年的黑客啤酒节缓慢而稳定挑战,我构建了IssueWise来处理理解GitHub问题所涉及的一些重复调查,因此开发人员可以更专注于贡献。
我建造的东西
IssueWise是一个人工智能驱动的GitHub问题浏览器,https://www.skdaren.com帮助开发人员了解不熟悉的问题,并找出如何解决它们。
这个想法很简单。
你粘贴一个公开的GitHub问题URL,IssueWise检索关于问题及其存储库的信息,Google的Gemma 4模型帮助将这些信息转化为结构化的解释。
你得到的不是一个艾龙生成的回复,而是引导你解决问题的四个部分。
1理解——到底是什么问题?
一些GitHub问题是基于这样的假设编写的,即任何阅读它们的人都已经理解了这个项目。
但是如果你没有呢?
这明白;理解一节将问题分解成更简单的术语,帮助您理解发生了什么以及为什么它很重要。
这是我在尝试任何修复之前想知道的第一件事。
2探索——我应该从哪里开始寻找?
理解问题是一回事。知道在哪里调查是另一回事。
这探索部分帮助你在项目的背景下思考问题。
IssueWise还通过可扩展的部分提供附加信息,如高级分析、讨论和存储库快照。
我希望这一信息是可用的,而不是压倒那些只想先了解基础知识的人。
3了解——在着手这项工作之前,我应该知道些什么?
有时,一个问题会引入你从未遇到过的概念。
您可能知道需要改变什么,但仍然需要了解特定的框架、组件或编程概念是如何工作的。
这学习一节解释了相关概念,以帮助您建立这种理解。
这对于第一次学习或参与特定项目的开发人员来说尤其有用。
4贡献—我如何开始?
这是一切开始汇集的地方。
这捐助部分有助于您更清楚地了解要调查什么以及如何着手处理这个问题。
它不能代替阅读代码,测试你的改变,或者遵循项目的贡献指南。
它只是帮助你摆脱最初的迷失感。
IssueWise不为你写投稿。这有助于你理解你在做什么。
这正是我想要建造的。
演示
IssueWise是live,可以自己试试。
🚀尝试IssueWise
它是这样工作的:
打开IssueWise网站
粘贴一个公开的GitHub问题URL。
点击探索问题检索问题详细信息。
点击解释这个问题使用Gemma 4生成解释。
探索明白;理解, 探索, 学习,以及捐助章节。
这就是你开始工作所需要的一切。
我使用来自开源仓库的真实问题测试了IssueWise,包括给安卓发信号和瓶
这里有一个应用程序的外观。
主页
IssueWise homepage showing the GitHub issue exploration interface
一切都始于一个GitHub问题URL。没有复杂的设置或冗长的说明。
探索一个问题
IssueWise displaying GitHub issue information and repository context
IssueWise检索问题的详细信息,并以一种更容易理解的方式呈现出来。
理解人工智能的问题
IssueWise AI-generated explanation with Understand, Explore, Learn, and Contribute sections
这是我最喜欢的部分。
你不用阅读一个问题并想知道下一步该做什么,你有一个结构化的解释来帮助你理解问题并开始调查。
该应用程序托管在Render的免费服务上,因此如果服务器处于非活动状态,第一次请求可能会花费较长时间。
密码
IssueWise是开源的,完整的源代码可以在GitHub上找到。
💻在GitHub上查看问题
我把这个项目组织成monorepo,前端和后端在不同的应用程序中。
issuewise/
├── apps/
│ ├── api/ # FastAPI backend
│ └── web/ # Nextjs frontend
├── docs/ # Documentation
└── READMEmd
存储库包括应用程序代码、测试和文档。
您可以探索它是如何工作的,在本地运行它,或者做出改进。
由于IssueWise旨在帮助人们为开源做出贡献,我觉得让这个项目也开源也很重要。
我是如何建造的
我希望IssueWise使用起来感觉简单,即使幕后发生了很多事情。
我用过Nextjs对于前端,FastAPI对于后端,一种数据库系统用于存储应用程序数据,以及Gemma 4对于人工智能的解释。
这是堆栈:
技术 我用它做什么
Nextjs + TypeScript 前端应用程序
顺风CSS 风格和响应界面
Python + FastAPI 后端API
一种数据库系统 数据库ˌ资料库
蒸馏器 数据库迁移
Gemma 4 26B A4B IT 人工智能驱动的问题解释
谷歌人工智能工作室 托管模型推理
GitHub API 正在检索问题和存储库信息
提供;给予 托管应用程序
我为什么选择Gemma 4
我想做一些东西,让开放重量的人工智能成为产品的重要组成部分,而不仅仅是一个额外的功能。
问题用途谷歌的Gemma 4 26B A4B IT从GitHub问题上下文中生成解释的模型。
GitHub API提供了问题信息,但是仅仅这些信息并不足以帮助新手理解应该做什么。
Gemma有助于将其转化为更有用的东西:问题的解释、相关概念、可能的调查方向以及入门指南。
如果没有人工智能层,IssueWise很可能是另一个阅读GitHub问题的界面。
解释是使体验不同的原因。
它在幕后是如何工作的
当有人提交GitHub问题URL时,前端会将请求发送到FastAPI后端。
后端从GitHub检索问题和相关的存储库上下文。
然后,AI解释管道使用该上下文,生成显示在四个主要部分中的信息。
该过程如下所示:
GitHub Issue URL
|
v
Fetch Issue Information
|
v
FastAPI Backend
|
v
Gemma 4 AI Model
|
v
Structured Explanation
|
v
Understand | Explore
Learn | Contribute
我还实现了缓存。
当一个解释已经生成并存储时,IssueWise可以重用它,而不是发出另一个不必要的AI请求。
这有助于避免重复工作,并使以前分析过的问题更快地重新出现。
我认为这很适合缓慢而稳定主题:如果你已经做过一次,为什么还要再做一次?
使界面易于使用
我想避免的一件事是构建一个给你另一面技术信息墙的应用程序。
那会违背目的。
因此,我将解释分成四个部分,并将更详细的信息放在可展开的面板中。
你可以从基础开始,准备好了再进一步探索。
我们的目标是让体验变得有用,同时又不让人觉得复杂。
测试和部署
我还花时间测试了前端和后端,以确保不同的部分能够协同工作。
一旦应用程序在本地准备就绪,我就使用Render部署它。
前端、后端和PostgreSQL数据库作为独立的服务托管。
让一切在生产中工作需要一些努力,特别是配置环境变量、连接数据库、运行迁移,以及确保前端可以与API通信。
有一次,后端无法启动,因为生产数据库没有所需的表。
在应用程序成功启动之前,我必须对托管数据库运行Alembic迁移。
这是一个有用的提醒:在本地工作的应用程序并不自动意味着它已经准备好投入生产。
最终,一切都走到了一起。
看到IssueWise检索到一个真实的GitHub问题,并从实时网站上生成一个解释,使这项工作变得值得。
为什么开放式创新很重要?
我喜欢开源开发的一个原因是它给了人们从真实项目中学习的机会。
您可以阅读代码,了解某些东西是如何工作的,提出改进建议,并为其他人使用的软件做出贡献。
但是接触源代码和理解它是有区别的。
这是激发IssueWise的部分原因。
我想构建一些东西,让开源项目变得更加平易近人,尤其是对于那些仍在积累经验的开发人员。
使用Gemma也符合这个想法。
更多的实验自由
Gemma是一个开放重量模型家族,这意味着开发人员除了完全依赖封闭模型API之外还有其他选择。
有了合适的硬件和基础设施,可以在不同的环境中部署和试验开放重量模型。
对于像IssueWise这样的项目,这开启了有趣的可能性。
不同的编程语言、存储库和技术问题可能受益于不同的模型或专门的方法。
随着项目的发展,我喜欢能够试验人工智能层的想法。
对当前的实现持现实态度
IssueWise的部署版本使用Google AI Studio进行推理。
所以,虽然Gemma是个轻量级模特,IssueWise目前依赖托管服务来运行它
它不能完全离线运行,我也不认为它可以。
然而,使用开放权重模型意味着将来还有其他值得探索的部署可能性,包括自托管推理。
对我来说,这是开放式创新的实际好处之一:对项目如何发展有更多的选择。
帮助更多开发者参与进来
我也相信当更多的人可以参与时,开源变得更有价值。
不是每个人都有多年使用大型代码库的经验。
有时候,有人需要的只是一个更清晰的解释或者一个更好的出发点。
如果IssueWise帮助一些开发人员对探索不熟悉的问题更有信心,那么它解决了我关心的一个问题。
公开代码很重要。帮助人们理解代码也很重要。
懒惰的回报
这次挑战的主题是缓慢而稳定我认为IssueWise非常适合它。
因为有时候高效并不意味着更加努力。
而是想办法避免不必要的工作。
在构建IssueWise之前,了解一个不熟悉的GitHub问题可能需要多次阅读描述、检查评论、探索知识库、搜索不熟悉的概念,并尝试将所有内容联系起来。
这些活动本身并不一定很难。
但是加在一起,它们会花费很多时间,尤其是当你是一个项目的新手时。
有了IssueWise,流程就变成了:
粘贴问题网址→探索→解释→开始调查。
该应用程序将最初的信息收集和解释过程整合到一个工作流中。
我用真实的GitHub问题测试了它,并验证了部署的应用程序可以检索问题信息并生成解释。
我没有进行过正式的研究来衡量它到底节省了多少时间,所以我不会编造一个数字。
但是实际的好处是显而易见的:你不再重复地收集上下文和询问不同的问题,而是在一个地方得到一个结构化的起点。
而对我来说,这就是那种值得鼓励的懒惰。
让工具来处理一些重复的调查。
省下你的精力去理解代码,测试你的想法,做出有用的贡献。
我学到了什么
建筑问题教会了我一些东西。
首先,集成人工智能模型只是构建有用的人工智能应用程序的一部分。
您还需要考虑模型接收的信息,输出是如何组织的,当请求失败时会发生什么,以及人们将如何实际使用结果。
第二,一个好的界面可以带来很大的不同。
如果所有的东西都立刻呈现出来,即使是一个有用的解释也会变得难以理解。
将体验分成更小的部分有助于我让应用程序专注于开发人员在每个阶段的需求。
最后,有人提醒我,最好是正确地解决一个实际问题,而不是构建一长串不一定对任何人都有帮助的功能。
随着时间的推移,我想在IssueWise上改进很多东西。
但是对于这个挑战,我想集中在一个问题上:
我能让人们更容易地从发现一个不熟悉的GitHub问题到理解如何解决它吗?
这就是问题所在。
奖项类别
我正在提交两个合作伙伴类别的问题。
Gemma的最佳用途
问题用途Gemma 4 26B A4B IT生成GitHub问题的结构化解释。
该模型增强了主要体验,帮助开发人员理解问题,学习相关概念,并确定从哪里开始研究。
渲染的最佳用途
我用过提供;给予部署完整的应用程序,包括Nextjs前端、FastAPI后端和PostgreSQL数据库。
Render使IssueWise可公开访问,因此其他开发人员无需在本地设置项目就可以尝试它。
最后的想法
我觉得AI不应该替开发者做所有的思考。
而且我不认为对开源做贡献应该意味着让一个AI模型生成你不懂的代码。
但我确实认为人工智能可以帮助消除一些不必要的摩擦,这些摩擦让做出贡献变得困难。
有时候,解决问题最困难的部分不是编写代码。
充分理解问题,知道从哪里开始。
这就是我试图让IssueWise变得更简单的原因。
如果你曾经打开过一个GitHub问题,不知道从哪里开始,那就试试吧。