The AI Native Dev - from Copilot today to AI Native Software Development tomorrow - Liz Fong-Jones:PR数量翻倍,事故增加1.5倍 封面

Liz Fong-Jones:PR数量翻倍,事故增加1.5倍

Liz Fong-Jones: 2x the PRs, 1.5x the Incidents

本集简介

Honeycomb went from 30 to 70 merged pull requests a day in three months. The catch: automated code review, not code generation, became the real bottleneck of software automation. Liz Fong-Jones, Technical Fellow at Honeycomb, explains why incidents still rose 1.5x, how their internal bot Autobot now reviews every PR, and why AI amplifies whatever org you already have. What we cover: – How automated code review lets humans focus on design, not trivial bugs – Using a decision model like Jev to decide which PRs are safe to auto-merge – What makes a codebase ready for AI coding agents – When to trust AI agents with production incidents, and when they're just throwing darts – Why "Claude did it" isn't an excuse, and what ownership means with AI – How open source maintainers can handle a flood of AI slop pull requests Chapters: 00:00:00 - Introduction 00:06:41 - Why AI amplifies dysfunctional engineering orgs 00:10:45 - What makes a codebase AI ready 00:14:01 - Honeycomb's Autobot and automated code review 00:19:06 - Using Jev to decide which PRs are safe to merge 00:26:51 - Trusting AI agents during production incidents 00:30:40 - Least privilege and guardrails for coding agents 00:33:25 - If your name's on it, you own it 00:38:55 - AI slop pull requests and open source 00:45:56 - Will observability engineering survive as a role? Build your software factory, one workflow at a time, with Tessl: https://tessl.co/nlr 🔔 Subscribe for weekly episodes on AI-native development Is your team's review capacity keeping up with your AI coding agents? Tell us in the comments.

双语字幕

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

Speaker 0

三个月内,从30个到70个拉取请求。

30 to 70 pull requests in just three months.

Speaker 0

这是一个很大的跳跃,对开发者来说,要掌控这么多,确实不容易。

That's a big jump and a lot for developers to be in control of, let's say.

Speaker 1

一开始,我们似乎看到与之相关的事故增长是次线性的,对吧?

Initially, it looked like we were seeing a sublinear increase in outages correlated with it, right?

Speaker 1

比如,我们的变更失败率一开始似乎在下降。

Like our change failure rate appeared initially to be going down.

Speaker 1

但后来长期来看,平均下来,我们提交的拉取请求数量翻倍,而事故数量增加了1.5倍。

And then it turned out over the long term it averaged out so that, you know, we were shipping twice as many pull requests and we are seeing, you know, 1.5 times as many incidents.

Speaker 1

而且,你能让一个人处理的事故数量是有限的。

And there is a limit to how many incidents you can ask a human to work.

Speaker 1

人的代码审查注意力是有限的。

Your human code review attention is limited.

Speaker 1

我们如何让开发者不仅提高写代码的能力,还能提高审查代码的能力呢?

How do we enable our developers to scale up not just their ability to produce code, but also their ability to review code?

Speaker 0

《AI原生开发者》是一档面向开发者和工程负责人的播客,聚焦AI和智能体编程的前沿领域。

The AI native dev is a podcast for developers and engineering leads at the cutting edge of AI and agentic coding.

Speaker 0

每周,主持人Guy Pajani和我Simon Maple,都会与AI领域最激动人心的声音对话,探讨当今开发者面临的最大问题。

Join your hosts, Guy Pajani, and me, Simon Maple, every week as we chat with the most exciting voices in AI and tackle the biggest questions facing developers today.

Speaker 0

这里是《AI原生开发者》。

This is the AI native dev.

Speaker 0

昨天,你还在写代码。

Yesterday, you were writing code.

Speaker 0

今天,你在给智能体下指令。

Today, you're prompting agents.

Speaker 0

明天,你将运营一个软件工厂。

Tomorrow, you'll be running a software factory.

Speaker 0

智能体编程的发展速度快得让人头晕目眩。

Agenci coding is moving fast enough to give anyone whiplash.

Speaker 0

今年六月,AI开发者大会伦敦站的门票已经售罄。

This June, AI dev con London sold out.

Speaker 0

数百名开发者、工程主管和副总裁齐聚一堂,聆听来自Anthropic、OpenAI、Netlify和GitHub的演讲者,他们拨开迷雾,直击真正有效的方法。

Hundreds of developers, engineering leads, VPs packed in to hear speakers from Anthropic, OpenAI, Netlify, and GitHub cut through the hype and get to what actually works.

Speaker 0

今年十一月,我们将把它带回纽约,规模更大、更大胆,而且满是真正在构建智能体未来的人。

This November, we're bringing it back to New York, bigger, bolder, and full of people actually building the agentic future.

Speaker 0

三天时间,全是实实在在的演讲、实实在在的工具、实实在在的答案,无论你是在指挥智能体、构建循环本身、带领团队,还是制定战略。

Three days of real talks, real tools, real answers, whether you're directing the agents, building the loops themselves, leading the teams, or setting the strategy.

Speaker 0

作为播客听众,你可以使用促销代码pod 15享受门票15%的折扣。

As a podcast listener, you can get 15% off your ticket using promo code pod 15.

Speaker 0

我们准备了很多内容,非常期待在纽约见到你。

We have so much planned, and we can't wait to have you join us in New York.

Speaker 0

大家好,欢迎收听《AI原生开发者》的又一期节目。

Hello, and welcome to another episode of the AI native dev.

Speaker 0

我是Simon Maple。

My name is Simon Maple.

Speaker 0

我是本期节目的主持人。

I'm the host for this episode.

Speaker 0

和我一起的是Liz Fong-Jones,Honeycomb的技术研究员。

And joining me is Liz Fong-Jones, Technical Fellow at Honeycomb.

Speaker 0

热烈欢迎Liz。

A massive welcome to Liz.

Speaker 1

嘿,你好吗?

Hey, how are you going?

Speaker 0

嘿,我很好。

Hey, doing very well.

Speaker 0

谢谢。

Thank you.

Speaker 0

我想这是你第一次来AI原生开发者节目。

And I think this is your first time on the AI native dev.

Speaker 0

Liz,你现在是Honeycomb的技术研究员,但你最初是从SRE那边开始的,然后转到了开发者关系,又做了一段时间的现场CTO,现在成了技术研究员。

Now, Liz, you're a Technical Fellow at Honeycomb, but you actually started more on the SRE side, and then moved into DevRel, little bit into field CTO, and now a Technical Fellow.

Speaker 0

跟我们聊聊你这一路走来的经历吧。

Tell us a little bit about the journey that you've been on.

Speaker 1

是的,我觉得在我的职业生涯中,我一直专注于做可靠性领域的通才,并且致力于提升我所在团队的能力。

Yeah, I think over the course of my career, I focused on being a generalist in the field of reliability, and I focused on up leveling the teams I work with.

Speaker 1

所以我和所有初级开发人员一样,从个人贡献者做起,然后转向为谷歌的SRE团队和Suite团队提供建议,告诉他们实施可靠性实践的最佳方式。

So I started as an individual contributor as all junior devs do, and then I moved to kind of advising Google SRE teams and Suite teams on what the best way was to implement reliability practices.

Speaker 1

后来我尝试了工程经理的角色,管理谷歌的Bigtable SRE团队,手下大约有12个人,干了几年。

And then I took a swing at the engineer manager pendulum and managed the big table SRE team at Google, about 12 people under me, for a couple of years.

Speaker 1

我意识到,如果只在一个特定团队里,和一群特定的人一起工作,我确实能产生很大的影响。

And I realized that I could have all of the impact in the world working on one specific team, working with one specific set of people.

Speaker 1

但我真的想对整个行业产生更广泛的影响,因为我看到很多人在他们的组织中实施SRE实践时遇到了困难。

But I really wanted to have a broader impact on the industry because I could see so many people that were struggling to implement SRE practices across their organizations.

Speaker 1

我觉得确实有一个角色可以提升整个行业的水平,帮助人们获得更多的满足感,而不是让运维变成一件苦差事,你明白吗?

I thought, you know, there's a real role to up level the industry and to help people get more satisfaction and not just have ops be this drudge thing, you know?

Speaker 1

所以,正是这些想法让我走上了DevRel和现场CTO的道路,也就是思考如何推动行业前进,以及什么是最好的杠杆。

So that's really what led led me down this path of DevRel and and field CTO work is kind of thinking about how do we move the industry forward and what's the best lever to do that.

Speaker 1

而有时候,最好的杠杆并不是管理一个工程团队。

And sometimes the best lever to do that is not, you know, managing one engineering team.

Speaker 0

有意思,其实我从开发者关系转到现场CTO的时候,也挺享受的。

It's funny, actually, because when I also moved from developer relations into the field CTO, really enjoyed it, actually.

Speaker 0

在Sneak的时候。

Was at sneak.

Speaker 0

我可能跟CSO和CTO聊得更多。

I probably talked more with CSOs and CTOs.

Speaker 0

我觉得这有点像开发者关系的角色,但更像是升级到了领导层的领域。

And I kind of felt like it's a little bit like a DevRel kind of role, but it's more leveled up into the into the into the leadership space.

Speaker 1

所以……

So...

Speaker 1

对。

Exactly.

Speaker 1

你在做领导力辅导。

You're doing leadership coaching.

Speaker 1

就像,你在和其他高管平级合作,他们正在努力推动整个组织的变革。

Like, you're working peer to peer with other executives who are struggling to implement changes across their org.

Speaker 0

其实我们的相似之处也就到此为止了,因为我后来又回到了开发者关系领域,毕竟我稍微有点想念那些开发者。

And that's actually where our similarity ends, because I moved back into DevRel because I kind of missed the developers a little bit more.

Speaker 0

不过跟我们简单讲讲 Technical Fellow 这个职位吧。

But tell us a little bit about the Technical Fellow.

Speaker 1

对,作为 Technical Fellow,我可以在各个工程团队中从事高级别的技术工作,同时继续做一些推广、教学和撰写关于我们所做工作的内容。

Yeah, so as a Technical Fellow, I get to do kind of distinguished engineering work across all of our various engineering teams, as well as still continuing to hold on to some of that work to evangelize and teach and to write about what we're doing.

Speaker 1

说实话,主要就是写文章、上播客,代表 Honeycomb 工程部成为那个对外发声的公众形象,这样我们的工程师就能主要埋头搞技术,当然也要培养那些愿意公开演讲的人。

Really honestly, it'd be writing and appearing on podcasts and being able to be that public face of Honeycomb Engineering so that our engineers can primarily focus on being heads down except for, of course, nurture the ones who want to speak publicly.

Speaker 1

作为这种大使,去传达我们在做什么、看到了什么,真的非常有帮助,尤其是 Honeycomb 的品牌定位是服务于具有前瞻性的工程团队。

Being that ambassador for what are we doing, what are we seeing is really, really helpful, especially given Honeycomb's brand is we are for forward thinking engineering teams.

Speaker 1

所以帮助试点看看这具体是什么样子的,并且处于一个能够给他人提供建议的位置,因为我们已经见过这条路该怎么走了。

So helping pilot what does that look like and being in a position to give people advice where we've already seen what the path looks like.

Speaker 0

