Ash and Andrew introduce the goal of building AI agents that run autonomously for hours or days. They outline three core obstacles—context, planning, and self-evaluation—and trace how model and harness improvements have co-evolved to extend agent runtimes from minutes to many hours.
Ash và Andrew giới thiệu mục tiêu xây dựng các tác nhân AI có thể chạy tự chủ trong nhiều giờ hoặc nhiều ngày. Họ phác thảo ba trở ngại cốt lõi—ngữ cảnh, lập kế hoạch và tự đánh giá—và theo dõi cách các cải tiến mô hình và harness cùng tiến hóa để mở rộng thời gian chạy của tác nhân từ vài phút lên nhiều giờ.
Nice meeting you guys.
Rất vui được gặp mọi người.
Um, I'm Ash.
Ừm, tôi là Ash.
Uh, this is Andrew.
À, đây là Andrew.
We both work in, uh, as engineers in our applied AI, uh, team here at Anthropic.
Cả hai chúng tôi đều làm việc với vai trò kỹ sư trong nhóm AI ứng dụng của chúng tôi ở đây tại Anthropic.
Um, and the kind of topic for this session was, uh, inspired by a blog post we put out, uh, just a couple weeks ago actually, about how to think about building, uh, agents that can actually run for really long extended periods of time.
Ừm, và chủ đề của buổi này được lấy cảm hứng từ một bài blog mà chúng tôi đăng cách đây chỉ vài tuần, về cách suy nghĩ khi xây dựng những agent có thể thực sự chạy trong những khoảng thời gian rất dài.
You know, we're talking 5, 6 hour plus kind of runs.
Bạn biết đấy, chúng ta đang nói đến những lần chạy kéo dài 5, 6 tiếng hoặc hơn.
Uh, I think we've all seen these kind of demos, you know, of like companies being like, "Hey, we've like one-shotted a browser." For example, but not necessarily sharing like some of the details into what goes into the harness, and that's what we kind of want to talk about today.
Tôi nghĩ tất cả chúng ta đều đã thấy những demo kiểu này, khi các công ty nói rằng "Này, chúng tôi đã làm được một phát ăn ngay cái trình duyệt chẳng hạn", nhưng không nhất thiết chia sẻ chi tiết về những gì cấu thành nên harness, và đó là điều chúng tôi muốn nói đến hôm nay.
So, the first off, um, my amazing quick Andrew will talk about a little bit about basically how we've got
Vậy, đầu tiên, Andrew tuyệt vời của tôi sẽ nói một chút về cơ bản cách chúng tôi có
here, some of the primitives that we've shipped in code, um, and, you know, where we are today.
Ở đây, một số primitive mà chúng tôi đã phát hành trong code, và bạn biết đấy, chúng tôi đang ở đâu ngày hôm nay.
Um, and then I'll hop back on stage to talk a little bit about some of the more experimental stuff that we're playing with harnesses, um, as well as, you know, a few examples of what we've seen.
Sau đó tôi sẽ quay lại sân khấu để nói một chút về một số thứ mang tính thử nghiệm hơn mà chúng tôi đang thử với harness, cũng như một vài ví dụ về những gì chúng tôi đã thấy.
But, over to you.
Nhưng, xin nhường lại cho anh.
Sounds good.
Nghe hay đấy.
Thank you, Ash.
Cảm ơn Ash.
And yeah, thanks everyone for joining, uh, first session of the AI Engineer conference.
Và vâng, cảm ơn mọi người đã tham gia buổi đầu tiên của hội nghị AI Engineer.
So, glad you're spending it with us.
Rất vui vì mọi người đang dành thời gian với chúng tôi.
Uh, my name's Andrew.
Tên tôi là Andrew.
I'm on the applied AI team based out of London, working as a solution architect with a lot of our digital native and industries customers.
Tôi thuộc nhóm AI ứng dụng đặt tại London, làm kiến trúc sư giải pháp với nhiều khách hàng digital native và khách hàng trong các ngành công nghiệp.
So, um, yeah, I'm going to give a little bit of a history tour, uh, trip down memory lane, but really with the focus on all the things that we've shipped that lead to agents being able to run, uh, for multiple hours or even days at a time.
Vậy, tôi sẽ điểm qua một chút lịch sử, một chuyến đi xuống dòng ký ức, nhưng thực sự tập trung vào tất cả những thứ chúng tôi đã phát hành dẫn đến việc agent có thể chạy trong nhiều giờ hoặc thậm chí nhiều ngày liên tục.
Um, and then I'll hand over to Ash to do more of the state of the art.
Sau đó tôi sẽ chuyển lại cho Ash để nói nhiều hơn về trạng thái tiên tiến nhất.
Right.
Đúng vậy.
Okay, so um, little quote from or on Twitter from Boris, the creator of Cloud Code.
Được rồi, vậy một câu trích dẫn nhỏ từ hoặc trên Twitter của Boris, người tạo ra Cloud Code.
This was on the one-year anniversary of Cloud Code.
Đây là vào dịp kỷ niệm một năm của Cloud Code.
Uh, basically saying a year ago, Cloud was struggling just to write bash commands and escaping strings.
Cơ bản là nói rằng một năm trước, Cloud chỉ đang vật lộn để viết các lệnh bash và escape chuỗi.
Um, and it could run for, you know, maybe 20 minutes at a time.
Và nó có thể chạy được, bạn biết đấy, có lẽ khoảng 20 phút mỗi lần.
And then, we're now at the point where almost all of Cloud
Và giờ chúng ta đã đến mức gần như toàn bộ Cloud
Code is being written by Cloud Code, and it can run effectively for days at a time.
Code đều được viết bởi Cloud Code, và nó có thể chạy hiệu quả trong nhiều ngày liên tục.
Uh, so sort of a big swing over just the course of a year, and I'll walk through that history, uh, a little bit now.
Vậy là một bước tiến lớn chỉ trong vòng một năm, và tôi sẽ điểm qua lịch sử đó một chút ngay bây giờ.
But, just to Let me, uh, zoom in here.
Nhưng, để tôi phóng to chỗ này lên.
Um, just to sort of frame the problem.
Chỉ để định hình vấn đề.
I'll play why is it that it's really difficult for these agents to run for extended periods of time?
Tôi sẽ giải thích tại sao lại thực sự khó để những agent này chạy trong những khoảng thời gian dài.
Um,
Ừm,
I think broadly there's three big buckets.
Tôi nghĩ nhìn chung có ba nhóm lớn.
Uh, some are more intuitive than others.
Một số trực quan hơn những cái khác.
So, firstly, context.
Vậy, thứ nhất, context.
I think we all understand context windows very much finite.
Tôi nghĩ tất cả chúng ta đều hiểu cửa sổ context là hữu hạn.
So, you start a new session, there's like amnesia.
Vậy, bạn bắt đầu một phiên mới, giống như bị mất trí nhớ.
The agent has to start from scratch, so you need some sort of memory components.
Agent phải bắt đầu lại từ đầu, nên bạn cần một số thành phần bộ nhớ.
Um, also as you're working through a context window, there's this notion of context
Cũng vậy, khi bạn làm việc qua một cửa sổ context, có khái niệm context
rot.
bị mục rữa.
So, uh, there's less coherence as you're you're getting deeper into that session.
Vậy, càng đi sâu vào phiên đó thì càng ít mạch lạc.
Uh, also, you might get to the point where, uh, the model actually exhibits what's called context sense anxiety.
Ngoài ra, bạn có thể đến mức mà mô hình thực sự thể hiện cái gọi là lo lắng về giới hạn context.
So, it gets kind of nervous as it reaches the end of its context window, and it just quickly hurries up to finish what it's doing.
Vậy là nó trở nên hơi lo lắng khi gần đến cuối cửa sổ context, và nó vội vàng kết thúc những gì đang làm.
Um, this kind of leads into planning.
Điều này dẫn đến việc lập kế hoạch.
So, uh, in
Vậy, nói chung,
general, models are not that great at planning just out of the box.
các mô hình không giỏi lập kế hoạch ngay từ đầu.
Uh, they might try and do everything in just one shot.
Chúng có thể cố làm mọi thứ chỉ trong một lần.
Or, for example, they might build half a feature and then stop, or they might just run out of context altogether and sort of leave a half-finished app built.
Hoặc, ví dụ, chúng có thể xây dựng một nửa tính năng rồi dừng lại, hoặc chúng có thể hết context hoàn toàn và để lại một ứng dụng xây dở.
Um, but then maybe less intuitively, um, models are really bad at judging their own output.
Nhưng rồi có thể ít trực quan hơn, các mô hình rất kém trong việc đánh giá đầu ra của chính mình.
So, I know
Vậy, tôi biết
we all know that models can be sycophantic and sort of tell you what you want to hear, but this applies as well to coding tasks.
tất cả chúng ta đều biết các mô hình có thể xu nịnh và nói những gì bạn muốn nghe, nhưng điều này cũng áp dụng cho các tác vụ lập trình.
So, it might look at a feature and see that it's sort of half-baked or a little bit implemented and say, "Yeah, okay, uh, that looks done." and then it'll move on to the next thing.
Vì vậy, nó có thể nhìn vào một tính năng và thấy rằng nó kiểu như chưa hoàn thiện hoặc mới được triển khai một chút và nói, "Ừ, được rồi, uh, trông có vẻ xong rồi." và sau đó nó sẽ chuyển sang việc tiếp theo.
Or it might build a feature like a button, but actually the
Hoặc nó có thể xây dựng một tính năng như một nút bấm, nhưng thực ra
back end, you know, it doesn't exist for it.
Phần back end, bạn biết đấy, nó không tồn tại cho tính năng đó.
There's sort of no nothing behind that, but it looks like the feature is done.
Kiểu như không có gì đằng sau đó cả, nhưng trông có vẻ như tính năng đã xong.
So, um, I know Ash will talk quite extensively of so some of the new techniques we have to help with this, um, specifically so models can become better at judging their own output.
Vì vậy, um, tôi biết Ash sẽ nói khá nhiều về một số kỹ thuật mới mà chúng tôi có để giúp giải quyết vấn đề này, um, cụ thể là để các mô hình có thể trở nên tốt hơn trong việc đánh giá đầu ra của chính chúng.
So, there's there's two ways really we can we can fix these things.
Vì vậy, thực sự có hai cách để chúng ta có thể khắc phục những điều này.
Uh, the first one is obviously the model.
Uh, cách đầu tiên rõ ràng là mô hình.
So, um, baking it all into the model weights themselves.
Vì vậy, um, tích hợp tất cả vào chính các trọng số của mô hình.
And I'm sure you've all seen this meter chart.
Và tôi chắc rằng tất cả các bạn đã thấy biểu đồ meter này.
It's basically how long can an agent run for with a minimal scaffold, uh, where it's completing 50% of the tasks.
Nó cơ bản là một agent có thể chạy trong bao lâu với một scaffold tối thiểu, uh, khi nó hoàn thành 50% các nhiệm vụ.
And you'll see from Opus 3.7, it's around 1 hour
Và bạn sẽ thấy từ Opus 3.7, nó khoảng 1 giờ
and up to Opus 4.6, 1 year later, it's at 12 hours.
Và đến Opus 4.6, 1 năm sau, nó đạt 12 giờ.
So, an entire day.
Vì vậy, cả một ngày.
Um, and we've of course, you know, managed to get that running much longer.
Um, và tất nhiên chúng tôi, bạn biết đấy, đã xoay xở để nó chạy lâu hơn nhiều.
Other people have as well, but this is just a sort of a very minimal scaffold.
Những người khác cũng vậy, nhưng đây chỉ là một loại scaffold rất tối thiểu.
The second thing that you can do is, of course, make changes to the harness itself.
Điều thứ hai bạn có thể làm tất nhiên là thay đổi chính harness.
So, this is the scaffolding, um, around the model.
Vì vậy, đây là scaffolding, um, xung quanh mô hình.
And we have the agent SDK which ships with all of the primitives that we've been building over time.
Và chúng tôi có agent SDK đi kèm với tất cả các primitive mà chúng tôi đã xây dựng theo thời gian.
So, there's the core agent loop itself where you have Claude model that's determining what to do, what tools to run, uh, maybe it's pulling in
Vì vậy, có vòng lặp agent cốt lõi nơi bạn có mô hình Claude đang xác định phải làm gì, chạy công cụ nào, uh, có thể nó đang kéo vào
some tools from MCP servers.
Một số công cụ từ các máy chủ MCP.
Uh, it might delegate some tasks to a sub agent.
Uh, nó có thể giao phó một số nhiệm vụ cho một sub agent.
It's bringing in all the context from things like claude.md or the skills that are loaded or slash commands.
Nó mang vào tất cả ngữ cảnh từ những thứ như claude.md hoặc các skill được tải hoặc slash command.
And there's a whole permission system.
Và có cả một hệ thống phân quyền.
And the this this will change over time as well as the models get better and improve.
Và cái này sẽ thay đổi theo thời gian khi các mô hình trở nên tốt hơn và cải thiện.
But these are sort of the core primitives that we're working with.
Nhưng đây là những primitive cốt lõi mà chúng tôi đang làm việc cùng.
And
Và
then of course, you use this framework to build your own harness for whatever it is you're trying to do, such as some of the things that Ash will show, uh, later on when we're getting to more long-running agents.
Sau đó tất nhiên, bạn sử dụng framework này để xây dựng harness của riêng bạn cho bất cứ điều gì bạn đang cố gắng làm, chẳng hạn như một số thứ mà Ash sẽ trình bày, uh, sau này khi chúng ta đến với các agent chạy lâu hơn.
Uh, I think what's also interesting is just looking back at the last year of releases is that when we've released a model we've always also released a lot of harness changes alongside the models.
Uh, tôi nghĩ điều cũng thú vị là chỉ cần nhìn lại năm phát hành vừa qua là khi chúng tôi phát hành một mô hình, chúng tôi luôn phát hành kèm theo rất nhiều thay đổi về harness cùng với các mô hình.
So really these things are like co-evolving together.
Vì vậy thực sự những thứ này kiểu như cùng tiến hóa với nhau.
So we'll just look back, um, suppose firstly just prehistory, um, beyond you know one year ago.
Vì vậy chúng ta sẽ nhìn lại, um, giả sử trước tiên chỉ là thời tiền sử, um, xa hơn bạn biết đấy một năm trước.
I think we all remember that period where Claude had the artifact section of Claude.ai and, uh, Sonnet 3.5 was the first model that really showed promise when it came to coding.
Tôi nghĩ tất cả chúng ta đều nhớ giai đoạn mà Claude có phần artifact của Claude.ai và, uh, Sonnet 3.5 là mô hình đầu tiên thực sự cho thấy triển vọng khi nói đến lập trình.
And it could now verify that it could look at what it had built and sort
Và nó giờ có thể xác minh rằng nó có thể nhìn vào những gì nó đã xây dựng và kiểu
of iterate from there.
Lặp lại từ đó.
That was quite an aha moment sort of pre-Claude code.
Đó là một khoảnh khắc aha khá lớn kiểu như trước Claude code.
Uh, but then also we shipped computer use so it could start clicking around taking screenshots, um, testing its own code as well as MCP spec, uh, which enabled it to sort of use tools.
Uh, nhưng sau đó chúng tôi cũng phát hành computer use để nó có thể bắt đầu nhấp chuột xung quanh, chụp ảnh màn hình, um, kiểm thử mã của chính nó cũng như đặc tả MCP, uh, cho phép nó kiểu như sử dụng công cụ.
So then getting into Claude code, uh, this is February 2025.
Vì vậy sau đó bước vào Claude code, uh, đây là tháng 2 năm 2025.
So this is about just over a year ago.
Vì vậy đây là khoảng hơn một năm trước.
Um, Sonnet 3.7 was released and this was sort of state of the art on Swebench.
Um, Sonnet 3.7 được phát hành và đây kiểu như là tiên tiến nhất trên Swebench.
And Claude code was released in research preview.
Và Claude code được phát hành dưới dạng research preview.
And I think an interesting quote that I pulled from this release actually is that the goal of Claude code was to better understand how developers use
Và tôi nghĩ một câu trích dẫn thú vị mà tôi lấy từ bản phát hành này thực ra là mục tiêu của Claude code là hiểu rõ hơn cách các nhà phát triển sử dụng
Claude for coding to inform future model improvements.
Claude để lập trình nhằm cung cấp thông tin cho việc cải thiện mô hình trong tương lai.
So essentially when we released Claude code the whole idea was for it to be somewhat experimental to inform how we actually improve the base model itself.
Vì vậy về cơ bản khi chúng tôi phát hành Claude code, toàn bộ ý tưởng là để nó có phần thử nghiệm nhằm cung cấp thông tin về cách chúng tôi thực sự cải thiện chính mô hình cơ sở.
And you'll see this trend that over time the models become better.
Và bạn sẽ thấy xu hướng này là theo thời gian các mô hình trở nên tốt hơn.
Uh, the harness certain aspects of it might become less necessary or it will evolve.
Uh, harness, một số khía cạnh của nó có thể trở nên ít cần thiết hơn hoặc nó sẽ tiến hóa.
Um, just in terms of, uh, these slides as well in the bottom left corner these are some of the things that are sort of the focus of these releases, whether it's, uh, context or planning, uh, or verification and then some stats but I'm not going to sort of read everything.
Um, chỉ về mặt, uh, những slide này thôi ở góc dưới bên trái là một số thứ kiểu như là trọng tâm của những bản phát hành này, dù là, uh, ngữ cảnh hay lập kế hoạch, uh, hay xác minh và sau đó là một số số liệu thống kê nhưng tôi sẽ không kiểu như đọc hết mọi thứ.
Um, so yeah next this was around May time of last year Opus 4 and Sonnet 4 were released.
Um, vậy yeah tiếp theo đây là khoảng thời gian tháng 5 năm ngoái Opus 4 và Sonnet 4 được phát hành.
And just in
Và chỉ trong
general, um, these tools got much better at sort of managing their own contacts and getting to task completion, uh, without reward hacking or anything like that.
Nói chung, um, những công cụ này trở nên tốt hơn nhiều trong việc kiểu như quản lý ngữ cảnh của chính chúng và hoàn thành nhiệm vụ, uh, mà không bị reward hacking hay bất cứ điều gì tương tự.
And then Claude Code became GA as well and we released the Claude Code SDK.
Và sau đó Claude Code trở thành GA và chúng tôi phát hành Claude Code SDK.
So sort of the harness powering Claude Code.
Vì vậy kiểu như harness vận hành Claude Code.