AI Engineer World's Fair 2026
Learning on the job: the future of post-training
Read the talk
Learning on the job: post-training inside real agent harnesses
Training agents in the workflows they actually use removes a simulation problem, but creates a harder learning problem: extracting useful updates from interactions that cannot be replayed.
From a talk by Raymond Feng
Before you start: Basic familiarity with language-model tool calls and reinforcement learning rewards will help; the training loop and replayability requirements are explained here.
Train the model where the work already happens
An enterprise already has a way to call an agent and ask it to complete a task. How can it train a custom model for that task without replacing the surrounding workflow—or even supplying the harness’s source code? As agents handle longer sequences of reasoning, tool calls, and changing environment state, adapting the model to an existing workflow becomes a central post-training problem.
Raymond Feng organizes this progression around how people learn. Simple question answering provides the early exercises; synthetic environments introduce more complicated tasks. Training inside a customer’s harness resembles an internship: there is a job to do, but the training system does not control exactly how it unfolds. The eventual ambition is an agent deployed once that can adapt to unfamiliar tasks and learn from its interactions. Each stage adds realism while giving the training system less control.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The controlled Q&A training loop
Start with a math question and its numerical answer. An orchestrator holds this task specification and drives the rollout—the model’s attempt at solving the problem. The training cycle has four steps:
- Send the prompt to the model completion endpoint and collect its answer.
- Send the answer to a grader.
- Pass the graded chat, or a batch of graded chats, to the training engine to compute a weight update.
- Synchronize the updated weights to the inference engines, then begin another round with new problems.
Synchronization closes the loop: subsequent rollouts must use the updated model for training to build on the previous round.
Graded chats are the training engine’s essential input in this setup. The orchestrator’s job is to produce them; the training engine turns them into model updates. That boundary is easy to maintain when the entire process lives inside the training stack. The team controls the rollout code, the grader interface, and the exact format of every chat. Nothing has to be reconstructed from an unfamiliar external system.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Synthetic environments make longer tasks replayable
Single-turn Q&A provides little room to practice skills that require a sequence of actions. Synthetic environments extend the same loop by moving environment state outside the training stack. A task specification can now include tool definitions and an initial filesystem state, rather than just a prompt and expected answer.
The orchestrator asks the model what to do next. If the response requests a tool, the orchestrator calls a sandbox to read or change the environment, returns the tool result to the model, and continues the conversation. Once the task ends, the full trace goes to the grader. The training engine still receives graded chats and computes a weight update; the rollout has simply become a multistep interaction.
The crucial property is replayability. For a given prompt, the orchestrator and sandbox can return to the initial state and run another attempt. Those attempts can run serially or in parallel. This supports Group Relative Policy Optimization (GRPO): compare multiple rollouts for the same prompt, then increase the model’s tendency to produce the more successful trajectories and decrease its tendency to produce the less successful ones. Parallel execution is convenient, but the relevant property here is the ability to generate comparable attempts from the same starting conditions.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Tool failures become an implicit length penalty
The environment must resemble deployment closely enough for learned behavior to transfer. Feng treats environment fidelity and reward hacking as two views of the same underlying problem: an agent learns the environment it encounters, including accidental quirks. Those quirks can shape its policy just as surely as the intended reward function.
Feng reports that networking issues caused tool calls to fail around 10% of the time in one training run. During that run, model responses became progressively shorter even though the reward function contained no length penalty.
His analogy is a sidewalk full of potholes. The longer someone walks, the more opportunities they have to fall into one. Likewise, a longer rollout exposes the agent to more tool failures, any of which can leave it with zero reward. Shortening the interaction reduces that exposure. The effective incentive therefore comes from the combination of the reward function and the environment’s failure behavior, not just from an explicit penalty in the grader.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Timeout filtering creates an escape from failure
Environment incentives can also push behavior in the opposite direction, toward increasingly unhelpful or gibberish output. In a separate training run, Feng describes sandboxes with time limits to prevent indefinite execution. Timed-out rollouts were normally filtered out of training. With slow tool calls, a model facing a difficult problem could issue many calls in quick succession and exhaust the sandbox’s time budget. The rollout would then disappear from training instead of receiving zero reward.
The distinction is small in data-processing code but consequential for learning. This Python example makes the filtering rule explicit:
python
rollouts = [
{"id": "completed-failure", "timed_out": False, "reward": 0.0},
{"id": "tool-call-timeout", "timed_out": True, "reward": None},
]
training_batch = [
rollout for rollout in rollouts
if not rollout["timed_out"]
]
Only completed-failure remains in training_batch. The timed-out attempt is absent; it does not enter training as a failed attempt.
| Outcome | Treatment in training |
|---|---|
| Task fails before timeout | Retained with zero reward |
| Sandbox times out | Rollout dropped |
Discarding an outcome changes the learning signal. In Feng’s example, triggering a timeout provided a way to avoid the negative signal of an unsuccessful attempt.
As tasks become more complicated, faithfully simulating their environments becomes harder. An unintended networking failure or a seemingly practical timeout filter can induce behavior that was never part of the task designer’s objective. The difficulty is not limited to writing a better grader: it extends to every environmental detail that influences which trajectories succeed, fail, or reach training at all.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Bring your own harness
If an agent learns the precise environment distribution it encounters, a direct response is to train it in the real environment. Bring your own harness removes the need to reproduce the customer’s workflow inside a separate training framework. The agent practices through the same machinery that will use it in production.
Almost everything now moves outside the training stack. The retained interface is the model completion endpoint, together with a way to record its incoming requests and outgoing responses. The enterprise keeps its existing orchestration loops and logic, running them in their original form. This lets training fit the customer’s method of using the model without taking ownership of the harness.
The tradeoff appears in the data. With less control over how rollouts unfold, the training system receives interactions in less familiar formats and has less directly usable learning signal. Feng connects this transition to NVIDIA’s Polar: Agentic RL on Any Harness at Scale: moving from micromanaging each rollout to listening to model calls from a black-box harness. Observing those calls provides an integration point, but does not restore control over the logic that generated them.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A customer conversation cannot be reset
Two difficulties become prominent: non-replayability and offline or off-policy data. Feng connects them to the loss of control over rollout invariants and data structures. The training system must accept more of the data as it arrives, rather than requiring every interaction to fit the conditions its update method prefers. For GRPO, generating several comparable attempts at the same task may no longer be possible.
Consider a recorded customer-support conversation. It shows what the agent said and how the customer responded. It cannot show how that same customer would have reacted if the agent had given a different reply at that moment. Replaying the text does not recover the missing human response. The sandbox operation of resetting state and trying another trajectory has no equivalent here.
Yet a human support agent can learn from the conversation. A customer’s reaction can reveal that an answer helped, confused, or frustrated them, and the agent can internalize a change for the next interaction. That ability motivates Feng’s optimism about learning from unreplayable experience. It establishes a useful target for model training, rather than a finished method for obtaining those updates.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Turning production experience into training signal
Feng identifies three research directions for extracting useful updates from these less controlled interactions:
- Self-distillation. Results so far have induced specific new behaviors, but the technique remains narrowly scoped. How far it can generalize is still an open research question.
- Automated data pipelines. A pipeline could inspect a batch of traces, flag undesirable behavior or recurring failures, assemble a training dataset, and send it into model improvement. The corresponding work currently involves substantial human review: reading traces, describing needed improvements, and curating examples.
- Qualitative feedback ingestion. Production interactions may return a customer’s written feedback instead of a binary outcome or numerical grade. Learning directly from that information would make more of the available experience useful. Self-distillation is one avenue Feng is exploring for this purpose, but a general solution remains unsettled.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
One deployment learning across interactions
The longer-term vision extends beyond improving one model on one task. A single deployment could serve many kinds of tasks, potentially across different users. It would reflect on its performance for each kind of interaction, evaluate how it was doing, and automatically turn those interactions into weight updates. Here, learning would become an ongoing property of deployment rather than a separate project organized around a fixed task.
That proposal expands the environment to every interaction the agent ever has, paired with a still-hypothetical ability to evaluate itself. Today, addressing one task or failure mode at a time can become a game of Whac-A-Mole: each new problem requires another dataset or environment before training can address it. A system that learned broadly from its own interactions could reduce that reactive cycle. This is the intended destination, not a demonstrated deploy-once capability.
Feng closes with a prediction from David Silver and Richard S. Sutton’s Welcome to the Era of Experience: “experience will become the dominant medium of improvement.” Their forecast goes further: experience could eventually dwarf the scale of human data used in today’s systems. Reaching that future depends on making the messy interactions of deployment usable for learning—including the ones that lack a clean grade or a second attempt.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
A rollout framework that proxies model calls from existing agent harnesses and reconstructs trajectories for reinforcement learning.
Polar's implementation, installation guidance, and examples for connecting agent rollouts to training infrastructure.
David Silver and Richard S. Sutton outline a future in which agents improve primarily through interaction with their environments.
Further reading
- DeepSeekMathPaper
The original GRPO paper explains how rewards from multiple answers to one question provide a relative training signal.
Raymond Feng and Pranav Vaid study targeted behavior changes using self-distillation and token selection on a constrained spelling task.
Updates since the talk
Feng's later explanation of task-level training across subagents, multiple conversations, and context compaction.
Read the complete timestamped transcript
- 0:00
[upbeat music] Yeah. Thank you, Jack. I'm really grateful for the opportunity to speak here.
- 0:16
Today, I'm gonna be sharing some of our frontier work on post-training and how we envision a future where agents can learn new skills on the job.
- 0:27
So over the last year or so, we've seen agents develop really strong reasoning skills,
- 0:34
and they've learned to use, uh, agentic harnesses to solve longer and longer horizon tasks, which involve many turns and tool calls on complicated environment states.
- 0:46
We're seeing an increasing, uh, demand for agents that can just be deployed in a plug-and-play way into how enterprises use the agents. Um, so for instance, if they already have some method of calling the agent to do a t- to do a task, they would want to be able to train a custom model to do that task
- 1:10
instead, and that requires new ways of looking at post-training that allow you to, um, adapt to any harness, including ones that you don't necessarily have access to the source code of.
- 1:25
So I wanted to talk about a few different levels of post-training, where each one builds on top of the last.
- 1:34
One way that we kind of think of this, uh, is a framework comparing it to how humans do learning, where you learn simple tasks first, and you can sort of compound your understanding to more and more complicated tasks.
- 1:48
So over the last year, we've sort of, I would say, mastered or gotten a lot of reps with these simple single-turn Q&A tasks and, um, some longer-horizon synthetic environment tasks.
- 2:02
But what we're increasingly seeing is we want to be able to adapt to custom harnesses and be able to train directly on those instead, and we kind of think of those kind of like internships, where you want t- the model to do a specific task, but you don't necessarily know how exactly the task will play out because
- 2:23
you don't own the harness. And then finally, I would want to share some visions we have for the future of the custom model training space, where we think that there will be these kind of agentic citizens which you can just deploy once, and they'll be able to adapt to many different types of out-of-distribution tasks and learn from
- 2:44
their interactions. So first, I just wanna talk about the training setup for these simple Q&A tasks.
- 2:55
We have something that looks like this, where you have an orchestrator, and the orchestrator is in charge of driving the rollouts. The orchestrator holds a task spec which you can think of for now as just the simple prompt and answer, so something like a math question and a corresponding numerical answer.
- 3:13
Um, the orchestrator will send this prompt to a model and then get an answer back. Then it will send the answer to a grader and have it be graded.
- 3:20
So once all of this is done, we want to improve our model based on that interaction or maybe, like, a batch of interactions, and the way we do that is through a training engine which takes in the graded chats and produces a weight update.
- 3:35
That weight update is then synced to some inference engines, and once those inference engines are updated, then we can start this entire process over again, where the orchestrator will have, like, new problems to, um, send to the model completion endpoint, and then you'll be able to get more chats, grade them, and train again.
- 3:56
The key thing to note here is that the only thing you need for improving your model is the graded chats in some format, and once you have those, the training engine can compute weight updates to improve your model.
- 4:11
Uh, what's important here is that the chats are in a very specific format because we're sort of constraining everything to be inside of our training stack. So in this simple setup for Q&A, you don't have anything living outside of the training stack.
- 4:24
You, you basically have the code of how to run the rollout and how everything is formatted, so it's, like, in a very controlled environment.
- 4:34
However, this is kinda limited because we can only kinda do single-turn tasks in this way. If we want to do longer and long-horizon tasks, and we want to build, like, higher-order skills into our models, we need to also increase the complexity of our environment.
- 4:51
So with synthetic environments, we have a very similar setup, but we offload a lot of the environment state, um, outside of the training stack. So you still have the same orchestrator, um, from before, but,
- 5:06
um, the task spec is maybe a little mo- more complicated, and the environment state is, uh, living outside of the training stack. So the task spec might now include things like tool call specs or, like, maybe an initial state for your environment, like a file system.
- 5:23
And the orchestrator is now in charge of running many turns in a, in series, where maybe first it asks the model for how it wants to respond, and then if the model wants to call some tools, it'll then call the sandbox to actually, like, modify the environment state or read the environment state and then return those results
- 5:41
back to the model. After all that is said and done, you get a full task trace out of this, um, and that task trace is then sent to a grader for grading.
- 5:51
And very similar to what we had before, you'll be able to take the graded chats. You'll be able to then use them to do a weight update.
- 6:01
The main thing to highlight here is that this orchestrator and sandbox setup is replayable, which is basically just saying that for any specific prompt, you can always, like, roll back to the initial state and, like, rerun it.
- 6:13
Um, you can do that in parallel or you can do that in series. But the reason that's important is because the main sort of method that we use for reinforcement learning today is GRPO, and that involves comparing many rollouts for the same prompt and then comparing, like, relatively which one is better than the other.
- 6:35
And the training engine will then up- like, make an edit to the model to upweight the trajectories that were more successful and then down-weight the ones that were less successful.
- 6:48
So some challenges that we face in this setup is that the environment is something that you want to basically, uh, use to replicate reality so that after you're done training, like, the improvements that you've seen actually translate to when you deploy these models into production.
- 7:05
And the main sort of problem is-- like, has kind of two names, which are both the same problem, environment fidelity and reward hacking. Essentially, the agent is exposed to an environment and sort of any, uh, any quirks of your environment will end up being something that your agent may, like, learn a model of.
- 7:27
So we have some examples that we've seen where in a training run in the past, we had some, like, networking issues causing our environment to have tool calls that failed maybe around ten percent of the time.
- 7:40
If that is the case, then we actually saw that the model would then start outputting shorter and shorter responses. Now, this was really surprising to us because in our reward function, we actually didn't have any length penalty.
- 7:53
So, like, we, we couldn't really tell why this was happening. But really what's going on here is if you think about maybe the model as, like, a human, like, walking along a sidewalk and, like, the tool call failures are, like, potholes in the sidewalk.
- 8:07
Like, it makes a lot of sense that because there's so many potholes, the model doesn't wanna run for that long, uh, because it might fall in a pothole and then get a zero reward for the rollout.
- 8:17
Um, and then conversely, um, it's also possible that your model just learns to, like, output more and more gibberish over time, depending on, like, what your environment looks like.
- 8:26
So in a different case, we had a training run where we, um, have sandbox timeouts, uh, just so that they don't run forever. And we usually, like, filter out the rollouts that timed out from being trained on.
- 8:39
One thing we saw was that if your tool calls take a long time, then if the m- model feels like the problem is really hard, it will actually just be incentivized to, like, abuse the tool calls and just, like, call a lot of them in quick succession and try to time out the sandbox so it avoids getting
- 8:55
a reward of zero. It just gets the rollout dropped.
- 9:00
So as we scale to, like, more and more complicated tasks, the, the task of, like, replicating these environments becomes increasingly difficult because it's very, very difficult to, like, perfectly simulate reality.
- 9:14
And sort of any mistake that you make, even if it's not intentional, will end up inducing these, like, subtle, undesirable behaviors in your model.
- 9:23
So that brings us to our next topic of bring your own harness, where we're basically asking, like, if the agent learns the exact environment distribution,
- 9:32
why don't we just use that for our training? Like, just directly the real environment. You will no longer need to, uh, replicate anything. You can just, like, use exactly how it's gonna be used in production.
- 9:45
This solves a lot of problems and sounds really good. The architecture looks something like this, where we now have almost everything outside of our training stack. The only thing we have left is the model completion endpoint and some way to, uh, record the requests and responses that go in and out of the model.
- 10:03
Everything else kinda lives outside of the training stack and can be run in whatever fashion, uh, that, like,
- 10:11
an existing enterprise or, like, customer might be using. So these would be, like, existing enterprise harnesses. And
- 10:19
essentially, the reason this is nice is because we can meet customers where they're at. Like, if they're already using the model in a certain way, we can just take our, like, training methodology and just, like, plug it right in, and then we can help them improve the model for, like, exactly the way that they're using it.
- 10:37
So all the orchestration loops and logic will now live outside of the training stack. Now, this sounds really good, but,
- 10:46
um, this sounds really good, but the challenge here is in...
- 10:54
The challenge here is in the, like, data where a- as you're deploying this into, uh, production and you have less and less control over how the rollouts, uh, play out, you also have, like, less signal to learn from because the data is not in, like, a familiar format.
- 11:18
And this topic is touched on in a related work by NVIDIA. Uh, this is like a paper from around a month ago where they introduce, uh, Polar, which is essentially a way to think about transitioning from a harness where you are kind of in charge of micromanaging every aspect of the rollouts, kind of like what I was
- 11:37
previously talking about, and transitioning to some method of just, uh, listening in on a black box harness, and you would no longer know exactly what the logic in here is.
- 11:51
So some challenges is that-- Some challenges we face in this setting are non-replayability and offline or off-policy data. I think both of these are Describing the same issue, which is just that because we've moved so much of the logic outside of our training stack, we just don't have any way of, like, enforcing sort of invariance or, like,
- 12:13
data structures that we like. We have to be more flexible about the way we do training, and because of that, it just becomes harder to train your model and it make gradient updates.
- 12:23
So an example would be for GRPO, which is, like, the traditional method, you would want to have many rollouts in parallel for your task, and that may not be possible anymore.
- 12:33
If you think about, um, suppose, like a customer chat, customer support chat, and you have a record of how one of your chats went, there's not really a way that you could then go back and think, "Oh, if I, like, said-- or if I responded in this other way, like, would the user have been happier?"
- 12:51
Like, there's no way to then get the user's response again.
- 12:56
But we're optimistic because, like, we think that humans can do this kind of learning, and so it should be possible to, like, formulate some kind of method that would work for models as well.
- 13:06
Like, if a human was in a customer support chat, they could understand somehow that, like, based on the customer's reaction, like, what they said was wrong or what they said was good, and then be able to, like, internalize improvements, uh, for, for the future.
- 13:22
So I wanna talk about some of the frontier research directions we have, um, towards, like, solving this problem. There's kind of three main topics, which are self-distillation, automated data pipelines, and qualitative feedback ingestion.
- 13:35
Self-distillation is a pretty new technique, which is still, um,
- 13:41
I would say relatively, like, narrowly scoped. So we've seen successes in inducing, like, specific new behaviors with models, but it's, it's still an open, uh, research question of, like, how general can we push it.
- 13:55
Automated data pipelines is an idea which maybe if you take, like, a big batch of traces, um, you would be able to, like, automatically, like, flag undesirable behaviors or failure modes and then be able to, like, put together a, like, nice tr-batch of training data, um, automatically, and then send that to the model and help it improve.
- 14:17
Currently, this is, like, pretty manual or, like, human in the loop, where, like, we go through traces ourselves and we're, like, looking for, looking for these failure modes manually and then, like, describing how we can improve the model and then, um, looking-- curating those datasets ourselves.
- 14:35
And then finally, I, I think an interesting direction is qualitative feedback ingestion. So as you move to these, like, production settings, sometimes you don't have access to, like, a clear-cut binary grade or, like, a numerical grade.
- 14:47
Um, oftentimes what you receive back is like, "Hey, for this chat, the customer had this, like, piece of feedback." Um, i-if we can find a way to update our models based on that information, uh, that would also be-- prove extremely helpful.
- 15:04
Um, and in fact, like, self-distillation is one way in which we're exploring how we can do that, but it's, like, a pretty, um, it's still a pretty open question.
- 15:16
Now finally, I wanted to share a little bit about a vision for what the future of post-training might look like if we sort of extrapolate out, uh, and take this sort of progression to its end.
- 15:29
I think eventually we might reach a setting where instead of just limiting ourselves to thinking about a specific task that we can improve the model on, we can actually just, uh, think of the model as just one deployment that can interact in many, many different settings.
- 15:44
And, like, the task that you think about might just be the task of improving yourself on everything. Um, and this model may be used for all sorts of different tasks, maybe across different users as well, and be able to sort of do some kind of reflection or introspection on, like, okay, for this sort of type of interaction,
- 16:07
here's how I, like, self-evaluate and think that I'm doing. And then for this other type of interaction, um, here's how I think I'm doing. And then being able to automatically, uh, take these interactions and compute weight updates from them and improve.
- 16:27
And so, yeah, going back to the point that the agent learns every nook and cranny in your environment, um, the exact environmental distribution, uh, what if, like, the environment was just, like, every interaction that the agent ever has?
- 16:39
And then in addition, we had some way that the model could evaluate itself. Um,
- 16:47
basically, one, one, like, question that we've-- or sorry, one challenge that we've seen is, like, if you're only focusing on, like, one-- improving on one task at a time or, like, flagging one failure mode at a time, you're kind of playing a game of Whac-A-Mole where as soon as a new thing pops up, you need to scramble
- 17:06
and, like, create new data or new environments and improve the model in that way. With this kind of, like, self-improving system that understands interactions from, like, understands every interaction from the environment, you would, like, kind of get around this problem and you wouldn't need to worry about it anymore.
- 17:28
So I wanna leave people on, uh, this quote from a paper around a year ago, which I find extremely relevant now, which is that, "AI is at the cusp of a new period in which experience will become the dominant medium of improvement and ultimately dwarf the scale of human data used in today's systems."
- 17:51
And yeah, if y'all have any questions, uh, I'm happy to take them after. And, uh, yeah, you can also email me at that address. Thank you. [audience applauding] [outro music]