大家好,Pi 出新版本了,还有能请你们介绍一下自己吗?Armen,我还没跟你聊过,Mario 已经来过两次了,不过你能先自我介绍一下吗?大家好,我叫 Arman,我是 Irandio 的 Mac PO,也是常驻实习生。我也不知道,我们就是在这儿做 PI。你是什么时候加入的?我跟朋友 Colin 一起创办了这家公司。

二月份的时候,我们算是把 Pi 纳入了公司。你们为什么决定这么做?这个问题问的很好。其实是这样,在那之前,我们已经花了很长时间想让 Mario 加入。就是 OpenCL 那阵疯狂的热潮之后,机会来了,Mario 真的开始愿意考虑这个想法了。这大概就是我对这件事儿的说法,因为我们想跟 Mario 合作,也想着做有价值的软件,而 PI 就是这方面一个很棒的早期尝试,所以这就顺理成章了。

Mario,请说。我就想说,我是 Mario Pi,是我做的。我做 PI 真是个傻子。现在又跟 Armin 绑在一起了。你真的觉得自己被这个项目套住了吗?你会担心这个吗?他这么成功停下来也说不过去,是吗?跟 Armint 一样,我做开源也有很长的历史。虽然跟 Armint 做的领域不一样,但也是一样的。

只要我做的开源项目有人用,就像我说的,我是个傻子,就会一直替大家维护这些破玩意儿,哪怕他们一分钱都不给我。有时候那些负面的声音会让你很烦,而且,但我觉得目标还是把 PI 交出去,也不是交出去,就是让更多人一起做 PI,降低项目对我一个人的依赖,不用非得我在才行。我觉得到目前为止,我们这个目标实现的挺好,挺好的。

所以就算我明天死了,PI 也会有人好好接着做,这就是我的能做到这样挺好的。我搬来波兰的时候,一个朋友都没有,就办了个线下聚会,结果一下子火了。我觉得在 Meetup 点 com 这个应用上,它现在是全国最大的聚会,现在它自己就能运转了,我不用组织过去参加就行。我的身份标识还在那儿,所以大家对我都很友好。

但一个项目能走到这一步,真的很美好。找贡献者这件事儿现在有什么变化?用 AI 的人越来越多了。我知道你以前不太喜欢随便用 AI 胡出点东西来,所以这方面的体验怎么样?很差,就是 Mario 这方面的体验怎么样?我这么说吧,要不是从二月到大概七月,我每天大部分时间都花在维护 PI 上,也就是看大家报的问题,修问题 PI durable 早就做出来了。

问题是,agent现在还没法真正帮你修这些问题,至少我这么觉得,至少对我的项目是这样。我还没那么信任他们,没法把这事儿交给他们,让他们判断大家报的问题哪些值得我们花时间,需要修哪些不需要。所以,至少我还是得把所有提交的问题过一遍,分分类挑出真正值得我们花时间的。接下来的问题就是,agent 能修问题吗?

能,当然能。问题只是它修的好吗?我会说很多问题确实可以这么解决,我可以放心让 agent 去修,尤其是那种很小的小问题。只要涉及设计或者架构,还是得有人来,因为 agent 只会在你代码库的某个局部拉一坨屎,把事情搞得更糟,对吧?armin,我觉得 agent 还有个问题,就是它肯定能解决问题,但几乎不可能在不加代码的情况下把问题修好,这就挺奇怪的。

因为我觉得很多问题修完以后,代码库的代码量其实不应该净增加。可是,这话居然是那个老发带着二百零五处改动的P二的人说的。我知道太吓人了,我自己用铁皮机器人也把自己坑了,但事情还是不应该这样。尤其是如果你的代码库完全靠自动化来维护,我觉得每修一个 bug,代码量自然就会涨一点。我最近跟 DH 聊过,他也已经接受了这一整套 AI 吃活的方式。

我就是这么形容自己的工作的,因为我基本上什么事都用模型来做。从某种角度来说,我觉得自己确实比以前笨多了。但换个角度,这样效率很高。如果你的工作不是做一个会被复制、被几百万人使用的东西,我觉得用AI糊个脚本出来。也没什么坏处,或者像我最近在做的,针对特定的硬件组合创建 Docker 容器,让模型在各种随意搭配的显存、内存和 NVMe 存储配置上尽可能高效的运行。

这个办法一直很好用,但这就是创建个 Docker 容器,所以只要最后能用设计和架构就没那么重要。对,它本来就该干这个。不过你们没有这个条件,你们没法这么随意。我们当然有,哦,我们显然也有。PID很多东西其实完全就是AI糊出来的。这就取决于你在应用的哪一层让人来参与,在哪一层放心让 agent 做出能用的东西。

至于它是怎么做到的,你根本不在乎。我举个例子,Pi 的终端界面库最初的设计绝对是 AI 呼出来的,对。不过最初的设计是我手写的,是吧?二零二五年初为另一个项目写的。这样就做出了一个挺稳健、挺精简的东西。我知道它应该经得住实际使用,就算不理想也够用了,对吧?后来我开始做 PI 的时候,并没有上来就说给我写个 Markdown 组件,给我写个文本组件,给我写个编辑器组件。

抱歉,我干的还真就是这事儿。我就跟 Agent 说 API 在这儿,就照着这个他妈的 API 写,把这些组件都给我做出来。他们写成什么样,我他妈根本不在乎,只要能用,再有一套测试,保证渲染正确就行。其他的我都不在乎。直到今天,Markdown 组件、文本组件这些东西的代码,我一行都没看过。我他妈根本不在乎,无所谓。

