当前位置:首页>java>代码是输出,提示词才是工作|Moltbot创始人1小时访谈,讲述GitHub史上增长最快项目的背后故事和AI开发哲学

代码是输出,提示词才是工作|Moltbot创始人1小时访谈,讲述GitHub史上增长最快项目的背后故事和AI开发哲学

  • 2026-02-06 17:28:39
代码是输出,提示词才是工作|Moltbot创始人1小时访谈,讲述GitHub史上增长最快项目的背后故事和AI开发哲学

2026年1月29日,The Pragmatic Engineer播客发布了一期访谈。主持人Gergely Orosz的嘉宾是Peter Steinberger,奥地利开发者,PSPDFKit创始人,以及更重要的,最近在开发者社区引发震动的开源项目Moltbot(原名Clawdbot)的作者。

这期节目的标题非常直白:"I ship code I don't read"——我发布我不读的代码。所以,显然谈的是他对AI编码的方法论。

就在这期播客发布的两天前,Anthropic向Steinberger发出了商标函,要求他将项目从"Clawdbot"改名。在改名过程中,他犯了一个操作失误:试图同时修改GitHub组织名和Twitter账号,结果在释放旧账号和注册新账号之间的10秒间隙里,加密货币诈骗者抢注了这两个账号。假冒的$CLAWD代币一度冲到1600万美元市值,然后在Steinberger公开否认后暴跌90%。与此同时,安全研究人员在项目中发现了真实的漏洞:通过Shodan搜索"Clawdbot Control",可以找到数百个暴露在公网上的实例,完整的API密钥、OAuth令牌、对话历史一览无余。

但这些混乱掩盖不了一个事实:Moltbot在一周内从100颗GitHub星涨到超过80000颗,成为GitHub历史上增长最快的开源项目之一。Andrej Karpathy称赞了它,David Sacks发推讨论它,MacStories称它为"个人AI助手的未来"。

Steinberger本人的故事同样戏剧性。2011年,他在维也纳创办PSPDFKit,一个PDF处理框架,最终服务于近10亿用户,客户包括Dropbox、DocuSign、SAP、IBM、大众汽车。2021年,Insight Partners以1.16亿美元(约1亿欧元)投资这家公司,Steinberger和联合创始人退出日常管理。然后他消失了三年。"我需要很长时间来减压,"他在播客中说,"有几个月我甚至没有打开电脑。"

2024年4月,他回来了。但这一次,他的工作方式完全变了。

1. 一个约会应用、一个愤怒的夜晚、一家十亿用户的公司

Peter Steinberger来自奥地利乡村。14岁时,一个暑期来访的客人带来了一台电脑,他从此迷上了编程。高中时他从学校偷了一个DOS游戏,自己写了个软盘复制保护程序,然后把它卖掉。

大学期间,他必须自己挣学费。在维也纳的一家公司做桥接工作时,他们给了他一本巨大的Microsoft MFC书籍。"我至今还会做噩梦,"他说。他偷偷把项目用.NET重写了,几个月后才告诉公司——"反正东西能用"。

2009年,一个朋友给他看了iPhone。"我摸了一分钟就立刻买了一台。"真正让他开始为iOS开发的契机更加私人:他在地铁上用一个同性交友应用,打了一条长消息,按发送的瞬间列车进了隧道,JavaScript禁用了发送按钮,错误消息弹出,但没有复制粘贴功能,也没有截图功能,消息就这么没了。

"我太生气了。我回家就下载了Xcode。"

他用正则表达式解析那个网站的HTML——"完全不是你应该做的事"——用iPhone OS 3 beta和各种黑客技术拼凑出一个应用,放进App Store,定价5美元。第一个月赚了1万美元。有一天他在夜店看到有人在用他的应用,想拍拍对方肩膀说"这是我做的",但觉得太奇怪了,没出声。

他去原公司辞职,想全职做这个。老板嘲笑他:"你在犯错误,这是一时的风潮。"Steinberger说:"那给了我一个chip on my shoulder(心里憋着一口气)。我心想,总有一天我的公司会比你的值钱。花了我八年。"

然后苹果来电话了。凌晨三点,一个美国号码,"你好,这里是苹果的John,你的应用有问题,有人举报了图片。"应用被下架。

