Latent Space: The AI Engineer Podcast - 异步代理时代——Cognition的颜 Walden 与 OpenInspect 的 Cole Murray 封面

异步代理时代——Cognition的颜 Walden 与 OpenInspect 的 Cole Murray

The Age of Async Agents — Cognition's Walden Yan & OpenInspect's Cole Murray

本集简介

新的AIEWF网站已上线!征稿截止仅剩两天,本周末我们将举办首次新工程师入门活动,请尽快购票,票务将很快售罄。完成AI工程调查,即可获得超过2000美元的积分和免费的AIE WF门票! 代理行业的一个核心矛盾在于:尽管像Sierra、Decagon、Notion和Cursor这样的大型十亿美元级代理实验室正在迅速崛起,但与此同时,构建自己的代理从未如此简单——大量代理框架如LangGraph、Pydantic和Flue,以及来自Anthropic、Gemini和Amazon的托管代理层出不穷。从Shopify到Stripe,从Paradigm到Razorpay,再到Cognition的合作伙伴Ramp,许多公司都已自行开发了编码代理,甚至Ramp也与Modal合作构建了自己的代理。 你或许以为Cognition会感到些许威胁,但他们并没有——即便在如此激烈的竞争下,他们刚刚宣布的10亿美元D轮融资仍远超预期: Cognition的联合创始人兼首席产品官Walden Yan(“上下文工程”一词的提出者)邀请OpenInspect的Cole Murray,深入探讨“Devin为何藏于细节之中”。 完整对话今日已在播客上线: 回望过去,异步代理是2024年最具AGI倾向的押注——当时模型还不够强大,无法实现“vibecode”,人们也尚未充分信任AI,没人(包括早期的Cognition)清楚其应有的形态。 如今,答案已显而易见: * 第一波AI编码工具让开发者更快,但仍高度依赖人工干预。Copilot和Cursor的标签自动补全就是典型例子。然而,工作流仍围绕并受限于开发者本地环境:开发者在IDE中,盯着模型,逐次接受或拒绝更改,手动推送代码。 * 第二波是本地代理:Claude Code、Windsurf、Cursor的代理面板:从单个终端,逐渐扩展为多个并发运行的终端。 * 当前的异步代理时代,指向一个更注重代理编排、推动端到端开发的未来。 据前嘉宾Steve Yegge所述,代理采用可分为八个更精细的层级,但我们将其简化为三个阶段。 正如Cursor的Michael Truell在《AI软件开发的第三时代》中所说: Cursor已不再主要关乎编写代码,而是帮助开发者构建创建软件的“工厂”。这个工厂由一系列代理组成,开发者将其视为团队成员:提供初始方向,赋予其独立工作的工具,并审查其成果。 代理不应仅局限于开发者的流程之中,而应被设置为在后台运行——你可以赋予它一个任务、一个仓库、一台机器、一个shell、一个浏览器、测试用例、内存和审查循环,让它在别处完成工作。 不到一年,态度已从回避多代理系统,转变为积极采纳切实可行的方案: 从提出“上下文工程”,到构建支撑Devin在Cognition仓库中PR增长7倍、提交占比从16%跃升至80%的基础设施,Walden Yan亲历了后台代理的转型。在本期节目中,Cognition联合创始人兼CPO Walden Yan将与OpenInspect创始人Cole Murray一同,深入剖析:为何人人都在打造自己的Devin?2025年12月的模型拐点带来了哪些变化?为何“规范到PR”正成为真实生产流程? 我们将深入探讨后台代理的架构:内置式 vs 外置式,为何Devin将“大脑”与机器分离,为何仓库设置仍是最大难题之一,为何Docker并不总是足够,以及全虚拟机、快照、作用域密钥、GitHub机器人、Slack集成和基于视频的测试如何协同工作。Walden和Cole还将探讨内存、MCP的局限性、多代理编排、AI代码审查、SRE自动分类、产品经理从Slack提交代码、Windsurf 2.0、混合前沿/子前沿系统,以及失控的“vibecoding”真正失败模式:你的代码库退化为最差工程师的水平。 随着代理吞噬软件,而软件吞噬世界……你可以推断出下一步是什么: 我们讨论: * 为何工程界正觉醒于后台代理与云代理 * 2025年12月的模型拐点如何使“规范到PR”工作流成为现实 * Devin的PR合并量增长7倍,提交占比从16%跃升至80% * 为何Cole构建了OpenInspect作为开源后台代理系统 * 每席位20美元的代理产品经济模型,为何变现如此困难 * Cognition真正销售的不只是Devin:基础设施、入职流程、集成与采用 * 内置式 vs 外置式架构,为何架构至关重要 * 为何Devin将“大脑”与机器分离以保障安全与权限 * 仓库设置、作用域密钥、Docker Compose与代理就绪的开发环境 * 为何当代理需要运行真实应用并测试时,全虚拟机至关重要 * Android、macOS、Windows、嵌套虚拟化与机器专属代理任务 * 为何测试远比“计算机使用”更困难 * 截图、视频验证与“我知道它有效”的合并时刻 * GitHub UX、Devin审查、AI评审员与代理对PR评论的响应 * 为何仅靠MCP不足以实现一流的Slack与企业集成 * 内存、知识、技能、Claude.md,为何检索仍未解决 * Devin自动生成的记忆与记忆修剪的挑战 * 永久在线的代理作为问题、工单与产品领域的永久产品经理 * 子代理、元Devin管理,以及多代理系统真正带来的价值 * 为何纯自动合并的“vibecoding”在约两周后就会崩溃 * AI代码异味、lint规则、奖励作弊与针对代理生成代码的Semgrep * GitAI、内联上下文与保留代码变更背后的“为什么” * 本地测试、模拟服务器、旧代码库与企业代理准备 * Windsurf 2.0与本地前台代理和云端后台代理的交接 * SRE自动分类、支持流程与代理作为第一响应者 * 产品经理、市场人员与非工程师从Slack创建PR * AI代理……

双语字幕

仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。

Speaker 0

好的。

Alright.

Speaker 0

我们现在在演播室,邀请到了Cognition的联合创始人兼首席产品官严沃尔登。

We're in the studio with Walden Yan, co founder of Cognition, CPO.

Speaker 0

是的。

Yeah.

Speaker 0

这头衔挺酷的。

Which is cool title.

Speaker 0

没错。

Yes.

Speaker 0

还有‘上下文工程创始人’这个称号?

And one Coiner of Context Engineering?

Speaker 1

对。

Yes.

Speaker 1

虽然之前已经有很多人用各种说法了,但我发现,无论是公司内部还是外部,大家都很认可从‘前端工程’或‘模型封装’升级到更用心地构建智能体这种新提法。

Although I think there are many people who use the terms of various ways beforehand, but I did find that people, both internally and externally, enjoyed the upgrade from front engineering or model wrapping into maybe a more thoughtful way to build agents.

Speaker 0

是的

Yeah.

Speaker 0

还没看过这篇的,我屏幕上正显示着《别搞多智能体》这篇文章,建议大家读一读,后面我们可能会提到。

For those who haven't caught up on that, I have on screen the Don't Build Multi Agents post, which you should read on and we might refer to.

Speaker 0

还有创建了OpenInspect的科尔·默里。

And Cole Murray, who created OpenInspect.

Speaker 0

很高兴能来参加。

Great to be here.

Speaker 0

好的。

Okay.

Speaker 0

那我们来聊聊这个话题。

So let's talk about it.

Speaker 0

现在人人都在开发自己的DevIn。

Everyone is building their own devins.

Speaker 2

这到底是怎么回事?

What's going on?

Speaker 2

是的。

Yeah.

Speaker 2

我觉得工程界正在逐渐意识到后台代理、云端代理这类概念,不管你怎么叫它。

So I think the engineering world is kind of waking up to this idea of background agents, cloud agents, whatever you'd like to call it.

Speaker 2

我觉得2025年12月左右出现了一个转折点,那时候模型比如Opus 4.5和GPT 5.2的能力达到了一个新水平,我们不再需要事无巨细地引导模型,而是能基本让它自主运行了。

And I think we saw a shift around the December timeframe of 2025, where the models, Opus 4.5 and GPT 5.2, they reached a capability where we moved away from kind of handholding the model and being able to actually more or less autonomously drive the model.

Speaker 2

我的意思是,只要需求写得足够清楚,我们几乎能直接从需求一步到位生成一个完整的拉取请求,中间几乎没有阻碍。

And what I mean by that is that we could pretty much go from a specification to a completed pull request, assuming the spec was good enough with very little friction.

Speaker 2

光是这一种模式,就彻底改变了我们和代理交互的方式,也让后台代理变得真正实用起来。

And that paradigm alone, I think, changed a lot of how we interact with agents and kind of opened this world where background agents became more practical.

Speaker 0

我觉得对Call来说,大家在12月都经历了这个变化,但我觉得这其实是一个持续上升的过程。

I think for for Call, everyone experienced this in December, but I feel like there was just this increasing ramp.

Speaker 0

对吧?

Right?

Speaker 0

比如有个关键节点,我记得是Sonnet 37,你们那一晚就把Devin重写了一遍。

Like, there was this the moment, which was I think Sonnet three seven, where, like, you guys rewrote Devin in one night

Speaker 1

对。

or Yes.

Speaker 0

是的。

Yeah.

Speaker 0

对。

Yeah.

Speaker 0

那你描述一下2025年吧,或者从你那边看,感觉是怎样的?

So describe 2025 or, you know, how how it felt from your side.

Speaker 1

回头想想,我们一直觉得是在逐步提升,但就在最近三四个月,这种提升速度反而更快了。

In retrospect, you know, we always thought it was ramping up, but then even now, over the last three, four months from today, we've this has been ramping up even faster.

Speaker 1

说起来挺讽刺的,我们还在讨论Sonnet 3.7有多大的突破,其实很多工作只是把Devin里那些因为智能提升而多余的部分删掉了。

So it's it's almost funny to be talking about how, like, big of a leap Sonnet 3.7 was and we honestly, a lot of it was stripping out parts of Devin that were no longer needed with that jump in intelligence.

Speaker 1

但我也觉得,最近这些突破,尤其是像Opus和后期的GPT模型,已经达到了足够自主的水平,以至于人们反而在担心:真的能完全放手不管吗?

But I also just think that a lot of the recent leaps, especially, you you look at models like Opus and late stage GPT models, they are reaching levels of autonomy where people are actually fighting that they actually can't just be hands off.

Speaker 1

以前还在争论的人,比如:‘我真得要一直盯着模型在IDE里干活吗?’

And people who were once debating, Oh, you know, do I need to be in the weeds with my model, in the IDE?

Speaker 1

我能不能直接把它全部迁到云上?

Can I just completely move it off into the cloud?

Speaker 1

这是个更严肃的话题,我们在所有的增长图表里都看到了这一点。

That's more serious conversation and we've seen that in all of our growth charts.

Speaker 1

内部有个挺有意思的数据图,显示自从那次之后,我们合并的PR数量增长了七倍。

Internally, there's this funny graph where our usage has of PRs or our merged PRs has grown seven x since Yes.

Speaker 0

我忘了具体是啥了,好像是Dev发过推文提到过。

I forgot what it I think Dev maybe tweeted that.

Speaker 0

是的。

Yeah.

Speaker 0

对。

Yes.

Speaker 1

大概是在过去两三个月左右,增长了七倍左右。

It grew like seven x over like the last, I think it was like two months, three months, something like that.

Speaker 1

再看我们工程团队的人数增长,也涨了差不多百分之十。

And then you see our engineering headcount growth, it's, like, gone up by, like, 10% or something.

Speaker 0

我们当初都不敢发布这个功能。

Like, we were we were afraid to release this.

Speaker 0

德文在所有德文仓库的提交占比,一月份是16%,现在三月份已经涨到80%了。

So this is Devin commit percentages on all Devin repos was 16% in January and now 80% in March.

Speaker 2

是的。

Yeah.

Speaker 2

它

It's

Speaker 1

现在确实是个巨大的转变。

like a it's a big shift right now.

Speaker 1

所以很多人现在都在考虑买德文,也可能想自己动手做一个,我做德文的时候特别开心,能理解为什么别人也想打造自己的云代理。

And so it makes sense that a lot of people are now thinking about, you know, buying Devin but also maybe like you're trying to build their own and there's lots of I have a lot of fun building Devin so I can see why other people would want to build their own Cloud Agents as well.

Speaker 1

对。

Yeah.

Speaker 1

我很想知道,当初是什么让你决定尝试开发OpenInspect的?

And I believe it's good to hear like what what initially inspired you to try to build OpenInspect?

Speaker 2

对。

Yeah.

Speaker 2

OpenInspect 的诞生,主要是因为我的一些客户在观察他们如何使用 Claude Web 和当时 OpenAI 的 Codex 这类工具时,发现其中存在一些使用上的摩擦。

OpenInspect came about through primarily my clients observing how they were using tools like Claude Web, OpenAI's Codex at the time, and seeing some of the friction that they were having with it.

Speaker 2

他们主要通过 Slack 来使用 Claude Web。

Primarily, the Claude Web was being used through Slack.

Speaker 2

他们遇到的一个大问题是,启动的会话是跟通过 Slack 发起调用的人绑定的。

And a big issue they ran into was that the sessions that were launched were specific to whoever called it via Slack.

Speaker 2

所以,如果是一个产品经理发起的会话,然后他们去进行上下文工程处理,工程师是看不到这个会话的。

And so if a PM was the one who invoked the session, and they would then go to pass context engineering, engineering can't see the session.

Speaker 2

这本身就成了一个很大的障碍,因为产品经理会说:嘿,工程师,你能插进来看看吗?

