[开场音乐]
Ryan Donovan:大家好,欢迎来到Stack Overflow播客,这是一个讨论所有软件和技术相关话题的地方。我是Ryan Donovan,今天的主持人,今天我们要讨论复杂性危机。我们将深入探讨什么是复杂性危机、可能的解决方案以及与今天嘉宾Nic Benders的讨论困惑点。Nic是New Relic的首席技术策略师。欢迎来到节目,Nic。
Nic Benders:谢谢Ryan。很高兴来到这里。
Ryan Donovan:在我们深入复杂性危机之前,你是如何进入软件和技术领域的?
Nic Benders:我经常和别人交谈,他们有着精彩曲折的职业生涯,涉及所有这些领域,而我的职业生涯就像一条直线。当我还是个孩子的时候,我有一台疯狂的TI个人电脑。它有24KB的大内存,我花了所有时间在那上面,直到我能买到越来越大、越来越大的电脑。在这个过程中,我发现管理系统本身就是一种乐趣。除了编写软件,我还上了计算机科学的大学。实际上,我职业生涯的大部分时间都是作为运维和系统架构师,只是运行大型服务器组,这有无尽的乐趣。然后,你知道,这很自然。你会遇到所有这些问题,然后说,“嗯,实际上没有什么东西能做到它应该做的事。“所以,你会在这里拼凑一点,那里用一些胶带,一堆Perl脚本,然后我得到了来New Relic工作的机会,你知道,我当时想,“我使用New Relic。我需要那种可见性。我要进去直接做那个。“所以,就像我说的,我的职业生涯在很多方面就像一条直接通向这个点的漏斗。你在从事可观测性工作。
Ryan Donovan:有更高阶的CIS管理员。
Nic Benders:是的。是的。
Ryan Donovan:你花了很多时间思考计算机系统、网络系统以及它们如何工作。我们现在面临的复杂性危机是什么?
Nic Benders:嗯,当我回顾我的职业生涯时,其中越来越大的部分——当我在90年代开始时,我们有很多人和很少的系统。你知道,大学的系统人员有六个人,我们可能有三四台计算机真正需要关注。所以,每个人都在围绕它工作,你知道每一个部分,你非常特别地对待它们。随着生活继续,我们得到了越来越多,你说,“嗯,我不能再给我的服务器命名了。我将不得不采用一些自动命名方案。“我的意思是,服务器命名很有趣。你有一些有力的主题,但你知道,复杂性增长了,我们说,“嗯,我们需要软件来跟踪我们的硬件,因为我们现在有这么多硬件。我们需要软件来管理我们的软件部署,因为实际上——我们正在部署很多东西。“我们转向了微服务。我记得第一个告诉我微服务的人,我们说,“好吧,我们需要几十个不同的服务来构建这个架构。“他说,“哦,我认为会有几百个,“结果在三年内超过了1000个。就是这样爆炸式增长,它带来了好东西。你知道,我们突然能够真正减少编写单个软件时思考的范围。但它也带来了很多坏处。它使调试变成了一个精心设计的谋杀谜案,你不确定谁做了什么,比如各个部分是什么。你不能只是用调试器逐步跟踪它。一次又一次,我们做了这件事。我们转向了微服务,我们转向了云,所以我不能只是去数据中心用脚踢服务器,或者听它看它是否在交换。我们转向了容器,所以甚至没有操作系统可以连接。我们转向了编排,我甚至不一定知道我的容器在哪里运行。它们发生在某个地方,下一分钟,它们可能发生在另一个地方。这些步骤中的每一步都很棒。这是我们建立的非常强大的层,没有这些层,我们就无法构建我们今天拥有的软件,但在每一步,我们也放弃了一点;而复杂性就是我们放弃的东西。所以,你知道,我认为过去30年一直在持续向上移动堆栈,但那个金字塔只是变得非常非常宽,里面有所有部分。
Ryan Donovan:我们正在上升这些抽象层次,对吧?但你说复杂性来自于:我们本不应该担心下面所有其他东西,对吧?
Nic Benders:嗯,这总是一个谎言。
Ryan Donovan:是的。你还在用汇编语言编码吗?是你吗?
Nic Benders:不,但我认为你仍然需要知道它是什么。你需要知道汇编存在。也许不是像我们过去优化循环时那样深入机器语言,或者像,你知道,我过去一直怀疑编译器。你就像,“那个编译器在耍我。“但尤其是在运维领域,每个人都知道有一次你使用的工具是一个美丽的抽象,但它不够准确。比如,屏幕后面发生了什么?如果你不知道,哦,这实际上只是向Kubernetes发出这些命令,Kubernetes在做什么?Kubernetes实际上只是在操作这些操作系统概念。那些操作系统概念实际上是在操作这个管理程序,或者它们正在向下到硬件,在网络上。你必须要能够描绘整个事情,因为有时这些抽象确实会泄漏。它变得有点奇怪,大多数时候它很棒,我几乎觉得它越经常很棒,当它不棒时就越糟糕。
Ryan Donovan:是的。嗯,似乎你谈到了过去用汇编优化循环;计算机和计算已经变得几乎太强大了,你感觉不到那个糟糕循环的压力,或者你那里的任何东西。它,你没有因此受到困扰。
Nic Benders:是的,不,我认为这绝对正确。所以,我们生活在如此丰富的资源中——
Ryan Donovan:对。
Nic Benders:你就像,“哦,我就启动一个更大的实例。它会没事的。“而且,你知道,我不确定,我敢说当我开始时胡子已经灰白的人会对我有同样的说法。就像,你知道,我没有打自己的卡片。我不必来回拉磁带,而且像,“哦,你有所有这些内存。你有兆字节的内存,“就像,“你变软了。”
Ryan Donovan:我们过去不得不在雪中双向编码上山。
Nic Benders:没错。
Ryan Donovan:那么,场景下的复杂性,我们如何使其可见和可理解,并让人们进入其中?
Nic Benders:你在第一个问题中立即触及了两个关键概念,即可见性和可理解性,因为这些是密切相关的,但它们不相同。我认为很多人混淆了这一点。我在可观测性行业工作;这就是我们对自己的称呼。这是一个有点愚蠢的名字。可观测性是我们制造的工具,它是一个重要的工具,但它不是你需要的全部。所以,我们做的第一件事是试图说,“嘿,当某物做了你意想不到的事情时,你知道你的应用程序正在被资源压垮,但你说的一切,嗯,为什么会发生这种情况?“首先,你必须使你的系统可观测。所以,你必须构建每个部分,以便在需要时可以看到里面发生了什么,并且你需要将这些数据发送到某个地方,你可以在历史上比较它,这样你就可以回去说,“是的,这是一个问题。这是一个新问题,还是只是我没有注意的事情?“所以,逐步完成所有这些可观测性使我们能够及时回溯并查看系统内部,取下,你知道,服务器的侧面,就像软件部分的侧面,然后说,“嗯,这个应用程序很慢,为什么?“但下一步是,你能理解它吗?可理解性是我认为我们应该被称为的东西,因为这是复杂系统中缺失的部分,你可以观察复杂系统的每一个部分。我认为我们很多人当我们坐在控制台前时,你也许有一个带有500个小部件的仪表板。现在你知道,也许你有一百万个不同时间序列的指标。所以你观察了系统,但这与理解它不同。我们谈论可理解性,尤其是现在在这个AI时刻,因为AI正在助长这个问题并使其恶化,同时也给我们机会使其变得更好。可能摆脱这个循环的方法,因为我们第一次有机会真正为一些我们永远没有足够人手的问题带来一些额外的人类风格思维。所以,我们来到了这个非常有趣的时刻,我们不知道我们是否都会被AI带来的额外复杂性完全淹没,或者它是否最终会给我们一些漂浮在系统之上的东西。
Ryan Donovan:是的,我的意思是,我认为有几件事,你知道,在不同的方向上起作用,它擅长处理大量数据并使其变得可理解,但然后它本身也不非常可观测。对吧?
Nic Benders:是的,AI,它现在在我们行业中有三个接触点。所以,一个是人们使用AI驱动的工具编写软件的想法。所以,他们使用Copilot,或者他们使用Claude Code,任何这些系统——Cursor——通过并说,“哦,我现在可以更快地编写软件,因为我有这个编码助手。我可以,你知道,也许做氛围编码,像低代码或无代码方法构建一个软件,否则我永远无法构建,或者需要花费我大量时间构建。“所以,这太棒了。这些是强大的新事物。再次,我回想起,你知道,过去的软件工程师,也许责备我们,你知道,“嗯,编译器,你会失去对机器的感觉。“同时,如果我雇佣一个新员工,他们写了一个软件,然后它在生产中没有按照我认为应该的方式工作,我只需在Slack上联系他们,我说,“嘿,你能看看这个吗?这是你期望的吗?你能向我解释你的想法吗?为什么它这样写而不是那样写?比如,有什么我不理解的吗?“如果我使用编码助手,或者如果我使用氛围编码系统,它写了一个软件,或者它写了一个软件模块,然后它进入生产,它没有按我们期望的做,你要问谁?比如,我不能去找Copilot说,“嘿,Copilot,你能解释你在这里想什么吗?“因为它不知道它当时在想什么。它只知道它构建了什么。它没有那个内部决策历史:“哦,我做了这个而不是那个,尽管我担心另一件事。“它只会告诉你,“嗯,我可以和你一样阅读代码,“并告诉你那是个问题。所以,很多调试是关于将那些对宇宙的期望与现实匹配。所以,这是AI正在做的一件事。它正在创造这个新问题,既因为它生成大量软件,也因为它不理解它写的软件。第二是AI是一项新技术,就像移动、云或其他任何东西一样,每个公司都在部署它。我认为,你知道,当我们和——你知道,我们每年做这个可观测性预测来帮助理解我们的市场。人们正在将大量AI软件投入生产,所以然后你必须能够查看其中。在我们交谈的公司中,去年大约40%多对其生产AI系统有可观测性。今年是50%多。这很好。这是朝着正确方向前进。这是我们第一次看到这个结果超过一半,但这仍然意味着几乎一半的AI系统还没有被任何东西观测。这不只是New Relic客户,这只是行业中的一般人。好吧,这有点可怕。有很多软件在那里做事,没有人关注它。
Ryan Donovan:当你谈论这些系统的可观测性时,你是指对LLM本身某种可解释性观点,还是围绕模型的输入-输出?
Nic Benders:主要是输入-输出。所以我们看到很多客户和空间中的很多其他公司非常依赖这些云交付的AI解决方案,尤其是LLMs。所以,还有其他,你知道,较小的统计技巧和类似的东西在本地运行,随着新的开放权重模型,也许我们会看到那再次增长。出于隐私原因,人们会推动那个,但OpenAI、Anthropic和你知道,谷歌,他们只是在他们的云托管模型上如此快速地推动这个最先进技术——
Ryan Donovan:对。
Nic Benders:大多数人只是转向那些。所以,模型内部发生了什么?嗯。那对我们来说真的很难看到。但我们可以看到的,我们可以观察那个交互并说,“你发送了这个消息给这个系统。它用另一个消息回答。它花费了你这么多令牌。它花了这么多时间。“这些是相当基本的测量,但它们真的很重要,因为它让你后来找到有奇怪客户交互的人,然后说像,“嘿,模型对他们说了什么?“比如,“让我们回到过去看看说了什么。“你也可以使用AI监控AI并做简单的事情,比如对所有响应进行情感分析。“嘿,我们的聊天机器人昨天对任何人发誓了吗?它真的很生气或沮丧吗?“让我们检查那些类型的事情。当然,成本,就像云的早期,我们给了每个人这盒颜料,它们相当昂贵,如果某人试图用油画颜料做他们房子的外部,我们不应该感到惊讶,因为我们没有告诉他们该做什么。所以,你必须关注那些基础知识,你知道,它们在那里应用的东西就像在任何地方一样。
Ryan Donovan:我可以想象人们查看保存每个交互的提示和响应,就像,你知道,日志记录的问题放大到n次方,对吧?你只是使用了这么多存储用于这些三段式响应。然后你是在泄漏敏感信息吗?
Nic Benders:这绝对是,你知道,我们和市场上所有其他工具必须非常注意敏感信息部分,尤其是存储大小与发生的很多事情相比。在机器规模上,一个服务调用另一个服务,它生成像10段异常堆栈的日志行,与那些相比,你来回LLMs的数据量相对较小,并且它是可管理的,因为它发生在人类规模。某个人做了一件事,人类交互的数量比机器交互的数量小得多,以至于它真的保持在控制之下。但你必须应用掩码控制。你必须说,“让我们掩码掉任何已知的敏感数据。“你必须应用采样控制并说,“嘿,如果某处发生体积爆炸的事情,我们实际上不需要捕获每一个这些。我们如何知道要寻找哪些?让我们寻找有错误的那些,“等等。很多我们在过去10年中采取的相同实践来分析分布式跟踪树,查看"我如何知道哪些数据库调用是我想要捕获的?“我们可以查看那些相同的技术,然后你知道,将它们应用到这个中。当一切归结到它时,它只是另一个服务调用。就像,我们仍然通过网络伸出,我们在与另一个系统交谈,协议有点奇怪,它用人类语言对我说话而不是像,你知道,用SQL,这很奇怪,但它在根本上是一样的。
Ryan Donovan:对。最终它只是一个API调用。所以,我们谈了很多关于AI如何使事情复杂化,使事情困难。它如何帮助?
Nic Benders:它帮助的方式是第三部分。我几乎想退一步。我们现在谈论AI这么多。就像,你知道,什么是AI?是人工通用智能吗?所有这些移动的目标线。我在这里想特别谈论两件事,一个是LLMs。LLMs是那些聊天机器人和一切大多数人现在使用AI这个词时谈论的东西,另一个是基于神经网络的预测系统,不是用于语言的。所以,就像,超越统计模型,你可能有静态基线系统,但它不与你交谈,它在智能地进行推理。这两个系统共同拥有的对我们行业超级有价值的东西是它们擅长处理非结构化和半结构化数据。结果证明我们在世界上有很多半结构化数据。我们谈论了那些日志行——我有日志行,虽然我知道它来自哪个主机,但我的主机名可能在一个有点古怪的模式中,有时解析,有时不。我知道时间戳,但然后日志行的消息,是100行堆栈跟踪吗?是一条消息吗?是同样的消息,但由不同团队的人措辞,他们只是没有完全用同样的方式表达,里面有拼写错误?所以,它有这种半结构,我们世界的这么多部分对人类来说很容易看。我们会说,“哦,那是一个有趣的错误。哦,那是同样的事情。哦,你知道吗?这条消息让我想起了六个月前我们处理事件时看到的一条消息。嗯。那很有趣。我现在应该回去看看那个事件。“让我们去LLM世界。LLM可以几乎实时地做所有这些。它可以说,“哦,这里有一条日志行。它是一个错误,或者它是一个新的爆发。“我说,“我看到标准率的显著偏离。“我看日志消息。它里面有一些有趣的词。那些有趣的词映射到我完美的人工记忆中我们以前见过的每一个事件,以及那些事件中说的任何东西,“哦,那在这些RCA中,让我们调出那些RCA。这些RCA与你现在看到的任何当前问题有关吗?也许是。我会展示给你。或者,也许我甚至会只是向人类提议它们,“不是作为最终答案,而是作为,“嘿,让我为你省去一些跑腿工作,你应该看看这个旧的回顾。“我认为这种可能性,结合预测特征来弄清楚某物是否异常,与日志数据、跨度数据、主机名、应用程序名、错误堆栈、回顾、你知道、聊天消息之间的结构化和半结构化合并——你可以开始将所有这些东西缝合在一起,并做一些规模上否则不可行的事情。而你不需要超级智能来做这个。你只需要擅长导航工程师说话和打字的奇怪方式,以及概念相关的方式。我认为这是一个巨大的承诺。所以,那就是我早先谈到的理解引擎,我们从只是"看到"到"理解”。然后从那里,你能进入"行动"吗?你能看到发生了什么?理解发生了什么,并采取行动处理它。你知道,这是我们作为一个行业谈论的事情,好像它是一个圣杯,但如果我回头看,自动修复是真实的。它对我们来说是每一天。是"白帽"或任何东西在重启我们的守护进程,你知道,20年前。Kubernetes——
Ryan Donovan:把它关掉再打开,对吧?
Nic Benders:对。关掉再打开,在规模上。Kubernetes,当我失去一个节点时,它只是在其他地方重新调度。就像,你知道,我们今天系统的这么多部分——自动扩展,“哦,我们有额外负载。只需启动更多实例。“这是自动修复,但所有这些都是以非常非常清晰的方式完成的。这发生,然后这发生。我必须构建每个剧本。我们可以为每一个可想象的任务构建剧本,我们永远跟不上。所以,我们能使用相同类型的半结构化、结构化接口来获取那些剧本并使它们工作,而不必花费我整个生命为每个应用写每一个案例?
Ryan Donovan:DevOps全是关于自动化很多事件基础设施生产的东西,对吧?就像,只是让它运行更顺畅。但我认为也有很多人像,“我不理解这个AI的思维过程,“对吧?只是让Kubernetes启动一个新节点。你理解那个思维过程。那里没有很多思考,但当它像,“好吧,我如何修复这个事件?“你想要一些你能理解其想法的东西,对吧?
Nic Benders:是的,我认为那是真的,我认为我们将来到的是清晰和可理解之间的那条线,像,“哦,机器只是做它。“Kubernetes不会呼叫人类说,“嘿,我失去了一个节点。我应该移动东西吗?“你就像,“是的,显然移动东西。“它被认为是如此简单。下一层是什么?哪些事情我们可能五年前说需要人类,今天也许不需要?也许,“哦,嗯,如果我看到这条消息,那实际上是一个非常坏的迹象,触发回滚。回滚大部分工作了,但这个节点卡住了。我需要你杀死那个节点然后移动它通过。“我不是要求它 necessarily 为我写一首诗,尽管我猜我们看到LLMs真的很擅长那个。但只是思考一点超越静态运行手册的边界,我认为我们可能实际上可以从这个中获得很多,只是看我们如何推动那个边界,然后,你知道,三年后,五年后,如果我们再次看这个问题,也许我们对什么是机器的工作与人类的工作有不同的想法。我认为总是有人类的工作。就像,构建软件来实现目标和类似的事情,但你知道,就像你早先问我,我还在写任何汇编语言吗?我像,“不,我没有。“你知道,也许五年后我会对今天我们做的一些事情有同样的感觉。
Ryan Donovan:对。你不再翻阅堆栈跟踪了,或类似的东西。我们如何获得一个理解所有这些上下文、系统所有可能性的LLM,并有足够的防护栏,以便当它行动或建议行动时,它不会破坏任何关键的东西?
Ryan Donovan:我认为
Nic Benders:我们必须建立信任,你必须建立上下文。所以,信任来自于——作为人类,我们将不得不看到系统内部。所以,我们需要看到应用程序中发生了什么。什么是正常的,什么不是,之后发生了什么,行动是什么?我们想处于那个人马模式,AI为我们提供动力并让我们做这个,但我们仍然看到所有步骤并在这一点上做出决定。然后,我认为我们将发现的是,其中有一些部分我们可以真正理解边缘并说,“好吧,嗯,我们可以把强箱放在这个周围。AI被允许重启节点并升级和做这个和这个,但它不允许只是像,你知道,删除我所有的AWS资源。“那是我不需要它做的事情。我们必须看慢慢向上移动那个。为了达到这一点,我们将需要解决一些今天在行业中相当分散的事情。我认为我们需要解决AI工具本身,还有可见性,比如我们需要为可观测性做什么?现在,很多AI监控只是由编写AI系统的人完成,我认为这对那些单独的技术平台很好,但对消费者不好,对需要跨多个平台查看的客户不好。所以,我们真的希望看到OpenTelemetry在AI系统中的采用。我们在几年前对OTel下了大赌注,因为我们已经可以看到,即使这是在AI成为新闻项目之前,你永远无法在任何地方安装你自己的软件。你将总是以合作模式工作。我有这个云提供商,我有这个SaaS提供商,我有这个团队喜欢的这个工具,它回答这个问题,但我想访问一些这些数据,我想把它们全部拉在一起做我的工作。你知道,我不能说服每个云提供商出去到处安装我公司的软件。所以相反,我们与OpenTelemetry组合作,让他们解决,“这里是我们如何用那个做这些问题,“我们看到了这个回报。我们看到亚马逊几年前接受了它。谷歌现在正在接受它。如果我们能让OpenTelemetry也在AI世界中被接受,那将,我认为,添加那个关键成分,即可互操作的可见性到AI系统在做什么。
Ryan Donovan:那很有趣。所以,让OpenTelemetry进入AI的决策过程——或某种在API后面?
Nic Benders:我在想API后面,像,围绕所有事情。当我考虑OTel的力量时,有一个线协议和类似的东西,但这些实际上几乎有点无聊。力量是它是一组共同决策,像概念、名词和动词,我们可以谈论的事情,以便我们知道,“哦,这是一个跨度。这是一个指标的样子。这是分布如何工作的。“那是我们需要的。我们认为它将是OpenTelemetry,也许是别的东西,我们将不得不适应那个,但你必须要有这个共同的概念框架来监控这些事物在做什么。然后那不仅提供从AI系统输出到你对它们的监督,而且它也可以提供输入,因为我们将使用AI来帮助解决由AI引起的这个复杂性问题。所以,能够堆叠那个对于理解是否所有这些代理、工具或无论我们这周叫它们什么,是否在做我想让它们做的事,然后能够及时回溯并理解当它们不做事时它们哪里出错了,是超级有价值的。
Ryan Donovan:我的意思是,我可以在AI公司中看到一点阻力。有一点魔法和烟雾和镜子。我记得有一些最先进的LLM实际上是八个不同的模型或类似的东西,让OpenTelemetry进去,会像,“这里是它如何工作的全部。这里是幕后的Oz。”
Nic Benders:要求它一直到最后可能太多,但我认为向前一点只是能够看到那些交互。一个很好的例子是你可以用于做向量搜索、推理和编写代理的所有不同框架,所以一个关于我们如何构建AI代理的通用检测,我认为,将大大有助于能够信任我们的代理在做我们想让它们做的事,而且几乎没关系——是的,幕后是什么?伟大而强大的Oz可以留在和平中,但我想知道Munchkin Land发生了什么。
Ryan Donovan:很多公司总体上已经转向开源,只是因为它是一个更可见的生态系统。拥有开源,或至少开放权重的AI,会帮助获得那种可见性吗?
Nic Benders:我认为开放权重很有趣。我玩很多开放权重模型。我认为开放权重模型对于理解可能的世界真的很好,像,“嘿,我有一些实验想运行。也许我有一些专有数据,我不觉得舒服发送到一些不透明的API给可能的竞争对手。所以,我想玩玩这个。“我认为它也只是人们理解没有伟大而强大的法则的机会,你知道,它像,“哦,你知道吗,这实际上主要是Python和一些GPU,“它去神秘化,即使它没有明确告诉我,“哦,嗯,这正是在我的生产环境中发生的事情。“是的,开放权重是理解"哦,它做这个,它通过路由器,然后它被转换。它出来并吐出"的完美工具,只是建立那个直觉,对系统的感觉,使它们不那么可怕。
Ryan Donovan:也许我们需要一个伟大的整体去神秘化。我认为我们早先谈过的是人们正在失去可见性和下面发生的事情的螺母和螺栓。在这些抽象层之上。也许我们需要再次从AI和软件工程中取出魔法。
Nic Benders:是的,我认为这绝对正确,因为脾气暴躁的软件工程师在这里是为了取出魔法。但你知道,这有点正确,很多错误是由认为JVM是魔法的人犯的。然后结果证明JVM只是运行在计算机上,然后,“哦,是云。云可以做任何事。“云只是别人的数据中心。“哦,AI将产生所有这些奇迹。“你知道?它真的只是一个统计模型。一些Python。它有令牌进,它有令牌出。它复杂。它似乎有点惊人。它仍然奇怪和奇妙,但最终,它只是软件,当你自己运行它时,是的,也许是去除一些魔法的健康剂量。
Ryan Donovan:嗯,是节目时间了, folks,我们喊出某人来到Stack Overflow,放下一点知识,分享一些好奇心,并为自己赢得了一个徽章。今天,我们喊出 populous 徽章的赢家——某人在一个问题上放下了一个答案,如此好,它超过了接受的答案。祝贺Yochai Timmer回答了"C++中的读/写锁”。如果你对那个好奇,我们会在节目笔记中为你提供答案。我是Ryan Donovan。我编辑博客,在这里主持Stack Overflow播客。如果你有话题、评论等,你可以发邮件给我 podcast@stackoverflow.com。如果你想直接联系我,你可以在LinkedIn上找到我。
Nic Benders:我是Nic Benders,New Relic,当我不观察系统并试图理解它们时,你可以在LinkedIn上找到我,或发邮件给我 nic@newrelic.com。我总是很高兴收到你的消息。
Ryan Donovan:好的,每个人。谢谢收听,我们下次再谈。
订阅播客 在您最喜欢的收听服务上获取Stack Overflow播客。Apple Podcasts Overcast Overcast Pocket Casts Spotify RSS feed
作者 Phoebe Sajor 内容助理 员工
The Stack Overflow Podcast 可观测性 AI 数据可观测性
最近文章 2025年11月12日 2025.8版本引入Stack Overflow Internal:下一代企业知识智能 2025年11月6日 AI厌恶感 2025年11月3日 Stack Overflow的新内容:2025年11月 2025年10月30日 来自OpenAI论坛直播:在AI时代学习编码
最新播客 2025年11月13日 企业AI项目需要成功的一件事?社区。
加入讨论 使用您的stackoverflow.com帐户登录参与讨论。
浅色 深色 自动
Stack Overflow for Teams 定价 客户 我们的解决方案 集成 功能 客户成功 安全 投资回报率(ROI) AI功能 企业版可用。 免费试用 登录
使用案例 工程师 数据科学家 DevOps & SRE 支持 产品管理
资源 生产力 AI/ML 指南和洞察 客户学院 常见问题解答 帮助中心
Stack Overflow广告 为什么选择Stack Overflow? 期望什么 向开发者广告 吸引技术人才 发布职位 由Indeed提供支持
使用案例 营销团队 雇主品牌团队 DevRel团队 人才团队 技术团队 代理商
资源 产品指南和洞察 社区洞察 广告最佳实践 人才最佳实践
公司 知识解决方案 数据许可提供以构建和改进AI工具和模型。 关于 领导力 社会影响 新闻 职业 开放职位 联系我们 合作伙伴 博客 新闻通讯 播客 实验室 年度开发者调查
网站设计/标志 © 2025 Stack Exchange Inc. 条款 隐私政策 Cookie政策 您的隐私选择 转到stackoverflow.com
您的隐私 点击"接受所有cookies”,您同意Stack Exchange可以在您的设备上存储cookies并根据我们的Cookie政策披露信息。 接受所有cookies 仅必要cookies 自定义设置
Cookie设置 当您访问我们的任何网站时,它可能存储或检索您浏览器中的信息, mostly in the form of cookies。此信息可能与您、您的偏好或您的设备有关, mostly used to make the site work as you expect it to。该信息通常不直接识别您, but it can give you a more personalized web experience。因为我们尊重您的隐私权,您可以选择不允许某些类型的cookies。单击不同的类别标题以了解更多信息并管理您的偏好。请注意,阻止某些类型的cookies可能会影响您对网站的体验和我们能够提供的服务。 接受所有cookies 管理同意偏好
严格必要Cookie 始终激活 这些cookies对于网站功能是必要的, cannot be switched off in our systems。它们通常 only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms。您可以将浏览器设置为阻止或提醒您关于这些cookies,但网站的某些部分将无法工作。这些cookies不存储任何个人可识别信息。
功能Cookie 功能Cookie 这些cookies使网站能够提供增强的功能和个性化。它们可能由我们或我们添加到我们页面的第三方提供商设置。如果您不允许这些cookies,那么这些服务中的一些或全部可能无法正常工作。
定向Cookie 定向Cookie 这些cookies用于使广告消息更相关于您,并可能由我们或我们的广告合作伙伴通过我们的网站设置。它们可能用于构建您的兴趣档案,并在我们的网站或其他网站上向您显示相关广告。它们不直接存储个人信息,但基于唯一标识您的浏览器和互联网设备。
性能Cookie 性能Cookie 这些cookies允许我们计算访问量和流量来源,以便我们可以衡量和提高我们网站的性能。它们帮助我们了解哪些页面最受欢迎和最不受欢迎,并查看访问者如何在网站上移动。这些cookies收集的所有信息是汇总的,因此是匿名的。如果您不允许这些cookies,我们将不知道您何时访问了我们的网站,并且无法监控其性能。
后退按钮 Cookie列表 搜索图标 过滤器图标 清除复选框标签 标签 标签 复选框标签 标签 复选框标签 标签 复选框标签 标签 仅严格必要 确认我的选择