lybic-guiagents 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of lybic-guiagents might be problematic. Click here for more details.
- {lybic_guiagents-0.1.0/lybic_guiagents.egg-info → lybic_guiagents-0.2.0}/PKG-INFO +69 -4
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/README.md +64 -2
- lybic_guiagents-0.2.0/gui_agents/__init__.py +67 -0
- lybic_guiagents-0.2.0/gui_agents/agents/Backend/ADBBackend.py +62 -0
- lybic_guiagents-0.2.0/gui_agents/agents/Backend/Backend.py +28 -0
- lybic_guiagents-0.2.0/gui_agents/agents/Backend/LybicBackend.py +355 -0
- lybic_guiagents-0.2.0/gui_agents/agents/Backend/PyAutoGUIBackend.py +186 -0
- lybic_guiagents-0.2.0/gui_agents/agents/Backend/PyAutoGUIVMwareBackend.py +250 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/hardware_interface.py +4 -2
- lybic_guiagents-0.2.0/gui_agents/lybic_client/lybic_client.py +88 -0
- lybic_guiagents-0.2.0/gui_agents/prompts/prompts.py +869 -0
- lybic_guiagents-0.2.0/gui_agents/service/__init__.py +19 -0
- lybic_guiagents-0.2.0/gui_agents/service/agent_service.py +527 -0
- lybic_guiagents-0.2.0/gui_agents/service/api_models.py +136 -0
- lybic_guiagents-0.2.0/gui_agents/service/config.py +241 -0
- lybic_guiagents-0.2.0/gui_agents/service/exceptions.py +35 -0
- lybic_guiagents-0.2.0/gui_agents/store/registry.py +22 -0
- lybic_guiagents-0.2.0/gui_agents/tools/__init__.py +0 -0
- lybic_guiagents-0.2.0/gui_agents/unit_test/__init__.py +0 -0
- lybic_guiagents-0.2.0/gui_agents/utils/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0/lybic_guiagents.egg-info}/PKG-INFO +69 -4
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/lybic_guiagents.egg-info/SOURCES.txt +17 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/lybic_guiagents.egg-info/requires.txt +5 -1
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/pyproject.toml +7 -2
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_hardware_interface.py +2 -2
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/LICENSE +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/actions.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/controllers/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/controllers/python.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/controllers/setup.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/desktop_env.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/calc.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/chrome.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/file.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/general.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/gimp.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/impress.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/info.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/misc.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/replay.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/vlc.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/getters/vscode.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/basic_os.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/chrome.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/docs.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/general.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/gimp.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/libreoffice.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/others.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/pdf.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/slides.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/table.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/thunderbird.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/utils.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/vlc.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/evaluators/metrics/vscode.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/aws/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/aws/manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/aws/provider.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/aws/provider_with_proxy.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/aws/proxy_pool.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/azure/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/azure/manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/azure/provider.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/base.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/gcp/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/gcp/manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/gcp/provider.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/virtualbox/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/virtualbox/manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/virtualbox/provider.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/vmware/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/vmware/manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/desktop_env/providers/vmware/provider.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/Action.py +0 -0
- {lybic_guiagents-0.1.0/gui_agents → lybic_guiagents-0.2.0/gui_agents/agents/Backend}/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/agent_s.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/global_state.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/grounding.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/translator.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/agents/worker.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/cli_app.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/core/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/core/engine.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/core/knowledge.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/core/mllm.py +0 -0
- {lybic_guiagents-0.1.0/gui_agents/tools → lybic_guiagents-0.2.0/gui_agents/lybic_client}/__init__.py +0 -0
- {lybic_guiagents-0.1.0/gui_agents/unit_test → lybic_guiagents-0.2.0/gui_agents/prompts}/__init__.py +0 -0
- {lybic_guiagents-0.1.0/gui_agents/utils → lybic_guiagents-0.2.0/gui_agents/store}/__init__.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/tools/tools.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/unit_test/run_tests.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/unit_test/test_manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/unit_test/test_worker.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/utils/analyze_display.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/utils/common_utils.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/utils/display_viewer.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/utils/embedding_manager.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/gui_agents/utils/image_axis_utils.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/lybic_guiagents.egg-info/dependency_links.txt +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/lybic_guiagents.egg-info/top_level.txt +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/setup.cfg +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/setup.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_aci.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_app_switching.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_global_instance.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_registry.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_translator.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_uielement_base.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_uielement_linux.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_uielement_macos.py +0 -0
- {lybic_guiagents-0.1.0 → lybic_guiagents-0.2.0}/tests/test_uielement_osworld.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lybic-guiagents
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: An open-source agentic framework that enables AI to use computers like humans and can provide a multi-agent runtime environment as an infrastructure capability
|
|
5
5
|
Author: Lybic Development Team
|
|
6
6
|
Author-email: Lybic Development Team <lybic@tingyutech.com>
|
|
@@ -33,7 +33,7 @@ Requires-Dist: certifi
|
|
|
33
33
|
Requires-Dist: pytesseract
|
|
34
34
|
Requires-Dist: google-genai
|
|
35
35
|
Requires-Dist: python-dotenv
|
|
36
|
-
Requires-Dist: Pillow
|
|
36
|
+
Requires-Dist: Pillow>=11.3.0
|
|
37
37
|
Requires-Dist: fabric
|
|
38
38
|
Requires-Dist: gymnasium~=0.28.1
|
|
39
39
|
Requires-Dist: requests~=2.31.0
|
|
@@ -88,9 +88,12 @@ Requires-Dist: azure-mgmt-network
|
|
|
88
88
|
Requires-Dist: docker
|
|
89
89
|
Requires-Dist: loguru
|
|
90
90
|
Requires-Dist: dotenv
|
|
91
|
+
Requires-Dist: lybic>=0.7.0
|
|
91
92
|
Requires-Dist: pyobjc; platform_system == "Darwin"
|
|
92
93
|
Requires-Dist: pywinauto; platform_system == "Windows"
|
|
93
94
|
Requires-Dist: pywin32; platform_system == "Windows"
|
|
95
|
+
Provides-Extra: dev
|
|
96
|
+
Requires-Dist: pytest; extra == "dev"
|
|
94
97
|
Dynamic: author
|
|
95
98
|
Dynamic: license-file
|
|
96
99
|
Dynamic: requires-python
|
|
@@ -109,6 +112,19 @@ Dynamic: requires-python
|
|
|
109
112
|
Lybic GUI Agent: <small>An open-source agentic framework for Computer Use Agents</small>
|
|
110
113
|
</h1>
|
|
111
114
|
|
|
115
|
+
<p align="center">
|
|
116
|
+
<small>Supported OS:</small>
|
|
117
|
+
<img src="https://img.shields.io/badge/OS-Windows-blue?logo=windows&logoColor=white" alt="Windows">
|
|
118
|
+
<img src="https://img.shields.io/badge/OS-macOS-black?logo=apple&logoColor=white" alt="macOS">
|
|
119
|
+
<img src="https://img.shields.io/badge/OS-Linux-yellow?logo=linux&logoColor=black" alt="Linux">
|
|
120
|
+
<br/>
|
|
121
|
+
<small>Latest Version:</small><a href="https://pypi.org/project/lybic-guiagents/"><img alt="PyPI" src="https://img.shields.io/pypi/v/lybic-guiagents"></a>
|
|
122
|
+
|
|
123
|
+
<a href="https://github.com/lybic/agent/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/pypi/l/lybic-guiagents"></a>
|
|
124
|
+
|
|
125
|
+
<a href="https://github.com/lybic/agent"><img alt="Stars" src="https://img.shields.io/github/stars/lybic/agent?style=social"></a>
|
|
126
|
+
</p>
|
|
127
|
+
|
|
112
128
|
## What is Lybic GUI Agent?
|
|
113
129
|
|
|
114
130
|
Lybic platform placeholder - comprehensive AI platform for building and deploying intelligent agents
|
|
@@ -124,6 +140,7 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
124
140
|
</div>
|
|
125
141
|
|
|
126
142
|
## 🥳 Updates
|
|
143
|
+
- [x] **2025/09/14**: The paper has been accepted by [arxiv](https://arxiv.org/abs/2509.11067)
|
|
127
144
|
- [x] **2025/09/09**: We achieved the world's first place in the 50-step length of [OS-world](https://os-world.github.io/)!
|
|
128
145
|
- [x] **2025/08/08**: Released v0.1.0 of [Lybic GUI Agent](https://github.com/lybic/agent) library, with support for Windows, Mac, Ubuntu and Lybic API!
|
|
129
146
|
|
|
@@ -132,6 +149,8 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
132
149
|
1. [💡 Introduction](#-introduction)
|
|
133
150
|
2. [🛠️ Installation & Setup](#%EF%B8%8F-installation--setup)
|
|
134
151
|
3. [🚀 Usage](#-usage)
|
|
152
|
+
4. [🔧 Troubleshooting](#-troubleshooting)
|
|
153
|
+
5. [💬 Citations](#-citations)
|
|
135
154
|
|
|
136
155
|
## 💡 Introduction
|
|
137
156
|
|
|
@@ -161,7 +180,7 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
161
180
|
<tr>
|
|
162
181
|
<td>OSWorld Verified (50 step)</td>
|
|
163
182
|
<td><b>57.1%</b></td>
|
|
164
|
-
<td>
|
|
183
|
+
<td>54.2%</td>
|
|
165
184
|
</tr>
|
|
166
185
|
</table>
|
|
167
186
|
</div>
|
|
@@ -176,7 +195,15 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
176
195
|
> [!WARNING]
|
|
177
196
|
> To leverage the full potential of Lybic GUI Agent, we support multiple model providers including OpenAI, Anthropic, Gemini, and Doubao. For the best visual grounding performance, we recommend using UI-TARS models.
|
|
178
197
|
|
|
179
|
-
### Installation
|
|
198
|
+
### Installation(from pip)
|
|
199
|
+
|
|
200
|
+
You can install Lybic GUI Agent by using pip:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
pip install lybic-guiagents
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Installation(from source code)
|
|
180
207
|
|
|
181
208
|
You can use [UV](https://docs.astral.sh/uv/getting-started/installation/) (a modern Python package manager) version 0.8.5 for installation:
|
|
182
209
|
|
|
@@ -277,6 +304,7 @@ Run in interactive mode with the `lybic` backend:
|
|
|
277
304
|
python gui_agents/cli_app.py --backend lybic
|
|
278
305
|
```
|
|
279
306
|
|
|
307
|
+
|
|
280
308
|
Run a single query with the `pyautogui` backend and a maximum of 20 steps:
|
|
281
309
|
```sh
|
|
282
310
|
python gui_agents/cli_app.py --backend pyautogui --query "Find the result of 8 × 7 on a calculator" --max-steps 20
|
|
@@ -308,6 +336,25 @@ LYBIC_MAX_LIFE_SECONDS=3600
|
|
|
308
336
|
> LYBIC_PRECREATE_SID=SBX-XXXXXXXXXXXXXXX
|
|
309
337
|
> ```
|
|
310
338
|
|
|
339
|
+
### Use as a service
|
|
340
|
+
|
|
341
|
+
After installing lybic-guiagents, you can run it as a service.
|
|
342
|
+
|
|
343
|
+
Main Components:
|
|
344
|
+
- AgentService: High-level service interface (recommended for most users)
|
|
345
|
+
- AgentS2, AgentSFast: Core agent implementations
|
|
346
|
+
- HardwareInterface: Hardware abstraction layer
|
|
347
|
+
- ServiceConfig: Configuration management
|
|
348
|
+
|
|
349
|
+
Quick Start:
|
|
350
|
+
|
|
351
|
+
```python
|
|
352
|
+
from gui_agents import AgentService
|
|
353
|
+
service = AgentService()
|
|
354
|
+
result = service.execute_task("Take a screenshot")
|
|
355
|
+
print(f"Task completed: {result.status}")
|
|
356
|
+
```
|
|
357
|
+
|
|
311
358
|
### VMware Configuration
|
|
312
359
|
|
|
313
360
|
To use PyAutoGUI with VMware, you need to install [VMware Workstation Pro](https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion) (on Windows) and create a virtual machine.
|
|
@@ -358,6 +405,7 @@ USE_PRECREATE_VM=Ubuntu
|
|
|
358
405
|
```bash
|
|
359
406
|
uv sync
|
|
360
407
|
uv pip install -e .
|
|
408
|
+
# uv pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
361
409
|
```
|
|
362
410
|
|
|
363
411
|
#### 3. Lybic Sandbox Connection Issues
|
|
@@ -406,6 +454,23 @@ If you encounter issues not covered here:
|
|
|
406
454
|
- Complete error messages
|
|
407
455
|
- Steps to reproduce the issue
|
|
408
456
|
|
|
457
|
+
## 💬 Citations
|
|
458
|
+
|
|
459
|
+
If you find this codebase useful, please cite:
|
|
460
|
+
|
|
461
|
+
```bibtex
|
|
462
|
+
@misc{guo2025agenticlybicmultiagentexecution,
|
|
463
|
+
title={Agentic Lybic: Multi-Agent Execution System with Tiered Reasoning and Orchestration},
|
|
464
|
+
author={Liangxuan Guo and Bin Zhu and Qingqian Tao and Kangning Liu and Xun Zhao and Xianzhe Qin and Jin Gao and Guangfu Hao},
|
|
465
|
+
year={2025},
|
|
466
|
+
eprint={2509.11067},
|
|
467
|
+
archivePrefix={arXiv},
|
|
468
|
+
primaryClass={cs.AI},
|
|
469
|
+
url={https://arxiv.org/abs/2509.11067},
|
|
470
|
+
}
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
|
|
409
474
|
## Stargazers over time
|
|
410
475
|
|
|
411
476
|
[](https://starchart.cc/lybic/agent)
|
|
@@ -12,6 +12,19 @@
|
|
|
12
12
|
Lybic GUI Agent: <small>An open-source agentic framework for Computer Use Agents</small>
|
|
13
13
|
</h1>
|
|
14
14
|
|
|
15
|
+
<p align="center">
|
|
16
|
+
<small>Supported OS:</small>
|
|
17
|
+
<img src="https://img.shields.io/badge/OS-Windows-blue?logo=windows&logoColor=white" alt="Windows">
|
|
18
|
+
<img src="https://img.shields.io/badge/OS-macOS-black?logo=apple&logoColor=white" alt="macOS">
|
|
19
|
+
<img src="https://img.shields.io/badge/OS-Linux-yellow?logo=linux&logoColor=black" alt="Linux">
|
|
20
|
+
<br/>
|
|
21
|
+
<small>Latest Version:</small><a href="https://pypi.org/project/lybic-guiagents/"><img alt="PyPI" src="https://img.shields.io/pypi/v/lybic-guiagents"></a>
|
|
22
|
+
|
|
23
|
+
<a href="https://github.com/lybic/agent/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/pypi/l/lybic-guiagents"></a>
|
|
24
|
+
|
|
25
|
+
<a href="https://github.com/lybic/agent"><img alt="Stars" src="https://img.shields.io/github/stars/lybic/agent?style=social"></a>
|
|
26
|
+
</p>
|
|
27
|
+
|
|
15
28
|
## What is Lybic GUI Agent?
|
|
16
29
|
|
|
17
30
|
Lybic platform placeholder - comprehensive AI platform for building and deploying intelligent agents
|
|
@@ -27,6 +40,7 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
27
40
|
</div>
|
|
28
41
|
|
|
29
42
|
## 🥳 Updates
|
|
43
|
+
- [x] **2025/09/14**: The paper has been accepted by [arxiv](https://arxiv.org/abs/2509.11067)
|
|
30
44
|
- [x] **2025/09/09**: We achieved the world's first place in the 50-step length of [OS-world](https://os-world.github.io/)!
|
|
31
45
|
- [x] **2025/08/08**: Released v0.1.0 of [Lybic GUI Agent](https://github.com/lybic/agent) library, with support for Windows, Mac, Ubuntu and Lybic API!
|
|
32
46
|
|
|
@@ -35,6 +49,8 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
35
49
|
1. [💡 Introduction](#-introduction)
|
|
36
50
|
2. [🛠️ Installation & Setup](#%EF%B8%8F-installation--setup)
|
|
37
51
|
3. [🚀 Usage](#-usage)
|
|
52
|
+
4. [🔧 Troubleshooting](#-troubleshooting)
|
|
53
|
+
5. [💬 Citations](#-citations)
|
|
38
54
|
|
|
39
55
|
## 💡 Introduction
|
|
40
56
|
|
|
@@ -64,7 +80,7 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
64
80
|
<tr>
|
|
65
81
|
<td>OSWorld Verified (50 step)</td>
|
|
66
82
|
<td><b>57.1%</b></td>
|
|
67
|
-
<td>
|
|
83
|
+
<td>54.2%</td>
|
|
68
84
|
</tr>
|
|
69
85
|
</table>
|
|
70
86
|
</div>
|
|
@@ -79,7 +95,15 @@ Lybic GUI Agent is an open-source framework that enables developers and business
|
|
|
79
95
|
> [!WARNING]
|
|
80
96
|
> To leverage the full potential of Lybic GUI Agent, we support multiple model providers including OpenAI, Anthropic, Gemini, and Doubao. For the best visual grounding performance, we recommend using UI-TARS models.
|
|
81
97
|
|
|
82
|
-
### Installation
|
|
98
|
+
### Installation(from pip)
|
|
99
|
+
|
|
100
|
+
You can install Lybic GUI Agent by using pip:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pip install lybic-guiagents
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Installation(from source code)
|
|
83
107
|
|
|
84
108
|
You can use [UV](https://docs.astral.sh/uv/getting-started/installation/) (a modern Python package manager) version 0.8.5 for installation:
|
|
85
109
|
|
|
@@ -180,6 +204,7 @@ Run in interactive mode with the `lybic` backend:
|
|
|
180
204
|
python gui_agents/cli_app.py --backend lybic
|
|
181
205
|
```
|
|
182
206
|
|
|
207
|
+
|
|
183
208
|
Run a single query with the `pyautogui` backend and a maximum of 20 steps:
|
|
184
209
|
```sh
|
|
185
210
|
python gui_agents/cli_app.py --backend pyautogui --query "Find the result of 8 × 7 on a calculator" --max-steps 20
|
|
@@ -211,6 +236,25 @@ LYBIC_MAX_LIFE_SECONDS=3600
|
|
|
211
236
|
> LYBIC_PRECREATE_SID=SBX-XXXXXXXXXXXXXXX
|
|
212
237
|
> ```
|
|
213
238
|
|
|
239
|
+
### Use as a service
|
|
240
|
+
|
|
241
|
+
After installing lybic-guiagents, you can run it as a service.
|
|
242
|
+
|
|
243
|
+
Main Components:
|
|
244
|
+
- AgentService: High-level service interface (recommended for most users)
|
|
245
|
+
- AgentS2, AgentSFast: Core agent implementations
|
|
246
|
+
- HardwareInterface: Hardware abstraction layer
|
|
247
|
+
- ServiceConfig: Configuration management
|
|
248
|
+
|
|
249
|
+
Quick Start:
|
|
250
|
+
|
|
251
|
+
```python
|
|
252
|
+
from gui_agents import AgentService
|
|
253
|
+
service = AgentService()
|
|
254
|
+
result = service.execute_task("Take a screenshot")
|
|
255
|
+
print(f"Task completed: {result.status}")
|
|
256
|
+
```
|
|
257
|
+
|
|
214
258
|
### VMware Configuration
|
|
215
259
|
|
|
216
260
|
To use PyAutoGUI with VMware, you need to install [VMware Workstation Pro](https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion) (on Windows) and create a virtual machine.
|
|
@@ -261,6 +305,7 @@ USE_PRECREATE_VM=Ubuntu
|
|
|
261
305
|
```bash
|
|
262
306
|
uv sync
|
|
263
307
|
uv pip install -e .
|
|
308
|
+
# uv pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
264
309
|
```
|
|
265
310
|
|
|
266
311
|
#### 3. Lybic Sandbox Connection Issues
|
|
@@ -309,6 +354,23 @@ If you encounter issues not covered here:
|
|
|
309
354
|
- Complete error messages
|
|
310
355
|
- Steps to reproduce the issue
|
|
311
356
|
|
|
357
|
+
## 💬 Citations
|
|
358
|
+
|
|
359
|
+
If you find this codebase useful, please cite:
|
|
360
|
+
|
|
361
|
+
```bibtex
|
|
362
|
+
@misc{guo2025agenticlybicmultiagentexecution,
|
|
363
|
+
title={Agentic Lybic: Multi-Agent Execution System with Tiered Reasoning and Orchestration},
|
|
364
|
+
author={Liangxuan Guo and Bin Zhu and Qingqian Tao and Kangning Liu and Xun Zhao and Xianzhe Qin and Jin Gao and Guangfu Hao},
|
|
365
|
+
year={2025},
|
|
366
|
+
eprint={2509.11067},
|
|
367
|
+
archivePrefix={arXiv},
|
|
368
|
+
primaryClass={cs.AI},
|
|
369
|
+
url={https://arxiv.org/abs/2509.11067},
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
|
|
312
374
|
## Stargazers over time
|
|
313
375
|
|
|
314
376
|
[](https://starchart.cc/lybic/agent)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""
|
|
2
|
+
GUI Agents - A comprehensive GUI automation framework
|
|
3
|
+
|
|
4
|
+
This package provides both low-level agent components and a high-level service interface
|
|
5
|
+
for GUI automation tasks across different platforms and backends.
|
|
6
|
+
|
|
7
|
+
Main Components:
|
|
8
|
+
- AgentService: High-level service interface (recommended for most users)
|
|
9
|
+
- AgentS2, AgentSFast: Core agent implementations
|
|
10
|
+
- HardwareInterface: Hardware abstraction layer
|
|
11
|
+
- ServiceConfig: Configuration management
|
|
12
|
+
|
|
13
|
+
Quick Start:
|
|
14
|
+
from gui_agents import AgentService
|
|
15
|
+
|
|
16
|
+
service = AgentService()
|
|
17
|
+
result = service.execute_task("Take a screenshot")
|
|
18
|
+
print(f"Task completed: {result.status}")
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
# High-level service interface (recommended)
|
|
22
|
+
from .service import (
|
|
23
|
+
AgentService,
|
|
24
|
+
ServiceConfig,
|
|
25
|
+
TaskRequest,
|
|
26
|
+
TaskResult,
|
|
27
|
+
TaskStatus,
|
|
28
|
+
ExecutionStats,
|
|
29
|
+
AgentServiceError,
|
|
30
|
+
ConfigurationError,
|
|
31
|
+
TaskExecutionError
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
# Core agent classes (for advanced users)
|
|
35
|
+
from .agents.agent_s import AgentS2, AgentSFast
|
|
36
|
+
from .agents.hardware_interface import HardwareInterface
|
|
37
|
+
from .store.registry import Registry
|
|
38
|
+
from .agents.global_state import GlobalState
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
from importlib.metadata import version
|
|
42
|
+
__version__ = version("lybic-guiagents")
|
|
43
|
+
except Exception: # during editable installs or missing meta
|
|
44
|
+
__version__ = "0.0.0+dev"
|
|
45
|
+
|
|
46
|
+
# Primary exports (what users should typically use)
|
|
47
|
+
__all__ = [
|
|
48
|
+
# High-level service interface
|
|
49
|
+
"AgentService",
|
|
50
|
+
"ServiceConfig",
|
|
51
|
+
"TaskRequest",
|
|
52
|
+
"TaskResult",
|
|
53
|
+
"TaskStatus",
|
|
54
|
+
"ExecutionStats",
|
|
55
|
+
|
|
56
|
+
# Exceptions
|
|
57
|
+
"AgentServiceError",
|
|
58
|
+
"ConfigurationError",
|
|
59
|
+
"TaskExecutionError",
|
|
60
|
+
|
|
61
|
+
# Core classes (for advanced usage)
|
|
62
|
+
"AgentS2",
|
|
63
|
+
"AgentSFast",
|
|
64
|
+
"HardwareInterface",
|
|
65
|
+
"Registry",
|
|
66
|
+
"GlobalState",
|
|
67
|
+
]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# ---------------------------------------------------------------------------
|
|
2
|
+
# 2) Android device backend (ADB)
|
|
3
|
+
# ---------------------------------------------------------------------------
|
|
4
|
+
from gui_agents.agents.Action import (
|
|
5
|
+
Action,
|
|
6
|
+
Click,
|
|
7
|
+
Drag,
|
|
8
|
+
TypeText,
|
|
9
|
+
Scroll,
|
|
10
|
+
Hotkey,
|
|
11
|
+
Wait,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
from gui_agents.agents.Backend.Backend import Backend
|
|
15
|
+
import time
|
|
16
|
+
import subprocess
|
|
17
|
+
|
|
18
|
+
class ADBBackend(Backend):
|
|
19
|
+
"""Very light‑weight ADB backend (tap / swipe / text / keyevent)."""
|
|
20
|
+
|
|
21
|
+
_supported = {Click, Drag, TypeText, Hotkey, Wait}
|
|
22
|
+
|
|
23
|
+
def __init__(self, serial: str | None = None):
|
|
24
|
+
self.serial = serial # specify target device; None = default
|
|
25
|
+
|
|
26
|
+
# ------------------------------------------------------------------
|
|
27
|
+
def execute(self, action: Action) -> None:
|
|
28
|
+
if not self.supports(type(action)):
|
|
29
|
+
raise NotImplementedError
|
|
30
|
+
|
|
31
|
+
prefix = ["adb"]
|
|
32
|
+
if self.serial:
|
|
33
|
+
prefix += ["-s", self.serial]
|
|
34
|
+
prefix.append("shell")
|
|
35
|
+
|
|
36
|
+
if isinstance(action, Click):
|
|
37
|
+
cmd = prefix
|
|
38
|
+
# cmd = prefix + ["input", "tap", str(action.xy[0]), str(action.xy[1])]
|
|
39
|
+
elif isinstance(action, Drag):
|
|
40
|
+
cmd = prefix + [
|
|
41
|
+
"input", "swipe",
|
|
42
|
+
# str(action.start[0]), str(action.start[1]),
|
|
43
|
+
# str(action.end[0]), str(action.end[1]),
|
|
44
|
+
# str(int(action.duration * 1000)), # type: ignore
|
|
45
|
+
]
|
|
46
|
+
elif isinstance(action, TypeText):
|
|
47
|
+
text = action.text.replace(" ", "%s") # escape spaces
|
|
48
|
+
cmd = prefix + ["input", "text", text]
|
|
49
|
+
# if action.press_enter:
|
|
50
|
+
# subprocess.run(prefix + ["input", "keyevent", "ENTER"], check=True)
|
|
51
|
+
# return
|
|
52
|
+
elif isinstance(action, Hotkey):
|
|
53
|
+
# Map first key for demo purposes
|
|
54
|
+
key = action.keys[0].upper()
|
|
55
|
+
cmd = prefix + ["input", "keyevent", key]
|
|
56
|
+
elif isinstance(action, Wait):
|
|
57
|
+
time.sleep(action.seconds) # type: ignore
|
|
58
|
+
return
|
|
59
|
+
else:
|
|
60
|
+
raise NotImplementedError
|
|
61
|
+
|
|
62
|
+
subprocess.run(cmd, check=True)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Abstract backend base‑class
|
|
2
|
+
# ---------------------------------------------------------------------------
|
|
3
|
+
from abc import ABC, abstractmethod
|
|
4
|
+
from typing import Any, List, Type, Dict, Set
|
|
5
|
+
from gui_agents.agents.Action import (
|
|
6
|
+
Action
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Backend(ABC):
|
|
11
|
+
"""Abstract base for platform back‑ends."""
|
|
12
|
+
|
|
13
|
+
#: Each backend advertises which Action subclasses it supports.
|
|
14
|
+
_supported: Set[Type[Action]] = set()
|
|
15
|
+
|
|
16
|
+
# ---------------------------------------------------------------------
|
|
17
|
+
def supports(self, action_type: Type[Action]) -> bool:
|
|
18
|
+
return action_type in self._supported
|
|
19
|
+
|
|
20
|
+
# ---------------------------------------------------------------------
|
|
21
|
+
@abstractmethod
|
|
22
|
+
def execute(self, action: Action) -> Any:
|
|
23
|
+
"""Translate an *Action* into concrete commands.
|
|
24
|
+
|
|
25
|
+
Should raise **NotImplementedError** if the *action* type is not in
|
|
26
|
+
`self._supported`, so upper layers can decide how to degrade / retry.
|
|
27
|
+
"""
|
|
28
|
+
|