← All AI Engineer talks

AI Engineer World's Fair 2025

Mastering Engineering Flow with Windsurf

Read the talk

Mastering Engineering Flow with Windsurf

Effective agentic development combines context, tool use, and active collaboration: discover the task, plan explicitly, build with feedback, and verify the result.

From a talk by Eashan Sinha

Before you start: Familiarity with a code editor, automated tests, and Git is sufficient; no prior Windsurf experience is required.

What makes a developer and an agent work well together?

How do you get more out of an agentic IDE—and become a better developer while using it? That is the practical question Eashan Sinha, introducing himself as an engineer at Windsurf, brings to the Windsurf Editor. Its agent, Cascade, provides the setting for exploring how developers and AI can work together.

Windsurf Editor is powered by Cascade. Sinha describes it as the first agentic IDE and credits its launch with influencing competing products; those are his claims about the market. To explain the experience it aims to create, he starts with successful duos. The opening basketball photograph makes the point: a pair succeeds through how its members work together, not simply because each is individually the best.

Basketball photograph showing Lakers players in yellow jerseys numbered 34 and 8, with the speaker inset at lower left.
A basketball duo introduces the theme of teamwork.

Then comes his more contentious pairing: pineapple and pizza. Whatever your taste, the analogy is about complementary parts that work well together. Coding assistants often feel like the opposite. They produce erroneous code, duplicate existing logic, or remove code the developer wanted to keep. The developer responds by fighting the assistant—or threatening it with a million-dollar fine or jail if it fails.

A useful coding agent needs to behave like a teammate. Sinha places responsibility for that experience on the people building the tools: developers should not have to struggle to make an agent understand what they are doing. The product must make cooperation possible.

0:170:32
Suggest correction

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

0:17 · section reference included

From single responses to collaborative execution

Sinha sketches a progression from writing code with Google and Stack Overflow, through copilots in late 2022–2023, to agents in late 2024. This is a simplified account of changing interaction styles, not a literal history of when coding assistance began: AI coding assistance was already available during 2022. He groups ChatGPT, Bard, and GitHub Copilot under the copilot experience—give the system an input and receive a response, particularly useful for questions and autocomplete. Agents add independence: they can iterate, adjust their trajectory, and pursue larger tasks.

The practical difference becomes clear when working across files. In the chat-based copilot pattern, the developer pastes files, supplies context, and intervenes at each step. An agent can retrieve context itself and use tool or function calls to act on the environment.

InteractionContextExecution
Prompt–response copilotDeveloper supplies files and detailsReturns a response; developer advances the work
Iterative agentRetrieves relevant contextCalls tools and adjusts subsequent steps

Tool access changes what the system can accomplish: it can perform operations rather than only describe them.

Neither interaction alone covers everything a developer needs. Windsurf’s AI Flows combine models, context retrieval, and tool calling with an additional input: what the developer is doing. Tracking user actions gives the system evidence about intent, so its next operation can fit the developer’s ongoing work.

Sinha dates the introduction of AI Flows to Windsurf’s November launch and again presents it as influential on other products. The design choice is more useful than the priority claim: put conversational collaboration and autonomous execution in one interface. The developer can discuss a task and remain involved while the same agent retrieves information and performs work.

3:303:45
Suggest correction

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

3:30 · section reference included

Use developer activity to infer intent

Flow awareness is the connection between activity in the editor and the agent’s understanding of the task. A prompt contains explicit instructions, but the developer’s actions also carry information about what matters. Sinha describes Cascade’s design as tracking edits, commands, terminal commands, clipboard contents, and recently edited files to infer that implicit intent. His clipboard description is a historical product claim, not a blanket statement about collection settings; current Tab documentation makes clipboard context opt-in. The linked documentation now uses Devin Desktop branding, while the product names here follow the recording.

Those activity signals enter the agent’s context and inform its trajectory—the sequence of steps it chooses to pursue. Recent work helps it select actions that fit what the developer has already been doing, while accumulated interactions provide further context about the user.