只有性能下降的时候,我才会在意。这时候 Agent 通常很擅长找出一堆问题,但很不擅长想出一个通用的解决方案。他会去做局部修补,让某个边界情况的性能变好,但他不会从整体去想,比如找出架构本身的问题。这些问题让整体都慢了,也导致了这个边界情况下的卡顿。所以我觉得在这方面,我多少还是有点价值的。我记得你跟我说过,你的流程是先设计接口,试着用用这些 API 弄清楚自己要做的东西是什么样的。

这个流程有变化吗?因为我现在看到的是,模型做事的能力总体上强了很多,但在架构方面我没看到多少进步,还是很乱。你有发现这方面有什么变化吗?因为这些新模型能力很强,但感觉还是原来那一套。我甚至觉得他们变差了,我也说不准。没有,我确实觉得他们在架构这块差了一点,因为现在你给他们的自主权大了很多,所以最后出来的结果反而更差。

我觉得基本上就是这么回事儿。几乎每次有新模型发布,我都会试着做点东西。我感觉对于他们自己做出来的东西,我越来越不满意了,主要是因为我越来越信任他们了。实际的最终结果。所以他们可能还是变好了,但结合我对模型的期待和我的用法,就像我每次都会做个 C 语言游戏,就是用 C 写个游戏,因为这就是我也不知道就是我会做的一件事儿。

我以前很喜欢写 C,所以就觉得好吧,这是我会做的一件事儿。而我感觉他们越来越差了,也许只是我没以前那么上心了,但我觉得这些东西,我能肯定的说它并没有变好。越来越复杂了,比如他们说话的方式越来越复杂,他们用了多得多的技术术语,回答里会扯到各种奇怪冷门的技术话题。我不一定是在说他们做东西的方式,但我觉得他们跟我们交流的方式越来越怪了。

我觉得 Opus 变好了。对啊,叫什么来着?Fable 五点他妈的几?还有上一个版本的 Opus,说真的,我不用他们了,就因为他们说话的方式实在受不了。我又不是什么超级大脑,他们每说一个词都像是从同一次词典里新翻出来的词条,所以我放弃了,彻底换回了 Soul。后来我觉得 Astra 也开始搞这套破玩意儿了,所以我也不用 Astra 了。

Astra 也很糟,对。不过 So 6.1 和 OPPOs 5.5 我用着挺满意,他们又收敛了一些。现在他们是正常的,像正常人一样的机器,所以挺好。不过有一个方面我确实感受到了进步,就是网络安全是在另一个不相关的项目里。去年,我用一个AI机器人给一些桌面端软件做了不少安全防护,可他搞不懂是怎么回事。

那真他妈让人佩服,真的,真的很厉害。全世界没有哪个做逆向工程的人能做到那个程度,尤其不可能在那么短的时间里做到,简直他妈的疯了。给你们讲讲,稍微涉及一点底层,那是一个 Java 虚拟机,里面有 Java 字节码,这些字节码最终会通过即时编译器编译成机器码。这整套东西我都做了很严密的防护,所以别人没法轻易提取字节码,也没法注入自己的字节码。

但原生代码那边有一个小突破口,任何人都不可能发现并利用它。结果那个AI机器人直接去逆向分析Java虚拟机内部的原生数据结构,开始直接读取进程内存,再把它对应到正确的Java虚拟机构建版本,找出原生内存里这个结构的各个部分对应Java表示里的哪些部分。哥们儿,这简直像科幻片,太厉害了!我也有同样的经历。

我经常拿给别人看,我这个小 USB 芯片是个国产 Car Play 适配器,他自己就搞清楚了怎么解密里面一个小东西。那东西本来是用来保护新 Root 镜像上传的,他还在网页界面里找到了一个 CGI 文件,可以绕过一些限制。我什么都没干就把它插上,说让它能用。然后我也说不准,花了大概五百美元以后,整个东西就归我掌控了,真厉害,真的很厉害。

我家里就有这些东西,我买的硬件越来越多,现在也有不少人送我硬件,我就在这些硬件上跑模型,想看看他们的表现,从最小的 Qwen 二十七 B,一直到 DeepSeek 和 GLM。他们做这类事情都已经很厉害了,比如我给了他们一个任天堂 DS 的改版 ROM,就是一个 ROM 游戏,然后让他从零开始写一个任天堂 DS 模拟器,他可以参考刀粉之类的东西,但必须用完全不同的方式来写。

最后他把模拟器跑起来了,这是 DeepSeek 做的,他能把模拟器跑起来。我发现只要任务的结果很明确。只有完成和没完成两种情况,他们的能力就有了很大的提升,最后总能把它做完,差不多就是这么个结论。如果你有一个能告诉 L M

它做的对不对的判断依据,那你基本上就赢了,比如棒,对吧?帮有一大堆测试,我相信它肯定没有百分之一百覆盖所有需要测试的东西,但已经足够让 Jared 对一群 agent 说,咱们按这样那样的方式来移植,有些地方我会给你们指方向,但主要就是想办法让这套测试在你们用 Rust 重写的部分上跑通。

这样效果非常好,我也做过类似的事儿,就像你刚才说的模拟器,各种系统的模拟器多得数不清。训练数据里也有一大堆这方面的内容,包括那些系统的规格说明。所以这种东西只要有个能判定对错的参照,就很容易测试,而且训练数据里全是相关信息,对吧?而且也挺适合做模糊测试,我觉得凡是能做模糊测试的东西都差不多。我最近就遇到过这么一件事,我拿了一堆示例文件,有

I N E T O M L C B O L 啊 Message App Pack JSON 格式的,然后就说这是我的序列化库,把这些格式都实现一下,最后就做完了。

