
The Standup with ThePrimeagen· Staffel 1· Folge 19
What even is an AI Agent?!
Donnerstag, 31. Juli 2025 · 40 min
Kapitelklicken springt direkt hin
Shownotes
Watch the bolt.new Reward Ceremony Live!
July 26th 10AM PST on twitch.tv/theprimeagen
#sponsored balls.yoga
📌 Chapters:
- balls.yoga, drama & intro
- Building OpenCode: terminal AI agents
- Bolt.new Reward Ceremony - July 26 10AM PST
- Agent architecture basics explained
- What is an AI Agent?
- Prompt engineering and tool calling
- OpenCode UX and mobile plans
- Why OpenCode runs agents locally
- Vision for mobile remote dev workflows
- The reality of build opencode
- Claude vs Opus vs others
- Tool usage & LSP integration
- LSP tool feedback loop
- Claude is best at calling tools
- Prompt tuning limitations and expectations
- Modeling agent loops with tool calls
- Why building a real agent isn’t just weekend work
- Security tradeoffs in early development
- Loop management & lossy compression
- Session design & managing context
- Parallel sessions and subagents
- Adam banned from Twitch by his cofounder
- OpenCode & Terminal.Shop development connection
- What surprised them building an agent
- Why TUIs are hard compared to web
- Layering, pixel constraints, UI struggles
- Final laughs & wrap-up
- Plug for OpenCode: sst.dev/opencode
- Outro: still no clue how agents work, but fun ride
⸻
Topics Covered:
• AI agents in terminal environments
• OpenCode’s CLI-first agent approach
• Loop-based tool calling in LLMs
• Integrating LSP feedback into agents
• Prompt engineering & model tool awareness
• Evaluating agents: benchmarks & metrics
• Local vs remote dev environments
• Designing for low-friction agent UX
• Safety, permission models & sandboxing
• The tradeoffs of TUIs vs web UIs
• Session design, compression & memory limits
• Humor, Twitch drama & voice AI characters
Transkriptvom Podcast bereitgestellt · Zeitmarken springen hin
Guys, have you guys checked out the hottest new site, Balls.yoga? What? Yeah, I have checked it out. Adam, check it out. Balls.yoga. Check it out. Oh my god. What is this? It's so hot right now. So hot. This is you guys. What in the world? I just sent in the chat the... We made a ad for Bolt Further Hackathon this month that we were doing.
And it involved Prime being devastated that he was no longer able to make Balls.yoga, which we just casually mentioned in the ad. But then we actually made it. So that there would be an easter egg. When you believe Balls.yoga was available to buy though. Adam, are you okay? He's watching the ad. Yeah.
Your face looks so disappointed. I was just reading Twitter. I'm sorry, you guys sent me to Twitter and then I found that there's some stuff on Twitter. Ooh, the drama. I just want to read it so badly now, like... Let's just read it on stream. I don't know if it belongs on your podcast. Like, I don't think that's necessarily where it goes.
We're gonna keep on. Can we give a proper intro to that episode before we start? Yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah, yeah. Anyway, sorry. Go ahead, Prime. Okay, we are having on what I would consider two experts.
Adam and Dax. Adam is currently looking over, looking very disturbed. Oh, that's right. Josh Suman. Suman, Josh Suman. But they have been building out something called open code, which is gonna be an agent for your terminal. And the experience looks immaculate. Adam, you've done a fantastic job. Dax, I don't know what you do.
But it looks very, very, very good. And of course, on this podcast, as always, is teach, teach. Hey, he might be Steve Jobs, a telescopic Johnson. I don't know what your full name is these days. You keep getting new ones. And so, yeah, today on the standup, we're gonna be talking about how to build an agent, but not only that, some things about open code itself, which hopefully you'll see a bunch of this on the stream coming up, because this is really our kind of like our area that we all seem to enjoy for whatever reason.
All four people on this podcast use NeoVim, by the way. And so, you can... That's how we started our company. That's actually why we started our company on Ironically. It's the first time someone got hired because of NeoVim. It got two, a double, two for one. But the reality is that this type of agent is built for people who want...
I assume the more command line kind of experience, the ability to have the faster, more creamy experience that way. And so, they're gonna just kind of walk us through what it takes to actually build an agent, because if you're not familiar, you've probably read 1,000 AI articles at this point. That's like, yeah, spent an afternoon.
I built an agent. It's easy. You don't even need something like cursor. It's so simple. Right? Like, you read this thing over and over again. You're just like, well, then what are people working on? It has to be harder, right? And so, we would love to have someone on who's actually done it and can walk us through what it actually takes.
Hackathons over. But that doesn't mean the content is... Join us on July 26th at 10am, A-M-P-S-T on Prime Stream, to live, react to the awards ceremony. See what everybody built, and we'll see you there. It's okay. You worked at Netflix. You have everything they want! Anyways, so that's been a little frustrating, but on the other hand, we're really excited about the direction things are going in.
I think... We've been... I think the genesis of this is like... There's been a lot of really cool tools out there. Like, cursor... A lot of people like... A lot of people use a bunch, but I don't want to give up NeoVin. Like, I like working in the terminal. I don't want to switch my whole IDE. So, we're excited about seeing...
Okay, what can we do for people like us? Like, what's the best possible thing we can put together? That's complimentary to whatever IDE that you choose to use. Nice. Okay, well, that's some good background info, because we're going to be mentioning open code a bunch, probably while we're talking about this, so that clears up what where people should go when you guys are talking about that, at least.
So, let's get to... What is an agent, Dax? Everyone's been asking. I gotta be honest, I don't really know. You want to take this... What's your concept of an agent? What's your concept of an agent? Well, I think the term is very overloaded, right? So, outside of programming, it means a lot of things, probably.
Transparency programming. Yeah. James Bond. I met within the AI bubble. So, I guess there's like, in the programming world, it's just this idea of calling an LLM, giving it a bunch of tools that are related to programming. So, editing, reading files in your code base, and then just like looping and letting it keep calling these tools, making changes, and then coming back with some kind of response.
That's kind of the basics, like, the formula for an agent. If you look at, like, cursor has an agentic mode, but then there's other tools in the terminal, like, Cloud Code. I think all the tools that fit into this category kind of have that backbone. And the... In particular, the looping is really what we...
The looping and the tools, right? I think, like, we can say agent equals LLM plus tools. Is that fine? Plus some sort of system prompt that keeps it into... Like, I assume there's some sort of secret sauce to getting a good prompt that helps the agent understand and it needs to go through a bunch of files and kind of understand the code base.
Is that what it is also? Or understand the task at hand? Yeah, and each of the models, kind of like, they've respond differently to the system prompt. So, there is, like, a bit of that, but it's not like a super-sensitive secret. I mean, there's... You can kind of see all the system prompts out there.
I don't really know that any tool can, like, differentiate that hard on those fronts. Like, the tools are pretty, like, set to the model at this point. Cloud expects certain tools at least today. Maybe someday, all the models will be better at calling tools generically. But right now, like... It's really kind of like all these agents have the same set of tools, the same roughly system prompts.
It's all the stuff around it that I think we're focused on, like, open code, having kind of, like, the share page you can share sessions with people and you can kind of see the full history of a session. And just having a really great two-E experience. We're going to build a mobile client so you can kind of, like, step away from your machine and continue, you know, conversations while you're on the toilet or whatever.
Yeah, I think, like, there's a lot of stuff around the actual agent that makes for a good experience in terms of programming with these things. And I think Dax and I have both done a lot of programming with these things. So we had a lot of opinions. Yeah, I think we're definitely, like, really firmly in the product zone.
It's, like, less about pushing the LLM capabilities or, like, finding clever ways to use the LLM itself or making it perform better. There's some of that. But most of it is just packaging it in a way that's nice to use. That's obviously very fun because when you're working on a product that you yourself use every day, you're just like, oh, I wish this was like this.
I wish this was this. I wish this was easier. So, yeah, it's nice just to be able to iterate on that. And then some of the mobile stuff. So I think one differentiator with us is we're really in on this idea of the agent running on your machine with access to your stuff because that's where you presumably your dev environment works the best.
Presumably you have everything set up. Some of these tools like Codex or, like, Devon, they work remotely and they run in the cloud, which can work. But then you need to, like, recreate your perfect environment in the cloud which some companies are disciplined and have that. But not everyone does. Yeah, next does fix it.
But, you know, how many people use Nix? So until everyone's using Nix, yes, realistically, practically most people's workable data environment is local. So we want to do stuff like, oh, we want to have a mobile app. That's just going to be connecting to a session. That's, you leave your laptop running and you step away, go on a walk.
You can, like, get notifications saying how the agent's done with this. Give a feedback. But it's also just running on your laptop. So you don't have to go set up this crazy cloud thing. Have you have you successfully been able to actually, you know, do a day of prompting while out at the grocery store doing your own thing, just hitting some prompts from your mobile phone?
No, we haven't built the mobile client yet. It's something I desperately want. I don't care if anybody else uses it to be honest. There's just so many times at this season of life. I'm 38 years old. I have two kids. I'm out of my office a lot. Like I step out 15 times a day. And to be able to, like, go on a walk.
And then when it's done, get a notification. It's doing its loop. And it needs input to be able to, like, continue that conversation without having to be setting up my desk. It's just I want it very badly. And I think it turns out other people want it. We've seen some mentions on Twitter. Kershler's even designing a mobile app.
So, yeah, it doesn't exist yet. But I'm very excited to have it. Okay. So then kind of walk us through what it takes to actually build an agent in some sort of real capacity. Not just a weekend warrior project. But like, what, like, why did it take you guys so long to release yours? Obviously, you put a lot of work into it.
So it must be more than just a weekend project. Yeah. So I think one dynamic for us is we're not coupled to a single AI provider. So we support anthropic Google open. We actually support like the full list of areas available because we're built on a library that covers most of them. What about like Lama?
Can I run it locally? Yeah, so one of the, I haven't fully tested this out yet, but one of the providers. There's like a, there's like provider support. One of the providers is for like a local model. So one, just testing this stuff across everything. Seeing which model is actually work well for this.
The reality is, is right now very few perform well. We all use anthropic and clouds on it for us are defaults because it is, it is the best. We see some. Some of us aren't poor. And we use opus. But sure. You can use that. That's fine. I just thought it was an answer of all five. Holy cow. He's like, I need a mobile app because I'm going to be doing this while I'm eating vegan sushi.
Yeah. It's literally five times expensive, I think. So yeah. It's quite a difference. I like it more because it's expensive. Like, that's my thing. I'm just a very expensive. That is a very adamant. It's like a Gucci bag or something, right? You're like, I get the same code out. It doesn't matter. All the models are all the same.
But mine was made with opus. I do have a quick question, Mr. Gucci over there. I noticed that you're not subbed on my channel. And so it's just like you're talking about spending all this money. But you don't even have five dollars a month. Five dollars a month. Hey, hang on. How do I do it? How do I do it?
Five. I was at one time. Five. Five. I haven't been on Twitch in months. I swear to you. Oh, so before it wasn't even scheduled because you can set it up to auto-renew, Adam. Why? I think it was. It wasn't one time. Maybe it's a new, I got a new card. New credit card. You know that happens. And then it just now I don't know.
It's crazy. You guys make Adam do all the work and you make him pay you. He's getting the privilege of working with us. That's... It's funny. I did see an ad a second ago. I've got Twitch chat up here. And I was like, why am I seeing an ad? What is this on Twitch? That's why. Well, I'm so tilted right now.
I just... I'm sorry. It's so hard to focus. I've seen like in Twitch chat, people are confused about the open code AI slash open code. Yeah, it is super confusing. I'm so upset about this. It's so like frustrating and annoying. And I want to just like focus on our conversation, but it's just very annoying.
Do you need a Snickers? Yeah. I don't think that's vegan friendly. I know that's what he needs though. Okay, well, all right. So I mean, I want to keep going on this agent thing. So you're just talking about integration and tools all this. I would assume that do you have to like do you have to like bespokely craft every prompt to be able to use every tool?
Or does it just simply kind of work out of the box? You're just like, hey, you should search for this thing now. Or does it tell it like, it doesn't use reasoning in the sense that you're like, hey, what do you do? And it's like, this is what I should do. And you're like, okay, now follow step one. What do you do with follow step one?
Like, how does it start using these tools? So roughly what the model is good at is you give it a description of the tools and listen to tools and you get a task. And it's very good at going to loop. It's like, I'm going to figure out what to do. I'm going to tell you what tools to call. Call them, give the results.
I'm going to like do that. So it's I think some miles where this works that does work really well. There is optimization though. There always is. So the task tool descriptions, like the description of the East past school. How do you how do you describe it? Like what's the schema for the input? Like is that confusing?
Does it get tripped up on things here and there? So what we do is say something like anthropic. You know, they have their own version of this called cloud code. We just dump everything out from cloud code. And when you're using anthropic, we use all the exact same task or the tool descriptions and stuff.
So on one hand, I'll say it does make a difference. If you just do a very naive approach, you're probably going to get worse results. I personally don't think it's like the thing that makes something 10x better. I think it's a thing that you can like kind of play with and optimize. But. And also the end goal is like you don't really want it to have to be that precise.
Because you can bring your own tools. You can say here's a tool to access my database. Here's a tool to do XYZ things. It needs to be able to be flexible. So we think it'll just kind of get better along those lines anyway. Can you can you give an example of like how you hooked it up to like LSP, for example, because if you like that will be like kind of illuminating, like a particular example of how that how it gets access to that.
And how it even knows to call that also. Yep. So with LSP so we experiment with a few different approaches to this. But the one that we're sticking with for now is whenever it makes an edit to the file, the response we have a tool that's like edit file tool. Send us like a patch or like a like a tool string and new string in the file where we place it.
That's how it edits files. When it does that, we the response that tool will include any diagnostics that we found from LSP. So if the typescript file where he had a typescript LSP running, we know that after this edit, there's these three errors. We say here are the errors, please fix. And you'll see it instantly respond with with the fix.
And this really helps hallucinations because when it like thinks that there's functions that don't exist on a library or any of those things, it correct itself right away. And it's it's quite good at responding to that feedback. So we also how does it how does it kick all the stuff off? Because does that mean you actually run the LSPs yourself?
Or do you okay? So that means whenever I open a project, if I have open code plus VIM open, I might have two typescript servers. I may have two go pleases or whatever they're called and all the other ones. Okay. Yeah, so we originally were looking to see can we like hijack any running ones? Because maybe you already have them open and you already have these LSPs configured, but you can't because they're standard input.
Teaching big shaking. Big no. Big no. That's a big no from me dog. That's a big no. So we run our stuff in parallel. And there's also no configuration like we have, we ship out of the box support for a bunch of things and everything just downloads and runs. Because you don't need like absolute precision for your exact LSP configuration that you like.
It's more just giving them something that something to work with. And then you said that's like at least for the way you guys have it. It's part of the edit file thing. So it's like, okay, I know that I need to go and like edit. Does it does it also happen to be like move a file or delete. Like does it happen in every kind of like file?
Because like I just interested to know how you put LSP into everything. Or is it just like edits? That's a good point. Like we probably should give it information whenever it changes. All right. Making an issue right now. Well, open source contributor. Let's go. Needs to do LSB diagnostics on file ad delete.
We do it on right. So when you create a file, we do show the diagnostics to the tool or we return the diagnostics. So edit and write. We're already returning them. I guess a move. I didn't. I don't know. We don't have. We don't often see. I guess I haven't done much with it where it's running like a bash move.
Command. But. Yeah, I think we also. We also considered and we have this in there. We should have disabled for now. There's a tool that just returns diagnostics. So it can choose. Hey, I want to look at diagnostics right now and it can query for them. And we have seen it use that a bunch. But it wasn't well tested.
So we're not shipping with that right now. But the models today, they're still very like tuned to call specific tools. Like we've played with a lot of tools and you can hand it. A bunch of tools that's never seen before and it just. It doesn't call them. There's something to being like the post training process being catered to certain sets of tools.
So anthropic is really a cloud for cloud 37 before that. Those models are the best at calling tools from a programming standpoint. They'll actually keep trying and going for it. Other models can be really smart like Gemini 2.5, but it doesn't really. It doesn't call tools very eagerly. So there is still like this phase we're in right now where.
You kind of have to like provide the set of tools that the model expects. I don't think that'll always be the case. But we've definitely given it a bunch of LSP tools. I've played with, you know, giving it. Go to definition and find references things like that and it just doesn't use them. I mean, you can get it to use them if you ask it to.
But it doesn't like it doesn't default to kind of thinking that way. I think that'll change. So like how do you set it up in such a way to know to use that tool? Like if you say, hey, use find references, how does it know when to use it? Or because isn't this kind of like a prompt scale issue going on here?
Where it's just like you don't have a comprehensive enough system prompt for it to be able to follow. Is that is that. I mean, it is a system prompt. That's if you look like at the cloud code system prompt, there's a lot of like specific tools called out. So use the to do tool to set up your plan before you start executing.
That is how you kind of like massage the model into using tools that it maybe doesn't have any awareness of. It's just yeah, there is kind of like a finite number of tools before you kind of hit diminishing returns today. It just doesn't it doesn't take advantage of all of them, but it gets really good at using the handful that it uses.
And I think it's in a good spot right now. I mean, it's very effective. I think these agents today are worth using and leveraging. But I do think it'll get better. I think more models will get better at calling tools and we'll have other options. So I have never built a model. So I just have kind of further questions, but here, Dax, why don't you go?
Because then I just still want to keep on. So one last thing on that. I just totally blanked out what I was going to say. Thanks for interrupting. I don't know. Then we kind of like race towards it. Yes. I remember. I remember. I'm going to go. So one of the missing pieces here is. You can add something to some prompt and say, hey, use this tool.
Can you tell me for a clue lead a load or something? What's going on? Yeah. I need my cheat sheet. One day. It's hard to tell right now whether when you're making something better, are you making something else worse? Because this element is such a black box. It's not like a deterministic system they can see the inside of.
So what is missing? And to me, the next major thing we work on is a set of consistent benchmarks. That we can run whenever we make changes to some prompts. And these benchmarks are probably not going to be very quantitative. We're thinking that we're going to come up with a very real world looking code base.
We'll have a bunch of like features that we needed to implement. And we'll have a bunch of standard prompts to have it do that. And we have this nice like way to see for anything we do, like every single thing that happened diagnostics wise. So when we make a change, we can run it through this and see like the output and evaluate it somewhat qualitatively.
So it's still going to be a qualitative thing like did it get better or worse? But at least we have a consistent, we'll have a consistent set of things we're running. So we know right now we're kind of flying in the dark. We're like, yeah, this made it better. But I don't know if like some other person is having a horrible experience because it's this change.
So you're saying now you're doing not only vibe coding, but vibe testing decks. Vibe testing, vibe benchmarking. Yeah. It's really badly needed because there's so many benchmarks for the models, which everyone has opinions on. There's not really a benchmark. Well, I don't know. They're kind of worthless, I guess.
But why? Why are they worth those items? Yeah, why? Why are the model? I mean, the model benchmarks. They just don't seem to correlate with like actual real world. But why? I mean, why? I don't know. Because I guess because they're training to like hit the benchmarks. Are you guys like quizzing me? What is going on here?
I'm trying to get you to say because they're all benchmarking Python. Oh, well, that's a thing. Yeah. They're not all doing it. But the major, the sweet bench benchmark is literally just Python, which blew my mind when I learned that. Yeah. There's not like a benchmark today for. There's like a dozen.
And there's no benchmark that says like given the same prompts and same code base. Here's like, and it's part of it's like it's qualitative. But here's the one that did the best job. It did it the cheapest. It did it the most effectively. Uh, you had to have kind of like a grading system. And there'd had to be humans in that process.
But. And speeds another factor to like half acid. They've even did this thing. Someone did this funny thing. Someone made me do something yesterday. I was kind of interesting. They told the agent to like write a book. I can't remember exactly what it was. It was something where it would definitely like run in a loop for a long time.
And he checked like how many steps did I think the highest one, which was called, uh, did 187. That's like. So I'll and tool call it. I'll and tool call it before before finally stopped. So that's a good way to like rank it to see like which ones the most persistent. All these models are not very like they give up very easily.
They run to an issue. Like human stop. Yeah, just like humans. AGI has really been achieved internally. Like I'm just enough on this. They're going to just ask me again later. It's fine. Yeah. All right. All right. I got real questions here. They have. I also agree our KGI sucks. Okay. But now that we got that out of the way.
Uh, with that with that stated, um. So I like how do you start a loop? And how do you determine that a loop? So I'm like, because like I know you're going to say here's what the user said. You have some sort of system problem to say, hey, you can accomplish this task. You buy these tools, whatever it says.
How do you say? Okay. I either reprompt the system again. To execute step one of a several instruction plan. Do you have to like manually parse it out? How do you like? What's the interaction between the model and this? Like start this looping process? Because that's what's kind of confusing to me. Since I've never actually built the agent itself.
Is that I imagine that there's some. Yeah. You have to do some weird parsing. What's cool is you don't have to do anything because this is a responsibility of the model. So when you make a call to an LLM, it'll generate a bunch of text and it'll stop, right? There's reasons for why it stops. Sometimes it stops because.
Oh, I'm done generating text. I'm done with everything I need. So that's the stop reason. But it could also stop because I can't continue until you execute these tools. So you don't have to figure out when to interrupt it and like do something else. It'll tell you it'll stop and say call these tools and then continue with the responses to the tools.
That's baked into the models. So that part's pretty easy. It's like very easy to build like that loop. So that's not even a loop then. We keep asking until it's done. Eventually it's like it's like a wild true break if. If the stop reason is done. It's part of the request that you literally send like two clawed is like, yo, I have these tools available.
They can do these different things. And then the like anthropic is the one. Right. If I'm just I've from what I see. You're right. You literally send them the tool definitions. And then the model says, I'm going to run this thing. Then you're like, cool. You said I'm going to run that thing. Do do do.
Do I run it? I sent it back to anthropic. And I said, just like you can do a conversation. Oh, okay. So it's not you going. If you were to execute, what would you do? It's like, I'll do these things. And you're like, okay, I'm going to close all that things. I'm going to execute it then recent effectively.
Don't do that. I'm going to do a few of these conversations. Plus the current ones. That's hard. What's next, bro? Because that seems like it just go like it would just do this forever. Because it always comes up with new stuff. Yeah, like you endeavor, basically. Exactly. We endeavor tight. Yeah. Yeah.
So it's actually it's very easy. That's why building like a basic prototype of an agent. Yeah. It's like a weekend weekend project. Yeah. Because you just would define like edit file as like a tool. And then you'd give that to the model. And then you'd define like some other simple ones that you would need to do stuff locally.
Search for files. I don't know. I don't know what other ones are like the normal ones. Yeah. And that's a grip. Yeah. Yeah. Fine. It runs grip. Yeah. It's got a bash tool like where they can actually run bash commands. That one's always good. Because it's like, oh, I'll let you run any bash command and then it just runs anything.
That's actually my biggest worry is like, okay, so how do you protect against destructive operations? Do you just simply say, hey, user, you must like approve of set operations? Because how do you know it's not going to like RRF root no preserve. So there's a lot of different approaches here. Most of these agentic coding assistants have a permissions model where basically, you know, certain tools have to be granted permission.
Most of them also have like a full auto mode where you can bypass all those things. If you know you're in a sandbox or whatever. And then there's like, there's approaches with sandboxing. So like code X CLI by open AI, they've got, they use like the Apple, I don't remember what seatbelt. It's some kind of a sandboxing thing.
Same with Linux has a sandboxing thing where it basically constrains it to work only in this directory, like in the project directory. And then some network constraints as well. Yeah, some people have some people run cloud code in a Docker container. And there's aren't like a perfect security wise or like a perfect sandbox, but they're pretty good practically speaking.
We're not thinking about that stuff too much right now because we need to build something that's fun to use first. And then we'll figure out how to like layer in some of these sandboxing things. Sorry, that was just such a fun statement. Okay, so does that mean are you saying that windows was always right asking for permission for everything, including deleting files?
Open code does right now, right? So yes, yes windows was correct. Just say yeah, Dex, you got it. Yeah, stop reading Twitter. I know you're upset. I have so many questions. So I didn't even know that there was already this agent group effectively that exists for inside of cursor. Well, yeah, I mean, I know that the cursor has it, but I thought that you wrote the loop.
Not that these these models effectively can kind of break and say, hey, I need more information before continuing. I mean, you still do have a loop on your side because if it's a wild loop, it's still a loop where you're having to keep calling the LLM with all the messages until it tells you to stop basically.
And there's some tricks here too, right? There's like there's obviously a limited context window on a lot of these models. Sometimes they're like pretty tight. So if that loop is going in a context window, it's starting to approach the limit. We will pause for a second, take the whole history sent to LL and ask it to summarize.
And then we'll like continue the loop just with the summary. So you think that you can win in what way? Oh, I mean, dangerous in the sense that the moment you ask it to summarize, you do effectively a compression algorithm on top of it, a very lossy one. Like how far does it get off? You get like warnings about it?
Does open code give you like a warning like, hey, we have to do a lossy compression on your history or it may start going. So we have that information to show you, but it works so well that like it's kind of. Yeah, like the experience feels like you have infinite context. Most of the tokens that it's taken up are like, here's the stack trace from one thing that I fixed eight minutes ago.
Yeah, I mean, really a better practice is just to keep creating new sessions and to not let any context window grow very far. The summary is like compacting it is basically doing that. It's basically forcing you to start a new session, but it's giving it a little bit of context, I guess, in the form of the summary.
But it's generally like you don't want to keep a long context window filled up with a session that's, you know, 25 messages long. It's like it's getting less and less effective over time. Yeah, and most, I mean, if you think about like how much of the actual tokens you're typing in telling it and giving it direction, it's very little compared to how much it's like getting from.
Yeah, reading file or like a, oh, I'm going to change this file. It was 250 lines long and I changed a bunch of the lines, huge diff tons of tokens. We don't need that now. That was an hour ago. Yeah, the effectiveness of the model is all tied to like signal to noise. How much signal can you give it without noise?
And the longer your session goes, just obviously there's going to be more noise. Make a new session for different things. That's what we're saying, right? So if they're going to do a new task, it's your starting new session. Yep. And sometimes, yeah, sometimes you want to do things in parallel. That's another reason to start a new session.
You like kick off one thing, new session, kick off another thing, new session. I found my brain can only handle so many of those, but people do like paralyzing a lot. So could you have an agent that spawns sessions? So it is actually the compression algorithm for your brain. So the agent has. It's all the rage now.
Teaches on top of it. Oh, I know. I know. I know everything there is to know about agents. I came super prepared. I started drama on x.com. The everything application. I've been feeding false websites in the chat. I have 17 misinformation bots in the chat right now spreading fake news about open-goed.
Nice. Some agents are an interesting concept. I think they should be used surgically. I think there's a trap of like having just sub agents that are general purpose just to like parallelize work because we're not like open code at least is not intending to be an asynchronous agent. Like you are in the loop on purpose.
Like we want you as a programmer able to interact with the agent and to steer it in the right directions. I think if you get into like eight sub agents doing all the work, there's very little visibility into what's happening. You lose the permissions model like the ability to inspect what's going on.
You just can't like your brain can't handle those eight sub agents going in parallel. So now you've kind of got like a background agent, right? You've got jewels or whatever else. And that's a different thing than what we're trying to create, which is very much human in the loop human guiding the agent.
So I think sub agents like using them. So there's a task agent and log code or a search agent. It basically is just a read only agent that can search through files and limit the amount of context noise in your main context window. That one makes a lot of sense. I think like a code review or a planning agent that's a sub agent.
I think those can make sense. We're going to play with a lot of that stuff, but I think like just general purpose sub agent that does everything. And then you're just trying to parallelize all the tasks. I don't know. I think that's kind of a trap. I get one that's like a zoomer version of it so that then the rest of the time it responds like a zoomer.
I want Tanner in open code form. You know what I'm saying? Like I want to write my prompt and then it turns it into Tanner and Tanner reads everything off to me. Hey guys, it's me Tanner here just letting you know we're about to edit the files. Okay, sweet. That's what I think you guys are missing. Like you're going to differentiate on product.
That's what you. Oh, this is way better. Yours is way better. I'm way better. Tanner do it. I don't know who Tanner is. I'm not going to lie. It's not a laugh. It's a day I've always on prime channel. Yeah. Oh, got you. Yeah, yeah. I'm out. It is not watching twitch. I'm sorry guys. I love you guys. Don't worry.
Someone gets to do a sub loser. Yes. I don't variable would be the first. Let me be honest. Let me be honest with you. And even though this isn't public, I'm going to be very frank with you. If you were watching Twitch, I'd be really mad because I'd be wondering what the heck was working on terminal dot shop right now?
Yeah, exactly. Really? I've got three jobs. I can't be watching twitch. You do not have time to be watching twitch, Adam. You need to be the only terminal dot shop. And as your co-founder, I reject the notion of Adam on Twitch. Yeah. If you knew who Tanner was, I'd be disappointed. It was a test all along.
True. We're putting the individual, an individual contributor. Man, I love that line. It was very good. Yeah. Adam's building open code so that he can have it work on terminal. It's all like a trailer plan. Oh, so we're investing. We're sharpening the axe. Nice. We're big fans of sharpening the axe around here.
Yeah. Yeah. Oh, it's going to be smart. It's going to be so sharp when he's done with it in a few months. It's going to be so sharp. Oh, man. Okay. So it really, that's what it takes to build an angel. What is the part that you didn't realize was going to be like the hardest when building an agent? Like what's the thing that caught you most off guard?
You know, it's just like every product. It's the 80% is easy. I mean, you get into all the edge cases. It's like, what happens when someone cancels the loop? And it's like in the middle of a tool call. Like, is that handled gracefully? What happens when it like hits the context window, but didn't get a chance to summarize?
Like, there's just infinite of these like weird cases. And it's multiplied by the fact that again, these things are not very determined. Not very deterministic. So discovering them is quite hard. But yeah, it's just me. I think for me, it's been all edge cases. Adam's been mostly working on UI stuff.
Yeah, the two. The two of you are just hard. Every time I work on a two. Would you say that what would you say? It's the way that charm does the rendering that's hard? Or is it the way that charm takes over the open code repo? Oh, and that's hard. Like, what would he say? Two, he's hard. Charms him on one side right now.
That's the answer. Multi-front. Multi-front attack. Multi-front attack. That is not okay. All right. Do not associate. I could be literally anybody. It could be someone else over here. I am not for this podcast at all. That's Miami TJ. I'm missing your chain back. That's what I need to complete it. It really changes the look of the turtle neck when you throw a chain on.
It's so different. The turtle neck does become way, way different. Here's actually the top. I need, I have one tough question for Adam. Does watching Twitch make you not a vegan because you're consuming something made by animals? Animals. I heard that. Wow. Unexpected. I love it. Yeah. Does using electricity mean you're not a vegan?
These are consuming. You hate environment. Why don't you agree to come on? I was surprised. Yeah. Okay. Okay. Okay. We could probably do one more real question. But is the two we hard because of the way? Because I know what we worked on Charms together. And it has to be where it has to render from top to bottom.
So it makes like, we've got a couple of tools and various things difficult. Like, have you got, because I know we talked about this, where you considering actually still building like the non, like the, or the non top to bottom style rendering that is currently. Is it bubble tea? Is that the name of it?
Yeah. You want to change it out to something that's more like you have a scene and you layer it. I like bubble tea. I yeah, it's very good. I've grown to really enjoy it. I enjoy go more all the time. I kind of hate to go at first. So I got a Twitter. I'm actually enjoying go quite a bit. It's nothing about the actual like, do you learn to learn anything?
Yeah, you can learn. Yeah, sure. And it's just the, if we spent six months telling you you had to write something in this and that it was good, Adam, you would say rust is good. Like, it is not, this is not a strong, the door thing. Do not over index on this. The thing that makes two is hard is like coming from being a web developer.
I can't, like, there's so many more constraints. And that's nice. Sure. So, like, it's like designing a two. It's kind of fun because you have all these constraints. But it also just sucks when I can't just like, let the user do things you can just do on the web. And this vertical space is so constrained.
Like, you're so just like, you're trying to like, minimize absolutely every pixel. It's just, it's just stressful. It's just like getting all the little things right and making a good two experience. Just kind of like stretches all your brain cells. It's just sucks. And overlays are hard. Overlays are hard.
Yeah. Okay. See, that was a real question. TJ thought I was going to make another joke. I wasn't. I was in there. Actually, because I'm actually curious about it because I wrote, when I did, when I did a flappy bird, I actually gave up using that and just wrote my own scene. And did Z indexing because I wanted to be able to do layering.
And it's just, it's just easier. But then it takes care of all the colors and the spacing and how you do that is actually a pretty complicated subject at the end of the day. Yeah, I was just imagining you asking exactly the same question. No. It's a bad joke. It's only funny ones. Oh, man. Okay. Well, anything else you guys want to let us know about agents or open code?
We have, we set on the podcast. It's SST slash open code. I've been pasting it in the chat. I know. I know. We'll be in the description. Okay. Even maybe in a pin comment, if you're lucky, Adam. Well, that'd be amazing. SST slash open code. I'm just starting to prepare for all the YouTube comments. They're like, wait, it's not open code AI slash open code.
That's not the one. Well, now that you said that, you've just guaranteed 90% of the comments will be the wrong link. Adam. Thanks Adam. So that's, so we, maybe we'll help you out. Maybe we'll cut that part from the final thing, but I will, I will post the links. I'll make sure the real links are there so that people can find it and test it out.
Yeah. Thanks for having us. I still have no idea how to build the agent, but I really appreciate the talk. It makes me feel better. That's okay. We're going to ask open code to build us an agent next week. Yeah. There you go. Or later. We actually could write one loop. Yeah. It'll be like, you'll just see it.
It'll be super obvious. It's the same thing as sending completion requests. It's just tool requests. That's it. Okay. And then put it in a loop until it's done. Make it easy. Yeah. Okay. Okay. Okay. Thanks, Adam. Thanks everyone for watching and listening. It's been another episode of The Standup. Hopefully you enjoyed.
Bye. Boot up the day. Bye. Bye. Bye.