-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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
[Runtime] Mega-issue to track all issues related to bash Interactive terminal #3031
Comments
First, great collection of issues to look into!
As to that 2nd point: if the model runs any installations (like with pip), these 5 seconds could become too short?
We may have to track down the "usual suspects" IF these have parameters especially to suppress interactive mode:
|
Yeah.. that's a good point and that's primarily why we did implement the timeout but not this. I guess the I mean, we humans do the same thing! If a command hangs unreasonably long, we might just issue Maybe we could (1) switch everything to streaming outputs, (2) just wait for |
The streaming back works in my async PR, but still the prompt regex would then be the issue. |
@xingyaoww I think this is the Will we move to Paramiko for windows support? #2059 (comment) Why are we using pxssh over Paramiko? Relevant comments: |
We will no longer use SSH protocol in the new architecture, though - otherwise we need to maintain two separate connections which could be overly complicated. Instead, we will just interact with a local bash shell (for ease of dependency management), so ssh-related libraries might not be relevant anymore. |
#3176 sorry for creating a new issue but I dont see here about long running commands like npm run dev |
for anyone who want to create a nextjs app here is the noninteractive way: here are all the flags: https://nextjs.org/docs/pages/api-reference/create-next-app |
I think thats the number one priority, cause in react land you have a npm run dev running constantly while you dev the project also running tasks that need interaction is the defacto even if everybody hates it its just simpler for packages and core components that are so complicated to ask for user options and prefernces and on the fly choices
you could use two llms one llm for coordination in a loop of checking things and the other for coding gpt-pilot kind of does that with agents, like there are different agents that cooperate in level, there is the top agent that gives commands to lower agents and coordinates what the next step and next agent is gonna be they use different LLMs for each agent like gpt-4 for top agent with temp 0.8 and gpt-4o for coding with 0 temp |
@tobitege @xingyaoww @zenitogr @SmartManoj (PS: This is one of the major features planned on Cybergod) Update: 8/16/24 Now I have made some progress over the terminal agent. Check out the demo video below: Terminal environment can be captured as image with cursor denoted in red: |
Now one can obtain terminal input/output statistics in Cybergod like down below: With terminal stats, one can build a more efficient event-driven terminal agent, for example, listen for event |
We've made a lot of good progress on this but I don't think this is 100% resolved yet. |
most of these should be fixed by #4881 🤔 |
@xingyaoww do you think we should close this now that the PR has merged? Or close it when we release? |
Let's close this now! Closed by #4881 |
This is a mega-issue tracker for the Interactive terminal issue peoples run into.
Feel free to expand this list if i missed any relevant issue!
Cause
These are typically caused by the same reason: OpenDevin uses
pexcept
to interact with Bash shells, however, the current parsing logic only looks for the nextPS1
prompt (e.g., something likeroot@hostname:/folderABC $
).This will keep looking for such a pattern until it timeout, causing the following things to break, as listed in the PR above:
python3
), where the new prompt changes to>>
nano
,vim
), where the display could be completely broken? (I'm not familiar with the protocol here, though)(base)
) before thePS1
prompt, causing the currentpexpect
parsing to breakPassword:
)(yes/no/[fingerprint])
requesting user confirmation.Fixes
We plan to resolve them as much as I can once arch refactor #2404 is completed. But these are a non-exhaustive list of patterns we are trying to
pexcept
and we cannot list everything here:[yes/no]
pattern, conda environment pattern)ctrl+D
ctrl+C
, etc).ctrl+C
, which might not work for a large variety of programs likevim
).If you want to help!
Try to take a look at our existing bash parsing logic for the new architecture (under development!):
https://github.com/OpenDevin/OpenDevin/blob/8bfa61f3e4beceb690562b4d105aa01dc50d58d7/opendevin/runtime/client/client.py#L62-L111
You can help to:
https://github.com/OpenDevin/OpenDevin/blob/main/tests/unit/test_runtime.py
to expose these interactive bash issuesclient/client.py
(and/or thessh_box.py
- but we plan to deprecate them soon, so only supporting these onEventStreamRuntime
should be sufficient!)The text was updated successfully, but these errors were encountered: