ESC
↑↓ 选择↵ 打开esc 关闭⌘K 唤起
← 返回速读报告 回声编辑部 · NO.39 · 全文

Google PM Runs 7 Claude Code Agents to Build Apps (0 Employees)

频道: Aakash Gupta
视频: https://www.youtube.com/watch?v=kQelqKkI-EQ
原文语言: en
统计: 共 131 轮 · Gabor 72 · Aakash 59


[0:00] Gabor

AI agents are writing PRDs, designing in Figma, writing Jira tickets, and even shipping code, all from 100 p.m. at 4:00 a.m. I set up these agents on a way how I would imagine in a real world I would work with a group of software engineering team members. If you build a good specification and you break it down appropriately, then you will have a much better quality end product. What breaks when you give AI agents too much context and what's your honest take on co-work and dispatch?

AI agent 在写 PRD、在 Figma 里做设计、写 Jira 工单,甚至直接发布代码——这一切都是凌晨 4 点由 100 个 agent 在干。我设置这些 agent 的方式,就是按照我在真实世界里跟一支软件工程团队协作时会想象的样子来配置的。如果你能写出一份好的 specification,并且把它合理地拆解开,那你最终拿到的产品质量会高得多。给 AI agent 灌太多 context 会出什么问题?还有,你对 co-work 和 dispatch 的真实看法是什么?


[0:33] Gabor

Why pudding is just the rebranding of unmaintainable lowquality source code.

为什么说 vibe coding 不过是给那些没法维护的低质量源代码换了个马甲。


[0:38] Aakash

Gabbor Meer is a product manager at Google who has spent the last 5 months building AI powered apps using a team of specialized agents. And in today's episode, he's going to walk you through his agent setup and he's going to show you how you can go from zero actual app in the app store in just a couple of hours. the gap between you and the other PM in 2 years it's going to be huge. If people want to get started, where should they go?

Gabor Meer 是谷歌的一名产品经理,过去 5 个月他一直在用一支专门化的 agent 团队来打造 AI 应用。在今天这期节目里,他会带你走一遍他的 agent 配置,并向你展示如何在短短几个小时内,从零做出一个真正上架 App Store 的应用。两年后,你和别的 PM 之间的差距会非常巨大。如果大家想上手,应该从哪里开始?


[1:02] Gabor

The best place to start, if you just want to do it for yourself, pull up your favorite AI JPT Gemini Cloud Code and start asking questions how to do things.

最好的起点,如果你只是想自己玩玩,就打开你最喜欢的 AI——ChatGPT、Gemini、Claude Code——然后开始问它怎么做这些事。


[1:13] Aakash

If you stay to the end, you'll see a live demo of God's agent workflow and see how to set up your own agent team. Before we go any further, do me a favor and check that you are subscribed on YouTube and following on Apple and Spotify podcasts. And if you want to get access to amazing AI tools, check out my bundle where if you become an anal subscriber to my newsletter, you get a full year free of the paid plans of Mobin, Arise, Relay app, Dovetail, Linear, Magic Patterns, Deep Sky, Reforge Build, Descript, and Speechify. So be sure to check that out at bundle.ac.com. And now into today's episode. As PMs, we've been working in this model where we work with human developers, human designers. But what if cloud code was your designer, your developer, your systems analyst. I've had plenty of episodes on cloud code, but today's episode is different. It's not a PM operating system. It's a startup operating system. Gabbor Meyer is a PM at Google who has been staying up till 4 or 5 a.m. every day playing in cloud code and he has figured out how to create an entire startup inside Cloud Code. Front-end engineers, backend engineers, legal counsel and in today's episode he's going to walk you through his agent setup and he's going to show you how you can go from zero to an actual app in the app store in just a couple of hours. Gabbor, welcome to the podcast.

如果你看到最后,会看到 Gabor 的 agent 工作流的现场演示,看他怎么搭建自己的 agent 团队。在我们继续之前,帮我个忙,确认一下你已经在 YouTube 上订阅了,也在 Apple 和 Spotify 播客上关注了。如果你想拿到一堆超棒的 AI 工具,看看我的福利包——只要你成为我 newsletter 的年付订阅者,就能免费获得整整一年这些产品付费版的使用权:Mobbin、Arise、Relay app、Dovetail、Linear、Magic Patterns、Deep Sky、Reforge Build、Descript 和 Speechify。所以一定去 bundle.ac.com 看看。现在进入今天的正题。作为 PM,我们一直在一种模式里工作:跟人类开发者、人类设计师协作。但如果 Claude Code 成了你的设计师、你的开发者、你的系统分析师呢?我做过很多期讲 Claude Code 的节目,但今天这期不一样。它不是一套 PM 操作系统,而是一套创业操作系统。Gabor Meer 是谷歌的 PM,他每天熬到凌晨四五点泡在 Claude Code 里,已经摸索出怎么在 Claude Code 里搭出一整家创业公司——前端工程师、后端工程师、法律顾问。在今天这期节目里,他会带你走一遍他的 agent 配置,并向你展示如何在短短几个小时内,从零做出一个真正上架 App Store 的应用。Gabor,欢迎来到节目。


[2:43] Gabor

Thank you so much. Uh, I'm glad to be here.

非常感谢。呃,很高兴能来。


[2:46] Aakash

Gabbor, you told me something pretty crazy, which is that you're not just using Cloud Code for PM tasks. You're using it to replicate a company. You have a 15 agent team, CTO agent, design agent, coding agent. Can you walk us through your agent setup in cloud code?

Gabor,你跟我说过一件挺疯狂的事——你不只是拿 Claude Code 来做 PM 的活,你是用它来复刻一整家公司。你有一支 15 个 agent 的团队,CTO agent、设计 agent、写代码的 agent。能带我们走一遍你在 Claude Code 里的 agent 配置吗?


[3:01] Gabor

Yes, absolutely. So, uh I uh have actually now I just realized that it's 21 agents apparently according to what uh I can see on the screen. Uh so the probably the most important agent that I use is the system analyst agent. I set up these agents on a way how I would imagine in a real world I would work with a group of u software engineering team members. So I have someone who looks after uh the brand. I have someone uh who looks into whether our code is maintainable. uh I have a CTO who looks after the more strategic technical decisions. I have designer agents. I have uh agents that implement uh the actual software uh the coding part of it. I have um an agent which takes care of the performance of the application. I have another designer agent. I have a product council which uh looks into how do we handle data? How do we store data? Just to make sure that we are not leaving anything uh available for bad actors. Uh we also have a uh product spec architect which usually checks for me whether our specification is well structured and easy uh to understand. This will be important later. I will walk you through that. We have a test architect which designs how uh we guarantee the quality of uh the whole application and then I have a UX flow architect. This will be very interesting when we are designing the clickable prototype which is the basis of the app. We'll come back to the UX flow architect as well.

当然可以。呃,其实我刚发现,根据屏幕上显示的,现在已经是 21 个 agent 了。呃,我用得最重要的一个,大概是 system analyst agent。我设置这些 agent 的方式,就是按照我在真实世界里跟一支软件工程团队成员协作时会想象的样子来的。所以我有一个负责看品牌的,有一个专门看我们代码是否可维护的,有一个 CTO 负责更偏战略的技术决策。我有设计 agent,有真正去实现软件、负责写代码那部分的 agent。我还有一个负责应用性能的 agent,又有一个设计 agent。我有一个 product council,专门琢磨我们怎么处理数据、怎么存数据,就是为了确保我们不会留下任何能被坏人钻空子的东西。我们还有一个 product spec architect,它通常帮我检查我们的 specification 结构是否清晰、是否好理解——这一点后面会很重要,我会带你细看。我们有一个 test architect,负责设计我们怎么保证整个应用的质量;然后我还有一个 UX flow architect。等我们设计可点击原型(也就是 app 的基础)的时候,它会非常有意思。我们后面也会再回到这个 UX flow architect。


[4:57] Aakash

Amazing. Can you show us inside one of these agent markdown files since you mentioned system analyst? I'd love to see under the covers what that definition looks like. Yes, of course. I can show you this is my system analyst agent. So, uh this basically breaks down product requirements uh and technical specifications and it pretty much operates as you would expect from a system analyst. So, if there's anything ambiguous, it asks you questions. Uh it also takes care of dependencies uh so that they are properly documented. And I find that the system analyst agent is really a key player in my setup because the system analyst agent um is the one that I use to create both my documentation as well as uh my tickets for the development.

太棒了。既然你提到了 system analyst,能给我们看看其中一个 agent 的 markdown 文件里面是什么样吗?我特别想看看底层那份定义长什么样。当然可以。我给你看,这是我的 system analyst agent。它基本上就是把产品需求和技术规格拆解开,运作方式跟你对一个系统分析师的预期差不多。所以如果有什么含糊不清的地方,它会反过来问你问题。它还会处理好依赖关系,确保它们被妥善地记录下来。我发现 system analyst agent 真的是我整套配置里的关键角色,因为它既是我用来生成文档的那个,也是我用来生成开发工单的那个。


[5:52] Gabor

Amazing. So that's the highle view of the system guys. Now we're going to show you through a live demo 02 test flight. Where should we get started? Yeah, let me walk you through how I build and to make it more accessible for product managers who might not be fully comfortable using cloud code just yet. Let me start this whole process from the cloud app, the desktop app or this is basically the consumer app that you can run on your mobile device as well. So um the way how I usually start building anything is that I start creating a um description of what I want to build. And the reason why I love to use the consumer app for this is because it allows me to use it even let's say while I'm walking my dog. I can put claude into voice mode and I can talk to claude and I can define new features. I can ideate what I want to build. So let me show you how I get started. At first I will tell Claude to act like u it is a system analyst and then I will ask code uh to listen and create the idea with me of a new application that we will build today. The application that we will build today is a uh AI chat application that helps ice hockey fans understand the rules of ice hockey better. Why exactly that? because I was an ice hockey referee for 20 years and I would have always loved if the fans and the players uh or even ourselves referees would have a better understanding of the rules and an easier way to find the applicable rules for some niche situations. So that's what we will build today. How does that sound?

太棒了。好,各位,这就是整个系统的高层视图。现在我们要通过一个现场演示带你们走一遍,到 TestFlight 这一步。我们从哪儿开始?好,让我带你看看我是怎么搭的。为了让那些还没完全玩转 Claude Code 的产品经理也能跟上,我先从 Claude 这个桌面 app 开始整个流程——这其实就是那个消费端 app,你在手机上也能跑。呃,我通常开始做任何东西的方式,都是先写一段我想做什么的描述。我之所以特别喜欢用消费端 app 来做这件事,是因为它让我哪怕在遛狗的时候也能用。我可以把 Claude 切到语音模式,跟它说话,定义新功能,构思我想做什么。让我演示一下我怎么开始。一开始我会告诉 Claude 扮演一个 system analyst,然后让它来听,跟我一起构思今天要做的这个新应用。我们今天要做的应用,是一个 AI 聊天应用,帮冰球迷更好地理解冰球规则。为什么偏偏是这个?因为我当了 20 年冰球裁判,我一直特别希望,球迷、球员、甚至我们裁判自己,都能对规则有更好的理解,能更方便地为一些冷门情况查到适用的规则。所以这就是我们今天要做的东西。听起来怎么样?


[7:58] Aakash

Sounds useful.

听起来挺有用。


[8:00] Gabor

All right, cool. So the very first thing that I do and again you can do this on your uh mobile phone. Open your cloud app or your favorite uh AI app whatever it is uh chat GPT Gemini you name it and start by uh and by the way I will use dictation here. So sometimes I will talk to the camera but sometimes I will talk to cloud. Now I will talk to cloud and u I will set up a system analyst and this is how I do it. So you don't necessarily have to define everything by yourself. You can use the the LLMs and the genai to help you craft stuff. So uh look at this. Can you tell me what is the difference between a good system analyst and a bad system analyst in a software development team? And in general, can you define me the role of a system analyst in a software development environment? Please be as detailed as possible about everything that the system analyst does and always point out what is the difference between a good and a not so good system analyst. So as the first step, I uh basically just ask for a definition of what a system analyst does. When I send in this prompt, it will now tell me what a system analyst does. And it will point out what's the difference between a good system analyst and a bad system analyst. requirement documentation, um requirement elicitation, stakeholder management, process and system modeling. So it describes you pretty well what are the things that a system does. Gabbor has a course on Maven called Go from PM to AI builder with claude code. It's a four-week program. The pitch is simple. You ship a real app, not a prototype, not a certificate, an actual app on the App Store or Google Play with an AI feature built in. He walks you through the full stack you've seen today, plus more. Cloud Code, Flutter, Firebase. You get live workshops every Thursday, a build companion app with milestone checklists, and Gobar in the trenches with you until your app ships. It's $2,995, but you get a discount with my link in the description. that includes the full workflow, lifetime access to recordings, and a community of other PMs building alongside you. This is for mid to senior PMs who want to become AI PMs but don't get to build AI products in their current roles. Technical IC's with a product idea, PMs in career transition who know a certificate won't differentiate them. You don't need to know how to code. You just need a willingness to understand how software works. The link is in the description. If you've enjoyed today's episode and thought, I want to build that, check out his course. Today's episode is brought to you by Amplitude. Replays of mobile user engagement are critical to building better products and experiences, but many session replay tools don't capture the full picture. Some tools take screenshots every second, leading to choppy replays and high storage costs from enormous capture sizes. Others use wireframes, but key moments go missing, creating gaps in your understanding. Neither approach gives you a truly mobile experience. Amplitude does things differently. Their mobile replays capture the full experience. Every tap, every scroll, and every gesture with no lag and no performance yet. It's the most accurate way to understand mobile behavior. See the full story with Amplitude. As the next step, I will tell the app to act like a good system analyst and help me define a product that we will build. For full context, um I will provide the system analyst agent links to our documentation. So actually let me explain how I store my documentation. So for documentation and why is it needed? I use the Atlasian Jira and Confluence for documentation. Let's focus at first on Confluence. I use Confluence just because it's pretty much an industry standard in many companies. So, I thought it's a basic choice, but you can use whatever uh software um documentation tool that you want. There are a bunch out there. Um I picked this one because it also integrates through an MCP to cloud. So I uh went into cloud. I connected through the settings and connectors the OLAS MCP and I hooked up um my uasian account. And now I have a completely empty Confluence space and this is where our docu our documentation will live. and I have a completely empty comb board where our software development tickets will live. Why do we need this development? The reason why we need this development um documentation is because if we document our decisions, our specification and our software development steps really well, they will be replicatable and and your app will be maintainable. A very typical mistake that many product managers or in general people who V code do that they go into a V coding app or setup and they start by giving one prompt and then they expect that at the end of that one prompt there will be a completely beautifully done software on the other side. But this is the equivalent of you wanting to build a new house. You go to one guy, you speak to that one guy and tell the one guy, "Build me a three-bedroom house with two bedrooms." And then half a year later, you come back and surprise, the house might not be just how you like it. But instead, if you would have spoken to a team leader of a team, let's say an architect uh who has a a complete team that builds the house and specified what you need, you probably would have had a much better outcome in uh the final uh house building instead of the mess that you got when you just spoke to one guy one time, right? And this is the same here. If you build a good specification and you break it down appropriately, then you will have a much better uh quality end product. So let me uh give the two links the confluence and the Jira link to my system analyst agent and start talking to it as uh we are brainstorming around the app. So what I'm hearing is that the classic product management skill makes you a better vibe coder. Where do we go from here?

好嘞,酷。那么我做的第一件事——再说一遍,你在手机上就能做——打开你的 Claude app,或者你最喜欢的任何 AI app,不管是 ChatGPT、Gemini,随你叫什么,然后开始。顺便说一句,这里我会用语音输入。所以有时候我是在对着镜头说话,但有时候我是在对 Claude 说话。现在我要对 Claude 说,我要设置一个 system analyst,我是这么做的。所以你不一定非得自己把所有东西都定义好。你可以借助 LLM 和生成式 AI 帮你打磨这些内容。来,看这个。「你能告诉我,在一个软件开发团队里,一个好的系统分析师和一个差的系统分析师有什么区别吗?另外笼统地说,你能给我定义一下系统分析师在软件开发环境中的角色吗?请尽可能详细地说明系统分析师所做的一切,并且始终指出好的系统分析师和不那么好的系统分析师之间的区别。」所以第一步,我基本上就是先问一个系统分析师是干什么的。我把这个 prompt 发出去后,它就会告诉我系统分析师是干什么的,并指出好的和差的系统分析师之间的区别——需求文档、需求挖掘、干系人管理、流程和系统建模。它把系统分析师要做的事情给你描述得相当到位。Gabor 在 Maven 上有一门课,叫「用 Claude Code 从 PM 进阶为 AI builder」。这是一个为期四周的项目。卖点很简单:你会真正发布一个应用——不是原型、不是结业证书,而是一个真正上架 App Store 或 Google Play、内置 AI 功能的应用。他会带你走一遍今天你看到的整套技术栈,外加更多内容:Claude Code、Flutter、Firebase。你每周四都有现场工作坊,有一个带里程碑清单的「构建伴侣」app,还有 Gabor 全程跟你一起泡在战壕里,直到你的 app 上线。课程定价 2,995 美元,但用我描述里的链接能拿到折扣。这包含完整工作流、录播的终身访问权,以及一个由其他一起在做产品的 PM 组成的社群。这门课适合那些想成为 AI PM、但在现有岗位上没机会做 AI 产品的中高级 PM;适合手里有产品 idea 的技术型 IC;也适合正在职业转型、深知一纸证书无法让自己脱颖而出的 PM。你不需要会写代码,你只需要有意愿去理解软件是怎么运作的。链接在描述里。如果你喜欢今天这期节目,心里想着「我也想做这个」,那就去看看他的课。今天这期节目由 Amplitude 赞助。回放移动端用户的互动,对打造更好的产品和体验至关重要,但很多 session replay 工具捕捉不到完整画面。有些工具每秒截一次图,导致回放卡顿,而且巨大的捕捉体积带来高昂的存储成本。还有些工具用线框图,但关键时刻会丢失,让你对用户的理解出现断层。这两种做法都给不了你一个真正的移动端体验。Amplitude 的做法不一样。它的移动端回放捕捉的是完整体验——每一次点按、每一次滚动、每一个手势,没有延迟,也没有性能损耗。这是理解移动端行为最精准的方式。用 Amplitude 看到完整的故事。下一步,我会让这个 app 扮演一个好的系统分析师,帮我定义我们要做的产品。为了给它完整的 context,我会给 system analyst agent 提供我们文档的链接。其实,让我先解释一下我是怎么存文档的。说到文档,以及为什么需要它——我用 Atlassian 的 Jira 和 Confluence 来做文档。我们先聚焦在 Confluence 上。我用 Confluence 纯粹是因为它在很多公司里几乎是行业标准,所以我觉得这是个稳妥的选择,但你想用什么文档工具都行,外面有一大堆。我挑这个,还因为它能通过 MCP 跟 Claude 打通。所以我进到 Claude 里,在设置和 connector 里连上了 Atlassian 的 MCP,把我的 Atlassian 账号挂了上去。现在我有一个完全空白的 Confluence 空间,我们的文档就会存在这儿;还有一个完全空白的看板,我们的软件开发工单会存在那儿。我们为什么需要这套文档?原因是,如果我们把决策、specification 和软件开发步骤都记录得很好,它们就是可复现的,你的 app 也就可维护。很多产品经理、或者笼统地说很多搞 vibe coding 的人,会犯一个非常典型的错误:他们打开一个 vibe coding 的 app 或环境,上来就甩一个 prompt,然后指望这一个 prompt 跑完,另一头就会蹦出一个做得漂漂亮亮的完整软件。但这就好比你想盖一栋新房子,你找了一个人,跟那一个人说「给我盖一栋三室的房子,要两间卧室」,然后半年后你回来,惊喜——房子可能根本不是你想要的样子。但反过来,如果你找的是一个团队的负责人,比如一个手下有完整团队来盖房子的建筑师,并把你的需求说清楚,那你最终拿到的房子,质量很可能比你只跟一个人说一次时拿到的那一团糟要好得多,对吧?这里也是一样。如果你写出一份好的 specification,并把它合理地拆解,那你最终拿到的产品质量会高得多。那我现在就把这两个链接——Confluence 链接和 Jira 链接——给我的 system analyst agent,然后开始跟它对话,我们就围绕这个 app 来头脑风暴。所以我听到的是,经典的产品管理能力会让你成为一个更好的 vibe coder。我们接下来往哪儿走?


