AI Engineer World's Fair 2026

Total Recall: Agent Memory and Harness Engineering — Ignacio Martinez, Oracle

Read the talk

Total Recall: Agent Memory and Harness Engineering

Ignacio Martinez explains how storage, retrieval, institutional knowledge, context assembly, and bounded agent loops make a frozen language model more useful—and how successful workflows can become reusable memory.

From a talk by Ignacio Martinez

At a glance

Ideas worth remembering

  • An agent combines a reasoning model with a harness. Memory, tools, perception, and orchestration can improve behavior while model weights remain fixed.

  • Files provide a convenient working interface; databases add transactions and retrieval capabilities. A hybrid design can keep temporary work in files and promote lasting information into database storage.

  • Memory requires selection and refinement. Context cards organize intent and relevant history, while tool and skill retrieval refreshes context on each agent-loop iteration.

  • Skill promotion carries successful procedures into future tasks by distilling experience into a revised skill.md and retiring the previous version.

  • Recovery needs limits. Model-dependent patience budgets and routing offer ways to balance continued attempts against cost and task difficulty.

The reasoning is frozen; the surrounding system can change

Language models usually arrive with fixed weights, yet the applications built around them need to improve and produce dependable results. Ignacio Martinez, an Oracle developer advocate, locates that engineering work in the harness: the memory, tools, and environmental inputs surrounding the reasoning model. His workshop begins with a registration site he created the preceding Saturday and a GitHub Codespaces environment. The architecture underneath that improvisation is deliberate. 4:02

Looking ahead to the agent definition Martinez gives after the stack, connectivity and application shapes: An agent, in Martinez’s formulation, is a model plus a harness. The model supplies reasoning; files or databases supply memory; tools enable actions; inputs let the system perceive its environment. You rent the reasoning service and accept what its provider offers. Memory, tools, and perception give you room to customize how the system works.

The five-layer agent stack separates the application users interact with, its data, the reasoning model, infrastructure that orchestrates model serving, and underlying compute. Martinez sees much of this platform becoming commoditized, leaving data as a particularly useful place for builders to exercise judgment. Data includes memory, knowledge, encoding, search, and retrieval—not merely records fetched at the end of a request.

Connectivity makes that information actionable. A gateway and Model Context Protocol (MCP) layer expose functions that connect the model to external applications and tools. Outlook is the example: a model without access cannot operate the application; exposing suitable functions lets the surrounding system communicate with it. Memory, retrieval, semantics, context, tools, and skills build on this connection.

Different applications give the model different amounts of initiative:

  • Chatbots: Respond when a user asks a question.
  • Retrieval-augmented generation (RAG) applications: Process and retrieve supporting information while remaining largely request-driven.
  • LLM-driven workflows: Automate a sequence of work.
  • Agents: Add autonomy to choose how work proceeds.

Coding systems such as Claude Code and Codex combine workflow automation with agent autonomy. Automation contributes reliability; autonomy contributes flexibility.

Harness engineering aims for repeatable outcomes around a nondeterministic component: the same input can produce different model outputs. The harness organizes execution without assuming that reasoning has become deterministic. A common interface, such as an OpenAI-compatible protocol or an Anthropic API specification, also allows the reasoning service to be replaced while retaining the surrounding system.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:12 · section reference included

Where memory lives changes how agents collaborate

The workshop introduces a seven-layer harness, then develops its responsibilities through storage, memory engineering, semantics, agent loops, and context engineering. Storage comes first because later operations depend on where information physically lives. Encoding and retrieval make it findable; semantics explains local vocabulary; context engineering keeps the current task salient. These changes can affect behavior while the model’s weights remain fixed. 13:48

Files are easy to create, read, and append to, and they accommodate unstructured material. Their familiar operating-system interface makes them convenient working memory. A database need not replace that interface everywhere. Martinez prefers using files and databases together, assigning each the work it handles well.

Parallel agents expose a weakness of ordinary shared files. Several agents may try to change the same file, and the file interface alone does not coordinate those changes transactionally. Asked how coding agents avoid trampling one another’s work, the room answers: worktrees. Each agent changes a separate working copy, then integrates its implementation into the main branch. Isolation moves the collision to a later merge; it does not turn concurrent updates to one shared file into a transaction. 18:35

Databases bring established data-management capabilities:

  • Transactions: ACID operations provide atomicity, consistency, isolation, and durability.
  • Availability: Replication can keep data available across multiple locations.
  • Retrieval: Vector and hybrid search support finding information beyond ordinary text matching.
  • Recovery: Backup facilities address failures that an unprotected local file collection does not handle by itself.

These are the problems behind Martinez’s observation that databases solved much of this decades ago and people have forgotten.

A proposed exercise puts three agents on the same counter file to compare update behavior; its outcome is not shown in this recording. Oracle DBFS, the Database File System, offers the architectural alternative: retain a file-facing interface while storing files inside a database, gaining transaction and management capabilities. A simpler hybrid allocation keeps short-lived working material in files and promotes lasting information, such as user preferences, into structured database storage.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

13:48 · section reference included

Retrieval creates more data than the original documents

Once storage exists, the harness needs to encode, search, and retrieve information. LangChain Oracle DB supplies an integration for vector-store operations. In-database embeddings place the embedding model inside the database, avoiding a third-party service call during encoding. For enterprise teams, that changes where data must travel and helps control its handling. 21:34

The retrieval pipeline has two matching stages. A bi-encoder embeds document chunks and the user’s query into vectors that can be compared in a vector store. This selects candidate material. A cross-encoder then considers the question together with retrieved results and reranks the candidates. The first stage finds plausible matches; the second evaluates those matches alongside the question.

How does a question meet the documents that might answer it? The diagram separates document preparation from the query path, then shows where they join. Reranking follows vector retrieval: it evaluates selected candidates rather than replacing the initial search.

This pipeline multiplies the kinds of information an application manages. Preparation involves tokenization, normalization, embedding generation, and redaction of personally identifiable information. Storage then includes source text, JSON metadata, and dense vectors. Splitting these across databases creates synchronization and maintenance work: the application must keep the representations aligned as data changes.

Oracle’s converged-database proposal addresses that coordination cost by placing relational, JSON, spatial, graph, and vector-oriented work in one database engine and query environment. Consolidation can simplify the development stack and reduce the number of systems to secure and maintain. Martinez’s security simplification does not establish that the resulting application has only one possible attack path.

How it fits togetherCandidate retrieval followed by reranking

Split source documents into material to encode.

Documents and questions become comparable vectors. Selected candidates then receive a second evaluation together with the question.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

21:34 · section reference included

Remember selectively, then assemble the next context

Agent memory comprises mechanisms that retain, recall, reuse, and refine information. Its purpose is practical: a problem that took three hours should become easier when it appears again. That requires separating information useful during the current task from experience worth carrying into future work. 25:53