我就说好,现在给他往死里做模糊测试。他找出了很多问题。我知道以前给库做模糊测试本来就不算太难,但现在真是不用想就能做。就像这样,好,把它修到你得花上几个小时才能再找出一个回归问题为止。对,我觉得这是个很棒的用法,尤其是模糊测试,你可能已经能自动生成模糊测试用例了,但再加上一个LM,对吧?它还能推想出一些额外的用例,是那个模糊测试生成器没有覆盖到的。

这就像给各种测试加上了火箭燃料,特别惊艳,特别实用,真的,真的很棒。但接下来就到了你前面说的那些事儿,比如架构,我也不想变成那种说哦,人类不指示的人。我记得 D H H 说过类似的话哦。如果你觉得自己会做架构、做设计之类的,就很特别。那你得再想想,因为模型也会把这些给拿下。我觉得模型不理解机器学习到底在干什么。

我觉得模型其实。如果你跟他们讨论一个问题该用什么架构,我觉得他们还挺挺擅长的。但真要解决问题时,最可能走的那条路径,在模型权重里却通向了完全不同的地方。对,基本上这些都能用训练数据来解释。网络安全这类事情的训练数据,我很容易就能准备出来。要做一个已经存在又有参照能判定对错的东西,我也很容易准备出训练数据。

做网站,做前端,随便你他们想做什么,这些训练数据我都很容易准备出来。但设计一个东西,给它搭架构的这个过程,我没有训练数据。在编程里,给一个东西搭架构的过程是唯一通常不会以文字形式记录下来,让 L M 从中学习的部分。我觉得这就是我们卡在这里的原因。那我们以后就把会议录下来,然后每家失败的创业公司都会把会议录音之类的全发给模型实验室。

我们要把自己的黑板卖给 Open AI,卖两百万美元。我在德国认识一个人,他开了一家机器人公司,他们的主营业务其实是卖训练数据。他们花钱请人戴上那些帽子、胳膊上的设备之类的去干活,然后把数据卖给实验室,而且这生意很好。但我相信这些全都在交互记录里。所以,如果你在跟模型讨论架构,那些交互记录就应该给更高的权重。

你怎么决定哪些该给更高的权重?这些问题非常非常有意思。但怎么?我觉得可能也是因为这里面没有信号,比如 Pi Durable,我都不知道为它花了多少美元。它经过了好几轮迭代,训练时又怎么能确定哪次对话最终产生了我们发布的那个版本?当然,这也算是能做到,你可以训练它,也可以打标签,确实有一些可能的办法。

但这个问题要难得多,而且这样的对话也少得多。就是那些真正,我倒愿意把这看成基本上就是个分类问题。你拿到了一堆交互记录,先不管你的零数据留存政策。所以,你作为 OpenAI、Anthropic、DeepSeek 或者别的什么公司手里有一堆交互记录,多的数不清,对吧?现在你想从里面挑出那些真正有价值、质量高的,这要怎么做?

你不能靠人来做。我是说,他们确实也会人工标注,但那没法做大规模。所以,接下来最好的办法就是用一个机器学习模型,把交互记录分成高质量和低质量。我觉得他们有这个机会,就像他们现在做的那件事。如果你用 Cloud Code,它会在 GitHub 仓库和提交记录里给自己打上标记。所以,除了收集对话的交互记录,还收集仓库本身的历史记录,可能是个不错的办法。

因为你只要对应一下哪些仓库还在不断获得用户,哪些 PR 合并了,里面还有多少比例的代码保留下来,我觉得这样就能。我一直在跟他们分享我的数据,我就点了那个分享。但问题是,他们拿到了这么多数据,你会觉得他们应该能搞些复杂的玩意儿,对吧?但据我私下听来的消息,他们还没在搞任何复杂的玩意儿。我觉得,一旦他们摸清了门道,这会随着递归自我改进实现模型会去做那些复杂的事儿,因为突然之间这些事儿就会变得很容易。

我觉得这其实就是它可能变得更好的原因。现在的情况有点像人类做这件事真的很烦,但如果模型觉得值得花这个力气,而且能让自己进步,那也许自我改进就能带我们走到那一步。我用最新的 Opus 把各种推理相关的活儿、推理任务交给他,他每天都在取得突破。他现在真的很擅长处理硬件到软件这一层的事情,GPT 完全不擅长这个,他们更擅长数学和类似的一些东西。

但我也不知道,我觉得我在这方面看到了突破,但这其实并不能。我也不知道,你没法靠这个做应用,这只是爬山优化的本事,有点让人失望。我确实想问问你们 Pi Durable 的事,你用了“持久”这个词背后的逻辑是什么?这是怎么回事?我试着用五句话说清楚,好吗?Agent 在一个进程里启动,Agent 调用工具,然后进程挂了。

你想要的是重启进程后,agent 能从刚才停下的地方接着运行,这就是持久性。你不用输入继续工具结果和助手的流失输出也不会丢失,应用状态也会可靠的持久化保存,并且能可靠的从这个状态恢复运行,这就是持久性。那我们为什么需要它?因为长时间运行的 agent,也就是各种 claw 都需要这样的能力。Pi Durable还解决了另一个问题。

以前 Pi 基本上会把整个对话,或者说 Pi 里的整棵对话树都加载到内存里。如果你有个 Slack 机器人在你的 Slack 里待上好多年,完整的对话记录里有海量消息,那这样显然也不行。这些历史记录不一定都要发给 LM,但你还是得能保留全部历史。这基本上就是 Pi Durable

做的事。另外,它也很容易部署到很多地方,比如 Versel、Cloudflare、D、E、R、B、你的笔记本电脑、我的手机,所以用起来很有意思。

那你能不能带我大致了解一下它的架构?我今天确实看了代码仓库,还让一个铁皮机器人试着给我解释这是怎么运作的。关于恢复运行,我的理解是你得提交一个操作,至少我是这么理解的。你有一个操作,这个操作得提交到文件里才能算正式确定下来。如果它中断了,你还有这个事件队列。也就是说,队列里有事件,至少我觉得自己是这么理解的。

