back to indexMastering Claude Code in 30 minutes

00:00:00.000 |
- Hello, everyone, I'm Boris, I'm a member of technical staff here at Anthropic, and I 00:00:23.920 |
created QuadCode, and here to talk to you a little bit about some practical tips and 00:00:28.420 |
tricks for using QuadCode. It's going to be very practical, I'm not going to go too much into 00:00:33.380 |
the history or the theory or anything like this. And yeah, before we start, actually, can 00:00:39.320 |
we get a quick show of hands, who has used QuadCode before? Yeah, all right, that's what 00:00:45.040 |
we like to see. For everyone that didn't raise your hands, I know you're not supposed to do 00:00:49.400 |
this while people are talking, but if you can open your laptop and type this, and this will 00:00:56.840 |
help you install QuadCode just so you can follow along for the rest of the talk. All you need 00:01:11.800 |
Do you want us all to open the QuadCode? Yeah, well, you don't have to follow along, but if 00:01:18.760 |
you don't have it yet, yeah, this is your chance to install it so you can follow along. 00:01:25.940 |
So what is QuadCode? QuadCode is a new kind of AI assistant, and there's been different generations 00:01:32.280 |
of AI assistants for coding. Most of them have been about completing, you know, like a line 00:01:37.040 |
at a time, completing a few lines of code at a time. QuadCode is not for that, it's fully 00:01:42.280 |
agentic. So it's meant for building features, for writing entire functions, entire files, 00:01:48.720 |
fixing entire bugs at the same time. And what's kind of cool about QuadCode is it works with 00:01:54.800 |
all of your tools, and you don't have to change out your workflow, you don't have to swap everything 00:01:59.040 |
to start using it. So whatever IDE you use, if you use VS code, or if you use Xcode, or if 00:02:05.520 |
you use JetBrains IDEs, there's some people at Anthropic that you can't pry them from their 00:02:10.960 |
cold, dead hands, but they use QuadCode. Because QuadCode works with every single IDE, every terminal 00:02:16.160 |
out there. It will work locally, over remote SSH, over Tmux, whatever environment you're in, 00:02:23.040 |
you can run it. It's general purpose, and this is something where if you haven't used these kind of 00:02:30.880 |
free-form coding assistants in the past, it can be kind of hard to figure out how to get started, 00:02:35.840 |
because you open it up, and you just see a prompt bar, and you might wonder, like, what do I do with 00:02:39.600 |
this? What do I type in? It's a power tool, so you can use it for a lot of things, but also because it 00:02:45.200 |
can do so much, we don't try to guide you towards a particular workflow. Because really, you should be able 00:02:49.440 |
to use it however you want as an engineer. As you open up QuadCode for the first time, there's a few 00:02:58.960 |
things that we recommend doing to get your environment set up, and these are pretty straightforward. So, 00:03:04.320 |
run Terminal Setup, this will give you Shift+Enter for new lines, so you don't have to do, like, 00:03:08.320 |
backslashes to enter new lines. This is, you know, it makes it a little bit nicer to use. 00:03:13.040 |
Do /theme to set light mode, or dark mode, or Daltonize themes. You can do /install GitHub app. So, 00:03:20.880 |
today, we announced a GitHub app where you can add, mention, Claude on any GitHub issue or pull request. 00:03:28.800 |
So, to install it, just run this command in your terminal. You can customize the set of allowed tools 00:03:35.360 |
that you can use, so you're not prompted for it every time. This is pretty convenient. For stuff that I'm 00:03:39.040 |
prompted about a bunch, I'll definitely customize it in this way, so I don't have to accept it every 00:03:43.200 |
time. And something that I actually do is, for a lot of my prompts, I won't hand-type them into QuadCode. 00:03:48.800 |
If you're on macOS, you can go into your system settings under accessibility as dictation, 00:03:54.160 |
and you can enable it. And so, something I do is you just hit, like, that dictation key twice, 00:03:59.040 |
and you can just speak your prompt. And it helps a lot to have specific prompts. So, this is actually 00:04:04.240 |
pretty awesome. You can just talk to QuadCode, like you would another engineer, and you don't have to 00:04:08.880 |
type a lot of code. So, when you're starting out with QuadCode, it's so freeform, and it can do 00:04:17.520 |
everything. What do you start with? The thing I recommend above everything else is starting with 00:04:21.920 |
CodeBase Q&A. So, just asking questions to your CodeBase. This is something that we teach new hires at 00:04:28.560 |
Anthropic. So, on the first day, in technical onboarding, you learn about QuadCode, you download 00:04:33.200 |
it, you get it set up, and then you immediately start asking questions about the CodeBase. And in the 00:04:38.480 |
past, when you were doing technical onboarding, it's something that taxes the team a lot, right? You have 00:04:42.720 |
to ask other engineers on the team questions. You have to look around the code, and this takes a while. You 00:04:47.600 |
have to figure out how to use the tools. This takes a long time. With QuadCode, you can just ask QuadCode, 00:04:53.600 |
and it'll explore the code base. It'll answer these kind of questions. And so, at Anthropic, 00:04:57.840 |
onboarding used to take about two or three weeks for technical hires. It's now about two or three days. 00:05:01.680 |
What's also kind of cool about Q&A is we don't do any sort of indexing. So, there's no remote 00:05:10.000 |
database with your code. We don't upload it anywhere. Your code stays vocal. We do not train generative 00:05:14.880 |
models on the code. So, it's there. You control it. There's no indices or anything like this. 00:05:20.640 |
And what that means is also there's no setup. So, you start Quad, you download it. You start it. 00:05:25.120 |
There's no indexing. You don't have to wait. You can just use it right away. 00:05:27.440 |
This is a technical talk. So, I'm going to show some very specific prompts and very specific code 00:05:34.720 |
samples that you can use and hopefully improve and up-level your QuadCode experience. 00:05:38.640 |
So, some kind of questions that you can ask is, you know, like, how is this particular piece of code 00:05:44.160 |
used? Or, how do I instantiate this thing? And the QuadCode, it won't just do like a text search and try to answer 00:05:48.560 |
this. It'll often go a level deeper and it'll try to find examples of how is this class instantiated. 00:05:54.000 |
How is it used? And it'll give you a much deeper answer. So, something that you would get out of a 00:05:58.560 |
wiki or documentation instead of just like command F. Something that I do a lot also is ask it about 00:06:05.920 |
git history. So, for example, you know, why does this function have 15 arguments? And why are the 00:06:11.280 |
arguments named this weird way? And this is something I bet in all of our code bases, you have some function 00:06:16.240 |
like this or some class like this. And CloudCode can look through git history and it'll look to 00:06:21.760 |
figure out how did these arguments get introduced and who introduced them and what was the situation? 00:06:25.680 |
What are the issues that those commits linked to? And it'll look through all this and summarize it. 00:06:29.840 |
And you don't have to tell it that in all these, in all this detail. You just ask it. So, just say, 00:06:34.640 |
look through git history and it'll know to do this. The reason it knows, by the way, is not because we 00:06:39.840 |
prompted it to. There's nothing in the system prompt about looking through git history. It knows it because the 00:06:44.160 |
model is awesome. And if you tell it to use git, it'll know how to use git. So, we're lucky to be 00:06:49.520 |
building on such a good model. I often ask about GitHub issues. So, you know, it can use web fetch and 00:06:57.920 |
it can fetch issues and look up context on issues too. And this is pretty awesome. And this is something 00:07:03.840 |
that I do every single Monday in our weekly stand up. I ask what did I ship this week? And QuadCode looks 00:07:09.600 |
the log. It knows my username. And it'll just give me a nice readout of everything I shipped. And I'll 00:07:14.400 |
just copy and paste that into a doc. So, yeah, that's tip number one. For people that have not 00:07:22.960 |
used QuadCode before, if you're just showing it to someone for the first time, onboarding your team, 00:07:27.360 |
the thing we definitely recommend is start with CodeBase Q&A. Don't start by using fancy 00:07:30.960 |
tools. Don't start by editing code. Just start by asking questions about the CodeBase. And that'll teach 00:07:35.280 |
people how to prompt. And it'll start teaching them this boundary of like what can CloudCode do? 00:07:40.080 |
What is it capable of versus what do you need to hold its hand with a little bit more? What can be 00:07:44.320 |
one-shotted? What can be two-shotted, three-shotted? What do you need to use interactive mode for in a 00:07:48.560 |
REPL? Once you're pretty comfortable with Q&A, you can dive into editing code. This is the next thing. 00:07:57.680 |
And the cool thing about any sort of agentic, you know, like using LLM in an agentic way is you give 00:08:04.240 |
it tools and it's just like magical. It figures out how to use the tools. And with CloudCode, we give it 00:08:09.040 |
a pretty small set of tools. It's not a lot. And so it has a tool to edit files. It has a tool to run 00:08:14.400 |
bash commands. It has a tool to search files. And it'll string these together to explore the code, 00:08:19.440 |
brainstorm, and then finally make edits. And you don't have to prompt it specifically to use this tool and 00:08:26.160 |
this tool and this tool. You just say, you know, do this thing, and it'll figure out how to do it. It'll 00:08:29.600 |
string it together in the right way. That makes sense for CloudCode. 00:08:32.160 |
There's a lot of ways to use this. Something I like to do sometimes is before having Cloud 00:08:41.920 |
jump in to write code, I'll ask it to brainstorm a little bit or make a plan. This is something we 00:08:47.680 |
highly recommend. And something I see sometimes is people, you know, they take CloudCode and they ask it, 00:08:53.040 |
hey, implement this enormous like 3000 line feature. And sometimes it gets this right on 00:08:57.840 |
the first shot. But sometimes what happens is the thing that it builds is not at all the thing that 00:09:02.160 |
you wanted. And the easiest way to get the result you want is ask it to think first. So brainstorm ideas, 00:09:08.880 |
make a plan, run it by me, ask for approval before you write code. And you don't have to use plan mode, 00:09:14.640 |
you don't have to use any special tools to do this. All you have to do is ask Cloud. And it'll know to do this. 00:09:19.440 |
So just say, before you write code, make a plan. That's it. 00:09:22.240 |
This is also, I want to think with this one, this commit push VR, this is a really common 00:09:28.400 |
incantation that I use. There's nothing special about it, but Cloud is kind of smart enough to 00:09:32.080 |
interpret this. So it'll make a commit, it'll push it to the branch, make a branch, and then make a pull 00:09:35.680 |
request from you on GitHub. You don't have to explain anything. It'll look through the code, it'll look 00:09:39.520 |
through the history, it'll look through the Git log by itself to figure out the commit format and all the stuff. 00:09:43.920 |
It'll make the commit and push it the right way. Again, we're not system prompting it to do this. 00:09:50.960 |
It just knows how to do this. The model is good. 00:09:52.640 |
As you get a little bit more advanced, you're going to want to start to plug in your team's tools. And 00:10:00.400 |
this is where Cloud Code starts to really shine. And there's generally two kinds of tools. So one is 00:10:05.120 |
bash tools. And an example of this, I just made up this like Burley CLI. This isn't a real thing. 00:10:09.840 |
But you can say use the CLI to do something. And you can tell Cloud Code about this. And you can tell 00:10:15.680 |
it to use, for example, like dash dash help to figure out how to use it. And this is efficient. If you find 00:10:21.120 |
yourself using it a lot, you can also dump this into your Cloud MD, which we'll talk about in a bit, 00:10:25.040 |
so Cloud can remember this across sessions. But this is a common pattern we follow at Anthropic and we see 00:10:30.160 |
external customers use too. And same thing with MCP. Cloud Code can use bash tools. It can use MCP 00:10:36.880 |
tools. So, you know, just tell it about the tools. And you can add the MCP tool and you can tell it how 00:10:41.520 |
to use it. And it'll just start using it. And this is extremely powerful because when you start to use 00:10:47.920 |
code on a new code base, you can just give it all of your tools, all the tools your team already uses 00:10:53.360 |
for this code base. And Cloud Code can use it on your behalf. 00:10:56.400 |
There's a few common workflows. And this is the one that I talked about already. So kind of do a little 00:11:07.680 |
bit of exploration, do a little bit of planning, and ask me for confirmation before you start to write 00:11:13.040 |
code. These other two on the right are extremely powerful. When Cloud has some way to check its work, 00:11:19.280 |
so for example, by writing unit tests or screenshotting in Puppeteer or screenshotting the iOS 00:11:24.480 |
simulator, then it can iterate. And this is incredible because if you give it, for example, 00:11:29.760 |
a mock and you say build this web UI, it'll get it pretty good. But if you let it iterate two or three 00:11:35.120 |
times, often it gets it almost perfect. So the trick is give it some sort of tool that it can use for 00:11:40.960 |
feedback to check its work. And then based on that, it will iterate by itself and you're going to get a much 00:11:45.600 |
better result. So whatever your domain is, if it's unit test or integration test or screenshots for 00:11:50.880 |
apps or web or anything, just give it a way to see its result and it'll iterate and get better. 00:11:55.600 |
So these are the next steps. Teach Cloud how to use your tools and figure out the right workflow. If you 00:12:05.520 |
want Cloud to jump into code, if you want it to brainstorm a little bit, make a plan, if you want it to 00:12:09.440 |
iterate, kind of have some sense of that so you know how to prompt Cloud to do what you want. 00:12:13.600 |
As you go deeper, beyond tools, you want to start to give Cloud more context. And the more context, 00:12:22.880 |
the smarter the decisions will be. Because as an engineer working in a code base, you have a ton 00:12:26.480 |
of context in your head about your systems and all the history and everything else. So there's different 00:12:31.920 |
ways to give this to Cloud. And as you give Cloud more context, it'll do better. 00:12:35.360 |
There's different ways to do this. The simplest one is what we call Cloud.MD. And Cloud.MD is the 00:12:43.200 |
special file name. The simplest place to put it is in the project root. So the same directory you start 00:12:49.120 |
Cloud in, put a Cloud.MD in there. And that'll get automatically read into context at the start of 00:12:54.160 |
every session. And essentially, the first user turn will include the Cloud.MD. You can also have a local 00:13:01.200 |
Cloud.MD. And this one, you don't usually check into source control. So Cloud.MD, you should check into 00:13:06.880 |
source control, share with your team so that you can write it once and share it with your team. This one, 00:13:12.160 |
you don't check in. It's just for you. The kinds of things you put in Cloud.MD, it's like common bash commands, 00:13:18.240 |
common MCP tools, architectural decisions, important files, anything that you would kind of typically 00:13:24.720 |
need to know in order to work in this codebase. Try to keep it pretty short, because if it gets too long, 00:13:29.520 |
it's just going to use up a bunch of context. And it's usually not that useful. So just try to keep it as 00:13:34.000 |
short as you can. And for example, in our codebase, we have common bash commands, we have a style guide, 00:13:40.640 |
we have a few core files, kind of things like that. All the other Cloud.MDs, you can put them in other 00:13:45.600 |
nested child directories, and Cloud will pull them in on demand. So these are the Cloud.MDs that will 00:13:52.080 |
get pulled in automatically. But then also, you can put Cloud.MDs in nested directories, 00:13:57.200 |
and those will get put, those will get automatically pulled when Cloud works in those directories. 00:14:00.880 |
And of course, if you're, you know, a company, maybe you want a Cloud.MD that's shared across all 00:14:07.040 |
the different codebases, and you want to manage it on behalf of your users, and you can put in your 00:14:10.960 |
enterprise route, and that'll get pulled in automatically. 00:14:13.360 |
There's a ton of ways to pull in context. I actually had a lot of trouble putting this slide 00:14:20.800 |
together just to communicate the breadth of ways you can do this. But Cloud.MD is pulled in 00:14:25.600 |
automatically. You can also use slash commands. So this is .quad slash commands, and this can be in 00:14:30.480 |
your home directory, or it can be checked into your project. And this is for slash commands. And over here, 00:14:37.440 |
we have a few examples of the slash commands that we have in Cloud Code itself. And so, for example, 00:14:44.080 |
if you're in the Cloud Code repo, and you see issues getting labeled, that's actually this workflow 00:14:48.960 |
running here. It's labeled GitHub issues. And we have a GitHub action running, the same one we talked 00:14:54.080 |
about this morning, where Cloud Code will run this command, and it's just a slash command. It'll run, 00:14:59.680 |
and it'll label the issues so humans don't have to. It just saves us a bunch of time. And of course, 00:15:05.120 |
you can add mention files to pull them into context. And like I said before, Quad.MDs in a nested 00:15:10.960 |
directory get pulled in when Quad works in that directory. 00:15:13.280 |
So give Quad more context, and it's definitely worth taking the time to tune context. You can run it 00:15:23.280 |
through a prompt improver. Consider who the context is for. If you want to pull it in every time, if you 00:15:28.720 |
want to pull it in on demand, if you want to share it with a team, if it's a personal preference, 00:15:32.880 |
definitely take the time to tune it. This will improve performance dramatically, if you do it right. 00:15:37.120 |
As you get more advanced, you're going to want to think about this a little bit more, this kind of 00:15:46.080 |
hierarchy of different ways to pull in everything. So like not just Quad.MD, but also config and 00:15:51.840 |
kind of everything about Quad you can pull in in this hierarchical way. So projects are specific to your Git repo, 00:15:59.840 |
and this you can check in, or you can make it just for you. You can also have global configs that are 00:16:04.640 |
across all your projects, or you can have enterprise policies. And this is essentially a global config 00:16:09.280 |
that you roll out for all of your employees, everyone on your team automatically. 00:16:14.240 |
And this slide is like pretty information dense, but the point is this applies to a lot of stuff. So you 00:16:19.040 |
can do this for slash commands, you can do it for permissions. So for example, if you have a bash command 00:16:23.520 |
that you would run for all your employees, like all your employees use this like test command, for example, 00:16:28.240 |
you can actually just check it into this enterprise policies file. And then any employee, when they run 00:16:34.320 |
this command, it will be auto approved, which is pretty convenient. And you can also use this to block 00:16:38.720 |
commands. So for example, let's say there's a URL that should never be fetched. Just add it to this 00:16:43.280 |
config, and that will make it so an employee cannot override it. And that URL can never be fetched. So 00:16:49.920 |
pretty convenient both to unblock people and also just to keep your code base safe. And then same thing for 00:16:55.520 |
MCP servers, have a MCP JSON file, check it into the code base. That way, anytime someone runs quad 00:17:01.280 |
code in your code base, they'll be prompted to install the MCP servers and share it with the team. 00:17:05.120 |
If you're not sure which of these to use, this is like a kind of an insane matrix because we support a 00:17:13.920 |
lot of stuff and engineer workflows are very flexible and every company is different. So we kind of want to 00:17:18.000 |
support everything. So if you're not sure how to get started, I would recommend start with shared 00:17:22.080 |
project context. You write this once and then you share it with everyone on the team, and you get 00:17:26.800 |
this kind of network effect where someone does a little bit of work and everyone on the team benefits. 00:17:30.800 |
There's a lot of tools built into Quad to manage this. So as an example, if you run slash memory, 00:17:40.080 |
you can see all the different memory files that are getting pulled in. So maybe I have an enterprise 00:17:44.240 |
policy, I have my user memory, I have project Quad MD, and then maybe there's a nested Quad MD that's only 00:17:50.400 |
pulled in for certain directories. And then similarly, when you do slash memory, you can edit particular 00:17:56.880 |
memory files. When you type pound sign to remember something, you can pick which memory you wanted to go to. 00:18:01.120 |
So yeah, that's the next step. Take the time to configure Quad MD, MCP servers, all the stuff that 00:18:12.240 |
your team uses so that you can use it once, configure it once, and then share it with everyone. 00:18:19.120 |
An example of this is in our apps repo for Anthropic. This is like the repo that we have all of our 00:18:25.600 |
web and apps code in. There's a Puppeteer MCP server, and we share this with the team. 00:18:30.240 |
And there's an MCP JSON checked in, so any engineer working in that repo can use Puppeteer in order to 00:18:35.600 |
pilot end-to-end tests and to screenshot automatically and iterate so that every engineer doesn't have to 00:18:39.600 |
install it themselves. This is a talk about pro tips. I just want to take a quick interlude to talk about 00:18:49.280 |
some common key bindings that people may not know. It's very hard to build for terminal. It's also very 00:18:54.080 |
fun. It feels like rediscovering this new design language. But something about terminals, it's extremely 00:19:00.080 |
minimal. And so sometimes it's hard to discover these key bindings. And here's just a quick reference 00:19:05.440 |
sheet. So anytime, you can hit shift tab to accept edits. And this switches you into auto accept edits 00:19:11.440 |
mode. So bash commands still need approval, but edits are auto accepted. And you can always ask Quad to 00:19:16.000 |
undo them later. For example, I'll do this if I know Quad's on the right track or if it's writing unit tests and 00:19:21.760 |
iterating on tests. I'll usually just switch into auto accept mode so I don't have to okay every single edit. 00:19:26.640 |
Any time you want Cloud to remember something, so for example, if it's not using a tool correctly 00:19:33.280 |
and you wanted to use it correctly from then on, just type the pound sign and then tell it what to 00:19:37.120 |
remember and it'll remember it. It'll incorporate it into QuadMD automatically. If you ever want to drop 00:19:43.040 |
down to bash mode, so just run a bash command, you can hit the exclamation mark and type in your command. 00:19:47.360 |
That'll run locally, but that also goes into the context window. So Cloud will see it on the next turn. 00:19:53.840 |
And this is pretty good for long running commands if you know exactly what you want to do or any 00:19:57.360 |
command that you want to get into context. And Quad will see the command and the output. 00:20:00.880 |
You can add mention files and folders. Anytime you can hit escape to stop what Quad is doing. 00:20:08.480 |
No matter what Quad is doing, you can always safely hit escape. It's not going to corrupt the session. 00:20:12.240 |
It's not going to mess anything up. So maybe Quad is doing a file edit. I'll hit escape. I'll tell it 00:20:16.560 |
what to do differently. Or maybe it suggested a 20 line edit and I'm like, actually 19 of these lines look perfect, 00:20:22.000 |
but one line you should change. I'll hit escape. I'll tell it that. And then I'll tell it to redo that. 00:20:26.240 |
You can hit escape twice to jump back in history. And then after you're done with the session, 00:20:33.680 |
you can start Quad with a resume to resume that session if you want. Or dash dash continue. 00:20:38.160 |
And then anytime if you want to see more output, hit control R. And that'll show you the entire output, 00:20:44.800 |
the same thing that Quad sees in its context window. 00:20:47.040 |
The next thing I want to talk about is the Quad code SDK. So we talked about this at the top. 00:20:57.520 |
Right after this, Sid is doing a session, I think, just across the hallway. And he's going to go super 00:21:02.560 |
deep on the SDK. If you hadn't played around with this, if you use the dash P flag in Quad, this is what the SDK is. 00:21:10.000 |
And we've been planning a bunch of features over the last few weeks to make it even better. So yeah, 00:21:15.600 |
you can build on top of this. You can do cool stuff. This is exactly the thing that Quad code uses. 00:21:19.760 |
It's exactly the same SDK. And so, for example, something you can do is Quad dash P. So this is 00:21:25.680 |
the CLI SDK. You can pass a prompt. You can pass some allowed tools, which could include specific 00:21:32.720 |
batch commands. And you can tell it which format you want. So you might want JSON or you might want 00:21:37.680 |
streaming JSON if you want to process this somehow. So this is awesome for building on. We use this in 00:21:43.360 |
CI all the time. We use this for incident response. We use this in all sorts of pipelines. So really 00:21:49.040 |
convenient. Just think of it as like a Unix utility. You give it a prompt. It gives you JSON. You can use 00:21:53.280 |
this in any way. You can pipe into it. You can pipe out of it. The piping is also pretty cool. So you can 00:22:02.240 |
use, like, for example, git status and pipe this in and, you know, use JQ to select the result. The 00:22:08.720 |
combinations are endless. And it's sort of this new idea. It's like a super intelligent Unix utility. 00:22:13.680 |
And I think we've barely scratched the surface of how to use this. We're just figuring this out. 00:22:17.280 |
You can read from, like, a GCP bucket. Read, you know, like, a giant log and pipe it in and tell 00:22:23.360 |
Claude to figure out what's interesting about this log. You can fetch data from, like, the Sentry CLI. 00:22:29.760 |
You can also pipe it in and have Claude do something with it. 00:22:32.160 |
The final thing, and this is probably, like, the most advanced use case as we see, I'm sort of a Claude 00:22:42.160 |
normie. So I'll have usually, like, one Claude running at a time. And maybe I'll have, like, 00:22:46.560 |
a few terminal tabs for a few different repos running at a time. When I look at power users 00:22:50.880 |
in and out of Anthropic, almost always they're going to have, like, SSH sessions. They'll have, 00:22:56.320 |
like, Tmux tunnels into their Claude sessions. They're going to have a bunch of checkouts of the 00:23:00.800 |
same repo so that they can run a bunch of Claude in parallel in that repo. Or they're using Git work 00:23:05.360 |
trees to have some kind of isolation as they do this. And we're actively working on making this easier to use. 00:23:10.640 |
But for now, like, these are some ideas for how to do more work in parallel with Claude. You can run 00:23:17.040 |
as many sessions as you want. And there's a lot that you can get done in parallel. 00:23:21.520 |
So, yeah, that's it. I wanted to also leave some time for Q&A. So I think this is the last slide that I 00:23:30.640 |
have. And, yeah, if folks have questions, there's mics on both sides. And, yeah, we'd love to answer any 00:23:59.840 |
I think there's a lot of tricky parts. I think one part that is especially tricky is the things 00:24:18.640 |
that we do to make Bash commands safe. Bash is inherently pretty dangerous and it can change system 00:24:24.000 |
state in unexpected ways. But at the same time, if you have to manually approve every single Bash command, 00:24:31.840 |
it's super annoying as an engineer. And you can't really be productive because you're just constantly 00:24:35.280 |
approving every command. And just kind of navigating how to do this safely in a way that that scales 00:24:40.640 |
across the different kinds of code bases people have, because not everyone runs their code in a 00:24:44.320 |
Docker container was pretty tricky. And essentially the thing we landed on is there's some commands that 00:24:50.000 |
are read-only. There's some static analysis that we do in order to figure out which commands can be 00:24:54.320 |
combined in safe ways. And then we have this pretty complex tiered permission system so that you can 00:24:59.920 |
allow list and block list commands at different levels. 00:25:01.840 |
Hi, Boris. You mentioned giving an image to cloud code, which made me wonder if there's some sort of 00:25:10.960 |
multimodal functionality that I'm not aware of. Are you just pointing it at an image on the file system 00:25:16.320 |
or something? Yeah, so cloud code is fully multimodal. It has been from the start. It's in a terminal, 00:25:21.440 |
so it's a little hard to discover. But yeah, you can take an image and just drag and drop it in. That'll work. 00:25:26.960 |
You can give it a file path. That'll work. You can copy and paste the image in and that works too. 00:25:32.800 |
So I'll use this pretty often for if I have like a mock of something, I'll just drag and drop in the mock. 00:25:39.520 |
I'll tell it to implement it. I'll give it up to your server so it can iterate against it. 00:25:45.040 |
Um, hey, uh, why did you build a CLI tool instead of an IDE? 00:25:52.800 |
Yeah, it's a good question. I think there's probably two reasons. One is, uh, we started this 00:25:59.600 |
at Anthropic. And at Anthropic, people use a broad range of IDEs. And some people use VS Code, 00:26:05.040 |
other people use Z, or Xcode, or Vim, or Emacs. And it was just hard to build something that works for 00:26:11.600 |
everyone. And so terminal is just the common denominator. The second thing is at Anthropic, 00:26:17.360 |
we're, uh, we see up close how fast the model is getting better. And so I think there's a good 00:26:23.200 |
chance that by the end of the year, people aren't using IDEs anymore. And so we want to get ready for 00:26:28.480 |
this future. And we want to avoid over-investing in UI and other layers on top, given that the way the 00:26:34.800 |
models are progressing, it just, it may not be useful work pretty soon. 00:26:38.400 |
Yeah, how much have you, I don't know if this is, is this on? How much have you used 00:26:47.840 |
cloud code for machine learning modeling and almost that AutoML experience? I was curious 00:26:52.720 |
what the experience has been so far with that. Yeah, I think, I think the question was how much are we 00:26:58.080 |
using cloud code for machine learning and modeling? We actually use it for this a bunch. So both engineers 00:27:04.560 |
and researchers at Anthropic use cloud code every day. I think about 80% of people at Anthropic that 00:27:11.200 |
are technical use cloud code every day. And hopefully you can see that in the product and kind of the 00:27:15.360 |
amount of love and dog fooding we've put into it. But this includes researchers who use tools like the 00:27:20.240 |
notebook, notebook tool to edit and run notebooks. Okay, very cool. Thank you.