The memory categories answer different needs:

  • Short-term memory: A coding agent’s current to-do list helps it finish today’s task and need not become permanent history.
  • Episodic memory: Previous conversations preserve experiences that can inform improved workflows.
  • Procedural memory: A successful process becomes reusable instructions—for example, the workflow behind a front-end design the user liked.
  • Shared memory: Parent agents, subagents, or collaborating agents exchange information needed to solve a problem together.

A larger context window does not perform all these jobs. Context is working memory, and filling it with history can make the current task harder to follow. Martinez calls this context rot. His analogy starts with thirty minutes of attentive conversation and stretches into eight hours: eventually the listener wants him to stop talking. Keep useful information close and unnecessary history out.

The attention-matrix explanation gives a concrete scaling relationship. Each token relates to other tokens, so a full token-to-token matrix grows in both rows and columns as context grows. Doubling the token count produces four times as many matrix entries. That explains the quadratic relationship described here; it does not establish a universal rate of answer-quality degradation or a safe context threshold.

Memory engineering includes deciding when to compact, how to summarize, what to preserve, what to extract, and how many tokens to spend. The Oracle Agent Memory Package, or OAMP, is presented as a managed way to assemble a context card through a single Python call. It packages work the engineer would otherwise have to coordinate. 31:29

The context card separates information by its role:

  • Topics: Orient the model toward the conversation’s subject.
  • Summary: Compact the thread and preserve current intent.
  • Relevant information: Bring forward associated facts, preferences, and memories.
  • Episodic memories: Track the unanswered question still in progress.
  • Recent messages: Preserve immediate conversational context.

An audience question clarifies where this structure operates: the harness uses it to shape what goes into the model. The card organizes inputs around the reasoning core; it does not update model weights.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

25:53 · section reference included

Give the agent a lens, then refresh context on every iteration

Memory preserves information; semantics supplies meaning people often leave unstated. Martinez borrows Umwelt from Jakob von Uexküll to describe an organism’s perceptual lens: it experiences the world through what its senses make available. An agent’s corresponding lens consists of its training and the context it receives. 34:33

Colleagues can discuss work without explaining every internal term because they share institutional knowledge. A newcomer needs those missing explanations. The semantic layer gives an agent that background—how data is modeled, how queries are executed, and what metadata means. Otherwise, requests pass through a lens missing the organization’s assumptions.

The agent loop makes this knowledge actionable. Its minimal cycle is observe, reason, and act, repeated as new information arrives. The loop drives the model and gives it autonomy to continue work. Failure resistance matters because an unsuccessful action should become information the system can respond to rather than automatically ending the task.

Context assembly belongs inside that cycle. The toolbox and skill-box patterns keep tools and skills in storage, retrieving them when the current task needs them. At each iteration, the harness can remove material that is no longer relevant. A capability can remain available without its entire description continuously occupying the context window. 37:33

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

34:04 · section reference included

Turn a successful session into a better reusable skill

Continual improvement can happen in model weights, representations used by embedding and reranking systems, or context supplied to the model. The workshop focuses on context and token space because Martinez considers it an accessible, inexpensive way to change behavior while keeping the reasoning core frozen.

Skill promotion develops the earlier front-end example. A session produces a design the user likes, and the conversation contains the process that reached it. Store that experience, distill the successful workflow into a revised skill.md, retire the old version, and retrieve the new skill for later tasks. A reusable instruction artifact now carries the procedure that previously lived in a one-off conversation. 39:36

Preferences become part of the procedure: a library whose look and feel the user likes, a database engine they found easier to use, or a preferred tone. The workflow becomes more personal as these choices accumulate. The mechanism preserves and revises instructions; no criterion for judging the distilled skill’s improvement is established here, so its benefit depends on the quality of promotion.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

38:51 · section reference included

Total Recall makes context selection and recovery visible

The hands-on environment pairs a student notebook with an AppBook for interacting with individual harness components. Both run in GitHub Codespaces, with model requests served through OCI Generative AI Service. Martinez asks participants to avoid eight- or sixteen-core machines because he is paying for their Codespaces himself. Wi-Fi trouble and a Codespace disconnected through inactivity interrupt the transition to the demonstration.

The notebook grows the system in layers. Its first exercise sends a question through the OpenAI Completions API and receives a response, with no harness implemented. Later exercises add search, retrieval, encoding, and other components. There are nineteen to-dos. Starting with a bare reasoning call gives participants a baseline against which to understand what each surrounding layer contributes. 48:10

The complete Total Recall application is exposed through a public Codespaces port for browser access. Its concrete request asks for total revenue by product category. Mission control reveals the tools selected for context, the schema available to the agent, and traces of loaded skills, data sources, and tool calls. The question becomes an inspectable sequence of work against database information. 50:07

During the sequence, the trace reports an error. The agent loop continues trying, and the application subsequently presents a database-derived result. Martinez describes the run as taking sixteen steps. The revenue values and particular error and repair are not supplied, so the observable change is from a request, through selected context and a recoverable failure, to a result—not a verified financial calculation.

What lets the revenue request survive an error? The diagram connects selected context to actions and routes the reported failure back into continued work. That return path explains how one unsuccessful action can become part of a longer attempt. The application also exposes token usage and lets users interact separately with context-card creation.

How it fits togetherThe revenue request continues after an error

The user supplies an analytical request.

Selected context guides actions. A reported failure returns the agent to continued work before the application presents a database-derived result.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

42:06 · section reference included

Large toolboxes need distinguishable descriptions

What happens when an organization has thousands of tools? The toolbox pattern searches stored tool representations instead of placing every description in context. Martinez proposes an HNSW index—hierarchical navigable small world—as the graph-based search structure behind retrieval. The model receives a relevant subset while the larger inventory remains in storage. 51:58

The database-backed index keeps the application’s query interface simple as the inventory grows. Martinez describes retrieval overhead as negligible; that is a design expectation here, rather than a measured latency result or evidence that search cost remains constant between one thousand and ten thousand tools.

A harder question concerns tools from different business units with overlapping descriptions and different access to confidential data. The retrieval proposal is to use an LLM to enrich descriptions or docstrings, making the tools easier to distinguish in vector search. This addresses semantic separability. Permission enforcement is not specified in the answer, so better descriptions alone do not resolve which confidential data a caller may access.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

51:43 · section reference included

Give the loop a patience limit—and a choice of models

Failure resistance creates another problem: an autonomous loop can keep spending money without approaching its goal. An audience question brings the discussion back to stopping. Martinez uses a model-dependent cutoff expressed as a maximum number of tool calls before giving up. For the model used in this workshop, he reports finding eight to twelve calls a useful range. This is his tuning observation for that workshop model, not a recommendation for a verified model release or for other models. 55:45

He calls the control a hysteresis variable: the amount of patience the harness extends to the model. Too little patience abandons recoverable work; too much prolongs unproductive generations. He contrasts a result reached in two steps with the earlier sixteen-step run. Those steps and the proposed tool-call limit are not clearly the same counter. Eight to twelve is a tuning observation, and the cutoff is a discussed harness control rather than an established notebook implementation.