And that in itself was kind of a deal breaker because the PMs, hey, engineering, can you jump in?

Speaker 2

但除非他们把内容复制粘贴出来,或者只看那一条返回的回复,否则工程师根本没法介入。

But there's nothing to jump in on unless they're copy pasting out or, you know, the single response that came back.

Speaker 2

所以,在观察到这些问题的过程中,我已经在内部搭建了一套类似的架构,主要是为了做实验,测试各种想法。当时本地部署向云端迁移的趋势已经逐渐显现,加上 Ramp 发布了他们的博客文章,我这边其实已经准备好了大部分组件。

And so kind of seeing some of these problems, I had built a similar kind of architecture internally, just to experiment with, kind of test out different ideas as this trend of moving off of local host was starting to kind of become and as Ramp released their blog post, I had a lot of the pieces for this already in place.

Speaker 2

我就想看看,光靠那篇博客文章,Claude 能做到什么地步,挺有意思的。

And just thought it would be kind of funny to see what Claude could do just purely from the blog post.

Speaker 2

在我个人的推特账号上,其实有一串推文,记录了我当时边看边发的实时感受。

And on my ex account, there's actually kind of a a thread of where I live tweeted, like, going through this

Speaker 0

哇,真的吗。

Oh, wow.

Speaker 2

我在对比 GPT 和 Claude,看它们俩是怎么处理这篇博客的。

Comparing GPT and Claude as of them are going through it.

Speaker 0

是说在官方发布之后吗?

Like, on the announcement thing or something else?

Speaker 2

就是刚发布完不久。

Right after it got released.

Speaker 0

明白了。

Okay.

Speaker 2

这个可以放到节目笔记里。

We can put it in the show notes.

Speaker 2

好的。

Okay.

Speaker 0

明白了。

Got

Speaker 2

懂了。

it.

Speaker 2

对。

Yeah.

Speaker 2

幸好我之前就大概知道怎么验证系统。

It was helpful that I had already kind of knew how to verify the system.

Speaker 2

我知道自己该找什么。

I knew what I was looking for.

Speaker 2

我觉得RAMP在展示如何构建一个系统的技术细节方面做得非常好。

I think RAMP did a great job of really illustrating the technical aspects of how to build something.

Speaker 2

它远不止是简单地说‘我们建了个很棒的系统’。

It was much more than just kind of like, hey, we built a great system.

Speaker 2

而且我来告诉你该怎么自己搭建一个这样的系统。

It was and here's how you can build it too.

Speaker 2

所以我对这些痛点特别有共鸣,因为我自己也早就遇到了这些问题。

And so I resonated a lot with that, just with the problems that I was already seeing.

Speaker 2

我环顾了一下开源社区,发现还真没有什么东西能符合这种系统的需求。

And I thought that looking around, I didn't really see anything in the open source community that kind of met this type of system.

Speaker 2

确实有不少工具能在本地运行,比如 Superset、Conductor 之类的,但没有一个是真正部署在云端的。

I think there's a lot that run-in localhost, like Superset, Conductor, and many others, but nothing that was actually running in the cloud.

Speaker 2

于是我动手做了出来,觉得干脆开源吧,让大家都能拿这个当基础,自由组合扩展。

And so I built it and I thought it was interesting to just open source it and allow anyone to then have a foundation that they can mix and match on top of.

Speaker 0

Devin 刚发布后不久,就出现了 OpenDevin,对吧。

So literally after Devin was launched was there was OpenDebin Yeah.

Speaker 0

后来它改名叫 All Hands 了。

Which became all hands.

Speaker 0

我不知道你有没有试过那个,或者

I don't know if you tried that or

Speaker 1

对。

Yeah.

Speaker 0

其实我本来想说,

Well, I was gonna say one of

Speaker 1

OpenInspect 让我挺感兴趣的一点是,你们没想着把它做成那种能赚钱的东西。

the things that interested me a lot with OpenInspect was like, you didn't try to go make it then something you you monetize.

Speaker 1

我觉得很多开源项目都是这样,我的意思是,他们总想着去融资。

There are a lot of I think these open source projects would then go I mean, they try to like raise vSphere.

Speaker 0

所以我才去了 OpenDevin。

That's why I went to OpenDebin.

Speaker 0

对。

Yeah.

Speaker 1

对。

Yeah.

Speaker 1

那你当时是怎么考虑的呢?

And how did you think about that?

Speaker 1

我觉得这一点特别有意思。

I thought that was very interesting.

Speaker 2

我观察过很多客户的情况,觉得后台代理系统将来会成为他们公司至关重要的基础设施。

I thought and kind of just what I had seen across my clients was that having a background agent system is going to become a critical infrastructure within their company.

Speaker 2

所以,我决定把它开源,这样他们就可以自行复制并根据需要做任何定制。

And so because of that, I think that I wanted to open source it so that they could fork it and put in whatever customization they wanted.

Speaker 2

关于这个问题,我经常被人问到:你们打算融资吗?

To that question that I get asked all like, oh, are you going to raise?

Speaker 2

你们打算把它做成一项服务吗?

Are you going to turn this into a service?

Speaker 1

我猜你肯定收到过不少报价。

I'm sure you've gotten offers.

Speaker 2

但主要是,我不想这么做,有几个原因。

But primarily, I don't want to do that for a few reasons.

Speaker 2

第一,我不想为了每用户二十美元去跟人打价格战。

One, I think that I don't want to compete for like $20 a seat.

Speaker 2

我觉得这真是个特别难做的生意。

I think that that is just a really difficult business.

Speaker 2

我觉得核心部分其实很容易被复制。

I think it's very easy to copy the main pieces of it.

Speaker 2

再说,我其实没花多少时间就把它做出来了。

I mean, again, like I built this fairly quickly.

Speaker 2

因为你没有掌控整个技术栈,所以很难赚钱。

And I think because you are not owning, I guess, the entire stack, it's hard to monetize.

Speaker 2

在沙箱层,像Daytona、E2B这些公司已经在赚钱了。

You have money being made at the sandbox layer with Daytona, E2B, many other players.

Speaker 2

在模型层,也有人在赚钱。

You have money being made at the model layer.

Speaker 2

而你卡在中间一个挺尴尬的位置——你到底卖的是什么?

And you kind of sit in this weird in between gray area where what are you actually selling?

Speaker 2

你卖的,大概是基础设施吧。

You're selling, I guess, the infrastructure.

Speaker 2

你们卖的是集成服务,对吧?

You're selling the integrations, maybe?

Speaker 0

咱们问问那位先生,你们到底卖的是什么?

Let's ask the guy, what are you Well,

Speaker 1

是的,这个领域有好几个层次。

yeah, there's multiple layers to this practice.

Speaker 1

说起来挺有意思,你提到基础设施,我们刚开始做Devin的时候,也得自己去搭建基础设施,因为当时你得

And actually, it's funny you mentioned the infrastructure because when we got started building Devin as well, we had to go figure out how to make the infrastructure as well because You had

Speaker 0

在别人还没开始的时候,你就得提前两年把这套东西做出来,对吧?

to build this two years before everyone else, you know?

Speaker 1

对。

Yeah.

Speaker 1

没错。

Yeah.

Speaker 1

正是如此。

Exactly.

Speaker 1

我同意。

I agree.

Speaker 1

还包括像 Modal Insight 这样的部分。

And Including, like, the Modal Insight.

Speaker 1

刚开始的时候,根本谈不上精致。

It was not very polished at the start.

Speaker 1

我们刚起步时直接用云服务商的原始虚拟机,比如 EC2,启动速度慢得离谱。

Like, when we just built it off of raw VMs from cloud providers like EC2, the boot up time was so slow, I think.

Speaker 1

尤其是关机、保存、再重新启动——等 Devin 下次唤醒时,系统得冷启动整整十分钟,就因为这些系统本来就不适应这种频繁开关的操作。

And especially the then, like, turning off the machines, saving them, and then be able to bring them back up again when you want Devin to wake up again later, it would just be out cold for ten minutes because that's just how long these systems took.

Speaker 1

它们压根不是为这种反复启停设计的。

They were not built for this repeated down and up usage.

Speaker 1

所以我们不得不自己从头搞定这一切。

And so, we actually had to go do all of that.

Speaker 1

现在我们向客户推销 Devin 时,其中一个卖点就是:你完全不用操心计算资源这块的事。

And as a result now, one thing we offer when we go and sell Devin to people is you don't have to worry about all the compute side of things.

Speaker 1

我们会让它顺利运行。

We'll make it work.

Speaker 1

如果你愿意,我们也能在你的云环境里让它跑起来。

We'll make it work in your cloud if you wanted to.

Speaker 1

除了产品本身,关于智能代理和调优的部分,我后面再详细说。

Aside from the product and I want to go into the agents and tuning of the intelligence part later.

Speaker 1

但我们在Cognition做的另一件重要事,就是确保你的公司真正学会、使用并采纳这些编程代理。尤其是全球最大的那些企业,你会发现很多人其实都想用AI来处理日常的工作任务。

But I think a big part of what we do at Cognition as well is to just make sure that your company learns and uses and adopts these coding agents because I think for especially the largest enterprises in the world, you find that there is a lot of people who want to move over to using AI for their day

Speaker 0

日常

to day

Speaker 1

工作负载。

workloads.

Speaker 1

但因为项目规划的方式,加上不是每个人都懂怎么用AI,所以有一支工程师团队能亲自上门帮你接入、搭建所需的集成和自动化流程,真正发挥AI的潜力,这非常关键。

But because of the way projects are planned, because not everyone is literate in using AI in these ways, having a team of engineers who can actually go in and onboard you, set up all the integrations you need, the automations you need to really get to that level of, you know, leverage with AI is super helpful.

Speaker 1

因此,我们也会以思想伙伴的身份,陪伴客户一起推进这些工作。

And so, we do that, we show up as thought partners to the customers that we work with as well.

Speaker 1

那我们来

So, let's

Speaker 0

聊聊架构方面的事吧。

talk about architectural stuff.

Speaker 0

我觉得这一直是你们俩经常讨论的话题。

I think that's always that is something that was the topic of conversation between the two of you.

Speaker 0

你们是想从这样的思维模型开始,还是别的方向?

Is this sort of like the mental model that you wanna start with or something else?

Speaker 0

我就把话筒让给你们了。

I you know, I'll just kind of leave the floor open to you guys.

Speaker 2

是的。

Yeah.

Speaker 2

我觉得我们可以从这里开始。

I think maybe we can start here.

Speaker 2

先简单说说,一个后台智能代理系统通常包含哪些部分?

It's just kind of a a general, what are the pieces of a background agent system?

Speaker 2

对。

Yeah.

Speaker 2

然后我们可以再深入聊聊那些细节。

And then maybe we can go into some of the nuances of Yeah.

Speaker 2

一些你可以做的选择。

Decisions that you can make.

Speaker 0

不过我觉得,正如沃尔登提到的,这个代理其实是在那个OpenCode的框里,对吧?

But I guess, like, also, like, what maybe what Walden is saying is is the agent is kind of, like, in this OpenCode box, I guess.

Speaker 0

没错。

Right?

Speaker 0

这是基础设施,而这个代理是其中的一部分。

Like, this is infra, and then there's that that's the agent.

Speaker 0

你们之前讨论过,是把代理放在里面还是放在外部。

And you had this discussion about whether you put the agent in here or in externally.

Speaker 0

你能把这个区别说清楚一点吗?

Can you sort of tease that out?

Speaker 2

是的。

Yeah.

Speaker 2

在后台代理系统中,你需要决定代理程序到底运行在哪里。

In a background agent systems, you have a decision to make of where the agent is actually going to run.

Speaker 2

这通常被称作‘盒内’还是‘盒外’运行。

This is typically described as the harness in the box or out of the box.

Speaker 2

是的。

Yeah.

Speaker 2

把代理放在盒子里运行,会带来一些权衡。

With running the agent in the box, you're making some trade offs by doing that.

Speaker 2

主要的弊端是安全性问题。

The negative trade off you're making is primarily security.

Speaker 2

因为代理在盒子里运行,除非你特别设计,否则所有密钥都得放进这个盒子里。

Because the agent is running in that box, unless you otherwise design it, all of your secrets need to go into that box as well.

Speaker 2

而AI的特性决定了它可能难以预测,稍不注意就可能把密钥泄露出去,或者出现其他意外行为。

And given the nature of AI, it can be unpredictable, and you could very easily end up accidentally x filling your secrets or, you know, other kind of unintended behavior.

Speaker 2

而‘框外’运行的意思是,代理本身并不直接在沙盒里运行,而是让代理的‘大脑’跑在一个独立的工作控制平面上。

Now, the out of the box is the idea that we are going to have the actual agent running not directly in the sandbox, and we'll have quote unquote the brain of the agent running in some type of worker control plane.

Speaker 2

沙盒这时候就相当于代理的‘手’,大脑通过它来调用工具,从而操作这个环境。

That sandbox then is going to serve as the hands where the brain is basically operating and making tool calls into that environment to manipulate it.

Speaker 2

我觉得这两种方案之间另一个权衡点是,框外运行的复杂度要高得多。

I guess other trade off that you're making between the two systems is that, in my opinion, running it out of the box is much more complex.

Speaker 2

因为你得管理状态。

Because you have state that has to be managed.

Speaker 2

而如果在框内运行,代理的所有状态都直接存在沙盒里。

Whereas if you're running it in the box, all of the state of that agent is actually in the box.

Speaker 2

当然,你也可以把状态存到别处,但毕竟都集中在本地,需要操心的事情少很多。

And yes, it's you could persist it elsewhere, but it's all kind of localized and you have less concerns to worry about.