Honeycomb 非常公开地谈论过,这种角色确实能极大地帮助技术工程师和技术人员推进他们的职业生涯,而不需要不得不滑入那条我称之为可怕的斜坡——也就是管理岗位的那条路。

And Honeycomb very openly talked about how this kind of a role, it really it really helps technical engineers and technical folks, you know, progress their careers without needing to drop into that slippery that slippery slope, I call it a horrible slope of this management thing.

Speaker 0

我记得我记得我的父亲,他是个工程师,实际上是电气工程师,后来被提拔到了……

I remember I remember my my my dad, who was an engineer, actually electrical engineer, kinda was promoted into an...

Speaker 0

很多很多年前,他升到了一个管理岗位,当时他觉得那是他的晋升。

A managerial role many, many, many years ago, and that felt like his promotion.

Speaker 0

他之所以成功,是因为他转去做管理……

He succeeded because he went into a manager...

Speaker 0

管理岗位。

Managerial role.

Speaker 0

但当然,这其实并不是大多数工程师特别擅长或者真正想做的事情。

But, of course, that's not actually what most engineers are particularly good at or actually want to do.

Speaker 0

所以我觉得这是一个非常有效的方式,可以让人们晋升,而不用……

So I think this is a really strong way of of of leveling folks up without without

Speaker 1

我同意。

I agree.

Speaker 1

而且,我也觉得,至少在职业生涯中尝试一次管理,会让工程师变得更好。

And, also, I think it does make engineers better engineers to take a turn at management at least once in their careers.

Speaker 1

即使他们不打算长期全职做管理,我觉得这也能让你更清楚地看到工程工作是如何运作的,以及作为高级工程师如何产生影响。

Even if they don't decide to do it full time, longer term, I think it gives you a level of visibility into how engineering work, how to have impact as a senior engineer.

Speaker 1

所以我不一定会说……

So I I I wouldn't say necessarily that...

Speaker 1

我同意你的观点,当经理并不是晋升,但我也要说,工程师们不应该回避它,说,天哪。

You know, I I agree with your premise that being a manager is not the promotion, but, also, I would say that it shouldn't be something where engineers should, you know, steer away from it and say, oh god.

Speaker 1

不。

No.

Speaker 1

我永远不会那样做。

I'm never going to do that.

Speaker 1

因为我觉得至少做一次,你能学到很多东西。

Because I think you have a lot to learn from doing it at least once.

Speaker 0

是的。

Yes.

Speaker 0

哦,那真是太对了。

Oh, that is so true.

Speaker 1

那正是我的经历。

That was my experience.

Speaker 0

我完全同意这一点,真的。

I totally agree with that, actually.

Speaker 0

我觉得,呃……

Think I think the the...

Speaker 0

而且我觉得现在比以往任何时候都更重要的是,人际互动的个人技能,与AI以及他人的沟通,能够把这些事情表达出来,这太重要了。

And I think today more than ever, you know, the the the personal skills of, you know, interaction, the communication with AI as well as other people is so important to be able to to to vocalize to vocalize those things.

Speaker 0

莉兹,在这个播客里,我喜欢做的一件事就是找一些人的名言,然后把它甩回给他们,说,我们来聊聊这个。

Now one of the things I love doing, Liz, on on this podcast is finding quotes from people and and and and throwing it back at them and saying, let's chat about this.

Speaker 0

看看这话现在还成不成立。

Let's see if this still holds up.

Speaker 0

这里有一点我其实完全同意,所以它……

Now one of the things that I actually completely agree with here, actually, so it...

Speaker 0

就是……

It's...

Speaker 0

你,你……

You you...

Speaker 0

你之前说过,AI会放大你现有的做法。

Your line was AI amplifies your existing practices.

Speaker 0

它会让一个功能失调的组织更加失调,也会让一个高自主权的组织运转得更快。

It makes a dysfunctional org more dysfunctional and a high ownership org faster.

Speaker 0

现在让我们……

Now let's...

Speaker 0

我完全同意这一点。

I I totally agree with that.

Speaker 0

但我们先来定义一下,什么是功能失调的组织?

But let's define what is a dysfunctional org?

Speaker 0

你会看到哪些特征或迹象,然后说,没错。

What are the traits or the things that you would see and say, yes.

Speaker 0

如果在那里引入AI,它实际上会让你更快地陷入那种糟糕的状态。

If you add AI there, it'll actually make you get to that bad state faster.

Speaker 0

你会把哪些看作这些警示信号?

What would you see as those flags?

Speaker 1

哎呀,其实我更想聊聊反过来的情况,也就是功能健全的组织有哪些特点,而不是去讨论那些 dysfunctional 组织的问题。因为 dysfunction 的种类实在太多了,很难一一列举清楚。

Oh man, I actually prefer to talk about the inverse of that and talk about the traits of the functional orgs rather than talk about the traits of the dysfunctional orgs because I think there's just so many different varieties of dysfunction out there that it's hard to enumerate them all.

Speaker 1

不过,我还是觉得我们可以围绕你刚才提到的‘ownership’(主人翁意识)来展开讨论。

But I I think, you know, let's anchor on what you said about ownership, though.

Speaker 1

我认为 ownership 是决定一个组织是高绩效还是低绩效的最核心因素。

Think ownership is really that primary force that dictates whether an org is high or low functioning.

Speaker 1

具体来说,就是开发人员是否把自己的工作成果视为值得骄傲的事情,是否愿意对端到端的全生命周期负责,并且乐意为自己的产出署名。

It's the extent to which developers view their contributions as something that they take a sense of pride in, they want to own the life cycle of end to end, that they are responsible for, and that they they are happy to sign their name to.

Speaker 1

我觉得其他问题都是由此衍生出来的。因为当我们谈论可靠性实践时,如果一个组织的可靠性做得不好,通常意味着他们缺乏强烈的责任感。不然的话,为什么你会允许有问题的代码上线,还让它一直带着bug在生产环境里运行呢?

And I think everything else kind of flows out of that because when we talk about reliability practices, an organization that has poor reliability practices likely does not have a strong sense of ownership because otherwise, why would you let broken code ship to production and leave it broken in prod?

Speaker 1

所以我们可以聊聊各种让有问题的代码留在生产环境的情况,我认为归根结底……

So we can talk about all the ways that you can leave broken code in prod, I think it find...

Speaker 1

核心问题在于,开发人员能不能跟着代码一起进入生产环境进行排查?

It fundamentally boils down to are the developers allowed to follow it into production?

Speaker 1

他们能不能直接这么做,而不是每次都得去申请五套不同的权限?

Can they do so, right, like, without having to go and ask for five sets of permissions?

Speaker 1

他们真的会跟进到底吗?

And are they actually following through?

Speaker 1

所以,是的。

So Yeah.

Speaker 1

我们听说……

You know, we hear...

Speaker 1

我觉得这最近上了新闻。

I I think this was in the news recently.

Speaker 1

Shopify的CEO托比·利特克说,十二个月前,我们是一家AI优先的公司。

Toby Litke, the CEO of Shopify, said, you know, twelve months ago, we are now an AI first org.

Speaker 1

每个人都应该使用AI。

Everyone should be using AI.

Speaker 1

然后就在一周前,他抱怨工程师在生产环境中解锁了“垃圾炸弹”,并且这些行为超出了他们的团队范围。

And then literally a week ago, he lamented slop bombs being unlocked by engineers at at production and out of their teams.

Speaker 1

我就想,天哪,这其实是可以预见的后果,如果你告诉人们没有主人翁精神地行动,只用AI,加快速度,不在乎后果,现在他们突然要承担这些后果了。

And I'm like, man, that was kind of a foreseeable consequence if you were telling people to move without ownership and just, you know, use AI and move faster and, you know, who cares about the consequences, and now suddenly they're weeping the consequences.

Speaker 1

所以我认为,不扔垃圾炸弹的关键在于,你要对自己发布的东西负责。

So I think, you know, ownership of not lobbing slop bombs because you are responsible and accountable for what you ship.

Speaker 1

我觉得这才是最重要的。

Like, I think I think that's that's the important thing.

Speaker 0

所以,

So so

Speaker 1

然后

And

Speaker 0

你是说,方向比速度更重要,如果你……

then You're saying that the bearing here is more important than the speed in terms of if if you're...

Speaker 0

你实际上会更快到达目的地,而如果你在做坏事,

You will you will actually accelerate to the destination faster and if you're doing something bad.

Speaker 0

而且我觉得重要的是……

And and I think the the important thing...

Speaker 1

而且如果……

And if the...

Speaker 1

如果你没有朝着任何特定方向前进,对吧,就像,给一个没有转向或导航的火箭加燃料,那它只会绕圈直到爆炸。

And if you are not steering in any particular direction, right, like, know, you add rocket, you know, rocket fuel to a rocket that has no steering or guidance, and those just go in circles until it blows up.

Speaker 1

我觉得这就是没有方向却加速的典型例子。

I I I think that's the classic example of, you know, of of acceleration without direction.

Speaker 1

对。

Yes.

Speaker 1

它只是在绕圈。

You know, it's just going in circles.

Speaker 0

对。

Yes.

Speaker 0

我觉得这里的一个要点是,AI不会解决你现有的任何问题。

And and and I I guess, you know, a a takeaway there is AI is not gonna fix any existing problems that you have.

Speaker 0

它只会放大这些问题。

It's gonna magnify them.

Speaker 0

所以如果你有问题,AI不会帮你解决。

So if you have a problem, AI won't fix it.

Speaker 0

你得先解决问题,然后再引入AI来加速你正在走的这条路。

You need to fix the problem and then introduce AI to to accelerate the the the path that you're on to.

Speaker 1

如果你对应该发布什么内容没有共识,那你只会发布更多随意的工程改动。

If you're not in alignment about what you should be shipping, then you're just going to ship more random acts of engineering.

Speaker 1

这对谁都不好,如果……

Like, that's not good for anyone if...

Speaker 1

当然,我知道客户对他们允许UI变化的容忍度是有限的。

Certainly, I know that customers have a very limited patience for the amount that they allow their UI to change.

Speaker 1

如果Riverside播客录制软件每次登录都变个样,每周都不同,我很快就会非常恼火。

If the Riverside podcast reporting software looked different every time logged in every single week, I'd become very frustrated very quickly.

Speaker 1

你能引入的变化是有限度的,你必须仔细考虑如何利用这些变化。

There are limits to how much churn you can introduce, and you have to think consciously about how you're spending that churn.

Speaker 1

所以……

So

Speaker 0

我很喜欢你刚才关于所有权的例子,因为我觉得……

I really like the example that you gave about ownership there, because I think...

Speaker 0

而且我觉得员工、开发者几乎都有那种意愿,会说,对,我确实想把这个事情一直做到上线。

And I think there's almost like that willingness for employees, for developers to say, actually, yeah, I want to see this through to production.

Speaker 0

除了所有权之外,还有没有其他代码仓库的特征,会让你一看就觉得,哦,对,这些人是在用……

Beyond ownership, are there other other traits of a repo where you would look at something and say, oh, actually, yeah, these people are using...

Speaker 0

这些开发者是在很好地利用自主权,或者有很强的模式。

These folks are developers using autonomy well or or, you know, strong patterns.

Speaker 0

而且其实很容易把AI加进去。

And it's actually very easy to add AI in.

Speaker 0

也许是DevOps实践。

Maybe it's DevOps practices.

Speaker 0

还有没有其他东西,让你一看某个代码仓库就能说,这个已经准备好用AI了?

