「Eagle」程序员提效神器-AI实干家访谈回顾

By

编者荐语:

程序员AI提效神器「Eagle」的作者李明宇,前阵接受了AGICLass.ai创始人孙志岗的直播访谈邀请。作为「AI实干家」的第一期嘉宾,分享了Eagle的研发过程、技术实现、遇到的挑战以及如何吸引客户等相关问题。本文为这期直播的精彩回顾。

「AI实干家」简介

这是由 AGIClass.ai 创始人孙志岗(视频号@孙志岗AGI指南 | B站@孙志岗AGI指北 | 知乎@孙志岗)主理的一系列访谈直播。主旨是邀请在大模型落地方面做出实在成果的一线实干家来分享第一手的经验。

01 嘉宾简介

李明宇(视频号:编程老师傅-李明宇)

20年资深程序员,善用AI技术帮助程序员们解决工作和生活中的问题。

现任中国科学院某重点实验室高级工程师、研究组负责人。

曾经的创业公司CEO,后在知名上市企业担任事业群技术总监、首席专家。

AGIClass课堂的第三期学员

02 产品简介

Eagle

图片

Eagle是一个面向程序员的AI工具,它通过Repo级的代码解读帮助开发者快速理解项目代码,解决了新项目上手和代码维护中的复杂性问题。程序员的AI提效神器,有“国产Devin”之称。

精彩回顾

这是AI实干家的第一期内容。我们邀请到了中科院高级工程师李明宇老师。

就李明宇的创业项目Eagle做一次深入的产品拆解。详细解析Eagle的研发过程、技术实现、遇到的挑战以及如何吸引客户和获得资金的。通过访谈,获取李明宇老师的一线经验和知识。

灵感来源(Eagle的诞生)

李明宇老师在观看一位AI博主在线演示时,了解到一个能够总结整本书内容并回答相关问题的AI工具。

这启发了他思考如何将类似的技术应用于整个项目的代码解读。尽管已有工具如GitHub、 Copilot可以辅助解读代码片段,但这些工具通常仅限于分析和解读小段代码,缺乏对整个项目代码库的全面理解能力。

特别是程序员在接触新项目或他人代码时,尤其是面对复杂或质量较差的代码(俗称”屎山代码”)时,最需要帮助。

这促使他产生了开发一个能够全面梳理和解读整个项目代码的AI工具的想法,即后来的Eagle诞生了。

上车大模型

2022年底,随着ChatGPT出现,引爆了整个AI生态。李明宇老师意识到了后面AI会有一个很大的发展,所以叫上团队小伙伴一起上车大模型。这到现在看来是做的最重要的事情。

原先,agent可能被看作是具有高度智能、自主规划和决策能力的系统。在过去一年半中,随着大家对大模型应用的深入,即使是执行单一命令或任务的系统也可以被称作agent。现在,”agent”一词几乎等同于大模型应用。

03 Eagle的使用场景

Eagle(www.capitalren.com)Repo级代码解读AI Agent。程序员的AI提效神器,有“国产Devin”之称。

图片
  • 新项目上手:当程序员加入新项目或接手别人的代码时,Eagle可以帮助他们快速理解整个项目的代码结构和逻辑。
  • 开源项目解读:当开发者想要了解一个开源项目,尤其需要深入研究和进行后续开发时,Eagle可快速梳理开源代码的整体结构、识别重要目录和文件、分析具体实现等。并能针对开发者提出的问题,在整个项目的上下文中就关键实现细节对代码做深入解读。
  • 代码审查及维护:Eagle可以辅助进行代码审查(Code Review),提供对代码修改的深入分析和建议,提高代码质量。并协助程序员在项目维护中跟踪代码变更,理解现有代码的功能和潜在问题。
  • 自动化测试和调试:Eagle可以辅助自动化测试过程,提供对测试结果的深入分析,帮助定位和辅助bug修复等。
  • 技术面试准备:程序员可以使用Eagle来准备技术面试,通过分析开源项目或以往参与的项目代码,加深对项目的理解。
  • 教育和学习:对于编程教育和自我提升,Eagle可以作为一个强大的学习工具,帮助理解复杂的代码库和编程概念。
04 Eagle的项目拆解(Q&A)

网友:AI会代替程序员吗?

李明宇:可能三到五年都不太会出现这种情况。开发Eagle等,更多的是帮助程序员提高编程效率

程序员使用AI工具后,可以将更多时间从日常代码编写的繁琐细节中解放出来,转而投入到更有价值的思考中(包括深入理解用户需求、改善用户服务等),从产品经理视角思考和理解业务。

网友:这套系统在内网代码上是怎么处理的?

李明宇:Eagle系统支持本地部署,但目前不支持部署到小盒子中,需要服务器环境。预计在今年第四季度(Q4),Eagle将支持本地部署。

目前,团队正在评估国内模型的性能,并与用户进行沟通,了解他们是否已经使用了如阿里云、腾讯云等云服务提供商的服务。如果用户已经使用了这些服务,Eagle会首选接入这些云厂商的大型服务,以减少成本和合规性问题。

此外,Eagle结合了大模型和传统静态分析方法,如语法树分析,构建代码之间的关联关系。这种方法降低了对模型内置知识的要求,提高了对复杂任务的处理能力。预计到Q4,结合国产模型的Eagle将能够达到与国外模型相似的性能。

同时用图结构和静态分析可以提升系统的竞争力,并减少对模型能力的依赖。

网友:传统软件分析,如何将静态分析和大模型结合起来?

