Research for agent runner abstraction layer to decouple eve harness from eve runtime - #2571
Closed
felixarntz wants to merge 2 commits into
Closed
Research for agent runner abstraction layer to decouple eve harness from eve runtime#2571felixarntz wants to merge 2 commits into
felixarntz wants to merge 2 commits into
Conversation
Contributor
Author
|
not worth pursuing, overengineered |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Related to #2194: That proposal correctly identifies
StepFnas the point where eve's durable workflow invokesagent work, but
StepFnis an internal callable type rather than a swappable provider boundary. The current runtime always resolves a model-backedRuntimeTurnAgent, constructs or rehydrates a model-loop-specificHarnessSession, refreshes that session before every step, and then unconditionally creates the built-in tool loop. Merely allowing another function to satisfy theStepFnsignature would not let an external package bypass that lifecycle, supply its own durable checkpoint, or change how runner state is resumed and persisted. HarnessAgent therefore cannot replace eve's harness layer through the currentStepFnboundary.This proposal introduces a provider-neutral, versioned
AgentRunnerV1layer. eve would continue to own durable root and subagent sessions, workflows, tools, approvals, sandboxes, events, and cancellation, while each runner would own only its native execution and opaque checkpoint. Unblocking HarnessAgent for subagents therefore requires changes inside the eve runtime—separating the common durable session envelope from built-in-runner state and adapting runner results intoStepFn—but no HarnessAgent-specific branch, setting, dependency, or module-map entry ineve; a separate package could implement the generic contract.Review focus
The main design question is whether
AgentRunnerV1draws the right ownership boundary: broad enough to support root agents and subagents implemented by an external package, but narrow enough that eve remains the sole owner of durable lifecycle and host capabilities. In particular, please review the checkpoint model, runner status transitions, tool and sandbox hosts, capability negotiation, and source-based module loading.The other key question is whether we'd even want to have such an abstraction layer or whether we want to instead use AI SDK's
HarnessAgentin eve itself conditionally instead of AI SDK'sToolLoopAgent. The tradeoff is that it would meanHarnessAgentinevitably becomes a part of eve itself; on the other hand, sinceHarnessAgentitself provides a harness abstraction layer, backing on it would avoid eve from having to invent its own.Consider this example:
While this would make for a neat public API, it clearly would couple
HarnessAgentwith eve directly.Checklist
CONTRIBUTING.mdevepackagegit commit --signoff)