[15:36] Gabor

So from here I asked uh the cloud app to tell me what a good system analyst and the bad system analyst does. And now I will ask uh the system analyst or claude to act like a good system analyst. And I will provide the system analyst the idea or the description of what I want to build. And I will also give the system analyst u my confluence page and jira just as a context that this is where we will save everything that we discussed. So this is this is how I do it. Okay. Please act like you are a good system analyst and your goal will be to help me create a comprehensive documentation for an application that we will build. It's important that at first I don't want you to start writing any documentation. I want you to ask clarifying questions until you have a complete comprehensive and full understanding of what we are building. Please ask as many clarifying questions as you need to, but ask questions one at a time because I might get overwhelmed if you ask too many questions at once. Also I provide you a confluence and the jira link that you can reach through the atlasian mcp. These are the only confluence space and jira boards that you can use. Please do not touch any other board or space or project through the mcp only these two. This is there were a couple of important things in this prompt. Firstly, um it's important that you ask the agent to ask you questions before moving forward. Um different agents have different tendencies. Um some agents or some LLMs love to start coding instantly. Some agents uh love to start writing instantly. So that's why I was telling Claud do not start writing but ask questions. So that's first important point. The second important point is that you want to tell Claude to ask you questions one at a time because sometimes it comes back with like 25 questions in which case you easily get overwhelmed and it's very hard to answer all of the questions. So if it asks one at a time then it's a much more linear conversation and uh yeah obviously giving the Jira and the Atlasian link uh makes sure that you have all your project related stuff at one place. So let me just uh add those links. Oops, I forgot that uh this also puts it on my clipboard. So here are the links. Yeah. So now it will set up and the next step I will define what we want to build. It's confirming that it will just ask me questions. Now it's checking the space asks my permission to access those spaces.

那么从这儿开始,我让 Claude app 告诉我一个好的系统分析师和一个差的系统分析师都干些什么。现在我会让这个 system analyst(也就是 Claude)扮演一个好的系统分析师,并把我想做什么的 idea 或描述提供给它。我还会把我的 Confluence 页面和 Jira 一并给它作为 context,告诉它我们讨论的所有东西都会存在这里。所以我是这么做的。「请扮演一个好的系统分析师,你的目标是帮我为一个我们将要做的应用创建一份全面的文档。重要的是,一开始我不希望你动笔写任何文档。我希望你不断问我澄清性的问题,直到你对我们要做的东西有一个完整、全面、彻底的理解。需要问多少澄清性问题都行,但请一次只问一个,因为如果你一次问太多,我可能会招架不住。另外我给你一个 Confluence 链接和一个 Jira 链接,你可以通过 Atlassian MCP 访问它们。这是你唯一能用的 Confluence 空间和 Jira 看板。请不要通过 MCP 碰任何其他的看板、空间或项目,只能用这两个。」这个 prompt 里有几个很重要的点。第一,重要的是你要让 agent 在往下走之前先问你问题。不同的 agent 有不同的倾向,有些 agent 或者说有些 LLM 特别爱立刻开始写代码,有些特别爱立刻开始写东西。所以我才会告诉 Claude,别开始写,先问问题。这是第一个要点。第二个要点是,你要让 Claude 一次只问一个问题,因为有时候它一上来就甩 25 个问题,那种情况下你很容易招架不住,很难把所有问题都答完。但如果它一次只问一个,对话就会线性得多。然后嘛,显然,把 Jira 和 Atlassian 的链接给它,能确保你所有跟项目相关的东西都集中在一处。那我就把这些链接加上去。哎呀,我忘了这同时也复制到我剪贴板里了。好,链接在这儿。嗯,那现在它就会开始设置了,下一步我会定义我们要做什么。它正在确认它只会问我问题。现在它在检查那个空间,请求我授权访问那些空间。


[19:15] Aakash

One thing I'm noticing is that the average person, they would just want to jump in. They wouldn't want to define the role of a system analyst create the connection to Atlassian. And what you're doing is you're putting effort in the scaffolding up front so that as you go along building, you don't run into kind of spaghetti code, undocumented code that you can't build on top of. Is that right?

我注意到一点:普通人会上来就直接开干,他们不会去定义系统分析师的角色、去建立和 Atlassian 的连接。而你在做的,是在前期把脚手架搭好,这样你一路往下构建的时候,就不会撞上那种一团乱的代码、没文档、根本没法在上面继续叠东西的代码。是这样吗?


[19:37] Gabor

That is absolutely right. Um the spaghetti code has um a slightly different angle to it as well. Um because often times when people who don't understand code and yeah I have an engineering background but I haven't done uh industrial level coding for like 15 years. Um we wouldn't be able to recognize when there are major issues uh in how the software is structured. Uh, and I read um on Reddit a comment about VIP coding which was saying something like VIP coding is just the rebranding of unmaintainable lowquality source code and it it definitely um hit home with me. So um what I did I created uh a spaghetti agent which I think my setup called like code maintainability agent or something like that. But what I told um that the spaghetti agent should do is that it should make sure that there are no circular references that our commenting in the code is high quality that naming conventions are followed. You know these are things that as a product manager I remember that we were always very mindful of when doing software development. So I just told the agent uh to watch out for these and when I ran it for the first time on on my codebase it did uh catch some of those issues. Nice. Cool. All right. So um as the next step we need to define what do we want to build. But before we do so, I want to make one differentiation. Um, an agent or a role that I set up here in this discussion in this chat in the cloud app is not available in cloud code. So in cloud code, we actually need to set up our agents separately. And we will have a system analyst there and we have a system analyst here. But they are not exactly the same. So my system analyst agent setup will be separate uh there and it will act on its own behalf whereas here it is just acting like a system analy system analyst. Does it make sense?

完全正确。不过「一团乱的代码」这事还有一个略微不同的角度。因为很多时候,那些不懂代码的人——是的,我有工程背景,但我已经有大概 15 年没做过工业级编码了——我们其实没法识别出软件结构上什么时候出了大问题。我在 Reddit 上读到一条关于 vibe coding 的评论,大意是说,vibe coding 不过是给那些没法维护的低质量源代码换了个马甲,这句话真的戳中了我。所以我做了什么呢?我建了一个「spaghetti agent」(意大利面条代码 agent),在我的配置里好像叫 code maintainability agent 之类的。我告诉这个 spaghetti agent 要做的事,就是确保不存在循环引用、代码里的注释质量要高、命名规范要被遵守。你知道,这些都是我们以前做软件开发时一直很在意的东西,作为产品经理我还记得。所以我就让这个 agent 留意这些,第一次在我的代码库上跑它的时候,它确实揪出了其中一些问题。不错。酷。好,那下一步我们需要定义我们要做什么。但在那之前,我想做一个区分。我在 Claude app 里这场讨论、这个对话里设置的 agent 或角色,在 Claude Code 里是用不上的。所以在 Claude Code 里,我们其实需要单独再设置我们的 agent。我们在那边会有一个 system analyst,这边也有一个 system analyst,但它俩并不完全是一回事。所以我那个 system analyst agent 的配置在那边是独立的,它会以自己的身份行事;而在这边,它只是在扮演一个系统分析师。说得通吗?


[22:10] Gabor

Yeah. Cool. Uh and just to accelerate things, let me actually kick off the creation of those agents on uh the cloud code side because it will take a couple of minutes. So uh it can run in the background. It will be very useful for us. First we will uh want to set up the agent. So uh let me tell Claude that we will do this. And right now um if I check what agents I have, I literally have no agents, right? Uh sorry, let actually I was not in cloud yet. So let me start cloud. This is the first time we are starting in u this um space. So I expect that I will have no agents. Uh, oh interesting. I have interesting. Okay. I have one systemized agent which probably comes from a global u agent setup that I might have set up previously which is all over user specific instead of just being uh project specific. Yeah, it's a user agent but I don't have any of the other agents. But now we will set them up. So the way I usually set them up is this. I will give you two files now. One will be an agent setup with several agents that I want to use in this project. And I will also give you a um different file which has a couple of processes that I use in development such as few steps defined how to handle bugs or few steps defined how to create new features. Please add this to the project memory. By the way, do you also say please when you talk to AI? I don't know why I do it, but I always say please.

嗯。酷。呃,为了加快进度,我现在干脆先在 Claude Code 那边把这些 agent 的创建给启动起来,因为这要花几分钟,可以让它在后台跑,对我们会很有用。首先我们要设置 agent。那我先告诉 Claude 我们要干这件事。眼下,如果我看一下我现在有哪些 agent,我是真的一个 agent 都没有,对吧。呃,不好意思,其实我刚才还没进 Claude,那我把 Claude 启动一下。这是我们第一次在这个空间里启动,所以我预期我会一个 agent 都没有。呃,咦,有意思。我有——有意思。好吧,我有一个 system 化的 agent,它八成来自我之前可能设置过的一个全局 agent 配置,是 user 级别(对用户全局生效)的,而不是只对当前 project 生效。对,它是个 user 级 agent,但其他那些 agent 我都没有。不过现在我们就来把它们设置起来。我通常的设置方式是这样:「我现在给你两个文件。一个是 agent 配置,里面有我想在这个 project 里用的几个 agent。我还会给你另一个文件,里面有我开发时用的一些流程,比如定义了几步该怎么处理 bug,定义了几步该怎么创建新功能。请把这些加到 project memory 里。」顺便问一句,你跟 AI 说话的时候也会说「请」吗?我不知道我为什么会这样,但我总是说「请」。


[24:23] Aakash

No, but I do give it encouragement. I will be like, okay, you've given me a seven and a half out of 10 draft. Now, we need to get it to eight and a half. Here's what we can do.

不会,但我会给它鼓励。我会说,好,你给了我一份 10 分里能打 7 分半的初稿,现在我们得把它弄到 8 分半。我们可以这么做。


[24:35] Gabor

Yeah. All right. So these are the agents and the workflows. So now if I hit enter, I need to authenticate. Okay. Um this part we will definitely ah we don't need to cut. Okay. Uh because it went to another screen. Just one sec. Okay, looking successful. Good. Let's try again. And just for context, uh quickly check where we stand with the usage of uh cloud. Uh oh that's my cloud API here. So right now we are standing on yeah 2% of the usage quotota. So uh we will see by the end of uh the building where do we uh stand on the usage quota.

嗯。好。那这些就是 agent 和 workflow。现在如果我回车,我需要做一下身份验证。好。呃,这部分我们肯定——啊,不用剪掉。好。呃,因为它跳到了另一个屏幕。稍等一下。好,看起来成功了。好。再试一次。顺便说一下 context,我快速看一眼我们现在 Claude 的用量到哪儿了。呃,哦这是我这儿的 Claude API。好,那现在我们用到了,嗯,配额的 2%。所以等我们整个东西做完,再看看我们的用量配额到了哪儿。


[25:58] Aakash

Oh this will be fun to see.

哦,这会很有意思。


[26:00] Gabor

Yeah. All right. Cool. So uh our code cloud code should be yeah building the agent and we can go back to code and start discussing what the application is supposed to do. Okay, this will be a longer uh dictation so bear with me. I want to create a mobile app which will have a flutter front end and a firebase back end. The mobile app will be a simple chat screen and in this chat interface the user will be able to have a discussion with an AI agent about rules of ice hockey specifically the international ice hockey federation rules IF rules and I want the user to be able to ask questions and get answers about the rules for this application. I will provide two sources for the AI agent in the background. One will be the official IIHF rule book and the other one will be the IHF situation book. These both will have to be converted into a vector embedding uh put into a vector database and uh converted into embeddings because I want to optimize my but firm. I want the agent to act like a good friend of the user who has been a referee for 20 years. No coincidence. I was a referee for 20 years in ice hockey. And I often when I was watching games, fans uh approached me and ask questions. So uh I imagine that I would be inside of that AI answering questions based on the latest rules. There is another aspect that the AI agent is for the 2025 2026 ice hockey season and something that you find online about an earlier situation. Let's say if you find a Reddit discussion about a specific and relevant situation from 2022 or 2024, they might be outdated or based on an outdated rule which might have changed ever since. Whenever you refer to such a discussion, always flag this for the user that the discussion or the source that you found online was from an older time, which might mean that the rules have changed ever since. If you can also double check the latest rules and the conclusions that you found in online sources. The primary lookup should always happen in the rule book. The secondary lookup should always happen in the situation book. And then the fallback should be the online search through the search API. when the user um asks you something uh our goal should be to find an accurate answer but we also want to be mindful of how much tokens we use for the AI conversation. So we want to be balanced between the amount of context that we send to LLMs and the accuracy uh of the answer that we are bringing in. There will be some usage limitations because I don't want uh an infinite amount of cost on the API. For this reason, if any user would have spent more than 20,000 words in either direction of the conversation combined. So this includes what the user said. This includes what the AI agent responded. So, anything that goes beyond 20,000 words should be stopped and the user's allowance should be suspended for 24 hours and the user should get a warning that for 24 hours you cannot ask more questions because you reached a limit. After the 24 hours expired, the user can again ask questions. the technical stack we clarified. Uh, also I want to make sure and this is exceptionally important that API keys should be stored in the Firebase secret store and never exposed to the front end or to the source code because I don't want additional cost uh incured by accidentally exposing my API keys. So, please make sure that API keys are never exposed to the code, especially not to the front end, and they are only stored inside of the Firebase Secret Manager. The app will be launching on iOS only for now, and the minimum version I'm preparing for is iOS 16 or later. Feel free to ask any clarifying questions that you may have. AI is writing code faster than ever, but can your testing keep up? Test Cube is the Kubernetes native platform that scales testing at the pace of AI accelerated development. One dashboard, all your tools, full oversight. Run functional and load tests in minutes, not hours, across any framework, any environment. No vendor lockin, no bottlenecks, just confidence that your AIdriven releases are tested, reliable, and ready to ship. Test Cube. Scale testing for the AI era. See more at testcube.io. That's te s kub.io/ a a k a s h. Are you looking to land your next product management job? I am accepting a group of just 30 product managers into a 12week cohort led by me where every Monday for 90 minutes I help you through your job search, creating your candidate market fit, updating your LinkedIn, updating your base resume. You're going to get personalized feedback and one-on-one mentorship sessions with my co-teers Ankut Fermani who is an AIPM at Atlassian and was a group product manager at Meta, Prasad Readyi who is a CPO and has been in product for over 26 years as well as my other live instructor Bar Jorski who's going to run another 90minute session per week where we really help you deliver on all of the deliverables in an actionable way and get you custom resume feedback, custom LinkedIn feedback. This program worked extremely well in cohort number one, which is just finishing up. 40% of the cohort got a job before the cohort even ended. We got jobs at places like OpenAI and Enthropic. So, if you want to get a higherp paying PM job, be sure to check out my landp.com cohort. The next cohort starts in February, runs through the end of April. The next time I'm opening up a cohort is in May. So, if you want coaching from me to land a PM job, this cohort is a no-brainer. It is a premiumbumppriced product. It is more expensive than the average product out there, but the return is huge. Most people who join the cohort see a salary raise anywhere from $10 to $100,000 in the first year. And so the ROI will be there within a year. And we guarantee two plus interviews. So if you don't get two interviews after completing the 12-week program and following all the steps, we will refund the money to you. So it's a no-brainer. Check it out at landpob.com. And now back into today's episode. I hope you're enjoying today's episode. Are you interested in becoming an AI product manager making hundreds of thousands of dollars more joining OpenAI anthropic? Then you might want to do a course that I've taken myself, the AIPM certificate ran by OpenAI product leader McDad Jaffer. If you use my code and my link, you get a special discount on this course. It is a course that I highly recommend. We have done a lot of collaborations together on things like AI product strategy. So check out our newsletter articles if you want to see the quality of the type of thinking you'll get. One of my frequent collaborators, Pavle Hearn, is the BuildLabs leader. So you're going to live build an AI product with Pavvel's feedback if you take this EIPM certificate. So be sure to check that out. Be sure to use my code and my link in order to get a special discount. And now back into today's episode. Now I stopped the dictation. The brilliant thing about dictation is that just imagine how long it would have taken me to type all of this up. I could have provided way deeper context uh to the uh to claude that compared to what I would have been able to provide while typing. And even when I was not super concise all along the way, it will figure it out and it will be a good outcome. Any observations you might have?