他开始做自由职业,在WWDC的酒吧里被介绍给别人——"奥地利最好的iOS开发者之一"——拿到了一份美国的工作,搬去旧金山。后来有人找他修一个杂志阅读器应用,代码"是我见过最糟糕的,一个文件几千行Objective-C,用窗口当标签页"。他本来说一个月重写,结果花了两个月,但最终做出来了。

"你知道,在任何技术问题上,领域本身不是最重要的。你总能在任何领域找到有趣的问题。"PDF领域的有趣问题是:渲染一个PDF的C调用可能需要30MB内存,而整个系统只有64MB。如果你在后台不够小心,系统会直接杀掉你的应用。

他花了太多时间在细节上——旋转时页面动画要丝滑——这就是为什么一个月变成了两个月。但最终产品很好。一个朋友问他要代码,他卖给了对方。然后他想:如果他感兴趣,为什么不卖给更多人?

他用一个WordPress模板魔改出一个网站,托管在GitHub Pages上,购买流程的最后一步是Dropbox链接,指向他个人Dropbox里的源代码压缩包。一个下午搞定。他发了条推,那周三个人买了,每份200美元。更重要的是,有十个人发邮件抱怨——他们想要这个功能,但它没有。

"我被nerd sniped(技术难题吸引)了。'哦,没有文本选择功能?能有多难?'三个月后:'哦,真的很难。'"

这就是PSPDFKit的起源。公司名字来自他的首字母缩写(Peter Steinberger)、PDF、和SDK的"kit"。他花了五分钟想这个名字,然后再也没改过。

2. 十三年、七十人、十亿用户、然后燃尽

PSPDFKit从一开始就是远程公司。"我知道我在维也纳找不到我需要的人。"公司最终扩展到70多人,覆盖所有平台——iOS、Android、Web、服务器端——客户包括Dropbox、DocuSign、SAP、IBM、大众汽车、欧洲专利局。

他的营销策略是只关心开发者。"我知道是高管做决策,但如果我能说服公司内部的人,他们会替我做游说和营销。"他们从不做冷邮件或激进销售,全靠口碑,全靠写深度技术博客。

"如果人们理解做这个产品的人知道自己在做什么、热爱自己在做的事,这会反映在产品上。"他强迫团队每月花一整天写博客。"一天其实挺多的。我现在写博客也就几个小时。"

他对细节的执念近乎病态。"我花了那么多时间在每个空格、每个换行、命名上。"有一次一个客户投诉PDF加载要4分钟,他打开一看:5万页的加拿大法律文本,每页超过100个链接,总共超过50万个链接。他的数据模型假设每个PDF最多几百个链接,完全爆掉了。

"但那时候你已经有一个成熟的产品和API了。怎么在不破坏所有人的前提下完全重新设计内部结构?"他花了两个月,把所有东西改成懒加载,同时保持外部API不变。"最后我把加载时间压缩到几乎瞬间。"

做客服也是他的策略之一。"如果你发工单,CEO亲自回复帮你解决问题,这有影响力。"他的方法是倒序处理工单——如果你发工单后5分钟就收到回复,那是魔法;如果等一两天,差别不大。

到后来,有越来越多的"人的问题"。作为CEO,他成了"垃圾桶"——所有别人处理不了或搞砸的事最终都落在他头上。而且很孤独,因为很多事你不能公开谈论。

"有一个周末,凌晨五点我的联合创始人打电话给我:'有个大飞机公司,他们的飞机趴窝了,因为我们的软件崩溃了。'"他反汇编了对方的应用,证明是他们篡改了PSPDFKit的源代码触发了许可证回退机制。"那是一个'公司完蛋了'和'公司没事'之间的周末。"

"燃尽不一定来自工作太多,"他说,"更多是因为你在做不再相信的事,或者有太多冲突。"他犯了一个错误:试图更民主地管理公司。管理层内部争吵不断。

2021年,Insight Partners以1.16亿美元投资PSPDFKit。Steinberger和联合创始人Martin Schürrer退出日常管理,保留部分股份。

然后他消失了。

3. 三年空白期:当你不必再工作时会发生什么

"我需要很长时间来减压。我补上了很多我觉得自己错过的东西。我旅行了很多。有几个月我甚至没有打开电脑。"