Are there other things that you can look at a repo and say, this is AI ready?

Speaker 1

我觉得一个主要的点是,AI会复制你代码库里已有的模式。

So I think one primary thing is AI copies existing patterns that exist in your code base.

Speaker 1

如果你做同一件事有五种不同的方式,AI就会变得非常混乱。

If you have five different ways of doing something, AI will become very confusing.

Speaker 1

它会创造出六种或七种方式。

It will create six ways or seven ways

Speaker 1

做事情的方式。

Ways of doing it.

Speaker 1

所以我认为,要确保你的工程组织在做事方式上保持一致,就像你说的,要有共同的模式,然后确保把这些模式编码给AI,也给你的新员工。

So I think making sure that you have alignment in your engineering organization about how do you do things, what are the common patterns as you say, and then making sure to encode for AI and also for your new hires.

Speaker 1

这些模式在哪里找?

Where do you find these patterns?

Speaker 1

怎么用它们?

How do you use them?

Speaker 1

我觉得,接着你刚才说的,

And I think, you know, take...

Speaker 1

拥有强大的CI/CD模式也很重要,这样你就能用五分钟的努力去验证事情,而不是花六十分钟或三个小时。

Taking your nudge there, right, like, it is important as well to have strong CICD patterns so that you can actually validate things with five minutes of effort and not sixty minutes or three hours of effort.

Speaker 1

确保你有良好的可观测性,确保你有良好的可测试性,而且不是空洞的测试,而是真正有意义的测试。

Making sure that you have good observability, making sure you have good testability, and not just, you know, empty calorie tests but actual real meaningful tests.

Speaker 1

再说,机器会复制,如果它们复制的是坏习惯,那你最后就会制造出一堆没用的东西。

Again, machines copy and if they are copying bad practices then you're going to wind up creating fluff bombs.

Speaker 1

如果你复制的是好习惯,那你测试和验证自己产出的东西就会更容易。

If you are copying good practices then you are going to have an easier time testing and validating what you're producing.

Speaker 1

这要从测试开始,从高质量的注释开始。

That starts with testing, starts with high quality comments.

Speaker 1

即使在我们代码库里注释质量相对较高的情况下,我们也发现AI不幸地把我们拉回到了平均水平。

Even in our code base where we have relatively high quality comments, we found that AI unfortunately is regressing us to the mean there.

Speaker 1

我们有很多AI生成的、价值很低的注释。

We're having lots of very low low value comments that AI is creating.

Speaker 1

比如……

Like...

Speaker 1

那你如何防止AI让你的代码库变得更糟呢?

So how are you guarding against AI making your code base worse?

Speaker 1

你实际上是怎么推广好的测试模式、好的可观测性模式,确保我们以更容易部署到生产环境的方式进行工程开发的?

How are you actually propagating good patterns around testing, good patterns around observability, kind of making sure that we are engineering things in a way that it's going to be easier to roll them out to production.

Speaker 0

我觉得我们之前在节目外简单聊过这个话题。

And I think we talked about this briefly off air.

Speaker 0

但我们在这里给出的建议,其实和AI出现之前我们给出的建议是一样的,就是什么样的功能是好的,什么样的测试是好的,可靠性要好,所有这些。

But the advice that we kind of like giving here is actually the same advice that we would give pre AI in terms of what functional looks like, what good looks like, you know, good testing, good reliability, all those things.

Speaker 0

这其实就是

This is just

Speaker 1

告诉人们要吃蔬菜。

good telling people to eat their vegetables.

Speaker 0

确实是这样。

It is.

Speaker 1

问题就在于,没人愿意吃蔬菜,直到他们得了维生素缺乏症。

And the and the trouble is no one wants to eat their vegetables until they wind up with a vitamin deficiency.

Speaker 0

对,没错。

Like Yeah.

Speaker 1

但问题是,AI让吃蔬菜这件事变得容易多了,只要你告诉AI去做,而不是让AI随便乱写一堆新功能塞进你的代码库。

Except for the thing is, AI has made it a lot easier to do the eat your vegetables part as long as you tell AI to do it and not just have AI, you know, slop coding a bunch of new features into your code base.

Speaker 0

对。

Like Yeah.

Speaker 1

你有了很多新的工程资源。

You have a bunch of new engineering bandwidth.

Speaker 1

怎么用这些资源取决于你,而且因为机器永远不会觉得无聊,让它们给代码库加遥测、加丰富的事件、加属性,是件很好的事。

How you choose to spend it is up to you and because the machines never get bored, it's a great thing to do to have them add telemetry to your codebase, to add rich y events, to add attributes.

Speaker 1

这些以前都是我们得告诉开发人员去做的,就像让他们吃蔬菜或者刷牙一样。

These are things that we used to have to tell developers, telling them to eat their vegetables or brush their teeth.

Speaker 1

现在这些事机器人其实挺擅长的,而且只要你指示它们,它们也乐意去做。

Now it's something that the robots are actually pretty competent at doing and they're happy to do it as long as you instruct them to.

Speaker 1

我觉得一方面,做这些事的必要性比以往任何时候都高,因为我们要处理的代码量在不断增加。

I think it's both that the necessity of doing it is higher than ever because we're having this increased volume of code that we're trying to win.

Speaker 1

另一方面,做这些事的难度也大大降低了。

And also the ease of doing it is much better as well.

Speaker 0

不。

No.

Speaker 0

完全正确。

Absolutely.

Speaker 0

那我们聊聊职能型组织吧。

So let's talk about a functional organization.

Speaker 0

聊聊Honeycomb。

Let's talk about Honeycomb.

Speaker 0

聊聊Honeycomb机器人……

Let's talk about the Honeycomb bot...

Speaker 0

抱歉,是Autobot,它负责合并和创建拉取请求。

Autobot, sorry, that merges pull requests and, you know, creates pull requests.

Speaker 0

我记得三个月内,每天合并的拉取请求从30个增加到了70个。

I believe that went from 30 pull requests merged per day to 70 pull requests merged per day in three months.

Speaker 0

是这样吗……

Is that...

Speaker 0

我记的数字对吗?

Did I get those numbers right?

Speaker 1

数字是对的,但我觉得归因不太准确。

You got the numbers right, but I think the attribution is wrong.

Speaker 1

没错,我们确实有个内部编程机器人叫 Autobot。

So, yes, we do have a internal coding bot called Autobot.

Speaker 1

不过,Autobot 每天大概只生成五个拉取请求,所以它并不是拉取请求的主要来源。

However, the Autobot is producing maybe five of those pull requests per day, so it's not the majority creator of the pull requests.

Speaker 1

它是这些拉取请求百分之百的审查者,而且它做得非常好,我们的开发人员不再需要去查找那些小改动里的琐碎 bug 了。

It is the 100% reviewer of those pull requests and it has gotten so good that our developers are no longer needing to look for trivial bugs in changes.

Speaker 1

所以我觉得,当我们讨论把拉取请求的数量翻倍甚至更多时,关键在于人类代码审查的精力是有限的。

So I think, you know, when we're talking about increasing your number of pull requests by a factor of two or more, right, like, human code review attention is limited.

Speaker 1

我们该怎么让开发人员不仅能提升写代码的能力,还能提升审查代码的能力呢?

How do we enable our developers to scale up not just their ability to produce code, but also their ability to review code?

Speaker 1

我觉得这时候有个像 Autobot 这样的助手很有帮助,它能指出问题,这样开发人员就不用亲自去当人肉检查器或者人肉 Linter 了。

And I think it really helps there to have a helpful assistant like Autobot, you know, pointing out problems so that the developer doesn't have to be a human linter or a human bug checker.

Speaker 0

这点很有意思,因为现在大家写代码的速度和交付代码的意愿并不是瓶颈所在。

And this is really interesting, because the speed at which people can write code and trying to deliver code is not the problem here.

Speaker 0

问题在于,我们人类验证生成的代码、进来的拉取请求是否有效、是否正确、是否经过充分测试的速度。

It's the the the problem is the speed at which us as humans can validate that the code that is being generated, the pull requests that are coming in are are valid, are correct, are well tested and

Speaker 1

完全正确。

exactly right.

Speaker 1

我觉得,任何真正的生产系统,至少目前,都不应该是一个无人值守的工厂。

Like, I would argue any real production system should probably not be a dark factory, at least at this time.

Speaker 1

我认为需要有人类监督、人类审查、人类问责,就像我之前说的。

I think there is a need for human oversight, human review, human accountability as I was talking about.

Speaker 1

比如,我们如何确保把学到的经验反馈回去?

Like, you know, How are we making sure that we're feeding back the lessons that we learn?

Speaker 1

我们如何确保维持我们的标准?

How are we making sure that we are maintaining our standards?

Speaker 1

而且我认为这些标准必须来自人类。

And I think those standards have to come from humans.

Speaker 1

我不认为机器人能够自己制定并执行这些标准,对吧?

I don't think the robots are capable of coming up with enforcing the standards on their Right?

Speaker 1

就是说,我们得……

Like, we have to...

Speaker 1

就像你车上有自适应巡航控制,不代表你可以完全放开方向盘。

Like, just because you have adaptive cruise control in your car doesn't mean that you can fully let go of the wheel.

Speaker 1

对,没错。

Like Yeah.

Speaker 1

你还是得保持注意力。

You still have to pay attention.

Speaker 0

那你能跟我们讲讲Autobot是怎么……

So so so can you tell us a little bit how the Autobot...

Speaker 0

我很喜欢Autobot这个名字。

And I love the I love the name Autobot.

Speaker 0

听起来很像变形金刚,感觉我们这边力量很强。

It does sound very transformer like, so it feels like we've got a lot of power on our side.

Speaker 0

跟我们说说它内部是怎么运作的吧。

Tell us a little bit about how that works under the covers.

Speaker 0

为什么它这么可靠?

Why is it so reliable?

Speaker 1

对,最初我们构想Autobot,是为了自动化创建小型的、分块式的拉取请求。

Yeah, so originally we conceived of Autobots as this mechanism to automate the creation of small bite sized pull requests.

Speaker 1

我们花了不少时间,基本上就是把Claude code封装起来,专门处理单个线性任务。

We invested a fair amount of time in essentially doing Claude code in a box to work on a single linear ticket.

Speaker 1

现在它仍然在做这件事,不过我们正在逐步淘汰这个功能,因为现在这已经变得很普遍了,你可以找到专门的服务来帮你完成。

It still does that, although we're in the process of sunsetting that because it turns out that now it's commoditized and now you can have bespoke services that do that in a box for you.

Speaker 1

但我觉得,在我们四五月开始这个项目的时候,这效果非常显著,因为第一次让那些不太熟悉Claude code的开发者也能说:你知道吗?

But I think at the time when we started this effort in April or May, this was phenomenally effective in terms of for the first time having even developers who are not super fluent in Claude code be able to say, You know what?

Speaker 1

这个任务看起来挺简单的。

This ticket looks relatively simple.

Speaker 1

不入虎穴,焉得虎子。

You know, nothing ventured, nothing gained.

Speaker 1

比如,把这个任务交给Autobot,看看它能生成什么样的拉取请求。

Like, you know, let's assign that ticket to Autobot and see what pull request it produces.

Speaker 1

所以,Autobot 就是这么开始的。

So that's that's kind of how Autobot started.

Speaker 1