Speaker 1

我觉得你刚才说的这些,正是我们从一开始就设计Devin时,要把‘大脑’和‘机器’分开的原因。

I think a lot of that, what you mentioned, is why we actually, from the start, build Devin to what we called separate the brain from the machine.

Speaker 1

这种架构还能让你复用现有的Dev Box基础设施,就不必专门去打造一个新类型的Dev Box,去装满大脑所需的全部依赖和密钥了。

The other thing that this allows you to do is reuse any existing infrastructure you have for Dev Boxes, And so you don't have to worry as much about making a new type of Dev Box that has all the dependencies the brain needs, as you mentioned, the secrets the brain needs as well.

Speaker 1

我们发现一些客户遇到这种情况:他们用一个 GitHub 应用,希望 Devin——也就是你的代理——能通过这个应用和 GitHub 交互。

Like, one thing that we've seen some customers run into is like, you have a GitHub app and you want Devin, your agent, whatever, be able to interact with GitHub through this application.

Speaker 1

但不同用户有不同的实际权限。

But then you have different users with different actual permissions.

Speaker 1

如果所有人都通过同一个 GitHub 应用访问,而决策系统和机器上的密钥又没有真正隔离,就会出现一个问题:很难做到权限分离。

If they are all interacting through the same GitHub app and there's no actual separation between the system that decides what it does and the actual secrets on the machine, then you kind of run to an issue where, okay, it's hard to do the separation.

Speaker 1

但在实际使用 Devin 时,这要简单得多,因为我们直接规定:机器上放什么,用户和代理就能做什么,权限范围就限定在这些内容里。

But in practice with Devin, it's much easier because we just say whatever you put on the machine, that is like kind of the scope of basically what the user is free to do, what the agent is free to do.

Speaker 1

所以,只在机器上放最小必要权限的密钥就行。

So only put the most scoped secrets on that machine.

Speaker 1

而大脑部分则完全与机器隔离。

And then the brain is fully not accessible from the machine.

Speaker 1

这样一来,即使用户在机器上随意操作,也不用担心会触碰到大脑里最敏感的部分。

So you don't have to worry about messing with any of the most secure parts of the brain if the user is free to do whatever they want with the machine.

Speaker 0

我本来想拿一下 OpenAI 的一张图,不确定这个是属于‘在盒内’还是‘在盒外’的场景。

I was gonna just bring I had this, like, chart from OpenAI where I don't know if this is, like, in the box, out of the box.

Speaker 0

他们确实用这个说法来描述它。

That is something that they do use to describe it.

Speaker 0

最近,Anthropic 推出了他们的智能代理管理方案。

And then also recently, Anthropic did, like, manage agents

Speaker 2

对。

Mhmm.

Speaker 0

这正是他们的主打方向。

Which is this is their thing.

Speaker 0

我不太确定。

I don't know.

Speaker 0

归根结底,都是同一种模式的不同变体。

It's all it's all variations of the same pattern.

Speaker 0

对吧?

Right?

Speaker 1

是的。

Yeah.

Speaker 1

所以这应该是开箱即用的。

So this would be out of the box.

Speaker 1

对。

Yeah.

Speaker 1

也就是说,这

Which, like, is

Speaker 0

对他们来说更合适,因为省事一些?

is preferable for them because it's less work?

Speaker 2

我觉得反而更费事。

I would say it's more work.

Speaker 2

确实更麻烦,但在我看来,这种架构更好。

It's more But it, in my opinion, it is the better architecture of the two.

Speaker 2

明白了。

Okay.

Speaker 2

不过这样做会增加一些复杂性。

It's just you're taking on a bit of complexity by doing that.

Speaker 1

我还没见过其他团队在管理盒子上实际内容方面做得很好的。

One thing I've not seen a lot of other players do well is how do you manage what's actually on the box?

Speaker 1

这背后的原因其实挺复杂的。

And this can be complex for many reasons.

Speaker 1

比如,你有一个大型代码库,频繁变动,依赖关系也在不断更新。

Like, let's say you have a big repository that's changing and updating a lot with changing dependencies.

Speaker 1

你怎么确保代理的运行环境始终保持最新,拥有运行和测试应用所需的所有权限?这就是你希望自治系统完成的代码库配置。

How do you make sure that the working environment of the agent actually stays up to date, has all the credentials it needs to, let's say, run the app and test it, all the things you want your autonomous So, it's repo setup.

Speaker 1

对,就是这样。

Yeah, exactly.

Speaker 1

所以在Cognition内部,我们把这叫作代码库配置。

So, internally at Cognition, we call this repo setup.

Speaker 1

从公司成立第一天起,这一直是个老大难问题:我们该怎么帮人顺利完成这个配置?

The hardest part of it's been a perennial problem since the start of the company of how do we help people get this set up.

Speaker 1

因为并不是每个人都能直接拥有开箱即用的云环境。

Because not everyone just has, you know, working cloud environments, working out of the box.

Speaker 1

你觉得这个问题在其他团队中也很常见吗?

And do you find this to be a common problem with

Speaker 0

在你跟客户打交道的时候?

how you deal with your clients?

Speaker 2

是的。

Yeah.

Speaker 2

这确实是个很普遍的问题。

This is a very common problem.

Speaker 2

在我做咨询的过程中,帮团队解决这个问题占了很大一部分工作。

And through my consulting, this is a lot of what I help teams do.

Speaker 2

很多团队根本就没有像样的开发环境配置,甚至压根没有。

A lot of teams don't really have great developer environment setups, if any.

Speaker 2

很多时候还得去找Bob拿密钥。

A lot of the times it's go talk to Bob and get the secrets.

Speaker 2

但这种做法显然没法让智能代理自己完成这些配置。

And that obviously doesn't work when the agent needs to actually set this up.

Speaker 2

所以很多团队都在用 Docker Compose 或者某种微服务架构。

And so a lot of that most teams are using Docker Compose or some type of microservices.

Speaker 2

所以。

So

Speaker 0

在生产环境里也这么用吗?

For it in prod?

Speaker 2

不是在生产环境。

Not in prod.

Speaker 2

比如 OpenInspect,你主要用它来交互和修改代码。

Like, the OpenInspect, you are using this primarily to interact and make code changes.

Speaker 2

当然还有其他用途,你可以通过命令行、MCP 或其他工具把它接入进来。

There is other use cases, but you can hook whether through CLI, MCP, other tools.

Speaker 2

你可以把这些功能接入生产系统,主要用在 SRE 相关的场景里。

You can then hook that into your production systems primarily for SRE type use cases.

Speaker 2

但你并不是想通过这个系统去测试生产环境里的内部微服务。

But you are not necessarily trying to test your prod internal microservice through the system.

Speaker 1

是的。

Yeah.

Speaker 1

你提到了 Docker Compose。

And you mentioned Docker Compose.

Speaker 1

我觉得我们一些朋友早期走的方向是用 Docker 容器作为模型的抽象层。

I think one direction we saw some of our friends take early on was using Docker containers as a level of abstraction for their models.

Speaker 1

我觉得 Docker 容器其实有不少缺点。

There's lots of reasons, I think, why Docker containers are not great.

Speaker 1

首先,Docker 容器根本算不上真正的安全隔离。

One thing is Docker containers are not really a true security boundary for one.

Speaker 1

再者,如果你在运行真实的应用,这些应用本身往往就已经用 Docker 了。

But the other is like, if you're running real applications, a lot of times those applications use Docker.

Speaker 1

那你就得同时考虑两层 Docker,这听起来真的很奇怪。

And then you have to think about Docker and Docker, which is like really weird.

Speaker 1

所以,我觉得让虚拟机真正跑起来特别难,这背后的原因到底是什么?

And so, I think part of the really hard challenge of getting VMs to work, why did we do that?

Speaker 1

其实是因为我们意识到,要完成这些任务,真正需要的是完整的虚拟机。

Well, it was because we realized that you actually needed full VMs to be able to do these types of things.

Speaker 1

尤其是现在,运行应用、点点点,再给你发屏幕录制视频,这种价值一直在叠加。

And especially nowadays where there's actually value in running the application and clicking around and sending you screen recordings of these things, the value just kind of keeps adding on top of that.

Speaker 1

但我在帮别人搭建系统时,常看到他们纠结一个问题:代理程序该放在机器内部,还是外部?

But is a decision I see people run into when they try to build their own systems is, oh, do we, like, addition to this, do we put the agent in the machine or out of the machine?

Speaker 1

该用 Docker 吗?

Do we use Docker?

Speaker 1

还是用别的方案?

Do we use something else?

Speaker 1

你现在会建议别人怎么选?

What do you recommend people nowadays?

Speaker 2

我觉得 Docker 适合用来跑基础设施,但不一定适合跑代理程序。

I think Docker is a good solution for maybe not running the agent, but running your infrastructure.

Speaker 2

因为这种部署方式,通常跟工程师们平时用的环境是一致的。

Because that is more or less the same setup your engineers are probably already using.

Speaker 2

如果他们不用,那我就不知道他们到底在用什么了。

If they're not, then I don't know what they're using.

Speaker 2

但他们很可能已经在用 Docker Compose 了。

But they're probably already using Docker Compose.

Speaker 0

是的。

Yeah.

Speaker 0

我一直以来都用轻量级的容器来跑 Web 应用。

I I've always had a small candle for web containers.

Speaker 0

我不知道你们之前有没有试过。

I don't know if you guys have tried them before.

Speaker 0

对,用过。

Oh, yeah.

Speaker 0

在我看来,它们就像是精简版的 Docker。

To me, they were like supposed to be like Docker Lite.

Speaker 1

我明白了。

I see.

Speaker 0

没有。

No.

Speaker 0

我还没试过。

I haven't tried it.

Speaker 2

不过,我觉得只要你为开发者打造了一个顺畅的环境,那这套配置对代理来说也自然会很容易搭建。

But, yeah, I think any environment that you've set up that is a good experience for your developer naturally lends itself to being easy to set up for the agent.

Speaker 2

一旦你理清了本地开发环境的流程,基本上也就差不多解决了沙盒环境中代理的配置问题。

And once you figure out kind of that local developer story, you've kind of more or less solved the agent in a sandbox environment setup.

Speaker 2

OpenInspect 也提供了钩子,可以运行一个设置脚本。

OpenInspect does have hooks as well where you can run a setup.

Speaker 2

一个 Shell 脚本,用来预先安装所有依赖。

Sh script that will pre install everything.

Speaker 2

你可以提前对这个构建环境做快照,这样启动时就能瞬间完成。

You can then pre snapshot that build so it starts instantly.

Speaker 2

还有一个额外的钩子,用于在恢复时还原沙盒的状态。

And then there is a second hook to actually then restore the state of the sandbox when it comes back.

Speaker 2

所以你已经可以运行所有这些微服务,在沙盒里获得和在自己电脑上一模一样的体验。

And so you can already have all of those microservices running and basically get the same experience that you would on your machine within the sandbox.

Speaker 1

我们最近一直在思考各种虚拟机服务的选择。

Another thing that we've been thinking a lot about is kind of like different VM service offerings.

Speaker 1

你们有客户需要 macOS 专用的虚拟机,或者 Windows 专用的虚拟机吗?

Have you had customers where they needed like macOS specific VMs or like Windows specific VMs?

Speaker 1

还没有。

Not yet.

Speaker 1

世界上有很多技术只能在特定类型的机器上运行。

There are like many technologies in the world that only work on specific types of machines.

Speaker 1

对吧?

Right?

Speaker 1

如果你在开发 .NET 应用,那就必须在 Windows 上运行。

If you're building a dot net application, it has to run on Windows.

Speaker 1

或者更常见的情况是,你想开发 iOS 或 macOS 应用。

Or like, you know, maybe more commonly if you wanna build iOS or macOS.

Speaker 1

是的

Yeah.

Speaker 0

这个方案支持这样的机器选择吗?

Does make that Commission support?

Speaker 0

像这样的机器配置?

Machine choices like that?

Speaker 1

我们底层架构是支持的,因为做了隔离设计。

The fundamental architecture we do, because we do the separation, it does support.

Speaker 1

但目前这些功能还在开发中。

But the actual work in progress is happening right now on these.

Speaker 1

我们最近新增了一项支持,目前处于测试阶段,就是安卓开发。

Another thing that we've actually recently added support now for, it's in beta, is doing Android development.

Speaker 1

要实现这个,我们得在机器里支持嵌套虚拟化,因为我们的虚拟机本身是基于Firecracker的,而里面还得再跑一个安卓模拟器。

To do that, we needed to support, I think, nested virtualization within our machines because the VM itself is virtualized Firecracker instance and then you have to then run another Android emulator inside.

Speaker 1

而且确实有些性能问题,所以现在还只是测试版。

And, you know, there's like weird performance issues that like, you know, which is why it's like still in beta.

Speaker 1

我们得仔细想想这些问题。

We have to think through these problems.

Speaker 1

但这对想做安卓开发的人来说,打开了很多可能性。

But it unlocks a lot for anyone who wants to do Android development.

Speaker 0

我之前想找一段关于那个测试功能的演示视频。

I was trying to find like a reference video for that testing thing.

Speaker 0

没找到。

I couldn't find it.

Speaker 0

不过我觉得你参与过这个测试功能的开发。

But I I think you worked on the testing capability.

Speaker 0

为什么叫‘测试’呢?为什么不叫‘使用电脑’之类的?

Why call it testing and not like computer use or I don't know.

Speaker 0

那这个功能的整体思路是?

What's what's the general Yeah.

Speaker 0

想法是?

Idea

Speaker 1

什么问题?

of problem?

