-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Arch Refactor for Agent Runtime]: Deprecating SSH-based communication and use EventStream #2404
Comments
The design is great. If I understand you correctly, the I have a few worries about the dependencies, package installation, and plugin management.
Will the BTW, how do we define the plugins? Is it possible to let the users define their own plugins? |
This is a very good question! For simplicity now, we can just say we want to pack everything at the beginning (maybe keep the "setup.sh" based workflow for our plugins now).
Now user can already define their own plugins via But in the long term, we should consider make this plugin management very easy, so that user can easily define their plugins. I have a preliminary thought about using a Python package manager like Besides this, I'm also debating the difference between
|
Working on this recently, will open a draft PR when finish the basic framework. |
Very excited for this! I have two basic concerns here though:
Re: plugins, IMO we should see if we can remove this entirely. It will be hard to create plugins that support every possible container OS, and create maintenance headaches. What are we currently using plugins for at this point? |
Hi @rbren , my basic plan:
Do you have any suggestions?
It should solved by
I have not investigate this tech details. My basic idea is try to do it in
In the code definition, only |
👍 SGTM! Sounds like we can get a lot out of The Jupyter requirement is probably the hardest thing to figure out. I don't know that there's a better way--we probably do need python installed in every sandbox container. |
I think that's exactly the benefit of using
I think it is possible to install playwright using So I'm not too worried? |
Why remove plugins as such? Do you have specific alternative ways in mind? |
The last PR is merged! Farewell |
What problem or use case are you trying to solve?
Right now, the backend mainly relies on
ssh
to communicate withsandbox
, which does not fit too well with our current Event Stream-based communication. The requirement of the backend to know the existence of "ssh" makes thing much harder to support different runtimes/docker images (#1387, e.g., we need to automatically installsshd
if user bring their own docker images without it - and it can get tricky very quickly sincesshd
may need to be installed differently across different linux distributions) and creating hosted version (#1086).Describe the UX of the solution you'd like
I imagine our next step in architecture will be able to support arbitrary docker image sandbox/runtime by creating one piece of software called
od-runtime-client
and automatically installing it into the user-provided sandbox (if it wasn't installed already - this is already partially done in #2101).Then, at the entry point of each docker sandbox,
od-runtime-client
will be started:via WebSocketwell it is currently implemented as REST API), handle event stream communication to/from other sources. Resolved by Add websocket runtime and od-client-runtime #2603CmdRunAction
can be directly stream from the agent and received byod-runtime-client
, andod-runtime-client
can maintains apexcept
session that directly interact with/bin/bash
to execute that command.runtime-client
(now we need to install everything opendevin needed), so we can build any user-provide images faster (Remove torch dependency if possible #690 is related): [Runtime] Reduce dependency to speed up CI and reduce image size #3195od-runtime-client
, so we can get rid of the current browsing running on the backend (cc @frankxu2004). Done in [Arch]EventStreamRuntime
supports browser #2899file://image.jpg
)goto_url
) intoagentskills
library when they are in the same container.agentskills
library with theod-runtime-client
. Done in [Arch] Implement EventStream Runtime Client with Jupyter Support using Agnostic Sandbox #2879od-runtime-client
. [Arch] Implement EventStream Runtime Client with Jupyter Support using Agnostic Sandbox #2879[ ] replace(no plan for me)<execute_bash>
with aexecute_bash
agentskills
.ServerRuntime
:EventStreamRuntime
works across all the evaluation suite. Run SWE-Bench to ensure there's no performance degradation: [Refactor, Evaluation] Refactor and clean up evaluation harness to remove global config and use EventStreamRuntime #3230ServerRuntime
, and switch toEventStreamRuntime
by default: (arch) Switch default runtime to EventStream Runtime #3271Do you have thoughts on the technical implementation?
Due to the diversity of user-provided docker images we might need to support, I propose we use some package manager like miniforge that is already multi-platform to maintain the environment (miniforge can install different python version, and even maintains its own
glibc
version to circumvent some system-level restriction, e.g.,glibc
version too old) and dependencies ofod-runtime-client
. So the workflow of user-bring docker sandbox would be (essentially what we implemented in #2101):od-runtime-client
Dockerfile
,FROM user-provided-docker
, then build that image with a suffix_od
${SANDBOX_CONTAINER_IMAGE}_od
to start the sandbox, and assume every dependencies is met.Describe alternatives you've considered
Additional context
The text was updated successfully, but these errors were encountered: