ChatGPT Work + Codex Tutorial: My Complete System at OpenAI | Jason Liu
频道: Peter Yang
视频: https://www.youtube.com/watch?v=ydTeb_I0b94
原文语言: en
统计: 共 144 轮 · Jason 81 · Peter 59
[0:00]
The only job left is to like understand what you don't like about something and put it into words and like tell the AI. So much of my work now [music] can just be done through the Codex app. Whether that's the browser, whether that's like drafting messages, sending messages, turn this thread into a heartbeat. I want you to check my emails, my Slack, my linear every as I've used this over time. It's been able [music] to do things like pre-draft Slack responses or pre-draft emails. The work shouldn't have to stop because you close your laptop. Once that's the case, I'm even more excited for what's possible. Hey everyone, my guest today is Jason from the Codex team at OpenAI and really excited to get Jason to show us how he uses the new Chat GPD work and Codex app from managing threads to setting up scales to schedule tasks and long running loops and Jason is one of the best codeex maxers that I know. So, welcome sir.
现在唯一还留给人的活儿,就是搞清楚自己到底不喜欢一个东西的哪一点,把它说成话,告诉 AI。我现在绝大部分工作,都能在 Codex app 里完成——不管是开浏览器,还是起草消息、发消息。「把这条线程变成一个 heartbeat(定时心跳任务),我要你去查我的邮件、我的 Slack、我的 Linear……」用久了之后,它已经能做到预先起草 Slack 回复、预先起草邮件这种事了。工作不该因为你合上笔记本就被迫停下。一旦真做到这一点,我对接下来的可能性就更兴奋了。大家好,今天的嘉宾是 OpenAI Codex 团队的 Jason。特别期待他给我们演示,他是怎么用全新的 ChatGPT Work 和 Codex app 的——从管理线程、配置 skills,到设置定时任务(scheduled tasks)和长时运行的循环。Jason 是我认识的最会「压榨」Codex 的人之一。欢迎你,兄弟。
[0:48] Jason
Thank you so much for having me. Excited to be here.
谢谢你邀请我,很高兴能来。
[0:51] Peter
Yeah. So, uh why don't we start with the basics? Can you give us a quick tour of the new chatbt app uh and maybe talk about when I should use chatbtd work versus kodex?
好。那我们先从最基础的说起吧?能不能带我们快速逛一遍新的 ChatGPT app,顺便讲讲我什么时候该用 ChatGPT Work、什么时候该用 Codex?
[1:01] Jason
Yeah, I mean for the most part chatb work is sort of a different view of the codeex experience, right? So it turns out that if you want to build a very good work productivity tool, a really good coding agent is a place to start. And so codeex will be able to show you things like your git history, your pull requests, code changes, whereas work kind of just hides that behind the scenes. you know, if I'm making slides potentially, I don't really really need to see that I've written 20 lines of Python to do something, right? And so work as a way of sort of just redressing those uh that UX experience.
可以。大体上,ChatGPT Work 其实就是 Codex 那套体验换了个视图。事实证明,你要做一个特别好用的办公生产力工具,从一个特别好的 coding agent(编程智能体)起步是个不错的切入点。所以 Codex 会把 git 历史、pull request、代码改动这些都摊开给你看,而 Work 只是把这些藏到幕后。比如我在做 slides(幻灯片),其实并不需要看到它为此写了 20 行 Python,对吧?所以 Work 无非是把这套 UX 重新包装了一下。
[1:34] Peter
So, it's primarily UX and maybe a default prompt kind of change.
所以主要是 UX 的差别,可能再加上默认 prompt 上的一些调整?
[1:37] Jason
Exactly. It's I would say it's mostly the UX. I actually do a lot of my work in work now because I don't have to review I don't really review most of the code I write.
没错。我会说主要还是 UX。我现在其实很多活儿都在 Work 里干,因为我不用 review——我写出来的大部分代码,我其实都不怎么 review。
[1:45] Peter
Yeah. Yeah. I think a lot of us don't review code anymore for better for worse. Yeah. Um great. Okay. and and then okay can you share your screen and uh I have another question for you which is you know there's GPT 5.6 so terra and luna and each of them have different effort levels so can you give us some advice on um which model and effort level to use you know or what do you default to
对对。我觉得现在不少人都不看代码了,好也罢坏也罢。嗯,很好。那你能不能分享一下屏幕?另外我还有个问题:现在有 GPT-5.6,有 Sol、Terra、Luna 这几个模型,每个还分不同的 effort(思考强度)档位。能不能给点建议,该选哪个模型、哪个档位?或者你自己默认用什么?
[2:07] Jason
for the most part I I mostly just use sole medium right a lot of the work that I do these days has been just organizing my life at work reading slack you know setting my calendar scheduling all these meetings these are all things that don't need the highest intelligence right so Most of my work generally is in medium. And then when it comes to actually building out potentially prototype applications, so for example, I'm trying to learn the drums. I I've been working on a small little app that just teaches me how to play the drums. Uh there I'll set things on extra high or ultra. I'll build out a pretty complicated goal and then I'll just have Codex work for a couple hours to build that out.
大多数时候我就用 Sol medium。我这阵子干的活儿,很多就是打理我在公司的日常——读 Slack、排日历、安排各种会议,这些都不需要顶级智力,对吧?所以我大部分工作都在 medium 档。真到要做原型应用的时候,比如我在学打鼓,一直在弄一个教我打鼓的小 app,那种我就会开到 extra high 或者 ultra,把一个挺复杂的目标写清楚,然后让 Codex 自己跑上几个小时,把它做出来。
[2:41]
Oh, that's interesting. Okay. I'm sure we'll talk about that later. Maybe you can share your Codex app and let's talk about maybe first how you kind of organize all your threads and projects. So basically in the codex app you basically have work in codex. The only real difference here is por requests for example right. So maybe we can just go back to work. A lot of my work on the developer experience team is operationally very heavy. And so half of the work that I do is mostly just managing what's going on externally. And so you'll see here I have a bunch of different automations that are doing things just reading Reddit, reading Twitter, reading LinkedIn to figure out, you know, where the feedback is coming from, what are some issues people face. Then I also have chief of staff threads that tell me what I need to focus on on a daily basis or a weekly basis. And you can see that these run at a different uh automation loop. And then I have things for how I'm planning dev day. Uh I'm working on a you know mission video. How do we think about the agents API? These are some of my drumming uh drumming projects, my personal projects. I'm working on some slides. But you'll see that almost everything is kind of just a pinned thread, right? I don't really have hundreds of threads working in the background. Every pin thread is a workspace and it with compaction um all that's just kind of managed for me. I see. So everything is kind of a long running paint thread. Uh because because really good compaction, it doesn't lose previous context. Right.
有意思。好,这个我们待会儿肯定还会聊。要不你先分享一下 Codex app,我们先聊聊你是怎么组织所有线程和项目的。——基本上在 Codex app 里,Work 和 Codex 都在一处,真正的区别就是 pull request 这类东西。那我们还是切回 Work。我在 DevEx(开发者体验)团队的工作,运营性的事情特别重,差不多一半时间都在管外部发生的事。所以你能看到这里我挂了一堆自动化任务,专门去读 Reddit、读 Twitter、读 LinkedIn,摸清反馈都从哪儿来、大家踩了哪些坑。另外我还有几条 chief of staff(幕僚长)线程,告诉我每天、每周该聚焦什么,你能看到它们跑在不同的自动化循环上。然后还有我怎么筹备 dev day 的、我在做的一个 mission 视频、我们怎么想 agents API 这件事、这几个是我的打鼓项目、我的个人项目、我在做的一些 slides。但你会发现,几乎所有东西都只是一条 pinned(置顶)线程。我后台并没有几百条线程在跑。每条置顶线程就是一个工作区,加上 compaction(上下文压缩),这些都自动帮我管好了。——明白。所以基本上就是一条条长期运行的置顶线程。因为压缩做得够好,之前的上下文不会丢。
[4:04] Jason
Yeah. And and everything else I just write down, right? So for example, if I think think something is important, I'll just tell the model to save that in the notes directory. um if there's extra work that needs to be done, instead of telling the main thread to do this task, I'll tell it to spin up a sub agent. And you know, this is something that can be done automatically with ultra mode, but I tend to be a little bit more cautious on when I spin up sub agents.
对。其他东西我一律写下来。比如我觉得某件事重要,就直接让模型把它存到 notes 目录里。如果有额外的活要干,我不会让主线程去做,而是让它起一个 sub agent(子智能体)。这件事在 ultra 模式下其实可以自动完成,但我在什么时候起子智能体上会更谨慎一点。
[4:27]
Okay. And I noticed that uh just real quick that you have a project called vault. Do you have multiple projects or you keep to like one big project for everything? Yeah. So, because I have so much of my context written down in an Obsidian vault. Vault is basically the only project. The other one is animate codeex. That's kind of a side project I'm working on where I can just, you know, put codecs in reotion and just move some stuff around. But, okay, everything's in the vault. I have other code bases like a monor repo or I have other code bases, different demo projects, and everything starts from the vault. And that way, if it's at GitHub, when I move to the cloud or anything else, I can just pull that repo and start from there. I see. Okay. So, and why do you use Obsidian instead of just have a bunch of markdown files or, you know, just better or organize things?
好。我顺便注意到你有个叫 vault 的项目。你是同时开很多个项目,还是所有事都塞在一个大项目里?——因为我大量的上下文都写在一个 Obsidian vault 里,所以 vault 基本上就是唯一的项目。另一个叫 animate codex,是我业余在搞的小项目,把 Codex 塞进 Remotion 里,做点动画之类的。但基本上一切都在 vault 里。我还有别的代码库,比如一个 monorepo,还有别的 demo 项目,但一切都从 vault 出发。这样只要东西在 GitHub 上,我换到云端或者别的地方,直接把 repo 拉下来就能接着干。——明白。那你为什么用 Obsidian,而不是就一堆 markdown 文件?是更好用,还是更方便整理?
[5:12] Jason
Yeah, sometimes it's just nicer to open up Obsidian and just see, you know, the images rendered to be able to go through all these cross links, but generally Obsidian is just the structure that I use. Um, it's very rare that I actually open things in Obsidian. It's mostly just in context for my for my agent, but uh from time to time it's it's definitely beneficial to uh set that up. And just to confirm, this is just a bunch of markdown files. It's not a database or anything or
有时候打开 Obsidian 就是更舒服一点——能看到图片渲染出来,能顺着那些双向链接跳来跳去。不过总体上,Obsidian 就是我用的那套结构。其实我很少真的去打开它,它主要是给我的 agent 当上下文用,但偶尔搭一套确实有好处。——跟你确认一下,这就是一堆 markdown 文件吧?不是数据库之类的?
[5:36] Jason
No. Yeah, it's it's basically all just markdown files. Um, I have a directory for different projects. I have a directory for people. I have a directory for different notes. I have my daily notes and my preferences. And these are all just things that I've saved down.
不是,基本上全是 markdown 文件。我有一个目录放不同项目,一个目录放人,一个目录放各种笔记,还有我的每日笔记和我的偏好设置。这些都是我一点点存下来的东西。
[5:50] Peter
Okay. Got it. All right, dude. Well, let's talk about the chief of staff. So, yeah.
明白了。行,兄弟,那我们来聊聊 chief of staff 这条线。
[5:54] Peter
So, basically the chief of staff, you have a daily one and a weekly one, and they work based on scheduled tasks, right?
基本上 chief of staff 你有一条日更的、一条周更的,它们都是靠 scheduled tasks(定时任务)跑起来的,对吧?
[6:00] Peter
Yeah. Um, so how does that works every day? Let's take the daily one. It schedules what? What does it do?
嗯。那它每天具体是怎么工作的?就拿日更那条说,它到点会干什么?
[6:05] Jason
Yeah. So I have a automation that runs at 9:00 a.m. and at I think 1 p.m. and 5:00 p.m. And basically all it does is it has to read all of my Slack. It reads all of my Twitter DMs using computer use. And then it will read all of my emails that I have not responded to and my linear board. And it will just give me a glimpse of what's happening. right on linear if it finds that something is uh
我设了一个自动化任务,每天早上 9 点、我记得还有下午 1 点和 5 点各跑一次。它要做的就是把我的 Slack 全读一遍,用 computer use(直接操作电脑的能力)读我所有的 Twitter 私信,然后读所有我还没回的邮件,加上我的 Linear 看板,最后给我一个「当下都在发生什么」的全景。在 Linear 上,如果它发现有什么
[6:30] Jason
needs to get cleaned up, maybe a status needs to be updated,
需要清理的,比如某个状态该更新了,
[6:34] Jason
codif will just do that for me.
Codex 就直接帮我改掉。
[6:35] Jason
And so I just always get a clean view as to what what needs to happen. So for example, I'm going to Brazil really soon and it's been able to just show me that I need to go figure that out, right? It's also telling me I need to go pick up a package. Um
所以我永远能拿到一个干净的视图,知道接下来该干什么。比如我马上要去巴西,它就提醒我这事还得去落实。它还告诉我要去取个快递。
[6:47] Peter
okay,
好。
[6:48] Jason
one other thing I do for example that the Kashiva staff is really really helpful on that I want to share is just to checking the flights now. So usually because I have a lot of travel, if Codex finds that there is a booking ticket and a reference number, it will check in the flight for me and you know text me the boarding pass to my personal phone. This is my work laptop. These are just small things that I just have set up over time. This is not something that just comes for free in any way. But as you start realizing how you can use codecs, uh now if I'm in New York, I'll just get a text message when I realize that my CEX has just sent me the boarding pass. But see, you know, it's telling me about the artifact. I had some notes prepared for our meeting today. Right? There was a linear ticket that was made. This is the meeting I have afterwards with the marketing team. You know, this is just someone from the company giving some feedback,
还有一件我特别想分享的、chief of staff 帮了大忙的事,就是自动值机。因为我出差特别多,只要 Codex 发现有订票信息和订单编号,它就会帮我值机,然后把登机牌用短信发到我的私人手机上——这台是我的工作电脑。这些都是我一点点攒出来的小功能,绝不是开箱即得的。但当你慢慢摸清 Codex 能怎么用,现在我人在纽约,一条短信进来我才反应过来:哦,Codex 已经把登机牌发过来了。你看,它在跟我说那个 artifact 的事,我给今天这场会准备了些笔记,还建了一张 Linear ticket。这是我待会儿要跟市场团队开的会。这条是公司里某位同事给的反馈,
[7:34] Jason
right? Some projects, logistics,
对,还有一些项目、一些杂务安排,
[7:37] Jason
and then some other projects that I'm working on.
然后是我在做的另外几个项目。
[7:39]
And then what you'll see here is, you know, someone told me that there's a uh production thing that's happening in Toronto. I just take an appshot and just make sure they're in my calendar. And that's basically how I use these things. This episode is brought to you by Google AI Studio, the easiest and fastest way to build and share your idea with real users. For example, I use AI Studio to create three different landing pages for this bakery using images generated by Google's built-in nano banana model. One highlights fresh bread, another highlights awesome cakes, and the last highlights the bakery story. I can publish the website easily and get a custom URL. In this case, corgi confections.ai.studio to share all three variations with potential customers for feedback in one tap. When I was a product manager, Google AI Studio was my go-to tool for building prototypes like this. And it really is an easy and free way to share ideas with your team, customers, and everyone else. Check it out at astudio.google.com.
你再看这里,有人跟我说多伦多那边有个制作上的事,我直接截个图丢给它,让它确保这些都进我的日历。基本上我就是这么用的。本期节目由 Google AI Studio 赞助——把你的想法做出来、拿给真实用户看,它是最快也最省事的方式。比如我就用 AI Studio 给一家面包店做了三版落地页,图片全部用 Google 内置的 Nano Banana 模型生成:一版主打新鲜面包,一版主打招牌蛋糕,还有一版讲这家店的故事。我可以一键发布,还能拿到一个自定义网址,比如这次的 corgi-confections.ai.studio,一下子就能把三个版本都发给潜在客户收反馈。我以前当产品经理的时候,Google AI Studio 就是我做这类原型的首选工具。它确实是个又简单又免费的方式,能把想法快速分享给团队、客户和任何人。去 aistudio.google.com 试试。
[8:42] Peter
Now, back to our episode. Let's say I'm just a normal person trying to set this up myself. I I don't you know let's say I have uh email calendar and maybe Slack you know
回到我们的节目。假设我就是个普通人,想自己搭一套这个。我手上有邮箱、日历,可能还有 Slack,
[8:51] Jason
so what kind of prompt do I voice dictate to Codex to this thing going? Yeah, I mean in the beginning I would say uh turn this thread into a heartbeat. I want you to check my emails, my Slack, my linear every, you know, whenever it makes sense, 9:00 a.m., 1 p.m., 5:00 p.m. and just tell me what I need to uh prioritize, right? Just by doing that, you'll get a pretty good overview of what you need to do. And then over time, as you tell the model its different preferences, so for example, when it first did this, it didn't include links. I would just say, "Great. Now, I want you to make sure that everything has a link. And then over time, as things got more complicated, I said, you know what? I want you to start using linear, right? Um, now as I've used this over time, it's been able to do things pre-draft slack responses or pre-draft emails. And so, instead of just telling me that an email came in, it'll give me a link to that opens the uh the email
那我该用语音跟 Codex 说一句什么样的 prompt,才能把这套跑起来?——一开始我会说:「把这条线程变成一个 heartbeat(定时心跳任务),我要你去查我的邮件、我的 Slack、我的 Linear,按合适的节奏来,早上 9 点、下午 1 点、下午 5 点,然后告诉我该优先处理什么。」光凭这一句,你就能拿到一份相当不错的待办全景。然后随着时间推移,你把自己的各种偏好一条条告诉模型——比如它第一次跑完没带链接,我就说:「很好,现在我要你保证每一条都带链接。」再往后事情复杂了,我又说:「这样吧,我要你开始用 Linear。」用到现在,它已经能预先起草 Slack 回复、预先起草邮件了。所以它不只是告诉我来了封邮件,而是直接给我一个链接,点开就是那封已经写好的邮件
[9:44] Jason
draft
草稿,
[9:45] Jason
pre-written. And then I can just clean some things up and then respond. And those things have been super helpful.
内容都预先写好了。我只要稍微改改就能回出去。这些真的太有用了。
[9:50] Peter
Okay. So, you never actually get to just automatically send a Slack message for you. Do you do that?
所以你从来不让它直接替你把 Slack 消息发出去?还是说你也这么干?
[9:54] Jason
I do that sometimes as well, but it really depends on the context, right? Um, for example, if I'm working on some code, I might just say, "Great, make a pull request and then check in on this pull request and once once all the tests are green, I want you to DM Andrew on Slack with the link to the pull request and the preview URL."
有时候也会,但真的看场景。比如我在写某段代码,我可能会说:「好,提一个 pull request,然后盯着这个 PR,等所有测试都变绿了,就在 Slack 上私信 Andrew,把 PR 链接和预览 URL 发给他。」
[10:12] Jason
Right? Okay. Yeah, it can it can do that quite well. But the cheapest app thread because it reads 40 emails and you know 100 slack messages. I want to be a bit little bit more surgical on how things are handled.
对。这种它干得相当好。但 chief of staff 那条线程不一样——它一次要读 40 封邮件、上百条 Slack 消息,这种场景我希望处理得更精准、更克制一点。
[10:22] Peter
And you can tell to also learn your voice over time, right? Read my sent emails or read my messages and kind of draft stuff in my voice.
你还可以让它慢慢学会你的语气,对吧?读你发出去的邮件、读你发过的消息,然后用你的口吻来起草。
[10:29] Jason
Yeah. So one of the my favorite skills is basically I have a write me skill.
对。我最喜欢的 skill 之一,就是我做的一个「write me」(照我的口吻写)skill。
[10:34] Jason
And so if you open up uh codeex and say, "Hey, I want you to use a slack connector and read the past week of Slack messages I've written." and make a skill to figure out how to talk me. It does a pretty good job. And then I might say, but I also want you to recognize that I want you to talk differently when you talk to external users versus people on my team. And I want you to talk differently whether you're messaging an executive or a co-orker
你打开 Codex 说一句:「用 Slack connector 把我过去一周发的 Slack 消息读一遍,然后做一个 skill,总结出我说话的方式。」它做得相当不错。然后我可能会再补一句:我还要你分清楚,对外部用户说话和对团队内部说话得用不同语气;对高管说话和对同事说话也要不一样。
[11:00] Jason
and you start investing in these skills over time. So the first version just talks to you and then as you go over time, you learn these things, right? You're always editing the skills.
然后你就开始在这些 skill 上持续投入。第一版只是个能跟你对话的东西,随着时间推移你不断学到新东西,就一直去改这些 skill。
[11:08] Jason
I do the same thing with email.
邮件我也是这么干的。
[11:10] Peter
Okay. Are you able to share this rightly skill?
好。这个「模仿我写作」的 skill 能分享出来吗?
[11:12] Jason
So I have my my personal you know repo of all the skills that I use for my personal website sorry my personal codec
我有一个自己的 repo(代码仓库),把我个人用的所有 skill 都放在里面——说错了,是我个人 Codex 用的那些 skill。
[11:20] Jason
and so yeah I have an email me skill. All right. I have a tweet me skill. I have a skill that turns my voice transcripts into blog posts. I have skills that turn v videos of me into video essays. A bunch of different stuff here that has been very helpful for me. Uh
对,里面有一个「像我一样写邮件」的 skill,还有一个「像我一样发推」的 skill;有把我的语音转写变成博客文章的 skill,还有把我出镜的视频变成视频随笔(video essay)的 skill。反正一堆五花八门的东西,对我帮助特别大。呃——
[11:35] Peter
why don't we can you open one of them like tweet me or something? Okay.
要不……你打开其中一个给我们看看?比如那个「发推」的。好。
[11:42] Jason
Yeah. So, it's there's a couple different voices that you have, right? You sometimes you're teaching different things in codec, sometimes you're sharing demos, sometimes you're just replying to people who are who are giving feedback and collecting feedback, right? It's being able to find all these things and figure out the kind of language I use. And I just small examples of what this might look like.
对。因为你其实有好几种不同的说话腔调嘛:有时候是在 Codex 里教别人东西,有时候是在分享 demo,有时候只是回复那些给你反馈的人、去收集反馈。这个 skill 干的事就是把这些场景都找出来,搞清楚我在每种场景下用的是什么样的语言,再配上几个小例子,说明大概长什么样。
[12:01] Peter
And how much of this does you actually type out versus just get codex to write it out? Most of this is written by codeex because all I really need is sort of the the ability to do these kinds of references.
那这里面有多少是你自己敲出来的,多少是直接让 Codex 写的?——大部分都是 Codex 写的。我真正要做的,其实只是把这些参照样本指给它看。
[12:11] Peter
Yeah, I have a lot of these skills too and uh I think you'll agree with me because clothes can do all this stuff. I feel it's become the hub of everything. I I kind of read my emails and send emails through codeex and write social media posts and post them through codeex too. So it's kind of like this hub that that I actually used to do everything else.
对,这类 skill 我也攒了不少。我觉得你肯定有同感——正因为 Codex 什么都能干,它现在几乎成了我一切事情的中枢。我基本上是在 Codex 里读邮件、发邮件,社媒的帖子也是在 Codex 里写好再发出去。它就像一个总枢纽,我干别的所有事都从这儿出发。
[12:27] Jason
Yeah, totally. I I feel so much of my work now can just be done through the Codex app. Whether that's the browser, right, whether that's drafting messages, sending messages, and then now with computer use, even the small things, booking a flight, uh I just get to do that with with Codeex and it's been pretty funny to sort of watch these things get better over time.
完全同意。我现在感觉大部分工作在 Codex 应用里就能搞定:不管是用浏览器,还是起草消息、发消息;现在有了 computer use(让模型直接操作电脑),连订机票这种小事我都交给 Codex。看着这些能力一点点变强,还挺有意思的。
[12:44] Peter
Uh do you worry about that? Uh you know, as the skills proliferate and all this stuff proliferates that, you know, there's just a lot of bloat inside uh everything that you use, try to clean up periodically or no?
那你会担心吗?就是随着 skill 越堆越多、各种东西越积越多,你用的这一整套会不会变得特别臃肿?你会定期清理吗?
[12:57] Jason
Yeah, I I clean them up tons. So, one of the cool things with uh Codex is all the sessions are saved in a database somewhere. I don't even know where it is at this point. But if you just tell Codex and say, "Hey, I want you to look at the past 400 sessions. Which skills were never used? Can you clean things up? Can interview me and go through this process?" It generally does a pretty good job. Right? So, recently it had said, "Hey, you don't really use these like data analysis skills. You can just delete them and reinstall them when you need to." Um, you use a bunch of different Slack skills. Should we consolidate them? or even the fact that hey you have a right me skill a slack mike me skill and an email me skill should we have merged them into one thing and then it just starts cleaning things over time right it's no different than hiring someone day one you have to tell them a lot of information and you give them feedback and they change over time and that's how I think of using codeex it's not the fact that I'm going to have a skill that just runs forever perfectly right these are always things that are going to be uh improved over time
会,我清理得可勤了。Codex 有个很酷的点:所有 session(会话记录)都存在某个数据库里——我到现在都不知道具体存在哪儿。但你只要跟 Codex 说:「你去看看我过去 400 次 session,哪些 skill 从来没被用过?帮我清理一下,可以来采访我、一步步走一遍这个流程。」它一般干得挺不错。比如最近它就说:「你其实不怎么用这些数据分析类的 skill,可以先删掉,需要的时候再装回来。」还有「你有一堆 Slack 相关的 skill,要不要合并一下?」甚至会说「你有一个『像我一样写作』的 skill、一个『像我一样发 Slack』的 skill、还有一个『像我一样写邮件』的 skill,要不要合成一个?」它就这样一点点帮你把东西理干净。这跟招人进来第一天没什么区别——你得给他讲一大堆背景,不断给他反馈,他会随着时间慢慢变化。我就是这么看待用 Codex 这件事的:我不指望哪个 skill 一次写好就能永远完美地跑下去,这些东西注定是要慢慢打磨的。
[13:51] Peter
okay so you have maybe you have a schedule task or something that just runs this cleanup job and then it pings on a regular basis.
明白。所以你可能会挂一个定时任务,专门跑这个清理的活儿,然后定期提醒你?
[13:57] Jason
Yeah, I mean I I used to have that I have that less and less these days. I really just sort of decide at some point uh you know maybe I should do some cleanup, you know, sometimes I clean up the work trees uh and stuff like that.
对,我以前是这么干的,但现在越来越少了。我基本上就是自己某个时候突然觉得,嗯,是不是该清理一下了;有时候顺手清理一下 worktree 之类的东西。
[14:08] Peter
Um and of course the skills need to improve over time, right? Because for example, all the writing skills that I use, they never get anything perfect in one shot. I have to go back and forth with it a lot. So um do you just say, "Hey, uh hey, look at our past conversation and try to update the skill or do you have some sort of trick to
嗯,而且 skill 本身也得随着时间打磨对吧?比如我用的所有写作类 skill,没有哪个是一次就写得完美的,我得跟它来回磨很多轮。那你是直接说「你看看我们刚才那段对话,把 skill 更新一下」,还是说你有什么别的窍门?
[14:23] Jason
that?" That's basically it. Yeah, it's kind of incredible. I I feel one of the the disappointing things I I always uh tell people is like so much of it is just you just tell Codex, you know, why are you giving me this feedback? Just tell Codex.
基本上就是这么干,对。这事儿挺神奇的。我老跟人说一件有点扫兴的实话:很多时候答案就是「你直接告诉 Codex 就行了」——你干嘛把这个反馈给我?跟 Codex 说去啊。
[14:33] Jason
Um
嗯——
[14:35] Jason
yeah, so oftentimes when I'm doing writing, I I'll I'll just say, hey, you know, it's been a couple weeks since this skill has been updated. Go read the last 200 Slack messages. Well, you what has changed? Go read the last 200 tweets. Um go read the last like couple blog posts I wrote. Something else I do is every once in a while I'll just say, "Hey, read all the sessions that invoke skills and what was the feedback I gave to those skills." Four months ago, I built a skill called self-improve, which I have not updated on my personal repo yet, but it's probably changed a lot.
对,所以我写东西的时候经常会直接说:「这个 skill 已经好几周没更新了,你去把我最近 200 条 Slack 消息读一遍,看看有什么变化;把我最近 200 条推读一遍;再把我最近写的那几篇博客读一遍。」我还会时不时来一句:「把所有调用过 skill 的 session 都读一遍,看看我当时给这些 skill 的反馈是什么。」四个月前我做过一个叫 self-improve(自我改进)的 skill,我个人 repo 里那一版还没更新,现在估计已经变了很多了。
[15:03] Jason
But all that does is it says, "Okay, look at these skills that are the most uh called, read the sessions of those skills, and tell me if there's been any consistent feedback about them." Um a recent example of this was actually the Slack honey skill where um basically what it realized was every time I do something from Slack, I ask Codex to then reply back into Slack. Right? So for example, someone might say, "Jason, can you make sure that this person is in is included in the program and then code I'll tell Codex this question." Codex will say, "Yes, they're in the program." And I keep telling, "Okay, can can you can you post back into Slack? Let them know that it's been done." And over time, CUDEX will now just decide, oh, you asked me to handle something on behalf of a of a request internally. Once I'm done, I'll reply back. These are some small details that just reduce the friction. And at some point, you just get more time back.
但它干的事就是:看看哪些 skill 被调用得最多,把这些 skill 相关的 session 读一遍,告诉我有没有反复出现的反馈。最近的一个例子就是那个「像我一样发 Slack」的 skill。它发现的规律是:每次我从 Slack 里拿一件事出来处理,处理完都还得让 Codex 回到 Slack 里回复一句。比如有人问:「Jason,能帮我确认一下这个人有没有被拉进项目?」我就把这个问题丢给 Codex,Codex 说「在的,他在项目里」,然后我又得说「行,那你能不能回到 Slack 里回一句,告诉他已经办好了?」时间长了,Codex 现在就会自己判断:哦,你让我代你处理一个内部请求,那我办完之后直接回过去就是了。就是这种小细节,一点点把摩擦降下来,到最后你就真的省出时间了。
[15:53] Peter
That's really smart. Okay. So, I've done the self-improvement thing by just kind of manually asking it each thread to improve. But I haven't done something where you've done where you build a scale to look at all the past threads. So, it actually saves all the past threads in the database some somewhere.
这招真聪明。好。我做「自我改进」这件事的时候,都是在每个线程里手动让它改进;但你这种做法——专门写一个 skill 去回看所有历史线程——我还没试过。所以它真的会把所有历史线程都存在某个数据库里?
[16:05] Jason
Yeah, they're all just in session JSON. Yeah.
对,都在 session 的 JSON 文件里,对。
[16:07] Peter
Okay. Then you kind of review the feedback and you kind of uh go do one or three and skip two or something. You kind of
好。然后你会去过一遍这些反馈,比如「第一条和第三条改,第二条跳过」,你自己会
[16:12] Jason
Yeah.
对。
[16:13] Peter
kind of review it, right? Yeah.
自己审一遍,对吧?嗯。
[16:14] Jason
Yeah. Oh, I do agree. I I do ask you to like I I feel this pain. I do ask you to f close the loop every every single day. Please just do this automatically. And you know, if I told it to close the loop day one, I think I would be too nervous, right? But now, because I know it's something I asked for and it does it correctly, I feel much more confident about uh updating these skills to just, you know, slack on my behalf. Got it. Okay. So, it sounds we both run our kind of operating system with Codex using a bunch of skills. Um, uh, can you talk about what the difference between a skill and a plug-in is? Should we be building plugins too or?
对。哦,这点我同意,我也有这种痛点。我确实每天都在让它「把闭环收掉」——你就不能自动做完吗。不过要是第一天我就让它自己收尾,我肯定心里发虚;但现在,因为我知道这是我主动要求的,而且它做得没问题,我就更有底气去更新这些 skill,让它直接代我在 Slack 上回复。 明白了。好,那听下来,我们俩都是拿 Codex 当操作系统在跑,上面挂一堆 skill。那你能讲讲 skill 和 plugin(插件)到底有什么区别吗?我们是不是也该做 plugin?
[16:48] Jason
Yeah, I think generally the a skill is sort of one component of a plug-in, right? So, a plug-in is a couple of MCP servers potentially. It's a couple of skills and it's a couple of, you know, different resources and scripts, right? So for example, I right now have the uh write skill, the slackly skill, the email skill. Generally, I think the right thing to do is if I wanted to share this with my team, I would build a single plugin called better writing. It contains all these skills and maybe some other MCP servers and that's the thing I can share with the rest of the team. So I would say a skill is a one piece of a plug-in.
嗯,我觉得大体上,skill 只是 plugin 的一个组成部分。一个 plugin 里可能包含几个 MCP server、几个 skill,还有一些资源文件和脚本。比如我现在有「写作」skill、「发 Slack」skill、「写邮件」skill——如果我想把这套东西分享给团队,正确的做法应该是打包成一个叫「better writing」的 plugin,把这些 skill 都装进去,可能再配几个 MCP server,然后拿这个去分享给团队。所以我会说,skill 是 plugin 的一块拼图。
[17:25] Peter
Okay. So plugin is like maybe a collection of skills with a bunch of scripts and other files they can share more easily. Yeah, I would have a content creation skill that might have all these different sort of content creation plugin that has all these skills combined.
明白。所以 plugin 大概就是一组 skill,外加一堆脚本和别的文件,打包在一起更方便分享。——对,我会做一个内容创作的 plugin,把这些相关的 skill 全都合在里面。
[17:37] Peter
Uh, okay. So, um, and I should know not this, but let's say I actually do have a content creation skill. So, let's say I want to make it into a plug-in and publish it to to everybody who uses codeex, I can do do that.
呃,好。这个我本来应该知道的——假设我确实有一个内容创作的 skill,我想把它做成 plugin,发布给所有用 Codex 的人,这是能做到的吧?
[17:48] Jason
Yeah. Yeah. So, uh, since last week, we just had the ability to have folks be able to submit their own plugins into the, uh, codeex plug-in directory. And so anyone can now just submit these things. Uh if it's just skills, it gets reviewed pretty quickly. If it's MCPS, we'll do a little bit more of a process to audit the security, but generally you can just get that installed in uh anytime you want.
对,可以。从上周开始,我们刚上线了让大家自己往 Codex plugin 目录里提交 plugin 的功能。所以现在谁都可以提交。如果里面只有 skill,审核很快就过;如果带了 MCP,我们会多走一道安全审计的流程。但总体上,你随时都能把它发出去让人安装。
[18:10] Peter
Nice, dude. Okay. All right, dude. Well, let's talk about browser and computer use, which in my opinion is probably my favorite feature that Codex has. Uh it's is pretty incredible. Let me ask you this. What What is the most incredible browser and computer use thing that you've seen? I think I think the example that I always talk about was this this time when I was going on a bike ride, right? I'm going on a bike ride and I check my phone and at work someone says, "Hey, Jason, can you reexport this video for me?" Something about the subtitles is not working correctly. Uh, and I need to GitHub access to review the code myself. Can you help? So, I connect remote control to my phone to my MacBook and I text it like, "Please use computer use to figure out where this video is. what tool was used to export this video and just edit the video and post it back on Slack. And then 20 minutes later, there's another video that has been shared on the Slack thread that has all these fixes changed.
厉害啊。好,那我们聊聊 browser(浏览器)和 computer use 吧——在我看来这大概是 Codex 我最喜欢的功能,真的挺不可思议的。我问你个问题:你见过用 browser 和 computer use 干成的最不可思议的事情是什么? 我最常拿来讲的例子,是有一次我出去骑车。我骑着车,掏出手机一看,公司里有人说:「Jason,你能帮我把这个视频重新导出一遍吗?字幕好像有点问题,我自己又没有 GitHub 权限去看代码,你能帮个忙吗?」于是我用手机远程连到我的 MacBook,发了条消息说:「用 computer use 找到这个视频在哪儿、当初是用什么工具导出的,把视频改一下,然后发回 Slack。」二十分钟后,那个 Slack 线程里就多了一版把问题全改好了的新视频。
[19:06] Jason
And then I basically said, great, every 30 minutes, check the Slack thread, look for any feedback, and with any feedback, just export V2, V3, V4 of this video. [laughter]
然后我基本上就说:「太好了,接下来每 30 分钟去看一次这个 Slack 线程,有新反馈就照着导出 V2、V3、V4。」(笑)
[19:14] Peter
All right.
好家伙。
[19:15] Jason
And then when I when I got home, it was green lit and it was a launch video for uh migrate to Codeex. That was pretty awesome. And did [clears throat] the other person know that your codex was replying to him or her?
等我到家的时候,那个视频已经过审放行了——那是「迁移到 Codex」的发布视频。挺爽的。 (清嗓)那对方知道是你的 Codex 在回他吗?
[19:27] Jason
Uh I mean if I think if you look at the time I I don't think uh they would they would have been able to know, right? It was just the fact that every time I they gave some feedback 40 minutes later uh there would be another a new video, you know, with the wording changed or something made a little bit faster, a little bit slower.
呃,我觉得从时间上看,他们应该看不出来。就是每次他们给一条反馈,40 分钟以后就会出来一版新视频,措辞改了,或者节奏调快了一点、慢了一点。
[19:45] Peter
Got it. Uh do you have any tips for getting the most out of browser use? uh are just asking it more and more ridiculous things. Yeah. [laughter] Do you have any tips?
明白。那要把 browser use 用到极致,你有什么心得吗?还是说就不停地让它干越来越离谱的事?(笑)你有什么建议?
[19:55] Jason
I mean I think the biggest one is understanding that now browsers the browser inside Codex has the ability to do O and and bring in your cookies. So you can you can use it in a login state which means you just have access to way more information. The second thing is just understanding that you can also control multiple tabs. And so if you want to do things like research or comparisons and preparing your browser for some review, uh Hodex is really really good at that. A really simple example, I wanted to go shopping. So one thing I could have done is I I could have said, "Okay, I want you to do some research and give me a markdown file of the things I should buy." But instead, what I said was, "I want you to do this research. Once you're done, give me a recommendation, but I want you to open every product in its own tab." And I got to get my coffee. And when I came back, I had four tabs open. I read the review. I looked at all four and I just pressed check out on the one that I really agreed with.
我觉得最关键的一点,是要意识到现在 Codex 里的浏览器可以做 OAuth 登录、可以带上你的 cookie。也就是说你能在已登录的状态下用它,这意味着它能拿到的信息多得多。第二点是要知道它还能同时控制多个标签页。所以如果你想做调研、做对比,或者让它提前把浏览器布置好等你来审阅,Codex 在这方面特别特别强。举个很简单的例子:我想买点东西。常规做法是跟它说「你去做点调研,给我一个 markdown 文件,列出我该买什么」。但我换了个说法:「你去做这个调研,做完给我推荐,但我要你把每个商品都单独开一个标签页。」然后我就去接了杯咖啡,回来一看,四个标签页都开好了。我把评测读了一遍,四个都看过,在最认同的那个上直接点了结算。
[20:51] Peter
Right. Got it.
对,明白。
[20:52] Jason
Maybe in the future I'll feel confident in letting it check out for me. But just presenting the information as four tabs was very useful.
也许将来我会放心让它替我下单结账。但光是把信息整理成四个标签页呈现出来,就已经很有用了。
[21:00] Peter
Yeah, some people are using I think browser use trace stocks or something. I don't think I trust it enough to to do that kind of stuff.
是啊,我知道有人在用 browser use(让 AI 直接操作浏览器)去炒股之类的。我可没那么信得过它,不敢干这种事。
[21:06] Jason
Yeah, I mean I I know people who've been buying stuff with computer use for for quite a while. So uh maybe I'm not there yet, but maybe I will be there one day. And um so that's actually something that maybe I have some feedback on. So so do you primarily use the browser use now in the inapp browser incodex browser? So you have to sign into everything.
对,我认识一些人已经用 computer use(让 AI 直接操作电脑)买东西买了挺久了。可能我还没到那一步,但说不定哪天就到了。呃,所以这里我倒是有点想反馈的。你现在主要是用 Codex 里内置的那个浏览器来做 browser use 吗?那样的话所有网站你都得重新登录一遍。
[21:22] Jason
Yeah. So generally is I just didn't know that my AI has its own browser and then Chrome is the thing I use. Um that's how I usually think about it. And then computer use is basically on the application level. And so it can do things if I if it needs to control settings it'll use computer use. But if it's any website, I generally try to keep it within the internet browser.
对。大体上我就是这么理解的:我的 AI 有它自己的一个浏览器,而 Chrome 是我自己用的。我一般就这么划分。然后 computer use 基本是在应用/系统这一层——如果它需要去改系统设置,那就用 computer use。但只要是网页上的事,我一般都尽量让它在那个内置浏览器里搞定。
[21:42] Peter
Computer use, I've only used it to clean out my downloads folder. [laughter]
computer use 我就只拿来清理过我的下载文件夹。(笑)
[21:48] Peter
I don't know if you have any kind of f fancy things use cases for computer use. Just
不知道你有没有什么更花哨的 computer use 用法?
[21:53] Jason
nothing too much. I mean, most of what I care about is never having to fill out a form again, never having to do some automation and figure out some API. So for example, our open source program uh is a form that goes into Air Table and to get the data back out uh I have to download the CSV file. And so part of my automation just opens it, presses download, moves it into some other drive and then does this automation, right? And this point it just it just works. Um other than that is most of it just going to be testing apps.
也没多少。我最在意的无非是——以后再也不用手填表单,再也不用为了搞个自动化去研究某个 API。举个例子,我们的开源项目申请是一个表单,数据进到 Airtable 里,要把数据取出来我得手动下载 CSV 文件。所以我的自动化流程里有一段就是:打开页面、点下载、把文件挪到另一个盘里,然后跑后面的自动化。这套现在就是能跑通。除此之外,剩下大部分场景就是测试应用了。
[22:26] Peter
Testing apps. Okay, got it. Yeah. Yeah, that makes sense.
测试应用。行,明白了。嗯,这说得通。
[22:29] Peter
Yeah. Okay. That that that's actually a really good segue. Uh I'd love to now talk about how you built apps. We can talk about your drumming app or is that a website or is that an app?
好,这其实是个很好的过渡。接下来我特别想聊聊你是怎么做应用的。我们可以从你那个练鼓的应用聊起——那算网站还是 app?
[22:38] Jason
Uh same thing, right? So I think yeah uh basically a couple couple weeks ago I ordered a drum kit. It's it's on my way and I learned that I need to learn things like rudiments or or which is like you know how do you like do your sticking? Uh, I learned that the best way of learning is like doing call and response, which basically says, you know what, someone will play a drum beat and you copy them. So, I said, "Great, CX, make me an app that has a library of different rudiments and I want to be able to change the tempo." And then as I learn a new concept, I add it into the app. And now I'm able to upload any YouTube video of music, take the drums out, play drums along with it, put the drums back in, play with the drums, and I can just make a custom learning app. uh based on the my own progression and that has been really really fun.
呃,其实都一样嘛。事情是这样:几周前我订了一套架子鼓,还在路上。我了解到得先学一些基本功,比如 rudiments(打击乐的基础击打组合),也就是手上的击打顺序该怎么打。我还发现最好的学法是「一问一答」式练习——别人打一段鼓点,你照着复现。于是我就说:「好,Codex,给我做个 app,里面要有各种 rudiments 的曲库,而且我要能调速度。」然后每学一个新概念,我就往 app 里加一条。现在我能上传任意一个 YouTube 音乐视频,把鼓声抽掉自己跟着打,或者把鼓声加回来跟着一起打——等于按我自己的进度做了一个定制的学习 app,这个过程真的特别好玩。
[23:24] Peter
Yeah. So so dude can can you show us how you built this app maybe from scratch?
太好了。那老兄,你能不能给我们演示一下,从零开始怎么做出这个 app?
[23:28] Jason
I mean it's been like it's been like a week of work. So I I don't know scratch.
这东西我做了差不多一周了,「从零开始」我可演示不了。
[23:32] Peter
Okay. Okay.
好好好。
[23:33] Jason
Again one of the things I I want to really call out it's it's it's cool to have these demos where it's just yeah I ran a go for six hours but a lot of it is the fact that you can grow these things over time.
这点我特别想强调一下:那种「我让它朝一个目标跑了六小时」的演示当然很酷,但更关键的其实是,这些东西你可以随着时间一点点养大。
[23:43] Peter
Yeah. So what I really want to understand is because you talk about running a goal for six hours right but to do that you need to have a really good plan or a spec or something right initially. So, how did you come up with that?
嗯。那我最想搞明白的是——你说让它朝一个目标跑六个小时,可要做到这一点,你一开始必须有一份很好的计划或者 spec(需求说明),对吧?那你是怎么把这份东西弄出来的?
[23:52] Jason
Yeah. So, basically, I just had a long conversation with it, right? I basically recorded like, "Hey, you know what? I want to learn how to play the drums." Uh, a bunch a bunch of YouTube videos talked to me, telling me about things practicing rudiments and doing hand and feet coordination.
对。其实我就是跟它聊了很久。我基本上是口述录进去的:「嘿,我想学打鼓。」我看了一堆 YouTube 视频,它们都在讲要练 rudiments、要练手脚协调。
[24:06] Peter
Mhm.
嗯哼。
[24:07] Jason
And look at this. It's like, you know, 300 sub agents. Uh, I want to learn how to get all this coordination. What are the what are the core skills I need? And then with that I basically built out a plan MD file,
你看这个,起了差不多 300 个 sub agent(子代理)。我说我想把这套协调性练出来,那核心要练哪些能力?就这么聊着,我最后产出了一个 plan.md(计划文件)、
[24:18] Jason
a goal MD file and a worklog. And this is part of that skills library. It's just called ultra goal. And by doing that is able to work on different applications. So here this is an example of me being able to upload a song and and play that. Let me see if I can just tell it to serve the app.
一个 goal.md(目标文件),还有一份 worklog(工作日志)。这是我那个 skills 库的一部分,这个 skill 就叫 ultra goal。靠这套东西,它就能去推进各种应用了。喏,这就是个例子——我可以上传一首歌然后播放。我看看能不能直接让它把 app 跑起来。
[24:32] Peter
So what I want to understand is you wanted to learn the drums and you wanted to build an app, right? But it sounds like the first step was to get it to just talk to it and figure out what you're trying to build.
我想搞清楚的是:你既想学打鼓,又想做个 app,对吧?但听起来第一步其实是先跟它对话,把「你到底要做什么」这件事捋清楚。
[24:41] Peter
Yeah. And then you said you generated um some sort of a plan MD or go MD or something. What's the difference between those two or
对。然后你说你生成了某种 plan.md 或者 goal.md 之类的。这两者的区别是什么?
[24:49] Jason
Yeah, I mean the goal is sort of like the success criteria, right? So for example, a goal would be at some point I want you to be able to paste in a YouTube URL and actually extract the different parts of the drum set, right? That's a goal, right? And until you can do that, you have to keep working. Got it?
嗯,goal 更像是成功标准。比如一条 goal 可以是:我最终要能粘贴一个 YouTube 链接进去,然后它真的能把鼓组的各个部分分离出来。这就是一个 goal。在你做到这件事之前,就得一直干下去。懂了吗?
[25:13] Jason
And the plan is like the implementation detail. I want you to write this in React. I want you to have two different tabs. I want you to use these technologies. And if you don't know how to use these technologies, read the documentation. Um, and basically go from there, right? And the work log is just a way that I can just review the code and say, "Oh, yeah, it's really getting stuck on this permissioning issue." The work really is for me as just someone on DX team to understand uh what are the limitations of these tools. Oh, the work clock is kind of updated as you go along during the app.
而 plan 是实现层面的细节:我要你用 React 写,我要有两个标签页,我要你用这几种技术;如果你不会用这些技术,就去读文档。基本就从这儿往下推。至于 worklog,纯粹是方便我回头审代码时能看出来:「哦,它卡在这个权限问题上了。」这份日志真正的用途,是让我作为 DevEx(开发者体验)团队的人搞明白,这些工具的局限到底在哪儿。——(Peter)哦,所以 worklog 是在做 app 的过程中一路更新的。
[25:43] Jason
Yeah, it's kind of like the log itself because through compaction I'm not going to read every message, right?
对,它就相当于一份日志。因为有 compaction(上下文压缩),我不可能把每条消息都读一遍嘛。
[25:48] Peter
And the plan and the goal you got codeex to generate it or is it
那 plan 和 goal 是你让 Codex 生成的,还是……
[25:51] Jason
Yeah, I I would almost say if you are trying to build good goals, don't write the goals yourself,
对。我甚至想说:如果你想定出好的 goal,那就别自己写 goal。
[25:57] Jason
right?
对吧?
[25:58] Jason
Like I think the right thing to do is to basically tell Codeex what you want.
我觉得正确做法是,先把你想要什么告诉 Codex。
[26:05] Jason
Yeah. describe what the success criteria is and then just say great now set your own goal to accomplish this task. It it is generally much better. And the reason I have the goal as a goal MD file is that I can just edit that file every once in a while and the goal will still keep running. So if my scope expands, I can just edit the goal without having to uh
对,把成功标准描述清楚,然后说「很好,现在你自己定一个 goal 来完成这个任务」。这样出来的效果通常好得多。而我之所以把 goal 单独存成一个 goal.md 文件,是因为我可以时不时去改那个文件,而任务还在继续跑。所以如果我的范围扩大了,我直接改 goal 就行,不用……
[26:26] Peter
do you mind just sharing the goal to MD or can you open it?
方便把 goal.md 给我们看看吗?能打开吗?
[26:29] Jason
Basically, I want you to verify the ability that to uh transcribe a video from a YouTube video. Yeah, this is the test song. This is the video ID.
大意就是:我要你验证「能从一个 YouTube 视频里把音轨转录出来」这个能力。这是测试用的歌,这是视频 ID。
[26:39] Peter
I see. So goal is not just build me a really cool drum app to do XYZ. It's you got to people to verify.
我明白了。所以 goal 不是「给我做个超酷的打鼓 app,能干这干那」,而是你得让它去验证。
[26:45] Jason
Exactly.
完全正确。
[26:47] Peter
Yeah. Verify some sort of core functionality.
对,验证某项核心功能。
[26:50] Jason
Yeah. Right. So in this example, it's I need you to be able to open the app using computer use, upload this YouTube video, and get the data back out.
没错。所以在这个例子里就是:我要你用 computer use 打开这个 app,上传这个 YouTube 视频,再把数据取出来。
[26:58] Peter
Okay. Got it. And before you start building this thing, do you have I guess it's like personal app, but do you get catch images to generate some designs or do you do any of that?
行,明白。那在你开始做这个东西之前——我知道这算是个自用的小 app——你会不会先贴几张参考图让它生成一版设计?这一步你会做吗?
[27:07] Jason
I think that was needed more in the 55 world. Uh for 56, I think that you the the front end is like good enough that I don't really need to worry about these things, right? Usually I just tell it to use certain tools. So I say I want you to use Tailwind and Shad CN.
我觉得那套做法在 5.5 那会儿更有必要。到了 5.6,前端出来的效果已经足够好,我基本不用操心这些了。通常我就直接告诉它用哪些工具,比如说:我要用 Tailwind 和 shadcn/ui。
[27:20] Peter
Okay.
好。
[27:21] Jason
And it it has become much better at uh doing front end without using image gen.
而且它现在不靠图像生成,光写前端也比以前强多了。
[27:25] Peter
Got it. Okay. Okay. So, in the beginning of every project, you have a plan and a goal. And uh well, we can't end this without you actually showing the drum map. So, you can show it real quick.
明白了。好,好。所以每个项目一开始,你都会先有一份 plan 和一个目标。另外——今天要是不看看你那个打鼓的 app 就散了可不行,你快给我们演示一下。
[27:33] Jason
Yeah. So, I just I I now just have all these like different tools to tell me how to play these things. Right. So, this is a fourlim grid where left hand, left foot, right foot, right hand.
行。我现在做了一堆小工具来教我怎么打这些东西。你看,这是个四肢网格——左手、左脚、右脚、右手。
[27:44] Peter
Oh, wow.
哇。
[27:44] Jason
And it counts me in. And I'm just trying to, you know, learn these little patterns on myself.
它还会给我数拍进场。我就自己照着这些小节奏型练。
[27:50] Peter
Oh, you're just trying to follow along on the drum.
哦,你就是照着它在鼓上跟着打。
[27:53] Jason
Exactly. Exactly. Got it.
对,就是这样。——懂了。
[27:56] Jason
And then it just says, "Okay, now I want to learn like poly rhythm. How do I clap five beats in one hand and two beats in the other?"
然后我就跟它说:好,我现在想学复合节奏(polyrhythm),一只手打五拍、另一只手打两拍,这个该怎么练?
[28:02] Peter
Yeah.
嗯。
[28:02] Jason
Right.
就这样。
[28:05] Peter
That's pretty cool, dude. So, so normally uh to learn this stuff, you watch some YouTube videos, you maybe take a course or something, but basically you build an interactive app to teach yourself.
这也太酷了,兄弟。所以一般人学这些,是去看几个 YouTube 视频、或者报个课,而你基本上是自己做了个互动 app 来教自己。
[28:13] Jason
Exactly. Right. Because now I can add anything that I want. So, so one thing is to be able to do this, which I think is the first step on just learning the coordination. But I would love to be able to then at some point say, you know what, I want to give it a YouTube video. I want to learn this drum solo codeex break this drum solo into small parts and put these parts in the same components and change the tempo so I can practice these things. Um, and yeah, you know, like this is just a good way of warming up, but also understanding how we can use AI to sort of build these tools myself.
没错。因为现在我想加什么功能就能加什么。能做到这一步,我觉得只是第一步——先把肢体协调练出来。但我特别希望以后能直接扔给它一个 YouTube 视频,说我想学这段鼓 solo,让 Codex 把这段 solo 拆成一小段一小段、做成这些组件,还能改速度,让我慢慢练。而且这不光是个热身的好方式,也是在摸索怎么用 AI 自己把这类工具造出来。
[28:40] Peter
So you have an engineering background, but what if someone doesn't know, for example, to say, hey, use Tailwind or you know, this is how you convert a YouTube video into this drum thing. Should you get Codex to give you some trade-offs or
你是有工程背景的。可要是有人压根不知道该说“用 Tailwind”,或者不知道怎么把 YouTube 视频变成这个打鼓的东西,那怎么办?是不是该让 Codex 给几个方案、列一下取舍,还是说……
[28:52] Jason
I mean I think again this is this is one of the things where a lot of people in college for example ask okay now that coding is solved what is the thing that people should really figure out right and the example I always give is hey if you want to if you want taste you have to eat I think our job now is to come up with that language and learn more about what you want and so a part of it yeah it makes a lot of sense to know all these things ahead of time but it's also just really valuable to be dissatisfied with how good something is and learn the vocabulary and the words you need to figure out um what it takes to make things better. So I would just rather say tell Codex to make something and just think hard about what you don't like about it, right? And learn more as you go, right? The benefit of even learning to code has always been just go build something and as you face problems, you'll learn to face these problems. And maybe four years ago, the problems were just how do I write the code? But now it's like, "Oh, no. I want you to Oh, actually the I don't have a good experience. Why is that the case?
我觉得这又回到那个问题——很多在读大学生会问我:现在写代码这件事被解决了,人到底该练什么?我常举的例子是:想有品味,你得先去吃。我们现在的活儿,就是把“你到底想要什么”讲成话,并且越来越懂自己想要什么。所以一方面,提前知道这些东西当然很有用;但另一方面,对现成的东西感到不满意、然后去学那套词汇和说法、搞明白怎么才能做得更好,这件事本身就极有价值。所以我更愿意说:先让 Codex 做个东西出来,然后认真想想你到底哪里不喜欢,边做边学。学编程一直以来的好处就是——你先去造点什么,撞上问题就在解决问题的过程中学会。四年前的问题可能是“这代码该怎么写”,现在变成了“哎不对,体验不好,为什么会这样?”
[29:51] Jason
Oh, I don't have to write keyboard shortcuts to change the tempo of this song. Okay, let's add a keyboard shortcut system. Oh, I don't like the fact that I can't switch between these two panels. Why is it flicker so much?" And you'll ask Codeex. And Codex will say, "Oh, the reason this flickers is because we're not we're not like eagerly loading this page." Like, great, fix that. I think as long as you're dissatisfied or as long as you're conscious of what you don't about something, you can make progress towards making it better. Like that that's the real skill, right? You don't need to know everything ahead of time.
“哎,我没有快捷键可以调这首歌的速度——好,那就加一套键盘快捷键。哎,这两个面板切不过去我不喜欢,为什么闪得这么厉害?”然后你去问 Codex,Codex 会说:“闪是因为我们没有提前预加载这个页面。”那好,修掉它。我觉得只要你对某个东西不满意,或者你清楚自己哪里不喜欢,你就能一步步把它做得更好。这才是真正的能力——你不需要一开始就什么都懂。
[30:19] Peter
Okay. Got it. Yeah. So, it's kind of like you iterate and improve it and you learn stuff over time. Yeah.
明白了。所以有点像是:你不断迭代、不断改进,过程中慢慢学到东西。嗯。
[30:23] Jason
Yeah. Right. It's the same with skills. It's the same with hiring somebody. My expectation is never that AI will solve my problem at the first step because I don't expect humans to know what I want unless I really knew what I want. I think you kind of have to go the extra mile because uh Kodas will just build something for you and hey go fix the drum or go fix this thing and they'll fix it, right? I think maybe there's some way to add some instructions. Hey, can you actually explain how you fix it or what kind of trade-offs did they make, you know, to actually understand what's happening behind the scenes? That's the same thing as saying that go fix it is I think I think that's the the issue is that people keep saying go fix it without actually thinking about what is the thing that they don't like, right? I think the things I'm talking about are more, oh, I really want to think about how should we should make better keyboard shortcuts. Could we color code things better to make sense of it a little bit more? Instead of having circles, can it have right hand, left hand, right? It's actually about like being really conscious about the things you want it to improve. If you just say make it better 20 times, it's going to be hard to figure out whether that's actually going to get you good results, right?
对。这跟练技能一样,也跟招人一样。我从来不指望 AI 第一步就把我的问题解决掉,因为我也不指望别人能猜到我想要什么——除非我自己是真的想清楚了。我觉得你得愿意多走一步。因为 Codex 会直接给你造出个东西来,你说“去把这个鼓的功能修一下”“去改这块”,它就改了。也许可以加点指令,比如“你顺便讲讲你是怎么修的、做了哪些取舍”,这样你才能真的搞清楚背后发生了什么。问题就出在这儿——大家一直在说“去修一下”,却没真正想过自己到底不喜欢什么。我刚才说的那些要具体得多:我想好好琢磨快捷键怎么设计才顺手;能不能用颜色区分一下、更好理解;别用圆点了,能不能直接标成右手、左手。关键是你得非常清楚自己想让它改进什么。如果你只是连着说 20 遍“做得更好点”,那很难判断这么干到底能不能出好结果。
[31:24] Peter
Yeah. So, so I guess leveling up building of codeex is just being learn to be more specific in the feedback that you give the AI, right? Yeah. And like I think that's that's the only job left is to understand what you don't think about something and put it into words and like help the AI.
嗯。所以我猜,在用 Codex 这件事上进阶,就是学会把给 AI 的反馈说得更具体,对吧?——对。我觉得剩下唯一的工作,就是搞清楚你对某个东西哪里不满意,把它变成语言,然后帮 AI 一把。
[31:37] Peter
Sometimes I feel uh just getting a little bit philosophical as the last question. I kind of feel like these days we're all managers, right? We're giving feedback to our AIS. But sometimes I kind of miss the craft of just getting there and getting my hands dirty whether it's changing some code or manually tweaking some tweet or something.
最后一个问题,稍微上点价值。我有时候觉得,现在我们都成管理者了,整天在给 AI 提反馈。但我偶尔还挺怀念亲手干活的那种手感——不管是自己去改几行代码,还是一个字一个字手动打磨一条推文。
[31:53] Jason
Yeah.
嗯。
[31:53] Peter
Do you kind of have that feeling or
你有这种感觉吗?还是说……
[31:55] Jason
not too much? Right. I don't think of myself as a manager. I don't really think about myself as being heavily rewarded for like working hard. Everyone works hard at OpenAI. But what makes you stand out? You stand out because you care about how good something is. You care about the results that something's going to deliver, right? And for me, this app is a good app if I actually learn to play the drums better. This app is a good app because uh I can sh I've made it sharable and other people can use this tool and and learn something about uh how maybe how it's made or how to play music, right? This app is successful if I like can build a small community around that. How the code looks to me I think is is secondary to sort of the outcomes I want to drive whether it's for myself or for others.
不太有。我不把自己当成管理者,也不觉得“活儿干得辛苦”这件事本身能换来多大回报——OpenAI 里人人都很拼。那什么让你脱颖而出?是你真在意东西做得好不好,在意它最后能带来什么结果。对我来说,这个 app 好不好,标准是我打鼓有没有真的进步;是我把它做成可以分享的,别人也能用上、从里面学到点什么——学它是怎么做的,或者学怎么打节奏;如果我还能围绕它攒起一个小社区,那它就算成功了。至于代码在我眼里好不好看,相比我想要的结果——不管是对我自己还是对别人——都是次要的。
[32:37] Peter
Okay. Basically the user experience and the user outcomes. Yeah.
明白,说到底就是用户体验和用户拿到的结果。嗯。
[32:40] Jason
Yeah.
对。
[32:41] Peter
Makes sense. All right, dude. Well, I mean you guys are doing an amazing job. Um I'm curious just over this past weekend uh there were so many updates from Tibo and everyone else. Uh do you guys have any kind of principles in the team that just or is this everybody you hire cares a lot about the community and the users? How do you guys
有道理。好了兄弟,你们真的干得很漂亮。我挺好奇,就过去这个周末,Tibo 他们几个发了一大堆更新。你们团队内部有什么原则吗?还是说你们招的每个人本来就特别在意社区和用户?你们是怎么……
[32:57] Jason
Yeah, I mean I think so much of it comes top down from Tibo what I said before, right? Everyone works hard. Like Tibo works hard, I work hard, but I think just Tibo cares a lot, right? And Tibo engages with the community in a really great way. And I think that just trickles down to the rest of the team and the rest of the team cares a lot as a as a consequence of that.
嗯,我觉得很多是自上而下从 Tibo 那儿来的,就像我刚才说的:大家都很拼,Tibo 拼,我也拼,但 Tibo 是真的在意。而且他跟社区互动的方式特别好。这种东西会一路渗透到整个团队,团队也就跟着变得特别在意。
[33:15] Peter
Yeah, I think it's important just to be transparent and talk to human because I I think it's very easy to just become very corporate and you know do press releases and stuff. I I've seen this in my whole career, you know, and it never works out. People just want to talk to the human face.
对,我觉得保持透明、用真人的方式说话很重要。因为太容易变得一身“公司腔”了——只会发新闻稿那一套。我整个职业生涯见过太多这种,从来没成过。大家就是想跟一张真实的人脸对话。
[33:27] Jason
Yeah. Yeah. I I think T has been doing a great job of just representing the company and also representing the users towards the company as well.
是的。Tibo 一方面代表公司面对用户,另一方面也在公司内部代表用户,这两头他都做得非常好。
[33:33] Peter
Awesome, dude. Well, where can people follow you online and maybe uh give us some hints about what's coming next for Codex? is going to take over even more.
太棒了兄弟。那大家可以在网上哪儿关注你?另外能不能透点风,Codex 接下来会有什么?是不是要接管更多活儿了。
[33:40] Jason
Yeah, so you can find me on Twitter at uh JXNLCO. If you want bigger updates on the uh product, you can also check out OpenAI devs. And I think the biggest thing for me is just like so far CDEX has been on the desktop and we're moving a lot of that into the chatbt work experience in the cloud, right? And so some of the automations now can be running in chatb work rather than codeex. And I think I'm really excited to just make more progress in the cloud experience overall, right? the work should have to the work shouldn't have to stop because you close your laptop and uh you know once that's once that's the case I'm even more excited for what's possible.
可以在 Twitter 上找我,@jxnlco。想看产品层面更大的更新,也可以关注 OpenAI Devs。对我来说眼下最大的一件事是:Codex 一直是跑在桌面端的,我们正在把其中很多能力搬进云端的 ChatGPT Work 体验里。所以现在有些自动化可以跑在 ChatGPT Work 里,而不是 Codex 里。我特别期待把整个云端体验往前推进——合上笔记本,活儿不该就此停下。真做到那一步之后,我对还能做成什么就更兴奋了。
[34:14] Peter
Yeah, we talked online about that uh live calling feature too. You got to let me call my codeex and give it some directions. [laughter]
对,我们在网上还聊过那个实时通话的功能。你们得让我能给我的 Codex 打个电话、口头给它下几条指令。(笑)
[34:20] Jason
Yeah, voice of the future like I use dictation a lot and I think we're going to make a lot of progress there.
是啊,语音是未来。我自己经常用语音输入,我觉得这块我们会有很大进展。
[34:26] Peter
All right, Jason. Well, uh thanks so much for your time, man. I I definitely learned a lot in this conversation.
好的 Jason,非常感谢你今天抽时间来,兄弟。这次聊下来我确实学到很多。
[34:30] Jason
Awesome. Take care. Thanks for having me.
太好了。保重,谢谢你邀请我。