是不是……

Was it...

Speaker 1

这个努力是不是为了处理那些比较简单的任务,不需要开发人员一直盯着、指导机器人,对吧?就是那种“我希望它往这个方向设计”的感觉。

Was this effort to kind of clear off the lower hanging fruit that doesn't require a developer to supervise and tell the robot consistently and steer it, right, like, you know, this is the kind of design direction I want this to take.

Speaker 1

理论是,如果你把每件事都拆解成一个清晰的线性任务,让机器人能独立完成,那么你的 Autobot 就能把它变成拉取请求,然后作为发起 Autobot 的人,你可以先自己审查一遍,再交给同事审查。

The theory was if you decomposed everything into a linear ticket well enough so that it would be able to, you know, complete the linear ticket on its own, that then your Autobot could take that and turn it into a pull request and then you could, as a human who requested the Autobot to run, you could go ahead and review that self review first and then after that hand that to your peer reviewer to review as well.

Speaker 1

所以,就是这么开始的。

So that's how it started.

Speaker 1

然后我们意识到,这些小任务只占一小部分,而且同样的功能也可以用来在封闭环境中复现今年四月或三月 Anthropic 发布的 Claude 代码审查功能。

And then we realized that there were a relatively small percentage of these smaller tickets, and also that same functionality could also be used to reproduce kind of in a box the functionality that I think in April or March this year, Claude...

Speaker 1

Anthropic 发布了这个 Claude 代码审查功能。

Anthropic released this Claude code reviews functionality.

Speaker 1

而且它非常昂贵。

And it's phenomenally expensive.

Speaker 1

每次运行大概要20到30美元,而且得花上十几二十分钟。

Was, like, 20 or $30 per run, and it took, like, ten or twenty minutes to run.

Speaker 1

我们看了之后觉得,其实我们也想要类似的功能,但我们更希望它能……

And we looked at it and we said, actually, we want something like this, but we would prefer that it be...

Speaker 1

能在两三分钟内跑完,而且每次拉取请求的成本只要几美元,而不是几十美元。

That it run within less than two or three minutes, that it costs dollars per pull request and not tens of dollars.

Speaker 1

所以我们把Autobot项目的重心转向了代码审查。因为我们意识到,不管有没有Autobot,我们的开发人员本来就能处理大量拉取请求,所以我们需要把重点放在如何减轻人工审查人员的工作负担上。

So we pivoted the Autobots project towards handling reviews because we realized that our human developers were more than capable of creating this mass volume of pull requests anyways, Autobots or not, and that we needed to focus that instead on how do we make the review load of our human reviewers lighter.

Speaker 0

那……它是怎样运作的?

And and how does...

Speaker 0

所以,显然 Claude 作为一个通用大模型,

So, obviously, you know, Claude as a as a...

Speaker 0

作为通用大模型,这类任务通常成本都很高,运行时间也特别长。

As an LLM or a general LLM, these types of things will always be kinda, like, very expensive and and long to run.

Speaker 0

这周新闻里都在讨论这个,毕竟录制的时候 Jev 正火得不得了。

In the news this week, so this will tell folks when we recorded it, obviously, Jev is is making a lot of waves right now.

Speaker 0

它现在在很多地方都登上了头条。

It's hitting the it's hitting the headlines in most places.

Speaker 0

对于像Jev这样的LLM,它特别擅长给出是或否的答案或者选择题,那这会对像代码审查这样的特定任务或领域产生什么影响呢?

With with an LLM, which is very specific to kind of being able to provide, you know, yes, no answers or multiple choice, does that how will that now impact places or, you know, specific tasks like code review?

Speaker 1

所以我觉得我们现在主要考虑用Jev的地方,是把拉取请求分类成两类:一类是安全合并的,只需要自动审查;另一类是不安全合并的,需要人工审查。

So I think the primary place where we're thinking about deploying Jev right now is classifying pull requests into safe to merge with just the automatic review versus not safe to merge requires a human review.

Speaker 1

以前我们靠人工自己判断,我们其实在做实验,试图让大约20%的拉取请求自动审查并合并,不需要人工审查。

Previously we had been relying on humans to self identify and we were doing this experiment actually to try to have about 20% of our pull requests automatically reviewed and landed without having a human review.

Speaker 1

再说一次,把人力集中在关键的地方,因为如果你把拉取请求的数量翻倍,要么你花在人工审查上的时间也要翻倍,甚至更多。

Again, focusing that human attention because if you double the number of pull requests, either you double the amount of...

Speaker 1

要么你就得减少工作量。

More than double the amount of time that you're spending as a human reviewing or you have to load shed.

Speaker 1

你得搞清楚哪些审查不那么重要,哪些更重要。

You have to figure out what's less important to review and what's more important to review.

Speaker 1

之前我们一直在做实验,让人类和审查者来标记。

Previously, we had been doing this experiment of having humans and the reviewers labeling.

Speaker 1

我觉得这个拉取请求需要花很多精力去审查吗?

Do I think that this is a pull request that requires high effort to review or not?

Speaker 1

现在我觉得可以让Jev来做这件事。

Now I think we can have Jev do that.

Speaker 1

我们可以让Jev作为那个直觉检查,判断我能不能相信审查者关于这个是否安全合并的意见。

We can have Jev be that gut check of, can I trust the reviewer's opinion on whether or not this is safe to land?

Speaker 1

如果可以,就直接自动合并,不需要人工干预。

And if so, go ahead and land it without human intervention.

Speaker 1

所以仍然有语言模型层在做代码审查。

So there still is the language model layer doing the code review.

Speaker 1

但我认为分类器是在做判断代码变更复杂程度的工作。

But I think the classifier is then doing that work of how complex is the code change?

Speaker 1

审查者有没有提出什么重要的担忧?

Did the reviewer raise any significant concerns?

Speaker 1

我该不该让……

Should I let...

Speaker 1

我该不该合并呢?

Should I merge or not?

Speaker 0

我觉得Jev这里在新闻上主要有三个关键点。

And I think there are three kind of, like, key things that are hitting the news here with with Jev.

Speaker 0

一个是成本。

One is the cost.

Speaker 0

一个是速度,但另一个是置信度分数。

One is the speed, but the other is the confidence score.

Speaker 0

我猜速度和成本可能是锦上添花的东西,但置信度分数才是关键。

And I presume it's the the the the speed and the and the cost are probably the nice to haves here, but it's the confidence score, I guess.

Speaker 1

完全正确。

Exactly.

Speaker 1

如果我已经花了五分钟和十美元在token上来审查这个拉取请求,那么真正重要的是得到一个自动化的置信度分数,来判断我能否安全地合并它。

If I'm already spending five minutes and 10 and and $10 in tokens to review to review this pull request, the thing that's actually important here is getting a automated confidence score on can I land this safely?

Speaker 1

所以,是的,我完全同意。

So, yeah, 100% agree.

Speaker 1

就像……

Like...

Speaker 1

但对我们来说,再次强调,我们并不是想减少在代码审查上花费的时间。

But for us, again, this is not that we're intending to spend less time doing code reviews than we did before.

Speaker 1

而是希望把花在代码审查上的时间集中在设计模式上,而不是琐碎的bug上;集中在更复杂的PR上,而不是简单的PR上。

It's to focus the time that we're spending doing code reviews on the design patterns and not on trivial bugs and on the more complex PRs and not on the more simple PRs.

Speaker 1

如果我只是在调整一个配置项,大多数时候这没什么大不了的,但有时候它确实有可能导致生产环境崩溃。

If I'm twiddling a single config knob, most of the time that's not a big deal except for some of the time it actually has the potential to bring down production.

Speaker 1

所以我觉得这就是那种权衡取舍。

Like, so I think that's that's kind of that that trade off there.

Speaker 1

当然,人类可以完全选择退出自动代码审查,说嘿,这个需要特别小心。

Like, eye human can of course opt out of automatic code review entirely and say, hey, this requires special caution.

Speaker 1

说实话,大多数开发者都很认真负责,至少在高度自主的组织里是这样。

Honestly, most developers are very conscientious, at least in a high autonomy org.

Speaker 1

我们不想在生产环境造成故障。

We don't want to cause outages in production.

Speaker 1

从定义上来说,故障发生是因为出现了意外情况,是我们没预料到的,原本以为是个简单的改动,结果却不是。

By definition, outages happen when something happens that was unexpected, that we didn't foresee, that we thought it was going to be a simple change and was not.

Speaker 1

有了这些额外的保障措施,不管是让语言模型来审查,还是让 Jev 来做一次 sanity check,看看这改动合不合理、能不能直接上线。

Having these additional guardrails, whether it be a language model doing a review or it being Jev doing a, you know, sanity check of does this make sense or not to to immediately land.

Speaker 1

我觉得这些才是我们需要采取的措施,这样才能真正突破两倍的效率瓶颈。

Like, think those are the levers that we need to do to really go beyond beyond two x.

Speaker 1

因为我们已经触到了天花板……

Because we've hit the seat...

Speaker 1

说实话,我们已经达到了能构思和审查代码的上限。

Candidly, we have hit the ceiling of how much code we can conceive of and review.

Speaker 0

这挺有意思的,因为每当触及上限时,我们往往会在意想不到的情况下突破它……

And this is interesting because whenever we hit the ceiling, we always tend to go beyond it when...

Speaker 0

以一种我们完全没预料到的方式。

In in a way we kinda, like, least expect.

Speaker 0

不过,仅仅三个月就有30到70个拉取请求,这个增幅很大,对开发者来说要掌控这么多内容,确实不少,对吧?

But, you know, 30 to 70 pull requests in just three months, that's a that's a big jump and a lot for developers to be in control of, let's say?

Speaker 1

是的。

Yes.

Speaker 1

而且我们一开始确实看到,与之相关的故障数量增长是低于预期的,对吧?

And we definitely initially, it looked like we were seeing a sublinear increase in outages correlated with it, right?

Speaker 1

比如我们的变更失败率一开始似乎是在下降的。

Like our change failure rate appeared initially to be going down.

Speaker 1

但后来长期来看,它平均下来其实差不多,你知道,我们提交的拉取请求数量翻了一倍,而故障数量增加了1.5倍。

Then it turned out over the long term it averaged out so that you know, we were shipping twice as many pull requests, and we are seeing, you know, 1.5 times as many incidents.

Speaker 1

而且你能让一个人处理多少故障是有限度的。

And there is a limit to how many incidents you can ask a human to work.

Speaker 1

所以,

Like, so

Speaker 0

对。

Yes.

Speaker 1

所以,我们得开始考虑怎么降低其他方面的风险……

Like, we we have to start looking at how do we derisk the other thing...

Speaker 1

就是这些其他的事情。

These other things.

Speaker 0

那你觉得,经过审查和真正被理解之间,界限在哪里?

So where's the line, would you say, between something that's been reviewed and something that's been understood?

Speaker 0

因为几乎就像,我提交一个500行的拉取请求和一个10行的拉取请求,其中一个肯定会比另一个受到更多的仔细审查。

Because it's almost like, you know, when I deliver a 500 line pull request versus a, you know, 10 line pull request, one will definitely be scrutinized more than the other.

Speaker 0

同样,如果我给你500个拉取请求而不是一个,那会有很多请求可能因为人类关注度降低而直接通过。

In the same way, if I was to provide you with 500 pull requests versus one, there are gonna be many more that just, you know, go through with maybe, you know, reduced visibility from the human.