对,这恰好是我们没做的事儿。我们不用事件溯源,其他人都在这么做,我们不这么做,因为它有很多问题。不过让我解释一下我们是怎么做的,好吗?持久性要解决的基本问题是,你在执行某个操作,而系统可能在开始执行之前、执行过程中或者执行完之后崩溃,对吧?你执行的这个操作通常就叫副作用,大多数持久性方案会这么做。在执行这个操作之前,我先在某个存储里记下来说,我准备执行这个操作用的是这些参数或者这些输入,对吧?

这样,如果我保存完之后崩溃了,我就知道所有输入都已经正确求值了,我已经验证过这些输入,可以开始执行这个操作了。如果现在我的进程挂了,操作还没执行,但这个执行意图已经保存了,我就可以重启查看数据库,发现有个操作准备使用这些输入来执行,那我就执行它,因为它还没执行过,所以我现在来执行,对吧?这就是三明治的第一部分。

第二个可能崩溃的阶段是这个副作用,也就是这个操作正在执行的时候。这时就要看具体在执行什么了。如果是在外部系统里执行,比如你向 GitHub Actions 发了个请求,说在这个 action 里构建这个提交,对吧?你把请求发出去,然后进程挂了,接着重新启动。这时你不一定知道它到底执行了没有,因为你还没收到结果,所以什么也没保存下来。

你在和 Git Hub 通信的时候被打断了,对吧?那这种情况下你怎么继续呢?用 Git Hub 就很容易,因为你可以在任务运行之前先说我要安排一次运行,然后拿到一个标识把它保存下来,在真正开始这次运行,对吧?也就是一个 ID,然后我要执行这个操作时,就说用这个 ID 执行,对吧?如果它已经在运行了,Git Hub 就会告诉我它已经正常运行了,等一下我会把结果给你。

如果还没开始运行 Git Up,就会用这个 ID 启动这次运行,对吧?这就叫抱歉。你最喜欢的那个词密等性,密等性对好。所以如果外部系统有这个能力,我给他一个 ID,说用这个 ID 执行这个操作。如果操作已经在运行,他就告诉我我已经在执行了,等它完成。那这样即使在执行副作用的过程中崩溃,我也能恢复,对吧?

最后一步是副作用执行完之后,我拿到一个结果,把结果保存下来。这样由执行意图、执行副作用、保存副作用的结果这三部分组成的副作用三明治就完成了。之后我就再也不用操心它了,我可以把过程中发生的所有信息都丢掉,除非我需要保留一些记录用来记日志、做审计之类的。但关键是我现在有了一个结果,这就是我想要的全部。而且不管我的进程在这个三明治的哪个环节挂了,我都想得到这个结果,对吧?

当然也有复杂的情况,比如我要执行的副作用是删除磁盘上的文件,对吧?通常我没法撤销这个操作,除非我用了 get 之类的东西,对吧?如果我要从你的信用卡扣款,我可不想扣两次。所以你执行的所有副作用,在某种意义上也得能配合这套持久性系统使用。大多数外部操作都可以,但有些不行,那你就得决定怎么处理。回到 pi durable 的架构,基本上 agent 运行框架里发生的每件事儿都是一个任务。

也就是这样的副作用三明治,比如我想让 L M 生成一个回答,就有这么一个三明治:先准备请求,收集上下文窗口和参数,比如思考级别、模型等等,把这些保存下来,记录我们现在准备做这件事,然后真正调用 L M,这就是副作用。接着拿到回答,再把回答持久化保存下来。工具调用也是一样,我从 L M 那里拿到工具调用,然后用一个任务执行 L M 给出的一个工具调用,然后呢?

我猜这些是互相嵌套的,对吗?对,一个任务可以创建另一个任务,并等待它停止,这就是全部的秘诀,就这么多。另一块就是我刚才说的应用状态,我们为这块想了个办法,基本上就是你知道文档数据库吧?比如 Mongo D B 就是文档数据库,知道,基本上就是存 JSON

对象。对吧?而且你可以随便修改这些对象,所以为了保存应用状态,我们做了一个很小的文档存储,它有个特别的功能,比如我有一份文档在对话记录的第零个时间点,这份文档的值是这样,对吧?

比如说一份代办清单,对吧?然后你跟 agent 一起做事儿,用户说一句,助手回一句,用户再说,助手再回,再调用工具,代办清单就变了。所以文档就在对话记录的这个位置更新了,对吧?现在如果我想回到之前的时间点,那时候我想要的是哪个版本的文档?这个版本还是这个版本?看情况。有时候你想要的是那个时间点对应的版本,对吧?

我想要当时走到这个时间点时的那份旧代办清单。另一些时候,不管我在什么位置,我就是想要文档的最新版本。所以。我们的文档存储允许把这两类文档关联到对话记录里的任意位置,这样你就能存储应用状态了。比如,我有一块可以画画的画布,那它就是一份文档,里面只存一串笔画。我可以把这些笔画重放一遍,把画重新画出来,对吧?

我一边跟 agent 聊,一边在画布上画,在说,把这张新画给 agent 看,这份文档就会跟着 agent 一起变化演进。如果我回到之前的时间点,比如说,我就想给 agent 用这幅画的旧版本。光靠带版本的文档和任务这两个基础构建,我就能干一大堆事儿。这基本上就是 Pi Durable。你有一份带版本的文档,然后随着绘画推进,这份文档不断更新,每次更新都是一个版本。