对。好嘞,酷。那么我们这边的 Claude Code 应该正在构建 agent 了,我们可以回到 Claude 这边,开始讨论这个应用应该做什么。好,这会是一段比较长的口述,请耐心一点。「我想做一个移动 app,它会有一个 Flutter 前端和一个 Firebase 后端。这个移动 app 就是一个简单的聊天界面,在这个聊天界面里,用户可以跟一个 AI agent 讨论冰球规则,具体来说是国际冰球联合会的规则(IIHF 规则),我希望用户能就规则提问并得到回答。这个应用,我会在后台给 AI agent 提供两个资料源:一个是官方的 IIHF 规则手册,另一个是 IIHF 情境手册。这两个都得被转换成向量 embedding,放进一个向量数据库——都转成 embedding,因为我想优化我的(成本)。我希望这个 agent 扮演成用户的一个好朋友,这个朋友当了 20 年裁判。不是巧合,我自己就当了 20 年冰球裁判。我看球的时候,经常有球迷过来问我问题。所以我设想,我就在那个 AI 里面,基于最新的规则回答问题。还有一个方面:这个 AI agent 是面向 2025–2026 冰球赛季的,而你在网上找到的、关于更早情况的内容——比如你找到一段 2022 或 2024 年关于某个具体且相关情况的 Reddit 讨论——它们可能已经过时,或者基于一条从那以后可能已经改了的旧规则。每当你引用这样一段讨论时,一定要给用户标注出来:你在网上找到的这段讨论或资料源是更早时期的,这可能意味着规则从那以后已经变了。如果可以的话,也请用最新规则复核一下你在在线资料源里得出的结论。首要查询应始终在规则手册里进行,次级查询应始终在情境手册里进行,然后兜底才是通过搜索 API 进行在线搜索。当用户问你什么的时候,我们的目标应该是找到一个准确的答案,但我们也要留意我们在这次 AI 对话上用了多少 token。所以我们要在发给 LLM 的 context 量和带回的答案的准确度之间取得平衡。会有一些用量限制,因为我不想在 API 上产生无限的成本。出于这个原因,如果任何用户在对话的任一方向上加起来花费超过 20,000 个词——这包括用户说的,也包括 AI agent 回的——那么任何超过 20,000 词的部分都应该被叫停,该用户的额度应被暂停 24 小时,并且用户应收到一条警告:在 24 小时内你不能再提问,因为你达到了上限。24 小时过后,用户又可以提问了。技术栈我们已经讲清楚了。另外我想确保——这一点极其重要——API key 应该存放在 Firebase 的 secret store 里,绝不能暴露给前端或源代码,因为我不想因为不小心把 API key 暴露出去而产生额外成本。所以请务必确保 API key 绝不会暴露到代码里,尤其不能暴露到前端,并且它们只存放在 Firebase Secret Manager 里。这个 app 目前只在 iOS 上发布,我准备支持的最低版本是 iOS 16 或更高。有任何澄清性的问题,尽管问。」AI 写代码的速度比以往任何时候都快,但你的测试跟得上吗?Testkube 是一个 Kubernetes 原生平台,让测试能以 AI 加速开发的节奏扩展。一个面板,整合你所有的工具,全面掌控。在任意框架、任意环境下,几分钟而不是几小时就能跑完功能测试和负载测试。没有厂商锁定,没有瓶颈,只有「你那些 AI 驱动的发布都经过测试、可靠、随时可上线」的笃定。Testkube,为 AI 时代扩展测试。更多内容见 testkube.io,就是 t-e-s-t-k-u-b-e.io/aakash。你正在找你的下一份产品经理工作吗?我正在招募一组仅 30 人的产品经理,进入一个由我亲自带教、为期 12 周的小组。每周一 90 分钟,我会帮你推进求职——打造你的「候选人—市场匹配度」、更新你的 LinkedIn、更新你的基础简历。你会得到个性化反馈,以及和我的几位联合导师一对一的辅导:Ankur Fermani,他是 Atlassian 的 AIPM,曾在 Meta 做 group product manager;Prasad Reddy,他是一位 CPO,在产品领域干了超过 26 年;还有我另一位现场讲师 Bar Jorski,他每周会再带一场 90 分钟的课,我们会切实帮你把所有交付物都落地出来,并给你定制化的简历反馈、定制化的 LinkedIn 反馈。这个项目在刚刚收尾的第一期里效果极好——40% 的学员在这一期还没结束就找到了工作。我们拿到了像 OpenAI 和 Anthropic 这样的公司的 offer。所以,如果你想拿到一份薪水更高的 PM 工作,一定去看看我的 landpm.com 项目。下一期 2 月开课,一直跑到 4 月底。再下一次开班要到 5 月。所以如果你想让我来辅导你拿下一份 PM 工作,这一期简直是闭眼入。它是一个高端定价的产品,比市面上一般的产品要贵,但回报巨大。大多数加入这一期的人,在第一年里看到的涨薪幅度从 1 万到 10 万美元不等。所以 ROI 在一年之内就能兑现。而且我们保证至少两个面试机会——如果你完成了这个 12 周的项目并照所有步骤做了之后,还没拿到两个面试,我们就把钱退给你。所以这是闭眼入。去 landpm.com 看看。现在回到今天的正题。希望你正享受今天这期节目。你有兴趣成为一名 AI 产品经理、多挣几十万美元、加入 OpenAI 或 Anthropic 吗?那你可能想上一门我自己也上过的课——由 OpenAI 产品负责人 Miqdad Jaffer 主理的 AIPM 证书课程。用我的优惠码和链接,能拿到这门课的专属折扣。这是一门我强烈推荐的课。我们一起做过很多合作,比如 AI 产品战略方面,所以如果你想看看你能得到的那种思考的质量,去看看我们 newsletter 的文章。我经常合作的伙伴之一 Pavel Hu??(Pavle Hearn)是 BuildLabs 的负责人,所以如果你上这门 AIPM 证书课,你会在 Pavel 的反馈下现场构建一个 AI 产品。所以一定去看看。一定用我的优惠码和链接来拿专属折扣。现在回到今天的正题。现在我把口述停掉了。语音输入妙就妙在——你想想,要是让我把这一整段都打出来得花多长时间。它让我能给 Claude 提供深得多的 context,远超我打字时所能提供的。而且即便我一路说得不那么精炼,它也能领会,最后结果依然不错。你有什么观察吗?


[36:02] Aakash

That was the longest dictation prompt we have seen yet on this podcast. Impressive.

那是我们这档播客上见过的最长的一段口述 prompt。厉害。


[36:10] Gabor

Yeah, we we might want to uh 2x the speed, but yeah, I I I like to I like to define um very well in the beginning because if you have a good specification, then you will have a good product. If you have a sheet specification, then you will have a subpar product. And you can see that um Super Whisper is still doing the um transcribing. Um but I like that even if I speak kind of this long, it um it always transcribes quite well. The only thing is that I can't really click away from it. Oh, there we go. Pasted. Yeah, it wasn't that long uh for the transcription. Okay, let's see in the meantime. Okay, so uh our agent setup seems to be done. Let me see what agents do we have now. Somehow it did not set up our agents in the project. Uh so I will try it again now. Okay, let's see if it does it now. I think the confusion was that I uh placed these MD files into the project and it assumed that it will just use that project file all the time. But now um I try to prompt it uh to uh explicit more explicitly uh to set it up. So we will see uh if it sets up the actual agents and in the meantime let's go back to our system analyst here. Uh question two,000 usage limit um needs to be tracked per user. It will be just stored on the device. So uh it will be a per device tracking. We also don't want any user input uh to be stored on the server side. We only want to store information that came from the user on the mobile device of the user. This means that the user would not need to create a a login or an account. They would be just using the app without authentication and we would be just processing information on the server side but we never store anything on the server side. This simplifies the um mobile app launch as well especially when you are creating your very first uh launch because um if you don't store user information um that uh that is just easier uh for the first launch process. Okay. So let's see if now we have agents and they don't. Interesting. Um, the weird thing is that it tells me that it did set up the U. Actually, let me then just create uh a uh new directory and do it from there because this is literally the first step and for some reason it does not like my um agent setup. So I will now create a separate folder and we will develop in that folder. So new folder ask. Okay, this one

对,我们也许想把速度加到 2 倍,但是嘛,我——我喜欢在一开始就定义得非常清楚,因为如果你有一份好的 specification,你就会有一个好的产品;如果你的 specification 是一坨,那你就会得到一个不及格的产品。你可以看到,Superwhisper 还在做转写。但我喜欢的一点是,哪怕我说这么长,它转写得也一直挺准。唯一的问题是我没法点开离开它。哦,好了。粘贴上了。对,对转写来说其实也没那么长。好,我们同时来看看。好,那么我们的 agent 配置看起来是做完了。我看看现在都有哪些 agent。不知为何,它没有在这个 project 里把我们的 agent 设置好。呃,那我现在再试一次。好,看看它这回行不行。我想问题出在我把这些 MD 文件放进了 project,它就以为它会一直直接用那个 project 文件。但现在我试着更明确地 prompt 它去做设置。所以我们看看它会不会把真正的 agent 设置起来;与此同时,我们回到这边的 system analyst。呃,第二个问题,那个 20,000 词的用量上限需要按用户来跟踪。它会就存在设备上,所以会是按设备来跟踪。我们也不希望任何用户输入被存到服务器端,我们只想存来自用户的、在用户手机上的信息。这意味着用户不需要创建登录或账号,他们就直接用这个 app,无需认证,我们只在服务器端处理信息,但我们绝不在服务器端存任何东西。这也简化了移动 app 的发布,尤其是当你在做你的第一次发布时,因为如果你不存用户信息,那第一次发布流程就更简单。好。那我们看看现在有没有 agent——还是没有。有意思。诡异的是,它告诉我它确实设置好了那个——其实,那我干脆就建一个新目录,从那儿来做,因为这毕竟是第一步,而出于某种原因它不喜欢我的 agent 配置。所以我现在就建一个单独的文件夹,我们在那个文件夹里开发。新建文件夹,命名 ask。好,就这个。


[40:08] Aakash

always when you do the live demo, it's like not

每次你做现场演示,总会出这种——不会


[40:11] Gabor

never happened to me. This literally never happened to me.

从来没在我身上发生过。这事真的从来没在我身上发生过。


[40:15] Gabor

This setup I did it and I uh helped many people do the same and uh this setup never failed, but it's okay. Sometimes it happens. So now we change over code. Here is our code. And now I will just reuse this prompt. And hopefully now it will ask me for permissions to read. Yes, this is good because it should read. Yes, it can read from that file. Yes, this is looking already much better. One thing that I would highly recommend everyone who uh is building especially for the first time when you are doing bip coding always read always read what it uh what cloud code asks because it happened to me once that it asked me to provide uh to give an agreement uh for it to read the uh secret storage of my chrome uh passwords obviously I did not provide that agreement. Uh I didn't quite feel comfortable uh with that. Uh I even have a screenshot of that. So you have to be always mindful uh what you allow cloud code to do and what you don't allow it to do. Generally uh as a rule of thumb as long as it operates inside of the development folder you are good. But as soon as it would operate outside, then it would be um something to to watch more closely and as you speak of it, it's actually trying to make some directories. So

这套配置我做过,还帮很多人做过同样的,这套配置从来没失败过,但没关系,有时候就是会这样。那现在我们切到 Claude Code。这是我们的代码。现在我就直接复用这个 prompt。但愿这回它会问我读取权限。对,这是好事,因为它本来就该读。对,它可以从那个文件读。对,这看起来已经好多了。有一件事我会强烈建议每一个在构建的人——尤其是第一次做的人——当你在做 vibe coding 时,永远要读、永远要读 Claude Code 问你的东西。因为有一次我就遇到过,它请求我给它一个许可,让它去读我 Chrome 密码的 secret 存储区——显然我没给这个许可,我对那个不太放心。我甚至还有那张截图。所以你必须时刻留意你允许 Claude Code 做什么、不允许它做什么。一般来说,作为一条经验法则,只要它在开发文件夹内部操作,你就没问题;但一旦它要在外面操作,那就是个要更密切盯着的事了。说着说着,它其实正在试着创建一些目录。所以——


[42:25] Gabor

yeah, which is fine because this is basically now setting up the infrastructure that it needs, but it is setting up inside of the right directory. So I can see that it is setting it up inside of the rule ask directory and that is the new directory that I created and now it is creating all of those um agents that we uh tried to create in the rulers.com um directory which for some reason didn't didn't happen um on the first attempt but now it is happening so it's all good. So let's go back to our questions about the uh system. So since the conversation history lives on the device, I need to understand how the chat experience works. When the user closes the app, it reopens. Yeah. Okay. This is a good question. When the user reopens the app, uh, they should be shown a list of previous conversations that they had and they would be allowed to start a new conversation or look up or even continue a previous conversation when a conversation appears uh in the list. Oh, okay. This is a good question. Um each conversation should have a um short summary like a couple of words summary what the conversation was was about and when the user continues a conversation and it evolves this short summary might change over time. This can be autogenerated by the LLM. Do you have many more questions left? Now I'm getting a bit impatient and eager to build. Oh my gosh. Has more.

对,这没问题,因为它现在基本上是在搭建它所需要的基础设施,而且它是在正确的目录里搭的。所以我能看到它是在 rule ask 这个目录里搭的,那就是我新建的那个目录。现在它正在创建所有那些我们刚才试图在 rulers.com 那个目录里创建、却出于某种原因第一次没成的 agent,但现在它成了,所以一切都好。那我们回到关于这个系统的问题上。既然对话历史存在设备上,我需要搞清楚聊天体验是怎么运作的——当用户关掉 app、又重新打开时。对。好,这是个好问题。「当用户重新打开 app 时,应该向他们展示一个他们之前对话的列表,并且允许他们开始一个新对话,或者查阅、甚至继续某个之前的对话——当一个对话出现在列表里的时候。」哦,好,这是个好问题。「每个对话都应该有一个简短的摘要,就几个词,概括这个对话是关于什么的;当用户继续一个对话、对话往下发展时,这个简短摘要可能会随时间变化。这个可以由 LLM 自动生成。」你还剩很多问题要问吗?我现在有点不耐烦了,急着想开始构建。哦我的天,它还有更多。


[44:28] Gabor

Yeah. Uh uh they can review the previous conversations but we don't want them to be able to continue those conversations but they can review it. Yes, that's the name of the app. And the last question yes it can show the link and in that case I don't really want an inapp browser so it should just open the system default browser. Okay. And this concludes our questions. So now the magic will happen because now that all the questions are done now I will tell claude to create the documentation and it will be fascinating to see how it creates all the documentation. Okay. So see what epics what tasks what the jur setup looks like the confluence setup. I want to see how detailed it gets. Does it really simulate a human team?

对。呃,他们可以回看之前的对话,但我们不希望他们能继续那些对话,不过他们可以回看。对,那就是这个 app 的名字。最后一个问题——对,它可以显示链接,那种情况下我并不想要一个 app 内的浏览器,所以它应该直接打开系统默认浏览器。好。问题到此就结束了。那现在见证奇迹的时刻——因为现在所有问题都答完了,我要让 Claude 去创建文档了,看它怎么把所有文档都生成出来会非常有意思。好。那就看看会有哪些 epic、哪些 task,Jira 的设置是什么样、Confluence 的设置是什么样。我想看看它能做到多细。它真的会模拟一个人类团队吗?


[45:20] Gabor

Yeah. Um, I'm a bit concerned because I told it not to use Jira just yet. So, um, I might stop this. Please do not create any Jira tickets yet. Only create the Confluence documentation for now. This is important because um first we want to create the design as the next step and once the design is done that's when we want to start creating the development tickets because the Jira tickets will be for development. So now I just want the documentation to be created. Oo okay. So let's see our pages. And by the way, a quick look at our um usage. Yeah, not much. 5%. We'll go much further up. All right, so let's see the documentation. It was empty. And now we actually have pages. So let's go one by one. Product overview, problem statement, target audience. Okay, very basic. Oops. Good. All these allow. Now it will create more technical architecture. This will be interesting to see. While this is uh happening, let me move on to the next step and we will come back to it because this will craft for a few minutes. Is that okay?

对。呃,我有点担心,因为我告诉过它先别用 Jira。所以,呃,我可能会把它叫停。「请先别创建任何 Jira 工单。现在只创建 Confluence 文档。」这一点很重要,因为我们首先想把设计作为下一步来做,等设计做完了,那时候我们才想开始创建开发工单,因为 Jira 工单是给开发用的。所以现在我只想让文档被创建出来。哦哦好,那我们看看我们的页面。顺便快速看一眼我们的用量。对,没多少,5%。我们会涨得高得多。好,那我们看看文档。它原来是空的。现在我们真的有页面了。那我们一个一个看。产品概述、问题陈述、目标受众。好,很基础。哎呀。好。这些全都允许。现在它会创建更多的技术架构。这个会很有意思。趁这个在进行的时候,让我先推进到下一步,我们待会儿再回到它,因为这要做好几分钟。可以吗?


[47:02] Aakash

Yeah.

可以。


[47:02] Gabor

Okay. Um, good. And our cloud is in the meantime doing its settings, creating uh all the agents that we need, which is good. All right. So, the next step, what I usually do is that I need to create a design for an application. And I do this usually in two steps. So one step is that I go into Figma make. In Figma make I create a app guideline design guideline or design brief with typ um um typology and um uh color definitions and uh all the different buttons and color transitions so that I can use that design specification as a basis of my actual design. So step one is that I need to create this. Um for that I usually like to do some kind of um inspiration. The way how I get inspired is I just go to um spotted in prod and I look through applications here. You can see a bunch of applications and whichever catches your eye and feel that yeah okay this looks like a good design you can just click on it take a screenshot and reuse it for your own app. Um, I literally don't really overthink it. I just um I just take a screenshot on whichever item I feel that um it looks appealing to my eye and that's about it. Um yeah, this looks like a decent Oh, okay. This is the cloud app. most surprised that I'm I'm uh intrigued to take it. But um this looks interesting, but I don't like the color pattern. Um okay, I like these logos. Okay, this looks interesting. So I take a screenshot of this

好。嗯,好。我们的 Claude 这会儿正在做它的设置、创建我们需要的所有 agent,这很好。好。那么下一步,我通常做的是,我需要为应用创建一个设计。我通常分两步来做这件事。第一步,我进到 Figma Make 里。在 Figma Make 里我创建一份 app 指南、设计指南,或者说设计 brief,里面有排版、配色定义,以及所有不同的按钮和颜色过渡,这样我就能把那份设计规格当作我实际设计的基础。所以第一步就是我得把这个创建出来。为此,我通常喜欢找点灵感。我找灵感的方式是,我就去 Mobbin(节目里说成 spotted in prod),翻一翻这上面的应用。你能看到一大堆应用,哪个抓住你眼球、让你觉得「嗯,好,这看起来是个不错的设计」,你就点进去,截个图,拿来用在你自己的 app 上。我是真的不太纠结这个。我就是在任何一个我觉得看着顺眼的条目上截个图,差不多就这样。嗯,对,这看着挺像样的。哦,好。这是 Claude app。最让我意外的是,我——我很有兴致想把它拿下来。但是嗯,这个看着挺有意思,不过我不喜欢这个配色方案。嗯,好,我喜欢这些 logo。好,这个看着挺有意思。所以我把这个截个图。


[49:42] Aakash

and this website spotted.com, it's free.

还有这个网站 spotted.com,是免费的。


