# The new Claude 3.5 Sonnet, Computer Use, and Building SOTA Agents — with Erik Schluntz, Anthropic

Latent Space · 2024-11-28

<https://addtry.com/5b1e7f1a-8bc0-41ea-bdf7-0b9083d26a3f>

Anthropic's Erik Schluntz explains how Claude 3.5 Sonnet achieved state-of-the-art 49% on SWE-Bench Verified by using a minimal agent framework that gives the model full control via tools like bash and file editing, letting it self-correct without hard-coded workflows. He details the importance of tool design over prompt engineering, why XML tags work well, and how computer use reduces integration friction by letting models interact with any browser-based interface. Schluntz also shares his robotics experience, noting that while LLMs and diffusion models are promising for general-purpose robots, reliability at 99.9% and hardware variability remain major hurdles, and he expresses skepticism about self-driving as a business due to high vehicle costs versus driver-equivalent revenue.

## Questions this episode answers

### How did Anthropic's Claude 3.5 Sonnet achieve state-of-the-art on the SWE-Bench coding benchmark?

Erik Schluntz explains they used a minimal agent framework with no hard-coded workflows, just tools like bash and file editing, letting Claude iterate freely until it declares done or hits the 200K context limit. Careful tool design — forcing absolute paths, avoiding commands like Vim — and Sonnet's strong self-correction abilities led to 49% on SWE-Bench Verified, beating the prior 45% state-of-the-art.