有一段时间,他陷入了"为什么要费心"的状态。"你不应该这么早退休,或者说有这么成功的退出让你永远不必再工作。这把我的脑子搞乱了好一阵子。那是艰难的几年。"

4. 回归:一个约会分析工具、一个惊人的发现

2024年4月,他有了一个想法——一个Twitter分析工具——这是几年前就想做的副项目。他打开电脑,想用Web技术重写。问题是,他对Web几乎一无所知。

"在公司时,Web那边有个很聪明的人在管,我从不用操心。"回来后他发现自己得Google最基本的东西。"你知道,你越擅长一种技术,就越难跳到另一种。不是做不到,但太痛苦了。你在这边能盲打,在那边得查最基础的东西,感觉像个白痴。"

然后他看到了Claude Code。

"我把我那个大乱七八糟的副项目拖进Google AI Studio,拖进去一个1.3MB的markdown文件,打了'write me a spec',它生成了400行规格说明。我把这个拖回Claude Code,打了'build',然后一直按'continue'……它告诉我'100%生产就绪',我启动它,崩溃了。"

但他已经被吸引住了。

"四月份很多人还在合理地持怀疑态度。我觉得,部分原因是那三年我完全没碰电脑——在那几年里,你们测试过AI,学到了它很烂。"

他在四月五月尝试了Claude Code,然后是Cursor,然后是Gemini 2.5,然后是Opus 4。"我有一段时间很难入睡。"他在Twitter上告诉朋友们,有人凌晨五点给他发消息,他立刻回复。对方问为什么还醒着,他说:"哦,这是常态。我还在用Claude。太上瘾了。"

"就像老虎机一样。你按下去,叮叮叮,有时候出来一堆垃圾,有时候出来的东西真的让你震惊。"

他描述了一个具体的时刻。他的Twitter项目能运行了,但用久了会变得很慢很奇怪,然后又恢复正常,很难复现。问题是数据库里有一些触发器,在某些插入操作时会被触发,让数据库变得繁忙。"模型看不到,因为它被抽象得太远了,那个函数名字也不好grep,和其他东西没有明显关联。我问了无数问题,直到我问:'我们有没有任何针对这个的副作用?'然后它找到了,我修好了。"

"一切都只是一个正确问题的距离。但你必须知道要问什么问题。"

5. 新的工作流程:同时指挥5-10个AI agent

Steinberger现在的日常工作流程和传统软件开发几乎没有交集。

他使用OpenAI的Codex而不是Claude Code。原因很简单:Claude Code快,但输出经常第一次跑不通,而且它会回来问澄清问题,打断心流。Codex慢——一个任务可能要跑40分钟到一个小时——但它会安静地读10分钟文件,理解整个代码库的上下文,输出几乎总能直接工作。

"Claude Code会读三个文件就自信地开始写代码,你得不断推它去读更多。Codex会安静地读文件读10分钟,然后给你的输出几乎总是对的。"

如果你只开一个终端,这种等待确实难以忍受。但他同时开5-10个agent并行工作

"我的一般策略是,我设计一个新功能或子系统,和agent对话,讨论方案——'这个功能有哪些实现方式?你考虑过这个边缘情况吗?这样设计和那样设计各有什么取舍?'我挑战它、调整它、推回去。等我满意了,我说'build',它去执行,我立刻切换到下一个任务。然后这个在煮、那个在煮、另一个也在煮……"

他说这种感觉像玩星际争霸——你有主基地,也有分矿,你在它们之间不断切换。

"通常有一个主项目占据我的注意力,然后有几个卫星项目也需要照顾——我可能在它们上面只花5分钟,它做半小时,然后我再试试看,不需要太多脑力。"

他甚至会故意写模糊的提示,让agent去探索他没想到的方向。"大概80%的时候出来的东西不行,但有时候会有两个点让我眼前一亮——哦,我没想过可以这样做。"

有一次他想给Moltbot加入电话功能——让AI能打电话给餐厅订座。这是一个大模块,会触及代码库的很多地方。他本能的反应是"这要变成臃肿软件了"。于是他问Codex:能不能设计一个插件架构?他引用了另一个他知道的项目里的插件系统让Codex参考。几个小时后,一个完整的15000行插件架构重构完成了

"如果我自己写,要两周。"