[49:46] Gabor

Yes. Uh I think it has some content which is free and then it has some content which is paid. Um but there is a bunch of content that is free and also you can actually use much simpler things. Let me show you what I uh sometimes use but let me first put the prompt. So now we are in Figma and I will tell Figma make what I want to do. We will create a brand guideline for a mobile application. I want you to create the whole typography definition, colors, uh, CTA buttons, color transitions, error stages, and so on and so on. So I need a full package that can provide an input for a mobile app designer with a comprehensive set of assets for a mobile application. The mobile application has the name of rule ask and the goal of the mobile application is to have a chat interface through which the user can ask AI about the rules of ice hockey. Please don't start designing anything just yet because I will provide you with a couple of images that you can use as an inspiration for this design. Please do not copy anything. Just use it as an inspiration. This last part of the prompt prompt to use it as an inspiration. Do not copy. This is very important because uh if I wouldn't say that Figma would actually say sorry I cannot create a uh copy for you because I think Figma figured out that people would just take a screenshot of an app that they like and then um they would try to copy it which obviously wouldn't be great.

对。我记得它有一部分内容是免费的,另一部分是付费的。不过免费的内容也挺多的,而且你其实可以用一些更简单的工具。我给你看看我有时候用什么,但先让我把 prompt 输进去。现在我们在 Figma 里,我会告诉 Figma 我想做什么。我们要为一个移动应用创建一套品牌规范。我想让它把整套排版定义、配色、CTA 按钮、颜色过渡、错误状态等等全都做出来。所以我需要的是一个完整的包,能给移动应用设计师提供一套全面的素材作为输入。这个移动应用叫 rule ask,它的目标是提供一个聊天界面,让用户可以向 AI 询问冰球的规则。先别急着开始设计,因为我会给你提供几张图片当作这个设计的灵感参考。请不要照搬任何东西,只把它当灵感用。prompt 最后这一段——把它当灵感用、不要照搬——这点非常重要,因为如果我不这么说,Figma 其实会回我说,抱歉我没法帮你做拷贝。我猜 Figma 是发现有人会直接截图自己喜欢的 app,然后试图照搬,那样显然不太好。


[51:58] Aakash

Super Whisper is slow

Super Whisper 有点慢。


[52:01] Gabor

but accurate. Okay. So here and now let me put the images. So here is one and then the other one is this one. I love this image. Um so this one I took a screenshot. Sorry, not a screenshot, a photo of a laptop uh thing u cover. So I took a photo of my laptop cover and removed the Apple logo and uh I will use this as an inspiration and we will see if the color palette will anyhow um give us some um remembrance of these colors. You can design now. All right. So we will now have the typography and everything. So now uh Figma make is designing. What do you think about Figma make versus the other tools out there? Bolt, replet, lovable, base 44. So, uh I have a very very specific use case what I use Figma make for um and I only use it for uh creating designs such as this one. I don't use it to create actual prototype with Figma make at least I I haven't utilized it because I feel that I can create a higher quality prototype if I pair it up with cloud code. Um previously I used lovable uh but this was probably more than a year ago. At that time I got quite frustrated with the issue that um the AI was lying. uh I found an issue. I tell the to fix it. Uh it said it fixed it and it didn't fix it and we were just going rounds and rounds and issue uh issues were still present and it was unable to fix it. So um I I'm sure that um lovable and other tools um got much better in the meantime and these uh vicious cycles of errors don't happen all that often anymore. But sort of that was a turnoff moment for me. I tried I think I tried both once but I found that it was around the same time when I tried lovable and I I felt that lovable was more convenient to use at that time. Um, so I went with Lovable and then I ran into this issue with Lovable and then couple of months later uh like uh late last year I had this idea that you know what now that there are MCPS and stuff uh let's see if I could actually build a mobile app like I wanted to challenge myself um after seeing um a podcast episode on Lenny's podcast with uh uh Zevi uh from Meta uh who also uh sort of built a lot of agents and prototypes uh for himself. He inspired me to get into the deeper side of VIP coding because with lovable for example or both or with Figma make you go from prompt to prototype in one step. But what we do today in this podcast episode is that we go from idea to prompt, prompt to code, code to product. So idea to prompt, prompt to code, code to product. And I just uh like that more. And look at that. Look at the colors. Look at the colors. Like oh gosh, this is this is the crazy part. This is the crazy part. And also typography. Like man, this is the exciting part. I can't tell you how much I love this stuff. Like look at these. Seriously, uh even like last year or before creating this sort of quality input, how long would have taken uh to get this output? You you would have hired an agency to create this for you. Isn't this absolutely incredible?

但很准。好。那现在让我把图片放进去。这是一张,另一张是这张。我超喜欢这张图。这张我截了个图——抱歉,不是截图,是拍了张照片,拍的是笔记本的外壳。我拍了我笔记本外壳的照片,把 Apple logo 去掉了,我会拿它当灵感,看看出来的配色方案能不能跟这些颜色多少有点呼应。你现在可以开始设计了。好,那我们现在就会有排版之类的全套东西了。Figma make 正在设计中。你怎么看 Figma make 跟市面上其他工具的对比?比如 Bolt、Replit、Lovable、Base44。嗯,我对 Figma make 有一个非常非常具体的用法,我只用它来做这种设计稿。我不用它来做真正的原型——至少我没这么用过,因为我觉得如果把它跟 Claude Code 配合起来,我能做出质量更高的原型。我以前用过 Lovable,不过那大概是一年多以前了。当时我对一个问题挺受挫的,就是 AI 会撒谎。我发现一个 bug,我让它修,它说修好了,结果根本没修,我们就一轮一轮地兜圈子,问题还在那儿,它就是修不好。所以我相信 Lovable 和其他工具这段时间里肯定进步了很多,这种反复报错的恶性循环现在应该不那么常见了。但当时那一下就让我下头了。我记得这两个我各试过一次,但差不多是在我试 Lovable 那段时间,我当时觉得 Lovable 用起来更顺手,所以我就选了 Lovable,然后就撞上了刚才说的那个问题。再过了几个月——大概去年年底——我冒出个想法:现在都有 MCP 这些东西了,要不试试看我能不能真的做出一个移动 app,我想挑战一下自己。我是看了 Lenny 播客里一期跟 Meta 的 Zevi 的对谈,他也给自己做了不少 agent 和原型,是他启发我钻进 vibe coding 更深的那一层的。因为用 Lovable 也好、Bolt 也好、Figma make 也好,你是从 prompt 一步直接到原型。但我们今天这期播客里做的是:从 idea 到 prompt,从 prompt 到 code,从 code 到 product。idea 到 prompt,prompt 到 code,code 到 product。我就是更喜欢这种方式。看那个,看那些颜色,看那些颜色,哦天哪,这就是最离谱的地方,这就是最离谱的地方。还有排版,老天,这就是最让人兴奋的部分。我没法形容我有多爱这玩意儿。看看这些。说真的,哪怕就在去年或者更早,要做出这种质量的输入素材得花多久?你得雇一家 agency 来给你做。这难道不是绝对牛到家了吗?


[56:53] Gabor

Now it's pretty much the free version of Figma Make. Yeah. Uh I don't I'm on a paid version, but um yeah, I don't know how capable the free version is, but but it is just uh mind-blowing. Anyways, let's check back with our agents. Okay, so in theory, we have all the documentation done. Um let's see if our agents are properly set up. It's still working. Um, but let's check our documentation. So, now refreshing Confluence. Oh, yeah. Okay. Technical architecture. Let's see. Look at that.

现在这基本上就是 Figma Make 的免费版了。对吧。呃,我自己用的是付费版,所以我不太清楚免费版能力有多强,但反正这真是让人惊掉下巴。不管怎样,咱们回去看看我们的 agent 怎么样了。好,理论上文档应该都做完了。咱们看看 agent 有没有正确配置好。还在跑。不过先看看我们的文档。现在刷新一下 Confluence。哦,对。好。技术架构。来看看。看那个。


[57:49] Gabor

It's not getting fancy. Yeah, this is decent. This is decent technology stack front end back end vert.ex X AI back to our database. The two resources embedding strategy um fallback. Yeah, appropriate.

它没整那些花里胡哨的。嗯,这个挺像样的。挺像样的。技术栈——前端、后端、Vertex AI,连回我们的数据库。两个资源、embedding 策略、fallback。嗯,挺合适的。


[58:23] Aakash

Yeah, looks right.

对,看着没问题。


[58:25] Gabor

Then oops, sorry. and then EI agent specification. When you're looking at this, what are you reading it for?

然后……哎呀,抱歉。然后是 AI agent 规格说明。你看这部分的时候,主要是在看什么?


[58:44] Gabor

Uh I I primarily read it whe whether it reflects accurately what I what I said. So for example here uh receive the user query embed it um search it against the uh similar things in the vector database evaluate confidence um just that it it goes through the steps and you can see like um this is a beneficial part for a product manager if you build an application like this like obviously I don't have a need to create a ice hockey rules app even though I will send this to a couple of friends and I think they will appreciate it but um there is no need for me to create uh an ice hockey rules app but the benefit that if I can launch this app put it into the app store uh I can literally put it on my resume as a portfolio item and um I can show uh anybody that hey look I built this and I can create a subsection of that app which I can let's say password protect where I would provide all this information of how I built this application. So this uh provides an inevitable or un undoubtable proof that I as a product manager I know what I'm doing around these systems and I can build. Okay. So let's see if our agents are now set up. Uh let's hope that at this time uh the system did not fail us. There we go. Okay. So now we have the agents and we can use uh all of these agents. So um now what we want to do is I want to give um my style guide uh to the agent. So um I have created a mobile app design guideline for the team to use. Here is the link for it. Please save it to the project memory so that we will always refer to this style guide whenever we need to make a design decision about the application. And now we need to save this one. And we save it to here. It is good. It's saving into memory. I already created an empty Figma file where I will ask uh the agents to save the um design. Okay. As the next step, I want system analyst agent to work with the designer agent and the brand agent to create the actual design and the screens in Figma through the Figma MCP for the application. I want to create the smallest number of screens that can serve all the use cases. The goal is to have exceptionally high quality screens but rather small number of them. And when this will be building it, it will be also a quite mind-blowing uh experience to see. Okay. And uh one more thing I would need to check actually let me put this on the clipboard for now is whether we have the Figma MCP connected just to be sure that it has access to both um Figma make and Figma because if we don't then um it will start failing. So um that's an important part to do. This is the annoying part of using a CLI that you cannot just uh highlight everything and then uh with one tap delete the whole thing but you need to actually wait to delete or maybe I'm using it wrongly. But yeah, let's check our MCPS. Uh okay, we are all connected. Um, Figma. Okay, Figma is the most important. And we have, uh, uh, the Figma friend as well. Um, good. Okay. Uh, one MCP that I'm missing. Um, can you also install the Chrome Dev Tool MCP. The Chrome Dev Tool MCP is uh useful because it can operate the browser and um it can have a better sort of comparison or visual uh to um to uh verify your design. So yeah, we are allowing it to put it into this project. Okay, ChromeDev tool has been installed. Whenever you install a new MCP, you actually need to uh restart um cloud code. And now we should see yeah Chrome DevTools connected. Okay, perfect. Uh all right. So now we can start our design. So now what I expect is that it will start creating the design um based on the specification and based on the Figma make uh link and I think I didn't call out specifically the Figma make so I can inject um an additional instruction use the Figma make style guide as a basis.

呃,我主要看的是它有没有准确反映出我说过的话。比如这里——接收用户 query、把它做 embedding、在向量数据库里检索相似的内容、评估置信度——我就是看它有没有把这些步骤都走一遍。你能看出来,这对产品经理来说是很有价值的一环。如果你做这么一个应用——显然我并不真的需要一个冰球规则 app,虽然我会把它发给几个朋友,我觉得他们会挺喜欢——但我本身没有做冰球规则 app 的需求。好处在于,如果我能把这个 app 上线、放进 App Store,我就能直接把它写进简历当作品集的一项,我可以给任何人看:嘿,这是我做的。我还能在这个 app 里做一个子板块,比如加个密码保护,在里面放上我是怎么把这个应用做出来的全部信息。所以这就提供了一个无可辩驳的证明:我作为一个产品经理,我懂这套系统是怎么回事,而且我能动手做出来。好。那咱们看看 agent 现在配好了没。希望这次系统别掉链子。来了。好。现在我们有这些 agent 了,这些 agent 都能用。那现在我们要做的是,我想把我的 style guide 给到 agent。我已经为团队创建了一份移动 app 设计规范。这是它的链接。请把它存到 project memory 里,这样以后每次我们要为这个应用做设计决策时,都会参考这份 style guide。现在我们得把这个存下来。我们存到这里。好了。正在存进 memory。我已经建好了一个空的 Figma 文件,我会让 agent 把设计存到那里。好,下一步,我想让 system analyst agent 跟 design agent 和 brand agent 协作,通过 Figma MCP 在 Figma 里为这个应用创建出实际的设计和各个屏幕。我想用最少的屏幕数量来覆盖所有用例。目标是屏幕质量极高,但数量尽量少。等它开始构建的时候,看着也会是相当震撼的体验。好。还有一件事我得确认一下——让我先把这个放到剪贴板上——就是 Figma MCP 有没有连上,得确保它同时能访问 Figma make 和 Figma,因为要是没连上,它就会开始报错。所以这一步挺重要的。这就是用 CLI 烦人的地方:你没法直接把全部内容一选、一按就全删掉,你得真的等着它一点点删,或者也许是我用法不对。但反正,咱们看看 MCP。呃,好,全都连上了。Figma。好,Figma 是最重要的。我们还有 Figma 那个伙伴 MCP。挺好。好。有一个 MCP 我还没装。你能顺便把 Chrome DevTools MCP 也装上吗。Chrome DevTools MCP 很有用,因为它能操作浏览器,能更好地做对比、获取可视化结果,来验证你的设计。好,那我们就允许它装进这个项目。好,Chrome DevTools 装好了。每次你装一个新的 MCP,其实都得重启一下 Claude Code。现在我们应该能看到——对,Chrome DevTools 连上了。好,完美。好。那现在我们可以开始做设计了。我预期它会根据规格说明、根据 Figma make 的链接开始创建设计,我想我刚才没有专门点名 Figma make,所以我可以追加一条指令:以 Figma make 的 style guide 为基础。


[1:05:26] Aakash

Yeah, I love slashbtw.

对,顺便说一句,我超爱那个 slash(斜杠)功能。


[1:05:28] Gabor

Yeah, I love the by the way uh thing because it just uh injects it and uh it evaluates in parallel. See, it it already uh accepted it. This is one of the things that you're going to get in Claude Code that you're not going to get in Claude. So,

对,我爱那个「by the way(顺便)」的功能,因为它能直接把指令注进去,然后并行地去评估。看,它已经接受了。这就是你在 Claude Code 里能用到、但在 Claude(网页/app 版)里用不到的东西之一。所以……


[1:05:52] Aakash

yes,

对。


[1:05:52] Aakash

besides the agents, you get a lot of different functionality. If you've been scared about using cloud code, open up that terminal.

除了 agent 之外,你还能用到一大堆别的功能。如果你之前一直怕用 Claude Code,那就把终端打开试试吧。


[1:05:59] Gabor

Yeah, exactly. Yeah, it's very convenient, honestly. Um, so you can see that now it runs multiple agents. So uh if I come to the Figma page, this is where I expect that uh the Figma designs we start showing up very soon. So as soon as the screens are done, it will be much quicker. It's also fascinating to read these what are the things that are happening in the mind of um the agents that are working on your behalf. The reason why I say that product managers should build is uh because if they understand how today agents work, how they behave, what are their limitations, what are their ups and downs while using them, then it's much easier for any product manager to understand how their own product that they are working on should be serving users. But if you don't interact with agents, then you will not have a sense of what does it mean to work with an AI agent. That's why it's super beneficial to build using AI agents. 100%. The future of products mostly is going to be agentic. You actually think about how Gabbor described that he wanted to use Atlassian. He said, "Oh, well, they have an MCP server where I can easily connect to." That's going to be the type of decision someone is going to make, and you're going to simulate making a lot of those decisions so that you can prioritize your road map correctly. Oh, finally. Okay. Set up Figma file structure. That's good. And then build screen. Good. Now we will start seeing. Yes. Okay. Now let's see the magic happen. We've got the Figma file structure and now it's starting to build the onboarding screen. So this will be very interesting to see how the plot code is operating Figma. I can also ask to give me the Figma links for the screens. Wow. Now this is cool. We just needed to refresh and you can see that it is still working here. The fifth screen has just appeared right. So it like literally while we were talking u it just added the fifth screen here. It was telling that it is building and now the setting screen is done. Done. Yeah. So this is a very powerful workflow that we've done up and until this point we specified exactly what we want in depth with claude. Then we created a prototype in Figma make. Then we used claude code to build that in Figma. So that's where we are currently.

对,没错。说实话用起来非常方便。你能看到现在它在跑好几个 agent。如果我切到 Figma 页面,我预计 Figma 的设计很快就会开始在这里冒出来。一旦屏幕做好了,速度会快很多。读这些东西也挺让人着迷的——看看在替你干活的这些 agent「脑子」里正在发生什么。我之所以说产品经理应该自己动手做,是因为如果他们理解今天的 agent 是怎么工作的、怎么表现的、有什么局限、用起来有哪些优点和坑,那么任何产品经理就更容易理解,自己手上正在做的那款产品应该怎么去服务用户。但如果你从不跟 agent 打交道,你就不会有那种感觉——跟一个 AI agent 协作到底是什么体验。所以用 AI agent 来做东西是非常有价值的。百分之百同意。产品的未来大体上会是 agentic 的。你想想 Gabor 刚才说的,他想用 Atlassian,他说「哦,他们有个 MCP server,我能很方便地连上去」。以后大家做决策就会是这种类型,而你会模拟做出大量这样的决策,这样你才能正确地排你的路线图优先级。哦,终于。好。搭好 Figma 文件结构了。很好。然后构建屏幕。好。现在我们就要看到了。对。好。现在来看奇迹发生。我们已经有了 Figma 文件结构,现在它开始构建 onboarding 屏幕了。所以接下来很有意思,能看到 Claude Code 是怎么操作 Figma 的。我也可以让它把各个屏幕的 Figma 链接给我。哇。这太酷了。我们只需要刷新一下,就能看到它还在这儿干活。第五个屏幕刚冒出来。就是说,我们刚才在聊天的工夫,它就在这儿加上了第五个屏幕。它刚才还在说它在构建,现在设置屏幕做好了。完成了。对。所以这是个非常强大的工作流,到目前为止我们做的是:先用 Claude 深入地、精确地指定了我们到底想要什么;然后在 Figma make 里做了个原型;然后用 Claude Code 把它在 Figma 里构建出来。这就是我们现在所处的阶段。