Speaker 0

我们怎么确保作为人类,我们不会变得很随意,只是把拉取请求推过去,而实际上并不理解发生了什么?

How do we how do we make sure that as humans, we don't just become very blase and just, you know, push pull requests along and actually understand what happens?

Speaker 0

这是不是又是那个杰文斯的角度?

Is this, again, another maybe it is the Jev the Jev angle

Speaker 1

代码审查是不是讨论这个问题的合适地方?

and the code review the right place to be having that discussion.

Speaker 1

通常,我发现,在项目和工单层面讨论这个问题,比在拉取请求层面讨论更好。

Often, find that that is a better place to be talking about it at the project and at the ticket level than at the pull request level.

Speaker 1

到了那个时候……

By the times...

Speaker 1

尤其是当生成代码的成本很低,你可以轻松生成五遍的时候,对吧?我们为什么还那么执着于具体某段代码的实现方式,而不是更关注整体的设计模式呢?

Especially if generating the code is cheap and you could do it five times over, right, why are we that attached to the way the specific code works and not to the broader design pattern?

Speaker 1

我们应该对齐的重点应该是方向对不对,而不是这段实现是否分毫不差。

Like, that's the thing that we should be aligning on is is the direction correct and not, you know, is this implementation exactly correct?

Speaker 1

比如,语言模型可以帮你理解每一行代码的具体作用。

Like, language model can help you understand what the individual lines of code do.

Speaker 1

不过,更宏观的模式是需要我们把它记在脑子里的。作为监督这些系统的人类,我们必须对它在宏观层面应该如何运作有一个清晰、一致的整体认知。

Like, but the broader pattern, that's something that you have to hold in your head and that we as humans that are supervising these systems need to have a consistent picture of how is this supposed to behave at the macro level.

Speaker 0

那咱们再往前推进一步。

Let's then take it one step further.

Speaker 0

假设系统出现了故障或者宕机,我们显然得去排查问题。这就需要采集遥测数据,并且具备可观测性。

Let's say, you know, there's an outage or some system fault, we obviously need to have a look at what we need telemetry data, and we need observability.

Speaker 0

你在这里把遥测数据和可观测性做了非常明确的区分。

Now, you draw quite a hard distinction here between what telemetry is and what observability is.

Speaker 0

确实,数据跟真正理解系统是两回事。

Really, data versus the ability to truly understand the system.

Speaker 1

怎么...

How does...

Speaker 1

数据跟理解,百分之百,每天都是这样。

Data versus understanding, 100% every day.

Speaker 0

那什么是...

Well, what is...

Speaker 0

如果代码不是人写的,那AI怎么改变我们对理解系统的定义呢?

How does AI change what understanding a system means if a human actually doesn't write that code?

Speaker 1

我觉得人不需要写代码,也不需要自己去查询。

I don't think the human has to write the code, and, also, I don't think the human has to do the the querying by themselves.

Speaker 1

但是,检查查询结果,这是人必须做的,这样才能真正内化并理解这次故障是怎么发生的,还有哪些类似的问题我们应该关注,以及怎么防止这种故障再次发生。

However, examining the outputs of the queries, that's something that a human has to do to really kind of internalize and understand how did this outage happen, what are the other things that we should be looking at that are similar, how do we prevent this outage from happening again.

Speaker 1

我觉得有遥测数据,并且能让人类和AI都能查询和理解,这对建立反馈循环很有帮助。

Think having telemetry data, having it queryable and legible both to the humans and AI is helpful for then kind of establishing that feedback loop.

Speaker 1

而且我觉得不只是故障发生的那一刻。

And I don't think it's just at the moment of outage.

Speaker 1

我觉得在开发周期里也一样,对吧,你应该让语言模型通过查询开发环境来测试它们产生的遥测数据,对吧,确保如果我加了一个属性,那个属性是否存在?

I think also in your development cycle, right, you should be having your language models test the telemetry that they're producing by querying a dev environment, right, to make sure if if I added an attribute, is that attribute present?

Speaker 1

我能不能检测到某些东西积压了,对吧,如果某些东西开始排队了?

Do I have the ability to detect if something backlogs, right, if if something starts queuing?

Speaker 1

所以我觉得答案是肯定的,而且……

So I think I think the answer is yes and.

Speaker 1

我觉得,是的,我们必须有遥测数据。

I think, yes, we have to have telemetry.

Speaker 1

是的,我们必须有能力分析这些遥测数据。

Yes, we have to have the ability to analyze that telemetry.

Speaker 1

而且这不只是人类的工作,也不只是机器人的工作。

Also it's not just the human's job and it's not just the robot's job.

Speaker 1

把遥测数据转化为理解,是双方共同的责任。

It's a joint responsibility to turn the telemetry data into understanding.

Speaker 0

对。

Yes.

Speaker 0

而且我觉得,作为在SRE领域有丰富经验的人,你之前提到过你对人们应该如何在生产环境中使用Dart工厂的看法。

And and I guess as someone who has a lot of history in the world of SRE, you talked a little bit about how, you know, your opinion on how people should be using Dart factories in production.

Speaker 0

在事故处理中,我们应该在多大程度上信任AI来处理数据?

How much should we be trusting AI to do with data in an incident?

Speaker 0

如果能早上醒来,点一下按钮,然后说,好的,我看到AI代理已经识别出了问题,那该多好啊。

It would be lovely to think that we can wake up in the morning and and kinda, you know, click a button to say, yes, I can see the AI agents have identified the problem.

Speaker 0

它们已经完成了所有的后台根因分析。

They've done all the the background root cause analysis.

Speaker 0

它们已经提出了问题……

They've suggested the issue...

Speaker 0

抱歉,它们已经提出了解决方案。

Sorry, they've suggested a solution.

Speaker 0

它们已经审查过了。

They've reviewed it.

Speaker 0

我只需要自己审核一下,然后把它推上去。

I just need to review it myself and push that through.

Speaker 0

我们现在离这个目标有多近?

How how close are we to that today?

Speaker 0

你觉得有没有可能……

And do you see a world to...

Speaker 1

还是那句话,这取决于你过去十年有没有好好落实那些实践。

Again, depends on how well you are implementing the practices of the last ten years.

Speaker 0

对。

Yes.

Speaker 1

我们做功能开关已经有十到十五年了,具体看你怎么算Netflix早期的那些东西。

We have had feature flagging for ten or fifteen years, depends on how, you know, you count Netflix's early stuff.

Speaker 1

功能开关我们用了十五年了。

We've had feature flags for 15 for fifteen years.

Speaker 1

如果你功能开关用得好,那确实,一个能访问MCP的机器人就能识别出哪个功能开关能解决你的问题,并且能修复……

If you were implementing feature flags well, then, yes, a robot with access to MCP can identify which feature flag, will solve your problem and can fix...

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

可以切换功能开关,遥测数据会同时记录下来,既供实时诊断的机器人使用,也供第二天早上你手里端着咖啡或健怡可乐时查看。

Can flip the feature flag, and the telemetry will be recorded both for the robot who's diagnosing in real time and for you with a cup of coffee or a Diet Coke in your hand the the next morning.

Speaker 1

如果你记录了这些遥测数据,并且具备可控性,记住可观测性、可控性和控制理论是相辅相成的。

If you have that telemetry data recorded and if you have the controllability, remember observability and controllability and control theory are duals.

Speaker 1

如果你同时具备可观测性和可控性,你就不必在凌晨两点被叫醒,因为你可以直接解决问题,甚至不需要完全理解问题所在,对吧,然后事后通过飞行记录器之类的工具来检查发生了什么。

If you have both observability and controllability, you do have the ability to not have to wake up at 2AM because you can actually go ahead and fix the problem without necessarily even fully understanding it, right, and then to be able to examine what happened after the fact with the kind of flight recorder or whatever it is.

Speaker 1

所以我认为,只要你有自动回滚、功能开关和可观测性这些机制,我们离目标就很近了。

So I I think we're pretty close if and only if you have working automatic rollbacks, working feature flags, working observability.

Speaker 1

如果没有这些,你的智能体就像在瞎猜,乱扔飞镖,可能造成的混乱比解决的问题还多。

If you don't have those things, your agents are just guessing and throwing darts at the dartboard, and they might cause more chaos than they actually solve.

Speaker 1

所以这很大程度上取决于你的生产成熟度实践。

So it depends very heavily on your production maturity practices.

Speaker 0

而且这不仅仅是信任AI的问题,而是信任AI运行所在的整个系统。

And it's not so much your trust in the AI, it's your trust in the system with which the AI environment is running in.

Speaker 1

完全正确。

Exactly.

Speaker 1

我们的工作就是确保机器人手里的工具是安全的。

Like, our job is to make it so that the tools that the robots have are safe.

Speaker 1

我们让AI自己判断能不能杀掉这些pod,我觉得让AI代理在生产环境里随意杀掉pod是非常危险的事情。

We're having AI exercise its judgment about whether it's okay to kill these pots, I think that that is a very dangerous thing to give your AI agents the ability to kill random pods in production.

Speaker 1

我们应该给它们提供中止发布、回滚发布的工具。

We should be giving them tools to abort rollouts, to revert rollouts.

Speaker 1

所以我觉得你必须确保这些工具始终是安全的,对。

Like, so I think you kind of have to make sure that the tools are always safe to use Yes.

Speaker 1

而且机器人……

And that the robots...

Speaker 1

与其信任机器人来决定是否调用它们,不如这样。

Like, rather than trusting the robots to decide whether or not to call them.

Speaker 0

结构化的功能,它们可以使用的结构化功能。

Structured structured functionality that they can that they can use.

Speaker 0

然后让……

And let...

Speaker 0

我们来聊聊

Let's talk about

Speaker 1

我们来聊聊,而且那是……

let's talk And and that's...

Speaker 1

说实话,这其实也适用于你团队里最资深的开发人员。

Like, to be fair, this is also true about your most junior developer on your team.

Speaker 1

对。

Yes.

Speaker 1

你知道,如果你能让初级开发人员安全地操作,不会意外导致生产环境出问题,那我觉得这对你的机器人也同样适用。

Like, you you know, if you're making it safe for your junior developers that they cannot accidentally cause production outages, right, like, I think that that's great for your for your robots too.

Speaker 0

大家好。

Hey, everyone.

Speaker 0

希望你们到目前为止喜欢这期节目。

Hope you're enjoying the episode so far.

Speaker 0

我们的团队在幕后非常努力,为你们带来最好的嘉宾,这样我们就能进行关于智能体开发的最有见地的对话,无论是讨论最新的工具、最高效的工作流程,还是定义最佳实践。

Our team is working really hard behind the scenes to bring you the best guests so we can have the most informative conversations about agentic development, whether that's talking about the latest tools, the most efficient workflows, or defining best practices.

Speaker 0

但不知为何,很多人还没有订阅我们的频道。

But for whatever reason, many of you have yet to subscribe to the channel.

Speaker 0

如果你喜欢这个播客,希望我们继续带来最好的内容,请帮个忙,点一下订阅按钮。

If you're enjoying the podcast and want us to continue to bring you the very best content, please do us a favor and hit that subscribe button.

Speaker 0

这真的很有帮助,能让我们继续提升嘉宾的质量,为你打造更好的产品。

It really does make a difference and lets us continue to improve the quality of our guests and build an even better product for you.