That is why Cascade or Windsurf Tab can appear to anticipate the next action. Sinha compares the effect to predicting the next token: here the target is the developer’s likely next step. The mind-reading language is an analogy for inference from context. The mechanism is that user activity and interaction history reach the context window, giving the assistant information a general-purpose, independent agent would otherwise lack.

7:177:32
Suggest correction

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

7:17 · section reference included

Ground the next step in the repository

Understanding the developer answers only part of the problem. The agent also needs explicit knowledge of the codebase. Sinha describes Windsurf’s context engine as combining multiple tools rather than relying on retrieval-augmented generation or embedding search alone. The goal is comprehensive repository understanding, so a suggestion fits the code that actually exists.

User context and repository context then work together: one indicates what the developer likely wants, and the other constrains what makes sense in this project. Sinha attributes more relevant suggestions and fewer hallucinations to this grounding, with the codebase serving as a central source of truth. These are qualitative benefits in the talk; he does not supply a retrieval algorithm or a comparative benchmark.

Slide titled “Deep understanding of your explicit knowledge,” with panels for semantic repository understanding and full repository context awareness, alongside four stated benefits.
Repository understanding and context awareness ground the knowledge base.
8:539:00
Suggest correction

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

8:53 · section reference included

Give the agent tools and a procedure

Context makes a next step better informed; tools make it executable. Cascade can perform multiple steps and call Model Context Protocol servers, extending the capabilities available to the agent beyond producing a single response.

Workflows address a different problem: an agent can choose an unpredictable path through a task. A workflow lets the user specify steps for it to follow. Sinha contrasts that structure with autonomous behavior and describes workflows as deterministic. The useful distinction is a repeatable procedure, however, not a guarantee that model-driven execution or its results will be identical every time.

Instructions and retained context provide two further ways to guide execution:

  • Rules: User-authored instructions can apply to particular files, apply consistently, or be consulted selectively. They express how the developer wants the agent to behave.
  • Memories: Cascade can generate retained information about user preferences and the codebase. Sinha presents this as reducing repeated indexing and retrieval. The documented memory mechanism is stored context retrieved when relevant, so it should not be understood as eliminating retrieval.

A workflow supplies a procedure, a rule supplies a constraint or preference, and a memory preserves information that may help with later work.

The same approach extends to multiple simultaneous Cascades. Sinha describes concurrent trajectories that understand one another, the user, and the codebase, and presents them as a route to faster work. That is not a measured speedup or a guarantee of coordination: the Cascade documentation warns that simultaneous edits to the same file can race and fail. His mention of A2A places the feature in the broader discussion of multiple agents; it does not establish support for that protocol. Web search is another available tool, adding outside information to an agent experience still centered on the developer’s task.

9:4610:01
Suggest correction

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

9:46 · section reference included

Discover the task, then make completion explicit

The engineering process remains recognizable: discover → plan → build → test. Cascade can participate at each stage, but getting useful work from it starts before file edits. Discovery establishes what the task is; planning makes the route to completion inspectable.

Start by making the task concrete:

  1. Explore the codebase with Cascade and scope the work.
  2. Discuss the goals and state the definition of done explicitly.
  3. Use @mention to provide direct context from relevant files and directories.

An agent may infer its own completion criteria. Discussing them first helps align its stopping point with what the developer actually needs.

Next, work with Cascade on a planning file instead of giving it one broad prompt to build everything. Write a set of tasks, optionally as checkboxes, that lead to the definition of done. The document gives both participants a shared reference for what remains unfinished. Add rules that describe the behavior and preferences the agent should follow while carrying out that plan.

11:4811:54
Suggest correction

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

11:48 · section reference included

Build against the plan and correct direction

During implementation, use the planning document to track progress as Cascade edits one file or several files. Check that it is working through the intended tasks and updating the checklist. When it asks questions or checks in, answer clearly: those exchanges are opportunities to resolve ambiguity before more work accumulates.