[1:09:25] Gabor

Exactly. And if you look at this, just look at the level of detail, the precision. You don't need to actually fix a lot of things. Yeah. Maybe for my taste, I would change a little bit um this icon or this button to be the same size as the input box. But even if you leave it like this, it is a completely appropriate looking design. And this is how your app will look.

没错。你看看这个,看看这细节程度、这精度。你其实不太需要去改一堆东西。对。可能就我个人口味来说,我会把这个图标、或者这个按钮稍微改一下,让它跟输入框一样大。但就算你保持原样,它也是个完全说得过去、看着很到位的设计。你的 app 就会长这样。


[1:10:01] Gabor

Yeah. So the next step is that uh we will start turning this into a prototype. The way how you would put uh together a prototype is that you would manually select an item and then you would connect with this prototyping button uh or prototyping arrow um to the next screen where it needs to go. And I automated this one as well. So I can actually uh create this without doing anything. I'm just simply telling uh cloud uh cloud code to perform this step for me. Awesome. So the next step that we want to do is that we need to make this to be a clickable prototype. So normally uh what you would do in Figma, you would manually come and start connecting screens just like this. But one of the agents will do this for us. So I will now ask the agent. Um so these are our agents and the user UX flow architect will do this for us. So here we go. System analyst and UX flow agent. Please go through the documentation and the Figma and create the prototype arrows in Figma. Please use the ChromeDev tool MCP where you need as well as the Figma MCP and the Confluence MCP. So now uh you will see that it will most likely open another browser window that um it will take control of and then we will see how it is creating all the arrows and while it will be creating the arrows because it will take some time we will start initiating the um back end of the application. Okay, full fema structure is there.

对。那下一步我们就要开始把它变成一个原型。你拼一个原型的做法通常是:手动选中一个元素,然后用这个原型连接按钮——也就是那个原型箭头——把它连到下一个该跳转过去的屏幕。这一步我也自动化掉了。所以我其实可以什么都不用动手就把它做出来,我只是简单地告诉 Claude Code 替我执行这一步。太棒了。那下一步我们要做的是,把它变成一个可点击的原型。正常情况下你在 Figma 里会手动过来一个个连屏幕,就像这样。但我们的一个 agent 会替我们干这个。所以我现在就来吩咐这个 agent。这些是我们的 agent,UX flow architect 会替我们做这件事。那来吧。system analyst 和 UX flow agent,请把文档和 Figma 都过一遍,在 Figma 里创建出原型箭头。需要的时候请用 Chrome DevTools MCP,也用 Figma MCP 和 Confluence MCP。那现在你会看到,它很可能会再打开一个浏览器窗口、接管它,然后我们就能看到它怎么把所有箭头都连出来;在它连箭头的过程中——因为这要花点时间——我们就开始着手做应用的后端。好,完整的 Figma 结构都在那儿了。


[1:12:23] Aakash

All right, so we're getting those infamous parallel agent workflows started again.

好,那我们又开始跑起那套传说中的并行 agent 工作流了。


[1:12:27] Gabor

Yeah, we need to speed up a bit. Actually, I can dictate this one. So now I would like system analyst agent to create the first Jira tickets that would help initiate the back end of the application. We don't want anything else right now. Just a couple of tickets that would initiate the database and all the Firebase basic setup that we need so that we can start connecting the domain and setting up the Firebase secret store and so on. So only do the very basics just yet. Create the Jira tickets so that we can go step by step. And what it will do now is that it will create these tickets for us.

对,我们得稍微加快点。其实这个我可以用语音口述。那现在我想让 system analyst agent 创建第一批 Jira tickets,用来启动应用的后端。我们现在先不要别的东西,就来几个 ticket,把数据库和我们需要的 Firebase 基础配置先初始化起来,这样我们就能开始连接域名、搭建 Firebase 的密钥存储等等。所以现在只做最基础的那些。把 Jira tickets 建好,这样我们就能一步一步来。它现在要做的就是替我们把这些 ticket 建出来。


[1:13:31] Aakash

So now we kind of have our front end and our backend processes starting to parallelize.

所以现在我们前端和后端的流程算是开始并行起来了。


[1:13:36] Gabor

Yeah. Uh so that we can speed up the process a bit.

对。这样我们就能把进度稍微加快一点。


[1:13:41] Gabor

How many agents are you typically running at once? So it depends on uh what task do I do. Um you will see when we will start creating the actual development sprints I will pretty much use the whole team

你一般同时跑多少个 agent?这要看我做什么任务。等我们开始创建真正的开发 sprint 时你就会看到,我基本上会把整个团队都用上。


[1:13:56] Aakash

seven or eight agents running at once.

同时跑七八个 agent。


[1:13:58] Gabor

It will happen in a second and and you know I think I have like 15 16 agents total. Uh so yeah it will it will be interesting to see when all of them work and all of them contribute

马上就会出现了。而且你知道吗,我大概总共有 15、16 个 agent。所以,对,等到它们全都在干活、全都在出力的时候,那场面会挺有意思的。


[1:14:12] Aakash

and that's when your cloud usage really starts running quickly. Yeah, it will. Uh, okay. So, uh, ooh, look at this. Remember, I just added that one single arrow here and all of these have been added by the agent. And what this did is that now if I start a prototype view, now we actually have a clickable prototype in Figma. This is going to save a ton of time. Yes. How amazing this is.

那也正是你的 Claude 用量开始飙起来的时候。对,会的。呃,好。那么,哦,看这个。记得吧,我刚才在这儿就手动加了那么一根箭头,而这些全都是 agent 加上去的。它这么一搞,现在如果我启动原型预览,我们就真的有了一个可点击的 Figma 原型。这能省超多时间。对。这也太神了。


[1:14:52] Aakash

Wow.

哇。


[1:14:54] Aakash

Look at that. And so I think the unlock here is a lot of people they might say, "Hey, it's bad at doing Xstep." But what you've done is you've actually connected into Figma make and Figma regular. You've used that connection to have claude code drive it like a user would. And that I think is the unlock here.

看那个。我觉得这里的关键突破在于——很多人可能会说「嘿,它在某某步骤上做得很烂」。但你做的是,你把 Figma make 和普通 Figma 都接进来了,你利用这层连接,让 Claude Code 像真实用户那样去操作它。我觉得这才是这里真正的突破点。


[1:15:16] Gabor

Yes. And now if we go into our Jira, we will see that it will start creating our Jira tickets for the initiation of the back end. It will start adding the backend tickets here. And once we have the backend tickets, I can start um creating the rest of the tickets. Cool. And that's our system analyst agent network, right?

对。现在如果我们进到 Jira 里,就会看到它开始为后端的初始化创建 Jira tickets。它会开始把后端的 ticket 加到这里。等我们有了后端的 ticket,我就能开始创建其余的 ticket 了。酷。那这就是我们的 system analyst agent 网络,对吧?


[1:15:49] Gabor

Yes. Uh but when we are creating all of the tickets, we will actually uh use the whole team.

对。不过等我们创建所有 ticket 的时候,我们其实会把整个团队都用上。


[1:15:56] Aakash

Okay.

好。


[1:15:57] Gabor

Because I want usually I want the whole team to chime in. And the reason is because all of the or each agent have a different role you know one is for the code maintainability, the other one is uh making sure that our privacy is set up etc etc. So those will be important that all of them have their own perspective in the development tickets before we actually start implementing the uh code itself. Got it? Okay. So it is now creating the epic and this is the brilliance look. So now this ticket is created and this is not me creating anything. It is uh the app actually right and now it will start uh just creating more and more tickets. See so when this is done okay all tickets are created. Okay, so let's start the development of these. Mark all of these tickets as sprint one. Use the tag because you don't have access to creation of actual sprints. So use the tags to mark all of these as sprint one. And after that you can start executing sprint one. There is a weird limitation right now for uh this um CNMCP that somehow it doesn't have the permission to create um a sprint. So we need a workaround. You could manually start organizing tickets into a sprint. Um but I usually just uh use tags which it has access to. Why is it important that you use sprints? Just like in any other software development project, there are dependencies when you create software and you want to make sure that some stuff gets done before you start building some other right that's why you need uh sprints and this is what we what we did here. So now we are just initializing basically the the Firebase we will add stuff to our Firebase secret store like the cloud API and stuff. Um so yeah that's happening right there. And now let me start the whole team to start creating the rest of the sprints and the rest of the uh tickets. So now things will get a little bit faster. Okay. Now I would like the whole team to work with system analyst agent to start creating the tickets for the actual software development. At first only create the front end tickets and make sure that every front end ticket has a screenshot attached or has an explicit Figma file linked so that our development agents will have a clear view of what needs to be developed. I particularly want that tester agent and system analyst agent would verify that each ticket that is a front end ticket would have a screenshot attached. I really need to be particular about the screenshots because if you don't add the screenshot um the cloud code agents will just create the typical AI looking app instead of creating creating the design that you uh made in Figma. So it will be the typical uh black and purple um AI looking app instead of uh what you designed and that's what we will also evaluate. So now uh we will have a bunch of tickets and uh we will just check that every one of them would have either a Figma link or a screenshot. Got it? So now we we will see a lot of movement in here. So now you can see it says uh now let me launch the system analyst and the test architect agents in parallel to plan the epics and stories breakdown. See and now system analyst and test architect are working together. But then later um the other agents will also chime in. And in the meantime on the parallel thread the other agents like flutter mobile architect uh they are working on the implementation of the back end. Yeah. And sometimes you know um if you are waiting too much you can actually create yet another terminal window yet another terminal window and just you know as much capacity you have you can just parallelize stuff uh when it's possible but right now I I don't think I can give them anything that I could do in parallel. Yeah, after after the front end tickets are done um we will create the back end tickets then organize them into sprints do a quick review by the whole team to see that all aspects are considered and then we will hit the big green button and start uh developing the uh sprints.

因为我通常希望整个团队都来发表意见。原因是每个 agent 都有不同的角色,你懂的——一个负责代码的可维护性,另一个负责确保我们的隐私设置到位,等等等等。所以这点很重要:在我们真正开始写代码之前,让它们每一个都在开发 ticket 里贡献出自己的视角。明白了吗?好。所以它现在在创建 epic,看,这就是精彩之处。现在这个 ticket 建好了,这不是我建的,是这个 app 自己建的,对吧,接下来它会开始一个接一个地建越来越多的 ticket。看,那么等这个搞定——好,所有 ticket 都建好了。好,那我们开始开发这些。把所有这些 ticket 都标记为 sprint one。用标签来标,因为你没有创建真正 sprint 的权限。所以用标签把这些全标成 sprint one。标完之后你就可以开始执行 sprint one 了。现在这个 MCP 有个奇怪的限制——它不知怎么就没有创建 sprint 的权限。所以我们得有个变通办法。你可以手动把 ticket 组织进一个 sprint。但我通常就用它有权限的标签来代替。为什么用 sprint 这么重要?就跟任何其他软件开发项目一样,做软件的时候是有依赖关系的,你得确保有些东西在你开始构建另一些东西之前先做完,对吧,这就是为什么你需要 sprint,这也是我们这儿做的事。所以现在我们基本上就是在初始化 Firebase,我们会往 Firebase 的密钥存储里加东西,比如 Claude API 密钥之类的。所以,对,那边正在跑这个。现在让我启动整个团队,开始创建其余的 sprint 和其余的 ticket。这样事情就会快一点了。好。现在我想让整个团队跟 system analyst agent 协作,开始为真正的软件开发创建 ticket。一开始只创建前端的 ticket,并确保每一个前端 ticket 都附上一张截图、或者明确链接了对应的 Figma 文件,这样我们的开发 agent 就能清楚地看到要开发的是什么。我特别希望 tester agent 和 system analyst agent 去核实:每一个属于前端的 ticket 都附上了截图。截图这事我真得特别较真,因为如果你不加截图,Claude Code 的 agent 就会做出那种典型的「一看就是 AI 做的」app,而不是你在 Figma 里设计的那个样子。它会做成那种典型的黑紫配色、一眼 AI 范儿的 app,而不是你设计的东西,而这也正是我们之后要评估的点。所以现在我们会有一堆 ticket,我们就挨个检查,确保每一个都要么有 Figma 链接、要么有截图。明白了吗?那现在这里就会看到很多动静了。现在你能看到它说——现在让我并行启动 system analyst 和 test architect 这两个 agent,来规划 epic 和 story 的拆解。看,现在 system analyst 和 test architect 在一起协作了。再往后,其他 agent 也会加进来。与此同时,在并行的那条线上,其他 agent,比如 Flutter mobile architect,正在做后端的实现。对。而且有时候你知道吗,如果你等得太久,你其实可以再开一个终端窗口、再开一个终端窗口,你有多少算力就尽量并行多少活儿,只要有得并行就行;不过现在嘛,我觉得暂时没有什么能让它们并行去干、又是我能安排的活了。对,等前端的 ticket 做完,我们就创建后端的 ticket,然后把它们组织进 sprint,让整个团队快速评审一遍,确保各方面都考虑到了,然后我们就按下那个绿色的大按钮,开始开发这些 sprint。


[1:22:07] Gabor

Have you ever used dangerously skip permissions? I uh my policy is that um as long as the agent is doing something within my project folder, I'm chill. Like the worst it can do, it damages my project. And since I created the project like in an hour or two, worst case I can recreate. When it asks me something for outside of the project folder, that's when I'm more careful. what do I answer uh whether I allow it or not? Uh because once it happened that for some reason I think we we spoke about this um an hour ago or so but it was literally asking uh to access my Chrome uh password uh story.

你有没有用过 dangerously skip permissions(危险地跳过权限确认)这个模式?我的原则是:只要 agent 是在我的项目文件夹里折腾,我就很放心。它最坏能干什么呢?顶多把我的项目搞坏。而且这个项目我也就花一两个小时建起来的,最坏情况我重建一遍就行。但当它要访问项目文件夹以外的东西时,我就会谨慎得多,会去想我到底要不要批准它。因为有一次——我想我们大概一个小时前还聊到过这事——它居然真的在请求访问我 Chrome 里存的密码。


[1:22:58] Aakash

Yeah, which is yeah not not necessarily delighting.

是啊,这确实不太让人开心。


[1:23:02] Aakash

And for the coding agents I've seen you using Opus. I think for some of the other prompt for instance you're okay using sonnet. Is that kind of the split? You want to use Opus for coding, but you're okay with Sonnet for the prompt?

我看你写代码的 agent 用的是 Opus,而有些别的 prompt,比如某些场景,你用 Sonnet 也行。是这么分工的吗?写代码用 Opus,但跑 prompt 的时候用 Sonnet 也无所谓?


[1:23:14] Gabor

That was not necessarily um an intentional choice. Um I haven't been able to observe a significant enough difference with my level of coding understanding whether one would do a better job than the other. I'm sure that um some of the uh developers, experienced uh developers and architects can uh see a difference, but for me, for my purposes, I didn't really have this differentiation. So, it was just more like um what u the app recommended and what some of um uh my friends recommended along the way.

这倒不算是个有意为之的选择。以我对编程的理解水平,我没法明显看出哪个模型干得更好。我相信一些资深的 developer、架构师能看出差别,但对我、对我的用途来说,我真没有特意去区分。所以更多就是看 app 推荐什么,以及一路走来一些朋友推荐什么。


[1:23:58] Gabor

Mhm. So now we are creating uh the epics. So now you can see that this is the first front end ticket being created. And here you can see that here is the actual Figma link. See? So if I open this, it opens a specific screen. You can see now that it when I opened it has this specific area selected. So um yeah it's quite quite particular about which ticket is about what. I remember when you had to write all the tickets you would tell your tech lead okay please pile the tickets. Now all that automated

嗯。所以现在我们在创建这些 epic。你看,这是第一张前端的 ticket 正在被创建。这里你能看到实际的 Figma 链接。看到没?我点开它,就会打开一个具体的屏幕。你现在能看到,我打开后它已经选中了某个特定区域。所以它对于哪张 ticket 对应什么内容是非常精确的。我还记得以前你得自己写所有 ticket 的时候,你会去跟你的 tech lead 说:拜托你把这些 ticket 整理一下。现在这些全都自动化了。


[1:24:54] Gabor

and there was and there was always um sort of a uh disagreement. Okay, who should do this step? Who should do that step? Who should define the if this then that? Who should think about the edge cases? No, that's a system owner job. No, that's a product manager job. No, that's a developer job. That's what I like about this that u yeah actually these uh help a lot

而且以前总会有那种扯皮:到底谁该做这一步?谁该做那一步?这个「如果……就……」的逻辑该谁来定义?边界情况该谁去想?「不,那是 system owner 的活」「不,那是 product manager 的活」「不,那是 developer 的活」。这正是我喜欢这套东西的地方——它们真的帮了大忙。


[1:25:21] Aakash

and one thing people who maybe tried this out in November or a little while ago look how long running these tasks are that it's giving itself both six minute plus it's able to work a lot longer autonomously than before and I think that's been a huge unlock that's actually allowed things like your seven agent dev team to be possible. Yeah, definitely. And um it works longer and it works quite reliable in these cases. Uh unlike for example a couple of other uh things in the ecosystem such as uh a newly launched feature newly like a couple of weeks ago I think uh it was launched dispatch.

还有一点,那些可能在去年 11 月或者更早之前试过这个的人:看看这些任务现在能跑多久,它给自己安排的任务动不动六分钟以上,它能自主工作的时间比以前长得多。我觉得这是一个巨大的解锁,正是这一点才让你这种七个 agent 的开发团队成为可能。是的,绝对是。而且它跑得更久,在这些场景下也相当可靠。不像生态里另外一些东西,比如一个刚上线的功能——我想大概几周前才推出的——dispatch。


[1:26:07] Gabor

Yeah. So this patch for example, I don't see it to be that reliable. It very often uh breaks and um has hiccups and um it does not provide always the exact same quality output that it provided at a previous run. uh which I'm sure it will have a uh better quality in a in a few weeks or few months because these are all always uh quite rapidly evolving.

对。所以拿 dispatch 来举例,我觉得它没那么可靠。它经常会崩,会出各种小毛病,而且它并不总能产出和上一次跑出来一模一样的质量。我相信再过几周或几个月它的质量会更好,因为这些东西总是在飞速迭代。


[1:26:40] Aakash

So you don't have a hot take on dispatch in there, do you?

所以关于 dispatch 你没什么犀利的观点要爆吗?


[1:26:45] Gabor