6. 闭环:让agent能验证自己的工作

Steinberger反复强调的核心原则只有一个:闭环。让AI能够自己验证自己的工作。

"这就是为什么这些模型在编程上这么强,但在创意写作上往往一般——代码可以编译、可以lint、可以执行、可以验证输出。写作没有简单的验证方式。"

做Mac应用时调试很麻烦——要编译、启动、手动操作、观察结果。他的解决方案是让agent先写一个CLI,调用同样的代码路径,然后agent自己跑CLI、自己调试、自己修复。

"我告诉它:你去造一个调试用的CLI,调用所有相同的代码路径,然后你自己迭代修复。它就去煮了一个小时,最后告诉我——这里有个竞态条件,那里有个配置错误。我不需要看那些代码。"

最近他给Moltbot加入了多个消息平台支持,每个平台处理tool calling的格式都有细微差异。他意识到自己在手动调试上浪费太多时间,于是让Codex设计端到端测试:启动Docker容器、安装整个系统、用真实API key调用各个模型、让模型读图生图再检查输出。测试覆盖了所有平台——Anthropic、OpenAI、Google的GLM——agent自己把所有兼容问题都修好了。

"用agent写代码反而逼着你写出更好的代码,因为你必须更认真地思考架构,让系统更容易被验证。而可验证性本身就会导向更好的架构。"

这也影响了他对Web开发的态度。"即使是网站,我也会设计成能通过CLI运行的形式,这样就有完美的执行循环。浏览器循环太慢了。"

7. PR已死,Prompt Request万岁

Steinberger现在看Pull Request的方式完全变了。

"我对提示词比对代码更感兴趣。提示词告诉我的信息量更大——你是怎么想到这个解决方案的?你问了什么问题?做了多少引导?代码只是输出,提示词才是思考过程。"

他让贡献者把提示词附在PR里。如果有人提交的只是几行小修复,他会说:不用了,我自己打"fix"让Codex跑几分钟更快。真正帮他省时间的方式是把功能需求写得非常清楚,他直接把issue指给agent去实现。

他收到PR后的典型流程是:和agent一起从PR出发,然后按照他自己的设计思路重新实现。agent很少直接复用PR里的代码,但PR帮助agent理解目标。

"即使在Discord上,我们也不讨论代码。我们只讨论架构和重大决策。"

CI也变了。他不等远程CI(持续集成流水线),agent在本地跑测试,测试通过就合并。

"我有本地CI。agent跑测试,测试通过,我就合并。是的,有时候main会稍微滑一下,但通常很快就修好。我不想等远程CI那10分钟。"

他给这个本地验证流程起了个名字,来自agent自己的用语:"full gate"——linting、构建、运行所有测试。"我慢慢开始用它们的语言了。"

8. 为什么资深工程师用不好AI

播客中,主持人问他为什么很多资深工程师对AI编程持怀疑态度。他讲了一个具体的例子。

"一周前我看到Nala Coco的一篇博客,我非常尊敬他,从他那学到很多。但那篇文章在批评当前模型的工作方式。据我理解,他写了一个提示,放进Claude网页版,按发送,拿到输出,跑了一下,编译不过,然后他就失望了。"

"但你觉得我能第一次就写出没bug的代码吗?这些模型是我们集体人类知识的幽灵。它们在很多方面工作方式和人很像。当然你第一次不会做对。这就是为什么你需要闭环反馈。而且你不是发一个提示给模型,你是开始一段对话。"

他还提到:Coco抱怨模型用了旧API。"是的,因为你没指定macOS版本。所以它做了一个假设,默认用旧API,因为训练数据里旧数据比新数据多。"

"你越理解这些小东西怎么思考,你的提示就越好。这是一种技能,和其他技能一样需要练习。"

他观察到两类人在AI辅助开发上的分野:

适应很快的人:关心产品、关心结果、喜欢把东西做出来的人。他们可能不那么在意代码具体怎么写,但非常在意软件用起来什么感觉、能不能解决问题。

适应困难的人:真正热爱解决算法难题、享受亲手写代码的人。这恰恰是AI最擅长的部分,所以这类人会感到痛苦,甚至抗拒AI工具。