Speaker 0

好了。

Alright.

Speaker 0

我们回到节目正题。

Back to the episode.

Speaker 0

我们来聊聊……

Let's talk about...

Speaker 0

我们继续沿着信任和安全这个话题往下聊。

Let's continue this path down trust and safeguarding.

Speaker 0

你提到需要像Claude MD规则这样的东西,嗯……

You you described needing things like Claude MD rules, m m...

Speaker 0

通过MCP访问、最小权限系统,所有这些都有助于安全保障。

MCP mediated access, least privilege systems, all all all these things which help this safeguarding.

Speaker 0

你觉得,就你看到的,有没有什么特别好的建议,是大多数团队其实没想到的,或者说是很好的实践,比如最小权限。

What what, in your opinion, have you seen that kinda would be a a really good piece of advice that most teams actually don't think about or or, you know, it's it's great practice, like least least privilege.

Speaker 0

这是我们已经知道很多年、几十年的东西了。

This is something that we've known for many, many years, decades.

Speaker 0

你觉得团队现在有哪些事情是绝对不能忽视的,必须避免的?

What what are the things that teams can do today that is just completely nonnegotiable to to to avoid?

Speaker 1

我觉得起点真的是封闭式的CI/CD,就是要有快速且可复现的CI/CD。

I I think the starting point is really hermetic CINCD, like to have fast and reproducible CINCD.

Speaker 1

我觉得这是一切的基础。

I think that's the foundation of everything.

Speaker 1

我觉得……

I think the...

Speaker 1

你提到的最小权限很好。

Your mention of least privilege is great.

Speaker 1

其实我发现,Claude 在处理亚马逊配置文件时,如果同时提供了只读和读写两种配置,它默认会使用只读配置。

Actually, I discovered that on on its own, actually, Claude has started when working with Amazon profiles to default to using read only profiles if it's provided the option to have both a read only and read write profile.

Speaker 1

即使读写配置在技术上可用,它也会为了安全起见只用只读配置,我觉得这是一个很好的安全实践。

Even if the read write profile is technically available, it will still use read only just to be safe, which I think is a great safety practice.

Speaker 1

而且你还可以强制规定,嘿。

And you can also enforce that to enforce, hey.

Speaker 1

使用只读配置的命令会自动...

Commands that use the read only profile are auto...

Speaker 1

自动被批准。

Are automatically approved.

Speaker 1

使用读写配置的命令必须经过人工审批。

Commands that use the read write profile must use human approval.

Speaker 1

比如...

Like...

Speaker 1

所以我觉得,从纵深防御的角度来看,这些都是非常非常好的做法。

So I I think for, like, layers, defense, and depth, I think that those are all really, really great things.

Speaker 0

那,你觉得我们现在有没有什么方面是过度信任的?

And and is there, you know, anything you think we are overtrusting these days in terms of...

Speaker 0

有没有哪些默认设置是我们应该尽量避免的?

Are there default settings that we should absolutely try and avoid?

Speaker 1

我觉得我们意识到的主要问题是,让人类一直点“是”是行不通的。

I think the main thing that we are realizing does not scale is having humans click yes.

Speaker 1

我觉得在注意力有限的情况下,分类器比人类做得更好。

I think that classifiers do a much better job than humans when attention is scarce.

Speaker 1

而且,你需要积累一定次数的点“是”的经验,才会开始信任自动模式;你也需要看到自动代码审查多次发现你自己没发现的问题,才会开始信任它。

And I think that, you know, you do have to develop a certain number of repetitions of hitting yes before you start trusting auto mode, and you have to have a certain number of repetitions of, you know, seeing automatic code review catch issues that you wouldn't personally have caught before you start caught trusting automatic code review.

Speaker 1

但最终你会意识到,是的,我可以信任自动控制,但我还是会保持警惕。

But I think eventually you do realize, yes, I can trust the automated steering, but I'm still going to keep my eyes on the road.

Speaker 1

对。

Like Yeah.

Speaker 1

但这和紧紧握住方向盘是完全不同的。

But that's very different than, you know, gripping the steering wheel tightly.

Speaker 1

就像……

Like...

Speaker 1

我觉得我们人类天生就有一种微观管理的倾向。

So think we have a tendency as human beings to micromanage.

Speaker 1

我们倾向于认为我们总是比机器人做得更好,而我认为这正是错误所在。

We have a tendency to assume that we will always do a better job than the robots, and I think that that is the mistake.

Speaker 1

我认为错误在于过度相信自己在时间压力和压力下做决定的能力,而在这种情况下,一个永不疲倦的机器人会比你做得更好。

I think the mistake is overtrusting your ability to make decisions under time pressure and stress, And I think that that's a situation where a robot that never gets tired will do a better job than you.

Speaker 0

当然,如果出了问题,那是机器人的错,还是操作员的错呢?

And, of course, if something does go wrong, is it the is it the robot's fault, or is it the operator's fault?

Speaker 0

现在,Honeycomb 的 AI 价值观说,如果你的名字在上面,你就拥有它。

Now, Honeycomb's AI values state if your name's on it, you own it.

Speaker 0

那么,请给我们讲讲这个原则到底延伸到什么程度。

So tell tell us a little bit about how far that extends.

Speaker 1

我觉得这不是关于责任的问题。

I don't think it's about fault.

Speaker 1

我觉得关键在于谁负责收拾残局,以及怎么加固系统,防止类似问题再次发生。

I think it's about whose responsibility is to clean up and to think about how do we harden the system so this doesn't happen again.

Speaker 1

如果讨论的是某种故障泄露到生产环境,那么首先,理想情况下,出问题不应该导致整个生产系统瘫痪。

You know, if we're talking about, you know, some kind of failure that leaks out to production, well, number one, ideally, something going wrong should not bring down all of production.

Speaker 1

我们应该专注于缩小故障的影响范围,而不是试图完全避免故障发生。

We should focus on making the failures smaller in blast radius rather than rather than trying to prevent them from happening entirely.

Speaker 1

然后关于责任问题,对吧,关键是要说,不是机器人干的。

And then I think in terms of the accountability, right, like, main thing is to is to say, right, like, you know, not, you know, the robot did it.

Speaker 1

这不是我的错。

You know, it's not my fault.

Speaker 1

是机器人干的。

The robot did it.

Speaker 1

说‘是Claude干的’并不是一个真正好的借口。

You know, Claude did it is not a really great excuse.

Speaker 1

相反,你得审视一下,然后说,好吧。

Like, instead, you have to examine and say, okay.

Speaker 1

我有哪些结构性偏见,导致我过度相信这个输出?

What are my structural biases that caused me to to overtrust in this output?

Speaker 1

所以,实际上,就在上周就有一个例子。我在分析我们正在推出的一个变更,我试图按分片或分区ID来做AB测试分析。

So, actually, there's a example this this past week where I I was doing some analysis of a change that we were rolling out and I was trying to do the analysis AB tested by which shard or which partition ID.

Speaker 1

但不知为何,我的AI助手没有找到分区ID的遥测字段,然后它编造了一个说法,说我们需要为分区ID构建一个新的遥测字段。

And for some reason, my AI assistant did not find the telemetry field for partition ID, and then it's confabulated this thing about how we need to construct a new telemetry field for partition ID.

Speaker 1

我本该重新运行查询,直接输入分区ID,看看它是不是自动就出来了。

I should have rerun the query and actually typed partition ID to see whether it automatically dropped out.

Speaker 1

当AI助手断言没有分区ID字段时,我不应该那么信任它。

I shouldn't have trusted the AI assistant when it likely asserted there was no partition ID field.

Speaker 1

但话说回来,我的责任在于,我告诉它,好吧。

But then also, my accountability, I told it, okay.

Speaker 1

如果你缺少分区ID字段,那我们就得去创建一个拉取请求,把分区ID字段加上。

If you're missing the partition ID field, then we need to go and create a pool request to add the add the partition ID field.

Speaker 1

其实字段一直都在。

The field was there all along.

Speaker 1

所以我就浪费了一些令牌。

Like, you know, so I wasted some tokens.

Speaker 1

我浪费了一位首席工程师五分钟的时间去审查那个本来会添加重复分区ID字段的拉取请求。

I wasted five minutes of a principal engineer's time to review the pool request that would have added a duplicate partition ID field.

Speaker 1

你可以怪Claude,也可以说,对,我本应该对这个输出更持怀疑态度。

Like, you know, where, you know, you could you could say, you know, blame Claude, or you could say, right, like, you know, I should have been more skeptical about this output.

Speaker 1

我们肯定应该有分区ID啊。

Like, you know, surely we should have had partition ID.

Speaker 1

我本应该知道我们……

I should have known that we...

Speaker 1

当然,我们里面已经有分区ID了。

Of course, we had partition ID in there.

Speaker 1

我是不是应该先自己跑一下查询,再相信那个说没有分区ID字段的机器人?

Like, should I have run the query by myself before I trusted this, you know, robot that said, you know, there's no partition ID field.

Speaker 1

比如,我们需要……

Like, we need to...

Speaker 1

我们需要一个。

We, you know, we need we need one.

Speaker 1

我当时就想,对。

And I was like, right.

Speaker 1

就是……

Like...

Speaker 1

但我签字同意了。

But I signed off on it.

Speaker 1

这是我的责任。

Like, that's that's my responsibility.

Speaker 1

所以我觉得,这就是我们说的……

So I I think that's that's what we mean when we take about...

Speaker 1

说到承担责任。

Talk about taking ownership.

Speaker 1

我觉得除了代码之外,还有很多更琐碎的事情。

I think there are more mundane things beyond beyond code.

Speaker 1

比如,别一股脑儿把那种十页长的 Claude 生成内容甩给别人。

Like, for instance, don't send someone a slop bomb of, you know, this is, you know, a 10 page a 10 page Claude artifact.

Speaker 1

我觉得这点其实挺显而易见的:既然署了你的名,你就得为它负责,而且你花在审阅和创作上的时间,最好跟读者阅读它所需的时间差不多。

Like, I I I think that that's, you know, a little bit more more self explanatory of if your name is assigned to it, you should you should stand behind it, and you should ideally have spent as much time reading over and producing it as the reader is going to take to read it.

Speaker 1

但我觉得更有趣的是,就像我们刚才讨论的,当你发出的代码因为各种原因出错时,该怎么办?

But I think the more interesting thing is, as we're talking about here, what happens when code that you ship is wrong for whatever reason?

Speaker 1

我们要怎么把经验教训封装起来,好让 Claude 别再一而再、再而三地犯同样的错?

How are we encapsulating the learning so that Claude doesn't make the mistake over and over and over again?

Speaker 1

就像,是我们人类得想办法怎么更有效地利用这些工具。

Like, it's it's us humans that have to figure out how do we more effectively use these tools.

Speaker 0

随着AI实践的发展,比如说是比模型本身更成熟,我们会进入这样一个阶段:AI能够独立完成构建、测试、审查和部署变更的工作,哪怕只是小改动,或者不复杂的任务,甚至是非关键系统。

And as AI practices, let's say, rather than models, more developed, so that we will get to a stage where, you know, AI can fully build, test, review, and and and deploy changes, potentially small, potentially non complex, and and and maybe noncritical systems.

Speaker 0

那到了哪个阶段,一个完全没参与过这些工作的人……

At what stage would a human who hasn't done...