I I like the idea of dispatch. Uh I think we we all think where dispatch came from or the idea of dispatch came from um with with open claw. Uh but right now um I use it mindfully. So I I know that it is good but I also I'm very aware that uh I need to supervise it in order to uh make sure that it runs properly. And uh I'm aware that often times I will need to uh tell it to hey you missed this bit, you missed that bit. Um, which is a bit annoying because it would be lovely if u it would be just reliable and it will in my judgment it will have a chance to replace some of the software uh needs of people because you can just u tell in regular human language what you want and it will do it. For somebody who's trying to run their own dev team, what is the role of cloud code, open claw, co-work, dispatch? How would you put it all together? So, open crow I uh did not experiment much with. Um the reason is quite profound. I was not brave enough to put it on my main computer and I decided to order a separate computer and when I placed the order, I knew that I needed one with a larger u ROM, sorry, larger RAM and uh it was on a back order, so I needed to wait. And by the time it arrived, CL uh Claude launched this patch. So I didn't get into the craziness of um Open CL yet. For the other pieces, um I think so far really the biggest unlock is uh the MCPS. So um as you could see in this setup, I'm uh essentially replicating the whole uh flow of how a regular software development um team would work. I just apply the principles and the steps to um the agent and I I try to do as many things with the agent as possible.

我挺喜欢 dispatch 这个想法的。我想我们都清楚 dispatch 是从哪儿来的,或者说它的灵感源头——是 open claw。但现在我用它的时候会很有分寸。我知道它不错,但我也非常清楚我得盯着它,才能确保它正常运行。我也很清楚,我经常得去告诉它:嘿,你漏了这块、漏了那块。这有点烦,因为如果它能稳定可靠就太好了。而依我看,它确实有机会替代一部分人对软件的需求,因为你只要用普通的人话告诉它你想要什么,它就能做出来。对于一个想自己运营开发团队的人来说,Claude Code、open claw、Cowork、dispatch 各自扮演什么角色?你会怎么把它们组合到一起?open claw 我没怎么折腾过。原因其实挺深刻的:我胆子不够大,不敢把它装在我的主力电脑上,于是我决定单独订了一台电脑。下单的时候我知道我需要一台 RAM 更大的——抱歉,不是 ROM,是 RAM 更大——结果它缺货,我得等。等它到货的时候,Claude 已经推出了 dispatch。所以我还没卷进 open claw 的那股疯狂里。至于其他几样东西,我觉得到目前为止真正最大的解锁还是 MCP。所以就像你在这套配置里看到的,我本质上是在复刻一整套常规软件开发团队的工作流程,我只是把那些原则和步骤套用到 agent 身上,并尽可能多地让 agent 去做事。


[1:29:01] Aakash

So what I'm hearing is cloud code is your tool of choice. You wouldn't say coworker dispatch is really replacing much. Yeah.

所以我听下来,Claude Code 是你的首选工具。你不会说 Cowork 或 dispatch 真的替代了多少东西。对吧。


[1:29:08] Gabor

From the cloud ecosystem, uh cloud code is the most powerful. Uh I would not necessarily go as far as yeah, cloud is my ultimate tool of choice for everything. Um but um in this particular use case as you can see it is it is uh one very viable possibility that I think people uh should be uh aware of because it's it's a lot of fun.

在 Claude 生态里,Claude Code 是最强大的。我不至于说 Claude 是我做一切事情的终极首选工具。但在这个具体的用例里,正如你看到的,它是一个非常可行的选项,我觉得大家应该了解一下,因为它真的很好玩。


[1:29:37] Aakash

What do you think about cloud code versus codeex?

你怎么看 Claude Code 对比 Codex?


[1:29:40] Gabor

Um so codeex I uh did not experiment as deeply with. um as with cloth code. So I only like tried a very minimal amount and somehow the convenience of of using cloth code was just better for me. Um and codeex I didn't go further into it. It's the same feeling when I tried bolt once and then I tried lovable ones and the first few steps felt easier on lovable. So I defaulted to lovable after all. And this was pretty much the same here that um on claude it just felt uh more capable and easier to to work with in the first place. So I I don't have a particularly strong opinion on on the capabilities of codeex. I'm sure that there are a lot of fans of uh Codeex and also other uh tools um that people uh use very successfully. Okay, so it seems like both of these are done. So let me start the back end tickets as well. Okay, now please get the whole team to look into the backend tickets again. get system analyst agent to lead the discussion but heavily involve now all the rest of the agents CTO agent specifically for the architecture but also uh we want to make sure that our code quality and maintain maintainability is high so uh the spaghetti agent I also want uh to pay special attention when creating the backend tickets so now backend tickets will be created and then uh when the back end tickets are also created I will just ask the the whole team to uh do a quick review of all the tickets uh and organize it into sprints and then we will start developing uh the sprints. It will be fairly quick because uh we only have a couple of screens. So, it's not an awfully huge app. And um at the end of the sprints hopefully we will be able to see a working uh application first in the simulator and then we will uh send it to test flight. And if we have time at the end, uh, I might even add you to Test Flight as a user and, uh, you can download the app on your phone and try it for yourself.

嗯,Codex 我没像 Claude Code 那样深入折腾过。我只是稍微试了一点点,不知怎么的,用 Claude Code 对我来说就是更顺手。Codex 我就没再往深里研究了。这跟我之前试 bolt 又试 lovable 的感觉一样——头几步在 lovable 上感觉更轻松,于是我最后就默认用 lovable 了。这次也基本一样,在 Claude 上一开始就感觉更强、更好上手。所以我对 Codex 的能力没有特别强烈的看法。我相信 Codex 也有很多粉丝,还有其他一些工具大家都用得很成功。好的,看起来这两张都做完了。那我也开始建后端的 ticket。好,现在请让整个团队再次审视这些后端 ticket。让 system analyst agent 来主导讨论,但这次要让其余所有 agent 都深度参与,CTO agent 专门负责架构,同时我们也要确保代码质量和可维护性要高,所以 spaghetti agent(防意大利面式代码的 agent)在创建后端 ticket 时我也要它格外留意。所以现在后端 ticket 会被创建出来,等后端 ticket 也都建好之后,我就让整个团队对所有 ticket 做一次快速复查,把它们组织成一个个 sprint,然后我们就开始按 sprint 来开发。这会相当快,因为我们只有几个屏幕,不是个特别庞大的 app。等这些 sprint 跑完,希望我们能先在模拟器里看到一个能跑的应用,然后我们再把它发到 TestFlight。如果最后还有时间,我甚至可以把你加成 TestFlight 的用户,你就能在自己手机上下载这个 app 亲自试一试。


[1:32:32] Aakash

Sweet.

棒极了。


[1:32:34] Aakash

Yeah. I didn't even ask, are you an iPhone user or are you an Android?

对了我都还没问,你是 iPhone 用户还是 Android?


[1:32:38] Gabor

iPhone. Yes.

iPhone。是的。


[1:32:41] Gabor

Since iPhone one,

从第一代 iPhone 用到现在。


[1:32:42] Aakash

that hurts my heart.

这扎我的心。


[1:32:45] Gabor

Yes.

是的。


[1:32:46] Aakash

For obvious reasons. But I understand. I also have an iPhone. All right. So now we are creating all the backend tickets as well while our setup on uh Firebase is finishing. Now the sixth out I think it was six or seven tickets maybe six. The last ones are in flight by this group of agents and these ones are creating the tickets. So we are almost done. Now it will soon ask me to put the um um API keys in. Uh that is a very important part that we will need to put those into the Firebase secret store. Uh because you don't want your um secret keys for your API to be exposed. But you will see when I add them how does it look when you are adding it to the secret store

原因显而易见。不过我理解,我自己也用 iPhone。好。所以现在我们在创建所有后端 ticket,与此同时我们在 Firebase 上的配置也快完成了。现在第六张——我想一共是六张还是七张 ticket,可能是六张。最后这几张正由这组 agent 处理中,它们正在创建 ticket。所以我们快做完了。它马上就会让我把 API key 填进去。这是非常重要的一环,我们需要把这些 key 放进 Firebase 的 secret store(密钥库),因为你肯定不想让你 API 的密钥暴露出去。等我添加的时候,你就能看到把密钥加进 secret store 是什么样子。


[1:33:53] Aakash

and basically you don't want that because if somebody gets your key they can charge API usage to you and you'll pay for it.

基本上你绝不想让密钥暴露,因为一旦别人拿到你的 key,他们就能把 API 的用量记到你头上,账单得你来付。


[1:33:59] Gabor

Oh so you you um you can always put a back stop on the spending. So um there needs to be uh like a multi-layer uh protection. But you know if you were stupid enough not to put a limit to how much charge you can entail and you exposed accidentally your key then yeah there can be trouble. Okay. Uh so it seems that we are done with this one. Um it says that we need authentication providers which we will not need because we will not use them. Um enable okay we don't need that fire. Okay. So I need to tell it that we will not use any login for the app. So we don't need to enable Google and Apple single sign on. Uh how is it called? Uh yeah, single sign on SSO. Yeah, I'm I'm blanking. Yeah. How are we doing on our cloud usage?

哦,不过你总是可以给花费设一个兜底上限。所以这里得有一种多层防护。但你要是傻到连一个消费上限都不设,又不小心把 key 暴露出去了,那确实可能出大麻烦。好。看起来这一步我们搞定了。它说我们需要身份认证的 provider,但我们其实不需要,因为我们不会用到。启用——好,那个我们不需要,Firebase。好。所以我得告诉它,这个 app 我们不会用任何登录功能。所以我们不需要启用 Google 和 Apple 的单点登录。那个叫什么来着?对,单点登录,SSO。对,我一下卡壳了。对。我们的 Claude 用量现在情况如何?


[1:35:07] Gabor

Uh I don't think it's too bad yet, but let me quickly check. Okay, it moved 10%. Okay, not bad. So, you could have two full agents writing all your back and front end tickets without worrying too much. And what plane are you on? Uh, I'm on the $200 plan.

呃,我觉得现在还不算糟,不过我快速查一下。好,它涨了 10%。好,不错。所以你可以让两个完整的 agent 同时去写你所有的前后端 ticket,都不用太担心用量。那你用的是哪个套餐?呃,我用的是 200 美元那档套餐。


[1:35:29] Gabor

Okay. So, if we go to Jer, we should be able to see all these tickets. Yeah, let's check them. Oh, and you can see that some of our tickets moved to done.

好。那如果我们去看 Jira,应该就能看到所有这些 ticket。对,我们去看看。哦,你能看到我们有些 ticket 已经挪到「完成」了。


[1:35:44] Aakash

Nice.

漂亮。


[1:35:45] Gabor

Yeah.

是的。


[1:35:46] Aakash

So, they got 29 tickets in their backlog.

所以他们的 backlog 里有 29 张 ticket。


[1:35:48] Gabor

I think more uh because under each we even have uh sub tickets in some cases. and dependencies. Yeah, right now I think uh we are on 35 tickets but there will be I think a lot more um because these are just the epics and now it will create the actual tickets.

我觉得不止,因为每张 ticket 底下有些还带了子 ticket,还有依赖关系。对,现在我想我们大概在 35 张 ticket,但我估计还会多得多,因为这些只是 epic,接下来它才会创建真正的 ticket。


[1:36:12] Aakash

Have you tried this workflow without creating tickets? What happened? Yeah. So actually uh we could see earlier today um I could have done ticket based design creation. So when we were creating the design, we could have started with um system asking system analyst to create the tickets for the designer and then asking the designer to create the uh Figma design. We didn't do that or I didn't do that. And actually this way I think the design turned out a little bit less high quality and less uh like I wanted it to be based on Figma make and the Figma make um definition of uh the brand. So for example, these parts of the color palette and these parts of the color palette were not ne necessarily used. Um and it is primarily because I did not break it down into tickets but rather I just um told the agent to take this as an input. take the uh whole specification as an input and create the design. This resulted in the context being so large that I assume that some compression happened and some details were lost.

你有没有试过不创建 ticket、直接跑这个工作流?结果怎么样?有的。其实今天早些时候就能看出来,我本可以采用基于 ticket 的设计创建方式。也就是说,我们做设计的时候,本可以先让 system analyst 给设计师创建 ticket,再让设计师去做 Figma 设计。但我们没那么做,或者说我没那么做。而且实际上我觉得这样做出来的设计质量稍微差了一点,没有完全达到我基于 Figma Make、以及 Figma Make 对品牌的定义所期望的样子。比如调色板里的这些部分、那些部分就没被用上。这主要是因为我没有把它拆成 ticket,而是直接告诉 agent 把这个当作输入——把整份规格说明当作输入去创建设计。结果导致 context 太大,我猜中间发生了某种压缩,一些细节就丢失了。


[1:37:56] Gabor

I can't prove it or I I I can't necessarily say that this is 100% the truth, but this is what I suspect that happened. I'm not saying that the app looks bad, but for example, I don't see not even a single orange um item on there.

我没法证明,也不能说这百分之百就是真相,但我怀疑事情就是这么回事。我不是说这个 app 做得难看,但比如说,我在上面连一个橙色的元素都没看到。


[1:38:17] Aakash

Yeah, it didn't use the whole pallet.

对,它没把整套配色都用上。


[1:38:20] Gabor

Yeah. So, that's what happens. So, basically, you get more AI slop if you're not going to have these agents replicate real roles. Because one might ask like well for AI should we not be replicating the way we did things in the past? No. Um AI should not necessarily be fully replicating it. Um but at least for now uh it gives a good framing of how to do things. But as we are go I mean think about it this way. um you are trusting AI to do a multi-step process. You don't necessarily watch every step of the AI but you sort of check in at places. So even this type of work is a very new type of interacting because I haven't created a single ticket. I haven't written uh anything of the of the actual specification on confluence. So we are using it on a on a drastically new way but it it somewhat resonates with how we used to do stuff but it's very far from very far from it. Okay. So let me uh quickly do a review. Uh it doesn't seem to be too large number of tickets which is good. So let's just organize them. Okay. Now I want the whole team, every single agent to do a review of every ticket to make sure that the ticket makes sense from their perspective. I especially want designer agent to check all the front- end development tickets that there is enough information there and that a screenshot is attached to each. I want tester agent, test architect agent to make sure that we have a decent test coverage for every ticket and we know what is our overall test plan and regression test plan uh to ensure quality and I want the code maintainability agents to watch out when we are creating the code that we have a clear expectation on naming conventions and approach to create a maintainable, well doumented and well commented code. And I also want um product council to check that we are storing data appropriately. We don't send any user data to the server side storage. On the server side, we are just processing information. But all the storage should always be on the device side because we are not expecting the user to create an account. We are not expecting the user to log in. Therefore, we only want to store user data locally and process the data on the server side when needed. Also, I want to make sure that the database setup for the AI functionality is Firebase and Vert.Ex database. That's where we will store the rule book and the situation book so that we will be using our tokens wisely in the API queries. Okay, this will take a minute to transcribe, but yeah, I wanted to make sure that um I specifically call out which agent should watch out for what and also give a little bit more context. And I can't emphasize enough um how important it or how um yeah how important I find that when I use voice to text I can give way more context and depth to the requirements compared to if I would want to um type all of this up. And even if I make a mistake while describing uh it doesn't matter because AI will understand. Okay, let's see what our other agents are saying. Yeah, remove the Google sign in and Apple sign in. Um simplify the author rep. That's good. Now the agents are reviewing. Now get system analyst agent to create sprints using the tag functionality uh with an appropriate dependency mapping between the tickets in the backlog. Okay. So as we can see now all the tickets are created and all uh the dependencies are mapped. So let me just very quickly prompt the whole uh uh set of sprints to be started and developed. All right clude let's start building. Go for sprint one once you are done with it. Sprint two then sprint three and so on and so on. So let's start building and if you have any question in the meantime about any step please make sure you ask and hopefully by the end of all the sprints are done we will have a build that will run in a local simulator and from there we just need to export and upload to the app store.

对,所以这就是会发生的事。基本上,如果你不让这些 agent 去对应真实的角色,你得到的 AI 垃圾内容就会更多。可能有人会问:用 AI 的话,我们就不该照搬过去做事的方式了吧?不是的。AI 不一定要完全照搬旧的方式,但至少目前来说,它给了我们一个不错的做事框架。不过随着我们推进……这么想吧,你是在信任 AI 去完成一个多步骤的流程。你不一定会盯着 AI 的每一步,但你会在一些关键节点上检查一下。所以连这种工作方式本身都是一种全新的交互——因为我一张工单都没建过,confluence 上实际的规格说明我也一个字没写过。所以我们是在用一种彻底全新的方式做事,但它又跟我们过去的做法多少有点呼应,只是离过去已经很远很远了。好,那我快速做个 review。工单数量看起来不算太多,这挺好。那我们把它们整理一下。好,现在我想让整个团队、每一个 agent 都对每张工单做一遍审查,确保从他们各自的角度看这张工单是说得通的。我特别想让 designer agent 检查所有前端开发的工单,确保里面信息足够、而且每张都附了截图。我想让 tester agent、test architect agent 确保我们对每张工单都有像样的测试覆盖,并且我们清楚整体测试计划和回归测试计划是什么,以此保证质量。我还想让 code maintainability agent 在我们写代码的时候盯着,确保我们对命名规范、以及如何写出可维护、文档齐全、注释清晰的代码有明确的预期。我还想让 product council 检查我们是不是恰当地存储数据——我们不把任何用户数据发到服务端存储。在服务端我们只做信息处理,但所有的存储都必须放在设备端,因为我们不打算让用户注册账号,也不打算让用户登录。因此我们只想把用户数据本地存储,需要时再在服务端处理这些数据。另外,我想确保 AI 功能用的数据库是 Firebase 和 Vertex 数据库——规则手册和情境手册就存在那里,这样我们在 API 查询里就能更聪明地使用 token。好,这段转写要花一点时间,不过我就是想确保我明确点名哪个 agent 该盯什么,同时也多给一点上下文。我怎么强调都不为过——当我用语音转文字时,跟我把这些全部敲出来相比,我能给需求注入多得多的上下文和细节。而且就算我在描述的时候说错了也没关系,因为 AI 能理解。好,我们看看其他 agent 怎么说。对,把 Google 登录和 Apple 登录去掉。把作者那块简化一下,这挺好。现在 agent 们正在 review。现在让 system analyst agent 用 tag 功能来创建 sprint,并在 backlog 里的工单之间做好恰当的依赖映射。好,现在我们可以看到所有工单都建好了,所有依赖也都映射好了。那我就很快地把这一整套 sprint 提示一下,让它们开始开发。好,Claude,我们开始构建吧。先做 sprint one,做完之后做 sprint two,然后 sprint three,依此类推。那我们开始构建,过程中如果你对任何一步有疑问,请一定要问,希望等所有 sprint 都做完时,我们能得到一个可以在本地模拟器里跑起来的构建版本,从那之后我们只需要导出并上传到 app store 就行了。


[1:44:14] Aakash

Wow. All right. So how are agents doing?