"有些人真的很喜欢解决硬问题,比如算法——他们不喜欢产品那一套,什么营销啊用户反馈啊。他们更喜欢单纯的技术挑战。但这恰恰是AI正在接管的工作。"

他自己在PSPDFKit管理过70多人团队的经历反而成了优势。带团队时你必须学会放手,接受下属写的代码不会完全符合你的风格。

"很多人没带过团队,没有这种经历——接受这不是我写的代码,但它能帮我达成目标,接下来我们可以改进它。这种迭代改进的思维方式,正是和AI协作需要的。"

9. Moltbot的诞生:一个"超级个人助手"的野心

Steinberger一直想要一个"超级个人助手"——不是那种每天早上发邮件说"这是你今天的三件事"的助手,而是一个真正理解你的存在。

"它会记住你上周和谁见了面。它会注意到你每次见某个朋友之后心情都不好,然后问你为什么。它会在某天早上叫醒你说:'嘿,我注意到你有三周没联系Thomas了,而且我查了他的Instagram,他现在在城里。要不要打个招呼?'——一个真正深度个人化的东西。几乎是电影《她》的反面。"

2024年夏天,模型还不够好,他搁置了这个想法。但他造了一大堆CLI工具——控制Google、控制床、控制灯、控制音乐——这些成了后来Moltbot的基础设施。

最初的版本叫"WhatsApp Relay"——他只是想用WhatsApp触发电脑上的操作。然后他去摩洛哥参加朋友的生日派对,整天在外面,只用WhatsApp和他的agent交流。

"它带我逛城市。它开玩笑。它能用WhatsApp以我的身份给其他朋友发消息。"

有一个时刻让他彻底被吸引住了。他在摩洛哥,发了一条语音消息——但他还没有实现语音消息功能,只是把文件路径当字符串传过去了。30秒后,agent回复了他的语音消息。

"我说:'你怎么做到的?'"

"'哦,你发了一个文件给我,我看了文件头,发现是OGG格式。我用FFmpeg把它转换了。然后我在你电脑上找Whisper,但没装。但我找到了OpenAI的API key。所以我curl了一下OpenAI的服务器,让它转写了。'"

"我当时想:holy cow。"这是Opus 4.5,它如此resourceful(足智多谋)。

他开始用它当闹钟。agent在伦敦的Mac Studio上运行,通过SSH连接到他在摩洛哥的MacBook,打开音乐,如果他不回复就把音量调大。为了让它工作,他加了心跳机制——每隔几分钟发一个提示"做点有趣的事,给我惊喜",让它变得主动。

"从安全角度看,这绝对是疯狂的。大概是史上最贵的闹钟。但太好玩了。"

他把这个展示给一起旅行的朋友。每个人都被迷住了。

10. 为什么是CLI而不是MCP

播客中,主持人问他为什么用CLI而不是MCP(Model Context Protocol,Anthropic推出的让AI调用外部工具的标准协议)。

"MCP作为权宜之计可以,但整个概念有点蠢。你必须在session加载时预先导出所有函数、所有工具、所有参数说明,然后模型发送精确的JSON,拿回JSON。但模型真正擅长的是使用bash。"

"想象一个天气服务。模型问有哪些城市,拿回500个城市。但它不能过滤这个列表,因为MCP不支持过滤。然后它问伦敦天气,拿回温度、风速、降水、50个字段——但我只想知道会不会下雨。用CLI的话,我可以用jq只取我要的字段。我可以把命令串起来。"

"我写了一个叫make-porter的工具,可以把任何MCP转换成CLI。所以你可以在Moltbot里用任何MCP——从手机上说'用Vercel的MCP做这个',它会去网站找到MCP、加载它、使用它——全部按需进行。"

11. 爆发:把有完整电脑权限的agent放进公开Discord

2026年1月1日,Steinberger做了一件"绝对疯狂的事":把他的agent——对他的电脑有完整读写权限的agent——放进了一个公开的Discord服务器。

"有人给Discord贡献了支持功能。我不确定要不要合并,最后还是合并了。然后我想:让我们试试,把我的agent加到Discord里。"

人们亲眼看到他用语音让agent查摄像头、控制家居、放音乐、看屏幕判断其他Codex任务跑完没有。

"它在后台看我的屏幕。我在厨房,告诉它'看看我的屏幕,我的agent们完成了吗?'它能看到终端,点进去,告诉我'你的Codex说这个这个'。"