Speaker 0

完全没有介入过任何环节的人……

Hasn't been involved in any of that...

Speaker 0

在什么阶段,人类会拥有那个东西?

At what stage would a human own that?

Speaker 0

如果说……这样说是否公平?

Would it would it not be fair to say if that...

Speaker 0

到那时,假设是Claude的名字在上面,或者Codex的名字在上面,那它就应该负责。

At that point, Claude's name's on it, let's say, or codex name's on that, it should own it.

Speaker 0

我们基本上会说,我们接受这些里面有一小部分会是错的,但实际上是机器人……

And we essentially say, we are happy that a a very small percentage of these will be wrong, but it's the bot that effect...

Speaker 0

实际上负责把那个交付推进到生产环境。

Effectively owns that delivery through to production.

Speaker 1

我觉得到那时,是创建工作流文件的人类团队在引导那个循环,他们负责那个循环的质量控制和检查,以及调整它,确保它尽可能达到预期的效果。

I think at that point, it's the human team that creates the workflow files that guide that loop that are responsible for the quality control and checking of that loop and the tuning of it to make sure that it is more as effective as it's supposed to be.

Speaker 1

你在新闻里看到的,并不是真正完全自动化的递归自我改进。

What you might be seeing in the news, there is not actually fully automated recursive self improvement.

Speaker 1

总是有一定程度的人类指导参与其中。

Like, there is always some degree of human guidance involved.

Speaker 1

所以即使机器人能提出工单、解决工单、把它们推到生产环境,并在生产环境中调试,仍然有一个人负责那个系统的提示词。

So even if robots are coming up with tickets and solving the tickets and pushing them to production and debugging them in production, There is still a person that owns the system prompt for that.

Speaker 1

仍然有一个人在为那个系统的配额付费。

There is still the person who is paying for the quota for that.

Speaker 1

仍然有一个人期待从那个系统得到结果。

There is still the person that expects results from that.

Speaker 1

而我认为,责任就在于时不时去抽查一些拉取请求,做评估,调整系统提示词。

And I think that that is where ownership lies is to go and spot check some of those pull requests every now and then to do evals, to tune the system prompt.

Speaker 1

我觉得我们还没有到可以完全放手不管的地步。

Like, I don't think that we are at a point yet where we can say we're just going to go, you know, fully hands off.

Speaker 1

当然。

Sure.

Speaker 1

如果你真的想完全放手,那就把你的支票簿给我吧。

If you're down to go fully hands off, hand me your checkbook, please.

Speaker 1

我会收下你的支票簿的。

I I will I will take your checkbook.

Speaker 1

就是说……

Like...

Speaker 1

但只要还是人类在付钱,人类就有权检查结果。

But as long as humans are paying for it, humans have the right to inspect the results.

Speaker 1

我觉得归根结底就是这样。

I think that's what it boils down to.

Speaker 1

就是说,还是有一个流程负责人。

Like, is there is still a process owner

Speaker 1

而这个流程负责人要对结果负责。

And that process owner is accountable for the results.

Speaker 0

对。

No.

Speaker 0

说得好。

Nicely said.

Speaker 0

今天是9月22号,我们在录什么呢,Liz?

It's it's what are we recording on the September 22 today, Liz.

Speaker 0

所以我们在这里稍微透露了一点幕后情况。

So we're kind of giving away a little bit about the behind the scenes here.

Speaker 0

但在10月22日,Hacktoberfest就要到了。

But on the October 22, Hacktoberfest is right around the corner.

Speaker 0

当然,过去几年里,总有一些问题,比如有人提交了质量很差的拉取请求,而且是大批量创建的,这让维护者很烦。

Now, of course, in years gone by, there have always been some problems where you get, you know, bad human pull requests, which have been raised and and mass created, which have annoyed maintainers.

Speaker 0

现在,今天的问题,当然,你知道,通过采用选择加入式的Hacktoberfest,这个问题基本上已经解决了。

Now, today's problem, of course, know, that that was largely fixed by having an opt in style of Hacktoberfest.

Speaker 0

但今天,即使你选择加入,可能更让人担心的是,有人会突然提交一些AI生成的垃圾拉取请求。

But today, even if you opt in, probably a bigger worry is someone's just gonna come up and provide some AI slop pull request.

Speaker 0

之前我们稍微提到过一点,你正在考虑是否要完全排除外部对开源项目的贡献,因为那些大量涌入的拉取请求质量很差。

Now one of the things that was kinda partly mentioned previously is that you were considering eliminating external contributions to open source projects because of the kind of floods of pull requests that were very slop oriented.

Speaker 0

你在这方面做出决定了吗?或者最近有没有相关的经验?

Have you made a decision in and around that or any experiences recently in and around that space?

Speaker 1

我确实认为,出于安全原因,以及代码风格和可维护性等多方面的原因,维护者绝对应该继续接受错误报告。

So I do think that for security reasons and a variety of reasons related to code style and maintainability, I think that maintainers definitely should continue accepting bug reports.

Speaker 1

维护者是否接受拉取请求,这完全取决于他们的判断,因为事实证明,只要有一个详细的错误报告,你就可以让你的智能体按照你喜欢的风格来写修复方案。

Whether maintainers accept pull requests is up to their discretion because it turns out with a well equipped bug report, you can have your agent write a fix for it in your preferred style.

Speaker 1

那为什么还要去信任别人的智能体呢?检查别人的工作可能和自己做一样费劲。

So why should you trust someone else's agent where it might be just as much work to check the work over as if you had done it yourself?

Speaker 1

所以我觉得我首先想到的是,错误报告总是有价值的,只要它们格式良好,明确说明我预期发生什么、实际发生了什么、我认为问题可能出在哪里,但不一定非要提出修复方案,把决定权留给维护者。

So I think that's kind of my first thought is bug reports always, always valuable as long as they're well formatted that say exactly this is what I expected to happen, this is what actually happened, this is where I think the problem might be, but not necessarily proposing a fix and leaving up to the maintainer's discretion.

Speaker 1

我觉得另一件事是,我们不能降低标准。

I think the other thing is not relaxing our standards.

Speaker 1

我们不应该对AI创建的拉取请求比人类创建的拉取请求有更低的标准。

We should not have lower standards for AI created pull requests than human created pull requests.

Speaker 1

另外,我也看到在学术界、开源界和商业界都有一些努力,要求人们在提交之前先完成一个关于他们提交内容的测验。

Also I've seen efforts both in the academic space as well as in the open source and commercial space to actually require someone to complete a quiz about the work they've submitted before they actually get get a chance to submit it.

Speaker 1

所以,如果你连关于你提交的拉取请求的基本问题都答不上来,那你可能就不应该提交它,因为你根本不知道自己在做什么。

So if you cannot answer basic questions about the pull request that you've that you've submitted, you probably shouldn't be submitting it because you have no idea what's going on.

Speaker 0

那个“我不是机器人”按钮,我猜,就是针对拉取请求的,对吧。

The the I am not a robot button, I suppose, for a pull Right.

Speaker 1

就像那个“我不是机器人”的按钮,其实……

Like, the the the I am not a robot button where actually...

Speaker 1

这就是有意思的地方。

Like, this is the funny thing.

Speaker 1

你在用垃圾对付垃圾。

You're using slop to fight slop.

Speaker 1

你可以让一个代理拿这个拉取请求,然后生成一个测验。

Like, you can have an agent take the pull request and create a quiz about it.

Speaker 1

你必须通过测验才能提交。

You must pass before you can have it submitted.

Speaker 1

而且我觉得,是的,就像你说的,可以用AI来分类处理。

Like And I think, yes, as you say, can triage them with AI.

Speaker 1

还有一个非常有趣的事情……

Also a very interesting thing...

Speaker 1

我妻子在谷歌Chrome安全团队工作,他们现在开始要求,如果你想快速处理你的安全漏洞报告,你必须提供一个可复现的示例。

So my wife works on Google Chrome security, and one of the things that they're starting to do is they're starting to require that in order to get fast tracked for your security exploit bug, you must provide a working reproducer.

Speaker 1

你必须提供能证明你让Chrome进程崩溃的证据。

You must provide something that provides evidence that you crash a Chrome process.

Speaker 1

没有崩溃,就不处理。

No crasher, no no triage.

Speaker 1

因为不然的话,你就得处理所有这些垃圾报告。

Like, because otherwise, you would have to deal with all of these slop reports.

Speaker 1

但如果你有真正能让浏览器崩溃的东西,那显然说明你发现了真正的问题,我们应该投入资源去调试它。

But if you have something that genuinely crashes the browser, right, like, that is clearly a sign that you are on to something real and we should go and invest resources in debugging it.

Speaker 1

所以……

So so...

Speaker 1

我觉得对开源贡献可以应用一些启发式规则。

Like, I think there are heuristics that you can apply to open source contributions.

Speaker 1

而且,林纳斯·托瓦兹也公开表示支持使用AI。

And, you know, right, like Linus Torvalds came out in favor of using AI.

Speaker 1

林纳斯·托瓦兹说,他认为AI代理能发挥重要作用。

Like Linus Torvalds said, you know, I think that AI agents have a valuable role to play.

Speaker 1

就在上周,我有一台开发机,是一台ARM 64架构的机器,硬件配置比较特殊,咱们这么说吧。

And literally this past week, I have a dev box, that's a ARM 64 box that has an unconventional hardware configuration, let's...

Speaker 1

这么说吧。

Let us say.

Speaker 1

那台开发机有个bug,导致它无法在Linux 6.19及更新版本上启动。

And that, dev box has a bug that prevents it from booting on Linux six nineteen and newer.

Speaker 1

在Claude Fable的帮助下,我居然真的搞清楚了那个bug是什么,也找到了一个有效的补丁。

And I was able to, with with Claude Fable's help, actually figure out what the bug was, figure out what a what a working patch for for it was.

Speaker 1

那个补丁只有六行代码。

And the patch was only six lines.

Speaker 1

其实这个补丁并不复杂,但我是第一个遇到这个问题的人,它解决了一类硬件设备的普遍问题。

Like, it's really not that complex of a patch, but I was the first one to run into this situation and it solved a general problem for, like, a variety of classes of hardware.

Speaker 1

我把它提交到了上游,它通过了Linux常规的审核流程。

I submitted it upstream and it went through the normal Linux vetting processes.

Speaker 1

虽然花了两个多月才被合并,但最终还是合并了。

It took over two months to land, but it did eventually land.

Speaker 1

我觉得这正说明事情在按预期发展,对吧?

Like, I think that's a sign that things are working as intended, right?

Speaker 1

也就是说,一个真正的小补丁,只要足够小、容易审查,理由充分,不管是不是人写的,都能被接受。

Like that a genuine patch that is small enough to review, that has good enough justifications can land regardless of whether it's by, you know, by humans or not.

Speaker 0

不过,如果我们把开源贡献只限制在修bug上,而不是那些更大、更有方向性的改动,比如完整的新功能,那这对开源意味着什么?

If we if we're restricting open source contributions to bugs only, though, versus, you know, the the the larger, more directional changes that we might with with, full features, what what does that mean for open

Speaker 1

开源?

source?

Speaker 1

非维护者不应该在没有先和维护者讨论的情况下,就提出大的方向性改动。

Non maintainers should not be suggesting large directional changes without discussion with the maintainers first.

Speaker 1