李明宇:传统代码分析方法(如构造语法树或图)与大模型分析之间还是有差异的。传统方法非常细致,但直接用于大模型不可行;而大模型自身分析又可能过于粗糙。

需要找到适当的结构方式将细致的静态分析和大模型的粗略理解结合起来,以实现更好的分析效果。

如果后面项目达到了一定的技术领先水平,未来可能会考虑开源部分技术,到时大家可以一起开放地讨论和分析背后的代码。

网友:被混淆过的代码Eagle可以分析吗?

李明宇:当然可以。

目前有付费用户反馈其效果良好。对于混淆过的代码,针对不同的场景,效果也不完全一致,但对混淆过的代码,Eagle的分析效果个人认为比人工分析要好得多。
网友:Eagle可以独立修bug吗?

李明宇:目前,完全由AI独立修复bug可能还需要逐步发展,目前还是人机协作

基于Repo级代码解读的其他AI Agent:Woodpecker,他的功能是帮助修复代码中的bug。

总的来说,AI分析代码库后,接收开发者提交的issue,并尝试进行修改。如果AI在修复过程中遇到困难,它会将中间结果展示给人类开发者,由开发者进行进一步的补充、提示或纠正。


孙志岗:聊聊你对VC融资的看法?

李明宇:以往在融资时,会有担心投资方不提供资金的风险,但从另一个角度来看待这个问题。GP承担KPI的压力,如果未能完成,资金就无法有效利用。

尽管市场投资规模相比过去有所减少,但资金仍然存在,特别是在其他行业整体不景气的情况下。投资者仍然希望能够通过投资实现突破。大的资金可能会考虑投资于芯片、智能汽车等领域。而在一定资金规模范围内,AI相关领域可能是首选。


孙志岗:调试Agent有什么秘诀吗?

李明宇:测试过程非常艰难缓慢,需要专家持续监督和干预。AI模型可能在执行多步骤任务时出现偏差,这要求专家持续关注每一步,寻找问题所在,调整逻辑等等。测试一个AI模型可能耗费大量时间,且需要不断调整和重新测试。

调试Agent也没有什么特殊的提效办法,就是不断优化给AI的指令来改善其性能,甚至需要简化AI的指令(instructions),使得AI的表现更加高效。不断的尝试不断的试错。


网友:Eagle用的是ChatGPT 4o是吗?有没有考虑自己去或者微调一个底层模型?

李明宇:虽然使用了ChatGPT 4o,但并没有完全依赖它,目前没有计划自己训练多层模型。

目前工作重点在于建立代码库索引和图结构,包括节点属性和自然语言描述,以便大模型能够理解并有效使用

即在某些情况下,微调可能并不需要,或者至少不是首选解决方案,尤其是在面对算力限制或特定细分场景时。可以采用替代微调的方法,即将微调数据集中有特点的样本直接用作提示(prompts),以指导模型的性能。


孙志岗:聊聊你是如何找到付费客户的?

李明宇:第一波用户,无论是企业用户(B端)还是个人消费者(C端),与视频号有密切关系。视频号作为一种内容分享平台,持续发布有价值的视频内容,有助于吸引潜在客户。

在B端市场,通过渠道代理商或集成商作为中间桥梁接触潜在客户,这比自己直接接触终端客户更有效。

在C端市场,通过有趣的内容或活动吸引客户,并持续不断的高频触达。第一次接触可能不会下单。当客户遇到具体需求或问题(痛点)时,迫切需要解决的时候“自然”就下单了。


网友:Eagle如何使用长文本进行代码解析?

李明宇:Eagle会使用长文本进行分析。在代码分析中结合长文本和静态分析,以提供更全面的代码理解。

除了代码本身,还需要将应用文档、描述、对话和上下文等辅助信息整合到分析中

模型需要能够处理大量的token,例如128k token,这可能对应十万行代码。但要避免因为文本太长而导致处理延迟或输出时间延长。

通过精心构造的RAG(Retrieval-Augmented Generation)方式,可以更有效地使用长文本,而不是简单地将大量token塞入模型。

无关信息的长文本可能会对分析结果的准确性产生负面影响,因此需要谨慎选择文本内容。


网友:如何看待多智能体群的落地应用,以及在这个过程中会遇到哪些挑战?

李明宇:多智能体群的落地是一个明确的发展方向,它们通过协作可以完成更复杂的工作。

挑战方面,首先包括对单个智能体(agent)的调试,如prom调试和逻辑调试。

其次,如何划分智能体是一个问题,特别是当按照人类工作环境中的岗位进行匹配时,因为现实中一个岗位可能涉及多个角色,一天中可能需要处理多种任务,这使得智能体的划分变得复杂。

趣味金句

李明宇:程序员做AI来帮助程序员

——Eagle项目的初心,即利用人工智能技术来辅助程序员的工作

李明宇:像读整本书一样,能够读懂整个项目的代码

——Eagle项目的目标,即让AI全面理解项目代码,提供更深层次的代码解读

孙志岗:所谓的说谁话多就谁把这事干了吧

——Eagle在代码审查(Code Review)方面的一个独特功能,不仅在于提供代码改进的建议,而且能够实际帮助开发者编写代码,即AI能够自动生成修改后的代码

孙志岗:跟AI对话,拼命的想让ta弄明白自己想干嘛

——调试Agent是一个非常复杂的过程。就是不断优化给AI的指令来改善其性能,甚至需要简化AI的指令(instructions),使得AI的表现更加高效。教导AI的过程具有挑战性。