一周之内,GitHub从100星涨到3300星。(到播客发布时,已经超过80000星。)

"每个亲身体验几分钟的人都上瘾了。这是某种新品类。有点像你当初不理解iPhone的广告、但一摸到实物就懂了的那种感觉。"

他说技术本身消失了。"你只是在手机上和一个朋友聊天,这个朋友恰好无限足智多谋,能访问你的邮件、日历、文件,能帮你建网站、做行政工作、抓取网页、给朋友打电话、给商家打电话订位。你不用想什么是上下文窗口。"

onboarding流程也是agent完成的。"最后两周,当项目真正火起来的时候,我告诉人们直接把agent指向代码库来配置它。我没有手动设置流程,因为agent可以做这个——而且因为产品是由agent构建的,它们对代码的命名方式和结构非常熟悉,所以它们特别擅长导航这个产品。"

12. 如果今天重建PSPDFKit

播客中,主持人问:如果今天用AI工具重建PSPDFKit,会有什么不同?

"我大概只需要30%的人。"

"找到合适的人会很难。你需要真正资深的工程师,真正理解他们在构建什么,但同时也能适应委托工作、知道哪些部分真正重要需要专注、哪些部分可以'vibe'。"

"你需要那种有产品愿景、能同时做设计和开发的人——高自主性、高能力——但人数可以大幅减少。"

他说现有公司会很难高效使用AI。"需要的不只是重构代码库,而是重构公司本身。"

13. 对前端规划方式的影响

传统上,前期规划很重要,因为修改成本高。现在还是这样吗?

"我仍然会规划,但我不会投入那么多,因为现在试一试、看结果、再调整变得容易太多了。调整和试验变得更像玩耍。"

"在公司时,我坚持每个功能都要先写提案。因为改动成本高——让下属改方向可能要花一两天。现在那个成本变成了分钟级别。"

"我一直有这种感觉,你不可能在构建之前就知道你想要构建什么。你在构建过程中学到太多东西,这些会反馈到你对系统最终形态的思考中。这是一个螺旋上升的过程。"

他仍然非常关心架构、技术债、可扩展性、模块化。Moltbot成功的原因之一是它非常容易扩展——他花了大量精力让添加新功能变得简单。"但我不需要读每一行代码。我只需要理解结构。"

14. 对新人的建议

"你需要无限的好奇心。学习的方式变了——你可以问一个无限耐心的机器任何问题。你可以checkout一个复杂的开源项目,问它为什么这样设计,它会解释给你听。但你必须真的想知道。大学目前还没设置好来教这些。"

"进入这个市场会更难。你需要构建东西来获得经验。我不认为你需要写很多代码,但你需要构建系统、理解系统。"

"通过痛苦来学习这种好奇心——这通常不是被教出来的。"

新人也有优势:他们不会被经验污染,会用老人想不到的方式使用agent——因为他们不知道"这样不行",而到那时候可能真的行了。

15. 未来:人人都会有一个AI朋友

"未来每个人都会有一个AI朋友——它理解你,了解你的一切,能替你做事,会主动帮你安排事情。需要大量token,但随着技术民主化,会逐渐普及到所有人。"

"我其实为Anthropic做了最好的营销。我不知道有多少人因为Moltbot订阅了200美元的订阅,很多人本来就有一个、又开了第二个,因为太耗token了。这不是说它低效——是因为人们太喜欢它了,一直在用,而它在后台spawn子agent、做一大堆事情让体验变得丝滑。"

Moltbot的设计哲学是让技术消失。你走在路上,看到一个活动海报,给Claude发张图片,它不只告诉你这个活动的评价,还会检查你的日历有没有冲突、朋友有没有在群里聊过这个。因为它有这么多上下文,它能给出比任何活在自己小盒子里的工具好得多的回答。

他造了一个记忆系统。"不完美,没什么是完美的。但已经感觉像魔法了。"

16. 关于"vibe coding"

"我不喜欢'vibe coding'这个词。"

"我称我做的事为**'agentic engineering'(agent工程)**,带个小星号。vibe coding从凌晨三点开始。"

