广告时间:Relingo
亲爱的听众和观众朋友们,本期节目又有广告啦。Relingo 是一款借助 AI 来帮助你轻松扩大词汇量的工具。它本身提供了很多功能,比如网页查词、高亮显示这种基本的,还有沉浸式翻译、PDF 文档翻译,以及 YouTube、Netflix 等多个视频网站的实时字幕翻译。
我自己用的最多的是 Relingo 浏览器插件的网页生词高亮和 YouTube 字幕。因为我平时阅读英文文章比较多,所以我遇到生词的时候,都是直接右键 Relingo 查询,然后 Relingo 不仅会将它自动加入我的生词本,还会在之后遇到的网页中,再高亮出这个生词。这就帮助我每一次遇到这个生词的时候,都能记忆一遍。同样我在看 YouTube 的时候,也会打开 Relingo 的实时翻译字幕,然后可以直接鼠标悬停查词,在之后遇到这个生词的时候,他也会在字幕中高亮出来。所以说,这种不影响我阅读和观看体验的同时又能增加我词汇量的方法,我觉得对我的信息吸收效率都提升了很多。
那么关键的来了,现在扫描我们视频左侧的二维码或者访问 Relingo 官网,输入优惠码 beyondcode 下单,可以享受7折优惠。详细的链接和优惠码,各位朋友都可以在我们的视频或者博客简介评论区中找到。感谢各位。
开场与嘉宾介绍
GeekPlux: Hello,大家好,这里是代码之外。今天 Randy 和勾股不在,但我隆重的邀请到了 VS Code 团队的 Engineer Manager 吕鹏。我相信现在几乎所有的程序员都听过 VS Code 吧,而吕鹏几乎就是全程参与了 VS Code 从最早到现在整个的全过程。最近从那个 Stack Overflow 的调查来看,VS Code 现在的市场占有率是75.9%,非常夸张。
关于吕鹏,我其实关注真的是很久了,估计最少有七八年,绝对是非常低调的大佬。所以今天我借着这期博客的机会,顺便能跟大佬交流交流。这期博客我应该主要会问到一些吕鹏大佬的个人经历、来美国多年的感受,还有 VS Code 以及 Copilot Chat 这种 AI 工具现在一路是怎么进化的,这个估计是大家最关心的。还有作为这个一线的,正在 building 这个 AI tools 的程序员是怎么看待 AI 编程的,怎么看待 Vibe Coding 的。然后我听说最近你也上线了两款 iOS 应用,所以我也非常好奇你是怎么通过 Vibe Coding 最后一直让它上线。最后聊聊你可能在微软 VS Code 团队工作的日常,以及怎么从 IC (Individual Contributor: 独立贡献者) 到 Manager 的。整个话题我可能觉得太多了,但是我们不一定都聊完,也也不一定聊的顺序是怎么样,总之我们就聊到哪算哪。OK,那么现在就有请我们的嘉宾吕鹏来给听众朋友们打个招呼,顺便自我介绍一下。
吕鹏: Hello 大家好,我是吕鹏,我现在在微软 VS Code 团队做一名 Engineering Manager (工程经理)。现在主要做的工作是 GitHub Coding Agent 在 VS Code 里的集成,以及一些 background agent 的工作。前几个月刚刚完成了 Copilot Chat 的开源工作。Yeah,这就是我的近况。
Copilot 开源的背后
GeekPlux: 说起这个 Copilot 的开源,我其实最早刷到就是你转发的,你 retweet,然后你还欢迎大家去给那个贡献代码。然后你知道我是 GitHub Copilot 的非常重度的用户,我每天几乎就是写代码已经完全离不开了。所以我特别好奇,当时是这个开源计划是已经在微软内部已有的,还是说你们怎么决定的,突然就把它开源了,然后是出于什么样的目的呢?
吕鹏: 就是对于我们自己团队而言,这个事情是我们从一开始就想做的。你看 VS Code 一直是开源的对吧,就是从最开始它就一直是有开源的。而且我们最开始有一些功能,像 VS Code Server,就是 remote 的一些支持,它有一些本身最开始不开源之后,我们也其实全部都放到了这个 OSS (Open Source Software: 开源软件) 版本里面。也就是说 99% 的 VS Code 代码都是开源的,我们也比较擅长做开源的这个工作。
那刚开始做 AI 这个集成的时候,我们当时团队自己的判断就是,大部分的这个能力其实都是来自于模型的。也就是说,你本身在大语言模型上做开发工具,或做任何的工具也好,你本身没有护城河。所以我们其实是倾向于它其实都是可以开源的,你没有任何的 IP (Intellectual Property: 知识产权) 需要去保护的。但当时更多的考量可能还是在于 business 相关的这个考虑。就是如果你是开源的,那是不是大家就会立刻依然为你的产品付费。那我们马后炮讲就是,确实是的。就是大家只是通过某一种渠道,最终还是为这个大语言模型的 token 付费,对吧。他其实不太介意我究竟是通过 Cursor 还是通过 GitHub Copilot,这个钱最后反正也不留在我们这,跑到了 OpenAI 或者是 Anthropic 那边。所以现在来讲,开源就确实是一个对 business 上不会有太大影响的这样一个决定。
当然是在三年前的时候,我觉得还是很难有人能够拍板说,我们从 day one 就开始开源,但这个也是我们一直在努力的方向。然后最终呢,我们在这个几个月前决定要开源。但这里面有很多的工作要做,就是可能三四个月前我们就觉得,那我们开源吧。然后这个时候需要你知道,当如果你这个代码本身不开源的时候,你写代码的时候可能是有一点狂野的,对吧,你也可能不太注意你那些 comment,你也不太注意有些不适合放到这个开源代码里的东西,你也就放进去了。需要很多的 clean up 工作需要做,然后最终在上个月把它开源出来。
GeekPlux: 这真的是最近我自己觉得比较大的新闻,因为我一直关注 VS Code,我甚至还经常看你们那个 YouTube channel,然后通过你们的 YouTube channel 学习一下你们团队的人到底是怎么用 VS Code,然后看我能不能用到。总之我非常同意,我感觉整个这个 AI 编程工具,其实它的核心的提升还是模型的提升。就像不管是 Cursor 还是 VS Code,我觉得他们可能是一些交互上的创新,就像你说的,护城河没有那么深。
吕鹏: 我自己觉得对 Cursor 的话,还是他有几个创新是,可以说还是有一点护城河的。比如说他们那个 type 模型对吧,type type type。但是现在 VS Code 的不是也有吗?对,VS Code 也有。但我还是得说 Cursor 是 state of the art,就是做的是最好的。而且他的这个体验,应该从各个横向对比,应该是断档是领先于所有的市面上的所有的这个模型的。那他们当然了,是拥有非常非常聪明的团队,对吧,他们一开始就跟那个 Fireworks 合作,就是怎么样去 host 这个模型,做了很多的工作。然后所以这个体验来说,至今也没有谁能够说 100% 可以说我已经超过了 Cursor 或者是跟 Cursor 是达到一样的这个效果。所以从这个角度上说,还是有一定护城河的。但唯一的问题就是说,这是不是一定是大家将来编程的方式。我的理解上,因为有了 agent (智能代理),大家在编辑器里使用的,使用这个写代码的时间是越来越少的。想在这个方面上去追赶 Cursor,或者甚至超过 Cursor 的性价比可能就没有那么高。这个是对于每一家正在做 AI 编辑器的公司而言,都是同样的道理,对吧。你需不需要跟 Cursor 在这个方向去 compete,可能是没有必要的,因为你做最重要的是,大家可能将来使用的是 agent 来书写代码。
在美国的生活与感受
GeekPlux: OK,我本来是想继续深入问的,但我们可能这个话题切的太生硬了,就是最开始的时候就直接问了 GitHub Copilot。因为我对这个太感兴趣了,但是我们可以放在一会之后聊,因为我觉得对 AI 编程我有很多问题想请教你。我们这个节目不是说代码之外嘛,所以我们先聊聊生活方面的事情。所以我特别好奇,你来美国大概多少年了?
吕鹏: 我是16年夏天来的美国。
GeekPlux: 16年夏天,那还来挺久了。那你觉得就是,因为我是来美国可能才2年嘛,我是二三年来的。然后我来的时候感觉就是,不是一个很好的 timing,就很多东西跟我自己当时做的 research 都是相差比较远的。然后你当时来的时候,你觉得来美国给你的生活符合你的预期吗?
吕鹏: 我来的时候第一次来是5月份,就16年5月份,我是过来面试,就是面试 VS Code 团队。
GeekPlux: 就是淡季之前先来了一次是吧?
吕鹏: 对,我先来了三个礼拜,然后面试嘛。然后那时候5月份,刚好西雅图应该是下雨很多,但刚好16年他不怎么下雨,然后给我的感受就是这边天气不错。而且华盛顿州叫 Evergreen State,就是一直都是因为有很多松树嘛,所以环境也很好,就像那个住在森林里,对吧。所以给我的整体感受是非常好的,所以之后9月份搬过来之后,我整体而言还是符合我的这个预期的。就是因为我原来在上海的生活,本身也是周一到周五去公司,周末的话平时就是出去找东西吃,逛逛街,跟虽然跟朋友玩,但是没有那么频繁。所以对于我而言相对而言还可以。
GeekPlux: 你当时是从上海直接来的美国是吗?
吕鹏: 是的。
GeekPlux: 那是什么契机来的呢?
吕鹏: 因为我13年大学毕业,然后当时就是到15年底工作大概两年半。那时候是打算是要结婚了,但是呢结婚第一个想的事情就是,我大概在接下来在哪里生活。老实讲呢,上海在15年、16年的时候呢,留下来的难度还是相对比较高的,我不知道现在的情况,但当时那会是觉得很难的。于是我就想,那我要不要试一试别的工作机会,对吧,可能试一试别的城市或者别的国家。然后我就开始在微软内部,很多团队要招聘的时候,他除了在外面招聘,还会在内部进行招聘。然后我就看了一下,大概有两个团队比较有意思,一个是 TypeScript,还有一个就是 VS Code。
GeekPlux: 都是两大热门。
吕鹏: 对,当时都非常热门,因为 VS Code 刚刚宣布他们要开源嘛,同时开始在西雅图总部这边要创建一个团队。他们之前的团队,VS Code 之前的团队都在苏黎世,那现在要在总部也要有一个团队开始要扩招。TypeScript 应该也是在扩招。我大概看了一下,就是我觉得 TypeScript 作为编程语言,可能难度比较高吧,我觉得。那我应该先找一个相对简单一点的练练手。所以我就先面试了 VS Code。
GeekPlux: 你现在这么说,竟然把 VS Code 说成相对简单的。
吕鹏: 我只是,但我面试因为我是面的 Eric Gamma 对吧,然后 Eric 跟 Anders Hejlsberg 呢,那在业界都是教科书式的人物对吧。然后我面完那个 Eric 之后,我是觉得我非常喜欢 Eric,而且我也很喜欢开发工具,所以面了这个团队之后,我就之后就没有再面 TypeScript。
GeekPlux: Eric 是 Eric Gamma,是那个 Monaco Editor?
吕鹏: 对,Monaco Editor。就是他之前是在 IBM 工作,然后被微软挖过来开始做 Monaco Editor 和 Monaco Workbench,最终就是成为了 VS Code。
GeekPlux: 就 VS Code 其实是 based on Monaco Editor?
吕鹏: 最早的时候相当于,还是,VS Code 就是 Monaco Editor,就是到现在,同一个团队。就是说这个团队就是 Eric 的团队。
GeekPlux: 那我知道 Eric 是因为他写的那个 Design Patterns (设计模式)。
吕鹏: 对,就是设计模式。所以你就是,你在里面的时候,你看 Anders 是写做 TypeScript,做 C# 的对吧。其实就是我只是从我自己的感受而言,我觉得编程语言可能更难一点吧。
GeekPlux: 哇塞,那每天跟大神一起工作的感觉是什么样?
吕鹏: 大神是比较平易近人的。
GeekPlux: 你当时来美国比较早,到现在有变化很大,然后很多人都吐槽,从那之后,美国开始就是变得没有以前那么的,有点像灯塔的感觉,就现在灯塔的那些光环都慢慢的褪去了。你自己觉得是这样的吗?还是你自己觉得其实生活方面来说好像没那么大的变化?
吕鹏: 西雅图可能还是跟别的城市有点不太一样,像西雅图、三藩或者纽约,因为是非常蓝的 city 对吧。我都不能说它是一个蓝州,因为实际上,如果你看那个每次的大选的时候那个图的话,实际上其实它蓝的部分大部分其实就集中在这几个大城市。然后西雅图地区呢,因为比较蓝,所以整体体验呢,对于一个像我们就是移居过来的人而言呢,就相对来说是比较友好的,这是我自己的感受。就是你去超市,你去任何餐馆对吧,你去买东西别人不会觉得你是一个外来者,因为大家看起来都很不一样。但是我相信,如果你去到一个相对比较红的州的话,就是你很明显嘛,你 stand out 对吧,就是你不是一个白人,别人会把你当做一个游客。当然可能那个体验也会很好对吧。但是相对而言,我觉得来到西雅图的话,就是给我的感受就是,好像没有什么不一样,跟我在上海的体验是好像是差不多的。
GeekPlux: 因为我没去过那些红州,所以我现在还没有体验到这种就是把你特殊对待的感觉。因为我说起来这个大选,我也是在亚特兰大嘛,其实亚特兰大也是整个佐治亚州唯一的一个蓝的部分,很有意思,就是他这 city 是蓝的,然后整个围绕着这个 city 是全部都是红的。
吕鹏: 但是像西雅图,就是大家不把你当做外来者对吧,有的时候会带来的体验的感受就是,这是我听我的一些墨西哥裔的朋友说,就是他给你感觉就是人很冷漠。但如果到一些相对,比如说你要去德州,像我在在德州玩的时候,或者在去墨西哥州玩,就当然了,可能是因为人家把你当做游客,那对你相对而言可能会更热情,但也不排除另外一种极端情况对吧。
GeekPlux: 明白明白,有意思。我自己觉得反正我在亚特兰大待下来的话,感觉大家还是蛮热情的。但是每次我一说起来这个,他们都说是因为是南方人,南方人可能本身就比较热情之类的。或者说本来亚特兰大黑人比较多,然后黑人哥们也比较热情。我是蛮喜欢我同事里面所有的那些黑人 bro,我们每天都 bro 来 bro 去真的很有意思。
GeekPlux: 那你当时来美国有什么 culture shock (文化冲击) 吗?就是当时来的时候,就是我自己的感受,是生活体验上的感受什么的。
吕鹏: 反正从16年开始,我也不知道到底是究竟是整体系统性的问题,还是某一个党派的问题,那至少在西雅图地区这个物价是,对,主要就是物价,你觉得是比以前就很明显还是高了很多是吧?高了非常非常多。可以说,西雅图的物价已经到了一个令人发指的地步,生活体验其实是非常不好的,就是单从物价的角度上来讲。
GeekPlux: 我自己也感觉,虽然我仅仅来了两年,但是我明显看到我最常买的可乐的那个价钱就是一刀一刀在往上涨,还是蛮夸张的。唯一不涨的就是 Costco 的热狗,倒是不涨,但其他都是涨的。
吕-鹏: 它虽然不涨,但是它那个分量越来越小了。我每次去吃那个 sandwich,我刚来的时候,他那个 sandwich 大概是我一只手掌这么大,然后后来慢慢变成了就是除手指的部分的这么大,比以前小了50%将近,很夸张,虽然价钱没变。
GeekPlux: 对,这也是物价,我就主要就是想问物价,我感觉物价真的是,这可能是通胀吧,或者是 QE (Quantitative Easing: 量化宽松) 之类的。
吕鹏: 我自己都没有具体计算,那我如果从数字上讲,说物价涨了一倍我都觉得不夸张。
GeekPlux: 肯定不止吧,连房价都不止,我这边房价都随便翻倍感觉。
吕鹏: 对,但带来问题就是说它整体的这个薪资水平实际上并没有跟着一起涨嘛,所以导致大家生活体验确实是很不好。所以这就是为什么一到长周末的时候,西雅图人民就会开车到温哥华去。
GeekPlux: 但是温哥华的物价不是也是让大家叫苦不迭吗?就是他也是相对高的吧相当于。
吕鹏: 对,他是相对高的,但是相对于西雅图还是低是吗?对啊。
GeekPlux: 这样 OK,怪不得。
吕鹏: 就可见就是西雅图有多高。像我们去年去了一趟那个挪威对吧,挪威的物价是很高的。但是我们去那吃东西之后发现,哎,好像跟西雅图差不多,就是没有被这种 shocked。然后我们从挪威后来去了法国的时候,一下,哎,确实物价下降了。因为挪威的物价确实是比法国要更高的。但是像挪威的物价,至少跟西雅图应该是一个水平上的吧。
GeekPlux: 对,现在就是大家只要确实只要出去美国,就发现哎,怎么东西都这么便宜,都有这种感觉。我自己觉得就是美国这个通货膨胀实在太厉害了,所以他可能这个利率短时间间内也就是不容易那么下调。
AI 编程与工具探讨
GeekPlux: 然后我们接下来就聊聊 AI 编程吧,我觉得这块是现在最火的话题了。你日常编程是不是就是用 VS Code,相当于你自己在写代码给 VS Code,然后再自己在用 VS Code 写 VS Code 的代码?
吕鹏: 对,就是所有的 AI 工具,大家的宣传方式都是我们用自己的工具开发自己的工具。就如果大家不这么做,那你就不要使用这个产品。对吧,你一定是,你只有不断使用自己的工具,才能够提高它的体验。但 VS Code 也不是我唯一使用的工具。就是我大部分时间是使用 VS Code,我也使用非常多的 ChatGPT。比如说非编程类的,我还是很喜欢。
GeekPlux: 日常生活是吗?
吕鹏: 对,我很喜欢用 ChatGPT。甚至有时候工作中,有些 meeting 的 summary,那需要一些 polish,我可能会使用 ChatGPT。开发就是另外使用比较多的 AI 工具的话,是 Codex 和 Claude Code。
GeekPlux: 哦你竟然用 Codex。
吕鹏: 对,Codex 我也用。我是付的是那个他那个 Max Tier,就是200美金的那个版本。然后 Claude Code 我也是使用的200美金那个版本。就是因为 Claude Code 更多是在 Terminal 里面使用,对吧。然后 Codex 它是,它是一个 background agent。当然我现在也是在做竞品,对吧,我们做那个 GitHub Coding Agent,它实质上也是 background agent。但它的这个 entry point 更多是从 GitHub Issues。对吧,你有一个用户给你发了个 issue,你把它 assign 给这个 Copilot,这时候他就开始给你处理这个 issue。然后我们现在做的 integration 呢,就是在 VS Code 里面,怎么能够不需要使用一些,你直接把你的一个任务就给推给这个 GitHub Coding Agent,我们叫是在做这个 integration。另外一个就是你怎么在做 VS Code 里面,像 Cursor 它自己的模式是说,Cursor 的 background agent 是说你在 Cursor 里面把一个任务交给这个 background agent,然后它其实是一个 VM (Virtual Machine: 虚拟机) 跑在 AWS 上面,然后你可以 remote 到这个 VM 里面去,然后他的这个 coding agent 就在这个里面跑。那这个也是我们正在研究的一个方向。当然,这个是已经就是做了有一段时间了,只不过还没有上线这个功能。就这几个是我在使用的,也在开发的,但同时我也使用 Codex 和 Claude Code。
ChatGPT 及其他 AI 工具的使用
GeekPlux: 等一下,信息量有点太大了,我有很多问题。这第一个问题你说,就是除了日常也会用 ChatGPT,你是生活中主要用 ChatGPT 对吧?
吕鹏: 对。
GeekPlux: 你最喜欢他哪个功能?
吕鹏: ChatGPT 我觉得如果是我个人的话,我觉得他那个 memory 就是很好。自从有了 memory 我就离不开 ChatGPT 了。其实之前是各个工具都在用,然后就是问一些日常的问题,我只是说生活上。然后自从有了 memory,感觉就离不开 ChatGPT 了。他那个你有没有试过问他,让他给你一句话总结你是一个什么样的人?
GeekPlux: 我问过呀。
吕鹏: 你问完之后你会觉得有点 creepy,就是他确实知道你东西太多了。
GeekPlux: 对,这让我有一丝顾虑吧。
吕鹏: Memory 我很喜欢,然后我觉得是很好一点是 memory 是你不需要去考虑它是否存在,因为它 just works 对吧。你去问问题的时候,它经常就知道你的意图是什么。我另外一个比较喜欢的功能,或者说我们家都比较喜欢功能,是它的那个 voice mode。就它有两个 voice mode,一个是那个普通的版本黑色的,另外一个是蓝色的,蓝色的那个是你可以去打断它。所以经常我们在开车的时候,小朋友有问题的时候,他我们会让他可以跟 ChatGPT 聊天。而且 ChatGPT 他能够理解有多个人在跟他聊天。就是说我会唤醒 ChatGPT,然后告诉他我的小朋友有一个问题要问他,这时候就会变成一个三个人的这个对话。
GeekPlux: 这是我们现在 ChatGPT 功能是,这个也是我们最近刚发掘的。我就发现我跟 ChatGPT 聊,可以把它完全当成这个面试者或者是面试官,就非常好用。然后我也是在开车的时候用,然后也会给孩子们去聊,然后就觉得这个功能真的是太强了。而且他是,他的听感会让你觉得他是一个真的人,很恐怖。而且我让他说,哎你能不能换一个口音,变成北京口音,然后一会又让他变成广东普通话口音之类的,就他都能随时切换。而且他也能理解就是像你说的多个人在跟他聊天,我觉得真的很夸张,就有点像那个电影里的感觉了。
GeekPlux: 我其实好奇就是你们,就是微软跟 OpenAI 不是最开始的时候绑定还比较深嘛,那你们是在内部就工作方面,是用那个 ChatGPT Enterprise 那个版本吗,还是就是普通的 ChatGPT?
吕鹏: 我是自己使用普通的 ChatGPT。工作内容我更多会使用 Microsoft Copilot。就是微软自己也有。就那个 Copilot,但就是不是 GitHub Copilot,不是那个 coding 工具,而是一个最开始是在 Bing 里面,后来他专门做了一个 Microsoft Copilot,他有一个应用,也有一个网页版本。而那个工具,实际上他因为能够理解就是工作的一些内容,他甚至能够进行工作内容的这个搜索,跟那个 SharePoint 能够 connect 到一起。对,然后我们像我们每年做那个绩效考核的时候,不是要写很长的这个文档嘛,这时候公司还推出了说你可以使用 Microsoft Copilot 帮助你去给别人写评论,或者总结自己一年的工作。
GeekPlux: 没错,最后发现呢,效果不是特别好,就是你毕竟你还是得自己写。
吕鹏: 对,我们公司也是,我们是应该是深度使用所有微软的全家桶的。所以我们内部最早也是把这个 Copilot onboarded,然后我发现他还在很多方面其实还是挺好用的。除了你刚才说那个写 performance review 的时候,虽然那个效果不是很好,但是最起码他会列出一些你可能忘了的点。因为我不停的问,然后突然他蹦出来一个,他不停的给你写嘛,然后突然某一条他蹦出来一个东西,然后还 link 了你某个之前写过的文档,你突然想起来,噢,这个东西好像也是一个蛮大的贡献,但是我竟然忘了。所以我觉得他在这一点上,虽然他写不出特别好的一个完整的版本,但是他在这个提示你到底做了什么时候,我觉得还蛮好用的。
另一方面就是那个邮件,就是我有时候自己写邮件,我不确定这个态度,就是是太谄媚了还是说太啰嗦了,然后我就让他写一个简洁但是又有礼貌的版本就好了,就不要太复杂。我我经常会用这个功能。
背景智能代理 (Background Agent) 的应用
GeekPlux: 你刚才还提到你还用的 Codex,这个是我完全没想到的,因为我自己是完全没用过,我甚至都没尝试过,就是完全没打开过他那个页面。你为什么觉得他是好用的,还是说?
吕鹏: Codex 实际上我觉得就是在过去的,比如说三四个月之内。先是就是微软的我们的 Build Conference 的时候,我们发布了这个 Copilot Coding Agent。对吧,就是能够去自动化的修改你的 GitLab 上面的 issue、这些 bug,你也可以让他给你完成你的一些 feature request。然后 Codex 是在微软 conference 的两天前发布。发布完之后我立刻就去使用了,它是在发布会之前的那个周五,赶在我们发布之前它就发布了。然后正好在微软 Coding Agent 发布的那一周,谷歌也发布了那个 Gemini Code Assist。
我自己使用下来的感受是,我自己叫它 backlog scraper。就是说如果你有一个项目,你这个项目有非常多的待办事项,对吧,你有很多的 bug,你有很多的用户 complain。你以前的工作方式都是,打开你最喜欢的 coding agent,或者是 AI 编辑器,完了之后到这个 agent 的模式里面,然后把一个问题丢给他。但 Codex 的,它因为所有东西都跑在 background,而且它是跑在云端的,也就是说互相之间实际上是不会有任何的 conflict。在这种情况下,它大幅的减少你的 cognitive load,就是让这个事情变得非常的简单、非常的易用。你会非常愿意的,就是把你的所有的50个 issue 全部都交给 Codex。
当然你也可以使用 GitHub Coding Agent 做同样的事情,但是 Codex 和 GitHub Coding Agent 是同一类产品,就是说它跑在云端,能够并行的处理非常多的这个任务,而且每个任务都可以是完全独立的。
GeekPlux: 欸等一下,你说 GitHub Copilot Agent,是说那个,就比如说我打开 VS Code,然后右下弹开那个 Copilot Chat,然后它不是现在多了一个 mode,就是 agent mode,你说的是这个 agent mode 吗?
吕鹏: 说的不是这个。当然这个就是微软在命名上永远是做的非常糟糕。我说的这个 GitHub Coding Agent 呢是说,GitHub 它实际上能够在,它给你 host 一个环境,然后这个环境里面跑一个 language model,然后去跑一个 coding agent 去给你处理问题。然后你同时可以跑非常多个。
GeekPlux: 比如说我有50个 items 在那个 backlog 里面,然后我把它就是批量的扔到那个 GitHub Coding Agent 里面,他最后产出的是一个 PR (Pull Request) 吗?就是每一个 item 会变成一个 PR,然后你 review 每个 PR 就50个 PR 吗还是说?
吕鹏: Codex 跟 GitHub 的做法稍有不同。Codex 的做法是说,我每一个都给你 propose 一个代码的改动。但是呢因为 Codex 默认实际上是,他不会立刻给你发布这个 PR,但是它是一个你可以做多轮的对话,完了之后,最后我觉得代码看的差不多了,那我发一个 PR。GitHub 的做法是说,我在这个任务开始的时候,我就创建一个 draft PR。这个 draft PR 就是不会被 merge 对吧,就是也还没有到一个可以被 review 的状态。然后 GitHub 就开始不断的在这个 branch 上面不断进行工作,它每做一些改动,它可能会 push 一个 commit。就是两种操作方式上略有不同,但是你可以想象,最终如果这50个 job 最后完成之后,你觉得这个代码不错,那你最终肯定是会变成50个 PR。然后你的工作就变成了 review 这50个 PR。
Vibe Coding 的探讨与未来
GeekPlux: 啊,听起来感觉还是后者更好一点,我觉得。但是这就导致一个问题,就是虽然它是并行的处理完了50个 PR,created 了50个 PR,然后这50个 PR 的代码好像没有关联,那么的设计肯定没那么好了,然后关联也没那么好,他没办法功能受限。所以你在 review 的时候肯定很蛋疼啊。你 review 完一个,突然发现他 create 了一个比如说 button 这个 component,第二个他又 create 的同一个 button,然后放在了另一个文件夹,这很蛋疼。
吕鹏: 我先回答你这个问题,然后我们再讨论 Vibe Coding。就是说你想,如果是你作为一个 engineer,你自己如果说我今天要修10个 issue,你的做法应该是,你先看一下这10个 issue 大概是都是干什么的,对吧,他们互相之间有没有一些 overlap,有没有一些事情是需要提前先做好,然后做一些很好的,有一些 architecture 上的改动,同时能去支持其中的某几个任务。这是你一个 engineer 的正常的一个 workflow,对吧。
而如果说我们不加任何思考,立刻看到这50个,全部都交给 coding agent 的话,然后 coding agent 本身,这50个现在的 design,他们都是并行的,也就是说他们互相之间,他并不知道别的 context。那这种情况下,就会出现你刚才提的这个结果,它有非常多的重复的代码。
而如果我们说到 Vibe Coding (氛围编程) 的话,我自己的理解是,如果你 Vibe Coding,你是不应该看代码的。你也是不应该看,你也不应该关心 PR。你关心的结果是说,我现在想要完成这样一个功能,最终这个东西是不是我想要的。如果我需要去看代码的话,对我而言,已经不属于 Vibe Coding 的这个范畴了。氛围编程嘛,是这个感受,对吧,是从一个 idea 到它这个实现。代码对你而言是不可见的,你也不应该关心代码。而如果一旦你需要去关心代码,你重新回到了 software engineer 的这个工作。
GeekPlux: 有道理,那你相当于你对 Vibe Coding 的理解就是,你的 role 变成了一个 Product Manager (产品经理),而不是 engineer。
吕鹏: 对,这就是为什么像 v0 或者是 Buildt,还有那个 Replit 他们做的那些原型工具,效果非常好。现在他们的 revenue也非常高,对吧,使用量增加的非常多。因为他们那个面向的用户,就是这些 Vibe Coder,就是说他不再是 engineer。而他们的 design 的 system 也是说,你其实大部分情况下是不应该去关心代码。
GeekPlux: 我觉得从这就看出了,就是每个人对这个 Vibe Coding 的理解不一样。像你比如说,你是站在一个产品经理的角度,但是我自己就是我个人,我自己把那个 Vibe Coding 有点看成是 Pair Coding (结对编程) 的感觉,就是他只是我的一个,跟我一起编程的一个人,一个同事,有点像。然后大家一起去完成一个功能,而不是说我让他去写代码好了,然后你写好给我。这样的感觉,我是要参与其中,因为我可能对他不太信任,或者说他现阶段的模型做的不太好。总之就是他产出的代码,有时候会让我觉得我不得不返工,然后我是没办法完全的信任他做的任何的,尤其是对这个前端比如说 state management 相关的改动,我是完全没办法放心的。
程序员角色的转变
吕鹏: 软件工程是一个非常非常复杂的系统。有一天,你可能可以喊宝玉过来参加这个播客,让他给你讲讲系统工程,他对此非常有见解的。而软件工程是一个非常非常复杂的系统,它并不能够通过 Vibe Coding 就能够完整的覆盖。
GeekPlux: 对,我感觉他就是只完成了其中的一环。对,甚至说你甚至想要完成一个功能的时候,你还得再切分,就是这有点像我得不停的切分一个任务去 break down,break down 到非常非常具体的一个小任务,然后才能很好的用 Vibe Coding,并且我还要在此之上设置好它的 rules,还有一些测试,还有验证。然后整个 loop 最后走起来,你就发现你的工作变成了切分这个 context 跟切分这个任务。我觉得还是其实还是挺累的。
吕鹏: 我觉得你对这个事情是有一个深刻理解的。第一个就是说你刚才提到的,你需要非常刻意的去把一个任务切分成很多很小的任务。这就是现在当下,基于当下的 coding agent 的能力,如何能够尽大可能的利用好 AI。那对我们软件工程师的要求就是,能够把大的任务切分成更小的任务,同时尽可能的保证这些小的任务之间互相是独立的。只有当他们独立之后,你才能够让他们解耦,进行解耦,他们才能够并行的运行。你的工作是进行这个 break down。
以后是不是能够 AI 能够实现同样的工作,就 AI manager 的这个工作对吧,也是有可能的。但现阶段呢,我们觉得这个还是有一定缺失的,所以需要人类工程师在这个参与这个过程当中。
然后回到你刚才说的第二点,这个工作是不是让你感受到兴奋的。这个工作我觉得不是,因为你选择的工作是 software engineering,你没有从第一天开始说我要做一个 product manager,或者说我要做一个 engineering manager。你的很多的工作的热情,其实是来自于在这个编辑器里面写代码。大部分工程师,大部分的 hacker,是我打开我的编辑器,我一边写一边想,然后不断的去验证自己的这个想法。这个过程本身是非常 messy 的,但是在这个过程当中,你不断的得到正反馈,这也是软件开发有意思的过程,或者写代码有意思的原因。而现在我们的工作,你最有意思的部分,就是在编辑器里面写代码,但这个工作是被 coding agent 所取代了。你的工作变成了做这些产品功能的切分,定义好这个 SPEC,然后把它交给 coding agent。这个工作本身可能并不是你想要的。
GeekPlux: 对,最令人激动的,对。
吕鹏: 像 Codex 的官方团队成员,在他们做完 Codex 之后,他们自己说,这可能是我最后一份工作。因为你发现所有的工作都能够并发地交给 Codex 来做,你最后的任务就是 review 代码,你就是提需求,然后 review 代码。这个工作实际上跟我们原来的工作相比,是应该是非常枯燥的。
我不知道你听那个 DHH (David Heinemeier Hansson),他那个最近那几期他说什么,变成作为一个相当于有点像弹吉他。现在我们弹吉他,你不能因为说有专业的乐手,或者说你 AI 能创作出来非常好听的吉他曲,你就不弹了,你弹是因为想愉悦自己。
但是现在的问题在于,就是说大部分的人,他骑马不是为了骑马,他骑马是为了从一个地点到另外一个地点。他确实也不需要学会骑马了,他要做的事情是坐上一辆车,到另外一个地方。也有人依然会骑马,但是是 for entertainment。这是我们将来会变成的状态。但是问题就在于,如果我们把软件工程假象成骑马这一件事情的话,大部分人是不关心骑马这件事情。但世界上会有非常非常多的车。我们是 creator,我们是 horse rider。但这个时候这个社会已经不需要你了。那我们存在的意义是什么呢?那我们成为 the last generation horse rider 的意义是在于哪里呢?
GeekPlux: 对,这个我到现在也没想通。我我能想象我将来的我可能会分成两部分,就是一部分就是为了达到目的地,我不管坐什么交通工具我都可以。然后另一部分嘛,就 for entertainment myself,就是我自己喜欢编程,那我自己做一个自娱自乐的事情。
VS Code 的未来与定位
GeekPlux: 因为你在做 VS Code 嘛,所以我就特别好奇,就是在这个现在这个浪潮里面,你看像各家 editor 现在都在推陈出新,然后每天发布的功能,甚至那个发布会我有时候都觉得有点太过了。VS Code 这方面,我知道最近他的动作可能就是开源了这个 GitHub Copilot in VS Code。除此之外,你觉得你们内部有一些规划,或者说你在做的一些事情,是你觉得能弥补刚才这个缺陷,就是 engineering 这块的缺陷,或者说让我们的工作变得更有趣,或者说能让 VS Code 现在从市占率75.9%变到99%?
吕鹏: 这个4,000万用户里面,绝大部分用户,大概可能3,800万用户,他们是不使用 AI 功能的。
GeekPlux: 这个比例你是怎么判断,是通过那个比如说 Copilot 的下载量比例?
吕鹏: 大概是 Copilot 的付费用户大概是在两三百万。但这个数据是指他们每个月都在使用,跟这些用户是不是他尝试了这个月使用了,他下个月之后就不再使用 AI 功能了,这里面有一些 disconnect。但是你大概可以能感受到这个比例,就是说绝大部分的工程师,他们也不在 Twitter 上,他也不在微博上,他不在小红书,不在任何社交网络上。他在各种各样的 enterprise 里面,他们不使用 AI 的功能。这是一个很重要的工作,能够怎么能够把这些用户帮助他们逐渐使用 AI。
第二部分就是说,对于这两个百万的用户,我就是想用 AI 的功能,我怎么样在这个使用工具的过程中不丧失乐趣。我自己的感受是说,对于 VS Code 而言,开源是第一步,最重要的一步是,VS Code 应该成为一个平台。像你说的,每周都有大新闻,对吧。每周都有出来一个新的编程工具,AI coding agent。那怎么能够保证说,你作为一个用户,你能够在一个编辑器当中,使用到当下最好的编程工具,使用到最好的 coding agent,使用到最好的大语言模型。然后我们要做的工作是首先你有这样一个平台。其次是,我们作为一个平台的话,最重要的我们的优势就在于,就是说我们是 neutral 的。我们其实不太在乎,就是说你使用的是 Kimi,还是 Claude Code。而我们也不应该去跟你竞争,就是不行,你只能够使用这样一个某一个特定的模型或者是某一个特定的 coding agent。
GeekPlux: 我觉得 VS Code 跟 Cursor compete,这是一个已经是一个过时的事情了。我们不应该再考虑 Cursor 和 VS Code 竞争的事情。我觉得真正的威胁其实来自于,你究竟需不需要一个 IDE (Integrated Development Environment: 集成开发环境) 或者 editor。你使用 Codex 的时候,你使用 GitHub Coding Agent 的时候,你是从一个 GitHub Issue 到一个 PR。PR 上面所有的 CI (Continuous Integration: 持续集成) 都过了,你通过这个 PR 然后去 review 这个代码。如果你是一个 Web App,然后你的 Web App 同时能够连上 Vercel 的话,Vercel 每次有一个 PR,它会给你生成一个 Preview link。我一点击,我就看到这个 Preview。这个代码我看起来也没事,Preview 看起来也不错,那我就 merge。而我使用 Claude Code 的时候,大家迅速发现,好像我大部分时间确实不需要编辑器给我提供的这些功能,什么 intelligence,什么 Vim key bindings,对吧,什么 bracket colorization,好像我都不需要任何这些东西了。
但如果下一代模型生成的代码,作为人类而言,实际上是没有办法去判断它是好还是不好的时候,那你为什么还需要去 review 这个代码呢?在这种情况下,我自己是觉得真正的问题在于,你是否还真的需要一个 editor 或者是 IDE。我倾向于觉得你是需要的。我觉得我们作为人类,是需要一个思考的工具,可视的工具,最起码对,是能够思考,能够提供反馈的这样一个工具。这个工具会不会是 VS Code,我希望我能做的工作是让它成为是 VS Code。
从独立开发到 iOS 应用上架
GeekPlux: 你用 Vibe Coding 现在上架了两款 iOS 应用,我特别好奇,就是这个里面 Vibe Coding 占了多大的比重?
吕鹏: 我的应用是三年前写的。三年前 ChatGPT 出来了 GPT 3.5,然后那时候 VS Code 我们已经开始做那个3.5的这个集成。但我们在做集成的过程当中,我们其实遇到一个问题是我们的 context window 还是太小了,最开始只有4K个 TOKEN。而 ChatGPT 本身做了很多的优化,至少在 ChatGPT 这个网站服务上面,你是感受不到这个 context window limit 的。那当时我做 iOS 应用,一个最大的痛点就是,我有个 idea,我能够把它很快地写代码实现了,但是每次到最后一步,我需要准备所有的各种文档,需要一个 privacy link,需要一个 support 网站,然后需要跟这个苹果的审核方去斗智斗勇,需要准备很多的文案的时候,很多时候我最后想,那我就不用发布了。
但是我两个应用都是跟 self-hosting (自托管) 相关的。一个是做一个手机应用能够去管理的 Proxmox VE 的这个虚拟服务器,另外一个是 Uptime Kuma 的一个管理工具。这两个应用本来就是给自己做的,但因为有了 ChatGPT 之后,发布变得简单了,所以我就很快,一两个月我就把这两个应用都发布了。然后之后就开始变成了,就是说我需要修改代码的时候,我要么使用 VS Code,或者有的时候我就在那个通勤过程当中,或者是我出去玩的时候,我就用 ChatGPT,然后最后给我生成这个代码片段。最后这一步确实你想起来其实是很奇怪的,对吧,就是你通过 chat,最后你 copy paste,然后跑到 VS Code 或者是 Xcode 里面。
GeekPlux: 因为我觉得这两个应用,就是做 self-hosting,其实我自己看了两个应用的介绍,我还是就是比较模糊,完全不懂。所以你要不要稍微简单介绍一下?
吕鹏: 我自己有一些服务器,然后我上面需要跑一些虚拟机,对吧。那它有非常多的不同的解决方案,你可以用 VMware,也可以用微软的 Hyper-V。那有一个开源的方式叫 Proxmox VE,就是把你的这个服务器变成一个 supervisor,这时候你可以跑不同的 VM 在上面。这样一个非常非常小众的服务,并没有一个合适的 iOS 应用能够管理它。另外一个 Uptime Kuma 呢,是一个就是用来监控每个网站是否 online 或者是 offline 的一个开源的一个工具。它也是跑在你自己的电脑上,它同时能够监控不同的网站,同时它也没有一个 iOS 应用。那我自己是希望能够在我手机上管理他们。那以前我会觉得我做一个应用可能给自己玩,现在说那为什么不给,如果这个成本足够低的话,那我为什么不把它发布到 App Store 上面,也许别人也会使用的。但事实是发现,真的世界上就有很多跟我一样非常小众,也非常奇怪的人,跑到 App Store 上面去搜索这个应用,然后下载。
GeekPlux: 然后你成本低是得益于 AI 的帮助?
吕鹏: 对,相当于不然我不会做完成这个工作,然后发布到 App Store 上面。而我在 App Store Manager,就是那个管理 App Store 那个服务的应用,我的第一个五星留言非常有意思,他说这个应用是他非常高兴终于有人做了这个应用,他希望自己能够有朋友,这样的话他可以给他们分享这个应用。可见他平时可能真的没有什么朋友,然后他就是自己在玩这些 self-hosting 服务。所以可见他是一个非常非常垂直也小众的领域。如果没有 AI 把写代码和发布应用的成本降低到足够低的一个程度的话,我觉得很多人是不愿意做这个事情的。
从 IC 到 Manager 的转变
GeekPlux: 我记得最早听你的博客在其他台,好像代码时间还是 DHH,你当时可能是一个 IC。现在你变成了 manager,这个是你当时自然而然的一个过程,还是你主动要求或者说深思熟虑之类的?
吕鹏: A combination of both。就是说首先一方面我自己也想要尝试做 engineer manager 的工作,第二是我们组有这样的需求。VS Code 最开始在我加入团队的时候,大概有10个 engineer 在苏黎世,然后我们成立 VS Code 团队,然后我们找了一个新的 manager 在 Redmond,然后这个新的 manager 是 Kai,他原来是做 Eclipse,然后他制作 Eclipse 的时候跟 Eric Gamma 就是同事。我是他招的第一个 engineer。然后逐渐一年一个增加之后,差不多大概两三年前的时候,就变成就是每个 manager 下面大概可能会有十五号人。
有点多,对吧。但已经到了一个 breaking point,就是说实际上有一些 IC 获得的 mentoring 其实是比较少的。然后我们组一直以来都是 engineering driven,就是说所有的工作都是自己做,你的 PM (Product Manager: 产品经理) work, 你的 UX (User Experience: 用户体验) work, testing, documentation 都是每一个 IC 自己做。这就意味着你的 manager 是你的 tech lead,是也是你的 product manager。他做所有的各方面的把关。当团队足够大了之后,发现有一些 IC 是实际上是很少获得来自于 manager 的这个帮助的时候,其实这时候你就意识到可能是需要做一点改变了。
而当时我已经开始在 VS Code 做 Jupyter Notebook 的支持,最多的时候这个 v-team 大概有6-7个人都在做 notebook 相关的工作。然后当你的 manager 没有办法给每个人时间的时候,你就需要 step in 去做一些给他们跟其他 IC 做一些 planning 的工作。然后很顺理成章的开始跟他们有 weekly 的 one-on-one。能到最后从 IC 到 manager 的这个转变,实际上对于他们而言是没有任何的变化。
GeekPlux: 那你的 work life balance 怎么样,就是变成从 IC 到 manager 之后有变化吗?
吕鹏: 就从 IC 到 manager 实际上是没有太大的变化。就是到 manager 确实是工作量是变大的,但是呢现在呢,我应该可以说是现在是没有了 work life balance。
GeekPlux: 对,这个就是我刚才特别想问的。就比如说你做 IC 的话,你今天收到一些 issue,然后你完成了,然后出示了 PR,然后等 review,然后之后再 deploy 就完了。但是做 manager,我自己觉得个人觉得做 manager 最重要的一点是 be available。这个 be available 就是一个很大的负担,其实你要不停地回消息,别人要在能找到你的时候找到你。
吕鹏: 对,而且像我们组可能比较独特的难度在于,就是说我们组有同事在苏黎世,有时候是在澳大利亚,有时候你会不同的 time zone 就比较难。你有时候会有非常早的会,比如说在我有时候会有7点钟的会,但有时候会有晚上10点11点的会,对吧,都都可能发生。第二个就是说,像你说的你永远需要 available。但我对我觉得自己而言,其实最消耗精力实际上是整个 AI 现在这个 industry 的变化。就是你最开始提到的,你每天都有大新闻。Sotela 就是微软的 CEO,有一条消息发到了你或者你老板那里,他问你,哎,这个东西能不能给我来解释一下到底是怎么回事。然后这个事情它从发生的频率,从可能一年发生一次,变成了每个月都会发生一次,那他是非常 exhausting。
结尾与推荐
GeekPlux: 那你有什么推荐的书、技术文档,或者说我们该学什么?
吕鹏: 推荐两个没什么用的吧。一个是 DHH (David Heinemeier Hansson) 他们出了第二季,这是一个非常好的技术播客。第二个是 DHH 和最近和 Lex Fridman 的一个采访,大概是6个小时。没错,大概是聊 DHH 作为一个 Ruby on Rails 的开发者,他是怎么去理解软件开发,怎么去理解 AI。我非常推荐这个6小时的视频,你会有收获。如果大家发现那个他讲的东西跟我讲的东西有雷同的话,那肯定是我拾人牙慧。另外就是 DHH 做了两个最新的 Linux 的发行版,一个是基于 Ubuntu 的,一个是基于 Arch 的,我觉得也非常好玩。可能跟工作没什么关系,但是我觉得是比较有意思的项目。
GeekPlux: 那如果听众们想联系到你,应该怎么联系呢?
吕鹏: 我主要还是就在 GitHub 上面和在 Twitter 或者是 X 上面。ID 放在那个 show notes 里吧,ID 太长了。微博上也可以找到我,但我很久没有在微博发东西了。
GeekPlux: 对,想起你的那个比较古早的网名,“说声鸟哥很严肃”。
吕鹏: 对,正确断句,“说声鸟哥很严肃”。
GeekPlux: OK,非常开心能请到鸟哥,或者说吕鹏今天来我们的节目。然后我们聊得非常深入,我感觉整个过程我甚至忘记了时间。非常开心。OK,也欢迎你将来再有机会再来我们这里做客,如果你想有表达欲的话。
吕鹏: 好,谢谢大家,再见。
GeekPlux: 拜拜。以上就是本期节目的全部内容,欢迎给我们点赞转发和评论。想订阅我们的节目,请在小宇宙、苹果播客、bilibili 和 YouTube 搜索“代码之外”。也欢迎您在爱发电或上述任意平台给我们打赏。想提供任何素材或话题,欢迎通过 show notes 中的听众来信链接给我们提问。我们下期节目不见不散。