哇。好,那 agent 们干得怎么样了?


[1:44:18] Gabor

Okay. So the build has gone through and I uh found a small uh inaccuracy or a couple of small inaccuracies mainly around how our AI is identifying the actual topics uh that are being caused. So, uh, I had to prompt them, um, to improve the quality of how the AI identifies the right content from the knowledge base. But now, I think it should be decent. The good news is that we've got our build. So, let me just restart the build and we will see it right here what happens. But this is already a working build. So,

好,构建已经跑通了,我发现了一个小小的、其实是几个小小的不准确的地方,主要是关于我们的 AI 怎么识别实际涉及的话题。所以我得提示它们去改进 AI 从知识库里识别正确内容的质量。不过现在我觉得应该挺不错了。好消息是我们已经有构建版本了。那我重新启动一下构建,我们就能在这里看到会发生什么。但这其实已经是一个能跑的构建版本了。所以——


[1:45:05] Aakash

wow, that's exciting. Yeah. So the coding was the short part if I reflect on this like once you had it create the tickets just a couple prompts front and back end now we got a working app.

哇,这太让人兴奋了。对,我回想一下,写代码反而是最短的一段——一旦你让它把工单建好,前端后端就几个提示,现在我们就有了一个能用的 app。


[1:45:17] Gabor

Yeah it is actually because uh the definition is really the investment into creating uh the good backbone of the whole project and the whole application. And once that's done, then the coding goes quite fast. And that's what that's what holds back most product managers. It is just simply, oh, I don't know where to start, how to set up my uh system. But at the end, once you set it up, it gets actually quite uh quick and interesting. So, um let's uh restart the app. This one, this window restarted a new build. Um, but we actually just need to restart the app. Restart the app in the simulator with the existing build. So now it will restart the app and then we will need to push it uh to test. Right. Awesome. That's really exciting. I like how we did all this work and now we're really seeing the fruits of our labor. And somebody who previously was scared of coding, all of the sudden they're literally building an app on the phone.

对,确实是这样,因为定义阶段才是真正的投入——为整个项目、整个应用打下好的骨架。这件事一旦做完,写代码就相当快了。而这恰恰是大多数产品经理被卡住的地方,就是单纯地『哦,我不知道从哪开始、怎么搭我的系统』。但到最后,一旦你把它搭起来,过程其实变得相当快、相当有意思。那我们重启一下这个 app。这个窗口、这一边重新跑了一个新构建,但我们其实只需要重启 app——用现有的构建在模拟器里重启 app。所以现在它会重启 app,然后我们就需要把它推到测试环境。好,太棒了,这真的很让人兴奋。我喜欢我们做了这么多工作,现在真正看到了劳动成果。一个以前害怕写代码的人,突然之间居然真的在手机上构建出了一个 app。


[1:46:44] Gabor

Yeah, exactly. And now you just have almost no limit on what you are able to do.

对,没错。而且现在你能做的事情几乎没有上限了。


[1:46:51] Aakash

And for you personally, what's like the when do you squeeze this in? Are you staying up late? because being a Google PM isn't known to be an easy job.

那对你个人来说,你都是什么时候挤时间做这些的?你会熬夜吗?毕竟谷歌产品经理可不是个轻松的活儿。


[1:47:00] Gabor

Yeah. So, uh in general, it is something that uh I can easily do until like 4:00 a.m. in the morning on the weekends and I need to actively force myself to go sleep uh during the weekdays because otherwise I I would just not uh wake up. But also uh it helps when I know that you know next morning let's say um I'm usually a morning person and I usually go u to the gym session in uh the weekdays in the morning and I know that if I don't go to sleep I won't be able to uh wake up for the gym. So yeah that's that's a good motivator as well because we sit all day. All right. Unlike our agents who are not sitting around at all,

对。总体来说,这是一件我在周末能轻松干到凌晨四点的事,而工作日我得主动逼自己去睡觉,不然我就根本起不来。不过也有帮助的是,比如我知道第二天早上——我一般是个早起的人,工作日早上我通常会去健身房练一练,我知道如果我不睡觉,就没法早起去健身。所以对,这也是个不错的动力,因为我们整天都坐着。好吧,不像我们的 agent,它们可一点都没闲坐着。


[1:47:46] Aakash

is there a way you're keeping them working like 24/7 like overnight or something? I haven't been able to keep them running that long, but I have been able to keep them running for kind of decently long enough um over over um let's say um half an hour, one hour that can easily happen. So that's uh that's not a problem. So, for people who don't know what's going on,

有没有办法让它们 24/7 一直运转,比如通宵跑?我还没能让它们跑那么久,但我已经能让它们跑相当长的一段时间了——比如说半小时、一小时这种很容易做到。所以这不是问题。那为了让不了解情况的人也跟得上——


[1:48:14] Aakash

basically Claude has used Apple's SDK in order to pull up this app called Simulator. And so, Simulator pulls an iPhone up on your computer, and you can touch and click it like an iPhone. So, that's what we're doing now.

基本上 Claude 用了 Apple 的 SDK 来调起这个叫 Simulator(模拟器)的东西。Simulator 会在你电脑上调出一个 iPhone,你可以像操作真 iPhone 一样去触摸、点击它。所以这就是我们现在在做的事。


[1:48:30] Gabor

Yes. I don't know if you realized the uh splash screen. Um, that was a small uh Easter egg there. I'm blind. I'm deaf. I want to be a ref. This is one of the fun things that uh I've heard from the spectators on the uh from the audience when I was a referee. So yeah, here is our app. So welcome to our AI uh consultant for ice hockey rules. So let's start with a simple one. Um here are a few chips which the app provided. So what's a tripping? This is sent to the AI and the AI at this time is using all the knowledge bases in the background to understand our requests. Um I actually added an observer mode. So if you turn that on you can see in a little bit more detail what is happening. So uh it searched the rule book. It found four hits. It searched the secondary resource. the situation book, which is the other official IIHF um documentation for referees. And then it didn't even go forward to the web because these five hits were enough to find out.

对。不知道你有没有注意到那个启动画面,那里藏了个小小的彩蛋。『我瞎了,我聋了,我想当裁判』(I'm blind, I'm deaf, I want to be a ref)。这是我当裁判那会儿从看台上、从观众那儿听到的好玩的话之一。对,所以这就是我们的 app。欢迎来到我们的冰球规则 AI 顾问。那我们从一个简单的开始。这里是 app 提供的几个快捷选项(chips)。『什么是绊人犯规(tripping)?』这条被发给 AI,AI 这时正在后台调用所有知识库来理解我们的请求。我其实加了一个观察者模式(observer mode)。如果你把它打开,就能稍微更详细地看到正在发生什么。它搜索了规则手册,找到四条命中。它搜索了第二份资源——情境手册,那是另一份给裁判看的 IIHF 官方文档。然后它甚至都没继续去搜网络,因为这五条命中已经足够搞清楚答案了。


[1:49:56] Aakash

Very cool.

非常酷。


[1:49:56] Gabor

And we can see how many tokens tokens we used and what was the output and what was the latency. So yeah, but we don't need the observer mode, but we just need the actual explanation. So this is what tripping is in ISO. And if you want to know the details, here is the actual wording from the book from the rule book. And if you don't believe then you can even look up the PDF and it brings up exactly there. Here is tripping rule number 57. I think that's actually the killer feature right there, being able to go through rule book for you. Exactly. And not just the rule book, but actually it goes through the situation book as well, which usually is uh the extended version of the rule book with uh examples. So uh let's let's see another one. What's hooking? So now it will do the same. It explains

我们还能看到我们用了多少 token、输出是什么、延迟是多少。对,不过我们其实不需要观察者模式,我们只要实际的解释就行。所以这就是冰球里『绊人』的定义。如果你想知道细节,这里是来自规则手册的原文措辞。如果你不信,你甚至可以去翻 PDF,它会精确地定位到那里。这是第 57 条绊人规则。我觉得这其实就是它的杀手级功能——能替你把整本规则手册过一遍。没错。而且不只是规则手册,它实际上还会过一遍情境手册——情境手册通常是规则手册的扩展版,带例子。那我们再看一个。『什么是钩人犯规(hooking)?』现在它会做同样的事,它来解释——


[1:51:03] Aakash

so you created an AI powered app not just any app guys.

所以你做出来的是一个 AI 驱动的 app,各位,这可不是随便什么普通 app。


[1:51:08] Gabor

Yes. Uh so I I created an AI powered app which has uh two knowledge bases uh in the background

对。我做了一个 AI 驱动的 app,它在后台有两个知识库——


[1:51:18] Gabor

and we didn't even go into all the details of hey is this a graph rag is this a vector rag. Cloud code took all of that for you. uh I was actually um I did define uh because I said that uh it should be a vector um and or maybe I didn't say that it should be a vector but when I defined that it it should be a vertex um database that implies that vertex is a vector database so um it it did imply that it it would be embeddings.

而且我们甚至都没去深究『这是 graph RAG 还是 vector RAG』之类的细节。Claude Code 把这些全替你搞定了。我其实确实有定义过……因为我说了它应该是个 vector(向量)……又或者我没明说它要是 vector,但我定义它应该用 Vertex 数据库时,这就隐含了 Vertex 是个向量数据库,所以它就隐含会用 embedding(向量嵌入)了。


[1:51:50] Aakash

Oh there we go. So there is some level of specification. Yes. All right. Anyways, uh let's push it to test flight because that was our promise at the beginning of the session that in one session uh we get to the test flight. So push the build to test flight. What happens at this time is uh I had to set up test flight before uh but if you look at my uh test flight which should be somewhere here. Yeah. So I set it up but currently I have no builds. So I will just get the very first build now uploaded into test flight. So um what I had to do is just fill in the basic details about what the product is or or what the app is what the app does. If I want to go further from test flight and I want to actually launch the app then I would need to add screenshots as well as I would need to create the support URL. I would need to create the privacy URL. Fun fact, these uh privacy and other URLs are easily created also by um cloud code and you can host it on uh Firebase as well. Therefore, you just give the prompt create my privacy page um you redirect the URL and and it's done. But for now, what matters for us is uploading the build. Okay, so the production uh build is still running which is good. Yeah. So now uh it is just a little bit of a waiting game uh while it gets to test flight and then um we can see it being deployed on the phone. So that concludes basically the uh whole project. Uh let me quickly uh just go through what exactly we did. So we started basically from cloud where we defined specified our application. Then it created the specification in confluence. After having the specification in confluence, we went into Figma make where we prompted Figma to create our design package like design briefing for the app. After that we went into the actual Figma uh to create the screens. Once we had the screens we went back to cloud code and asked the agent to create our development tickets. Probably if I refresh this page now I will have a lot more. Yeah, 51 tickets are now in done stage and a couple of them couple of bugs are open in the backlog. four tickets. All the rest uh basically are uh done from uh the backlog element. And then we pushed the code uh to a simulator. And from the simulator when we saw that okay it is doing what it needs to do then we are now uploading it to test flight. And from test fight is just one step. Um uploading some screenshots and descriptions and submitting it for Apple's review.

哦,对了。所以还是有一定程度的规格说明的。是的。好,不管怎样,我们把它推到 TestFlight 吧,因为这是我们在这期节目一开始就承诺的——在一期节目里就推上 TestFlight。那就把构建推到 TestFlight。这时候会发生什么呢,我之前得先把 TestFlight 设置好——你要是看我的 TestFlight,应该在这附近。对。所以我设置好了,但目前我还没有任何构建版本。所以我现在就把第一个构建版本上传进 TestFlight。我之前要做的,就是填一些关于这个产品、或者说这个 app 是什么、app 做什么的基本信息。如果我想从 TestFlight 再往前走、真正把 app 发布出去,那我还得加截图,还得创建支持 URL(support URL),还得创建隐私政策 URL(privacy URL)。有意思的是,这些隐私政策之类的 URL 也很容易用 Claude Code 生成,而且你可以同样把它托管在 Firebase 上。所以你只要给个提示『帮我创建隐私政策页面』,你把 URL 重定向一下就搞定了。但现在对我们来说重要的是上传构建。好,生产构建还在跑,这挺好。对,所以现在就是稍微等一等,等它上传到 TestFlight,然后我们就能看到它被部署到手机上。这基本上就给整个项目收尾了。我快速过一遍我们到底做了什么。我们基本上是从 Claude 开始的,在那里我们定义、细化了我们的应用。然后它在 confluence 里生成了规格说明。在 confluence 里有了规格说明之后,我们进到 Figma Make,在那里我们提示 Figma 帮我们创建设计包,也就是 app 的设计简报。之后我们进到真正的 Figma 里去创建界面。界面有了之后,我们回到 Claude Code,让 agent 创建我们的开发工单。我现在要是把这个页面刷新一下,应该会多出来很多。对,51 张工单现在处于已完成状态,还有几个 bug、几张工单开在 backlog 里,四张工单。其余的基本上从 backlog 那块来说都已经完成了。然后我们把代码推到模拟器。从模拟器里,当我们看到『好,它在做它该做的事』之后,我们现在就把它上传到 TestFlight。从 TestFlight 出发就只差一步了——上传一些截图和描述,然后提交给 Apple 审核。


[1:55:33] Aakash

Pretty cool. I had Gemini try to uh create a little summary of what we did here. So it got one thing wrong, but it got the rest of it right. We had the system analyst. We actually he Gabbor used Claude to create that prompt, not Confluence. And then the design pipeline to Figma make and Figma the development ticketing the Flutter frontend development the QA and review and now we're in deployment.

相当酷。我让 Gemini 试着给我们刚才做的事做了个小结。它有一个地方搞错了,但其余的都对。我们有 system analyst(系统分析师),其实 Gabor 是用 Claude 来生成那个提示的,不是 Confluence。然后是到 Figma Make 和 Figma 的设计流水线、开发工单、Flutter 前端开发、QA 和审查,现在我们进入到部署阶段了。


[1:55:58] Gabor

Yeah, that sounds good.

对,听起来不错。


[1:55:59] Aakash

Yeah, notebook LM is pretty awesome.

对,NotebookLM 真的挺棒的。


[1:56:02] Gabor

Yeah, I love I love notebook.

对,我很喜欢、很喜欢 Notebook。


[1:56:05] Gabor

It's one of my favorite harnesses. I think Claude Code is like my favorite, but Notebook LM is like second. Yeah, it really helps when you want to understand complex uh complex problems or complex ecosystems or complex topics. You just throw in everything that you know about it and then it will um make sensitive for you.

它是我最喜欢的工具套件之一。我觉得 Claude Code 算是我的最爱,但 NotebookLM 大概排第二。对,当你想理解复杂的问题、复杂的生态系统或者复杂的话题时,它真的很有帮助。你只要把你知道的一切都丢进去,它就会帮你把这些梳理清楚、让它对你变得有意义。


[1:56:28] Aakash

So let's talk about that co unemployment. You actually in a LinkedIn post said you were delivering food on Deliveroo. So you went from delivering food on Deliveroo to product manager at Google. you have to tell us the inside story of how you cracked Google.

那我们聊聊那段失业经历。你在一篇 LinkedIn 帖子里说过你当时在 Deliveroo 送外卖。所以你是从在 Deliveroo 送外卖一路走到谷歌当产品经理的。你得跟我们讲讲你是怎么攻下谷歌的内幕故事。


[1:56:43] Gabor

Right. So there was one step in between but let me give you the full story. So uh late 2019 um I uh changed job and I started with a new company just at the beginning of 2020 and COVID hit around April 2020 and uh the company where I worked was hit by COVID and I found myself being relatively new living in London but coming from Hungary uh where I lived for 30 years uh in my life. So my savings were decent on a Hungarian level, but when you move to London, that's another step change. And um the biggest problem was that during those days, UK being an island and you not being allowed to fly out on a commercial flight because it's a lockdown and France saying that no, we are not allowing anybody to cross the British channel. there were no routes out of the UK. This means that I had to stay in London. Uh and um yeah, my um other unfortunate situation was that given that I changed job and I um uh worked for a small startup. The sw the startup asked me to be a self employed instead of a proper employee. So when COVID hit, everybody who got laid off uh who used to be an employee got government help. But I since I was a self-employed and I only had like two months, three months under my belt as a self-employed, they required a full year in order to get some money from the government. I got nothing. So my Hungarian savings were flying out of the window with the London rent prices. And back then I didn't really have any uh fancy fang company on my resume and there were literally almost no jobs to interview for. And I found myself that okay so now is the time when you need to do what you need to do. You need to put some you know food on the table. So I took the one job that at that time was available for me. We were only allowed to work as new riders at the pest peak times like Friday afternoon and Saturday afternoon. Um it is not an easy job. It is not an easy job. I have to tell you that um it was a humbling experience. So yeah, it was it wasn't easy. It was it was a humbling time but now it's a good memory and it's a good story.

好。中间其实还有一步,不过我给你讲完整的故事。2019 年底我换了工作,2020 年一开年我就入职了一家新公司,然后 COVID 大概在 2020 年 4 月爆发,我工作的那家公司被 COVID 重创。当时我发现自己在伦敦生活得还相对算新——我来自匈牙利,在那儿生活了 30 年。所以我的积蓄按匈牙利的水平算还不错,但你一搬到伦敦,那又是另一个量级的台阶。最大的问题是,那些日子里英国是个岛,封锁期间你不被允许坐商业航班飞出去,法国又说不行、不许任何人穿过英吉利海峡,所以根本没有离开英国的路线。这意味着我只能留在伦敦。还有一个我比较倒霉的处境是,因为我换了工作、又在一家小创业公司干活,那家创业公司要求我以自雇者(self-employed)的身份、而不是正式员工的身份来工作。所以 COVID 一爆发,所有被裁掉的、原本是正式员工的人都拿到了政府补助。而我,因为是自雇者、而且只干了两三个月的自雇,政府要求满整整一年才能拿到补助,我什么都没拿到。于是我那点匈牙利积蓄就被伦敦的房租一点点掏空了。而且那会儿我简历上其实没有什么光鲜的 FAANG 公司经历,可以去面试的工作几乎一个都没有。于是我发现,好吧,现在就是那种你不得不做你该做的事的时候了。你得想办法把饭碗端起来。所以我接了当时唯一能给我的那份工作。我们当时只被允许在每周需求高峰时段当骑手送外卖,比如周五下午和周六下午。这活儿不容易,真的不容易,我得跟你说,那是一段很磨人、很让人放下身段的经历。所以对,确实不容易。那是一段让人放低姿态的日子,但现在它成了一段美好的回忆、一个不错的故事。


[1:59:35] Gabor