那你存的是版本之间的差异,还是?没错,有个东西叫 JSON Patch,我记得它是个技术规范吧,我也不确定。我们一开始看的是这个,它基本上就是定义对 JSON 对象的操作,比如把这个字段设成这个值,创建一个数组,把数组里的某个元素设成这个值等等。我们看了看,或者说是我看了看,觉得它用在这个场景里还不够,所以我们做了个类似的东西,不过针对 Agent 相关的操作做了优化。

总的来说,我有点意外。我做网页开发已经不知道大概二十年了,而局部更新这个问题,基本上 React 讲的就是状态一、状态二怎么用不可变的数据结构来表达这些变化。可不知怎么的,这件事始终没有明显改善,这让我挺意外的。有 immer 这样的东西,对吧?大体上做的还算对。对,是有一些,但对于怎么表达嵌套数据结构的结构性更新,还没有一个大家都理解、都认可的标准。

对,还有 Altumatch,这是 Incan Switch 那帮人做的一个项目,他试着给你一种代理对象,记录你对他做的所有修改,然后在背后生成表达这些修改所需要的无冲突复制数据结构。但它映射到 JavaScript 上的方式,就是一大堆硬凑出来的办法,里面有太多漏洞了。软件开发就是这样,对吧?Pi Durable 里显然也有一些这一类容易坑到自己的地方。

我们也用了代理对象这种做法,这是什么意思呢?基本上就是说,我对存储系统说,把这份文档给我。你拿到的是一个 JavaScript 对象,看起来就是个 JavaScript 对象。你可以像操作其他 JavaScript 对象一样操作它。我可以把 object 的 x 设成十,这就会自动继承一项操作。之后重放时,把这项操作应用到真正的对象上,就能重新做一遍,对吧?

这也是靠代理对象实现的,基本上是个取巧的办法。准确说,还是个挺慢的取巧办法。不过,对我们在 Agent 运行框架里要做的事儿来说,它很好用。能做的方向有很多,我觉得多人协作就是其中一个。我没怎么看到好用的多人协作运行框架,我正在试着带我老婆多用用 Hermes,这样我们协调事情时就能少出点问题。好,但就是没有什么好用的解决方案,整个生态又很碎片化,每天都有新模型、新东西,一切都在不停的变。

为什么你们决定解决这个问题,而不是 Agent 运行框架里的其他问题?你是说多人协作还是持久运行?持久运行,对,因为你们一直在讲这个。其实是因为现成的东西不多,当然也有 Hermes、 Open Claw,还有其他各种 Claw,甚至还有 AMP,对吧?他们有 Orbs,可以把绘画转移过去,然后继续运行。

他们都得用某种方式解决各自 Agent 运行框架的持久运行问题。但这些都不是通用的解决方案,我没法拿来就构建 Erendio 的下一个项目,或者下一个开源产品,或者 Shopify 内部的某个 Agent 系统,比如一群 Agent 组成的群体之类的,对吧?所以很难把这些现成的东西拿过来变成自己能用的。

我想做的是一个很小的基础构建,我是说它也就大概一万两千行代码,让它足够通用,也足够强大,开箱就能基本满足你对 Agent 的所有需求,包括上下文压缩,还有其他一堆乱七八糟的事儿。而且我觉得这里还有一点很值得想清楚,就是你显然不需要它,你肯定不需要 Pi Durable,你完全可以自己做。你可真会做营销。

不过我们做过好几个 Agent 项目,确实把他们做到了让人能信任,还算可靠。出错后能不断恢复的程度,但最重要的是,就算没人一直盯着,他们也能继续这样运转。就像是,好,现在崩了,我们要继续吗?还是怎么着?真正让它从根本上可靠,让你愿意在它的基础上继续做东西,这本身就要花很多功夫。不是说最后写出来多少行代码,而是核心设计的让这套东西真能运转起来。

随着 A 阵的编排越来越多。运行时也越来越不需要人盯着再去干预。从某种意义上说,他们本来就已经够不可靠了。里面有个L M,他想干什么就干什么,对吧?这算是某种生物,所以至少编排他的那一层应该让人多少能理解,也让事情多少有点章法。我在尝试少用点笔记本或者电脑,有个问题就是关掉笔记本,就算开着 caffeinate 之类的东西,还是很烦。

所以我在想办法让我能直接在不同机器之间传会话。我让 G R M 做了个这样东西,我把它叫做 Parcels,是用 P I 做的。他想出来的办法,我可没决定这么做,就是把存会话的 JSON 文件从一台机器复制到另一台,然后直接重启,因为所有环境变量都已经在里面了。这样应该够用了,但我希望它能自己运行,同时分布到我的所有设备上。

现在有很多奇怪的事情在发生,是啊。接下来呢?你们想做什么?你们现在想做什么?是让这个东西更稳定吗?我挺感兴趣的。主要是自己用自己做的东西,在内部做很多东西,然后决定哪些对外发布。ARM,你想聊聊这个吗?对,我觉得 Erendio 这家公司大致可以分成两块,一块是做一些产品,所以我们在做的产品,理想情况下,长远来说,希望连非工程师也能用的开心。

所以不是编程 agent,不是编程 agent,我们不希望明年是一家做编程 agent 的公司。对,但同时我们也在做一些基础设施组件,希望大家能用它们来构建自己的 agent,所以这两块我们现在都在做。最初在做 PI 之前,我们做过一个叫 Layforce 的产品,现在你会把它叫做个人 Agent,但当时它就是一个通过纯文字交流界面跟你沟通的 Agent。

我们用的是电子邮件,我们真的特别喜欢这个整体思路,就是有个小家伙陪着你,帮你解决一些问题。但不会硬要介入其他人的生活,不是那种你说“嘿,帮我预约一下,我要预约礼服的事”,然后他就跑去用AI生成的垃圾内容烦别人,而是一个陪着你有用的助手。当然,这个领域已经有很多东西了,但同时这里面也没有什么是我们特别喜欢的,而且他们很快就变成了一大堆东西拼起来的庞大、疯狂的怪物。