这正是那些垃圾补丁的来源。

Like, that is the source of the slop bombs.

Speaker 1

你能做某事,并不意味着你就应该给别人发一个一万行的拉取请求。

Just because you can do something and send someone a 10,000 line pull request does not mean you should.

Speaker 1

先和人沟通,获得批准,然后在那之后,如果你的计划得到了认可,你就可以像内部受信任的维护者一样行事了。

Talk to humans first and get approval, and then, you know, at that point, you're proceeding as if you were a trusted maintainer on the inside if you've gotten signed off on your plan.

Speaker 0

所以路径就是先提问题,然后进行长时间的讨论,或者如果问题很明显的话,就和维护者进行简短的讨论。

So so the path is issue first, long discussions, or if it's obvious, short discussions with the maintainers.

Speaker 0

从那时起,通过那次讨论,你大概已经积累了足够的信誉,可以提交一个拉取请求了。

And from that point, you probably have enough credibility just through that discussion to be able to share a pull request.

Speaker 1

对,因为维护者已经理解了你想要做的事情。

Right, because the maintainer is connexing what you're trying to do.

Speaker 0

太好了。

Excellent.

Speaker 0

太好了。

Excellent.

Speaker 0

那么,开源有光明的未来吗?

So so open source has a bright future?

Speaker 1

我认为它存在一些结构性问题。

I think that it has some structural problems.

Speaker 1

我觉得有一个问题是谁来为自动审查和分类所消耗的所有这些令牌买单。

I think there is that question of who is paying for all of those tokens for automatic review and triage.

Speaker 1

所以我觉得有个挑战是,当有一百万开发者都在为每月20美元、有大量补贴的OpenAI、Claude或Gemini订阅付费时。

So I think that there is the challenge of when you've got a million developers out there who are all paying for a heavily subsidized $20 a month open open AI or or Claude or Gemini subscription.

Speaker 1

比如,得防止这些人对开源项目的主要维护者进行拒绝服务攻击。

Like, have to prevent those people from denial of servicing your main open source maintainers.

Speaker 1

对于像Linux内核或Kubernetes这样的关键项目,对吧,Linux内核有一个叫Sashiko的自动审查机器人,而Sashiko完全由谷歌资助,对吧,这很棒。

And for critical projects like Linux kernel or Kubernetes, right, like the Linux kernel has a automatic review bot called Sashiko, and Sashiko is fully paid for by Google, right, like, which is great.

Speaker 1

所以我认为企业赞助有帮助,但那些商业关注较少的项目真的在苦苦挣扎。

So I think corporate sponsorship helps, but I think projects that receive less commercial love that are really, really struggling.

Speaker 1

当然,也有人努力去接触这些项目。

And, you know, certainly, there have been efforts to do outreach to them.

Speaker 1

比如,Anthropic有Glasswing项目,它让许多安全关键项目如cURL和OpenSSL能够使用Mythos。

For instance, Anthropic has project Glasswing, which gave access to mythos to a bunch of various security critical projects like cURL and OpenSSL.

Speaker 1

比如……

Like...

Speaker 1

但我认为更广泛的问题是,谁为这些令牌付费,以及我们如何确保开源维护者得到资源支持,不会精疲力尽。

But I I think there's kind of this broader problem of who pays for these tokens and how do we make sure that open source maintainers are resourced and they don't burn out.

Speaker 0

我觉得这就是

I think that's the

Speaker 1

这其实一直都是同样的问题,而且我

Which is the same problem that's always been before, and I

Speaker 0

我都能闻到那股味儿了。

just smell it with a magazine.

Speaker 0

确实是……

It is it is...

Speaker 0

我们还是在踩同样的坑,对吧,只不过速度更快了。

We're tripping over all the same problems, right, but at a at a faster rate.

Speaker 0

挺有意思的。

It's very interesting.

Speaker 1

而且现在高管们有钱往这上面砸了。

And, actually, you know, executives have money to spend on it now.

Speaker 1

这就是区别,对吧?

That is the difference, right?

Speaker 1

就像以前跟人说,你们应该实施可观测性,他们就会说,预算?什么预算?

Like as previously, you know, telling people, yes, you should implement observability, and they're like, budget, what budget?

Speaker 1

现在呢,就是说,你必须实施可观测性,否则你的AI项目就会失败。

Now it's like, you need to implement observability or else your AI effort will fail.

Speaker 1

太好了。

Great.

Speaker 1

给你钱。

Here's some money.

Speaker 0

我们……

Let's...

Speaker 0

我们还有几分钟。

You know, we're a few minutes left.

Speaker 0

这次聊得非常愉快。

It's been it's been a wonderful chat.

Speaker 0

真的很享受。

Really, really enjoyed it.

Speaker 0

但我想,我想最后用一个最简单的问题来结束,Liz,那就是聊聊未来五十年会发生什么。

But I wanna I wanna end always with the the easiest question, Liz, which is let's talk about what's gonna happen in the next fifty years.

Speaker 0

嗯,也许不是五十年,但五十年

Well, maybe not fifty, but fifty

Speaker 1

年,试试五十天吧。

years, try fifty days.

Speaker 0

对,没错。

Exactly, right.

Speaker 0

所以也许我们只聊两三年。

So maybe we talk about just two or three years.

Speaker 0

然后我们聊聊角色的变化,或者甚至是在组织里,围绕可观测性工程师这个角色需要发生的变化。

And let's talk about a role change, or maybe even a change that needs to happen in the org around an observability engineer.

Speaker 0

你觉得未来它还会是一个独立的角色,或者一个职位名称吗?

Do you feel that will still be a role, a standalone role, or a job title in future?

Speaker 0

还是你觉得这个领域需要并入现在已有的另一个角色?

Or do you think that discipline needs to merge into into another role that exists today?

Speaker 1

我们已经看到,站点可靠性工程、安全工程、可观测性工程,这些大体上都属于平台工程的范畴。

We've already seen that site reliability engineering, security engineering, observability engineering, these all broadly fall under the platform of of platform engineering as it were.

Speaker 1

因为它们都是跨职能的学科,需要各个开发团队的参与,而且它们确实有自己专门的技术。

Because they are all cross functional disciplines that require buy in of individual development teams and they do have their own specialized skill set.

Speaker 1

但总的来说,我们的工作是制定开发者所需的通用标准和工具,让他们能做好自己的工作。

But broadly speaking, our job is to produce the kind of common standards and tooling that developers need to do their jobs.

Speaker 1

我觉得向平台工程的大融合已经在进行中了。

I think the great merger into platform engineering is already well underway.

Speaker 1

刚才提到了安全工程、无障碍工程、测试工程,所有这些学科,你不可能让每个开发者都去思考这些事情,也不可能让他们成为每个领域的专家,但在某种程度上,开发者的职责是确保他们的代码符合我们组织的标准。

Mentioned security engineering, accessibility engineering, test engineering, all of these disciplines where you don't want each developer to have to think about each of these things and be an expert in each of these things, but it is to some extent those developers' job to ensure that their code conforms to our org standards.

Speaker 1

我觉得核心问题在于,可观测性工程不一定是要自己搭建可观测性平台。

I think that's basically the the the crux of it is observability engineering is not necessarily going to be about building out your own observability platform.

Speaker 1

市面上有供应商,或者如果你的规模足够大,当然,可能有一个可观测性工具团队之类的。

There are vendors out there, or if you're a sufficiently large scale, sure, there might be a observability tooling team or something.

Speaker 1

但我觉得面向开发者的推广工作,基本上是由整个平台工程来负责的,平台工程会雇佣来自不同专业背景的人,他们共同合作,把专业知识带给需要的团队。

But I think the outreach to developers piece, I think that that is something that broadly gets owned by all of platform engineering and that platform engineering employs people from a variety of different specialties who all collaborate to bring the expertise to the teams that need them.

Speaker 0

非常有意思。

Super interesting.

Speaker 0

而且我觉得,是的,甚至在我之前在Snyk工作的时候,这也是一个……

And I think, yeah, even back in my days at Snyk, this was a...

Speaker 0

即使在AI出现之前,越来越多的事情集中化处理也是有道理的,尤其是围绕安全最佳实践提供这些服务,我觉得这很有道理。

Even pre AI, it it made sense for more and more things to be centralized, particularly around security best practices providing those services, and I think it it makes sense

Speaker 1

对,是的。

for Yeah.

Speaker 1

没错。

Exactly.

Speaker 1

我觉得这完全对应得上。

I guess a perfect mapping.

Speaker 1

比如可观测性、测试,对吧,还有所有可靠性相关的东西。

Like, observability, testing, right, like, all all reliability.

Speaker 1

你不想让每个开发人员都成为服务级别目标方面的专家。

You you don't want each dev to have to be an expert in service level objectives.

Speaker 1

不过,你希望每个开发人员都有服务级别目标。

You want every dev to have service level objectives, though.

Speaker 0

太好了。

Amazing.

Speaker 0

Liz,我们聊了很多,但人们在哪里可以关注你和Honeycomb正在做的事情和讨论的内容呢?

Liz, where can we talked about it a lot, but where can people follow-up on some of the things that you and Honeycomb have been doing and talking about?

Speaker 1

我们确实维护着一个非常活跃的工程博客,所以如果你访问honeycomb.io/blog,你会看到不仅是我,还有我的同事Charity Majors、Christina以及Honeycomb工程团队的所有人写的文章。

We definitely maintain a very active engineering blog, so if you go to honeycomb.ioblog, you'll find writing by not just me, but also by my colleagues, Charity Majors, Christina, and all of Honeycomb Engineering.

Speaker 1

你也可以在互联网上几乎任何地方找到我,用户名是Liz the Grey。

And you can find me on the Internet basically everywhere as Liz the Grey.

Speaker 0

太好了。

Wonderful.

Speaker 0

Liz,和你聊天真的非常愉快,深入探讨各种话题也让我很开心。

Liz, it's been an absolute pleasure to chat and really and really enjoyed going deep in various topics.

Speaker 0

非常感谢你抽出时间,很高兴你能来参加AI原生开发者节目。

So thank you so so much for your time and it's been a pleasure having you on the AI native dev.

Speaker 1

谢谢。

Thank you.

Speaker 0

太好了。

Wonderful.

Speaker 0

希望我们所有的听众都和我一样喜欢这期节目。

And I hope all of our listeners out there enjoyed it just as much as I did.

Speaker 0

感谢收听,我们下期再见。

Thanks for tuning in, and see you on the next session.

Speaker 0

先拜拜啦。

Bye for now.

Speaker 0

《AI原生开发者》由Tessl赞助播出,Tessl是技能和上下文的包管理器。

The AI native dev is brought to you by Tessl, the package manager for skills and context.

Speaker 0

主持人是我,西蒙·梅普尔,还有盖伊·帕贾尼。

Your hosts are Guy Pajani and me, Simon Maple.

Speaker 0

我们的制作人是汤姆·道勒。

Our producer is Tom Dowler.

Speaker 0

《AI原生开发》不仅仅是一个播客。

The AI native dev is not just a podcast.

Speaker 0

它是一个社区,我们每月在伦敦市中心的特斯拉办公室举办线下聚会。

It's a community, and we host monthly meetups at the Tesla offices in Central London.

Speaker 0

访问tesla.io/community了解更多信息,希望能在那里见到你。

Visit tesla.io/community to learn more, and I hope to see you there.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客