"我仍然在心流状态中。和以前写代码时完全一样的感觉。但精神上更累,因为我不是管理一个员工,而是同时管理5-10个,在不同部分之间切换——这个新子系统、那个功能、那边的bug——我一直在脑子里跳来跳去。"

"我希望不必这样做。我相信这是过渡期的问题,总有一天模型和系统会快到我不需要这么并行化。但现在,要保持心流状态,我必须大量并行。"

他现在用来描述写代码的词语都变了。"weaving code into existing structure"(把代码织入现有结构)——织入。有时候你得改变结构让代码能织进去。

"我比以前写出更好的代码了——当时我自己写的也是真的好——但现在我有更好的文档、更好的测试覆盖。我从来不喜欢写测试,写文档也是。对我来说从来不是创造性表达。现在每次我设计一个功能,我都会问:这个怎么测试?我们怎么闭环?这自动把我推向更好的架构。"

Steinberger的核心洞察是:代码正在变成输出,提示词才是工作本身。他不读自己合并的大部分代码,但他对系统架构了如指掌。他让agent自己跑测试、自己调试、自己修复,他的工作是设计反馈循环、把握产品方向、做架构决策。

在播客的最后,主持人问他推荐什么非技术相关的工具或产品。他说是一个便宜的Android照片相框,可以上传照片、朋友可以发邮件给它显示照片。"从技术角度看很垃圾,运行Android,动画都有点卡。但它给我无限的快乐,因为它是低科技,只是显示照片,提醒我生活中的快乐时刻。我买了iPhone 17,到现在还没拆封,因为懒得把SIM卡移过去。这个200块的小设备给我的快乐比最新的iPhone多。"

什么帮他保持理智?去健身房,和教练练,把手机锁在柜子里。"然后我真的有一个小时只感受自己,在当下,不被通知分心,不想摸手机。我们需要更多这样的时间。"

有时他出门散步,把手机留在家里。"感觉很吓人。手机几乎像一个器官了。你的身体知道它在哪里,如果你不知道手机在哪里,你会panic。"

Q1: 用AI agent写代码最重要的原则是什么?

闭环(Closing the Loop)。设计系统让agent能够自己编译、运行测试、验证输出。如果agent不能验证自己的工作,你就要花大量时间手动检查;如果它能自己验证,你只需要设定目标然后检查结果。这也会倒逼更好的架构——因为你必须把系统设计成可验证的,而可验证性本身就导向好设计。

Q2: 为什么Steinberger选择Codex而不是Claude Code?

Claude Code快但输出经常第一次跑不通,而且会回来问澄清问题,打断心流。Codex慢——一个任务可能要40分钟到一个小时——但它会安静地读大量文件,理解整个代码库上下文,输出几乎总能直接工作。如果你同时开5-10个agent并行处理不同任务,Codex的慢反而不是问题,整体效率更高。

Q3: PR和代码审查在这种工作流里还重要吗?

PR的性质变了——Steinberger现在更想看提示词而不是代码,因为提示词反映思考过程,代码只是输出。代码审查在他的工作流里基本消失了,取而代之的是架构讨论。本地测试通过就合并,不等远程CI。他甚至说,如果有人提交几行小修复的PR,他宁愿自己打"fix"Codex跑几分钟——这比review PR更快。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 02:52:58 HTTP/2.0 GET : https://f.mffb.com.cn/a/469688.html
  2. 运行时间 : 0.198765s [ 吞吐率:5.03req/s ] 内存消耗:4,481.36kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=88e90c261b08cd67e28c53d088352738
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001070s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001840s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000754s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000707s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001599s ]
  6. SELECT * FROM `set` [ RunTime:0.000634s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001903s ]
  8. SELECT * FROM `article` WHERE `id` = 469688 LIMIT 1 [ RunTime:0.001336s ]
  9. UPDATE `article` SET `lasttime` = 1770490378 WHERE `id` = 469688 [ RunTime:0.010005s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.002935s ]
  11. SELECT * FROM `article` WHERE `id` < 469688 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001296s ]
  12. SELECT * FROM `article` WHERE `id` > 469688 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001094s ]
  13. SELECT * FROM `article` WHERE `id` < 469688 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002212s ]
  14. SELECT * FROM `article` WHERE `id` < 469688 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004434s ]
  15. SELECT * FROM `article` WHERE `id` < 469688 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007373s ]
0.202330s