我觉得风险也极高,这个设想就像是:好,你是 X,本来就已经有很多人想黑进你的系统,然后又有几百万人在用 Grockbar

把各种账号都登录到那台机器上。我觉得这就是一场灾难,这些公司每家都有一场灾难。其实从某种意义上说,我一直很惊讶,居然没有更多东西被。而我看的挺乐,哥们儿,太有意思了。其实就在我们开始聊的五分钟前,我在推特上看到一个人发了串帖子,说我的 Grokba 把我所有的个人财务信息都发到公司 Slack

上了,所有人都能看。

而且马斯克说过,要是发生这种事,他会拿钱补偿我的损失,可他并没有。对我喜欢个人 agent,我用 DeepSeek 在家里运行。以前我用 Codex 做这个。但速度糟透了,大概每秒三十五个 token。我记得我看了一下,用 Codex 订阅平均是每秒三十三个 token,这实在太糟了。所以我现在在本地跑 DeepSeek,这些开放权重的模型已经够好用了。

他们能扫描我大概十五封不同的邮件,把内容变成 Linear 里的任务再处理掉,但还是很乱。结果不太确定,你们看过 Jeff 那一整套东西吗?我觉得这个其实很有道理,就是有这些半叫什么来着?我不当 MCP 负责人的时候,就在当 Jev 的负责人,在。要是可以,Armin 都想跟 Jev 结婚了,他爱 Jev 爱的不行。

把这两个结合起来是有道理的,结合起来让其中一个给另一个做分类,比如说要处理大量内容的时候,我觉得这样就很有道理的。说到底,MCP 最后进了 PI,原因跟 MCP 完全没关系,就是我需要 Code Mode 来用 Jeff,从那一步做到 MCP 也就五分钟的事。但要让 GPT 或者任何分类模型运行起来,就需要另一个系统为它生成一套专门的运行框架来驱动它。

所以很自然就想到要做 Code Mode。不过问题是,很多事情之所以推进不下去,是因为这些任务本质上很难明确界定,所以需要 LLM。但 LLM 又太慢了,因此现在分类模型算是个挺巧妙的办法,可以。我是说,他们也不是新东西,但 G A V 确实证明了,如果你把它训练的足够好,让它成为一个通用的一次性分类器,那它就能满足市场需求。

然后这整件事儿就开始了。某种程度上,这挺让人意外的。但我喜欢的是,除了图像生成模型和 LLM,突然有另一类模型成了大家在尝试的东西。对,而且这东西确实有用。我自己他妈的完全用不上图像模型,但 Javi 模型我能拿来做很多事,而且它实在太 Mario,你不做表情包吗?我自己就是个表情包,我不用做表情包。

你们好像也挺喜欢 M P,至少 Mario 你是这样,尤其是那个 Orb 的东西,为什么呢?它为什么让你印象这么深?我本来就想问你们怎么看不同的 Agent 框架,你们会研究它们吗?会看它们的功能吗?你们是怎么做的?碰上 Codex 那些破式后端不工作的时候,我们就把 OpenAI 斜杠 Codex 仓库克隆下来,看看他们为了让后端能用,往那堆破玩意儿里加了什么狗屁东西。

我们对其他 Agent 框架的关注基本也就到这个程度。MP 就不一样了,因为 MP 比 PI 早出现很久。Open Code 也是,我记得大概从二零二五年初就有了。我现在不怎么看 Open Code 了,不过我看过他们的 V2,挺有意思的。他们现在也在跟持久化问题较劲,看着挺好笑的。不过 A M P 我从来没用过 A M P,但我很喜欢他们的团队,因为我觉得他们对软件工程的未来也有自己的设想。

他们不确定自己的设想对不对,但愿意把房子都压上去赌一把,对吧?而且他们就直接去做,我觉得他们做的挺好。我觉得 Orbs 挺好用的。今年早些时候我在慕尼黑见过他们,他们给我展示了 Orbs 那个东西,我也跟团队里其他人待了一阵。他们人都很好,懂行也不怎么瞎扯,我就喜欢这样。我一直挺喜欢他们的产品,我一直在各种不同的 Agent 框架之间换来换去。

我觉得我的工作有一部分就是跟别人分享这些东西,告诉他们我试过这个,也试过那个。不过我觉得 Pi 确实很突出,只要我要做点什么,我都会用 Pi,因为第一它是开源的,第二我确实能看懂它。我记得你也用 O N P 做了不少事,对吧?就是 Ken 做的那个 Pi

的东西。对,如果你显存够多,它用来跑本地模型真的很好,因为他们做了个顾问功能,所以你配置好 Opus 或者别的模型,它会读完整段对话,只要模型开始兜圈子或者偏离任务,它就会插话,它会插入一条看起来像是用户发来的消息,告诉模型任务范围是这些,你需要这样调整。

然后还有子 agent 那些功能,我觉得它很大程度上也有 Claude Cody Opus 和 Fable 那种把任务分给多个 agent 的功能。这部分他们做的很好,还有登录功能,能直接输入 connect 之类的命令进去,把我用的东西连上,就很好。它已经变好了,不过特别费 token,这是它的一个问题。

而且它的系统 prompt 以前特别大,那是另一个问题。Deep Seek 的 Agent

框架我最近特别喜欢,不知道你们有没有花时间看过?它太棒了。我其实读过它的源代码,插件架构很有意思。单说实际的插件机制,他们承诺的比实际能做到的多,但他们处理这件事的思路真的特别聪明,所以我确实很佩服。这确实是我看过的一个 Agent 框架,因为我们显然想继续发展