Speaker 1

我觉得大家一提到 AI 能运行和测试应用,往往过分强调它操控电脑界面的那部分能力。

Think that when people think about the ability of an AI to run your app and test it, I think they actually over index on the computer use part of it.

Speaker 1

因为在我看来,操控电脑界面就是字面意义上的:你想点某个按钮,

Because computer use, in my mind, is the literal, okay, you want you know a button you wanna click.

Speaker 1

它能不能准确发出坐标去点击那个按钮?

Can you emit the right coordinates to go click that button?

Speaker 1

我觉得测试其实是个特别有意思的问题,尤其是针对这些 AI。想象一下,如果你要做任意类型的测试,比如你改动了前端和后端,甚至可能涉及更深层嵌套的服务。

I think testing is actually a really interesting problem solving for these AIs because if you wanted to do arbitrary testing, like imagine you make a change that spans the front end and the back end, maybe even some other, like even more deeply nested service.

Speaker 1

要真正测试这些改动,我们得理清思路:首先怎么运行这些应用,让它们通过正确的代码版本协同工作;然后,怎么触发那个功能,或者让那个效果真正发生?

To actually test that change, we have to reason through how do you first run these applications to all orchestrate with each other over the right version of the code, then, okay, how do I trigger the feature or how do I make the thing actually happen?

Speaker 1

这难度可以变得非常高。

And this can kind of get arbitrarily hard.

Speaker 1

比如,你可能需要管理员权限,或者某个功能必须通过特性开关开启,甚至可能需要你运行两个会话,然后在其中一个里输入非常特定的词,才能触发某种特定行为。

Like, maybe you have to be an admin, maybe a certain thing has to be feature flagged on, maybe you have to like run two sessions and then send us a very specific word into one of them to trigger a specific behavior.

Speaker 1

要搞清楚怎么做这些,需要大量的代码上下文,还有我们专门做好的一系列协调工作。

And figuring out how do you do that requires a lot of code based context, requires a lot of orchestration that we've specifically done.

Speaker 1

有些情况下,我们发现就连最先进的模型也无法独立完成这个端到端的任务。

And in some cases, found that you actually no one frontier model can actually do this full end to end task itself.

Speaker 1

我们遇到过必须把多个前沿模型结合起来,才能共同解决这个问题的情况。

We've seen cases where we actually had to orchestrate different frontier models together to kind of solve this problem together.

Speaker 1

我们在思考测试问题时,大部分时间都花在这上面,而不是计算机操作那部分。

That is where we spend most of our time when we think about this testing problem, not so much the computer use part.

Speaker 1

至于计算机操作,说实话,最近的模型已经进步很多了,确实让这一块的工作轻松了不少。

Computer use, for what it's worth, has gotten a lot better with recent models and it's it's made that part of the job certainly easier.

Speaker 0

是的。

Yeah.

Speaker 0

尤其是他们昨天发布的 4.7 版本,据说在涉及计算机操作的那些任务上,表现好了很多。

Especially with, like, even 4.7 that they released yesterday, apparently, like, way better in terms of the division stuff, which is gonna be encompassing computer use.

Speaker 1

为这些功能建立评估体系也需要花不少时间,而且要确保评估结果准确,也挺有挑战的。

Having evals for all these as well is something that takes a while to build up and having the evals be right is tricky as well.

Speaker 1

你有没有遇到过客户在自己开发智能代理时,不得不搭建评估体系来防止性能倒退?

Do you ever see clients who are building their own agents have to start standing up evals to make sure things don't regress?

Speaker 2

倒不一定用传统意义上的评估,但在测试环节,这方面确实已经全面跟上了。

Not so much evals in the traditional sense, but specific to the testing part, that has just gone in.

Speaker 2

我刚加了截图支持。

I just added support for screenshots.

Speaker 2

理论上,你甚至还能支持视频记录。

And in theory, you can also do video.

Speaker 2

我得再加个插件来实现这个功能。

I need to put in a plug in to do that.

Speaker 2

不过这些功能本来就能原生呈现,而且需求特别强烈,尤其是Cursor推出录制功能之后。

But they do kind of show up natively and it was a very heavily requested feature, especially after cursor's recording came out.

Speaker 2

我觉得Devin的演示让大家都恍然大悟:原来这真是个特别实用的功能。

I think that was very enlightening for everyone of like, oh, this is a very good feature to actually have.

Speaker 2

我觉得有了Devin之后,

I think with Devin,

Speaker 0

你们早就用上这个功能了。

you guys have had this for a while.

Speaker 1

是的。

Yeah.

Speaker 1

六月一号。

June 1.

Speaker 1

是的。

Yeah.

Speaker 0

哦,对啊。

Oh, yeah.

Speaker 0

我明白截图是怎么运作的了。

I see how screenshots work.

Speaker 0

对。

Yep.

Speaker 0

没错。

Yeah.

Speaker 0

我不确定有没有什么特别不明显的点。

I I don't know if there's any anything super not obvious.

Speaker 0

其实一旦你清楚要开发哪个功能,就能直接通过提示来搞定。

It's it's kind of like once you know what prod feature to build, you can just kind of prompt it and know

Speaker 1

对。

what Yeah.

Speaker 1

大多数情况都是这样。

Most

Speaker 2

不过我觉得沃登说得对,计算机使用只是更大范围测试问题的一个子集。

I think to Walden's point though, the computer use is kind of a sub set of the larger testing problem.

Speaker 2

而且这跟你正在处理的代码库密切相关。

And I think that that's very specific to the code base that you're working in.

Speaker 2

这不是那种开箱即用、能直接解决的问题。

It's not something that, know, out of the box that you could just solve it.

Speaker 2

你必须了解具体的代码库,才能知道该怎么测试。

You do need the code base context to actually know how to test it.

Speaker 2

而在后台代理系统的场景中,幸运的是,你确实拥有本地的代码,知道哪些部分发生了变化,可以据此进行检查,并用它来驱动模型。

And I think in the case of a background agent system, you fortunately do have that code based locally that you know what is changing and could then inspect it and use that to drive the model.

Speaker 0

是的。

Yeah.

Speaker 0

对。

Yeah.

Speaker 0

对于还没见过的人,这里展示的是它实际运作的一个例子。

For those who haven't seen it before, this is an example of how it works.

Speaker 0

比如,PR完成后,你点击‘测试通过’,它就会给你返回一个视频。

Like, you after the PR is done, you click testing approved, and then it sends you back a video.

Speaker 0

我特别喜欢的是,虽然标注很小,但它确实清楚地标出了正在测试的内容。

What I really like is that it labels it's very small here, but it actually labels what it's testing.

Speaker 0

然后你还能看到光标和所有操作细节。

And then you actually see the cursor and everything.

Speaker 0

所以我说,这个工程实现真的很厉害,你想展示什么就能展示什么,这简直就是那种让人感受到AGI存在的时刻,对吧?

So I don't know, yeah, the engineering in this, they just whatever you wanna show, because this is like, you know, this is one of those like, oh, feel the AGI moments, right?

Speaker 0

因为一看这个,我其实根本不需要看代码,真希望能在 Slack 里直接合并,不用跑 GitHub。

Because once I look at this, I actually don't need I wish I can just merge inside of Slack instead of going to GitHub because I don't need to see the code.

Speaker 1

我知道这管用。

Know it works.

Speaker 1

也许可以加个新功能。

Maybe a new feature.

Speaker 0

对。

Yeah.

Speaker 1

我后来加上底部的标注后,发现这差别真的很大。

Annotations at the bottom was also a big difference for me when I added those.

Speaker 0

对。

Yeah.

Speaker 0

我都不知道我在看啥。

It's just like, what am I looking at?

Speaker 0

你到底想表达什么

What are you trying

展开剩余字幕(还有 480 条)
Speaker 1

没错。

to Yeah.

Speaker 1

正是如此。

Exactly.

Speaker 1

有很多看似微小的细节,其实对最终的合并效率影响很大。

There's a surprising long tail of small details that ends up making a big difference for this kind of end metric of like how fast do you actually merge the code in.

Speaker 1

我们早期花了很多时间打磨的一个体验,就是这些工具在 GitHub 上该是什么样的使用感受。

One experience that we spent a lot of time tuning early on was what is the right experience on GitHub for these tools?

Speaker 2

当然。

Sure.

Speaker 1

我觉得现在大多数工具,当你开发智能代理时,通常只会想到:它能帮你创建拉取请求。

Because I think most tools out there, when you build the agent, you'll think about, oh, like it will create the PR for you.

Speaker 1

我们更进一步,直接想:如果我们能让用户直接在 GitHub 上和 Devin 互动,会怎么样?

Try to take that a step further and say, oh, like, what if we actually made sure you could interact Devin with Devin directly on GitHub?

Speaker 1

所以我们确保了你可以在 GitHub 上留言,Devin 能收到并回应这些评论。

And so we made sure that you can comment on GitHub and Devin would actually receive those comments and address them back.

Speaker 1

但这里其实需要做不少调整,比如我们最近上线了 Devin Review 功能。

But there's actually quite a bit of tuning you have to do here because you can imagine that actually, like, we recently have Devin Review, for example.

Speaker 1

Devin Review 会在自己的 PR 下面留言,然后 Devin 又得去处理这些留言。

Devin Review will post comments on his own PR and then Devin has to then go

Speaker 0

它自己回复自己的评论,这简直是个循环。

He answers his own comments, which is really loopy.

Speaker 0

我喜欢它在这里直接更新,提醒我有人评论了。

So, like, yeah, I like that it just updates here that it's that I have commented.

Speaker 0

但通常我就是说一句:嘿,合并前解决下冲突。

But usually it's just me saying like, hey, merge fix any merge conflicts.

Speaker 1

对。

Yeah.

Speaker 1

当 Devin 修复自己留下的评论时,你可能会担心陷入无限循环,但我们花了很多精力避免这种情况——不仅确保评论有足够价值,还让代理能分辨哪些评论值得立刻修改,哪些得先想想:等等,你可能搞错了。

So when Devin fixes its own comments, you might be scared that it'll look maybe I'll infinite loop, but we've put a lot of work into making sure it doesn't, both by making sure that the comments are high signal, but also that the agent is thoughtful about what comments that immediately goes and tries to fix and what comments is like, Wait a second, I think you're wrong.

Speaker 1

其实我最喜欢的就是 Devin 告诉我我错了的时候。

Actually, that's one of my favorite moments is when Devin tells me that I'm wrong

Speaker 0

当我

when I

Speaker 1

试图做点不一样的事情时。

try to get to do something different.

Speaker 1

是的。

Yeah.

Speaker 1

但调整这种行为,确实会大大影响你的使用体验。

But tuning that behavior, like, actually makes a big difference in terms of how you just will get up experiences.

Speaker 2

对。

Yeah.

Speaker 2

没错。

Yeah.

Speaker 2

我觉得还有一点值得提,那就是把AI评审员整合进系统,是这套后台机制的关键部分。

I think to touch on that as well, I think having the AI reviewer integrated into the system is a critical part of this background system.

Speaker 2

OpenInspect 就做到了这一点。

OpenInspect does have that.

Speaker 2

它内置了一个 GitHub 代码审查工具,你可以自定义提示语。

It has a GitHub code reviewer that you can control the prompt.

Speaker 2

它也能生成评论。

It does do comments as well.

Speaker 2

不过目前还不会自动执行。

It doesn't do them automatically yet.

Speaker 2

功能是有的,只是还没完全上线。

The capability is there, but it's not fully

Speaker 0

所以大家都会主动要求使用吗?

So guys ask for it?

Speaker 2

当然会。

Oh, you do.

Speaker 2

是的。

Yeah.

Speaker 2

你可以在 GitHub 上标记一下,然后你给那个机器人起的名字,它就会自动跟进。

You can tag it on GitHub and then whatever you named your GitHub bot, it will then follow-up on it.

Speaker 2

如果你有合并冲突,或者你让它处理的其他问题,它就会自动解决。

It will then if you have merge conflicts or whatever you have asked it to resolve, it will then resolve it.

Speaker 2

但它现在还不能全自动完成。

But it doesn't do it automatically yet.

Speaker 1

我很好奇,当你们帮客户部署OpenInspect时,他们最常提出哪些额外需求?

Well, I'm curious, what is the most common thing that people end up requesting that they still need on top of OpenInspect when you help them go implement it?

Speaker 2

我觉得很多问题其实出在如何把它融入公司体系里。

I think a lot of it comes down to actually integrating it into the company.

Speaker 2

搭建后台代理系统是一回事,但如果它没法真正接入你们的整体系统,用处就有限。

It's one thing to kind of have the background agent system set up, but if it isn't actually integrated into your larger ecosystem, it isn't that useful.

Speaker 2

当然,能手动启动会话还是有帮助的。

I mean, it is useful to be able to kick off sessions.

Speaker 2

但我们真正想做的是把它接入所有其他系统,比如只读权限的生产数据库、日志系统,或者Confluence这类内部知识库。

But what we really want to be able to do is hook it into all of our other systems, whether that is the production database with read only credentials, the logs, a confluence or internal knowledge based system.

Speaker 2

我觉得这才是企业真正能实现飞跃的地方。

I think that is where I see the huge leap for companies.

Speaker 2

这对一些公司来说也可能是个挑战,尤其是当他们不太清楚该怎么下手的时候。

And that can be a challenge for companies as well who are maybe not familiar with exactly how to approach it.

Speaker 2

特别是那些身处合规要求严格、权限控制特别重要的环境中的公司。

Especially if they're in environments that have more compliance type things where access control can be pretty big.

Speaker 2

那你怎么有意识地去思考这些问题呢?