[3:39](https://addtry.com/5b1e7f1a-8bc0-41ea-bdf7-0b9083d26a3f?t=219000)

### What is Anthropic's 'computer use' feature and why is it important for AI agents?

Erik Schluntz describes computer use as giving the model the ability to take screenshots and control mouse/keyboard, enabling it to interact with any software without API integrations. He compares it to adding a physical arm to a robot to press elevator buttons, bypassing slow API work. This drastically reduces integration friction, letting agents instantly operate web-based tools by logging into a browser, and serves as a rapid prototyping method before building dedicated APIs.

[52:14](https://addtry.com/5b1e7f1a-8bc0-41ea-bdf7-0b9083d26a3f?t=3134000)

### What does former Cobalt Robotics CTO Erik Schluntz think is the current state of AI robotics, and what are the main challenges?

Erik Schluntz sees two key AI advances: LLMs for common sense in task description, and diffusion-inspired path planning for motion control. He warns that reliability must leap from 95% to 99.9% for real-world use, akin to self-driving’s decade-long journey. Hardware variability—like a USB cable swap causing 1% camera failures—and unit economics concerns make him skeptical about near-term profitability, comparing the hype to self-driving ten years ago with demos but a long way to full deployment.

[59:03](https://addtry.com/5b1e7f1a-8bc0-41ea-bdf7-0b9083d26a3f?t=3543000)

## Key moments

- **[0:00] Intro**
  - [1:23] Erik Schluntz: 'If you had told me 10 years ago AI would write my code, I'd think that's AGI.'
  - [1:54] Q: Why did Erik Schluntz join Anthropic? A: He knew brilliant, kind people there and prioritized AI safety alignment.
- **[3:39] SWE-Bench**
  - [5:46] SWE-bench draws tasks from 12 popular open-source Python repos, pairing GitHub issues with test-verified commits.
  - [8:22] SWE-bench Verified (49% state-of-the-art) was manually filtered by OpenAI to remove impossible tasks from the original 2,000.
  - [10:58] Claude 3.5 Sonnet often delivers a minimal band-aid fix instead of a full refactor, even when a larger change is needed.
  - [13:32] A detailed prompt optimized for hard SWE-bench problems hurt performance on easy ones, Erik found via coworker Simon's experiment.
- **[15:21] Agent Runtime**
  - [15:41] Erik Schluntz attributes the 'lazy model' effect to human-like shorthand; explicit prompting can force full code generation.
  - [18:47] The SWE-bench agent had no hard-coded loop detection; it ran freely until self-completed or hit 200K context tokens.
  - [19:45] Claude 3.5 Sonnet shows 'grit' by trying failing approaches and self-correcting without dedicated loop-breaking scaffolding.
  - [21:18] Agentic search with directory listing and file-viewing tools replaced RAG/code indexers, but at high token cost.
- **[24:50] Tool Design**
  - [25:08] String replace was the most reliable file-editing method; patch formats require predicting line counts, which harms accuracy.
  - [27:10] Erik calls for 'Agency-Computer Interfaces' (ACI), designing tools with the same care as front-end UX for APIs.
  - [31:36] Real-world coding agents need internet access for research and versioning, a capability absent in SWE-bench.
- **[35:21] Multi-Agent**
- **[37:52] XML Tags**
- **[42:54] Frameworks**
  - [43:15] Q: Should engineers use agent frameworks? A: Erik warns they obfuscate prompts and encourage over-engineering; start from scratch.
- **[45:12] Turn Limits**
  - [45:12] Some SWE-bench tasks required over 100 agent turns, comparable to a human engineer's coffee-break effort.
- **[47:12] Model Mixing**
  - [48:31] Claude 3.5 Haiku scored 40.6% on SWE-bench Verified, proving even small models can tackle complex agentic tasks.
  - [51:29] Anthropic's computer use beta effectively shipped Adept's vision as a feature: Claude can now control a desktop via screenshots.
- **[51:40] Computer Use**
  - [52:14] At Cobalt Robotics, Erik added a robot arm to press elevator buttons via computer vision, bypassing 6-month API integrations.
  - [53:45] Computer use reduces integration friction: give the agent a logged-in browser and it works instantly without API engineering.
  - [59:03] Erik Schluntz says robotics today mirrors self-driving a decade ago: cool demos, but long road to reliable deployment.
- **[59:04] Robotics**
  - [1:00:12] Diffusion-inspired motion planning from Toyota Research lets robots learn end-to-end control from demonstrations.
  - [1:02:52] Reliability is robotics' weakest link: 99% accuracy means breaking one dish per 100, unacceptable for homes or factories.
  - [1:05:16] A cheaper USB cable caused intermittent thermal camera failures at Cobalt, revealing hardware's painful variability.
  - [1:09:02] Erik Schluntz vs. Waymo optimism: he questions Waymo's profitability given expensive car hardware vs. driver earnings.
- **[1:09:21] Self-Driving**
  - [1:10:29] The next agent challenge after capability is trust: agents must deliver auditable, explained outputs for multi-hour tasks.

## Speakers

- **Alessio** (host)
- **Swyx** (host)
- **Erik Schluntz** (guest)

## Topics

Coding Agents, Benchmarks, Robotics

## Mentioned

Adept (company), Anthropic (company), Bolt (company), E2B (company), Fireworks (company), Imbue (company), OpenAI (company), Physical Intelligence (company), Replit (company), Claude (product), Computer Use (product), Copilot (product), Cursor (product), Devin (product), Docker (product), Haiku (product), Opus (product), SWE-Agent (product), SWE-Bench (product), Waymo (product)

## Transcript

### Intro

**Alessio** [0:04]
Hey everyone, welcome to the Latent Space Podcast. This is Alessio, partner and CTO at Decibel Partners, and today, uh, we're in the new studio, uh, with my usual co-host, uh, Shawn from Small AI.

**Swyx** [0:15]
Hey, and today we're very blessed to have Erik Schluntz from Anthropic with us. Welcome.

**Erik Schluntz** [0:20]
Hi. Thanks very much. Uh, I'm Erik Schluntz. I'm a member of technical staff at Anthropic, uh, working on tool use, computer use, uh, and SWE-bench.

**Swyx** [0:28]
Yeah. Um, well, how did you get into just the whole AI journey? Uh, I think, um, you spent some time with SpaceX as well-

**Erik Schluntz** [0:36]
Yeah, uh, very-

**Swyx** [0:36]
... and robotics. Yeah. There's a lot of overlap between, like, the robotics people and the AI people, and maybe, like, there's some inter-interlap or interest between language models for robots right now. Maybe, maybe just a little bit of background on how you got to where you are.

**Erik Schluntz** [0:50]
Yeah, sure. Um, I was at SpaceX a long time ago, but before joining Anthropic, I was the CTO and co-founder of Cobalt Robotics. We built security and inspection robots. Uh, these are sort of five-foot-tall robots that would patrol through an office building or a warehouse looking for anything out of the ordinary.

Uh, very friendly, no tasers or anything. We would just sort of call-

**Swyx** [1:09]
Yet

**Erik Schluntz** [1:09]
... a remote operator- ... uh, if we saw anything. And so we have, we have about 100 of those out in the world, and, uh, had a team of about 100. We actually got acquired about six months ago, but I had left Cobalt about a year ago now 'cause I was starting to get a lot more excited about AI.

I had been writing a lot of my code with things like Copilot, and I was like, "Wow, this is actually really cool." Like, if you had told me 10 years ago that AI would be writing a lot of my code, I would say, "Hey, I think that's AGI."

And so I kinda realized that we, we had passed this, this level where like, wow, this is actually really useful for engineering work. That got me a lot more excited about AI and learning about large language models. So I ended up taking a sabbatical, um, and then doing a lot of sort of reading and research myself, and decided, hey, like, I wanna go be at the core of this, and joined Anthropic.

**Alessio** [1:54]
And why, why Anthropic? Did you consider other labs? Did you consider maybe some of the robotics companies, uh?

**Erik Schluntz** [2:01]
So I think at the time I was a little burnt out of robotics, and so also for the rest of this, any, any sort of negative things I say about robotics or hardware is, uh, coming from a place- ...

of burnout and, you know, I reserve my right to change, change my opinion in a few years. Yeah, you know, I looked around, but ultimately I knew a lot of people that I really trusted and I thought were incredibly smart at Anthropic, and I think that was the big deciding factor to come there.

Of like, hey, this team's amazing. They're not just brilliant, but sort of like the most nice and kind people that I know, and so I just felt like it could be a really good culture fit. And ultimately, like, I do care a lot about AI safety and making sure that...

You know, I don't wanna build something that's used for bad purposes, um, and I felt like I had a- the best chance of that was joining, uh, Anthropic.

**Alessio** [2:40]
And from the outside, these labs kinda look like huge organizations that have these, like, obscure ways to organize. How did you get... You joined Anthropic. Did you already know you were gonna work on, like, SWE-bench and some of the stuff you publish?

Or you kinda join and then you figure out, uh, where you land? I think people are always curious to, to learn more.

**Erik Schluntz** [2:57]
Yeah. I've been very happy that Anthropic is very bottoms up and sort of very sort of receptive to whatever your interests are. Um, and so I joined sort of being very transparent of like, hey, I'm most excited about code generation and AI that can actually go out and sort of touch the world or sort of help people build things.

And, you know, those weren't my initial, uh, initial projects. I also came in and said, "Hey, I wanna do the most valuable possible thing for this company and help Anthropic succeed, and, you know, like, let me find the balance of those."

So I was working on lots of things at the beginning, um, you know, function calling, tool use, uh, and then sort of as it became more and more relevant, I was like, "Oh, hey, yeah, like let's- it's time to go work on encoding agents," and sort of started looking at SWE-bench as sort of a really good benchmark, uh, for that.

### SWE-Bench

**Swyx** [3:39]
So let's get right into SWE-bench. That's one of the many claims to fame. I feel like there's just been a series of releases related with Claude 3.5 Sonnet. Around about two, three months ago, 3.5 Sonnet came out, um, and it was, it was a step ahead in terms of, uh, a lot of...

People immediately fell in love with it for coding. And then last month, uh, you released a new updated version of, of Claude Sonnet. We're not gonna talk about the, the training for that 'cause that's still confidential, but I think Anthropic's done a really good job, like, applying the model to different things.

So you, you took the lead on SWE-bench, but then also we're gonna talk a little bit about computer use later on. So yeah, just maybe just give us the context about, like, why you looked at SWE-bench Verified and y- you actually, like, came up with a whole system for building agents that, you know, would maximally use the model well.

**Erik Schluntz** [4:27]
Yeah. So, uh, I'm on a subteam called product research, and basically the idea of product research is to really understand, like, what end customers care about and want in the models, and then work to try to make that happen.

So, you know, we're not focused on sort of these more abstract general benchmarks like math problems or MMLU, um, but we really care about, like, finding the things that are really valuable and making sure the models are great at those.

And so because I had been interested in coding agents, sort of I knew that this would be a really valuable thing, and I knew there were a lot of startups and our, our customers trying to build coding agents, uh, with our models.

And so I said, "Hey, this is gonna be a really good benchmark to be able to measure that and do well on it." And I, I, you know, wasn't the first person at Anthropic to find SWE-Bench. And, you know, there were lots of people that already knew about it and were-- um, had done some internal efforts, uh, on it.

It fell to me to sort of both implement the benchmark, um, which is very tricky, and then also to sort of make sure we had an agent, and basically like a reference agent, maybe I'd call it, that could do very well on it.

Ultimately, we want to provide how we implemented that reference agent so that people can build their own agents on top of our system and get sort of the most out of it as possible. So with this blog post, uh, we released on SWE-Bench, we released the exact tools and the prompt that we gave the model, uh, to be able to do well.

**Swyx** [5:46]
For people who don't know, who, who maybe haven't dived into SWE-Bench, I think the general perception is they're like tasks that a soft-software engineer could do. I feel like that's an inaccurate description because it is basically, um, one, it's a subset of like 12 repos.

It's everything they could find that every issue with like a matching commit that could be tested, so that's not every commit.

**Erik Schluntz** [6:07]
Yeah.

**Swyx** [6:07]
And then SWE-Bench Verified is further manually filtered by OpenAI. Is that an accurate description? Anything you'd change about that?

**Erik Schluntz** [6:14]
Yeah. SWE-Bench is-- it certainly is a subset of, you know, all tasks. It's, first of all, it's only Python repos, um, so already fairly limited there, and it's just 12 of these popular open source repos. Um, and then, yes, it's only ones where there were tests that passed at the beginning and also new tests that, uh, were introduced that, uh, that test the new feature, um, that's added.

So, you know, it, it is, I think, a very limited subset of real engineering tasks, but I think it's also very valuable because it's-- even though it's a subset, it is true engineering tasks. And I think a lot of other benchmarks are really kind of these much more artificial setups of even if they're related to coding, they're more like coding interview-style questions or puzzles that I think are very different from, like, day-to-day, uh, what you end up doing.

Like, I don't know how frequently, uh, you all, like, get to use recursion- ... uh, in your day-to-day job, but I-- when I- whenever I do, it's like a treat. Uh, and I think it is-- it's kind of-- it's almost comical, and a lot of people joke about this in the industry is like how different interview questions are-

**Swyx** [7:13]
Dynamic programming.

**Erik Schluntz** [7:14]
Uh, yeah, exactly-

**Swyx** [7:15]
Like leet code

**Erik Schluntz** [7:16]
... from, from the day-to-day job. But I think the-- one of the most interesting things about SWE-Bench is that all these other benchmarks are usually just isolated puzzles, and you're starting from scratch, whereas SWE-Bench, you're starting in the context of an entire repository.

And so it adds this entirely new dimension to the problem of finding the relevant files. And, you know, this is a huge part of real engineering is, you know, it's actually, again, pretty rare that you're starting something totally greenfield.

You need to go and figure out where in a code base you're gonna make a change and understand how your work is gonna interact with the rest of the systems. And I think SWE-Bench does a really good job of, like, presenting that, that problem.

**Alessio** [7:52]
Why do we still use HumanEval? It's like ninety-two percent, I think. I don't even know if you can actually get to a hundred percent because some of the data is not actually solvable. Do you see benchmarks like that, they should just get sunsetted?

Because when you look at, like, the model releases, it's like, oh, it's like ninety-two instead of like eighty-nine, ninety percent on HumanEval versus, you know, so SWE-Bench Verified is you have forty-nine percent, right? Which is like before forty-five percent was state-of-the-art, but maybe like six months ago it was like thirty percent, something like that.

So is that a benchmark that you think is gonna replace HumanEval, or do you think they're just gonna run in parallel?

**Erik Schluntz** [8:28]
I think there's still need for sort of, uh, many different varied evals. Like, sometimes you do really care about just sort of greenfield code generation, and so I don't think that everything needs to go to sort of an agentic setup SWE-Bench.

**Alessio** [8:40]
It'd be very expensive to implement.

**Erik Schluntz** [8:41]
Yes. I-- the other thing I was gonna say is that, um, SWE-Bench is certainly hard to implement and expensive to run because each task you have to parse, you know, a lot of the re-repo to understand where to put your code, and a lot of times you take many tries of writing code, running it, editing it.

It can use a lot of tokens compared to something like HumanEval. So I think there's definitely a space for these more traditional coding evals, um, that are sort of easy to implement, quick to run, uh, and do get you some signal.

And maybe hopefully there's just sort of harder versions of HumanEval-

**Alessio** [9:13]
Right

**Erik Schluntz** [9:13]
... uh, that get created.

**Alessio** [9:14]
How do we get SWE-Bench verified to ninety-two percent? Do you think that's something- Where it's like line of sight to it or it's like-

**Erik Schluntz** [9:20]
Mm

**Alessio** [9:20]
... you know, we need a whole lot of things to go right?

**Erik Schluntz** [9:23]
Yeah, yeah. A-and actually, uh, maybe I'll start with SWE-Bench versus SWE-Bench Verified, which is I think something I missed earlier. Um, so SWE-Bench is, as we described, this big set of, of tasks that were scraped, um-

**Alessio** [9:33]
Like twelve thousand or something.

**Erik Schluntz** [9:35]
Uh, yeah, I think it's, um, it's two thousand at-- in the final set. But a lot of those, even though a human did them, they're actually impossible given the information-

**Alessio** [9:44]
Mm

**Erik Schluntz** [9:44]
... uh, that comes with a task. The most classic example of this is the test looks for a very specific error string. You know, like assert, you know, message equals error something, something, something. And unless you know that's exactly what you're looking for, there's no way the model is gonna write that exact same error message, and so the tests are gonna fail.

So SWE-Bench Verified, um, was actually made in partnership with OpenAI, and they hired humans to go review all these tasks and pick out a subset to try to remove any obstacle like this that would make the tasks impossible.

So in theory, uh, all of these tasks should be fully doable by the model, and they also had humans grade how difficult they thought the problems would be between like fifteen-- less than fifteen minutes, I think fifteen minutes to an hour, an hour to four hours, and greater than four hours.

Um, so there's kind of this interesting sort of, uh, how big the problem is as well. To get to SWE-Bench Verified to ninety percent... Actually, maybe I'll also start off with some of the remaining failures that I see, like when running our model on SWE-Bench.

I'd say the biggest cases are the model sort of operates at the wrong level of abstraction. And what I mean by that is the model puts in maybe a smaller band-aid when really the task is asking for a bigger refactor.

And some of those, you know, is the model's fault, but a lot of times if you're just seeing the, um, if you're just sort of seeing the GitHub issue, it's not exactly clear-

**Swyx** [11:07]
Mm

**Erik Schluntz** [11:07]
... like which way you should do. So even though these tasks are possible, there's still some ambiguity, uh, in how the tasks are described. That being said, I think in general, like language models frequently will produce like a, a smaller diff when possible rather than trying to do a big refactor.

I think another area sort of at least the agent we created didn't have any multimodal abilities, uh, even though our models are very good at vision. So I think that's just a, a missed opportunity. Uh, and if I read through some of the traces, there's some funny things where especially the tasks on Matplotlib, which is a graphing library-

**Swyx** [11:36]
Ooh

**Erik Schluntz** [11:36]
... the test script will like save an image, and the model will just say, "Okay, looks great" You know, without looking it, uh, looking at it. So there's certainly extra juice to squeeze there of just making sure the model really understands all the sides of the input that it's given, including multimodal.

But yeah, I think like getting to 92%, so this is something that I have not looked at but I'm very curious about. I want someone to look at like what is the union of all of the different tasks that have been solved by at least one attempt at SWE-Bench Verified.

**Swyx** [12:03]
Mm.

**Erik Schluntz** [12:04]
There's a ton of submissions to the benchmark, and so I'd be really curious to see how many of those 500 tasks at least someone has solved. And I think, you know, there's probably-

**Swyx** [12:12]
Right

**Erik Schluntz** [12:12]
... a bunch that none of the attempts have ever solved, and I think it'd be interesting to look at those and say, "Hey, is there some problem with these? Like are these impossible or are they just really hard and only a human could do them?"

**Swyx** [12:22]
Yeah, like specifically is there a category of problems that are still unreachable by any LLM a-agent?

**Erik Schluntz** [12:28]
Yeah. Yeah.

**Swyx** [12:28]
Uh-

**Erik Schluntz** [12:28]
I think there definitely are. The question is are those fairly, uh, inaccessible or are they just impossible because of the descriptions? But I think certainly some of the tasks, especially the ones that the human graders, uh, reviewed as like taking, uh, longer than four hours, extremely difficult.

I think we, we did a f- we got a few of them right, but not very many-

**Swyx** [12:48]
Mm-hmm

**Erik Schluntz** [12:48]
... um, at all in the benchmark.

**Swyx** [12:49]
And did those take less than four hours? They, they would, right?

**Erik Schluntz** [12:52]
They certainly did less than, yeah, than four hours.

**Swyx** [12:54]
Yeah. Is there a correlation of length of time with like human estimated time? You know what I mean? Or do we have sort of more of X paradox type situations where it's something super easy for a model, uh, but hard for a human?

**Erik Schluntz** [13:06]
I actually haven't done, um-

**Swyx** [13:08]
Correlation

**Erik Schluntz** [13:08]
... like done the stats on that-

**Swyx** [13:09]
Yeah

**Erik Schluntz** [13:09]
... but I think that'd be really interesting to see of like how many tokens does it take and how that, is that correlated with difficulty? What is the likelihood of success with difficulty? I think actually a really interesting thing, um, that I saw, one of my coworkers who was also working on this, uh, named Simon, he was focusing just specifically on the very hard problems, the ones that are said to take, uh, longer than four hours.

And he ended up sort of creating a much more detailed prompt than I used, and he got a higher score on the most difficult subset of problems but a lower score overall on the whole benchmark. And the prompt that I made, which is sort of much more simple and bare bones, got a higher score on the overall benchmark but lower score on the really hard problems.

And I think some of that is the, the really detailed prompt made the model sort of overcomplicate a lot of the easy problems, 'cause honestly, a lot of the SWE-Bench problems, they really do just ask for a band-aid where it's like, "Hey, this, you know, this crashes if this is none," and really all you need to do is put a check if none.

And so sometimes like trying to make the model think really deeply, like it'll, it'll think in circles and overcomplicate something, which certainly human engineers are capable of as well.

**Swyx** [14:14]
Mm.

**Erik Schluntz** [14:14]
Um, but I think there's some interesting thing of like the best prompt for hard problems might not be the best prompt for easy problems.

**Alessio** [14:19]
But how do we, how do we fix that? Are you supposed to fix it at the model level? Like h-how do I know what prompt I'm supposed to use?

**Erik Schluntz** [14:26]
Yeah, and I'll say this was a very small effect size, and so I think this is not... I think this isn't like worth obsessing over. But I would say that as people are building systems around agents, I think the more you can separate out the different kinds of work the agent needs to do, the better you can tailor a prompt for that task.

And I think that also creates a lot of like... For instance, if you were trying to make an agent that could both, you know, solve hard programming tasks and it could just like, you know, write quick test files for something that someone else had already made, the best way to do those two tasks might be very different prompts.

I see a lot of people build systems where they first sort of have a classification and then route the problem to two different prompts. Um, and that's sort of a very effective thing because, one, it makes the two different prompts much simpler and smaller, and it means you can have someone work on one of the prompts without any risk of affecting the other tasks.

So it creates like a nice separation of concerns.

**Alessio** [15:21]
Yeah. And the other model behavior thing you mentioned, they prefer to generate like shorter diffs. Why is that? Like is there a way you know, I, I think that's maybe like the the, the lazy, the lazy model question that people have is like, "Why are you not just generating the whole code instead of telling me to implement it?"

### Agent Runtime

**Swyx** [15:36]
Are you saving tokens?

**Alessio** [15:38]
Yeah, exactly. It's like-

**Swyx** [15:39]
It's like a conspiracy theory.

**Alessio** [15:40]
Yeah.

**Swyx** [15:40]
Yeah.

**Alessio** [15:40]
Yeah, yeah.

**Erik Schluntz** [15:41]
So there, there's two different things there. One is like the, I'd say maybe like doing the easier solution rather than the hard solution. And I'd say the second one, I think what you're talking about, like the lazy model, is like when the model says like dot dot dot-

**Swyx** [15:51]
Mm-hmm

**Erik Schluntz** [15:52]
... code remains the same here.

**Swyx** [15:52]
Code goes here.

**Erik Schluntz** [15:53]
Yeah.

**Swyx** [15:53]
I'm like, thanks, dude. Like

**Erik Schluntz** [15:54]
Um, I, I think, I think honestly like that just comes as like people on the internet will do stuff like that and like, dude, if you're talking to a friend and you asked them like to give you some example code, they would definitely do that.

**Swyx** [16:05]
Yeah.

**Erik Schluntz** [16:05]
They're not gonna go-

**Swyx** [16:05]
Draw a recipe, right? Yeah

**Erik Schluntz** [16:06]
... the whole thing.

**Swyx** [16:07]
Mm-hmm.

**Erik Schluntz** [16:07]
And so I think that's just a matter of like, you know, sometimes you actually do just, just want like the relevant changes. And so I think it's... This is something where a lot of times like, you know, the models aren't good at mind reading of like which one you want.

So I think that like the more explicit you can be in prompting to say, "Hey, you know, give me the entire thing, no, no elisions-

**Swyx** [16:27]
Yeah

**Erik Schluntz** [16:27]
... versus just give me the relevant changes," and that's something, you know, we want to make the models always better at following those kind of instructions.

**Swyx** [16:33]
I'll drop a couple of references here. Uh, we're recording this, like, a day after Dario, uh, Lex Fridman just dropped his five-hour pod with Dario and Amanda and, you know, the rest of the crew. And, uh, Dario actually made this interesting observation that, like, we actually don't want-- we complain about models being too chatty in text and then not chatty enough in code.

**Erik Schluntz** [16:51]
Yeah.

**Swyx** [16:51]
And so, like, getting that right is kind of a awkward bar-

**Erik Schluntz** [16:55]
Mm-hmm

**Swyx** [16:55]
... because, you know, you, you don't want it to yap i-in its responses, but then you also want it to be complete in, in code, and then sometimes not complete. Sometimes you just want it to diff, which, uh, is something that Anthropic has also released, uh, with, uh, you know, like, the, the fast edit stuff that you guys did.

And then the other thing I wanted to also double back on is the prompting stuff.

**Erik Schluntz** [17:13]
Mm-hmm.

**Swyx** [17:13]
You said, you said it was a small effect, but it was a noticeable effect in terms of, like, picking a prompt. I think we'll go into SWE-Agent i-in a, in a little bit. But I kind of reject the fact that you need to choose one prompt and, like, have your whole performance be predicated on that one prompt.

I think something that, uh, Anthropic has done really well is meta-prompting, prompting for a prompt. And so why can't you just develop a meta-prompt for, for all the other prompts? And, you know, if it's a simple task, make a simple prompt.

If it's a hard task, make a hard prompt. Obviously, I'm probably hand-waving a little bit, but I, I will definitely ask people to try the Anthropic Workbench meta-prompting system if they haven't tried it yet. I went to the build day recently at Anthropic HQ, and it's the closest I've, I've felt to an AGI, like, learning how to operate itself that...

Yeah, it's, it's, it's really magical.

**Erik Schluntz** [17:58]
Yeah, no, Claude is great at writing prompts for Claude. Um, and I think-

**Swyx** [18:00]
Right, so meta-prompting.

**Erik Schluntz** [18:01]
Yeah, yeah. The way I think about this is that humans, even, like, very smart humans, still use sort of checklists and use sort of scaffolding for themselves. Surgeons will still have checklists even though they're incredible experts. And certainly, you know, a very senior engineer needs less structure than a junior engineer, but there still is some of that structure that you wanna keep.

And so I always try to anthropomorphize the models and try to think about for a human sort of what is the equivalent, and that's sort of, you know, how I think about these things is how much instruction would you give a human with the same task?

Um, and do you-- would you need to give them a lot of instruction or, or a little bit of instruction?

**Alessio** [18:36]
Let's talk about the agent architecture maybe. So first, runtime. You let it run until it thinks it's done or it reaches 200k context window.

**Swyx** [18:44]
Mm-hmm.

**Alessio** [18:45]
How did you come up-

**Swyx** [18:46]
What's up with that?

**Alessio** [18:46]
Uh, yeah.

**Erik Schluntz** [18:47]
Yeah. Uh, I mean, this-- So I'd say that a lot of previous agent work built sort of these very hard-coded and rigid workflows where the model is sort of pushed through certain flows of steps. And I think to some extent, you know, that's needed with smaller models and models that are less smart.

But one of the things that we really wanted to explore was, like, let's really give Claude the reins here and not force Claude to do anything, but let Claude decide, you know, how it should approach the problem, what steps it should do.

And so really, you know, what we did is, like, the most extreme version of this is just give it some tools that it can call, and it's able to keep calling the tools, keep thinking, and then, yeah, keep doing that until it thinks it's done.

Uh, and that's sort of the most, the most minimal agent framework that we, we came up with, and I think that works very well. I think especially, uh, the new Sonnet 3.5 is very, very good at self-correction. It has a lot of, like, grit.

Claude will try things that fail and then try, you know, come back and sort of try different approaches, and I think that's something that you didn't see in a lot of previous models. Some of the existing agent frameworks that I looked at, they had whole systems built to try to detect loops and then see, oh, is the model doing the same thing, you know, more than three times?

Then we have to pull it out. And I think, like, the smarter the models are, the less you need that kind of extra scaffolding. So yeah, just giving the model tools and letting it keep sample and call tools until it thinks it's done was the most minimal framework that we could think of, and so that's what we did.

**Alessio** [20:18]
Yeah. So you're not pruning, like, bad paths from the context. If it tries to do something, it fails, you just burn all these tokens to bits.

**Erik Schluntz** [20:25]
Yes. And so this-

**Swyx** [20:26]
Wow

**Erik Schluntz** [20:26]
... I would say the downside of this is that this is sort of a very token expensive way to do this.

**Swyx** [20:31]
But still, it's very common to prune bad paths because models get stuck.

**Erik Schluntz** [20:34]
Yeah, but I'd say the, um, yeah, 3.5 is not getting stuck as much as previous models, and so yeah, we wanted to at least just try the most minimal thing. Uh, now I would say that, you know, there-- this is definitely an area of future research, especially if we talk about these problems that are going to take a human more than four hours.

Those might be things where we're gonna need to go prune bad paths, enable f- to let the model be able to accomplish this task within 200k tokens. So certainly, I think there's, like, future research to be done in that area.

But it's, it's not necessary to do well-

**Alessio** [21:05]
Yeah. Yeah

**Erik Schluntz** [21:05]
... on these benchmarks.

**Swyx** [21:06]
Another thing I always have, uh, questions about on context window things, there's a mini cottage industry of code indexers that have sprung up for large code bases like, like the ones in SWE-Bench. You didn't need them?

**Erik Schluntz** [21:18]
We didn't, and I think I'd say there's like two reasons for this. One is, like, SWE-Bench specific, and the other is a more general thing. The more general thing is that I think Sonnet is very good at we-- what we call agentic search, and what this basically means is letting the model decide how to search for something.

It gets the results, and then it can decide should it keep searching or is it done? Does it have everything it needs? So if you read through a lot of the traces of the SWE-Bench, the model is calling tools to view directories, list out things, view files, and it will, it will do a few of those until it, until it feels like it's found the file where the bug is, and then it will start working on that file.

And I think, like, again, this is all-- everything we did was about just giving Claude the full reins. So there's no hard-coded system. There's no search system that you're relying on getting the correct files into context. This just totally lets Claude do it.

Um-

**Swyx** [22:11]
Yeah, or embedding things into a vector database.

**Erik Schluntz** [22:13]
Yeah, exactly. Um-

**Swyx** [22:15]
Oops.

**Erik Schluntz** [22:15]
No, no, no. But again, this is very, very, uh, token expensive, and so certainly... And it also takes-

**Swyx** [22:21]
Yeah, yeah

**Erik Schluntz** [22:21]
... many, many turns.

**Swyx** [22:22]
Yeah, yeah.

**Erik Schluntz** [22:23]
And so certainly, if you wanna do something in a single turn, you need to do RAG and just pu- uh, push stuff into the first prompt.

**Alessio** [22:28]
Yeah. And just to make it clear, it's using the Bash tool, basically doing LS, looking at files, and then doing Cat-

**Swyx** [22:34]
To the following context

**Erik Schluntz** [22:35]
It can do that, but its, uh, its file editing tool also has a command in it called View that can view a directory. It's very similar to LS, um, but it just sort of has some nice sort of quality-of-life improvements.

Like it'll only do an LS sort of two directories deep so that the model doesn't get overwhelmed if it does this on a huge file. I would say actually we did more engineering of the tools than the overall prompt.

Um, but, like, the one other thing I want to say about this agentic search is that for SWE-Bench specifically, a lot of the tasks are bug reports, which means they have a stack trace in them, and that means right in that first prompt there's-

**Swyx** [23:11]
It tells you where to go

**Erik Schluntz** [23:11]
... there, it tells you where to go. Um, and so I think this is a very easy case for the model to find the right files versus if you're using this as a general coding assistant where there isn't a stack trace or you're asking it to insert a new feature.

I think there it's much harder to know which files, uh, to look at.

**Swyx** [23:27]
Mm.

**Erik Schluntz** [23:28]
And that might be an area where you would need to do more of this exhaustive search where an agentic search would take way too long.

**Swyx** [23:34]
As someone who spent the last, uh, few years in the JS world, it'll be interesting to see SWE-Bench JS because these stack traces are useless, um, because there's so much virtualization that we do. So they're very, very disconnected with, um, where the act- where the p- the code problems are actually appearing.

**Erik Schluntz** [23:51]
That makes me feel better about my limited front-end experience as I've, like, always struggled with that problem .

**Swyx** [23:55]
It's not your fault. Uh, we've, we've, uh, gotten ourself into a very, very complicated situation, and I'm not sure it's entirely needed. Uh, but, you know, if you talk to our friends at Vercel, they will say it is.

**Erik Schluntz** [24:04]
I will say, um, SWE-Bench just released SWE-Bench Multimodal, um, which I believe is either entirely JavaScript or largely JavaScript.

**Swyx** [24:12]
Oh.

**Erik Schluntz** [24:12]
And it's entirely things that have visual components to them.

**Swyx** [24:15]
Okay.

**Erik Schluntz** [24:15]
Um, so-

**Swyx** [24:15]
Are you, are you gonna tackle that?

**Erik Schluntz** [24:17]
We will see. I think it's, it's on the list and there's interest, but no, no guarantees yet.

**Swyx** [24:21]
Just as a side note, it occurs to me that every model lab, including Anthopic, but, you know, the others as well, you should have your own SWE-Bench, whatever your bug tracker tool. Like this is a general me- methodology that you can use to track progress, I guess, for accelerating yourself.

**Erik Schluntz** [24:35]
Yeah, sort of running on our own internal code base.

**Swyx** [24:37]
Yeah.

**Erik Schluntz** [24:37]
Yeah, that's a fun idea.

**Swyx** [24:38]
Since you spent so much time on the tool design, so you have this edit tool that can make changes and whatnot, any learnings from that that you wish like the AI IDEs would take in? Is there some special way to like look at files, feed them in?

### Tool Design

**Erik Schluntz** [24:51]
I would say the core of that tool is string replace, and so we did a few different experiments with like different ways to specify how to edit a file, and string replace are basically the model has to write out the existing version of the string and then a new version, and that just gets swapped in.

We found that to be the most reliable way to do these edits. Other things that we tried were like having the model directly like write a diff, having the model fully regenerate files. That one is actually the most accurate, but it takes so many tokens, and if you're in a very big file, it, it's cost prohibitive.

There's basically a lot of different ways to sort of represent the same task, and they actually have pretty big differences in terms of like model accuracy. I think Eider, they have a really good blog where they, uh, they explore some of these different methods for editing files, and they post results about them, um, which I think is interesting.

But I, I think this is like a really good example of the broader idea that like you need to iterate on tools rather than just a prompt. And I think a lot of people when they make tools for an LLM, they kind of treat it like they're just writing an API for a, a computer, and it's sort of very minimal.

It's sort of just the bare bones of what you'd need. And honestly, like it's so hard for the models to use those. I really... Again, I come back to anthropomorphizing these models. Like imagine you're a developer and you just read this for the very first time and you're trying to use it.

Like you can do so much better than like just sort of the bare API spec of what you'd, you'd often see. Like include examples in the description. Include like really detailed explanations of how things work. And I think that, again, also think about what is the easiest way for the model to represent the change that it wants to make.

For file editing as an example, writing a diff is actually... L- let's take the most extreme example. You want the model to literally write a patch file. I think patch files have at the very beginning like numbers of how many total lines change.

That means before the model has actually written the edit, it needs to decide-

**Swyx** [26:49]
Yeah

**Erik Schluntz** [26:49]
... uh, you know, how many numbers or how many lines are gonna change. Don't quote me on that. Um, I'm pretty sure... I think, I think it's something like that, but I don't know if that's exactly the diff format.

But you can certainly have formats that are much easier to express without messing up than others. And I like to think about like think about how much human effort goes into designing human interfaces for things. Like it's incredible.

This is like entirely what front end is about, is creating better interfaces to kind of do the same things, and I think that same amount of attention and effort needs to go into creating agent computer interfaces.

**Swyx** [27:20]
It's a topic we've, uh, discussed, ACI or-

**Erik Schluntz** [27:22]
Yeah

**Swyx** [27:22]
... uh, whatever that looks like.

**Erik Schluntz** [27:25]
Mm-hmm.

**Swyx** [27:25]
I would also shout out that I think, uh, you released some of these toolings as part of Computer Use as well.

**Erik Schluntz** [27:30]
Yeah.

**Swyx** [27:30]
And people really liked it. Uh, the... Yeah. It, it's, it's all open source if people wanna check it out.

**Erik Schluntz** [27:35]
Yeah.

**Swyx** [27:35]
I'm curious if there's a, there's an environment element o- of that complements the tools. So how do you... Like do you have a sandbox? Do you... Is it just Docker? 'Cause that can be slow or resource intensive. Do you have anything else, um, that you recommend?

**Erik Schluntz** [27:48]
Yeah. I don't think I can talk about sort of public details-

**Swyx** [27:51]
Sure

**Erik Schluntz** [27:51]
... or a-about private details about how we implement our sandboxing.

**Swyx** [27:54]
Okay.

**Erik Schluntz** [27:54]
Um, but obviously, you know, we need to have sort of safe, secure, and fast sandboxes for training for the models to be able to practice writing code and, and-

**Swyx** [28:02]
Yeah

**Erik Schluntz** [28:02]
... working in an environment.

**Swyx** [28:03]
I'm aware of a few startups working on agent sandboxing. E2B is a, is a close friend of ours that, uh, Alessio has led a round in, but also I think there's others where they're focusing on snapshotting memory so they can do time travel for-

**Erik Schluntz** [28:15]
Mm. Mm

**Swyx** [28:16]
... debugging computer use where you can control the mouse-

**Erik Schluntz** [28:19]
Yeah

**Swyx** [28:20]
... or keyboard or something like that. Whereas here, I think the, the kinds of tools that we offer it are very, very limited to coding agent work cases like bash, edit, you know, stuff like that.

**Erik Schluntz** [28:30]
Yeah. I think the, the computer use demo that we released sort of is an extension of that, of it. It has the same bash and edit tools, but it also has the computer tool that lets it get screenshots and move the mouse and keyboard.

Yeah, so I definitely think there's sort of more general tools there. And again, like the tools we released as part of SWE-Bench were, I'd say they're very specific for like editing files and doing bash, but at the same time, that's actually very general if you think about it.

Like anything that you would do on a command line or like editing files, you can do with those tools. And so we do want those tools to feel like any sort of computer terminal work could be done, uh, with those same tools rather than making tools that were like very specific for SWE-Bench, like run tests, uh, as its own tool, for instance.

**Swyx** [29:15]
Yeah, you had a question about test writer.

**Alessio** [29:16]
Yeah, yeah, exactly. Uh, I saw there's no test writer tool. Is it because it generates the te- the code and then you run agai- against SWE-Bench anyway, so it doesn't really need to write the test or?

**Erik Schluntz** [29:27]
Yeah. So this is, this is one of the interesting things about SWE-Bench is that the tests that the model's output is graded on are hidden from it. That's basically so that the model can't cheat by looking at the tests-

**Alessio** [29:38]
Mm-hmm

**Erik Schluntz** [29:38]
... and writing the exact solution. But I'd say typically the model, the first thing it does is it usually writes a little script to reproduce the error. Uh, and again, most SWE-Bench tasks are like, "Hey, here's a bug that I found.

I run this and I get this error." So the first thing the model does is try to reproduce that. And so it's kind of then rerunning that script as a mini test. But yeah, sometimes the model will like accidentally introduce a bug that breaks some other test and it doesn't know about that.

**Alessio** [30:06]
And should we be redesigning any tools, APIs? We kind of talked about this and like having more examples, but I'm thinking even things of like queue as a query parameter in many APIs. It's like easier for the model to like re-query than read the queue.

I'm sure it learned the queue by this point, but like is there anything you've seen like building this where it's like, hey, if I were to redesign some CLI tool, some API tool, I would like change the way structure to make it better for LLMs?

**Erik Schluntz** [30:32]
I don't think I've thought enough about that off the top of my head, but certainly like just making everything more human-friendly, like having like more detailed documentation and examples. I think examples are really good in things like descriptions.

Like so many, like just using the Linux command line, like how many time I do like dash dash help or look at the man page or something, it's like, just give me one example of like how I actually use this.

Like I don't want to go read through 100 flags. Just give me the most common example.

**Alessio** [30:58]
Yeah.

**Erik Schluntz** [30:59]
Um, and again, so, you know, things that would be useful for a human I think are also very useful for a model.

**Swyx** [31:03]
Yeah. I mean, there's one thing that you cannot give to code agents that is useful for human is this access to the internet. I wonder how to design that in because one of the issues that I also had with just the, the, the idea of a SWE-Bench is that you can't g- do follow-up questions.

**Erik Schluntz** [31:21]
Yeah.

**Swyx** [31:21]
You can't like look around for similar implementations. These are all things that I do when I try to fix code.

**Erik Schluntz** [31:27]
Yeah.

**Swyx** [31:28]
And we don't do that. It's not-- it wouldn't be fair. Like it'd be, be too easy to cheat, but then also it's kind of not being fair to these agents because they're not operating in a real world situ-situation.

Like if I had a real world agent, of course I'm giving it access to the internet because I'm not trying to pass a benchmark. I don't have a question in there, more, more just like I feel like the most obvious tool, access to the internet, is not being used.

**Erik Schluntz** [31:48]
I think that, um, that's really important for humans, but honestly, the models have so much general knowledge from pre-training that it's a l- it's like less important for them.

**Alessio** [31:57]
But like versioning, you know.

**Erik Schluntz** [31:58]
If you're working on a newer thing that was like-

**Alessio** [32:00]
Yeah

**Erik Schluntz** [32:00]
... um, that came after the knowledge cutoff, then yes, I think that's very important. I think actually this, this is like a broader problem, that there is a divergence between SWE-Bench and like what customers will actually care about who are working on a coding agent for real use.

And I think one of those there is like internet access and being able to like how do you pull in outside information? I think another one is like if you have a real coding agent, you don't want to have it start on a task and like spin its wheels for hours because you gave it a bad prompt.

You want it to come back immediately and ask follow-up questions and like really make sure it has a very detailed understanding of what to do, then go off for a few hours and do work. So I think that like real tasks are gonna be much more interactive, um, with the agent rather than this kind of like one-shot system.

**Alessio** [32:44]
Mm.

**Erik Schluntz** [32:45]
And right now there's no benchmark that, that measures that. And maybe it- I think it'd be interesting to have some benchmark that is more interactive. I don't know if you're familiar with TauBench, but it's a, it's a customer service benchmark where there's basically one LLM that's playing the user or the customer that's getting support and another LLM that's playing the, uh, support agent, and they interact and try to resolve the issue.

**Swyx** [33:08]
Yeah, we talked to the, uh, LMSys guys.

**Erik Schluntz** [33:09]
Awesome. Yep.

**Swyx** [33:10]
Um, and they also did MT-Bench-

**Erik Schluntz** [33:12]
Okay. Yeah

**Swyx** [33:12]
... for, for people listening along.

**Erik Schluntz** [33:13]
Yeah.

**Swyx** [33:13]
So maybe we need MT SWE-Bench.

**Erik Schluntz** [33:16]
Um, yeah, so maybe, you know, you could have something where like before the SWE-Bench task starts, you have like a few back and forths with kind of like the, the author-

**Swyx** [33:24]
Ah

**Erik Schluntz** [33:25]
... who can answer follow-up questions about what they want the task to do.

**Swyx** [33:28]
Yes.

**Erik Schluntz** [33:28]
And of course, you'd need to do that where it doesn't cheat and like just get the exact- ... the exact thing out of the human-

**Alessio** [33:34]
Mm

**Erik Schluntz** [33:34]
... or out of the sort of user. But I think that would be a really interesting thing to see. If you look at sort of existing agent work like, uh, Replit's coding agent, I think one of the really, uh, great UX things they do is like first having the agent create a plan and then having the human approve that plan or give feedback.

I think for agents in general, like having a planning step at the beginning, one, just having that plan will improve performance on the downstream task just because it's kind of like a bigger chain of thought. But also it's just such a better UX.

It's, it's way easier for a human to iterate on a plan with a model rather than iterating on the full task that sort of has a much slower time through each loop. If the human has approved this implementation plan, I think it makes the end result a lot more sort of auditable and trustable.

Um, so I think, I think there's a lot of things sort of outside of SWE-Bench that will be very important for real agent usage in the world.

**Swyx** [34:27]
Yeah. I will say also there's a couple comments on names that you dropped. Copilot also does the, the plan stage before it writes code. I feel like those approaches have generally been less Twitter successful because it's not prompt to code, it's prompt plan code, you know.

So there's a little bit of friction in there, but it's not much. Like it's... It actually... It, it... You get a lot for what it's worth. And I also like the, the way that Devin does it where you can sort of edit the plan as it goes along.

**Erik Schluntz** [34:52]
Yeah.

**Swyx** [34:53]
And then, uh, the other thing with Replit, we had a-- we hosted a sort of dev day pregame with Replit, and they also commented about multi-agent, so like having two agents kind of bounce off of each other. I think it's a similar approach to what you're talking about with kind of the few shot example, just as in, in the prompt of clarifying what, what the, what the agent wants.

But typically, I think this would be implemented a-as a tool calling another agent, like a sub-agent. I don't know if you explored that. Do, do you like that idea?

**Erik Schluntz** [35:21]
I haven't explored this enough, but I've definitely heard of people having good success with this-

### Multi-Agent

**Swyx** [35:25]
Yeah

**Erik Schluntz** [35:25]
... of almost like basically having a few different sort of personas of agents, even if they're all the same LLM.

**Swyx** [35:32]
Yeah.

**Erik Schluntz** [35:32]
I think this is one thing with multi-agent that a lot of people kind of get confused by is they think it has to be different models behind each thing, but really it's sort of usually-

**Swyx** [35:39]
Different prompts

**Erik Schluntz** [35:39]
... the same, the same model with different prompts. And yeah, having one-- having them have different personas to kind of bring different sort of thoughts and priorities to the table, I've seen that, uh, work very well and sort of create a much more thorough and thought-out response.

I think the downside is just that it adds a lot of complexity, and it adds a lot of extra tokens. So I think it depends what you care about. If you want a plan that's very thorough and detailed, I think it's great.

If you want a really quick just like write this function, you know, you probably don't want to do that and, and have like a bunch of different calls before it does this.

**Alessio** [36:11]
And just talking about the prompt, why are XML tags so good in Claude? I think initially people were like, "Oh, maybe you're just getting lucky with XML," but it's o-obviously you use them in your own agent prompts, so they must work.

And why is it so model specific to your family?

**Erik Schluntz** [36:27]
Yeah. I think that there's... Again, I'm not sure how much I can say, but I think there's historical reasons that internally we've preferred XML for this.

**Swyx** [36:34]
It's in the data.

**Erik Schluntz** [36:35]
Um, I think also the one broader thing I'll say is that if you look at certain kinds of outputs, there is overhead to outputting in JSON. Like if you're trying to output, uh, code in JSON, there's a lot of extra escaping-

**Alessio** [36:49]
Mm-hmm

**Erik Schluntz** [36:49]
... that needs to be done, um, and that actually hurts model performance across the board. Where versus like if you're in just a single XML tag, there's none of that sort of escaping that needs to happen. That being said, I haven't tried having it write, you know, HTML in XML, which maybe then you start running into, into weird escaping things, uh, there.

But I'm not sure. But yeah, I'd, I'd say that's some historical reasons, and there's, there's less overhead of escaping.

**Swyx** [37:13]
I use XML in other models as well, and it's just a really nice way to make sure that the thing that ends is this- is tied to the thing that starts. It's the only way to do code fences where you're pretty sure like example one start, example one end, like that is one cohesive unit.

**Alessio** [37:30]
Because the braces are nondescriptive-

**Swyx** [37:32]
Yeah, exactly

**Alessio** [37:33]
... enough. Yeah.

**Swyx** [37:33]
So, uh, that would be my simple reason. XML is good for everyone, not just Claude.

**Erik Schluntz** [37:38]
Yeah.

**Swyx** [37:38]
Claude was just the first one to popularize it, I think.

**Erik Schluntz** [37:39]
I do definitely prefer to read XML than read JSON, so yeah.

**Alessio** [37:43]
Any other details that are like maybe underappreciated? I know for example you had the absolute paths versus relative. Any other, yeah, fun nuggets like that?

### XML Tags

**Erik Schluntz** [37:52]
Yeah, no, I think that's a good, uh, sort of anecdote to mention about iterating on tools. Like I said, you know, spend time prompt engineering your tools, and don't just write the prompt, but like write the prompt or write the tool and then actually give it to the model and like read a bunch of transcripts about how the model tries to use the tool.

And I think you will find, like by doing that, you will find areas where the model misunderstands a tool or makes mistakes, and then basically change the tool to make it foolproof. There's this Japanese te- uh, term, poka-yoke, about like making tools mistake-proof.

You know, the classic idea is you have like-- you can have like a plug that can fit either way and that's dangerous, or you can make it asymmetric so that like it can't fit this way. It has to go like this, and like that's a better tool because you can't use it the wrong way.

So for this example of like, uh, absolute paths, one of the things that we saw while testing these tools is, oh, if the model has like, you know, done CD and moved to a different directory, it would often get confused when trying to use the tool because it's like now in a different directory, and so the paths aren't lining up.

So we said, "Oh, well, like let's just force the tool to always require an absolute path," and then, you know, that's easy for the model to understand. It, it knows sort of where it is. It knows where the files are.

And then once we have it always giving absolute paths, it never messes up even like no matter where it is because it just... If you're using an absolute path, doesn't matter where you are. So like iterations like that, you know, let us make the tool foolproof for the model.

I'd say there's other categories of things where we see, oh, if the model, you know, opens Vim, like, you know, it's never gonna return, and so the tool is just-

**Swyx** [39:28]
It gets... Did it get stuck?

**Erik Schluntz** [39:30]
Yeah.

**Swyx** [39:30]
Yeah, yeah.

**Alessio** [39:30]
Get out of Vim.

**Swyx** [39:31]
What?

**Erik Schluntz** [39:32]
Yeah. Uh, it... Well, because the tool is like it's just text in, text out. It's not interactive.

**Alessio** [39:36]
No.

**Erik Schluntz** [39:36]
So if the... It's not like the model doesn't know how to get out of Vim. It's that the way that the tool is like hooked up to the computer-

**Swyx** [39:43]
Vim is a black hole

**Erik Schluntz** [39:43]
... is not interactive.

**Swyx** [39:44]
Mm.

**Erik Schluntz** [39:44]
Yes. I mean, there, there's, there is the meme of no one knows how to get out of Vim. You know, basically we just added instructions in the, the tool of like, hey, don't launch commands- ... that don't return.

**Alessio** [39:54]
Vim is bad.

**Erik Schluntz** [39:54]
Like, yeah, like don't launch Vim. Don't launch whatever. If you do need to do something, you know, put an ampersand after it to launch it in the background. And so like, uh, just, you know, putting kind of, uh, instructions like that just right in the description for the tool really helps the model.

And I think like that's an underutilized space of prompt engineering where like people might try to do that in the overall prompt. But just put that in the tool itself so the model knows that it's like for this tool-

**Swyx** [40:19]
Yeah

**Erik Schluntz** [40:19]
... this is, this is what's relevant.

**Swyx** [40:20]
You said you worked on the function calling and tool use before you actually started the SWE-Bench work, right? Was there any surprises? Because you basically ca- became from-- went from creator of that API to user of that API.

Any surprises or changes you would make now that you have extensively dogfooded in a s-s- you know, state-of-the-art agent? I want us to make like a maybe like a little bit less verbose SDK. I think some way-- Like right now it, it just takes, uh...

I think we sort of force people to do the best practices of writing out sort of these full, full JSON schemas, but it would be really nice if you could just pass in a Python function as a tool.

Um, I think that could be something nice.

**Erik Schluntz** [40:58]
Yeah. I think that there's a lot of like-

**Swyx** [40:59]
Pythonic-

**Erik Schluntz** [41:00]
There's helper libraries

**Swyx** [41:00]
... instructor, you know. I don't know if there-

**Erik Schluntz** [41:03]
Mm-hmm

**Swyx** [41:03]
... if there's anyone else that is specializing for Anthropic, maybe Jeremy Howard's and Simon Willison's stuff. Like they, they all, they all have Claude-specific stuff that they are working on.

**Erik Schluntz** [41:12]
Claudette.

**Swyx** [41:13]
Claudette, exactly. I also wanted to spend a little bit of time with SWE-Agent. It seems like a very general framework. Like is there a reason you picked it apart from it's the same authors as SWE-Bench, or?

**Erik Schluntz** [41:22]
The main thing we wanted to go with was it was the same authors-

**Swyx** [41:25]
Yeah

**Erik Schluntz** [41:25]
... as SWE-Bench. So it just felt sort of like the safest, most neutral option. And, and it was, you know, very high quality. It was very easy to, to modify, uh, to work with. It- I would say it also actually, their underlying framework is sort of this, um, it's like, you know, think, act, observe, that they-

**Swyx** [41:42]
Mm-hmm

**Erik Schluntz** [41:42]
... they kinda go through this loop, which is like a little bit more hard-coded than what we wanted to do, but it's still very close. That's still very general. So it felt like a good match as sort of the starting point, uh, for our agent.

And we'd already sort of worked with the, and talked with the SWE-Bench people directly, so it felt nice to just have, uh, you know, we already know the authors. This will be easy-

**Swyx** [42:00]
Yeah

**Erik Schluntz** [42:00]
... easy to work with.

**Swyx** [42:01]
I'll share a little bit of like this all seems disconnected, but once you figure out the people and where they go to school, it all makes sense. So they all-- It's all Princeton.

**Erik Schluntz** [42:10]
Yeah, the SWE-Bench and SWE-Agent. It's, it's a group out of Princeton.

**Swyx** [42:13]
Yeah.

**Erik Schluntz** [42:13]
Yeah.

**Swyx** [42:13]
And we had Shunyu on the pod, uh, and he came up with the REACT paradigm, and, and that's like think, act, observe. Like that, that's all REACT. So they're all friends.

**Erik Schluntz** [42:21]
Yep. Yeah, exactly. And you know, our-- Uh, if you actually read our traces of our submission, you can actually see like think, act, observe like in our logs and like-

**Swyx** [42:30]
Yeah

**Erik Schluntz** [42:30]
... we just didn't even like change the printing code. Like that's, uh, um, so it's, it's not actually-- It's like doing still function calls under the, under the hood, and the model can do sort of multiple function calls in a row without thinking in between if it wants to.

But yeah, so a lot of similarities and a lot of things we inherited from SWE-Agent just as a starting point for the framework. Yeah. Any thoughts about other agent frameworks? I think there's, you know, the whole gamut from very simple to like very complex.

**Swyx** [42:54]
Autogen, TrueAI, LangGraph.

### Frameworks

**Erik Schluntz** [42:56]
Yeah, yeah. I think, um, I haven't explored a lot of them in detail. I would say with agent frameworks in general, they can certainly save you some like boilerplate, but I think there's actually this like downside of making agents too easy, where you end up very quickly like building a much more complex system than you need.

Mm. And suddenly, you know, instead of having one prompt, you have five agents that are talking to each other and doing a dialogue, and it's like because the framework made that 10 lines to do, you end up building something that's way too complex.

So I think I would actually caution people to like try to start without these frameworks if you can because you'll be closer to the raw prompts and be able to sort of directly understand, uh, what's going on. I think a lot of times these frameworks also, by trying to make everything feel really magical, you end up sort of really hiding what the actual prompt and output of the model is, and that can make it much harder to debug.

So certainly these things have a place, and I think they do really help at getting rid of boilerplate, but they come with this cost of obfuscating what's really happening and making it too easy to very quickly add a lot of complexity.

Um, so yeah, I would recommend people to like try it from scratch, and it's like not that bad. Would you rather have like a framework of tools, you know? Do you almost see like, hey, like it's maybe easier to get tools that are already well curated, like the ones that you built, you know?

If I had an easy way to get the, uh, the best tool from you and like you maintain the definition or... Yeah, any thoughts on how you wanna formalize tool sharing? Yeah. I think that's something that we're certainly interested in exploring, and I think there, you know, is space for sort of these general tools that will be very broadly applicable.

But at the same time, most people that are building on these, they do have, you know, much more specific things that they're trying to do. But, you know, I think that might be useful for hobbyists and demos, but the ultimate end applications are gonna be bespoke.

And so we, we just wanna make sure that the model's great at any tool, um, that it uses. But certainly something we're exploring. So everything bespoke, no frameworks, no anything. Just, just build- For now, for now. Just, yeah, yeah, yeah.

I would say that like the best thing I've seen- Yeah ... is people building up from like build some good util functions, and then you can use those as building blocks. Yeah. Yeah. Yeah, I have a utils folder for like all these scripts.

My framework is like def call Anthropic, and then I just put all the defaults- Yep, exactly ... I don't need, I don't need to- There's a startup hidden in every utils folder, you know? No, totally. Like if you use it enough, like it's a startup, you know?

### Turn Limits

**Erik Schluntz** [45:18]
Like at some point. And I'm kinda curious, is there, is there a maximum length of turns, uh, that, that, that it took? Like what was the longest run? Um, I actually don't... I mean, we had-- We-- It had basically infinite turns until it ran into 200K context.

I, I, I should have looked this up. I don't know. And so for some of those failed cases where it eventually ran out of context, I mean, it, it was over 100 turns. I'm trying to remember like the longest successful run, but I think it was definitely over 100 turns that some of the times- Which is not that much.

It's a coffee break. Yeah. Yeah. Um, but certainly, you know, these things can be a lot of turns, and I think that's because some of these things are, are really hard, where it's gonna take, you know, many tries to do it.

Uh, and if you think about like think about a task that takes a human four hours to do. Like think about how many different like files you read and like times you edit a file in four hours. Like that's a lot more than 100.

Yeah. How many times you open Twitter- Yeah ... because you get distracted. But if you had a lot more compute, what's kinda like the return on the extra compute now? Yeah. So like, you know, if you had thousands of turns or like whatever, like how much better would it get?

Yeah. This I don't know, and I think this is, um, I think sort of one of the open areas of research in general with agents is memory and sort of how do you have something that can do work beyond, beyond its, uh, context length where you're just purely appending.

So you mentioned earlier things like pruning bad paths. I think there's a lot of interesting work around there of can you just roll back but summarize, "Hey- Mm-hmm ... don't go down this path," and things like that. There be dragons.

Yeah. Uh, I think that's very interesting, uh, that you could have something that, that uses way more tokens without ever ... using at a time more than 200K. So I think that's very interesting. I think the biggest thing is, like, can you make the model sort of losslessly summarize what it's learned from trying different approaches and bring things back?

Um, I think that's sort of the big challenge. What about different models? So you have Haiku, which is, like, you know, cheaper. So you're like, well, what if I have a Haiku to do a lot of these smaller things- Yeah ...

### Model Mixing

**Erik Schluntz** [47:19]
and then put it back up? I think Cursor might have said that they actually have a separate model for file editing. I'm trying to remember. I think they were on a, maybe the Lex Fridman podcast where they said, like, they have a bigger model, like write what the code should be, and then a different model, like apply it.

So I think there's a lot of interesting room for stuff like that. Yeah, fast apply. Um- We actually did a pod with Fireworks that, uh- It's awesome ... they, they worked with on. It's speculative decoding. Yeah. But I think there's also really interesting things about, like, you know, paring down input tokens as well, especially sometimes the model's trying to read, like, a 10,000-line file.

Like, that's a lot of tokens, and, you know, most of it is actually not gonna be relevant. I think it'd be really interesting to, like, delegate that to Haiku. Haiku read this file and just pull out the most relevant, uh, functions, and then, uh, you know, Sonnet reads just those, and you save 90% on tokens.

Um, I think there's a lot of really interesting room for things like that. And again, we were just trying to do sort of the simplest, most minimal thing and show that it works. I'm really hoping that people, sort of the agent community, builds things like that on top of our models.

That's again why we release these tools. You know, we're not gonna go and do lots more submissions to SWE-Bench and try to, try to prompt engineer this and build a bigger system. We want people to, like the ecosystem, to do that on top of our models.

But yeah, so I think that's a really interesting one. It turns out, I think you did do 3.5 Haiku with your tools, and it scored a 40.6. Yes. Yeah, so it did- Okay ... it did very well. It, it itself is actually very smart, which is great.

Um, but we haven't done any experiments with this, like a combination of the two models. Yeah. Um, but yeah, I think that's one of the exciting things is that, um, how well Haiku 3.5 did on SWE-Bench shows that sort of even our smallest, fastest model is very good at sort of thinking agentically and working on hard problems.

Like, it's not just sort of for writing simple text anymore. And I know you're not gonna talk about it, but, like, Sonnet is not even supposed to be the best model, you know? Like Opus, it's kinda like we left it at three- ...

back in the corner. At, at some point I'm sure the new Opus will come out, and if you had Opus plus Sonnet, that sounds- Yeah ... very, very good. There's a run with SWE-Agent plus Opus, but that's the official SWE-Bench guys doing it.

Yeah, that was the older, you know, 3.0. You didn't do yours. Yeah. Okay. Did you want to, or did you just- Or what, sorry? I mean, you could just change the model name. I think, um- I think we didn't submit it, but I think we included it in our model card.

Okay. We included the score as a comparison. Yeah. Um, yeah. And Sonnet and Haiku actually, I think- Still outperformed ... the new ones both- Yeah ... uh, they both outperformed the original Opus. Yeah, I did, I did see that.

Yeah, it's a little bit hard to find. Yeah. Um, but- Yeah, it, it's not an exciting score, so we didn't feel like the need to submit it- Yeah ... to- Yeah ... the benchmark. We can cut over to computer use if we're okay with, like, moving on to topics- Yeah, I think- ...

unless you have anything else. I think we're good. I think, uh, I'm trying to think if there's, like, anything else SWE-Bench related. It doesn't have to be also just, like, specifically SWE-Bench- Yeah ... but just your thoughts on building agents.

'Cause you are one of the few people that have, you know, reached this leaderboard on building a coding agent. Like there's-- this is the state-of-the-art. It's surprisingly, like, not that hard to reach, you know, given with some good principles, right?

But, like, there's obviously a ton of low-hanging fruit that we covered. Just, so just your thoughts on, like, if you were to build a coding agent startup, like maybe, like what next? I think the, the really interesting question for me, for all the startups out there is, like, this kind of divergence between the benchmarks and, like, what real customers will want.

So I, I'm curious, like, maybe the next time you have a coding agent startup on the podcast, you should ask them that. Like, what are the differences that they're starting to make? Tomorrow. Oh, perfect. Perfect.

**Alessio** [50:40]
Yeah.

**Erik Schluntz** [50:41]
Yeah. I, I'm actually very curious what they will see. 'Cause I also have seen... I feel like it's, like, slowed down a little bit, but I don't see the startups submitting to SWE-Bench that much anymore. 'Cause of the traces.

The traces. Yeah, okay. Uh, so we had Cosine on. Uh, they had a, like, a, like a 50-something on Full- Mm-hmm ... on SWE-Bench Full, which is the hardest one, and they were rejected because they didn't want to submit their traces.

Yep. IP, you know? Yeah. That makes sense. That makes sense. We actually tomorrow we're talking to Bolt, which is a Claude customer. You, you, you, you guys actually published a case study with them. I assume you weren't involved with, with that, but, um, they were very happy with Claude.

Cool. One of the biggest launches of the year.

**Alessio** [51:19]
Yeah, yeah, totally.

**Erik Schluntz** [51:20]
We actually happen to be sitting in Adept's former office. My take on this is Anthropic shipped Adept as a feature or as, as like an open source demo. It's still a beta feature. Yeah. It's still a beta feature, but, but yes.

What was it like when you, when you tried it for the first time? Was it, was it obvious that Claude had reached that stage where you could do computer use? It was somewhat of a surprise to me. Like, I think I actually, I had been on vacation, and I came back, and everyone's like, "Computer use works."

### Computer Use

**Erik Schluntz** [51:45]
Um, and so it was kind of this very exciting moment. I mean, after the first just like, you know, go to Google, I think I tried to have it play Minecraft or something, and it actually, like installed and, like opened Minecraft, and I was like, "Wow, this is pretty cool."

So I was like, wow, yeah, this thing can actually use a computer. Uh, and certainly again, it, it is still beta. You know, there's certain things that it's, it's not very good at yet. But I'm, I'm really excited, I think, most broadly, not just for like new things that weren't possible before, but as a much lower friction way to implement tool use.

One anecdote from my days at Cobalt Robotics, we wanted our robots to be able to ride elevators to go between floors and fully cover a building. The first way that we did this was doing API integrations with the elevator companies, and some of them actually had APIs.

We could send a request, and it would move the elevator. Each new company we did took like six months to do- ... 'cause they were, they were very slow. They didn't really care.

**Alessio** [52:39]
Right. We're an elevator.

**Erik Schluntz** [52:40]
Even-

**Alessio** [52:40]
It's not an API.

**Erik Schluntz** [52:41]
Yeah. Yeah, even installing, like once we had it with a company, they would have to like literally go install an API box on the elevator that we wanted to use, and that would sometimes, sometimes take six months. So very slow.

And eventually we were like, okay, this is, this is getting, like slowing down all of our customer deployments. And I was like, what if we just add an arm to the robot? And I added this little arm that could- Literally go and press the elevator buttons, and we use computer vision to do this.

And we could deploy that in a single day, uh, and have the robot being able to use the elevators. At the same time, it was slower than the API. It wasn't quite as reliable. You know, sometimes it would miss, and it would have to try to press it again.

But it would get there, but it was slower and a little bit less reliable. And I kinda see this as like an analogy to computer use of like anything you can do with computer use today, you could probably write tool use and like integrate it with APIs.

It's up to the language model. But that's gonna take a bunch of software engineering to write those integrations. You have to do all this stuff. With computer use, just give the thing a browser that's, that's logged into what you wanna integrate with, and it's gonna work immediately.

And I see that like reduction in friction as being incredibly exciting of like imagine like a customer support team where, okay, hey, you got this customer support bot, but you need to go integrate it with all these things, and you don't have any engineers on your customer support team.

But if you can just give the thing a browser that's logged into your systems that you need it to have access to, now suddenly in one day, you could be up and rolling with a fully integrated customer service bot that could go do all the actions you care about.

So I think that's the most exciting thing for me about computer use is like reducing that friction of integrations to almost zero.

**Alessio** [54:19]
Or farming on World of Warcraft.

**Erik Schluntz** [54:22]
Yes. Or, or that.

**Alessio** [54:22]
Just for computer use.

**Erik Schluntz** [54:24]
Yeah.

**Alessio** [54:24]
Very, very high-value use cases.

**Erik Schluntz** [54:26]
Yeah. I always say about this is, you know, this is like the oldest question in robotics or self-driving, which is, you know, do you drive by vision or you-- or do you have special tools? And vision is the universal tool to, to claim all tools.

There's trade-offs, but like there's situations in which that will, that will come. But, you know, this week's podcast, the one, the one that we just put out, had Stan Polew from, from Dust saying that he doesn't see a future where it's like the significant workhorse.

I think there could be a separation between maybe like the, the high-volume use cases you want APIs, and then the long tail you want computer use. I totally agree. Right? Yeah. Or you'll start-- you'll prototype something with computer use and then, hey, this is working, like customers have adopted this feature.

Okay, like let's go turn it into an API, and it'll be faster and, and use less tokens. Yeah. I'd be interested to see a computer use agent replace itself by figuring- Mm ... out the API and then just dropping out of the equ-equation altogether, you know?

Yeah. That sounds- It'd be great ... that's really fun, actually. If I was running an RPA company, like you would have the RPA scripting. RPA for people listening is robotic process automation, where you would script things that like always show up in sequence, so you don't have an LLM in the loop.

And so basically, what you need to do is train an LLM to code that script, and then you can, you can sort of naturally hand off from computer use to non-computer use or- Yeah. Or, or have some way to turn Claude's actions of computer use into a saved script- Yeah, yeah ...

that you can then run repeatedly. Yeah. It'd be interesting to record that.

**Alessio** [55:49]
Why did you decide to not ship any like sandbox harness for computer use? It's kinda like, "Hey, peace. Run at your own risk."

**Erik Schluntz** [55:57]
It's Docker, right?

**Alessio** [55:58]
Not even-

**Erik Schluntz** [55:58]
No, no, we- Well, yeah, but- ... we first launched it with a, I think a VM or Docker- Yeah ... a Dockerized system.

**Alessio** [56:02]
But it's not for your actual computer, right?

**Erik Schluntz** [56:05]
Yeah.

**Alessio** [56:05]
Like the Docker instance is like runs in the Docker.

**Erik Schluntz** [56:08]
Yeah.

**Alessio** [56:08]
It's not for-

**Erik Schluntz** [56:09]
Yeah, it runs its own browser.

**Alessio** [56:10]
Yeah.

**Erik Schluntz** [56:10]
I think, um, I mean, the main reason for that is one is sort of security. You know, we don't want... You know, the model can do anything.

**Alessio** [56:16]
Right.

**Erik Schluntz** [56:17]
Uh, so we wanted to give it a sandbox, not, not have people do their own computer, at least sort of for our default experience. We really care about providing a nice sort of making the default s-safe, I think is the, is the best way for us to do it.

And I mean, very quickly, people made modifications to let you run it on your own desktop. Uh, and that's fine. Someone else can do that, but we don't want that to be the official Anthropic- Yeah ... thing to run.

I would say also like from a product perspective right now, because this is sort of still in beta, I think a lot of the most useful use cases are like a sandbox is actually what you want. You want something where, hey, any-- it can't mess up anything in here.

It only has what I, what I gave it. Also, if it's using your computer, you know, you can't use your computer at the same time. Mm. I think you actually like want it to have its own screen. It's like you and a person pair programming, but only on- Oh, yeah ...

one laptop versus you have two laptops. Everyone should totally have a side laptop where computer use-- Claude is just doing his thing- Yeah, yeah ... and you just, you're just talking to it. I think it's just a better experience.

Yeah, yeah. Yeah. Unless there's something like very explicit you want it to do for you on your own computer. It becomes like you're sort of shelling into a remote machine and, uh, you know, maybe checking in on it every now and then.

Like I have fond memories of-- half our audience is gonna be too young to remember this, but Citrix- Mm ... like desktop experience. Like you would sort of you could- Sorry. ... you could sort of remote into a, a, a machine that someone else was operating.

Um, and for a long time, that would be how you did like enterprise, uh, computing.

**Alessio** [57:38]
TeamViewer.

**Erik Schluntz** [57:40]
Yeah. Yeah. It's coming back. Any other implications on computer use? You know, is it a fun demo, or is it like the future of Anthropic? I'm very excited about it. I think that like there's a lot of sort of very repetitive work that like computer use will be great for.

I think I've seen some examples of people build like coding agents that then also like test the front end that they made. Oh. Uh, so I think it's very cool to like use computer use to be able to close the loop on a lot of things- Mm ...

that right now just a terminal-based agent can't do. Um, so I think that's- Mm ... that's very exciting. It's kind of like end-to-end testing. Exactly. Yeah. Yeah, yeah. The end sort of front end and web testing is something I'm very excited about.

Yeah. I've seen Amanda also talking-- uh, this would be Amanda Askell, the head of Claude character. She goes on a lunch break, and it generates, um, you know, research ideas for her. Giving it a name like computer use is very practical.

It's like you're supposed to do things. But maybe sometimes it's not about doing things, it's about thinking, and thinking-- in the process of thinking, you're using the computer. Mm-hmm. In the same way that, you know, solving SWE-Bench, like you, you shou- you, you shouldn't be allowed to use the internet, or you should be allowed to use a computer to, to solve it and use your vision and use whatever.

Like we're, we're just sort of shackling it with all these restrictions just 'cause we wanna play nice for a benchmark. But really, you know, a full AI wish will be able to do all these things. Mm. To think.

Yeah. We'll definitely be able to- To reason ... to Google and search for things- Yeah ... and yeah, pull down inspiration.

**Alessio** [58:59]
Can we just do a, before we wrap, a robotics corner?

**Erik Schluntz** [59:02]
Oh, yeah, yeah.

**Alessio** [59:03]
People, people are always curious, especially with somebody that is not trying to hype their own company. What's the state of AI robotics? Under-hyped? Over-hyped?

### Robotics

**Erik Schluntz** [59:11]
Yeah. And I'll say, like, these are, these are my opinions, not Anthropic's. Um, and again, coming from a place of a burned-out robotics founder- ... uh, so take everything with a, with a grain of salt. I would say on the positives, like, there is really sort of incredible progress that's happened in the last five years that I think will be a big unlock for robotics.

The first is just general purpose language models. I mean, there was an old saying in robotics that if, if to fully describe your task is harder than to just do the task, you can never automate it 'cause, like, it's gonna take more effort to even tell the robot how to do this thing than to me just do it itself.

**Alessio** [59:44]
Mm.

**Erik Schluntz** [59:44]
LLM solved that. I no longer need to go exhaustively program in every little thing I could do. The thing just has common sense-

**Alessio** [59:51]
Wow

**Erik Schluntz** [59:51]
... and it's gonna know how do I make a Reuben sandwich. I'm not gonna have to go program that in.

**Alessio** [59:56]
Yeah.

**Erik Schluntz** [59:56]
Whereas before, like, the idea of even, like, a cooking thing, it's like oh, God, like, we're gonna have the team of engineers that are hard coding recipes for the long tail of anything you... Yeah, be a disaster. So I think that's one thing is that bringing common sense really is, like, solves this huge problem describing tasks.

The second big innovation has been diffusion models for path planning. A lot of this work came out of, uh, Toyota Research. There's a lot of startups now that are working on this, like Physical Intelligence, Pi, um, Chelsea Finn's startup out of Stanford.

And the basic idea here is, is using a little bit of the, um, I'd say maybe more inspiration from diffusion rather than diffusion models themselves, but they're a way to basically learn an end-to-end sort of motion control. Whereas previously, all of robotics motion control was sort of very hard-coded.

You either... You know, you're programming in explicit motions, or you're programming in an explicit goal and using an optimization library to find the shortest path to it. This is now something where you just give it a bunch of demonstrations and again, just like d- using learning, it's basically like learning from these examples h- what does it mean to go pick up a cup?

And doing these in a way just like diffusion models where they are, uh, somewhat conditioned by text, you can have it, the same model learn many different tasks. And then the, the hope is that these start to generalize, that if you've trained it on picking up coffee cups and picking up books, then when I say, "Pick up the backpack," it knows how to do that, too, uh, even though you've never trained it on that.

That's kind of the Holy Grail here is that you train it on 500 different tasks, and then that's enough to really get it to generalize to do anything you would need. I think that's, like, still a big TBD, and these people are working, have, like, measured some degree of generalization.

But at, at the end of the day, it's also like LLMs. Like, you know, do you really care about the thing being able to do something that no one has-

**Alessio** [1:01:50]
Right. Yeah

**Erik Schluntz** [1:01:50]
... ever shown it in training data? People, for like a home robot, there's gonna be, like, 100 things that people really want it to do, and you can just make sure it has good training for those things. What you do care about then is, like, generalization within a task of, "Oh, I've never seen this particular coffee mug before.

Can I still pick it up?" And those, the models do seem very good at. So these kind of are the two big things that are going for robotics right now is LLMs for common sense and diffusion-inspired path planning algorithms.

I think this is very promising, but I think there's a lot of hype and I think where we are right now is where self-driving cars were 10 years ago. I think we have very cool demos that work. I mean, 10 years ago you had videos of people-

**Alessio** [1:02:32]
They're driving

**Erik Schluntz** [1:02:32]
... driving a car on the highway-

**Alessio** [1:02:33]
Yeah

**Erik Schluntz** [1:02:33]
... driving a car, you know, on a street-

**Alessio** [1:02:36]
Mm

**Erik Schluntz** [1:02:36]
... with a safety driver. But it's really taken a long time to go from there to, I took a Waymo here today. Um, and even then, like Waymo is only in SF and a few other cities, and I think, uh, like it takes a long time for these things to actually, like, get everywhere and to get all the edge cases covered.

I think that for robotics, the limiting factor is gonna be reliability, that these models are really good at doing these demos of, like, doing laundry or doing dishes. If they only work 99% of the time, like that sounds good, but that's actually really annoying.

Like, humans are really good at these tasks. Like imagine if like one out of every 100 dishes it washed, it breaks. Like, you would not want that robot in your house, or you certainly wouldn't want that in your factory-

**Alessio** [1:03:17]
Mm-hmm

**Erik Schluntz** [1:03:17]
... if one of every 100 boxes that it moves, it drops and breaks things inside it. So I think for these things to really be useful, they're gonna have to hit a very, very high level of reliability, just like self-driving cars, and I don't know how hard it's gonna be for these models to move from like the 95% reliability to 99.9.

Um, I think that's gonna be the big thing. And I think also, like I'm a little skeptical of how good the unit economics of these things will be. These robots are gonna be very expensive to build. And if you're just trying to replace labor, like a one-for-one purchase, uh, it kinda sets an upper cap about how much-

**Alessio** [1:03:57]
Mm

**Erik Schluntz** [1:03:57]
... you can charge. And so, you know, it, it's, it seems like it's not that great a business. I'm also worried about that for the self-driving car industry.

**Alessio** [1:04:04]
Do you see most of the applications actually taking some of the older, especially manufacturing machinery, which is like it needs to be like very precise. Even if it's off by just a few millimeters, it can screw up the whole thing and be able to adjust at the edge.

Or do you think like the net new use cases may be like the more interesting?

**Erik Schluntz** [1:04:23]
I think it'd be very hard to replace a lot of those traditional manufacturing robots because everything relies on that precision.

**Alessio** [1:04:30]
Oh.

**Erik Schluntz** [1:04:30]
If you have a model that can, again, only get there 99% of the time, you don't want 1% of your cars to have the weld in the wrong spot. Like, that's gonna be a disaster.

**Alessio** [1:04:38]
Yeah.

**Erik Schluntz** [1:04:39]
Um, and a lot of manufacturing is all about getting rid of as much sort of, uh, variance and uncertainty as possible.

**Alessio** [1:04:46]
Yeah. And what about the hardware? A lot of my friends that work in robotics, one of their big issue is like sometimes you just have a servo that fails-

**Erik Schluntz** [1:04:53]
Yeah

**Alessio** [1:04:53]
... and then you gotta fa- and it takes a bunch of time to like fix that.

**Erik Schluntz** [1:04:56]
Yeah.

**Alessio** [1:04:56]
Is that holding back things-

**Erik Schluntz** [1:04:57]
Oh, yeah

**Alessio** [1:04:57]
... or is the software still anyway not there yet?

**Erik Schluntz** [1:04:59]
I, I think both. I think there's, there's been a lot more progress in the software in the last few years, and I think a lot of the humanoid robot companies now are really trying to build amazing hardware. Hardware is just so hard.

Um, it's something where-

**Alessio** [1:05:10]
Classic

**Erik Schluntz** [1:05:11]
... you know, you build your first robot and it works. You know, great. Then you build 10 of them, five of them work-

**Swyx** [1:05:16]
Yeah

**Erik Schluntz** [1:05:16]
... three of them work half the time, two of them don't work, and you built them all the same and you don't know why. And it's just like the real world has, like, this level of detail and differences that software doesn't have.

Like, imagine if every for loop you wrote, some of them just didn't work, some of them were slower than others. Like how do you deal with that? Like, imagine if every binary that you ship to a customer, each of those for loops was a little bit differently- was a little different.

**Swyx** [1:05:40]
Hmm.

**Erik Schluntz** [1:05:40]
It becomes just so hard to scale and sort of maintain quality, uh, of these things, and I think that's like, that's what makes hardware really hard is not building one of something, but repeatably building something-

**Swyx** [1:05:50]
Yeah

**Erik Schluntz** [1:05:50]
... and making it work reliably. Where, again, like you'll, you'll buy a batch of 100 motors and each of those motors will behave a little bit differently to the same input command.

**Swyx** [1:06:00]
This is your lived experience at Cobalt?

**Erik Schluntz** [1:06:01]
Yeah. And robotics is all about how do you build something that's robust despite these differences.

**Swyx** [1:06:06]
We can get the tolerance of motors down to-

**Erik Schluntz** [1:06:08]
It, it's just everything. You know, you'll have, um- Oh, my God.

**Alessio** [1:06:12]
It's actually everything that-

**Erik Schluntz** [1:06:13]
Yeah. No, I mean, one of, one of my horror stories was that at Cobalt, this was many years ago, we had, we had a thermal camera on the robot, um, that had a USB connection to the computer inside, which is, first of all, is a big mistake.

You're not supposed to use a USB. It is not a reliable protocol. It's designed that if there is mistakes, the user can just unplug it and plug it back in.

**Swyx** [1:06:32]
I see.

**Erik Schluntz** [1:06:32]
Um, and so typically things that are USB, they're not designed to the same level-

**Swyx** [1:06:37]
Yeah

**Erik Schluntz** [1:06:37]
... of like very high reliability-

**Swyx** [1:06:38]
That's good

**Erik Schluntz** [1:06:39]
... you need. But again, because they'd assume someone will just unplug it and replug it back in.

**Swyx** [1:06:42]
You just say, you just say someone sometime.

**Erik Schluntz** [1:06:44]
I, I heard this too, and I didn't listen to it. I really wish I had before.

**Swyx** [1:06:47]
Okay.

**Erik Schluntz** [1:06:47]
Anyway, at a certain point, a bunch of these thermal cameras started failing, and like we couldn't figure out why. And I asked everyone on the team, like, "Hey, what's changed? Like, did the software change around this? No. Did the hardware design change around this?

No." And I was like investigating all this stuff, like looking at like kernel logs of like what's happening with the, this thing. And finally, like the procurement person was like, it's like, "Oh yeah, well, like I found this new vendor for USB cables, uh, like last time."

And I was like, "What? You switched like which vendor we're buying USB cables from?" They're like, "Yeah, it's like the same exact cable. It's just like a dollar cheaper." And it turns out this was the problem is this new cable had slightly worse resistance-

**Swyx** [1:07:25]
Yeah

**Erik Schluntz** [1:07:25]
... or slightly worse EMI interference, and it, you know, didn't... It worked most of the time, but 1% of the time these cameras would fail and we'd need to like reboot a big part of the system. And it was all just 'cause like-

**Swyx** [1:07:37]
Hmm

**Erik Schluntz** [1:07:37]
... the same exact spec, these two different USB cables, like slightly different. And so these are the kind of things you deal with with hardware.

**Swyx** [1:07:44]
For listeners, we had a episode with Josh Albrecht of Imbue, where he talked about buying, you know, tens of thousands of GPUs and just some of them will just not do math.

**Erik Schluntz** [1:07:52]
Yeah. Yeah. It's the same thing. Yeah, you-

**Swyx** [1:07:54]
You like, you like run them, run some tests to find the bad batch, and then you return it to sender 'cause they, they just... GPUs won't do math, right?

**Erik Schluntz** [1:08:01]
Yeah. Yeah, this is the thing. Um, just- ... the real world has this level of detail. Uh, there's, um, Eric Jiang was at, uh... He did AI at Google-

**Swyx** [1:08:09]
Yeah, 1X.

**Erik Schluntz** [1:08:10]
And he... Yeah, and then joined 1X. I see him, uh, post on Twitter occasionally of like, um, you know, complaints about hardware and supply chain, and I, I... We, we know each other and we joke occasionally that we've like switched.

I went from robotics into AI, and he went from AI into robotics and-

**Swyx** [1:08:23]
Mm-hmm

**Erik Schluntz** [1:08:24]
... yeah.

**Swyx** [1:08:25]
It looked like very, very promising. The, the TAM of the real world is-

**Erik Schluntz** [1:08:27]
Yes

**Swyx** [1:08:28]
... unlimited, right? Uh, but just also a lot harder. And yeah, I do think like something I also tell people about for why working software agents is they're infinitely clonable.

**Erik Schluntz** [1:08:37]
Yes.

**Swyx** [1:08:37]
And they always work the same way, mostly unless you're- ... using Python. Uh, and, um, and, and yeah. I mean, like this is, this is like the whole thesis. I'm also interested like in... You, you dropped a little bit of, of alpha there.

I, I don't wanna... Make sure, make sure we don't l- lose it. Like, yeah, you're, you're just kinda skeptical of self-driving, uh, as a business. So I, I wanna like double-click on this a little bit because I, I mean, I, I think that that shouldn't be taken away.

Um, we, we do have some public Waymo numbers. Read from, from Waymo is, is, is pretty public with like their, their stats. They're exceeding 100 Waymo trips a week. If you assume like a $25 ride average, that's a $130 million revenue run rate.

At some point they will recoup their investment, right? Like what, what are we talking about here? Like why, uh, why the skepticism?

**Erik Schluntz** [1:09:20]
I think, and again, I'm, I'm not an expert. I don't know their financials.

### Self-Driving

**Swyx** [1:09:23]
Yeah.

**Erik Schluntz** [1:09:23]
I would say the thing I'm worried about is like, compared to an Uber, like I don't know how much an Uber driver takes home a year, but like call that the revenue that a Waymo is gonna be making in that same year.

**Swyx** [1:09:33]
Yeah.

**Erik Schluntz** [1:09:33]
Those cars are expensive. It's not about if you can hit profitability, it's about your cash conversion cycles. Like is building one Waymo, like how cheap can you make that compared to like how much you're earning sort of as the equivalent of what an Uber driver would take home?

'Cause remember, an Uber driver, you're not getting that whole revenue. Think about for the Uber driver, like the cost of the car, the depreciation of the car. I'm not convinced how much profit Waymo can actually make per car.

That, that's I think my skepticism.

**Swyx** [1:10:01]
Yeah.

**Alessio** [1:10:01]
Well, they need to, uh, Priuses-

**Erik Schluntz** [1:10:03]
Yeah

**Alessio** [1:10:03]
... to run Waymo because the Class C is like 110 grand, something like that.

**Erik Schluntz** [1:10:07]
Yes, exactly. That's-

**Alessio** [1:10:07]
Plus the LiDAR

**Erik Schluntz** [1:10:08]
... that's many years of-

**Alessio** [1:10:09]
Plus all the-

**Erik Schluntz** [1:10:10]
Yeah.

**Alessio** [1:10:10]
Yeah, yeah, yeah.

**Erik Schluntz** [1:10:11]
Yeah, exactly. Exactly.

**Alessio** [1:10:12]
Anything else? Parting thoughts, call to action, rants? The floor is yours. Or-

**Erik Schluntz** [1:10:17]
Yeah, I'm very excited to see a lot more LLM agents out there in the world doing things, and I think that like, I think there'll be... The biggest limiting thing will start to become like, do people trust the output of these agents?

And like, how do you trust the output of an agent that did five hours of work for you and is coming back with something? And if you can't find some way to trust that agent's work, it kinda wasn't valuable at all.

So I think that's gonna be a really important thing is not just doing the work, but doing the work in a trustable, auditable way where you can also explain to the human, "Hey, here's exactly how this works and why and how I came to it."

I think that's gonna be really important.

**Swyx** [1:10:53]
Thank you so much.

**Alessio** [1:10:54]
Thank you.

**Erik Schluntz** [1:10:54]
Yeah. Thanks. This was great.

---

This library is powered by PodHood (https://podhood.com), the podcast website platform.