Pi,看到另一个框架也采用让软件本身能够修改自己的思路,挺好的。

现在 Cloud Code 里也出现了这个,真他妈好笑!Boris 会说这种话,天哪,这些改装功能太棒了!我们怎么能不让 Cloud 修改 Cloud Code 本身呢?去你妈的混蛋!我觉得他们的 A 架框架是变好了一点,去年我不太喜欢它,不过它现在更稳定了。它还是有很多 bug,会莫名其妙报错,或者不同绘画的内容串到一起,这也是它的一个问题。

阿敏,你呢?有没有哪个 A 架框架让你觉得挺突出,会一直关注?我看过 DeepSeek 的 A 架框架,我们开始研究插件架构的时候,那里有个东西确实值得看看。一般来说,我不太看别人在做什么,因为这特别容易分散注意力。而且你也不一定知道他们这么做是因为真的在解决一个问题,还是因为写代码不要钱,所以可能只是做了个实验。

我做 MCP 那部分的时候,把其他所有支持 MCP 的大型 Agent 框架都拿来对照过,就是想弄清楚某个东西值不值得做。因为你会收到一份大家想要的功能清单,就会想真的要把这些全都支持了吗?先看看其他框架是怎么做的吧。R们特别讨厌请求用户补充信息这个功能,我确实特别讨厌请求用户补充信息这个功能。我记得去年用IMP用的挺多,现在基本不用了。

不过我又看了一下Ops。我确实喜欢 Orbs 的想法,但不知道为什么我对网页界面没那么容易形成使用习惯。我会用 Cloud 的手机应用,也会用 Codex 的手机应用,但从来不用桌面应用。然后在终端里,我其实也不觉得它们特别好用。我觉得这并不是因为我不想用桌面应用,其实我也没那么喜欢终端,只是一直没找到那种完美的使用体验。

这就是我喜欢 DeepSeek 的地方,它看起来像是桌面应用里的 P I,它实际用起来很简洁,也很清爽,而且因为它是作为一个网页进程启动的,你可以直接把它放到 Tailnet 上。然后从手机或者另一台机器上访问,也不用做什么奇怪的连接设备之类的操作。连接设备这些操作一直挺烦的。你们有没有想过做个应用或者网页界面?

我知道你们已经有个大致的框架了,不过有没有想过更认真的做一做?过去这几天,我就在手机上随便折腾,用 AI 搭了个东西,主要就是要在手机上运行的。我叫它 Pi,也就是 Pi Mobile。我没打算把它作为一个产品开源发布什么的,至少目前没这个计划。不过,为了 Pi 本身的后续发展,我们确实在探索这个方向。

我觉得 Pi 已经初步验证了。能自我修改的 Agent 软件这条路是走得通的。现在我们得动起屁股来,把它往下发展,让它不再只是我和一个铁皮家伙,而是多台机器上的一堆铁皮家伙,跟很多人交流。而且我应该能随时切换,把 agent 和人重新连接起来,按我想要的任意组合让他们协作。我觉得这就是 pi 应该走的方向。

我做 pm 这些东西就是想确认 pi durable 确实能用,也就是自己用自己做的东西。我想替代安卓版 cloud,因为我之前也一直在用安卓版 cloud,现在已经完全替代了。因为我其实。除了 L M P M

完全是在我的手机上运行的,其他所有东西都在手机上跑,这一点我很喜欢。它也可以直接连到我的任何一台其他机器,把那台机器当做执行环境,比如连到我在 Hizener 上的机器,帮我做那边的系统管理,而大脑还是在手机上运行。

所以,我设想中的这一部分已经实现了。接下来要想清楚怎么把这套东西变成 PI 后续发展的方向,再加上插件系统。说实话, DeepSeek 的运行框架也确实给了我启发,不一定是在技术层面,而是在理念层面。给网页做插件系统,复杂程度高的让人意外,而且大部分复杂性都是些很蠢的原因造成的。其实大部分就只是一个问题:怎么保证安全?

因为你会受到一种原则上的限制,简直就像是一旦保证安全,体验就变得很烂。所以问题就变成了这些方面怎么才能取得一个好的平衡?对,安全这些事儿让我挺头疼的。我前几天发现有个铁皮家伙想把文件分享给我的另一台设备,结果把我的整个文件系统都暴露到公网上了。差不多有一天线路防护措施什么的我都有,可是不过真正的目标还应该是让多个人能在一个运行环境里共同参与同一个会话,然后我们的运行框架还能扩展这个环境。

但这就意味着有个人受到的信任比其他所有人都多,你肯定不想变成这样。连上谁的会话就必须完全信任那个人,对吧?那 Docker 呢?我就在想,这看起来像是 Docker 能解决的那类问题,就是创建出一个东西,然后对。但你是在连接别人的环境,先把 Docker 那部分放一边儿,好吧?那部分几乎没什么难的,单纯保护服务器要怎么做?

但网页界面又该怎么保护呢?因为现在你连上了我的网页界面,但弹出来的界面里有链接,我要是点了就会执行一些操作,这种事儿太容易发生了。比如我们进入同一个共享空间,我有账号你也有账号,铁皮家伙弄出一个界面,里面直接就是跨站脚本攻击,把我的 cookie 什么的偷走,这能解决,但解决起来很烦。其实很多解决这些问题的方案都要用到内嵌框架,用户体验很差。

真要做一个既能扩展又安全的网页界面,比看起来难得多,甚至感觉在服务器上用 Docker 做沙箱隔离还更容易。那才是容易的部分。对,不过我们会试出结果的,先瞎搞点东西试试看能不能成。我们现在还不确定。你们听说过 IPFS 吗?不好意思,IPFS 听说过,那是 Web 三社区搞出来的,就是给你在网上的文件系统弄一个分布式账本。