So how did you crack Google? What was the process for you? Like how did I crack Google? Um so after after the uh unemployment I got a job in between um which was kind of a a fixedterm contract uh back stop job. I was uh really fortunate to to land that which allowed me to kind of get back on my feet. Um and I uh managed to find um someone online who was offering some help for candidates who were preparing for fang interviews and um I didn't have the money to pay them but I knew that I had to get some help because previously I went into fang interviews but I always failed at the last step. I went into the loop, but I didn't get the job. So, I knew that something was broken and I knew that I needed help. Therefore, I put down the deposit from almost my lost money and I said, I will collect the rest of the money and I will come back in a few months and then we will work together. And that's what I did. I saved up some money. Um, and I actually made a deal. Uh, I said, "You are too expensive for me. I pay you half the money if I don't get in, but I pay twice the money if I get in. And the coach said, "Game on." And guess what? He got twice the money.

那你到底是怎么攻下谷歌的?你经历了怎样的过程?要说我是怎么攻下谷歌的——失业之后我中间找到了一份工作,算是个固定期限合同的过渡性兜底工作。我很幸运能拿下那份工作,它让我得以重新站稳脚跟。然后我在网上找到了一个为准备 FAANG 面试的候选人提供帮助的人。我当时没钱付给他,但我知道我必须得找点帮助,因为我之前去面 FAANG,但总是在最后一步失败。我进到了终面环节(the loop),但没拿到 offer。所以我知道有什么地方出了问题,我知道我需要帮助。于是我从我几乎所剩无几的钱里拿出来付了定金,我说,我会把剩下的钱攒齐,过几个月再回来,到时候我们一起合作。我就是这么做的。我攒了些钱。我其实还跟他做了个约定。我说:『你对我来说太贵了。如果我没进,我付你一半的钱;但如果我进了,我付你两倍的钱。』那个教练说:『成交。』然后你猜怎么着?他拿到了两倍的钱。


[2:01:08] Aakash

Nice.

漂亮。


[2:01:10] Aakash

So, you actually invested

所以你其实是真金白银投入进去——


[2:01:12] Aakash

in cracking it. You worked really hard. Obviously, if you're investing money, you probably put in tens, hundreds of hours practicing on top of that. So, you didn't treat these interviews lightly. No. Uh I absolutely didn't. So uh I think I prepared overall for the interviews about 200 hours. My uh pace for um those weeks were that I uh typically had four mock interviews per week and I had one coaching session per week. That's how I operated. And the best part was uh when you when you do so many mock interviews, you start to find other people who are also similarly good because you just go through so many people in the practice that you will find ah okay this this person was really good in the practice. So I found three other people. It was a group of four of us and out of the four of us three of us made it into Google. one in the United States, one in um one actually two in the US and I myself in Switzerland. But we didn't know each other before like we had zero connection to each other. We just found uh each other online and we started to practice together.

——去攻下它的。你下了很大的功夫。显然,如果你都投钱了,那你大概在这之上还练了几十、上百个小时。所以你没有把这些面试当儿戏。没有。我绝对没有。我想我总共为面试准备了大概 200 个小时。那几周我的节奏是:通常每周做四场模拟面试,加一场教练辅导课。我就是这么运作的。而最棒的部分是,当你做了这么多场模拟面试,你会开始遇到其他同样很厉害的人——因为你在练习里见了太多人,你自然会发现『啊,好,这个人在练习里真的很强』。所以我找到了另外三个人。我们成了四个人的小组,而我们四个人里有三个进了谷歌。其中一个在美国——其实是两个在美国,我自己在瑞士。但我们之前都互不相识,彼此之间一点关系都没有。我们就是在网上找到了对方,然后开始一起练习。


[2:02:36] Aakash

Do you remember where was it? Exponent Lewis Lynn. How did you find them? Um, I think it was at that time, um, they had on iotanoffer.com a, um, special group where you could only get, uh, to practice if you had an active fang uh, interview process on. So you had to send to Exponent your recruiter email in order to be allowed into that practice community. That was their quality bar. Very cool.

你还记得是在哪儿找到的吗?Exponent、Lewis Lin。你是怎么找到他们的?嗯,我记得当时他们在 IGotAnOffer.com 上有一个特别的小组,只有当你手头正有 FAANG 公司在面试时,才能进去练习。所以你得把猎头发给你的邮件发给 Exponent,才能被允许加入那个练习社群。这就是他们的质量门槛。挺酷的。


[2:03:12] Aakash

Yeah. Everybody wants to become an AIPM that I talked to. They're all saying, "Hey, it gets 30% pay bomb, but there's more AIPM jobs. It's 30% of open PM jobs as well." Should people be getting AIPM certificates to get an AIPM job?

对。我聊过的人都想转去做 AIPM。他们都在说:「嘿,AIPM 薪水高 30%,而且 AIPM 的岗位更多,占了所有公开 PM 岗位的 30%。」那大家是不是应该去考个 AIPM 证书,好拿到 AIPM 的工作?


[2:03:28] Gabor

That's an interesting one. And I actually have um a similar answer to it what I always had about the uh scrum certificate or agile certificates. The certificate itself is not the thing that you need. The knowledge is what you need. I don't think anybody should pay for a certificate for the certificates sake. pay for a course for the knowledge, not for the certificate. And that's where people go wrong because oftentimes these courses are fully automated. You pay the money, you get in there, there are those sessions whether or not you attended the sessions, whether or not you learned anything. At the end, it automatically generates you a PDF. But the PDF will worth very little when you actually need to do something about AI. So the best courses are the ones where you need to have hands-on building exercises with AI because then you are gaining experience and whether whether or not you get a certificate at the end that's kind of secondary. the absolute best places to do uh some learning is where you not just build something but you build something that you can later on share and there is actually a contradiction that couple of years ago I had a very strong opinion that product managers would not need a portfolio and I'm actually lately refining this opinion and I believe that if you can demonstrate that you built something now it is valuable because the product management practice and the product management profession is quite uh split right now. Every company wants to do AI. But the reality of product managers within companies is that if you are the one of the few lucky ones within a company that works in an area where building AI makes sense and your leadership wants to invest into AI, you will gain AI experience. But the majority of the PMs in their everyday job may not touch any AI product for the next year or two just because it doesn't uh trickle down that fast to every place in every company. And for those PMs who don't have the chance to work on AI initiatives within their job, all they are left with is trying to make themselves more productive with CHP, which is not going to cut it. In two years, the gap will be so big between those who build and those who are just productivity AI users that it will be very hard to catch up. That's why I recommend everybody to start building if not within your work then outside of your work not because you want to build a business out of it just because you want to experience it and you want to demonstrate that you are able to build and what are the tools that PM should be investing their time in today we obviously really triplecllicked on cla code what is your take on cla co-work and claude dispatch patch cover and dispatch are um still I feel that they are a little bit premature and uh somewhat moderately uh reliable. They are interesting because uh you can achieve more with them and you can let the AI do more without you and they can handle uh through um through a browser extension. They can operate your browser. They can do much more than just the chat itself. But right now I find that they are quite fragile uh and not necessarily reliable. But they are getting better by the day.

这个问题挺有意思的。我的回答其实跟我一直以来对 Scrum 证书、敏捷证书的看法一样:你需要的不是证书本身,而是知识。我觉得没人该为了证书而花钱去考证。花钱报课是为了学到东西,不是为了那张证书。很多人就栽在这儿,因为这些课程往往是全自动的——你交了钱进去,里面有一堆课程,不管你有没有去听、有没有真的学到东西,到最后系统都会自动给你生成一张 PDF。但等你真要上手做 AI 的时候,这张 PDF 几乎一文不值。所以最好的课程,是那种逼着你动手跟 AI 一起做项目的,因为那样你才真正积累了经验,至于最后有没有证书反倒是次要的。而最最理想的学习场景,是你不光做出了东西,还做出了之后能拿去分享的东西。这里其实有个矛盾:几年前我曾非常坚定地认为产品经理不需要作品集,但最近我在修正这个观点。我现在觉得,如果你能证明自己亲手做出过东西,那是很有价值的,因为现在产品经理这个行当、这个职业正处在严重的两极分化中。每家公司都想做 AI。但产品经理在公司里的真实处境是:如果你是公司里少数幸运儿之一,正好在一个适合做 AI 的领域,而且你的领导也愿意往 AI 上投资,那你就能积累到 AI 经验。可大多数 PM 在日常工作里,未来一两年可能压根碰不到任何 AI 产品,只是因为 AI 没那么快渗透到每家公司的每个角落。而对那些工作中没机会参与 AI 项目的 PM 来说,他们能做的就只剩下用 ChatGPT 让自己更高效一点,但这远远不够。两年后,那些动手做东西的人和那些只是把 AI 当效率工具用的人之间,差距会大到很难追赶。所以我建议每个人都开始动手做东西——工作里没机会就在工作之外做——不是因为你想拿它创业,而是因为你想亲身体验,想证明自己有能力把东西做出来。那 PM 今天该把时间投在哪些工具上呢?我们今天显然已经把 Claude Code 聊得很透了,那你怎么看 Claude 的 co-work 和 dispatch?cover 和 dispatch 嘛——我觉得它们还有点不太成熟,可靠性也只能算中等。它们之所以有意思,是因为你能用它们做到更多,能让 AI 在没有你盯着的情况下做更多事,而且它们还能通过一个浏览器扩展去操作你的浏览器,能做的远不止聊天本身。但目前我觉得它们还挺脆弱的,不一定靠谱。不过它们每天都在变好。


[2:07:41] Aakash

Man, two weeks ago you thought they were but it sounds like you've changed your team on that.

老兄,两周前你还觉得它们行呢,听起来你现在改主意了。


[2:07:47] Gabor

Don't tell anyone. Yeah, two weeks ago we had we had a conversation and Okash, oh, so how do you find this patch? Oh, it's absolutely It was it was but now it's now it's just fragile. So I think another couple of weeks go by and by the time this video is published it will be probably reasonable and then another few weeks and it will be oh my god this is the best thing ever. So you mentioned a PM portfolio and I actually want to triple click on that. How do you create a PM portfolio that really helps you crack into the top tier of jobs and fang companies? I'm not sure if I have um the right answer for it, but I do have an approach for it. So, as you could see in the app that we built today, I um added an observation mode. And the reason why I added that because if I would ever want to show this app to anyone, I would turn on that observation mode and I could walk through the listener what I built in the background, how those things are working, what are the knowledge bases. Uh I can tell an interesting story uh about the calibration of of the scoring. um when I was um putting together the when I found actually a a bug in uh the app where it didn't identify the correct section of the rule book. I uh started to troubleshoot why and I found a fascinating story about it. Um and I actually documented it here. So uh there was a problem in there where the scoring which is a multicomponent uh scoring that identifies whether the um rulebook part is relevant for the query or not did not understand the difference between penalties and penalty or boarding and board. So I had to add this and also some of the thresholds were just too strict. So when I would say this story and I would explain how did this impact the actual user experience, this would be a really good not portfolio but like a demonstration story. So while I cannot necessarily advise you on how a really good portfolio look like, I would say that if you have a couple of stories like this about how you built and fine-tuned AI, that is definitely a um a useful story to tell. Awesome. All right, this is what we've been waiting for. So let's now distribute the app and we can put it into test light. So now it's going to prepare the upload. It's going to do the signing and then uploading. So in probably like three to five minutes, we will have our first test flight build in the App Store Connect test flight section. All right. So, it seems that we finally managed to upload our app to the test flight. Let's refresh. Yes, that is the build. So, now we just need to wait while Apple processes it. This usually takes a couple of minutes and once the processing is done, we can invite our internal testers to uh start testing the application on their devices and they will be able to download it anywhere in the road as long as they are invited as testers and after that um you can just launch the product.

别跟别人说啊。对,两周前我们聊过一次,Aakash 还问:「哎,你觉得这个 dispatch 怎么样?」我说:「绝了!」当时确实是这感觉,可现在它又变得很脆弱了。所以我估计再过几周,等这期视频发布的时候,它大概就还算靠谱了,再过几周,就会变成「我的天,这简直是史上最棒的东西」。——你刚提到 PM 作品集,我想就这个再深挖一下。要怎么打造一个真正能帮你挤进顶级岗位、进 FAANG 公司的 PM 作品集?我不确定我有没有标准答案,但我确实有一套思路。你看我们今天做的这个 app,我加了一个「观察模式」(observation mode)。我加它的原因是:如果哪天我要把这个 app 展示给别人看,我就会打开这个观察模式,带着对方走一遍我在后台都搭了些什么、这些东西是怎么运作的、知识库都有哪些。我还能讲一个关于评分校准的有意思的故事。当时我在拼装……我其实发现了 app 里的一个 bug:它没能识别出规则手册里正确的那个章节。我开始排查为什么,结果挖出一个特别有意思的故事,我还把它记录在了这里。问题出在评分上——这是一套多组件的评分,用来判断规则手册的某一部分跟用户查询是否相关——它分不清 penalties 和 penalty、boarding 和 board 的区别。所以我得把这个加进去,另外有些阈值也设得太严了。所以当我讲这个故事、解释这个 bug 是怎么影响真实用户体验的时候,这就是一个很好的——不能说是作品集吧——但是一个很好的演示故事。所以虽然我没法确切告诉你一个真正出色的作品集长什么样,但我会说,如果你手头有几个这样的故事,讲你是怎么搭建并调优 AI 的,那绝对是个值得一讲的好故事。太棒了。好,这就是我们一直等的环节。现在让我们把这个 app 分发出去,放进 TestFlight。它现在会准备上传、做签名、然后上传。所以大概三到五分钟后,我们就能在 App Store Connect 的 TestFlight 区里看到我们的第一个 TestFlight 构建版本了。好,看起来我们终于成功把 app 上传到 TestFlight 了。刷新一下。对,就是这个构建版本。现在我们只要等苹果处理完就行了,这通常要几分钟,处理完之后我们就能邀请内部测试员在他们各自的设备上开始测试这个应用,只要他们被加为测试员,无论身在何处都能下载,之后嘛——你就可以正式发布产品了。


[2:11:54] Gabor

Wow. So now we actually have the app in test flight. Yeah, it it took us a while but it is there. And again from here it's only the question of uploading all those screenshots and filling in the uh different uh distribution details and phone numbers and descriptions and keywords and in a couple of days you will be in the actual app store. The one thing I would warn everybody that given that the barrier to entry for building apps is now lower than ever. Suddenly the app store reviews especially for the very first submission is they are just stretching over many days like I expected based on Apple's documentation that it would take one or maximum two days but it took more than a week to get the first review done. So just brace yourself for that.

哇,所以我们现在真的把 app 放进 TestFlight 了。是啊,花了点功夫,但它就在那儿了。接下来就只是上传那些截图、填各种发布信息、电话号码、描述、关键词,然后再过几天你就能上架到真正的 App Store 了。我要提醒大家一件事:鉴于现在做 app 的门槛比以往任何时候都低,App Store 的审核——尤其是第一次提交的审核——突然就拖得很长,要好多天。我原本根据苹果的文档以为最多一两天就好,结果第一次审核花了一个多星期。所以你得做好心理准备。


[2:12:50] Aakash

That sounds exactly like how it was when I was building apps back in 2012. So good luck guys.

这听起来跟我 2012 年做 app 那会儿一模一样。所以祝你们好运啦。


[2:12:58] Aakash

God, today's class has been just that, a master class, I think, in how a PM can potentially put on that founder hat, start to make themselves become a product builder, start to embrace the new way of product management. And like you said, the gap between you and the other PM in two years, it's going to be huge. So, make sure to use the time to do a similar activity to what we've shown in today's episode. If people want to get started, where should they go?

天哪,今天这堂课真是名副其实——我觉得是一堂大师课,教 PM 怎么有可能戴上创始人的帽子,开始让自己变成一个产品构建者,开始拥抱产品管理的新方式。就像你说的,两年后你和其他 PM 之间的差距会大得惊人。所以一定要利用好这段时间,做点类似我们今天这期节目里展示的事情。如果大家想开始动手,应该去哪儿?


[2:13:25] Gabor

If people want to get started, um, the best place to start, if you just want to do it for yourself, pull up your favorite AI JPT Gemini cloud code and start asking questions how to do things. If you have time, this is the cheapest way uh to get started. If you want to accelerate your journey and you want some structured information to start building and kind of shortcut your way from idea to build to actually doing it, then you should ask for some help. Um, I amongst many others uh can help you. If you want to check out how I help uh folks building their own apps, just go on Maven and you can find my uh AI builder course there. So check out his Maven course and I think he's a great follow on LinkedIn as well. Gabbor, thanks for being so generous with your time. I know preparing this episode itself probably took 10 plus hours than doing it. Really appreciate you.

如果大家想开始动手——最好的起点是,如果你只是想为自己做点东西,那就打开你最爱的 AI,ChatGPT、Gemini、Claude Code,开始问怎么做各种事情。如果你有时间,这是最省钱的入门方式。如果你想加速这个过程,想要一些结构化的信息来开始构建,把从想法到动手做出来这条路走得快一些,那你就该找人帮忙。我,以及其他很多人,都能帮到你。如果你想看看我是怎么帮大家做自己的 app 的,去 Maven 上就能找到我的 AI builder 课程。——那就去看看他的 Maven 课程吧,我也觉得他在 LinkedIn 上很值得关注。Gabor,谢谢你这么慷慨地付出时间。我知道光是准备这期节目,可能就比录制本身多花了十几个小时。真的很感谢你。


[2:14:30] Gabor

Thank you so much.

太感谢你了。


[2:14:31] Aakash

Bye everyone. I hope you enjoyed that episode. If you could take a moment to double check that you have followed on Apple and Spotify podcasts, subscribed on YouTube, left a rating or review on Apple or Spotify and commented on YouTube, all these things will help the algorithm distribute the show to more and more people. As we distribute the show to more people, we can grow the show, improve the quality of the content and the production to get you better insights to stay ahead in your career. Finally, do check out my bundle at bundle.ashg.com akashg.com to get access to nine AI products for an entire year for free. This includes Dovetail, Mobin, Linear, Reforge, Build, Descript, and many other amazing tools that will help you as an AI product manager or builder succeed. I'll see you in the next episode.

再见各位。希望你们喜欢这期节目。如果你能花点时间,确认一下你已经在 Apple 和 Spotify 播客上关注了我们、在 YouTube 上订阅了,在 Apple 或 Spotify 上留了评分或评论、在 YouTube 上留了言,这些都会帮助算法把节目分发给越来越多的人。随着节目触达更多人,我们就能把节目做大,提升内容和制作的质量,给你带来更好的洞见,让你在职业生涯里保持领先。最后,一定去看看我在 bundle.aakashg.com 上的礼包,能让你免费获得九款 AI 产品整整一年的使用权,包括 Dovetail、Maze、Linear、Reforge Build、Descript,以及许多其他能帮你作为 AI 产品经理或构建者取得成功的好工具。我们下期节目见。