And how do you deliberately think about these problems?

Speaker 2

我觉得这正是这类系统常会带来的一个难题。

I find to be kind of one of the problems that comes with a system like this.

Speaker 1

是的。

Yeah.

Speaker 1

我们发现,MCP确实引发了很大的热潮,大家都说能跟各种系统集成。

The thing we've found is so, like, MCP is obviously, it has been a really big explosion of, oh, you can go integrate it with all these different things.

Speaker 1

但真要做得到位、体验好,我们往往得自己临时搭一些解决方案。

But to actually get the integration right and get the right experience, oftentimes, we found out we had to go build our own ad hoc things.

Speaker 1

比如Slack就是一个很好的例子,你可以给你的代理配个Slack的MCP,这样它就能在Slack上给你发消息。

Think Slack is a great example of Like, you could give your agent a Slack MCP and, okay, you can post messages back to you on Slack.

Speaker 1

但我们实际上是把Devin当成了Slack里的一个同事,从一开始就按这个思路设计的。

But we actually use Devin like a coworker in Slack and that's how it's been built from the ground up.

Speaker 1

但要做到这一点,你得支持双向的Webhook,对吧?

But to do that, you actually need to support webhooks that come back, right?

Speaker 1

然后Devin得用自然的方式回应,还得别在对话线里刷屏惹人烦,这体验得调得刚刚好。

And then Devin has to respond in a natural way and then hopefully don't spam your threads too much and annoy the people in your company, so you gotta tune that experience just right.

Speaker 1

尤其是,来回互动特别多。

Especially, there's a lot of back and forth.

Speaker 1

我们发现,在这些地方,光靠简单的MCP集成根本不够。

Like, we find that we actually had to go beyond the simple MCP integrations in these places.

Speaker 0

我刚去看了下MCP市场。

I just pulled out the MCP marketplace.

Speaker 0

我知道这活儿真不轻。

I know this is a fair amount of work.

Speaker 0

我的意思是,最终是不是得自己掌控所有主流的MCP?

I I mean, is is the answer to eventually take first party control of all the top MCPs?

Speaker 0

就是说,是不是这样

Like, is that the

Speaker 1

我真希望有个世界,能有一种比MCP更丰富的系统

I would love a world where you could have something that's more expressive than MCP.

Speaker 1

不只是提供一组工具,而是一个能双向互动的完整系统,跟各种界面自然地配合

That kind of like goes both ways, like not just a set of tools but like a proper system that interacts back and lets it have the right experience with all these interfaces.

Speaker 0

MCP规范里其实有采样功能,但没人用,对吧?

So, there actually is sampling in the MCP spec but nobody Right?

Speaker 0

都没人用

Uses

Speaker 1

我觉得另一点是,当MCP规范变得太复杂时,它原本那种‘一键连接’的简单承诺就慢慢没了

so, I think that's the other part is like actually we found that when the MCP spec starts to get too complicated, it starts to lose its original promise of being like a simple one step connect.

Speaker 1

现在我们反而得花力气去适配各种不同的版本,很多情况下,看起来就跟直接开发专属集成没什么区别了

Now, then we have to go figure out how to support all these different variations of things and it starts to look a lot like just building their first party integrations in a lot of use cases now.

Speaker 2

对

Yeah.

Speaker 2

我觉得这还跟它对公司有多关键有关,对吧?

I think it matters too how critical it is to your company, right?

Speaker 2

如果几乎所有会话都要经过这个环节,那最好还是自己掌控,这样能在此基础上做优化。

If this is something that nearly every session is going through, it probably makes sense to own it so that you can make optimizations on top of it Yeah.

Speaker 2

而不是随便用个现成的方案。

Versus just whatever is off the shelf.

Speaker 0

对。

Yeah.

Speaker 0

太好了。

Awesome.

Speaker 0

其他MCP呢?还有哪些?

Other MCP's, what else?

Speaker 0

抱歉。

Sorry.

Speaker 0

不过,我怕我们把重点太局限在集成上了。

Well, I don't know if that's narrowing in too much on integrations.

Speaker 0

那还有别的吗?

But what else?

Speaker 0

比如,你们在构建 OpenInspect 或 Devin 时,还特别注重哪些方面?

Like, what other elements of building OpenInspect or Devin that you guys really sync on?

Speaker 2

是的。

Yeah.

Speaker 2

我经常遇到的一个问题是关于记忆或者知识库的处理。

I think a problem that comes up very frequently is this idea of memories or knowledge base.

Speaker 0

天啊。

Oh, boy.

Speaker 0

没错。

Yes.

Speaker 0

你们是怎么解决的?

How do you solve it?

Speaker 2

简短的回答是:还没解决。

So not solved yet, is a short answer.

Speaker 2

嗯,是这么回事。

Uh-huh.

Speaker 2

这个问题已经有开放的议题了,有人在问。

It's something there's a open issue for it, someone asking about it.

Speaker 0

明白了。

Okay.

Speaker 0

目前我的知识库还没收录任何关于记忆的内容。

There's I I d wiki hasn't indexed anything about memory yet.

Speaker 2

我看到客户们主要通过技能来解决这个问题。

How I'm seeing it solved across my clients is primarily through skills.

Speaker 2

我发现技能可以弥补这方面的不足,或者用来更新Claude MD。

I find that skills can be a good gap within that or updating Claude MD.

Speaker 2

但整体来看,记忆仍然是个没解决好的问题,这也是我迟迟不敢加入它的原因。

But I think memory as a whole is a pretty unsolved problem and it is why I've been kind of hesitant to add it.

Speaker 2

当然,记忆的某些部分还是可以处理的。

I think there is parts of memory and that can be addressed.

Speaker 2

但总的来说,这是一个非常难解决的检索问题。

But I think as a whole, it's a very difficult retrieval problem.

Speaker 0

天哪。

Oh my god.

Speaker 0

确实如此。

Yeah.

Speaker 0

Ramp 没有写过任何关于内存的内容吗?

Ramp didn't write anything about memory?

Speaker 0

我搜出来零结果。

I see zero search results.

Speaker 1

内存的实现其实挺难把握的。

Memory can be quite tricky to get right.

Speaker 1

因为不仅检索困难,生成内存内容也很有挑战性。

Because it's the retrieval, but also the generation of the memory is that can be really tricky.

Speaker 1

你可不希望它只是随便回应一下。

Like, you don't want it to just Yeah.

Speaker 1

就是说,不管什么特别具体的数据。

Like, okay, whatever very specific data.

Speaker 0

给我们讲讲Devin的记忆发展历程吧,我知道这中间经历了不少变化。

Walk us through the Devin memory journey because I know there's been a journey.

Speaker 1

最早那个一直沿用了一段时间的记忆系统,我们叫它‘知识库’。

The first version of memory that kind of like stuck around for a while was a system we have called Knowledge.

Speaker 1

对。

Yeah.

Speaker 1

我们的想法是,希望它能慢慢积累经验,不需要用户每次都主动去教Devin。

And the idea was we wanted it to pick up things over time and not need the user to be proactive about teaching Devin things.

Speaker 1

每当你提醒Devin:等等,你这样用Git不对。

So, anytime you remind Devin, wait, no, that's not quite the way you're supposed to use Git.

Speaker 1

我们其实希望Devin能主动问:你要不要我记下这个,以后遇到类似情况直接提醒你,你只需要快速确认或否决就行,让它慢慢积累起来?

Like, we actually want Devin to say, hey, do you want me to actually just remember this for the future and for you to just basically quickly approve or reject and for it to build up over time?

Speaker 1

因为我发现,大概95%的Devin记忆,都是通过这种自动生成的方式积累下来的。

Because I find that, like, 95%, I think, some crazy style like that of the memories that Devin has are all through these auto generated things.

Speaker 1

实际上,很少有人愿意坐下来写大篇幅的文档,说明该怎么使用这项技术之类的。

Like, very few people actually just want to sit down and write big docs on, okay, here's how you're supposed to work with the technology, etcetera.

Speaker 1

生成和检索这一块,我们这些年一直在不断调整。

The generation in the retrieval has been something that we've been trying to tune a lot over the years.

Speaker 1

生成的时候,你当然不希望它记住了某一次的请求,比如‘请把这次改成草稿PR’,就从此以后所有人都得用草稿PR。

Generation, like, you don't want it to remember something like like if you asked one time to like, oh, please open it as a draft PR.

Speaker 1

你不想让系统觉得,从此以后所有PR都得是草稿状态。

You don't want be like, oh, everyone forever now should get their PRs as draft PRs.

Speaker 1

但你确实希望它能记住一些普遍的规律,比如某种常见的做法。

But do want some kind of common beer maybe you want to say.

Speaker 1

比如说,科尔通常喜欢把东西创建成草稿PR。

Like, oh, Cole generally likes things to be created as draft PRs.

Speaker 1

检索也是同样的道理。

Same with retrieval.

Speaker 1

如果你有成千上万条记忆,该怎么确保它们在恰当的时候被调出来呢?

Like, you know, if you have thousands of these memories, how do you actually make sure they're retrieved at the right time?

Speaker 1

要做得好而不让大量无用信息撑爆上下文,其实挺棘手的。

And that can be quite tricky to do right without exploding the context of a bunch of useless information.

Speaker 1

光是做评估工作,就得花不少功夫,才能确保记忆系统在新模型不断更替时依然可靠。

Surprising amount of just like eval work to just make sure that like memory remains a reliable system as new models come and go.

Speaker 2

对。

Yeah.

Speaker 2

你有没有什么可以分享的,关于怎么清理记忆的?

Do you have anything that you could share around like memory pruning?

Speaker 0

有。

Yeah.

Speaker 0

还有就是记忆的时间维度问题。

Then like kind of the temporal aspect of memory.

Speaker 0

没错。

Exactly.

Speaker 1

对。

Yeah.

Speaker 1

现在,它们能做的事情之一就是修改记忆。

Today, the so the things they could do is it could edit memories.

Speaker 2

原来如此。

I see.

Speaker 1

假如以前的记忆记录说,Cole 喜欢把所有东西都当成草稿 PR 提交,那你可以告诉它:别这样了。

And so if your memory used to say like, oh, Cole likes to open everything as like a draft PR, then you can imagine, no, don't do that.

Speaker 1

然后它就会问:要不要把记忆更新一下,改成 Cole 现在的做法?

Then it'll say, oh, do you want me to update the memory to be Cole now?

Speaker 1

我希望所有东西都直接作为 PR 提交。

I want everything as, you know, open PRs.

Speaker 1

我觉得,我们现在这个系统可能还不是最终版本。

I think that at the same time, we don't know if this is gonna be the final version of the system.

Speaker 1

不管现在有什么,大概都会被整合进我们接下来要开发的新系统里。

Whatever we have here will probably translate into the new system that we'll be coming up with.

Speaker 1

但我觉得,和两年前相比,最大的不同是,现在的智能体已经非常擅长直接使用类似文件系统的东西了。

But I think one big difference between two years ago and today is these agents are really good at using anything that resembles a file system natively.

Speaker 1

所以我们也在想,要不要把记忆系统重新设计成更像文件系统,让代理自己去浏览和操作?

And so part of us is thinking, oh, should we rebuild memories to feel more like a file system that we let the agent navigate on its own?

Speaker 1

这个想法挺有意思的,我们一直在探索。

That's been an interesting exploration.

Speaker 1

另外,在技能方面也有一些新的想法。

Also, some ideas in in the skill space.

Speaker 0

我现在正在打开 OpenClaw 的记忆系统。

I'm pulling up OpenClaw's memory thing right now.

Speaker 0

你看,OpenClaw 的记忆里有个类似每日日记的功能。

So memory OpenClaw has like this, like, daily memory journal thing.

Speaker 0

对吧?

Right?

Speaker 0

你可以通过它来查阅,它确实是一个可信的信息来源。

And you can I mean, that is a false system you can kind of grab through and is a source of truth?

Speaker 0

不过我不确定这是否是最好的方案。

I don't know if it's the best.

Speaker 0

这 probably 会特别杂乱。

It's probably super noisy.

Speaker 0

但至少如果你丢了什么,还能找回来,或者用某种遗忘机制,把那些很久没被调用的旧记忆清理掉。

But at least if you lose something, you can discover it or you can apply some kind of forgetting algorithm to, like, more ancient memories that don't get recalled again or something.

Speaker 1

我们一直在尝试突破公司里使用智能体的方式,就是让智能体拥有类似文件一样的记忆。

One thing we've been trying to do to push the boundaries of how you use agents at your company is letting an agent basically have a very similar file, like a memory.

Speaker 1

比如一个 Markdown 文件,让它长期担任某个特定问题的专属项目经理。

Md or something, and just kind of like be your permanent PM for a specific set of issues maybe.

Speaker 1

可以在公司内部建一些 Slack 频道,比如专门为 DeepWiki 这类产品开一个专属频道。

So, have like some Slack channels internally, maybe a Slack channel dedicated to a specific product like DeepWiki maybe.

Speaker 1

你可以想象,有个 Devin 永远在线,从不休息,但它会维护一个自己的记忆文档,记录当前最该解决和优先处理的事项。

And you can imagine that you want a Devin that never stops, it's just always awake, but it has this memory doc that it can just maintain for itself about, okay, what are the number one priorities of what we have to fix and prioritize?

Speaker 1

谁负责接下来的哪些任务?

Who is responsible for some upcoming work?

Speaker 1

它甚至可能定期给你发提醒,@你一下。

Maybe they'll even tag Devin will even tag you on some recurring basis.

Speaker 1

是的

Yeah.

Speaker 1

所以,我们一直在探索,怎么才能让Devin的应用超出工程范畴。