Feedback can correct an implementation, change what the agent examines first, or reprioritize the next steps. Windsurf Tab offers a more hands-on mode through autocomplete when the developer wants to work directly in the editor. Simultaneous Cascades can support separate lines of work, while MCP servers provide additional context and tools. These are different ways to participate in the same build process, with the plan remaining the common reference.

13:1013:25
Suggest correction

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

13:10 · section reference included

Test the result before handing it off

Testing closes the loop between the agent’s changes and the task’s requirements:

  1. Generate tests with Cascade.
  2. Run them and work through failures iteratively.
  3. Use workflows to automate recurring test-and-fix steps.
  4. Compare the result with the original definition of done.

A completed sequence of edits is not by itself proof that the task is complete. If the result misses a requirement, explain the gap to Cascade.

Sinha describes that feedback as helping Cascade learn about the developer, using the language of an embedding representation. Treat this as his account of the intended learning behavior, not an established implementation detail. The immediate engineering purpose is concrete: make the unmet requirement explicit, correct the result, and then commit to Git and push functional code.

Discover → Plan → Build → Test slide listing Cascade test generation, terminal access, workflows, definition-of-done checks, and committing as tests pass.
The Test step covers test generation, completion checks, and iterative Git commits.

The closing boundary is continued participation. Think of Cascade as a pair programmer working with you toward the task. Sinha cautions against assigning work, leaving, and returning half an hour later expecting it to be correct; that is a hypothetical unattended-work pattern, not a reliability threshold. His judgment at the time of the talk is that LLMs are not dependable enough for that expectation. Stay involved in the decisions, the corrections, and the verification that turn generated changes into finished engineering work.

13:5814:12
Suggest correction

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

13:58 · section reference included