我觉得它其实解决不了信息被窃取的问题。用它来持久、可靠的存储数据,再保存多个副本,可能挺有意思。但我看不出它对安全有多大帮助。主要是说,如果铁皮家伙在做一个东西,就得把它放到某个地方,而且这个地方不会关联到你自己的环境。如果你和我一起做东西,我们会想找个中立的空间把东西放上去,而且能相信它会一直在那里。

算了,不过对我明白了,这太烧脑了,我解决不了。甚至都想不太明白哦,对我们来说也很烧脑。我们只是装作知道自己在说什么。要不说说你们现在对什么感到兴奋?挺好,我自己在用。我想说这个问题很容易被忽略,你基本上可以说,好吧,就假装我们不用解决这个问题,这样体验就能很好,但会毁掉信任。你刚才问的是什么?我们对什么感到兴奋?

接下来这几个月,你们对什么感到兴奋?做一些编程 agent 以外的产品,还有把我们现有的那个编程 agent 发展成一个现有社区会真正喜欢的样子,这是个挑战。我们已经见识到了,光是推出 MCP 和 Code Mode 的支持就能让很多人不高兴。我也不知道该怎么说。你只是加了一个以前说过不需要的功能,但现在模型已经接受了这方面的训练。

MCP 服务器和标准也都变得更好了。现在它基本上已经好到可以作为内置功能集成进来了。我们就是这么想的,可大家就不高兴了,觉得你怎么能改变想法呢?哥们,有了新信息我就会改变想法。哥们,我又不是在跟风炒作 MCP。我们花了一年才加上对它的支持,而且是经过极其痛苦的反复权衡之后才加的。那你呢,Armen?

你对什么感到兴奋?我觉得我主要是我也不知道。兴奋这个词有点,我觉得现在的AI已经挺让我满意了。我只是觉得使用体验还可以再好一点。所以,到底什么才会让我兴奋呢?我不知道。我觉得从社会层面来看,如果这项技术真能带来特别棒的成果,那就太好了。有价值的成果。对,拜托,给我弄个常温超导体吧,或者治癌症的药,什么都行。

单从技术层面来说,我最希望看到的就是炒作能稍微消停一点,然后我们能把这项技术用在很酷的地方,做出更好的软件,而不是我也不知道搞些粗制滥造的 Photoshop 分支版本。能有真正的社区做出很酷的软件,大家不是为了刺激自己体内的化学物质,而是真的在一起合作,做出很酷的软件。我给你举个例子,多亏了那些铁皮机器人,现在在电脑上模拟 PS 五的问题已经解决了,完美,真他妈厉害,哥们儿!

这甚至算是对社会的贡献,因为它有助于把 PS 五游戏保存下来,留给未来。我很喜欢这一点,太棒了。对我一直跟别人说,现在全都是用 AI 来搞 AI 加密货币圈也发生过这种事,每一轮牛市熊市都是这样。到了牛市,大家就觉得现在已经不是做东西的时候了,只管搞营销就行,该卖东西赚钱了。然后那些真正认真做东西的人,熊市一来就开始行动,开始做那些稀奇古怪,最后会火起来的东西。

但我们现在就处在那个阶段,简直疯狂的不得了。我看得出来这不正常,但我觉得这不会一直持续下去。而且这项技术确实很酷,我特别期待的是让新用户上手这件事,怎么才能让一个从没用过 Agent 的人开始用上 Agent?因为如果我能让我老婆、我孩子都用上 Agent,好多事情就不再是问题了。你就是想让别人帮你处理家里的各种杂事,对,让别人也迷上 agent 不是。

不过,我和阿敏也都有过类似的经历。我让我老婆接触了这些,然后去年夏天,她用 cloud

做了一些语言学研究。我还让我当时四岁的孩子写了个游戏,送给我老婆当生日礼物,诸如此类,这很酷啊,哥们儿,这就是我喜欢使用技术的方式,对吧?而且你说让新用户上手这件事说的完全对,这他妈是最大的问题,却根本没人去解决,大家都只是在侧边栏给你放个聊天框,然后说祝你好运,混蛋,自己搞明白吧,你是个秘书,来用AI提高点效率,去你妈的,这一套简直蠢透了。

对,根本没人花心思去带一个人上手,让他们,因为最关键的是你不知道,就可以问问了,就知道了。从我不知道到我可以问问,这个逻辑上的一步,很多人没有这种能力。我觉得这至少是我学编程时学到的一件事儿,就是别上来就问,应该先自己搞明白,搞不明白再去问别人,别没完没了的浪费时间。不过,谢谢你们抽时间来聊这些,我很开心,而且我会继续说 PI 就是最好的。

虽说有个人是谁来着?哦,对,是 OpenAI 的 Eric,我记得他嘲讽了你那条把 PI 排在 S 级的帖子,对吧?没想到啊。我觉得我说的是真的,我觉得绝对是真的。只有他是经过周全考虑的,而且明显能看出工程做的很好。我也喜欢 Joy,所以我经常用 Joy,也很喜欢他们团队。但我觉得任何 AI

项目都会遇到这种情况:代码很便宜,代码是免费的,或者说生成这些垃圾代码是免费的,结果你手里就堆着一大堆只完成了百分之三十的垃圾代码。

我觉得时间一长,这真的会毁掉用户体验,因为你总是碰到各种 bug 和错误。而且,怎么说呢?Agent 一直在用提问工具,我只想让它去完成目标或者循环执行。我想说的就是,走尽量精简这条路,就能解决很多模型天生容易出现的问题。好,Guy,谢谢你邀请我们,还有,谢谢,我们下期见。好,拜拜,再见。