And so, it's been an interesting move to see, okay, how can we actually use Devin for more than just engineering?

Speaker 1

我们能不能把Devin的使用往上延伸,超越工程流程本身?

Can we actually upstream, above the engineering process?

Speaker 1

也许Devin只是创建一些任务单,这些任务单可能由人类来处理,也可能由其他Devin来接手。

And maybe it's just Devin creating tickets, which then maybe some humans do, but then maybe other devons do.

Speaker 0

对。

Yeah.

Speaker 0

我最有趣的一个自动化设置是,让它定期研究竞争对手,然后每周给我提一些建议。

One of my more fun automations is go research competitors and just suggest stuff to me on a weekly basis.

Speaker 0

这就是那个自动化流程。

That that's that's the automation.

Speaker 0

我现在一时找不到了。

I can't find it right now.

Speaker 0

但本质上就是去研究竞争对手,然后给出一些建议。

But basically, just like look at competitors and suggest things.

Speaker 0

当然。

Sure.

Speaker 0

这是你之前推荐过、但我现在不想要的三样东西,你可以直接把这些加进提示里。

And here are three things that you suggested that I don't want anymore of, and you just kinda stick that in the prompt.

Speaker 0

不过,确实如此。

But like Yeah.

Speaker 0

我其实希望,比如当我拒绝一个合并请求时,系统能自动更新记忆,这样我就不用再回头去调整排定的同步任务了——这已经是个功能请求了。

I wish actually so for like when I for example, when I reject the PR, I I wish that it updated memory so that I can then just not have to go up, go back and update the scheduled sync, but they came out, feature request.

Speaker 1

我们可能很快就会改。

You know, we might change it soon.

Speaker 1

你在使用OpenInspect这段时间里,有没有试过实现某个功能,结果后来不得不推翻重来?

I I guess OpenInspect, in the time you've been around, has there been anything you tried to implement, which then you had to like undo and like do a different way?

Speaker 2

目前还没有,不过我脑子里倒是有个想法。

Nothing yet, but something that is on my mind.

Speaker 2

我最初的设计是,每个集成都作为一个独立的包存在。

The initial way that I built it was that each of the integrations kind of lives as its own package.

Speaker 2

比如 Slack 机器人负责处理 Webhook,然后它和控制平面进行交互。

And so you have the Slack bot, which is what's handling the webhooks, and then it's basically interacting with the control plane.

Speaker 2

随着系统越来越集成,特别是 GitHub 机器人这一块,我正在考虑把所有功能都整合到中央控制平面里,因为现在我收到的需求是,不仅要跟踪拉取请求的状态,还想监控哪些 PR 被合并了。

As I'm seeing the system starting to be more integrated, specifically with the GitHub bot integration, I'm considering bringing that all into the central control plane because especially now I want to start a request that I'm getting is the ability to monitor the actual pull requests being merged as well as just kind of tracking of

Speaker 0

我现在有哪些是打开的?

Like what do I have open?

Speaker 2

是的。

Yeah.

Speaker 2

我现在有哪些是打开的?

What do I have open?

Speaker 2

有多少个正在被合并?

How many of these are getting merged?

Speaker 2

有多少条评论出现了?

How many comments are showing up?

Speaker 2

只是为了了解系统的整体运行状况。

To just kind of understand the health of the system.

Speaker 2

对于 GitHub 应用来说,你只有一个 Webhook。

And so in the case of a GitHub app, you only have one webhook.

Speaker 2

所以问题来了,我是把这个 Webhook 放在 GitHub 机器人这个包里吗?

And so then it's a question of, do I put that webhook in that GitHub bot package?

Speaker 2

这样有点奇怪。

That's kind of weird.

Speaker 2

它根本不该待在那里,因为那个包主要是给代码审查用的。

It doesn't really make sense to live there because that package is more for the code reviewer.

Speaker 2

还是说,我该把它集中到中央系统里?

Or do I centralize it?

Speaker 2

这正是我现在在考虑要做决定的事情。

So that's something that's on my mind of making that decision.

Speaker 2

我想我们之前也提到过另一个问题,就是内置还是外置的方案。

I think the other one we touched on earlier is the harness in the box versus out of the box.

Speaker 2

我觉得从长远来看,这个架构最终还是会回归到开箱即用的设计。

I think long term, the architecture will eventually come back out of the box.

Speaker 2

我最近加的一些新工具会回传数据到控制平面,这样就不必把密钥留在沙盒里了。

Some of the newer tools that I've added are calling back into the control plane so that you don't have the secrets in the sandbox.

Speaker 2

所以长远来看,我大概会把实际的代理模块移出沙盒。

And so I think long term, I probably will pull the actual agent out of the box.

Speaker 2

但现阶段,我觉得这样挺有意思的。

But I think for now, it's fun.

Speaker 0

关于把代理移出沙盒,我有个小问题。

Just a quick question on pulling the agent out of the box.

Speaker 0

今年我特别看好代理之间互相调用、创建子代理这类做法,不管你怎么称呼它。

I I one thing I'm very bullish on this year is agents calling other agents or spawning sub agents or whatever you wanna call it.

Speaker 0

对。

Yeah.

Speaker 0

这会让事情变得更难还是更容易?

Does that make it harder or easier?

Speaker 0

我说不准。

I can't tell.

Speaker 0

因为如果工具链在盒子里面,你就可以多开几个盒子。

Because if the harness is in the box, you can spin on more boxes.

Speaker 0

对。

Yes.

Speaker 0

如果工具链在盒子外面,那就没那么方便了,因为你得养个像独角兽一样的工具链,它还偏偏住在盒子外面。

The harness is outside the box, then you're it's less easy because you are you have a, you know, a unicorn pet of of a of a harness that's like living outside the box.

Speaker 0

我的意思是,理论上应该是这样。

I mean, in theory, it would

Speaker 2

情况也是一样的。

be the same way.

Speaker 2

对吧?

Right?

Speaker 2

不管是一个代理启动了多个子会话。

Whether one agent has launched many sub sessions within it.

Speaker 2

比如 OpenInspect,它可以启动子会话,创建其他环境并进行监控。

OpenInspect, for example, can launch sub sessions and actually create other environments and then monitor them.

Speaker 2

如果是在盒子外面,那就只是多了一个正在运行的会话而已。

In the case where it is out of the box, that would basically just be an additional session that's running.

Speaker 2

所以这个会话也是在盒子外面运行的。

And so that session is also running outside of the box.

Speaker 2

它运行在你的工作节点上,也就是你部署这个系统的地方。

It's running in your worker plane, wherever you're running this.

Speaker 2

然后你得仔细想想,顶层代理该怎么和它交互。

And then you really just have to think about how does your top level agent then interact with it.

Speaker 2

我觉得这确实会更复杂,因为架构本身变得更难处理了。

I do think it can be more complex just because, again, you have now a more difficult architecture.

Speaker 2

但如果你能搞定一次,之后应该就没什么问题了。

But I think if you figured it out once, it's probably fine.

Speaker 0

对。

Yeah.

Speaker 0

Walden,我想听听你的看法,我管这个叫元Devin管理。

Walden, I'm just throwing it open to you in terms of like I I call this kinda like meta Devin management.

Speaker 0

对。

Yeah.

Speaker 0

就是Devin调用Devin、安排Devin任务、查询轨迹之类的,你们有没有开发或上线过什么相关的东西?

Which is like the Devin's calling Devin's or Devin's scheduling Devin's or querying trajectories or anything like that, what have you built or unshipped anything?

Speaker 1

我们发现一个挺意外的现象:这些独立代理之间协作、希望它们并行工作的方式,大多还是沿用了传统的主代理-子代理模式。

I think one of the surprising things we've seen is that a lot of the ways that these separate agents work with each other and you want them to paralyze their work has still mostly followed the same manager sub agents regime.

Speaker 1

很多人其实很期待一个由大量代理组成的生态,它们能随时随地互相沟通。

And a lot of people, I think, are excited about this world where you have swarms of agents that kind of, you know, talk with each other all over the place.

Speaker 1

我们确实给Devin接入了MCP,让它能随意给其他Devin发消息、创建新的Devin等等。

We've actually given Devin an MCP so they can just go arbitrarily message other Devin's and create new Devons, etcetera.

Speaker 1

但这样一来,整个系统反而变得特别混乱。

But I guess it somehow creates a really chaotic world in that sense.

Speaker 1

所以到目前为止,日常实际使用中,我们发现最有效的还是单个事件驱动的模式。

And so we've still found that most practical use on a day to day basis has been one single event.

Speaker 1

是的。

Yeah.

Speaker 1

关键是要把任务合理划分开,让其他Devin各自在独立的环境中工作,不共享机器。

Figuring out how to segregate the work and get have other devons work on it in like a relatively isolated sense, each with their own boxes, not sharing machines.

Speaker 1

所以目前我们不得不建立一种机制,尽量减少冲突的可能性。

So there's like a very little room for conflict is kind of the regime that you have to create today.

Speaker 0

我得提一下Cursor的那些实验。

I'll call out the experiments from Cursor.

Speaker 0

对吧?

Right?

Speaker 0

这是林伟森在单智能体转向多智能体方面的研究。

This is Wilson Lin's work on single agent to multi agent.

Speaker 0

你一向主张别搞多智能体系统,但他们折腾了一圈,最后得出的结论,跟Devin的做法几乎一模一样。

And you're obviously famously on this side of don't don't build multi agent, but they went through the whole thing only to arrive at this, which is exactly what Devin has, I think.

Speaker 1

我觉得过段时间,那篇文章可能会被修订。

I think there will be a revision to that post at some point.

Speaker 1

好的。

Okay.

Speaker 1

说说看。

Tell us about it.

Speaker 1

一年前,大家还认为多智能体根本不可能实现。

Think multi agents were very much not at all possible a year ago.

Speaker 1

现在确实能看到更多多智能体的实验,但你也可以质疑,这些真算得上多智能体,还是只是工具调用?

You do see more multi agent experiments today, but you can kind of argue, are they really multi agents or are they just kind of just like tool calls?

Speaker 1

比如有人会创建子智能体去查找某个文件或某个代码实现。

You know, like there are people who will create sub agents to go look for XYZ file or XYZ implementation.

Speaker 1

这样做的好处是上下文管理很清晰,所有工具调用和消耗的token最终都会汇总成主智能体的一个答案。

Has really nice context management benefits because all of the tool calls and tokens that it spends then get collapsed back to just the answer for the main agent.

Speaker 1

这么做确实有很多优势。

There's lot of benefits to doing this.

Speaker 1

我们基本上让Devin这么做,调用Deep Wookie,然后把结果返回给你。

We basically have Devin do this with Deep Wookie, make a call out to Deep Wookie, give you back the results.

Speaker 1

但这感觉更像是一个工具调用。

But that feels like a tool call.

Speaker 1

你明白我的意思吧?

You know?

Speaker 1

这并不是两个协作方在真正地来回交流。

It's not like these two collaborators actually talking back and forth with each other.

Speaker 1

但我觉得最让我相信多智能体真的可能实现的,是我之前提到的,Devin 有时候会直接告诉我我错了,还会跟我争辩。

But I think the thing that gives me the most bullishness that multi agents might actually be possible is actually what I said earlier about Devin will actually sometimes tell me I'm wrong and push back.

Speaker 1

我认为这说明现在的智能体在沟通上已经达到了一定的成熟度,让多智能体系统成为可能。

And I think that demonstrates a level of maturity in communication today that makes a multi agent world possible.

Speaker 1

比如,当两个看到不同信息的智能体重新碰头时,

Like, when can two agents who have seen different information come back to each other

Speaker 0

它们能不能真正判断出谁是对的,到底该

and actually figure out who is right, what what

Speaker 1

采用哪种实现方式?

is the correct implementation?

Speaker 1

他们可不是只会附和的应声虫。

They're not just, you know, yes men.

Speaker 1

克劳德以前大概总是说,嗯,到底是什么呢?

Claude, I guess, is like used to just say, like, you know, what is it?

Speaker 0

你说得对,或者

You're you're right or

Speaker 1

你完全正确。

You're absolutely right.

Speaker 1

你完全正确。

You're absolutely right.

Speaker 1

是的。

Yeah.

Speaker 1

是的。

Yeah.

Speaker 0

你有看过吗?你看到没?

The have you seen Did you see

Speaker 1

Codex

the Codex

Speaker 0

App Troll 和 Topic?

app Troll and Topic?

Speaker 0

这是 Codex 应用。

This is the Codex app.

Speaker 0

在设置里有个小彩蛋。

Inside of settings, there's a little there's a little Easter egg.

Speaker 0

对吧?

Right?

Speaker 0

如果你去那里,比如主题或者外观设置那里。

So if you go there, like, their their themes or appearance.

Speaker 0

对吧?

Right?

Speaker 0

里面一堆颜色代码,顶部用的完全是 Anthropic 的配色,这简直是在恶搞。

There's all these, color codes and the top is absolutely and it's Anthropic's colors, which is such a troll.

Speaker 0

好了。

Anyway.

Speaker 1

我超喜欢这个彩蛋。

I love that Easter egg.

Speaker 1

这个是你自己发现的吗?

Did you discover that yourself?

Speaker 0

不是。

No.

Speaker 0

是有人在推特上提到这个,我就想,这真的假的?

It was like someone someone was tweeting about it and I was like I was like, is this true?

Speaker 0

因为有时候人们发帖就是故意激你一下。

Because like sometimes people just tweet stuff to get a rise out of you.

Speaker 0

不过是真的。

But yeah.

Speaker 0

就是这样。

There you go.

Speaker 0

Anthropic 的配色

Anthropic colors.

Speaker 0