Resources

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [on hold music] Hey everyone, um, I'm Eashan.

  2. 0:17

    I'm an engineer here at Windsurf, and today we'll be talking a little bit about, um, how to make the most out of your development experience, how to make the most out of this agentic flow that we all now have exposure to with our IDEs.

  3. 0:32

    Um, and also talk a little bit about how these flows make us, um, better developers.

  4. 0:38

    For those who are not aware, Windsurf is in the dev tool space. Our flagship product is the Windsurf Editor, um, which is, uh... Oh, as you can see.

  5. 0:50

    Okay. Sorry, give me one... Will it not share if I... Okay. Um,

  6. 0:58

    all right. Our flagship product is the Windsurf Editor, which is powered by our agent Cascade, um, which, uh, was actually the first agentic IDE in the space. After we launched a lot of tools, a lot of similar products followed suit in that they realized that this agent, uh, experience was the way to go, um, with this, um,

  7. 1:18

    with this IDE. Um, so for those who aren't aware or haven't tried it out, highly suggest you try it out. But before we actually get into how Windsurf does agents, how we do flows, um, let's take a step back.

  8. 1:31

    Let's talk about some of the most iconic duos, um, till date, uh, and, and those that have really, um, won, that have been successful. Um,

  9. 1:41

    what are some of the characteristics of, of these duos, and what has really led them to be so successful? It wasn't that each individual or each one of these were the best at their position or they were the best by far or considered the GOAT, um, although some may argue otherwise for some of these people.

  10. 1:59

    Um, what made them so good was that together as a team, they worked better than everybody else, and that's what led to success. Um,

  11. 2:09

    one of the most iconic duos, pineapple and pizza, uh, regardless of what you all say. Um, this is what makes duos successful, is that they work together and they know each other.

  12. 2:19

    They complement each other very well. Another one of the most iconic duos. What this reminds me of is how we think of our agents or how we think of our coding assistants.

  13. 2:30

    Um, a lot of times we fight with them. We, uh, we ask ourselves, like, why is it not getting us? Why is it producing all this error- error-prone code?

  14. 2:39

    Why is it duplicating code? Why is it removing code that we don't want it to remove? Um, we also tend to abuse our agents sometimes. We, uh, we tell it that we're gonna fine it one million dollars if it doesn't do what we ask it to do.

  15. 2:51

    We also tell it that it's gonna go to jail if it doesn't do what we want it to do. But that's not how it's supposed to be. We are supposed to treat our agents like we would treat our, uh, running mate, our teammate, our friend, and this is what it's supposed to look like, right?

  16. 3:06

    Not like what Tom and Jerry are. So, um, it's not your fault as developers, it's ours. It's ours as the builders of these tools to provide that experience for you, to make sure that you as developers, um, you're actually able to work with these agents, that these agents understand you.

  17. 3:25

    Um, how do we fix this problem? How does Windsurf approach this?

  18. 3:30

    Before I dive in depth into that, let's, let's take a step back and look at, um, how we've gotten to this point of agents, uh, the evolution of AI, how AI has kind of evolved into what we see today with these coding agents.

  19. 3:45

    Back in twenty twenty-two, the ancient times, um, we had to do everything ourselves, right? It's, it's kind of terrifying. We had to write all the code by ourselves. There was no AI to really help us, right?

  20. 3:55

    There was just Stack Overflow, um, and Google.

  21. 4:00

    In twenty twenty-two or late twenty twenty-two and moving on to twenty twenty-three, uh, copilots were introduced. I consider ChatGPT, uh, Bard at the time, um, GitHub Copilot as this kind of chat interface, this copilot kind of, uh, experience where you would give a prompt or an input, you'd get a response.

  22. 4:19

    Really good with simple Q&A and autocomplete. Late twenty twenty-four, this is when, uh, we saw the first agents or what people like to call agents. Um, a lot of times people would confuse, uh, confuse agents with workflows, but I think that was kind of cleared up, uh, more recently in that agents now are able to take this

  23. 4:39

    autonomy, they take this independence, they operate, um, iteratively, they adjust their trajectories, and they can perform these larger scope tasks and, um, do things that simple or single, uh, response, single shot copilots would not be able to do.

  24. 4:57

    So another way to look at this is that copilots were a little bit more collaborative, right? We had to interact at every single step of the process while we're working with copilots.

  25. 5:04

    If we ever were coding with ChatGPT, we'd have to maybe paste in every file, we would have to, um, individually send in each response, and ChatGPT would have to work on things very step-by-step, right?

  26. 5:17

    So we would just send an input or a prompt, maybe add some extra context, and after the LLM ran its inference, we would get the response. Agents then introduced this autonomous nature where we got-- had, had these models, um, we also allowed it to retrieve this context.

  27. 5:33

    But on top of that, we introduced tool calling and function calling, the ability for agents to perform tasks, um, perform these functions, and actually be able to execute things that copilots or chatbots wouldn't necessarily be able to do.

  28. 5:47

    What Windsurf has done when we launched was we realized that agents really didn't solve the problems that, um, copilots couldn't solve, and copilots didn't do everything that we would want to do as developers as well.

  29. 5:59

    And so we took the best of both worlds in that we combined

  30. 6:05

    We combined, uh, these models as well as retrieving proper context, uh, figuring out how to, uh, call tools properly, in addition with understanding the user, tracking the user's actions, really, uh, understanding their intent as developers, what they're going to do.

  31. 6:22

    So we essentially took the best of both worlds, right? Um, and so AI Flows is what Windsurf and Cascade introduced back in November, and this is where a lot of other companies, a lot of other products that I'm sure you all know today followed suit in that they realized this simple chat interface or even having an agent

  32. 6:39

    and a chat just maybe didn't make sense. It only made sense to provide one singular agentic interface that collaborated with you as a developer. And so Windsurf, our editor, it took the best of both worlds in that it combined this collaborative power of a chatbot interface with some of these autonomous and tool calling capabilities of an agent

  33. 7:01

    and molded them together to work in perfect unison, in perfect sync. And this created a very seamless, um, a very unified experience where developers and AI could actually operate as one, could operate as a team rather than like these guys.

  34. 7:17

    So how did Windsurf do this? The first thing we wanted to consider was this concept of flow awareness. What this meant was that we would have really comprehensive, uh, reasoning and understanding of the implicit user intent.

  35. 7:32

    This is something that a lot of agents actually don't really consider right now, and, um, you know, even when we're building this on the side, we don't actually think of what is really important to the user.

  36. 7:42

    So our main emphasis when we were building Cascade was understanding the user, tracking their actions, their edits, their commands, the terminal commands they've run, um, their, uh, anything that's in their clipboard, um, all the files that they've recently edited.

  37. 7:55

    All these things are tracked by Cascade so that Cascade develops an understanding of what the user has been doing, and that is all inputted into this agent's trajectory so that the agent can then outline a much more, uh, relevant set of steps that aligns with what the user would be doing or what may be doing in the

  38. 8:14

    future. And so when you use Cascade, when you use Windsurf Tab, it almost feels like Windsurf is predicting your, your next step. It's, it's, uh, you know, it's almost like an LLM.

  39. 8:22

    It predicts the next token. In this case, Cascade is, is predicting or inferring what you would do next. When you're using Tab, it feels like Cascade or Windsurf is reading your mind because so much of this context of the user's, um, actions as well as, like, this, uh, understanding of the user over time as the user interacts

  40. 8:40

    with Cascade, this is inputted into the context window. And this is what makes this agent so powerful, is that it understands the user much better than a very general purpose or independent agent.

  41. 8:53

    On top of that, we have a state-of-the-art context engine. We have a talk on this tomorrow as well. But, uh, we approach context differently than other products in this space.

  42. 9:00

    We don't just use a RAG or embedding-based search approach. We leverage a combination of multiple tools, um, in tandem to really figure out what works best so that we can understand your codebase, this explicit context, as strong and comprehensively as possible.

  43. 9:16

    And what this, what this helps us do is, as an agent, is it helps us get more accurate results, more relevant suggestions, right, for your codebase, um, or for any of these code suggestions, right?

  44. 9:27

    We have reduced hallucinations. We don't have to do any guesswork. Because we understand the user, because we understand your codebase very well, we are able to provide a much more tailored experience, an experience that actually outlines of what the user may want, and, um, it's grounded in this centralized, uh, source of truth, which is this codebase that

  45. 9:46

    you're working in. On top of that, we equip Cascade with all of the best tools for this agent to really perform that multi-step, iterative, uh, kind of set of tasks where it's not just limited to that single response, um, nature.

  46. 10:01

    It can actually call MCP servers. It can leverage workflows, something we recently introduced, where now we are bringing together, bridging that gap between the unpredictability of an agent and more of that deterministic nature of a workflow, right?

  47. 10:14

    Where workflows, we know exactly what's gonna happen and when it's gonna happen. And so with Windsurf, again, our main priority is to help developers as much as possible. We realize that with agents, it's very unpredictable what's gonna happen and what they're gonna do.

  48. 10:28

    And so with workflows now, this bridges that gap. We can actually, as users, define a set of steps for the agent to follow as they're operating. On top of that, we allow Cascade to look at rules, right?

  49. 10:40

    These are rules that you can generate as users. Um, they could be file-based rules. They can be rules that, um, you always want the model to look at, you, uh, maybe sometimes want the model to look at.

  50. 10:51

    On top of that, Cascade can generate memories of you as a user, some of your preferences, memories of your codebase so that it doesn't have to constantly index, doesn't have to constantly retrieve your codebase.

  51. 11:01

    And on top of that, recently, there's a lot of talk about ATA, A2A, and, like, multiple agents. Um, recently, we introduced multiple simultaneous Cascades working in tandem. And so what this brings to us is it allows Cascade now to have these multiple different, um, you know, trajectories that understand each other, understand the user, and understand your codebase,

  52. 11:23

    which allows us to be able to complete tasks faster, more efficiently, and get things done, um, you know, in the way that we want to get them done. So all these tools, right, uh, there's a lot that I left out here, like the ability to search the web and other things like that.

  53. 11:38

    They empower Cascade to be able to really give us this agentic feeling while it's operating, right? And really, not just, again, an independent agent, but one that understands us as users.

  54. 11:48

    Um, but as engineers, how do we make the most, how do we get the most out of these flows?

  55. 11:54

    Uh, also known as eng- engineer maxing. How do we really max out what we get out of the, this experience? Uh, the way I like to approach it, I'm sure you all are somewhat familiar with this kind of set of steps.

  56. 12:04

    We like to first explore, um, discover our codebase, scope out our tasks, then plan, um, then build, and then test out, uh, our, our changes or anything that the agent did.

  57. 12:15

    Um, when discovering, we can leverage Cascade at every set, um, of these steps, right? We want to leverage Cascade to understand our codebase, to scope out our tasks, determine this definition of done, right?

  58. 12:25

    That's what a agent does, right? It determines the definition of done and outlines a set of steps. How can we tell Cascade what that definition of done is and talk through some of these goals?

  59. 12:34

    On top of that, if we wanted to give more direct context, we can @mention, um, different files and directories. Um, it's also very important to plan with Cascade, right?

  60. 12:43

    A lot of people just say, "Hey, I'm just gonna put in this prompt and let Cascade or let this agent just build everything for me." The best way to go about this is create, work with the agent to understand you.

  61. 12:53

    And so what that means is, um, create a planning file. Outline like, you know, a set of tasks with like maybe checkboxes to tell Cascade, "Hey, you need to hit these set of tasks to accomplish this definition of done."

  62. 13:04

    Also, outline rules to tell Cascade how to behave that align with your preferences.

  63. 13:10

    And then we go into building. Work with Cascade to actually execute this plan that you've set for yourself. Um, edit files one by one or multiple files at a time, and ensure Cascade is working with this planning document, um, and actually checking all the boxes.

  64. 13:25

    And you'll see that Cascade actually asks you questions. It will check in with you as a user, as a developer, right? And you, like, make sure to answer it very clearly.

  65. 13:33

    Tell it, "Hey, you're doing this incorrectly," or, "Hey, uh, let's actually look at this first," or, "Let's look at, um, this ne- set of steps next," right? Um, Windsurf Tab then provides this more hands-on experience with autocomplete.

  66. 13:45

    And on top of that, you can leverage these simultaneous Cascades and these different MCP servers that allow you to pull additional context and empower Cascade with these additional tools to complete, uh, you know, this agentic experience.

  67. 13:58

    Lastly, then you wanna generate tests with Cascade, right? Um, generate, run, uh, fix your tests one by one as it's iterating. You can leverage workflows here, which, uh, you know, can, you can leverage to automate some of these tasks.

  68. 14:12

    And, um, at the end, determine if Cascade hit that DoD, that definition of done. If it didn't, make sure Cascade understands what it did wrong 'cause Cascade is building this learning of you.

  69. 14:22

    It's building this embedding representation of you as a developer, um, and it's learning from that. So in the future, it knows where to not go wrong and where to improve.

  70. 14:31

    Um, and then lastly, then you wanna commit to Git, uh, and, and make sure that you're pushing code that is functional.

  71. 14:39

    So you and Cascade, right? Don't think of you guys as separate entities. We wanna think of you all as a merge, as a team, right? As a peer programmer, um, you guys are working together to accomplish tasks.

  72. 14:50

    And so this is how you and Cascade should be. This is how developers and Cascade should be. It shouldn't be separate where you tell Cascade, "Hey, just accomplish these set of tasks.

  73. 14:58

    I'll come back in 30 minutes, and, um, and we'll see what you did," right? We're not at that level where LLMs can do that just yet. And so really work with Cascade, make it your friend, and that is how you'll get the best, uh, development experience out of these agents. [audience applauds] [upbeat music]