Model routing supplies another control. Difficult problems can go to a frontier language model, while easier ones can use a smaller open-weight model. The separation between reasoning and harness makes this possible: the surrounding system chooses both the reasoning resource a task receives and the patience allowed for continued attempts.

Martinez’s forecast is a mixture of small experts: specialized models, potentially around one hundred million parameters, coordinated by an orchestrator that routes queries to the appropriate model. He expects that arrangement to make a harness more token-efficient. It is a proposed direction, rather than a demonstrated replacement for the workshop’s general-purpose model. 57:17

The recording ends by returning participants to implementation. The notebook uses a Python 3.12 kernel, and its docs folder provides explanations for individual exercises alongside available solutions. The progression begins with one model call and adds harness components around it. Staff move into the room to help participants work through those layers, with internet access still causing trouble as the hands-on session begins.

Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

55:08 · section reference included

Resources

Read the complete timestamped transcript
  1. 0:12

    Hello, hello. Perfect. Yep. So perfect. Yeah, this, this volume is perfect. It's just a website that I, I registered the domain on Saturday just to do the registration of the workshop. But for those of you who are gonna follow along with me, just know that after you complete that, that process in the, in the workshop, you will get an invitation to the repository and just view the invitation, accept it,

  2. 0:42

    and then you'll be able to run the workshop. We'll be running the workshop on GitHub Codespaces, so if you wanna start that up, it takes, like, five minutes. Um, just for reference, I'm gonna use the first thirty minutes to give you an introduction to Agent Harness and lots of other concepts. And then in the next hour and a half, we're gonna go... actually go through, uh, the workshop together. Sound good? Okay, perfect. And thank you, by the way, for

  3. 1:12

    being here, because I know it's Monday, nine AM, so I commend you all for, for being here. Uh, just two minutes before we begin, so I will shut up.

  4. 3:22

    All right. Well, let's, let's begin, guys. So thank you for being on this, uh, at this time here with me. Um, I know it's nine AM, like I said, so hopefully I can and, and we, me and my team can make your time worthwhile. At the end of this session, what I would like you to leave with is some knowledge on agent memory and agent harnesses, how you can build your own agent harness, which is nowadays one of the

  5. 3:52

    hot topics on AI, I would say. Um, lots of people are talking about models constantly, but the thing is that models, like language models, they are the frozen part of the reasoning, right? We just have to accept what we are given. And, uh, during the past few weeks, you will-- if you're following the news, you will have seen that this is-- this has never been more true than now. So the harness is what we're gonna talk about. For those of you who weren't here,

  6. 4:24

    uh, you can scan this QR code or go to that website, workshopwaitingroom.com, and just register. You will get an invitation to a GitHub repo, and on this GitHub, you will be able to create a GitHub Codespace where we will run the workshop, and you will have everything set up for you. So just little introduction on, on who I am. I've been working for Oracle for seven years.

  7. 4:54

    I've been a developer advocate for about four of them. And you can find, uh, you know, my talks, and I'm very active on GitHub as well. So if you're a GitHub user, uh, just check out my GitHub profile if you like. Uh, what is the highlight of my career so far? I launched a course with Andrew Ng on agent memory. So if you're interested on the memory components of what we're gonna-- what we are going to discuss today, you can just check out that course if you'd like.

  8. 5:25

    Um, these are the things that we are gonna, uh, talk through today, right? Uh, first of all, we're gonna do a, a little introduction on what the agent stack is, and then we're gonna zoom into the data layer where the memory lives. Then we're gonna explore a little bit about the shapes, the different shapes that AI applications take nowadays. Uh, what an agent is, uh, followed by the seven different layers that make up an agent harness. So we-- if you just

  9. 5:54

    follow these seven different structures, you will be able to create an agent harness, a minimal agent harness that you can connect any model to.

  10. 6:05

    Then we're gonna finally talk a little bit about continual learning and how us, as Oracle, we are uniquely positioned to help you achieve and, and develop agent harnesses and, and AI applications. So the agent stack. And by the way, if you have any questions, just raise your hand. I'm very happy to, to take questions as well. So the agent stack. The agent stack, like every agent, AI, every AI agent sits on, on these five

  11. 6:35

    layers. You either ha-- You have an application, which is the product service, right, what we interact with as users. You have data, and that has lots of components. You have memory, you have knowledge, you have retrieval, encoding, search. You have the model itself, the reasoning large language model that is behind everything. Uh, infrastructure, which is the orchestration. What model do we serve depending on the reasoning effort that we need, and things like that. And then we have

  12. 7:05

    compute, which is the cloud or GPUs, and also the, the database engine. And the application, the model, the infrastructure, and the compute, these four layers, except for the data, they are, uh, increasing, increasingly commoditized. What do I mean by that? They are trying to take away the complexity from these layers out of, out of our

  13. 7:31

    domain, right? So the thing that we have the most control over when working with AI applications is actually the data. And that's the part that we're gonna focus in because the agent harness excels and, you know, lives very closely with the, with the data layer.

  14. 7:48

    So let's focus on the, on the data layer. The data layer is where an agent harness appears, and it has, you know, many components. The first component is the gateway and MCP. It's interesting because that's the one that connects an agent harness to data and tools. So kind of think of, of a large language model like a isolated thing that wouldn't be able

  15. 8:18

    to work at all if it didn't have access to things like data, right? So

  16. 8:27

    you'll-- you, you then have, like, the memory layer, the semantic layer, retrieval layer, context layer, and tools and skills that are built on top of the gateway and MCP layer. Let's say, for instance, that you have a, I don't know, an application on your computer and your large language model doesn't have access to it. For instance, Outlook, right? So if you might want to have your large language model connect to that, you can create an MCP, you specify some functions, and

  17. 8:57

    then the LLM all of a sudden is able to communicate with this program. So gateway and MCP is like the layer that connects a large language model to the outside world or de facto to our computer or wherever you're working. And AI applications today, they take up four different, um, four different shapes, right? You have LLM chatbots, which are very passive. Uh, they just respond when you ask a question. You also have RAG

  18. 9:27

    applications which are semi-passive because they have to do some kind of processing in the background, but then you also have a passive nature of it. And then you have the more active components of AI applications, which are what we kind of use every day, like Claude Code, et cetera, et cetera, which are a combination of LLM-driven workflows that provide automation and AI agents that provide autonomy. And we'll go-- we'll, we'll explain later what, what I mean by that.

  19. 9:57

    But first, I want you to have a very clear definition of what an AI agent is. So to me, an AI agent is essentially a model, large language model, plus a harness. The model itself will be the reasoning, and everything else will be the harness. Um, so this definition is something like this: an autonomous entity whose cognitive functions are powered by a large

  20. 10:26

    language model for reasoning. They are augmented by a database or files for memory. They are extended through tools for actions and grounded in inputs that let it perc-perceive, uh, its environment. So an agent is a, a model plus the harness. So if the agent is the model plus the harness, in this diagram, right, we have reasoning, and the reasoning

  21. 10:57

    is the part that we don't control. It's the part that we are-- that's, that's heavily subsidized, the part that we rent. If, uh, if you're like me, you're subscribed to every imaginable subscription on Earth, and that's the thing that we do not control, right? We have no control over what we are offered. And then we have memory, tools, and perception that actually we get some customiz-customizability that we can do. Um, so

  22. 11:27

    the goal of harness engineering is to create reliable and predictable outputs over and over, whereas a, a reasoning model is very non-deterministic. You might give it the same out-- the same input, and it might produce different outputs every time, right?

  23. 11:47

    So I said that, you know, in AI, AI applications, the most typical ones nowadays, Claude Code, Codex, uh, and any other type that you can think of, is a combination of automation plus autonomy. Why? Well, because automation provides reliability to a system, and autonomy gives flexibility. And this is a combination that is very- Convenient when we are developing ourselves. By the way, raise of hands,

  24. 12:17

    who is working as an AI engineer or as an AI developer? Oh my God. Okay, good. So you must all have used one of these systems, right? So all of them, they have this commonality, which is they have autonomy and they have flexibility. Um,

  25. 12:38

    yeah. So the idea is that these systems, right, they are built on top of an, a proprietary agent harness. And an agent harness is nothing more than everything that we've spoken about an AI agent, all the things that you need to do around that to enable it to produce reliable and repeatable outcomes, right? So the model itself, non-deterministic. Same input, different outputs every time.

  26. 13:09

    But the harness, what we wanna do with the harness is to turn this non-deterministic nature of a large language model and be able to produce reliable and repeatable results.

  27. 13:21

    So the reasoning, which is the part that we do not control, we're not gonna focus... Actually, the harnesses are built on top of models that are kind of swappable. You just need a, like a common interface, like an OpenAI protocol or the Anthropic API specification, right? All these things make it so that the model part is swappable, and the harness is what we're gonna focus on today.

  28. 13:48

    So seven things that make up an agent harness, and as I said, we're not gonna touch on the model layer because we have no control over it. But let's go a little bit more, uh, in detail into each of these, right? You need a storage layer on your agent harness that essentially determines where the data is going to live, where the memory physically lives. Uh, and we'll see about this dilemma that has been

  29. 14:18

    going on about the last six months about files versus databases, and why I think a hybrid, uh, combination of both is actually the best part. Then you also have memory engineering components, which are all the en- encoding, the search, and the retrieval components of it.

  30. 14:38

    And also the semantic layer, which is kind of the, the, the hidden things that happen or the hidden vocabulary that we assume that a large language model knows that is kind of proprietary to our companies or our knowledge. What we don't say to the LLM, kind of. That's the semantic layer. We'll lightly touch on agent loops and what an agent loop is and how to implement a very, very minimalistic agent loop. And finally, go about some context

  31. 15:08

    engineering techniques that, you know, keep the window as salient as possible, the context window as salient as possible. You wanna minimize the context window as much as possible so that, that the task that you're solving stays relevant. So until here, we have done an introduction to what an AI agent is, right? Its use cases. And now we're going to dive deeper into, uh, an agent harness and each one of the individual components.

  32. 15:39

    So the model layer, right? The, the frozen reasoning core. I say it's frozen because typically the weights of a model don't change. Uh, and I say typically because, uh, we are actually... I, I'm actually in the process with Cassius, sitting right there. We're going to record a, a new course with Andrew Ng on continual learning for AI agents. So if you're interested, just check that out in a couple, couple weeks. But the thing is that ninety-nine point nine percent of the time you will

  33. 16:09

    have a model, and the weights of the model will never change, um, unless you have millions of dollars or, you know, a lot of time or GPUs. It's very hard to change the weights of a model. So there are other ways in which you can affect the reasoning without actually changing the weights of the model. But this is motivation for co- for the continual learning part that we will see in the workshop. Where does the memory live, right? The files versus databases dilemma that we've been

  34. 16:39

    having, uh, since January kind of. Some people are very maximalists of files, and some of us are... Well, I will not include myself, but some of... some people are also maximalists of the database. Um, and you know, both things are right. Files have convenient things, convenient characteristics, and also the databases. So the files, right, they are very easy to... Like they're very... They, they

  35. 17:09

    match the model's instincts. They are very easy to create. They are very easy to insert and append data into files, right? It's very, it has a very unstructured nature to it. And databases on the other hand, or the conception that people have, is that they have a very structured way, right? But that's when you're thinking about SQL, like S-Q-L. And the thing is that you don't actually need to ch- like choose one or the other. You can actually

  36. 17:38

    use both of them. Like files are attractive because the model speaks them, and they kind of work very, very easily with operating systems. They follow POSIX semantics, so they are compatible on Debian, Ubuntu, any other operating system that you might want. And they also have some disadvantages. For instance, they don't have transactional consistency. So this is, uh, one of the problems that I wanted to talk about. If

  37. 18:09

    you are a degenerate like me, and you are working, I don't know, with eight, sixteen, thirty-two agents at a time- Uh, the problem with this is that files cannot be modified and inserted and modified at the same time. So what is the solution nowadays to not having transactional consistency and working with files? Any suggestions?

  38. 18:35

    Worktrees.

  39. 18:36

    Worktrees. Exa-exactly. So agents, when they, when they wanna modify a file but another agent is working on this thing, they just create a, a, a different worktree, right? They will do all the progress in the worktree, and then after the implementation is done, they will merge to master or domei- merge to main, sorry. So this is the way that is a workaround against not having transactional consistency, right? And you also have other

  40. 19:05

    characteristics, like for instance, hybrid search. Um, this is not available on files, but is very ha- very easily achieved on databases. Um, you don't have backups either, so if your operating system gets corrupted or something, you will just lose everything. And these are things that the database fixed 35, 40 years ago, and people have kind of forgotten about that. So what I want to do is to give you kind of the best of each

  41. 19:37

    of the, of the implementations, right? You can get the benefits of files and the benefits of databases in the same place, and we'll see why. But these are some of the advantages, right? You have ACID consistency, so atomic operations, consistent operations, isolated and durable. You have high availability. You might replicate the database and let it be, you know, in three different places in the world with a replication factor. You also have vector search, which is very easy.

  42. 20:07

    In files, you just have to do, like, regular expression matching or a derivative of that. And, you know, lots of other, lots of other things. So what we will do on the, on the actual workshop is we're gonna run an actual example of trying to modify a file with three different agents that will be working on the same file and trying to update a counter on this file, and let's see who's faster. I know the answer of course, but you will,

  43. 20:38

    you'll get to know it later. But what I want to introduce to you is that we have a thing called the Oracle DBFS or the Database File System where you can store files inside the database on a file system, and that gives you, you know, lots of the advantages that we said. You will get files with ACID transac- uh, transactional consistency, you will get vector search, relations, security, high availability, et cetera, right?

  44. 21:08

    And my suggestion is that since a hybrid system works best, um, we can have things like, for instance, uh, short-term memory, right? That lives in files, and when something needs to be promoted into a long-term memory, for instance, user preferences, things like this, they can go into a more structured space like a database, and this is what we'll do in the workshop.

  45. 21:34

    For the encoding, the search, and the retrieval, which was another of the components in the agent harness, we also have a LangChain integration that I wanna mention called LangChain Oracle DB that makes it very easy to insert into vector stores, search in the vector stores, and retrieve from the vector stores. So also we have another thing called in-database embeddings. Have you ever heard about in-database embeddings? Yes? Okay.

  46. 22:04

    So in-database embeddings is very convenient, especially for enterprise customers, because you will get the embedding model inside the database so that when you're doing embeddings, you don't have to call a third-party service. And that's very convenient for isolate, like, data retention and data security purposes.

  47. 22:25

    So this is what a, an, an embedding searching and re-ranking model would look like from a chatbot interface, for instance, right? You have a lot of documents, then you kind of use a bi-encoder. So a bi-encoder is essentially an embedding model. You will create enco- uh, embeddings out of this document. You will split them and create vectors, put it into a vector store, right? And then you will get a user prompt, a user query, a question. You can also create an embedding out of

  48. 22:55

    that and then compare it to what you had previously on your vector store. And this is how you get the most relevant vectors in, in an answer. Then you will run an, a cross-encoder, which is a re-ranker, and take a look at the question plus the result, and that's how questions are answered kind of in, in, in RAG applications, right? So these things we are also going to, to touch briefly on the workshop.

  49. 23:27

    And the thing is that, you know, imagine this RAG application. From the beginning, from the documents you create, you do lots of things, right? You do tokenization, then you create the embeddings. Um, you have to do things like the duplicating the data, normalization, uh, personal, like redacting personally identifiable information. Lots of things, right? And then on your, on your store, you have textual data from the documents. You have metadata, which is

  50. 23:57

    typically stored in JSON. You have vectors, which are represented as, as dense embeddings of 32, uh, bits. Like y- you have so many types of data that you need to work on that typically what people have is, for instance, I don't know. I will not name names so I don't get in trouble, but, you know, you might need, like, different databases for each one of these, right? You, you get what I mean? So there is a very high, nowadays, very high- Data synchronization

  51. 24:26

    logic overhead for AI engineers or even for agents, right? So lots of maintenance required and, and, and lots of engineering effort on it. And this is something that we want to avoid. So what I want you to do today is just to try us out as Oracle. Uh, try our database. We have support for every type of data imaginable that you can think of. Um, we are called the converged database. We are the

  52. 24:56

    only converged database in the market that we support JSON, we support relational, we support, uh, spatial, graph, JSON. Anything that you can think of, you'll be able to, to create with us. And you'll get, like, one database engine, uh, one query interface, and, uh, one single development stack. Everything will be in the same database, so also for data security purposes, you just have to, you know, secure and

  53. 25:26

    save all your data in one place. So a single attack vector is what you need to worry about. You don't need to worry about updating five different database. You can just worry on securing one database. So we can be the engine of your AI applications, not just a single step, which is what people think of when they're working with databases, right? Um,

  54. 25:53

    yeah. So agent memory. Agent memory is essentially a description of all the mechanisms and the systems that allow an agent to retain, reuse, refine, and recall information. We wanna reuse the data and refine it in the process, but we wanna reuse the data so that the next time that an agent or us as engineers, we are working on a problem that took us three hours,

  55. 26:23

    the next time that we observe this problem, the problem becomes easier either for AI agents or for us. And agent memory has lots of, lots of components, right? We have short-term memory, we have long-term memory, and then we have shared memory, which is something that's relatively new. Um, and this shared memory is kind of what happens when a sub-agent is communicate with it, it's communicating with its, with its parent, for instance, or two agents are trying to collaborate on solving one specific problem, uh,

  56. 26:53

    together. And then what I want you to, to see is that depending on the type of memory on or, or the type of thing that we wanna store, it will be in one place or the other, right? So short-term memory is kind of ephemeral, it's very short-lived, and it's very useful for things that are happening right now. For instance, the to-do list on a coding agent, right? It's happening right now, but you actually don't wanna save that, um, you know,

  57. 27:24

    in long term. But then there are things like, for instance, episodic memory, things that, previous conversations that you've had. That's very useful to have, for instance. Um, I don't know if you, if you use Claude. Some people are using Claude, um, here. Uh, but in, in Claude, you might take your previous conversations and try to refine all your workflows and your skills based on the things that you've done in the past. So this is something that's makes sense to, to save in the long run, right?

  58. 27:54

    You also have things like procedural memory, previous workflows that have worked very well for your system. For instance, you worked on this front end, and then you created a very beautiful design that you like. You might take the whole conversation and turn that into a workflow that is repeatable and re-reusable, so that the next time you're working on a front end, the results will be similar to the previous one, right? So these are the things that we, we will see on the workshop. And some

  59. 28:24

    people say, "Okay, why do I even need all of these?" Like, people that are very-- that have animosity towards agent memory. People say, "Okay, let's just put, like, fifteen million, uh, context window," even though it's not, not possible yet. But some people really believe that this is the, the thing, right? But the context window is a type of short-term memory, so it's useful for some things, but not for all of them. And one of the problems that, that happen with,

  60. 28:55

    with working with a, with a context is this thing called context rot or context degradation over time. And what happens is that the more things that you put into the context window, the less attention there will be for each one of the things that are in the context. So at the beginning of a conversation, and this is a, a famous problem that, that the context window has, is at the beginning of the conversation, it will stay on track a lot because you're just, you

  61. 29:25

    just started the conversation. So let's say that, for instance, like in school, right? Or if I'm having a conversation with you, um, I might have the, a chat with you for thirty minutes, and your attention to me is very, very high because I've just started speaking. But if the conversation goes on for eight hours, then you wanna punch me, right? Because I haven't shut up, and you haven't learned almost anything at the end. And the, the, the problem is that attention, like us humans, is very limited. So the

  62. 29:55

    more things that you put in the context window, the attention matrix of the neural network will al-also degrade, and it will, like, scale quadratically because the attention matrix, you know, is one token. It's essentially a, a reference of one token for every other token in the context window. So the bigger the context window is, the matrix scales on the number of rows and on the number of columns as well, which is a problem. So you wanna keep the context window as small

  63. 30:25

    as possible to avoid context rot.

  64. 30:29

    And memory engineering, the components of memory engineering, um, so it's like designing, building, and doing everything around building agent memory for AI agents. And we want to retain, recall, reuse, and refine this data in some type, i-in some way. So it is a discipline, right? And here we have Valentin, for instance, and we have people from Oracle, uh, my colleagues all over the,

  65. 31:00

    the room. So if you see them, you can say hi to them. Valentin here, he's working on the development, or he worked on the development of this agent memory package, so if you have any questions about this, you can ask him. Um, OAMP or Oracle Agent Memory Package is the managed answer that we have in Oracle to lots of the problems that you will find when working with this type of data. For instance, as an engineer, if

  66. 31:29

    you do not have a managed solution, you need to make a lot of decisions. You need to see when do I do context compaction? When do I summarize? How do I write it, the summarizer? What do I keep? What do I not keep? Um, what do I extract from my previous conversations, and when? How many tokens do I use for this problem? And lots of these things, right? With OAMP, an Oracle Agent Memory Package,

  67. 31:59

    you can actually just do all of this in one single line of code. And we want to make it easier so that we reduce the cognitive load of AI engineers and AI agents as well. And with this context card, uh, thing, you will get something like what you see on the left. And this is kind of an explanation of what each part does on it. But essentially, the, the topics, uh, that you see, for

  68. 32:29

    instance, from a-- any conversation you can create a context, uh, card from the thread or from the conversation. The topics will orient the model. The summary will compact the thread, and it will state the current intent of an AI agent. And the relevant information has three different parts, which is the, the facts, the preferences, and the memories that are associated to this conversation. Uh, then you have the episodic memories that explicitly,

  69. 32:59

    explicitly track the unanswered question that is going on right now. And the recent messages give, like, local context to the model. So whenever you're feeling, like, unsure, what do I need to do right now with the data that I have or this conversation, you might use the Oracle Agent Memory Package on, on Python, and it is all assembled by one single call.

  70. 33:23

    Question.

  71. 33:23

    Yes.

  72. 33:24

    Um, so you're not suggesting that this goes directly into the model. This is actually something that is used by the harness-

  73. 33:32

    Exactly

  74. 33:32

    ... to finesse what's going into the model.

  75. 33:35

    Yes. Yes.

  76. 33:35

    And that is the component that you're talking about that Oracle uses. It knows about the structure, and it, it uses this structure to-

  77. 33:41

    Exactly. Exactly. So this structure-

  78. 33:43

    It's essentially-

  79. 33:44

    This is an abstraction that we build on top of the model because the model we have no control over in most cases, right? Um, the things that we can build on top of that, whatever abstractions we want to make the model perform as reliable, as reliably as possible. Yep.

  80. 34:04

    So the memory and the semantic layer, they kind of work together. We-- I know we talked only about memory components. Uh, I'm gonna walk you quickly because I'm-- I don't have a lot of time, um, to the semantic layer, to the semantic components of it, right? And the semantic layer is the, the meaning of what's going on behind it that you kind of assume that that happens, right? So anyone from Germany? Okay, so I apologize for my

  81. 34:33

    pronunciation, but I'm gonna try. So the Umwelt is like the ambient of a model, and this was coined by Jakob von Uexküll, um, and this guy said that essentially every organism in the world, uh, that is living perceives its reality through a lens, and the lens is what it has access to. For us humans, for instance, we have our eyes, our senses, right? So everything that we perceive and

  82. 35:03

    everything that we live, all our experiences are seen through this lens, right? And an agent doesn't have human-like senses, but it has also a kind of semantic layer or a semantic lens that everything that you ask it is filtered through. And this lens is essentially what you train it with and then what you also give context to. So everything that you talk to the agent, right? When you talk to

  83. 35:33

    the agent, this agent will look it through the Umwelt. And the semantic layer is essentially the agent's Umwelt. So the Umwelt is what, what, what I wanna focus on. Like for instance, organizational knowledge or enterprise knowledge. Things that when you're working with a colleague, you don't mention this because this is already, you know, known between you and your colleague. You don't need to specify everything that you work on every

  84. 36:03

    day. But if there was someone else, like a, a, a child that wanted to, that wanted to start, uh, working with you, you would have to specify everything very, very in detail. These are all the Umwelts, and this is what the semantic layer captures. So the Umwelt is the actual tribal knowledge that, that an, uh, an enterprise has, right? Institutional knowledge as well, like how the data is modeled, how the queries are executed, what is the metadata.

  85. 36:34

    All these things are in the semantic layer. Um, and quickly, just for you to know that we're also going to implement a very minimalistic agent loop, and an agent loop is like the driver of the model, right? It lets a model be kind of independent and autonomous, and it is what makes a model... It, it, it turns a model into an agent, right? And this is like

  86. 37:04

    the simplest agent loop that you can find, is kind of this observing and reasoning and then acting part that happens all of the time, all of the time. And, you know, it's, it has to be failure, uh, failure resistant so that we never exit the loop. This is the idea. That the agent, you give autonomy to the agent... Well, you give autonomy to the model so that it becomes the agent. And then on the context engineering

  87. 37:33

    part, which is the last part of the seven layers of an agent harness, you also have lots of things that you can do. For instance, the toolbox pattern and the skill box pattern, which we are, uh, this is on the workshop as well. And these are ways in which you can store the available tools and the available skills of a model so that they are retrieved optimally. And what you wanna do is only retrieve the tools and the, the skills when they are actually needed and put it

  88. 38:03

    on the context window only when needed. Every iteration of an agent loop, you will see if this is actually the right place, and then if it's not, you can just take them out temporarily. So,

  89. 38:20

    uh... Oh, sorry. I thought I saw a question. So we will see all of this in the workshop. I don't wanna take up too much time. But the idea is that we will assemble the context at every iteration on the agent loop. And then continual learning is the part that, that we talked before about the ability to get better over time with the things that we've done with a model, right? So a frozen model, as we saw, it doesn't get better, right? But

  90. 38:51

    there are ways in which we can make an agent improve in the weights, which is the part that we are gonna work on, uh, in the representation part, so on the embedding and the re-ranking part, and also in the context window. And these are the three types of continual learning techniques. We are going to focus on the workshop on the context and the token space because it's one of the easiest ones and a- one of the least expensive ones

  91. 39:21

    as well. I assume no one is a millionaire, or not many of us are millionaires, so this is also the most achievable and the most realistic way to change the model behavior over time.

  92. 39:36

    So without further ado, I just want to introduce you to this part, which is skill promotion and workflow, workflow promotion. So those skills or those workflows that you've done for three, four hours, right? You've been working for the whole day on a workflow. You were able to successfully do your job, um, and then these things can actually be retrieved. They can be stored into the

  93. 40:06

    memory components that we'll see. And then we will see about skill promotion. So if we promote a skill, for instance, we can promote it through a distillation process and create a better skill.md than the original. So we will retire the old version and update from the new version. And this allows us to do some kind of continual learning on our own skills that turn them into more customized skills for ourselves, for our

  94. 40:35

    tone, our way to work, our prefer-- like our preferences. Like for instance, let's use this specific library because I really like the look and feel of it. Let's use this, uh, specific database engine because it has less bugs, or I found it easier to work with. All these things can be promoted into reusable and improvable skills over time. So this is what the whole harness would look

  95. 41:05

    like at the end of the, of the workflow. Uh, sorry, at the end of the workshop. And hopefully what you leave this, uh, y-you'll leave today with a better understanding of all the specific components that make up an agent harness. So let me go to here before I forget. If you are interested in the Oracle Agent Memory Package or are working on the agent memory package,

  96. 41:35

    we have a Discord server in which you can just chat with us as staff. If you're a Discord user, just feel free to, to join this Discord server. I'll put the link later as well. But without further ado, let's begin with the actual workshop, and I will tell you how. So let me show you first what we are going to build, right? This is an AppBook. Oh, sorry. Uh, you don't see this. Hey,

  97. 42:06

    Ignacio. Yeah. Some people have joined later, so could you show the QR code again so that they can scan and get the instructions? Yes. Uh, the, the, the first... Instructions. Yes, the workshop instructions, right? So for those of you who weren't here, you can just go into this website, register with your GitHub user, and then you will get an invitation like this to- GitHub repo ... a GitHub repo. And from here, we will create a GitHub Codespace.

  98. 42:36

    Uh, so please make sure to do that right now. And all my colleagues are, are around the room to answer any questions that you might have during the creation of the codespace, et cetera.

  99. 42:49

    Yes. Yeah. So we can't

  100. 42:55

    even work on the internet is working or not. The internet? Are you having issues with the, with the internet? Yeah. Okay, let's see. It sucks. So do you guys have my-- the same Wi-Fi? Um, AI.engineer Wi-Fi? No. Okay. So can someone assist people with the Wi-Fi, if possible? I don't think you can, I don't think you can help each and every one of us. You need to fix the system. Yeah. Please fix the system, whoever. Do it. I ca- can't. Just like based on

  101. 43:25

    Zenyon locations.

  102. 43:28

    Can you guys see it now? Yeah. Yeah. Uh, my colleagues will, will take a look at that if...

  103. 43:43

    Yeah, you yourself please try it. Right. Yeah. Yeah, it, it always happens, you know? Yeah,

  104. 43:48

    it does. Yeah.

  105. 44:00

    All right. Are those slides available? Say again, sorry. The slides that you were showing, are they available anywhere? Yes. They will go into the AI-- I believe they will, they will go into the AI Engineer. So if you go into the session, uh, I'll make sure to, to, to go there. If not, if you either join the Discord or any other, you know, you can just message me as well on LinkedIn. I'll gladly give you the, the slides if you want. All right.

  106. 44:30

    Um,

  107. 44:34

    video team, can you turn me on? Uh, sorry, switch me on, please.

  108. 44:43

    Uh, oh, perfect. Thank you. So what I'd like you-- to show you is that we have built also, apart from the notebook that we're gonna go through, we also built this AppBook. And with the AppBook, you can actually test every of the individual components of an agent harness, uh, individually, right? So just for me to show you that this is possible, and you will get this automatically deployed in GitHub Codespaces as well. So you will have, um, this, uh,

  109. 45:13

    already deployed, and you will say, "Well, how am I actually making requests?" We are gonna be making requests to, uh, Oracle, uh... Oh. Okay, not found. Demo time. Um, the idea is that... Yeah, okay. I, I know what's happening. So I lost connection to my, to my Codespace because of inactivity. Let me restart. Uh, this AppBook is gonna allow you to

  110. 45:43

    create and chat and interact with the whole agent harness, and the models that we're gonna use are actually deployed on a managed service that we have on Oracle called OCI, the Generative AI Service. We have partnerships with Google, with Meta, and with OpenAI, and with xAI for the time being, and we can actually provide inference to their models through our managed, uh, server. So think of us as the

  111. 46:14

    enterprise open router, if you'd like. So let me just go so you get started, uh, and you can get started. This is the repo, right? So the agent harness workshop. If you're here, and thank you for starting that, by the way. Um, if you're here, you just have to click on Open in GitHub Codespaces, and it will take you here. And you can select as many cores as you like. Uh, if you... So if you wanna

  112. 46:43

    create this with eight or sixteen, please don't because I, I don't-- I'm paying for this myself. But, uh, you might also create this with more resources. But just create the Codespace, and I'm gonna pay for it, as I said, so don't worry about that. And this will create a new, a new Codespace instance. And once it finishes, which it hasn't yet, I will show you what we can do with the AppBook and the

  113. 47:13

    notebook. But the idea is to use the remainder of the time. The-- We have one hour and fifteen minutes to go through the notebook, and you will actually have to... Let me show you on, on GitHub, actually. Um, you can go here, and inside the notebook, after you deploy the Codespace, you will get a, a student notebook here. And this is one part of the, of

  114. 47:43

    the workshop, right? And here we're gonna implement the whole agent harness substrate from scratch. So we're gonna start with only the model, and then we're gonna keep adding layers to the agent harness, as we saw the seven layers, right? And we're gonna be here to, to assist you. You will have to do some to-dos. So let me show you. There are a couple of things to do for you.

  115. 48:10

    So for instance, the first thing that you need to do, you need to create a question, right? The simplest thing of everything. You just have to communicate with a model with no agent harness implemented, right? So the first thing you'll need is to ask any question that you like. This will go through the OpenAI Completions API, and it will return you a response. This is the simplest of all. And then we will start adding search, retrieval, encoding,

  116. 48:41

    and all the other components that we, that we have seen. There are a total of nineteen things that you need to do. If you finish first, raise your hand, and I will give you a hug because I don't have anything else. And yeah. So anyone already deployed the, the codespace?

  117. 49:04

    Okay, one person. Okay, good job. So any... Yeah, if you have any questions or any problems, uh, let me know, but this is what it looks like when you have it deployed, okay? So let me go through this quickly.

  118. 49:19

    So you will get an app, right? Um, and the app will already have everything that you need. If you want to deploy this app yourself, you might change this Total Recall port here. Let me show you how I did it again. I go into ports, I clicked on the visibility of the port, and I changed this to public.

  119. 49:50

    And then this is now using a public gateway so that if I open the browser, I can actually get access to my individual, uh, Total Recall instance. So for instance, if I ask a question

  120. 50:07

    like, "Show the total revenue by product category," and of course, this is mission control, so this is-- this has all of the components that we've, uh, spoken about implemented already. You will get also a context window visualization of the things that are going on, on the background. For instance, these are the tools that were selected by the agent harness to be loaded into the context to answer this question. This is the schema that's happening, and then we can also take a look at the individual agent traces that are going on.

  121. 50:37

    For instance, which skills, which skills are being loaded, what sources of data are we taking, and what are the tool calls being used? Like for instance, running a skill commands, et cetera, to answer your question. So the question is still being built. It's taking sixteen steps, and, you know, it's gonna... For instance, here it detected an error, right? But because our agent harness is, um, fault-tolerant, it will keep

  122. 51:06

    trying because it's pa- it has an agent loop implemented, et cetera, right? So all these things will actually yield you this result, uh, from, from the data in the database, right? And you can actually go into the context window, see how many tokens we're using. And if you're particularly interested in some of these parts, for instance, the Oracle agent memory package, for instance, you can interact also with only the, uh, the context card, how to-- how the context card is being

  123. 51:37

    created, et cetera, et cetera. So you will all get this deployed in your Codespace.

  124. 51:43

    So I have a question.

  125. 51:44

    Yeah.

  126. 51:46

    Um, so you showed that your harness is choosing which tools to use.

  127. 51:50

    Yeah.

  128. 51:51

    How effective is it when you have, like, an organization of thousands of tools that could be able to put more standard tools?

  129. 51:58

    So si-- his question, for those of you who, who didn't, uh, listen, were what happens if you have thousands of tools i-in an organization, right? Well, we introduced this concept called the toolbox pattern in this course with Andrew Ng. And the thing is that you can optimize so that the retrieval of these tools is negligible. So you will use, uh, hierarchical navigable small world indexes

  130. 52:29

    that use a graph, um, a graph structure, and then each node in the graph is a vector index or a vector store. And then you can actually, like HNSW indexes, they can be createle-- created for these types of problems only in a database, not, not in files. Um, so great question. It doesn't have to worry you until you reach millions and millions of users. And tool calls, like different specific tool calls, you might not

  131. 52:59

    get five million. It's more like reading a file, writing a file, grepping, and all these kinds of tool calls that, that, that we do every day. They typically don't exce- uh, like exceed a hundred or a thousand. Um, but by being on a vector store, you abstract the complexify, uh, the complexity and the amount of it. You can just make a, a query to thousand just as simply as you would ten thousand because of the

  132. 53:28

    storage component that we, we're using, which is an HNSW index.

  133. 53:33

    So le-let's assume that maybe if you have two different organizations within the organization of business units, they have access to some tables, let's say like, yeah, RAGs.

  134. 53:45

    Yeah. Some of them they have access to confidential data, for instance, some of them don't.

  135. 53:49

    Exactly. But then, so both teams make tools or both of, like, both business units make tools. But the natural way of things that the tool description is going to be similar, like, or overlapping.

  136. 54:01

    Yes.

  137. 54:02

    So would the harness try to read both tools and then figure out which one gave the best answer or is it like-

  138. 54:08

    Great question. So his question was what happens if the tool descriptions that two different companies have are very similar, right? And one of the things we, we can do on the toolbox pattern is actually generate with LLM enhanced toolbox descriptions for these-- for specific tools to increase the separability of the, of the tools. So if you think that the current descriptions of a tool or of a skill as well are not enough, you can actually enhance them with LLM retrieval like you

  139. 54:38

    would, uh, instead of running, for instance, named entity recognition, which is very, uh, caveman style, you can also do something more s-sophisticated, which is enhancing the, the kind of like docstring, uh, enhanced representations of a tool so that you increase the separability when you're doing vector search. Does that answer the question?

  140. 55:08

    The agent loop, you said?

  141. 55:10

    Yeah. Like, like we, uh, like we were shown that

  142. 55:15

    Oh, yes. Yes.

  143. 55:17

    So-

  144. 55:19

    Let's-

  145. 55:19

    ... in some cases we have seen that sometimes, like, it really needs to stop because it's just, like, not, like, achieving its goal. Like, how, how do you balance an agent running autonomously or whatever, and then like maybe you know that it just starts hallucinating for whatever reason-

  146. 55:36

    Yeah

  147. 55:36

    ... and it needs to come back. Like, do you harness... How do you find the sweet spots where we have to stop it and retry from that point?

  148. 55:45

    Yes. So there, there is a, there is a limit, of course, because we don't have infinite money, so we can't just keep trying and trying over and over if the generations are just hallucinations, right? Uh, there is a cutoff point that I set depending on the frontier LLM that I'm using. For instance, for Grok 4.1 fast reasoning, which is the one that we're using here, um, I found that a value of eight to twelve,

  149. 56:15

    like maximum number of tool calls before giving up, is correct. Uh, depends also on the, on the accuracy and the, and the correctness of the model. Like for instance, in this case, it was just able to, to, to, to show it in two. Before, it was able to find it in sixteen. So time-- sometimes it will have a faster retrieval, sometimes you will need to be a little bit more patient. But what I like to define is a variable, like a hysteresis variable, that holds the amount of

  150. 56:45

    patience that the harness will get with the model. Then you can do some other things, like for instance, if the model is, uh, garbage, you can just use or use like a router for more different... Like, for difficult types of problems, you will route this problem to a frontier LLM, and then for the easier types of problems, you can just attach an open-weight SLM, for instance, which will be more, more interesting.

  151. 57:13

    Do you recommend which kind of models for harness per intent?

  152. 57:17

    Yes. Yes. I think that's... Like, my personal opinion is that the future is a mixture of small experts for, for each type of problem. Some companies that they have developed like a hundred million parameter models that work exceptionally well for one type of problem, and if you just have an aggregator or... and an orchestrator that routes the correct model to that, like the correct query to that model, then you will have a

  153. 57:47

    very token efficient type of, uh, agent harness. So you, you, you can actually do model routing inside the agent harness. Some companies are actually essentially only doing that, and they will charge you like, "Let's do... I'm gonna charge you ten percent of the tokens that I'm going to save you from the original, uh, amount of money that you were gonna spend." Right? Uh, so let's, uh, let me show you the, the student notebook, right? So

  154. 58:17

    once you are inside the student notebook, for those of you who are not familiar with Visual Studio Code, you might need to select a kernel here so that you run the, the notebook. So you might select, uh, Python 3.12 here, and then you can just start reading. If you stumble into a to-do that you need to do, you have a docs folder with all the explanations, the individual explanations that you need to

  155. 58:47

    solve this specific problem. For instance, the first to-do, which is just talking to the reasoning core, to the model layer, without doing anything else. It will just explain what you need to implement on that cell so that it works and you can proceed to the next one. And also have the solution. But if you, if you're not lazy, you will try, and I hope that you, that you try. And we will be here answering questions around the room.

  156. 59:17

    I'm gonna turn off my microphone, just come down with my colleagues, and then let's chat about it, uh, for the remainder of the, of the session. And if you have any questions or you'd like to talk, um, more to us, please come by and, and swing by the booth. The Oracle booth. We'll be there every day, uh, all the time. And, you know, it makes, it makes us feel good, like we are wanted and we have friends. So if you wanna come up to us,

  157. 59:47

    just chat with us a little bit. It, uh, it will be nice.

  158. 59:51

    And what has it done? Internet never been working.

  159. 59:55

    Internet? How is the internet?

  160. 59:57

    It didn't work like you would call

  161. 1:00:02

    it-

  162. 1:00:03

    Wow.

  163. 1:00:03

    Like you get logged in to... Who would you get in? Who has it working as of this?

  164. 1:00:11

    I feel like Caesar.

  165. 1:00:20

    All right, so I'm gonna leave this here. I'm gonna keep this here, and I'm gonna come down.