是的

Yeah.

Speaker 1

但确实,我们现在已不再处于那种只会简单附和、无法进行真实对话的阶段了,它们能进行真正有来有回的交流。

But, yeah, we're we're we're out of this regime where, you know, it just says you're absolutely right and they can have real conversations and real back and forths.

Speaker 0

是的

Yeah.

Speaker 0

你也可以特意引导它,让它表现得更具对抗性,或者别的风格。

You can prompt it as well to be more adversarial or whatever.

Speaker 0

是的

Yeah.

Speaker 0

明白了

Okay.

Speaker 0

是的

Yeah.

Speaker 0

在我看来,这才更像智能,对吧?

To me, that is more intelligence, right?

Speaker 0

这可不是什么傻乎乎的工具,它真的会跟你对抗、跟你较劲。

Like, that is not just something that's like a dumb tool, it's actually pushing back on you.

Speaker 1

是的。

Yeah.

Speaker 1

没错。

Like, yeah.

Speaker 1

你提到那个问答博客的时候,我记得他们做过一个实验,让一群智能体协作,真给搭出了个浏览器。

When you mentioned the question blog posts, there was one blog they had where they fed a swarm of agents together and built a browser.

Speaker 1

对。

Yeah.

Speaker 0

是的。

Yeah.

Speaker 0

应该就是那个案例。

That that was I think that was the one.

Speaker 1

你可以让

You can have like

Speaker 0

我觉得就是同一个。

I think it's the same one.

Speaker 0

对。

Yeah.

Speaker 1

我们发现一个意想不到的成功案例:根本不用搞什么群组。

We found a surprising success of like, don't do a swarm or anything.

Speaker 1

就用一个Devin就行,你知道的,它自己就能管理上下文。

Just have one Devin, you know, it does its own context management.

Speaker 1

让它持续运行一段时间,给它一些疯狂的任务。

Just let it keep running for a while and give it some crazy tasks.

Speaker 1

我记得我们让它重新构建一个Windows操作系统。

I think we asked it to rebuild a Windows OS system.

Speaker 1

没错。

Yes.

Speaker 1

它还真完成了,就是坚持了足够长的时间。

And it managed to do it, just like, you know, going on for long enough.

Speaker 0

这是安德鲁的那个项目吗?

Was this Andrew's thing?

Speaker 1

是的,没错。

Yeah, yeah.

Speaker 1

好的。

Okay.

Speaker 1

我们其实做了很多演示,但最后都没发,因为那时候发得太多了,全是些最终成果的展示。

There were lots of demos that we ended up not posting because at some point we'd just be posting way too much a bunch of end of demos.

Speaker 1

但我特别喜欢这一点,因为它说明多智能体系统还是有种让人兴奋的魅力,这种魅力可能超出了它实际为系统带来的能力提升。

But I love that because it kind of shows that I think the multi agent thing it still has like a bit of exciting sexiness to it, which is maybe still beyond still like the actual delta it adds to the capabilities of these systems.

Speaker 1

但这绝对是未来的发展方向。

But it's absolutely the future.

Speaker 1

我觉得我们正朝着这个方向走,而且已经能看到明显的进展了。

I think we're, you know, we're heading that direction and we can see the progress being made there already.

Speaker 0

是的。

Yeah.

Speaker 0

如果我要提一点小小的不同意见,是因为我还没完全确信,但我之前请过OpenInsurf的瑞安·洛波普洛上过我们的播客,他可是个顶尖高手。

If I were to make one super minor pushback because I don't feel that confident about it yet, but I've I've had Ryan LoPopulo from OpenInsurf on on the pod and he's a super slob canon.

Speaker 0

对吧?

Right?

Speaker 0

天哪。

Oh my god.

Speaker 0

我的编程代理已经搞定了。

That's my coding agent being done.

Speaker 0

我下载了这个叫PYON ping的工具。

I I I downloaded this like PYON ping.

Speaker 0

不知道你们有没有听说过。

I don't know if you guys have heard this.

Speaker 0

它会从《命令与征服》《魔兽》这些热门游戏里提取音效包,一完成任务就自动播放出来。

It it takes like sound packs from popular games like Command and Conquer and like Warcraft and then it plays it whenever it's done.

Speaker 0

比如工作时的指令之类的。

Like work, work or whatever, like at your commands or something.

Speaker 0

总之,从光标代码库和瑞安的做法里,我了解到一种‘插槽式代理’的思路,就是想打破单个代理的瓶颈。

Anyway, what I got from from the cursor code base and from from Ryan's thing was that there's a slot canon approach where you try to loosen the single agent's bottleneck.

Speaker 0

我觉得这事儿特别重要,值得好好研究一下。

And I feel like that is like probably a very important thing to try to figure out.

Speaker 0

但我觉得还没人真正解决,因为那样的话,你只是在代理的瓶颈上又堆了一层审核机制,更难管了。

I don't think anyone's like really solved it because then you just have more reviewer stop on top of the agent stop to to try to wrangle it all.

Speaker 0

瑞安肯定强烈反对我说他没解决这个问题,他觉得自己已经彻底搞定了。

Ryan will probably very strongly object that I I say that he hasn't solved it, but he thinks he's he thinks he's completely solved it.

Speaker 0

但我觉得这依然很关键,毕竟这确实是个瓶颈。

But, like, I think it's still I think it's, like, very important because, like, that is a bottleneck.

Speaker 0

对吧?

Right?

Speaker 0

我觉得德文有时候太慢了,明明代码写得挺清晰合理,但效率上不去——我真希望有个按钮,能直接把并行度拉高一千倍,看看结果会怎样。

I I feel Devin is slow sometimes because I'm like, well, yeah, this is very readable and very sensible, but also it is slower than it could be if I just like I want a button to just say, like, just ramp this up 1000x parallel in parallel and just like see what happens, you know?

Speaker 0

我不确定将来有没有可能实现这一点。

And like, I don't know if that's like it's feasible at some point in the future.

Speaker 1

是的。

Yeah.

Speaker 1

我们内部也做过一些实验,试着完全靠‘感觉编程’来构建真实可用的产品,大家轮流写代码,自动合并,完全不进行代码审查。

We've also run experiments internally where we've basically tried to build entire products, like true products that we knew we would eventually ship, but for now let's try to see if we can do it just by purely vibe coding on top of each other, auto merge, no code review at all.

Speaker 1

然后我们设了一个衡量标准:这种模式能撑多久,直到你不得不放弃整个代码库。

And then there's this kind of benchmark of how many weeks can you go onto this for before you say we have to trash this codebase.

Speaker 1

其实你可以再从《星际迷航》里找找灵感。

Actually, reread it from Star Trek.

Speaker 1

对。

Yeah.

Speaker 1

你找到什么了吗?

Did you find?

Speaker 1

我觉得去年十二月的时候,最好的情况也就是能撑两周左右。

I think we found that the state of the art in December was you could probably run this for about two weeks.

Speaker 1

到这两周结束的时候,你会发现,嘿,你想改个按钮的颜色?

By the end of those two weeks, you'd find that, hey, you wanna change the color of a button?

Speaker 1

结果发现这个按钮在十个地方都有实现,每个地方的样式还不一样,你漏掉了一个,颜色稍微有点偏差,就差一点。

Well, it turns out this button is implemented in 10 different places and they have all these different variations and oh, you forgot one of them and actually it's a slightly different color, one spline.

Speaker 1

好吧,这实在没法继续搞下去了。

Okay, this is too much to work with.

Speaker 1

我们还是得加上代码审查,及时把问题修掉,确保代码是按可扩展的方式写的。

Let's actually try to do code review at the same time and make sure that we're on top of our stuff, we're actually cleaning it up a bit and making sure it's done in a scalable way.

Speaker 2

是的。

Yeah.

Speaker 2

我觉得,认为不需要看代码这个想法,总体上是个错误。

I think building on that, the idea of like you don't have to look at code, I think is generally a bad idea.

Speaker 2

我有个相关的梗是

And the the meme that I have for

Speaker 1

什么时间线?

What timeline?

Speaker 1

好吧。

Alright.

Speaker 1

你觉得这句话什么时候还成立?

Is is do you think that statement will be true on?

Speaker 2

我觉得在一段时间内,你还是得继续检查自己的代码。

I think probably for a while, it'll be true that you should continue to look at your code.

Speaker 2

我见过很多正在采用AI优先开发方式的团队遇到一个问题:他们的代码库会越来越像最差的工程师写的。

A problem that I see a lot of teams run into that I work with who are embracing kind of AI native, AI first coding is the meme that I have is that your code base regresses to your worst engineer.

Speaker 2

因为那个特别热衷于AI、却从不审查代码的工程师,他的写法会慢慢变成代码里的标准。

Because that engineer who is very gung ho about AI and is not auditing their code, their pattern starts cementing into the code.

Speaker 2

现在AI都在参考这些写法。

And now the AI is referencing their patterns.

Speaker 2

于是,那个满是二十多个if-else嵌套的代码块,

And so now their if else block that, you know, is 20 if else's back and forth.

Speaker 2

AI就以为这是正常的写法,结果越写越乱,问题越积越多。

The AI is seeing that as the pattern of how things are done and starts to then exponentially grow the slop.

Speaker 2

我觉得你提到的这个办法挺好的,就是定期安排清理工作,不管是人来处理,还是用系统来检测重复代码。

And I find to your point a pretty good approach to that is having scheduled cleanup, whether by humans or through systems that are looking for duplication.

Speaker 2

然后把这些问题解决掉。

They then address that.

Speaker 2

最后你可能会发现有十二种不同的方法来格式化日期。

You'll end up with 12 helpers for how to format a date.

Speaker 2

这种情况必须处理,不然代码会越来越乱。

And you need to address that because otherwise it will continue to sprawl.

Speaker 0

在合理范围内,我觉得有些重复是可以接受的,偶尔也可以做一次代码清理。

Within bounds, think it it's fine to have some duplication and then sometimes you have a garbage collection.

Speaker 0

对吧?

Right?

Speaker 0

没错。

Yeah.

Speaker 0

我跟很多工程负责人聊过,他们认为模块之间的边界一定要严格把控。

The the what I've been talking about with a lot of engineering leaders is that you want to be very strict about the boundaries between modules.

Speaker 0

作为架构师、CTO,或者任何类似角色,你的职责就是明确划定界限:你们内部怎么搞都行,那是你们的事,但在这两个团队之间,必须清清楚楚,任何跨界的改动都得经过人工审批,要么是我,要么是其他人,就这么定了。

And it's your job as an architect, as a CTO, whatever, to say like, okay, here's the hard contract between you guys and you guys, whatever you do inside this black box is your business, you do whatever, but like between these guys, let's be like really damn clear, and any movement must be signed off by a human or me, you know, then and like that's that.

Speaker 0

我不知道你还有没有其他建议或想法。

I don't know if you have any other modifications or advice.

Speaker 1

说到人类能发挥作用的地方,我发现有些特别复杂的基础设施问题,往往只要有一个拥有深厚经验的人介入,就能带来巨大改变。

Well, guess, generally on the topic of like where humans can be useful, I found that some of these like really deep infra problems, sometimes just having a heroine that just has really deep expertise can make a big difference.

Speaker 1

我在开发智能代理的时候,确实见过这种情况发生。

I've actually seen this come into play when actually building agents.

Speaker 1

现在有不少朋友在尝试构建自己的编程代理,我听很多人反复提到同一个问题:在他们的机器上,grep 太慢了。

So, we've had a few friends now try building their own coding agents and I think one same problem that I recurrently heard a lot of them run into was this problem of like, Oh, you know, grep is really slow on our agents' machines.

Speaker 1

很多人因为主要依赖 AI,自己又缺乏深厚的基础设施背景,就想着:好吧,我们自己搞个定制的 grep 索引,肯定快得多,用这个来绕开问题。

And so, a lot of them, I assume because they're using AI and they themselves don't have super deep infra background knowledge, say, okay, we're gonna go build our own custom Grep Index, it's gonna be really fast, and use that as a way around this problem.

Speaker 1

大概一年半前,我们在早期开发 Devin 时也遇到过类似问题,那时候还没有 AI,我们就直接问:该怎么处理?

When we ran into this problem about, like, know, maybe a year and a half ago when we were in the early days of building Devin, We obviously didn't have AI, we just asked how to do this.

Speaker 1

其实根本不用费劲去建什么新索引,直接用现有的 grep 就行了。

You could just slap off a new Grep index.

Speaker 0

你说你手动编写了Devin?

What do you mean you hand coded Devin?

Speaker 1

什么?

What?

Speaker 1

是的。

Yeah.

Speaker 1

你能相信吗?我们真是手写这段代码的。

Can you believe we hand wrote this code?

Speaker 1

我们有一些非常出色的运维同事,他们深入排查后说:你知道吗?

And we had our info people who are really amazing, they were looking into it and they're like, Oh, you know what?

Speaker 1

我们发现,这个问题的根本原因其实非常简单,但细节很微妙:很多虚拟机底层用的并不是真正的文件系统,而是网络文件系统,数据实际上通过网络缓存在S3里。

We realized that actually the root cause of this problem is actually super simple but fine grained detail, which is that a lot of these virtual machines, actually underlying them don't use real file systems, they use these network file systems where things are actually cached over the network actually in S3.

Speaker 1

所以你每次执行grep的时候,其实都在发起网络请求。

So, when you're grepping, you're actually making network calls every time you're doing these things.

Speaker 1

这就是为什么在这些机器上grep会慢得离谱。

That's why grep is extremely slow on these machines.

Speaker 1

所以,归根结底,我们之前为了把这些机器跑起来,做了多少繁琐的信息整理工作啊。

