Published on

AI 时代的生存与进化指南(2)

Authors
  • avatar
    Name
    Ethan
    Twitter

在公司做了一次有关AI的分享,把PPT整理成文字,分成3篇。

接上篇AI 时代的生存与进化指南(1)。这是第2篇。

现场视频见文末。

了解完主流模型,为了在今后的使用中更加得心应手,我们必须搞懂几个核心的行业名词。

首先是MCP,也就是模型上下文协议。前两年还能经常听到各大厂商在炒作这个概念,现在基本很少见诸报端了。这不是因为它凉了,而是因为它已经彻底融入了AI的底层,成为了AI时代的基础设施协议。普通大模型只能进行文本对话,但如果我们想让AI大模型去操作一个第三方应用,就需要一套交互协议,这就是MCP的作用。对比来看,大模型通过MCP调用第三方应用,就如同普通程序通过HTTP协议请求网站一样。比如我们要让AI用某个旅行软件帮我们定机票,那个软件只需要实现一个MCP接口,把订机票的功能像API一样暴露给大模型即可。MCP彻底解决了大模型只会说不会干的难题。

其次是RAG,检索增强生成技术。正常情况下,我们给大模型输入提示词,模型在它固有的神经网络记忆里寻找答案并输出。但这有个致命缺陷:所有模型的训练数据都有截止日期。一个独立的模型是绝不可能知道今天早上的突发新闻的。引入RAG之后,这个流程就变了。当你输入提示词后,系统会先去外部数据库或互联网检索最新信息,然后将这些新鲜信息连同你的提示词一起丢给大模型,模型再基于这些综合信息浓缩出一个最准确的答案。这就完美解决了信息滞后和模型胡编乱造的幻觉问题。

当我们把大模型、MCP和RAG这三者结合起来,就诞生了今天真正的核心主角:Agent,智能体。用一句话概括:大模型是大脑,MCP是赋予它行动能力的手脚,RAG是持续给它提供最新信息的耳目。三者合一,就是一个完整的Agent。

Agent有很多形态,就像人类社会有各种职业一样。但在所有类别中,编程Agent绝对是发展最快且最成熟的。当我们现在说要用AI提升研发效率时,其实说的就是要充分利用编程Agent来帮我们干活。毫不夸张地说,现在的编程Agent已经完全可以帮我们完成日常编码中百分之九十以上的任务。对我个人而言,这个数字甚至达到了百分之九十九,绝大多数代码都已经交由它代劳。

编程Agent也经历了一个进化历程。最开始在开发者群体中流行的是Cursor和Windsurf。它们本质上是基于现有IDE编辑器深度改造并集成AI功能的产品。这确实是使用AI最彻底、开箱即用的方式。但由于我多年来一直习惯使用Vim编辑器,不用这类重型IDE,所以我只试用了一小会儿就让它们吃灰了。让一个程序员彻底改变使用了几十年的肌肉记忆去换一个新的编辑器,确实很难。

后来我转投了GitHub Copilot的怀抱。它最大的优势是极其包容,无论大家使用的是VS Code、PyCharm,还是我钟爱的Vim,它都能作为插件完美兼容。我一开始只是把它当做高级的自动补全插件。在敲代码时,它能根据上下文极其精准地猜中我接下来的业务逻辑。比如定义一个三维坐标类的代码,我只手动敲了第一行类的定义,下面所有的初始化方法、距离计算公式,全都是Copilot用灰色字体自动提示出来的,我只需要无脑敲击回车键就全部搞定。

更强大的是它的代码重构能力。当我需要把刚才的三维点类改写成四维点类时,只需要修改类名和新增一个维度变量。屏幕上的绿色背景提示,全是Copilot内置的自动修改建议。它相当于在后台专门派了一个助教,时刻紧盯你当前的代码逻辑,一旦发现不对劲或者遗漏的地方,就立刻帮你生成修正建议,我只需点个确认,剩下的繁琐修改它全包了。

当然,插件形式虽然好上手,但在我看来,命令行才是编程Agent的终极完全体形态。IDE虽然直观,但那些花里胡哨的界面和按钮对AI来说全是冗余。AI干活本质上只需要一个纯粹的输入框来接收用户的自然语言指令,然后把执行结果以字符串的形式输出。这和我们程序员平时用的各种系统命令行工具在形式上是完全统一的。

只需要在我们的项目根目录下,通过命令行唤起AI Agent,新世界的大门就此展开。这界面看起来平平无奇,纯黑的底色,几行光标。但我可以负责任地说,我过去几个月产出的大部分核心代码,全都是在这个平平无奇的界面里,通过输入纯中文指令让AI帮我敲出来的。

这种基于命令行的Agent对程序员来说是足够全能的。它不仅能看懂、修改和运行整个项目的代码,还能自由调用系统的命令行工具进行文件操作,能够自动调用搜索引擎查阅最新的官方文档,甚至可以直接连接并操作本地的数据库。

目前市面上有几款出色的命令行Agent产品。比如大厂出品的Claude Code,虽然强大但是闭源的。还有开源的Gemini CLI,我用的比较多。但这两个工具默认只能接入自家的底层模型。在社区里,很快就孵化出了一个叫OpenCode的开源项目,它和前面提到的产品一样好用,但优势在于它可以自由接入市面上所有主流的大模型。

演示一个简单的使用场景:你只需要在命令行里用中文告诉它,我需要在当前项目增加一个新接口。它接收指令后,会自己去遍历整个项目的代码树,寻找需要修改的文件,精准修改具体的代码行。最硬核的是,代码改完后,它会自动编写并运行测试用例。如果测试没跑通报错了,根本不需要你介入,它会读取报错信息,自己回过头去重新审视刚才改错的地方,继续修改,直到自动化测试完全通过为止。最后,它会体贴地给你生成一份详尽的执行报告。比如我曾经给它下达过一句指令,要求提升某个模块的测试覆盖率。它先是在终端输出了一套清晰的思考逻辑和执行计划,然后一项一项地在后台修改代码,几分钟后,生生把该模块的覆盖率拉到了满级。

除了OpenCode,还有一个由OpenCode早期团队成员开发的产品叫Crush。它的终端界面做得非常华丽,极具极客感,但在实际干活的稳定性上,我个人觉得还是不如OpenCode扎实。

未完待续..