And so, again, it goes back to, you know, what is all of the crazy info work that we had to do to actually get these machines working.

Speaker 1

如果你自己来搞,就会发现这种小细节多得数不清。

If you try to do this yourself, you know, there are tons of small details like this.

Speaker 1

最后我们只好把那个网络文件系统给换掉了。

And so we had to eventually go swap out that network file system.

Speaker 0

是的,我觉得这事有人写过文章,对吧?

Yeah, I think there's a write up about it, right?

Speaker 0

我之前还列过一篇关于虚拟机的,

So I listed one about the virtual Oh,

Speaker 1

那完全是另一回事了。

that was a whole other thing.

Speaker 1

那是不一样的问题。

That's a different thing.

Speaker 1

是那个块差异文件存储格式。

The block diff file storage format.

Speaker 0

对,我会把那个资料带过来,那个

Yeah, yeah, I'll bring it Which

Speaker 1

这是一种我们自己开发的文件系统格式,让虚拟机能够快速启动和关闭。

is a file system format that we built so that the VMs could be spun up and down very quickly.

Speaker 1

简单来说,想象一下你有一个一太字节的磁盘,但你的程序只在这上面写了100行代码。

Basically, the intuition behind this is imagine you have a terabyte of disk and your agent only wrote 100 lines of code on top of that disk.

Speaker 1

那保存和启动这个磁盘需要多长时间?

How long does it take to save and bring up that disk?

Speaker 1

大多数系统因为没针对这种情况优化,就得把整整一太字节的数据全存一遍、再全读回来,耗时可想而知。

And most systems, because you're not optimizing for this case, it's just like on the order of a terabyte of work because you have to save all of that and bring it back up.

Speaker 1

在我们的系统里,我们设计了一种能层层叠加的文件系统。

In our system, we try to build a file system that incrementally builds on top of each other.

Speaker 1

每次保存或重启机器时,你只需要处理文件系统实际发生变化的那部分数据。

So, every time you save and bring the machine back up, you're only doing work that is proportional to effectively the diff in the file system.

Speaker 1

对。

Yeah.

Speaker 1

所以,这大大缩短了Devin的启动时间。

And so, this shaves off a lot of time in the boot up process of Devin.

Speaker 1

我觉得这个现在可能已经过时了。

I think this is actually now outdated.

Speaker 1

Devin内部现在有了一个更新的系统。

We have a newer system inside of Devin.

Speaker 1

不过,确实存在

But, yeah, there's a

Speaker 0

很多细微的细节必须做到位

lot of tiny details you have to get right

Speaker 1

才能让Devin的日常使用体验真正出色。

here to actually get the day to day experience of Devin could be good.

Speaker 0

从技术上讲,这不算智能体,但属于智能体的基础设施。

It's not technically agents, but it is agent infra.

Speaker 0

当你把智能体当作产品来卖时,卖的是智能体加上它的基础设施。

And when you sell an agent as a company, you sell agent plus agent infra.

Speaker 1

是的。

Yeah.

Speaker 1

至少我们现在的做法是这样,好处在于把代理基础设施整合在一起后,我们现在可以自由地把Devin部署到任何我们想要的环境里了。

At least the way we do it and the other the nice thing about having the agent infra being done together is, you know, you we kind of get to deploy Devin in whatever environment we want now.

Speaker 1

我们不需要再等底层基础设施提供商去支持VPC、本地部署或者联邦政府云这类服务。

We don't need to wait for some underlying infra provider to also go and support VPC or on prem or Fed GovCloud, for instance.

Speaker 1

所以我们现在可以直接问:既然我们掌控了基础设施,那该怎么为你搭建好这套系统?

So we can actually go and out, okay, since we're on the infrastructure, how can we get that set up for you?

Speaker 0

对。

Yeah.

Speaker 0

而你们则依赖Cloudflare。

Whereas you're a Cloudflare dependent.

Speaker 2

Cloudflare负责控制平面。

So Cloudflare runs the control plane.

Speaker 2

沙箱环境由Modal提供支持。

The sandbox is modal supported.

Speaker 2

有贡献者刚添加了Daytona。

Contributor just added Daytona.

Speaker 2

E2B已经在路线图上了。

E2B is on the roadmap.

Speaker 2

而且现在有个抽象层,任何贡献者想添加新的提供商,都可以直接加进去。

And I think there's an abstraction in place that if any contributor wants to add a new provider, they can add that in.

Speaker 0

是的。

Yeah.

Speaker 0

太棒了。

Amazing.

Speaker 1

那你接触的客户,一般会去跟其他第三方提供商签合同吗?

Well, what are like how are the customers you work with, do they generally try to then go set up a contract with another one of these third party providers?

Speaker 1

还是他们倾向于自己搭建虚拟机?

Do they try to do the VMs in house?

Speaker 2

我看到的大多数客户都在用Modal。

Most of them I see using Modal.

Speaker 2

我觉得 Modal 的服务很棒。

Think Modal has a Shout great Modal.

Speaker 2

我觉得 Modal 的产品非常出色。

Think Modal has a great offering.

Speaker 2

它涵盖了你需要的所有沙箱功能,快照就是其中很重要的一部分。

Captures all of the sandbox pieces you need, snapshots being a pretty big piece of that.

Speaker 2

而且他们还提供 GPU,整体来看确实是个很不错的方案。

And given that they also offer GPUs, I think it's a pretty nice offering as a whole.

Speaker 0

是的。

Yeah.

Speaker 0

这点毫无疑问。

No debate there.

Speaker 1

Modal 确实很棒。

Modal is great.

Speaker 1

尤其是他们的容器服务,用起来最顺手。

Especially, I think the container offering is the most natural.

Speaker 1

所以,如果你愿意放弃对完整虚拟机的需求,Modal 是个非常方便的平台,能快速把东西搭起来。

And so especially if you are willing to, you know, forgo the full VM requirements, Modal is a really vast place you can kind of spin something up on.

Speaker 0

没错。

Yeah.

Speaker 0

Modal 对 Python 的支持是不是有啥限制?

Is there a point so modals vary Python.

Speaker 0

我觉得大部分工作负载现在都转向 JavaScript 了。

And I feel like most workload, like, has really shifted to JavaScript.

Speaker 0

你们有没有同感?

I don't know if you guys get the same feeling.

Speaker 0

嗯,是这样。

Like, so so okay.

Speaker 0

我刚开始做 Lanespace、AIE 这些项目的时候,Python 和 JavaScript 还是五五开。

When I started Lanespace and AIE and all these things, was like fifty fifty Python and JS.

Speaker 0

对吧?

Right?

Speaker 0

大概就是这么个情况。

Like, that's roughly.

Speaker 0

我觉得现在不是这样了。

I think that's wrong now.

Speaker 0

我觉得JavaScript已经占主导了。

I think JS is one.

Speaker 0

我不确定是不是我夸大了,也许像Cognition这样的项目会用C、Java之类的语言。

I don't know if you guys maybe I'm overstating it and maybe for Cognition, there's like C and Java and what have you.

Speaker 0

但对于全新的项目,你们有这种感觉吗?

But for new greenfield apps, Do you feel that do you get that sense?

Speaker 0

这重要吗?

Does it matter?

Speaker 2

我觉得这个领域里大多数库都是优先用Python开发的,尤其是在可观测性方面。

I think that most of the libraries that I see in this space are Python native first, especially in the observability space.

Speaker 0

明白了。

Okay.

Speaker 2

话虽如此,我觉得整个系统都用同一种语言还是很有吸引力的。

That said, I think that there is a pretty big appeal of having your entire system in one language.

Speaker 2

对。

Yeah.

Speaker 2

特别是前后端要互相通信的时候,用一套统一的类型定义,确实很方便。

Especially when you have both your front end and back end communicating, you can have one central type Yeah.

Speaker 2

这真的很不错。

Which is very nice.

Speaker 0

是的。

Yeah.

Speaker 0

这正是我不推荐 Modal 的原因。

That's my case against Modal.

Speaker 0

或者说,只是因为。

Or it's just Yeah.

Speaker 0

你得额外跑一遍,我的意思是,虽然 Modal 也能跑 JavaScript,但毕竟不是运行时原生支持的,多了一道工序。

Then you have to run I mean, you can run JS inside Modal, it's just like one extra step that like isn't native to the runtime.

Speaker 1

我不确定是不是。

I don't know if Yeah.

Speaker 0

我不知道。

I don't know.

Speaker 0

你有数据吗?

You have numbers?

Speaker 0

我不知道。

I don't know.

Speaker 1

我唯一不喜欢Python的地方就是,只要是AI用Python,总会搞出一些特别奇怪的写法。

The the one thing I don't like about Python is whenever an AI, whenever it's Python, it always does like, the weirdest patterns.

Speaker 0

是因为在混用Python 2和3吗?

Oh, because it's, like, mixing two and three or what?

Speaker 1

是的。

Yeah.

Speaker 1

我觉得就是2和3混用的问题。

Think it's it's something mixing two and three.

Speaker 1

是的

Yeah.

Speaker 1

比如,我不知道你有没有注意到这个。

Like, the I don't know if you see this.

Speaker 1

它总是试图在对象上使用属性。

It always tries to do, like, has attribute on objects.

Speaker 1

对,就是这样。

It's like Yeah.

Speaker 1

天哪。

Oh, my god.

Speaker 1

但话说回来,确实如此。

But it's like Sure.

Speaker 1

是的。

Yeah.

Speaker 1

你不该这么做的。

You shouldn't be doing that.

Speaker 1

它应该报错才对。

Like, it should error

Speaker 0

是因为它在训练库代码吗?

if Because it's training on library code?

Speaker 2

依我看,这更像是奖励机制被滥用——它就是不想出错。

I think it's more of, like, from what I've seen, it's more of, like, a reward hacking mechanism where it doesn't want to No, never error.

Speaker 2

对。

Yeah.

Speaker 2

它不希望代码失败。

It doesn't want the code to fail.

Speaker 2

所以即使它知道对象有这个属性,还是会去调用 getAtr。

And so it even when it knows it has the attribute, it'll call getAtr on it.

Speaker 2

我很多客户转向更自主的代码生成后,我们都把这个设成了代码检查规则。

And for a lot of my clients who have moved towards more kind of autonomous coding, we've put that in as a lint rule.

Speaker 2

对。

Yeah.

Speaker 2

如果你用了 getAtr,你的拉取请求就会失败。

That if you do getAtr, your pull request is going to fail.

Speaker 0

哦,这个话题挺有意思的。

Oh, this is a fun topic.

Speaker 0

你能再给我讲讲这类情况吗?

Can you tell me more like this?

Speaker 0

比如,还有哪些迹象表明是AI在写代码,需要加防护措施?

Like, what else is AI is a good sign of AI coding that you have to put guards in?

Speaker 1

我们刚才在聊OPUS 4.7的事。

So we were talking just before this about OPUS 4.7.

Speaker 1

这个新模型特别喜欢写注释。

One of the things this new model likes to do is it writes lots of comments.

Speaker 1

不是每行都注,而是在每个函数上面写一大段类似产品需求文档的内容。

Not like it'll comment on every line, but it'll write paragraph PRDs on top of every function.

Speaker 1

不过

But

Speaker 0

我得说,

I will say,

Speaker 1

但不得不说,这些注释已经不像以前那样敷衍了事了。

to its credit, these aren't slop descriptions like they were before.

Speaker 1

比如,不再是简单写一句‘这个函数是干嘛的’。

Like, Oh, here's what this function does.

Speaker 1

而是会详细说明:为什么选这个方案,有哪些替代方案,以及为什么不选那些替代方案。

It's like, Oh, here's actually the reasoning and why we chose this approach and what the alternatives were and why we shouldn't do those alternatives.

Speaker 1

不过信息量还是太大了。

Still too much information.

Speaker 1

但我琢磨着,如果想让系统长期能自我维护,这种方向或许是对的。

But I wonder if this actually might be directionally correct if you want systems that can self maintain themselves in the long run.

Speaker 0

就像把需求文档也写进代码里,

Like write the specs

Speaker 1

把所有上下文都包含在代码里,是的。

in All the context in the code as well, yeah.

Speaker 0

所以你是同意的?

So you approve?

Speaker 1

但我同时觉得,这确实是个棘手的问题。

I but at the same time, it's this tricky problem.

Speaker 1

也许我们可以给用户加个设置,让他们自己决定要多详细。

Like, maybe we'll just give our users a setting or something for how verbose you want it to be.

Speaker 1

我其实不太喜欢这个做法。

I haven't loved it.

Speaker 1

我觉得评论挺好,拜托,干脆删掉吧。

I like the comment, please, like, get rid of it.

Speaker 1

你明白我的意思吧?

You know?

Speaker 1

对。

Yeah.

Speaker 1

对。

Yeah.

Speaker 1

对。

Yeah.

Speaker 1

但我能想象,未来可能会出现类似的东西。

But I I could see a world where maybe something of the sort becomes reality.

Speaker 1

不知道你们有没有听说过 Git AI。

Don't know if you guys know about Git AI.

Speaker 1

知道。

Yes.

Speaker 1

对。

Yeah.

Speaker 1

我们之前聊过。

We've talked about it.

Speaker 1

对。

Yeah.

Speaker 1

Git AI 的理念是,如果你运行一个智能代理,那么你发给这个代理的实际指令,应该和代码一起保存在 Git 的元数据里,这样未来的代理就能参考这些指令,代码审查机器人也能用上。

Git AI, the idea behind it if you run an agent, the actual prompts you send to the agent should be stored alongside the code inside the Git metadata so that future agents can reference it, maybe code review bots can reference it.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客