autoglm-gui 1.3.1__py3-none-any.whl → 1.4.1__py3-none-any.whl
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.
- AutoGLM_GUI/__main__.py +0 -4
- AutoGLM_GUI/adb_plus/qr_pair.py +8 -8
- AutoGLM_GUI/agents/__init__.py +20 -0
- AutoGLM_GUI/agents/factory.py +160 -0
- AutoGLM_GUI/agents/mai_adapter.py +627 -0
- AutoGLM_GUI/agents/protocols.py +23 -0
- AutoGLM_GUI/api/__init__.py +50 -7
- AutoGLM_GUI/api/agents.py +61 -19
- AutoGLM_GUI/api/devices.py +12 -18
- AutoGLM_GUI/api/dual_model.py +24 -17
- AutoGLM_GUI/api/health.py +13 -0
- AutoGLM_GUI/api/layered_agent.py +659 -0
- AutoGLM_GUI/api/mcp.py +11 -10
- AutoGLM_GUI/api/version.py +23 -10
- AutoGLM_GUI/api/workflows.py +2 -1
- AutoGLM_GUI/config_manager.py +56 -24
- AutoGLM_GUI/device_adapter.py +263 -0
- AutoGLM_GUI/device_protocol.py +266 -0
- AutoGLM_GUI/devices/__init__.py +49 -0
- AutoGLM_GUI/devices/adb_device.py +205 -0
- AutoGLM_GUI/devices/mock_device.py +183 -0
- AutoGLM_GUI/devices/remote_device.py +172 -0
- AutoGLM_GUI/dual_model/decision_model.py +4 -4
- AutoGLM_GUI/dual_model/protocols.py +3 -3
- AutoGLM_GUI/exceptions.py +3 -3
- AutoGLM_GUI/mai_ui_adapter/agent_wrapper.py +291 -0
- AutoGLM_GUI/metrics.py +13 -20
- AutoGLM_GUI/phone_agent_manager.py +219 -134
- AutoGLM_GUI/phone_agent_patches.py +2 -1
- AutoGLM_GUI/platform_utils.py +5 -2
- AutoGLM_GUI/prompts.py +6 -1
- AutoGLM_GUI/schemas.py +45 -14
- AutoGLM_GUI/scrcpy_stream.py +17 -13
- AutoGLM_GUI/server.py +3 -1
- AutoGLM_GUI/socketio_server.py +16 -4
- AutoGLM_GUI/state.py +10 -30
- AutoGLM_GUI/static/assets/{about-Cj6QXqMf.js → about-_XNhzQZX.js} +1 -1
- AutoGLM_GUI/static/assets/chat-DwJpiAWf.js +126 -0
- AutoGLM_GUI/static/assets/{dialog-CxJlnjzH.js → dialog-B3uW4T8V.js} +3 -3
- AutoGLM_GUI/static/assets/index-Cpv2gSF1.css +1 -0
- AutoGLM_GUI/static/assets/{index-C_B-Arvf.js → index-Cy8TmmHV.js} +1 -1
- AutoGLM_GUI/static/assets/{index-CxJQuE4y.js → index-UYYauTly.js} +6 -6
- AutoGLM_GUI/static/assets/{workflows-BTiGCNI0.js → workflows-Du_de-dt.js} +1 -1
- AutoGLM_GUI/static/index.html +2 -2
- AutoGLM_GUI/types.py +125 -0
- {autoglm_gui-1.3.1.dist-info → autoglm_gui-1.4.1.dist-info}/METADATA +147 -65
- {autoglm_gui-1.3.1.dist-info → autoglm_gui-1.4.1.dist-info}/RECORD +58 -39
- mai_agent/base.py +137 -0
- mai_agent/mai_grounding_agent.py +263 -0
- mai_agent/mai_naivigation_agent.py +526 -0
- mai_agent/prompt.py +148 -0
- mai_agent/unified_memory.py +67 -0
- mai_agent/utils.py +73 -0
- phone_agent/config/prompts.py +6 -1
- phone_agent/config/prompts_zh.py +6 -1
- AutoGLM_GUI/config.py +0 -23
- AutoGLM_GUI/static/assets/chat-BJeomZgh.js +0 -124
- AutoGLM_GUI/static/assets/index-Z0uYCPOO.css +0 -1
- {autoglm_gui-1.3.1.dist-info → autoglm_gui-1.4.1.dist-info}/WHEEL +0 -0
- {autoglm_gui-1.3.1.dist-info → autoglm_gui-1.4.1.dist-info}/entry_points.txt +0 -0
- {autoglm_gui-1.3.1.dist-info → autoglm_gui-1.4.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as D,u as S,r as t,l as b,j as e,B as r,d as W,a as F,b as T}from"./index-
|
|
1
|
+
import{c as D,u as S,r as t,l as b,j as e,B as r,d as W,a as F,b as T}from"./index-UYYauTly.js";import{P as E,L as f,C as L,a as P,b as z,c as H,T as I,D as q,d as B,e as M,f as _,g as j,I as O,h as R,i as A}from"./dialog-B3uW4T8V.js";const G=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],J=D("square-pen",G);function U(){const s=S(),[m,g]=t.useState([]),[p,x]=t.useState(!0),[k,o]=t.useState(!1),[c,h]=t.useState(null),[l,i]=t.useState({name:"",text:""}),[w,u]=t.useState(!1);t.useEffect(()=>{d()},[]);const d=async()=>{try{x(!0);const a=await b();g(a.workflows)}catch(a){console.error("Failed to load workflows:",a)}finally{x(!1)}},v=()=>{h(null),i({name:"",text:""}),o(!0)},N=a=>{h(a),i({name:a.name,text:a.text}),o(!0)},C=async()=>{try{u(!0),c?await F(c.uuid,l):await T(l),o(!1),d()}catch(a){console.error("Failed to save workflow:",a)}finally{u(!1)}},y=async a=>{if(window.confirm(s.workflows.deleteConfirm))try{await W(a),d()}catch(n){console.error("Failed to delete workflow:",n)}};return e.jsxs("div",{className:"container mx-auto p-6 max-w-7xl",children:[e.jsxs("div",{className:"flex justify-between items-center mb-6",children:[e.jsx("h1",{className:"text-3xl font-bold",children:s.workflows.title}),e.jsxs(r,{onClick:v,children:[e.jsx(E,{className:"w-4 h-4 mr-2"}),s.workflows.createNew]})]}),p?e.jsx("div",{className:"flex justify-center items-center h-64",children:e.jsx(f,{className:"w-8 h-8 animate-spin text-slate-400"})}):m.length===0?e.jsx("div",{className:"text-center py-12",children:e.jsx("p",{className:"text-slate-500 dark:text-slate-400",children:s.workflows.empty})}):e.jsx("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:m.map(a=>e.jsxs(L,{className:"hover:shadow-md transition-shadow",children:[e.jsx(P,{children:e.jsx(z,{className:"text-lg",children:a.name})}),e.jsxs(H,{children:[e.jsx("p",{className:"text-sm text-slate-600 dark:text-slate-400 mb-4 line-clamp-3",children:a.text}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(r,{variant:"outline",size:"sm",onClick:()=>N(a),children:[e.jsx(J,{className:"w-3 h-3 mr-1"}),s.common.edit]}),e.jsxs(r,{variant:"destructive",size:"sm",onClick:()=>y(a.uuid),children:[e.jsx(I,{className:"w-3 h-3 mr-1"}),s.common.delete]})]})]})]},a.uuid))}),e.jsx(q,{open:k,onOpenChange:o,children:e.jsxs(B,{className:"sm:max-w-[600px]",children:[e.jsx(M,{children:e.jsx(_,{children:c?s.workflows.edit:s.workflows.create})}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{htmlFor:"name",children:s.workflows.name}),e.jsx(O,{id:"name",value:l.name,onChange:a=>i(n=>({...n,name:a.target.value})),placeholder:s.workflows.namePlaceholder})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(j,{htmlFor:"text",children:s.workflows.text}),e.jsx(R,{id:"text",value:l.text,onChange:a=>i(n=>({...n,text:a.target.value})),placeholder:s.workflows.textPlaceholder,rows:6,className:"resize-none !rounded-lg"})]})]}),e.jsxs(A,{children:[e.jsx(r,{variant:"outline",onClick:()=>o(!1),children:s.common.cancel}),e.jsx(r,{onClick:C,disabled:!l.name.trim()||!l.text.trim()||w,children:w?e.jsxs(e.Fragment,{children:[e.jsx(f,{className:"w-4 h-4 mr-2 animate-spin"}),s.common.loading]}):s.common.save})]})]})})]})}export{U as component};
|
AutoGLM_GUI/static/index.html
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
<link rel="icon" type="image/png" sizes="192x192" href="/logo-192.png" />
|
|
12
12
|
<link rel="icon" type="image/png" sizes="512x512" href="/logo-512.png" />
|
|
13
13
|
<meta name="theme-color" content="#f5f1e8" />
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-UYYauTly.js"></script>
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Cpv2gSF1.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="app"></div>
|
AutoGLM_GUI/types.py
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Literal
|
|
4
|
+
|
|
5
|
+
from typing_extensions import TypedDict
|
|
6
|
+
|
|
7
|
+
ActionMetadata = Literal["do", "finish", "takeover"]
|
|
8
|
+
PhoneActionType = Literal[
|
|
9
|
+
"Tap", "Swipe", "Type", "Launch", "Wait", "Back", "Home", "Long Press", "Double Tap"
|
|
10
|
+
]
|
|
11
|
+
MAIActionType = Literal[
|
|
12
|
+
"click",
|
|
13
|
+
"swipe",
|
|
14
|
+
"type",
|
|
15
|
+
"terminate",
|
|
16
|
+
"answer",
|
|
17
|
+
"wait",
|
|
18
|
+
"long_press",
|
|
19
|
+
"double_click",
|
|
20
|
+
"open",
|
|
21
|
+
"system_button",
|
|
22
|
+
"drag",
|
|
23
|
+
]
|
|
24
|
+
SwipeDirection = Literal["up", "down", "left", "right"]
|
|
25
|
+
SystemButton = Literal["back", "home", "enter"]
|
|
26
|
+
TerminateStatus = Literal["success", "failure"]
|
|
27
|
+
MessageRole = Literal["system", "user", "assistant"]
|
|
28
|
+
ContentType = Literal["text", "image_url"]
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class PhoneAgentAction(TypedDict, total=False):
|
|
32
|
+
_metadata: ActionMetadata
|
|
33
|
+
action: PhoneActionType
|
|
34
|
+
element: list[int]
|
|
35
|
+
text: str
|
|
36
|
+
app: str
|
|
37
|
+
start: list[int]
|
|
38
|
+
end: list[int]
|
|
39
|
+
duration: str
|
|
40
|
+
message: str
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class MAIAction(TypedDict, total=False):
|
|
44
|
+
action: MAIActionType
|
|
45
|
+
coordinate: list[float]
|
|
46
|
+
direction: SwipeDirection
|
|
47
|
+
text: str
|
|
48
|
+
button: SystemButton
|
|
49
|
+
status: TerminateStatus
|
|
50
|
+
start_coordinate: list[float]
|
|
51
|
+
end_coordinate: list[float]
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class SSEThinkingChunkData(TypedDict):
|
|
55
|
+
type: str
|
|
56
|
+
role: str
|
|
57
|
+
chunk: str
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class SSEStepData(TypedDict, total=False):
|
|
61
|
+
type: str
|
|
62
|
+
role: str
|
|
63
|
+
step: int
|
|
64
|
+
thinking: str
|
|
65
|
+
action: PhoneAgentAction | None
|
|
66
|
+
success: bool
|
|
67
|
+
finished: bool
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class SSEDoneData(TypedDict, total=False):
|
|
71
|
+
type: str
|
|
72
|
+
role: str
|
|
73
|
+
message: str
|
|
74
|
+
steps: int
|
|
75
|
+
success: bool
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class SSEErrorData(TypedDict):
|
|
79
|
+
type: str
|
|
80
|
+
role: str
|
|
81
|
+
message: str
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
SSEEventData = SSEThinkingChunkData | SSEStepData | SSEDoneData | SSEErrorData
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class MAIAgentSpecificConfig(TypedDict, total=False):
|
|
88
|
+
history_n: int
|
|
89
|
+
max_pixels: int
|
|
90
|
+
min_pixels: int
|
|
91
|
+
tools: list[dict[str, str]]
|
|
92
|
+
use_mai_prompt: bool
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class GLMAgentSpecificConfig(TypedDict, total=False):
|
|
96
|
+
pass
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
AgentSpecificConfig = MAIAgentSpecificConfig | GLMAgentSpecificConfig
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class TextContent(TypedDict):
|
|
103
|
+
type: ContentType
|
|
104
|
+
text: str
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class ImageURLContent(TypedDict):
|
|
108
|
+
type: ContentType
|
|
109
|
+
image_url: dict[str, str]
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
MessageContent = str | list[TextContent | ImageURLContent]
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class ChatMessage(TypedDict, total=False):
|
|
116
|
+
role: MessageRole
|
|
117
|
+
content: MessageContent
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
ConversationContext = list[ChatMessage]
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class Observation(TypedDict, total=False):
|
|
124
|
+
screenshot: object
|
|
125
|
+
accessibility_tree: dict[str, object] | None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autoglm-gui
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.1
|
|
4
4
|
Summary: Web GUI for AutoGLM Phone Agent - AI-powered Android automation
|
|
5
5
|
Project-URL: Homepage, https://github.com/suyiiyii/AutoGLM-GUI
|
|
6
6
|
Project-URL: Repository, https://github.com/suyiiyii/AutoGLM-GUI
|
|
@@ -23,11 +23,15 @@ Requires-Python: >=3.10
|
|
|
23
23
|
Requires-Dist: fastapi>=0.124.0
|
|
24
24
|
Requires-Dist: fastmcp>=2.0.0
|
|
25
25
|
Requires-Dist: httpx[socks]>=0.28.1
|
|
26
|
+
Requires-Dist: jinja2>=3.1.0
|
|
26
27
|
Requires-Dist: loguru>=0.7.3
|
|
28
|
+
Requires-Dist: numpy>=1.24.0
|
|
29
|
+
Requires-Dist: openai-agents>=0.6.4
|
|
27
30
|
Requires-Dist: openai>=2.9.0
|
|
28
31
|
Requires-Dist: pillow>=11.3.0
|
|
29
32
|
Requires-Dist: prometheus-client>=0.21.0
|
|
30
33
|
Requires-Dist: python-socketio>=5.11.0
|
|
34
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
31
35
|
Requires-Dist: uvicorn[standard]>=0.38.0
|
|
32
36
|
Requires-Dist: zeroconf>=0.148.0
|
|
33
37
|
Description-Content-Type: text/markdown
|
|
@@ -75,9 +79,9 @@ AutoGLM 手机助手的现代化 Web 图形界面 - 让 AI 自动化操作 Andro
|
|
|
75
79
|
|
|
76
80
|
| 操作系统 | 下载链接 | 说明 |
|
|
77
81
|
|---------|---------|------|
|
|
78
|
-
| 🪟 **Windows** (x64) | [📦 下载便携版 EXE](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.
|
|
79
|
-
| 🍎 **macOS** (Apple Silicon) | [📦 下载 DMG](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.
|
|
80
|
-
| 🐧 **Linux** (x64) | [📦 下载 AppImage](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.
|
|
82
|
+
| 🪟 **Windows** (x64) | [📦 下载便携版 EXE](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.1/AutoGLM.GUI.1.4.1.exe) | 适用于 Windows 10/11,免安装 |
|
|
83
|
+
| 🍎 **macOS** (Apple Silicon) | [📦 下载 DMG](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.1/AutoGLM.GUI-1.4.1-arm64.dmg) | 适用于 M 芯片 Mac |
|
|
84
|
+
| 🐧 **Linux** (x64) | [📦 下载 AppImage](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.1/AutoGLM.GUI-1.4.1.AppImage) \| [deb](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.1/autoglm-gui_1.4.1_amd64.deb) \| [tar.gz](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.1/autoglm-gui-1.4.1.tar.gz) | 通用格式,支持主流发行版 |
|
|
81
85
|
|
|
82
86
|
</div>
|
|
83
87
|
|
|
@@ -105,27 +109,27 @@ uvx autoglm-gui
|
|
|
105
109
|
|
|
106
110
|
## 📸 界面预览
|
|
107
111
|
|
|
112
|
+
快速跳转: [普通模式](#mode-classic) · [双模型协作(增强)](#mode-dual) · [分层代理(增强)](#mode-layered)
|
|
113
|
+
|
|
108
114
|
### 双模型协作架构
|
|
109
115
|
|
|
110
|
-
|
|
116
|
+
**决策大模型(如 GLM-4.7)+ 视觉小模型(AutoGLM-Phone)**:大模型负责规划与纠错,小模型负责观察与执行,适合更复杂、更长流程的任务。
|
|
111
117
|
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
- 🔄 **智能协作**:大模型规划任务,小模型批量执行,异常时自动重新规划
|
|
116
|
-
- ⚡ **三种模式**:
|
|
117
|
-
- **DEEP**:深度思考模式,适合复杂任务,每步都详细分析
|
|
118
|
-
- **FAST**:快速响应模式,适合简单任务,简洁高效
|
|
119
|
-
- **TURBO**:极速模式,一次性生成操作序列,性能最优
|
|
118
|
+
- 🧠 **决策层**:任务理解 / 步骤规划 / 异常纠错
|
|
119
|
+
- 👁️ **执行层**:识别界面元素并点击/滑动/输入完成操作
|
|
120
|
+
- 🔄 **运行方式**:规划 → 执行 → 反馈;必要时自动重规划
|
|
120
121
|
|
|
121
|
-
|
|
122
|
-
- 📈 更强智能:大模型提供更深入的任务理解和规划能力
|
|
123
|
-
- 🛡️ 异常恢复:自动检测屏幕卡死、操作失败等异常,智能重试和重新规划
|
|
124
|
-
- 💰 成本优化:TURBO 模式大幅减少大模型调用次数,降低 API 成本
|
|
125
|
-
- 📊 实时可见:流式展示思考过程,透明化决策逻辑
|
|
122
|
+
**模式选择(Thinking Mode)**:TURBO(更省更快,推荐常规流程)/ DEEP(更稳,适合复杂任务)/ FAST(更快,适合轻量任务)。
|
|
126
123
|
|
|
127
124
|
<img width="879" height="849" alt="双模型协作界面" src="https://github.com/user-attachments/assets/15e5cf51-5a19-403d-9af3-46f77c2068f5" />
|
|
128
125
|
|
|
126
|
+
### 分层代理
|
|
127
|
+
|
|
128
|
+
**分层代理(Layered Agent)** 是更“严格”的两层结构:**规划层**专注任务拆解与多轮推理,**执行层**专注观察与操作。规划层会通过工具调用(可在界面中看到每次调用与结果)来驱动执行层完成一个个原子子任务,便于边执行边调整策略,适合需要多轮交互/推理的高级任务。
|
|
129
|
+
|
|
130
|
+
<img width="939" height="851" alt="图片" src="https://github.com/user-attachments/assets/c054d998-726d-48ed-99e7-bb33581b3745" />
|
|
131
|
+
|
|
132
|
+
|
|
129
133
|
### 任务开始
|
|
130
134
|

|
|
131
135
|
|
|
@@ -281,66 +285,78 @@ AutoGLM-GUI 支持同时控制多个 Android 设备:
|
|
|
281
285
|
4. **对话** - 描述你想要做什么(例如:"去美团点一杯霸王茶姬的伯牙绝弦")
|
|
282
286
|
5. **观察** - Agent 会逐步执行操作,每一步的思考过程和动作都会实时显示
|
|
283
287
|
|
|
284
|
-
###
|
|
288
|
+
### 🤖 选择 Agent 类型
|
|
289
|
+
|
|
290
|
+
在初始化设备时,可以选择不同的 Agent 类型(默认:GLM Agent):
|
|
291
|
+
|
|
292
|
+
- **GLM Agent**:基于 GLM 模型优化,成熟稳定,适合大多数任务
|
|
293
|
+
- **MAI Agent**:阿里通义团队开发的 Mobile Agent,支持多张历史截图上下文,适合复杂任务
|
|
294
|
+
|
|
295
|
+
MAI Agent 可配置参数:
|
|
296
|
+
- `history_n`:历史截图数量(1-10,默认:3)
|
|
297
|
+
|
|
298
|
+
<a id="mode-classic"></a>
|
|
299
|
+
### 🌿 普通模式(单模型 / Open AutoGLM)
|
|
300
|
+
|
|
301
|
+
这是**开源 AutoGLM-Phone 的“原生形态”**:由一个视觉模型直接完成「理解任务 → 规划步骤 → 观察屏幕 → 执行动作」的完整闭环。
|
|
285
302
|
|
|
286
|
-
|
|
303
|
+
- **优点**:配置最简单,上手最快
|
|
304
|
+
- **适用场景**:目标明确、步骤较少的任务(例如打开应用、简单导航)
|
|
287
305
|
|
|
288
|
-
|
|
306
|
+
<a id="mode-dual"></a>
|
|
307
|
+
### 🧠 双模型协作模式(增强)
|
|
289
308
|
|
|
290
|
-
|
|
309
|
+
双模型模式通过**决策大模型(负责规划/纠错)** + **视觉小模型(负责观察/操作)**协作,提升复杂任务的稳定性与可控性。
|
|
291
310
|
|
|
292
|
-
|
|
293
|
-
- **特点**:一次性生成完整操作序列,批量执行
|
|
294
|
-
- **优势**:
|
|
295
|
-
- 大模型调用次数最少,API 成本最低
|
|
296
|
-
- 执行速度最快,适合可预测的常规任务
|
|
297
|
-
- 自动异常检测和恢复,遇到问题自动重新规划
|
|
298
|
-
- **适用场景**:订外卖、打车、应用内导航等流程明确的任务
|
|
299
|
-
- **示例**:`"打开微信给张三发消息说我到了"`
|
|
311
|
+
#### 工作模式(Thinking Mode)
|
|
300
312
|
|
|
301
|
-
|
|
302
|
-
-
|
|
303
|
-
-
|
|
304
|
-
- 处理复杂任务能力强
|
|
305
|
-
- 每步都有完整的思考过程
|
|
306
|
-
- 异常处理更全面
|
|
307
|
-
- **适用场景**:需要智能决策的复杂任务
|
|
308
|
-
- **示例**:`"在小红书上找5个关于健身的帖子并评论"`
|
|
313
|
+
- **🚀 TURBO(推荐)**:大模型先生成“操作序列”,视觉模型批量执行;仅在异常时触发重规划(通常 1-2 次大模型调用)
|
|
314
|
+
- **🎯 DEEP**:每一步都调用大模型做决策与分析,最稳但成本/耗时更高
|
|
315
|
+
- **⚡ FAST**:同样逐步决策,但提示词更短、响应更快,适合轻量任务
|
|
309
316
|
|
|
310
|
-
|
|
311
|
-
- **特点**:简化提示词,快速决策
|
|
312
|
-
- **优势**:
|
|
313
|
-
- 响应速度快
|
|
314
|
-
- 适合简单任务
|
|
315
|
-
- **适用场景**:简单操作、明确指令
|
|
316
|
-
- **示例**:`"打开美团"`
|
|
317
|
+
#### 配置要点
|
|
317
318
|
|
|
318
|
-
|
|
319
|
+
- **决策大模型**:建议使用推理/规划能力较强的模型(如 GLM-4.7、GPT-4、Claude 等)
|
|
320
|
+
- **视觉小模型**:建议使用具备 GUI 观察与操作能力的模型(如 AutoGLM-Phone-9B / `autoglm-phone`)
|
|
319
321
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
- **智谱 BigModel**:
|
|
323
|
-
- Base URL: `https://open.bigmodel.cn/api/paas/v4`
|
|
324
|
-
- Model: `glm-4.7`
|
|
325
|
-
- API Key: 你的智谱 API Key
|
|
322
|
+
<a id="mode-layered"></a>
|
|
323
|
+
### 🧩 分层代理模式(Layered Agent,增强 / 实验性)
|
|
326
324
|
|
|
327
|
-
|
|
328
|
-
- **推荐模型**:AutoGLM-Phone-9B
|
|
329
|
-
- **智谱 BigModel**:
|
|
330
|
-
- Base URL: `https://open.bigmodel.cn/api/paas/v4`
|
|
331
|
-
- Model: `autoglm-phone`
|
|
332
|
-
- API Key: 你的智谱 API Key
|
|
325
|
+
分层代理模式是更“严格”的两层结构:**规划层**专注拆解与推理,**执行层**专注观察与操作,二者通过工具调用协作完成任务。
|
|
333
326
|
|
|
327
|
+
- **工作方式**:规划层(决策模型)会调用工具(如 `list_devices()` / `chat(device_id, message)`)去驱动执行层;你能在界面里看到每次工具调用与返回结果
|
|
328
|
+
- **执行粒度**:执行层每次只做一个“原子子任务”,并有步数上限(例如每次最多 5 步),便于规划层按反馈动态调整策略
|
|
329
|
+
- **适用场景**:需要多轮推理、需要“边看边问边改计划”的复杂任务(例如浏览/筛选/对比、多轮表单填写等)
|
|
330
|
+
- **重要限制**:执行层不负责“记笔记/保存中间信息/直接提取文本变量”;规划层需要信息时必须通过提问让执行层把屏幕内容“念出来”
|
|
334
331
|
|
|
335
|
-
|
|
332
|
+
### 🎭 三种工作模式对比
|
|
336
333
|
|
|
337
|
-
|
|
338
|
-
|-----|--------------|------|
|
|
339
|
-
| TURBO | 1-2 次 | 1次规划 + 异常时1次重新规划 |
|
|
340
|
-
| DEEP | 10 次 | 每步都调用大模型决策 |
|
|
341
|
-
| FAST | 10 次 | 每步都调用大模型(简化版) |
|
|
334
|
+
AutoGLM-GUI 提供了三种不同的代理工作模式,适用于不同的使用场景:
|
|
342
335
|
|
|
343
|
-
|
|
336
|
+
#### 1️⃣ 经典模式(Classic Mode)
|
|
337
|
+
- **架构**:单一 `autoglm-phone` 视觉模型直接处理(即普通 Open AutoGLM 的体验)
|
|
338
|
+
- **适用场景**:简单、明确的任务
|
|
339
|
+
- **特点**:配置简单,适合快速上手
|
|
340
|
+
|
|
341
|
+
#### 2️⃣ 双模型协作(Dual Model)
|
|
342
|
+
- **架构**:决策大模型(GLM-4.7/GPT-4)+ 视觉小模型(autoglm-phone)
|
|
343
|
+
- **适用场景**:需要智能规划的中高复杂度任务
|
|
344
|
+
- **特点**:支持 TURBO/DEEP/FAST 三种思考模式,在成本、速度与稳定性之间做权衡
|
|
345
|
+
|
|
346
|
+
#### 3️⃣ 分层代理(Layered Agent)🆕 实验性功能
|
|
347
|
+
- **架构**:基于 Agent SDK 的分层任务执行系统
|
|
348
|
+
- **规划层**:决策模型作为高级智能中枢,负责任务拆解和多轮推理
|
|
349
|
+
- **执行层**:autoglm-phone 作为执行者,只负责观察和操作
|
|
350
|
+
- **适用场景**:需要多轮交互和复杂推理的高级任务
|
|
351
|
+
- **特点**:规划层通过工具调用驱动执行层,过程更透明、更便于调试与迭代策略
|
|
352
|
+
|
|
353
|
+
**选择建议**:
|
|
354
|
+
- 🚀 **常规任务(订外卖、打车)**:双模型 TURBO 模式
|
|
355
|
+
- 🎯 **复杂任务(浏览并评论帖子)**:双模型 DEEP 模式
|
|
356
|
+
- 🏗️ **需要多轮推理的任务**:分层代理模式
|
|
357
|
+
|
|
358
|
+
> 💬 **我们需要你的反馈!**
|
|
359
|
+
> 不同的任务场景适合不同的模式,我们正在持续优化这些模式的性能和易用性。如果你在使用过程中有任何建议、遇到问题或发现某个模式特别好用/不好用,欢迎通过 [GitHub Issues](https://github.com/suyiiyii/AutoGLM-GUI/issues) 或 [QQ 交流群](https://qm.qq.com/q/J5eAs9tn0W) 告诉我们。你的反馈将帮助我们改进产品!
|
|
344
360
|
|
|
345
361
|
### 手动控制模式
|
|
346
362
|
|
|
@@ -399,6 +415,7 @@ uv run autoglm-gui --base-url http://localhost:8080/v1 --reload
|
|
|
399
415
|
|
|
400
416
|
# 前端开发服务器(热重载)
|
|
401
417
|
cd frontend && pnpm dev
|
|
418
|
+
```
|
|
402
419
|
|
|
403
420
|
### 构建和打包
|
|
404
421
|
|
|
@@ -410,6 +427,71 @@ uv run python scripts/build.py
|
|
|
410
427
|
uv run python scripts/build.py --pack
|
|
411
428
|
```
|
|
412
429
|
|
|
430
|
+
## 🐳 Docker 部署
|
|
431
|
+
|
|
432
|
+
AutoGLM-GUI 支持 Docker 容器化部署,适合服务器端远程控制 Android 设备的场景。
|
|
433
|
+
|
|
434
|
+
### 快速启动
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
# 1. 克隆仓库
|
|
438
|
+
git clone https://github.com/suyiiyii/AutoGLM-GUI.git
|
|
439
|
+
cd AutoGLM-GUI
|
|
440
|
+
|
|
441
|
+
# 2. 创建环境变量文件
|
|
442
|
+
cat > .env << EOF
|
|
443
|
+
AUTOGLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4
|
|
444
|
+
AUTOGLM_MODEL_NAME=autoglm-phone
|
|
445
|
+
AUTOGLM_API_KEY=sk-your-api-key
|
|
446
|
+
EOF
|
|
447
|
+
|
|
448
|
+
# 3. 启动容器
|
|
449
|
+
docker-compose up -d
|
|
450
|
+
|
|
451
|
+
# 4. 访问 http://localhost:8000
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### 手动构建
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
# 构建镜像
|
|
458
|
+
docker build -t autoglm-gui:latest .
|
|
459
|
+
|
|
460
|
+
# 运行容器 (Linux 推荐 host 网络)
|
|
461
|
+
docker run -d --network host \
|
|
462
|
+
-e AUTOGLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4 \
|
|
463
|
+
-e AUTOGLM_MODEL_NAME=autoglm-phone \
|
|
464
|
+
-e AUTOGLM_API_KEY=sk-xxx \
|
|
465
|
+
-v autoglm_config:/root/.config/autoglm \
|
|
466
|
+
-v autoglm_logs:/app/logs \
|
|
467
|
+
autoglm-gui:latest
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### 环境变量
|
|
471
|
+
|
|
472
|
+
| 变量 | 说明 | 默认值 |
|
|
473
|
+
|------|------|--------|
|
|
474
|
+
| `AUTOGLM_BASE_URL` | 模型 API 地址 | (必填) |
|
|
475
|
+
| `AUTOGLM_MODEL_NAME` | 模型名称 | `autoglm-phone` |
|
|
476
|
+
| `AUTOGLM_API_KEY` | API 密钥 | (必填) |
|
|
477
|
+
|
|
478
|
+
### 连接远程设备
|
|
479
|
+
|
|
480
|
+
Docker 容器中连接 Android 设备推荐使用 **WiFi 调试**:
|
|
481
|
+
|
|
482
|
+
1. 在 Android 设备上开启「开发者选项」→「无线调试」
|
|
483
|
+
2. 记录设备的 IP 地址和端口号
|
|
484
|
+
3. 在 Web 界面点击「添加无线设备」→ 输入 IP:端口 → 连接
|
|
485
|
+
|
|
486
|
+
> ⚠️ **注意**:二维码配对功能在 Docker bridge 网络中可能受限(依赖 mDNS 多播)。Linux 系统建议使用 `network_mode: host`。
|
|
487
|
+
|
|
488
|
+
### 健康检查
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
# 检查服务状态
|
|
492
|
+
curl http://localhost:8000/api/health
|
|
493
|
+
```
|
|
494
|
+
|
|
413
495
|
## 📝 开源协议
|
|
414
496
|
|
|
415
497
|
Apache License 2.0
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
AutoGLM_GUI/__init__.py,sha256=ic002QIj6sw9cyhh7e_60DFIb7omtPcF01-L6M4lllM,2176
|
|
2
|
-
AutoGLM_GUI/__main__.py,sha256=
|
|
3
|
-
AutoGLM_GUI/
|
|
4
|
-
AutoGLM_GUI/
|
|
2
|
+
AutoGLM_GUI/__main__.py,sha256=ygs0rleqyOdDOZBVc7eZoPOjrVmAwKptYjeWOwTtvMc,6251
|
|
3
|
+
AutoGLM_GUI/config_manager.py,sha256=Jy10Ka5A-c7Hq94zc3nPUXjV6uqgXW2Dqhip4TG7yz4,23603
|
|
4
|
+
AutoGLM_GUI/device_adapter.py,sha256=eA0bOlU-lzJig9cNCZrS0FqApEVbSOg7oke5P1iJ1rA,9011
|
|
5
5
|
AutoGLM_GUI/device_manager.py,sha256=dAHP29a63H6GY43f715dOlJdwOz1eWa2XnPf2_SbIiY,26923
|
|
6
|
-
AutoGLM_GUI/
|
|
6
|
+
AutoGLM_GUI/device_protocol.py,sha256=PyjCckBz8dtU6XUSqLy2epYbIsREoA4xcfOLktYEFNo,6919
|
|
7
|
+
AutoGLM_GUI/exceptions.py,sha256=QXTQzxdbEHDUrtaD1G4zuKZydFJO5ymNvuo8ZvVjUdA,3487
|
|
7
8
|
AutoGLM_GUI/logger.py,sha256=wLzjbRqsHAsOtI9yB0bcUZFVzgGK6qM8330std6FjVw,2553
|
|
8
|
-
AutoGLM_GUI/metrics.py,sha256=
|
|
9
|
-
AutoGLM_GUI/phone_agent_manager.py,sha256=
|
|
10
|
-
AutoGLM_GUI/phone_agent_patches.py,sha256
|
|
11
|
-
AutoGLM_GUI/platform_utils.py,sha256=
|
|
12
|
-
AutoGLM_GUI/prompts.py,sha256=
|
|
13
|
-
AutoGLM_GUI/schemas.py,sha256=
|
|
9
|
+
AutoGLM_GUI/metrics.py,sha256=L72hzMNzw1eemQLz6Hoth5sRW6OQlI4Np5BIFSFwl1c,8994
|
|
10
|
+
AutoGLM_GUI/phone_agent_manager.py,sha256=6ySHfglvMqXv8lLPAKoTE59Mi_8NLWjlAJ63ejQx0Ms,32573
|
|
11
|
+
AutoGLM_GUI/phone_agent_patches.py,sha256=xbuD7rBVPyCQ7wMb4MNW-cvSDIdtup7pJT_KvB88foM,4948
|
|
12
|
+
AutoGLM_GUI/platform_utils.py,sha256=fAu_3rHYVlIpDxs09eCkJBUI5_qb2_cHu1si6FuuM1U,2448
|
|
13
|
+
AutoGLM_GUI/prompts.py,sha256=lC5UktW0KRpWKij6T0GG1OrNKV9gAfM6dUcp_tjX7mo,4814
|
|
14
|
+
AutoGLM_GUI/schemas.py,sha256=udgl1SY5c3EbklkSQKrLRu257Wf6w4IFC6S1MmN_mp0,17707
|
|
14
15
|
AutoGLM_GUI/scrcpy_protocol.py,sha256=h6AtAGq3zMM30FWM7EYiYKJz7BDikpNCOjcKtFcRx3s,997
|
|
15
|
-
AutoGLM_GUI/scrcpy_stream.py,sha256
|
|
16
|
-
AutoGLM_GUI/server.py,sha256=
|
|
17
|
-
AutoGLM_GUI/socketio_server.py,sha256=
|
|
18
|
-
AutoGLM_GUI/state.py,sha256=
|
|
16
|
+
AutoGLM_GUI/scrcpy_stream.py,sha256=LScxoEXDQu-Vn3TeG5y0fJ4Z66kMVOUdCkrgYq_tTlc,16913
|
|
17
|
+
AutoGLM_GUI/server.py,sha256=Fo2Afl6CFT5B6MBggvR0n_savNxqxW22bFdN51NXRJs,299
|
|
18
|
+
AutoGLM_GUI/socketio_server.py,sha256=ekEyyuIR1CwREDhDyGhIu8wxJ9S42Cemrf4fOdRxNKs,3826
|
|
19
|
+
AutoGLM_GUI/state.py,sha256=qGnqZKdWFDpegVBLB4KHDbzfAVWc89C0AiCum_R9LSk,912
|
|
20
|
+
AutoGLM_GUI/types.py,sha256=LEheZvDfeBrR2Hh_bEwRx3x_8qNDlEV7t8-9ymzzjFE,2532
|
|
19
21
|
AutoGLM_GUI/version.py,sha256=z0MPXu-k9UO7RXxVGcAwim2M3yklrRqLwgOq66zSdzo,178
|
|
20
22
|
AutoGLM_GUI/workflow_manager.py,sha256=AZ_zrhSeEvtlF1HTNMNS3f4qBwRuX-bzImdZEVZVXV8,5552
|
|
21
23
|
AutoGLM_GUI/adb_plus/__init__.py,sha256=YwYYbeMrsKv8BGPcD6dv0PB8-wW93Ik9pMHo02i8QoU,945
|
|
@@ -24,39 +26,50 @@ AutoGLM_GUI/adb_plus/ip.py,sha256=dt6ffIjiW_jGoEqUKUDi9fRGbWN1W9LxfT8rWIqgS-0,22
|
|
|
24
26
|
AutoGLM_GUI/adb_plus/keyboard_installer.py,sha256=dsQqLgWd2kkTeljdTTT77mFwJpcM-IJecMcJJEutbHo,13541
|
|
25
27
|
AutoGLM_GUI/adb_plus/mdns.py,sha256=AwQ4MQsPKVW1tPjIUpOWvBQGlJxvVrO9eTvxoqsgPUo,5862
|
|
26
28
|
AutoGLM_GUI/adb_plus/pair.py,sha256=3UElG0yjylhmZBtPpDER2BNMZs9CwDeavjuQOwOC4sw,1945
|
|
27
|
-
AutoGLM_GUI/adb_plus/qr_pair.py,sha256=
|
|
29
|
+
AutoGLM_GUI/adb_plus/qr_pair.py,sha256=WHvx76q2xfTnJPXf5y_qI9cNuiBC_KeWwqYpuROdPkw,13571
|
|
28
30
|
AutoGLM_GUI/adb_plus/screenshot.py,sha256=pr7BpmUcGZO9rthpDeMRn4D1oAGX9aEEVL3ZnTQzrIo,3211
|
|
29
31
|
AutoGLM_GUI/adb_plus/serial.py,sha256=lDbBXTIoOJ5lbFj50K5X7PZnfpKt1vRpFiWVjolfEhQ,3142
|
|
30
32
|
AutoGLM_GUI/adb_plus/touch.py,sha256=7cyMon9nOd6zQvZdHK7BHWoRLLWkdK-qWfTuSFfFzJA,2301
|
|
31
33
|
AutoGLM_GUI/adb_plus/version.py,sha256=u5u1N40izJceeORN9kFhyz0wq_hZtlwBXaiytfA3px8,2428
|
|
32
|
-
AutoGLM_GUI/
|
|
33
|
-
AutoGLM_GUI/
|
|
34
|
+
AutoGLM_GUI/agents/__init__.py,sha256=-LiMODXhqyXEcsMLOMGgnAhn8xIGokzWE4RyfZVcx_4,430
|
|
35
|
+
AutoGLM_GUI/agents/factory.py,sha256=3_hmikWufNBHn-eg1rLAWqe9mPBYpzTBeNDADPOMoIY,4969
|
|
36
|
+
AutoGLM_GUI/agents/mai_adapter.py,sha256=rUxw1LtHtKtfhLUDbQdbKWlsDMirNqAwBdpwH7wf2nY,21132
|
|
37
|
+
AutoGLM_GUI/agents/protocols.py,sha256=3x3xutUZpF4BFXj0kwp8ZbGA39IIMSU9ymTtDnuoBfs,559
|
|
38
|
+
AutoGLM_GUI/api/__init__.py,sha256=GtfuNa-G6SdeWD5_Zj99hvkXiKPYOZ3_YTysrtrGpSk,5420
|
|
39
|
+
AutoGLM_GUI/api/agents.py,sha256=GtAwiakLxI3fAOaFmNfYerNw-QsUFmiIVb1INAWrJS8,20661
|
|
34
40
|
AutoGLM_GUI/api/control.py,sha256=G-7hfdqTl5fq-UXOwE2CI_HMbfmRH1Vd589t2FTNZyY,3155
|
|
35
|
-
AutoGLM_GUI/api/devices.py,sha256=
|
|
36
|
-
AutoGLM_GUI/api/dual_model.py,sha256=
|
|
37
|
-
AutoGLM_GUI/api/
|
|
41
|
+
AutoGLM_GUI/api/devices.py,sha256=Z_DAPrsPo9DhZSZl29yFGF_ml6obZNQDI-p4Co9oXGI,11088
|
|
42
|
+
AutoGLM_GUI/api/dual_model.py,sha256=PYKM9pDcSWpRMwko0aBJ5M8ekkGd9c98YiMoPQ9Jg0k,10648
|
|
43
|
+
AutoGLM_GUI/api/health.py,sha256=ZedFUv-IHst_YUyeQ_MpL5JXOKuOhWVlHBVwAY3MM0I,266
|
|
44
|
+
AutoGLM_GUI/api/layered_agent.py,sha256=Ts8R5i11woTFHHHUlAOATb5xRVy3TY9MSwfte3iUsSI,26297
|
|
45
|
+
AutoGLM_GUI/api/mcp.py,sha256=ppqzBxiS_8tUeJ5P8AszH_4m6q0sNe0oT2SCU_uISks,4625
|
|
38
46
|
AutoGLM_GUI/api/media.py,sha256=Ioncwd68CNkYvqmeTJJ3P5I1rjWfw6PM4WPz5Ixx8vI,1631
|
|
39
47
|
AutoGLM_GUI/api/metrics.py,sha256=2h5MnUiMTRAshD6nvcarLVoSlOjtlyVAGg-LRXq03vQ,941
|
|
40
|
-
AutoGLM_GUI/api/version.py,sha256=
|
|
41
|
-
AutoGLM_GUI/api/workflows.py,sha256=
|
|
48
|
+
AutoGLM_GUI/api/version.py,sha256=DYiSNNykJsxOXO1zvf3w5AcAtQJTs2c-qtA1HRVihx0,6085
|
|
49
|
+
AutoGLM_GUI/api/workflows.py,sha256=waYwlm2HxwkcfZwp7Bm2Z2l_bms6UmOy2xJEU9B_t0s,2431
|
|
50
|
+
AutoGLM_GUI/devices/__init__.py,sha256=3RHDxS3feJ1jGdWbDKeOHSFUogmexcEr9lpcXWhlnjg,1471
|
|
51
|
+
AutoGLM_GUI/devices/adb_device.py,sha256=9xOMQupSdtnr-wxJRcWhzfjisrwUNCrjxoi8LoMuweM,6406
|
|
52
|
+
AutoGLM_GUI/devices/mock_device.py,sha256=Fnf9q-tjdqUZ-jKRf2cGbguAWAQhWr3qwVcFC4E4FCo,5700
|
|
53
|
+
AutoGLM_GUI/devices/remote_device.py,sha256=x5MDsHwYj5YHR9KBPfjntJA8W8jpKoJwZ4vxslZFYUE,5566
|
|
42
54
|
AutoGLM_GUI/dual_model/__init__.py,sha256=EQSMFAZ4NvZZywfnEJtDT9JrBJ4KuKWtGUHX4KcJIyY,1179
|
|
43
|
-
AutoGLM_GUI/dual_model/decision_model.py,sha256=
|
|
55
|
+
AutoGLM_GUI/dual_model/decision_model.py,sha256=4UPTFikplV1GDnKEJNxNTMEXfgB2wjnstYL-yGXaI2g,21925
|
|
44
56
|
AutoGLM_GUI/dual_model/dual_agent.py,sha256=HIw6Z5Ae9UH5-JEk9IPI2ry4uodvN-qdUQSIYrU0ecc,31574
|
|
45
|
-
AutoGLM_GUI/dual_model/protocols.py,sha256=
|
|
57
|
+
AutoGLM_GUI/dual_model/protocols.py,sha256=CZEqXUgsCoBeq7u1Ne43R031BjojGHvsZgvZqVn7Dh0,10534
|
|
46
58
|
AutoGLM_GUI/dual_model/vision_model.py,sha256=Vaj-BVWVZpedUbAVr-dl-eXUQ2IHaQpo0P1AIBuTvdg,14440
|
|
59
|
+
AutoGLM_GUI/mai_ui_adapter/agent_wrapper.py,sha256=6VZqsPlRHthjf0Q5tJzH7RqNc-zdrRryPnKPCyyJVkY,9322
|
|
47
60
|
AutoGLM_GUI/static/favicon.ico,sha256=uB4wrcENiFaF-K4V-FzNp51XLW8GC4-ujpBDHgISfGM,781
|
|
48
|
-
AutoGLM_GUI/static/index.html,sha256=
|
|
61
|
+
AutoGLM_GUI/static/index.html,sha256=8GRBiZjc-NI6PxboyyZ8QmZrGtGIrb2Y41tbWR3w8TE,761
|
|
49
62
|
AutoGLM_GUI/static/logo-192.png,sha256=FOXgZxFrN0ZleO0VjlCnvD5cDkd1okJPkwPDZqsflNs,35243
|
|
50
63
|
AutoGLM_GUI/static/logo-512.png,sha256=HlwSg09dQ3_Jtb09Ght4l2VK3YNLZlP_941LCdpDkWk,251598
|
|
51
|
-
AutoGLM_GUI/static/assets/about-
|
|
52
|
-
AutoGLM_GUI/static/assets/chat-
|
|
53
|
-
AutoGLM_GUI/static/assets/dialog-
|
|
54
|
-
AutoGLM_GUI/static/assets/index-
|
|
55
|
-
AutoGLM_GUI/static/assets/index-
|
|
56
|
-
AutoGLM_GUI/static/assets/index-
|
|
64
|
+
AutoGLM_GUI/static/assets/about-_XNhzQZX.js,sha256=SmhdB_v2cKcfR7bxET7KdyIAIR7-zR2aAAPrQl-OZgo,155
|
|
65
|
+
AutoGLM_GUI/static/assets/chat-DwJpiAWf.js,sha256=YWM2KdefYkk3dvykyrhN1_kOt5p9aBPdDh2tL9Txs20,321638
|
|
66
|
+
AutoGLM_GUI/static/assets/dialog-B3uW4T8V.js,sha256=ZVyV1aFhZSgX4eNo7QXs1EgPY7zxjnzIY1jLCH491A4,27378
|
|
67
|
+
AutoGLM_GUI/static/assets/index-Cpv2gSF1.css,sha256=k7xMpqu3sXEnofUa3E6k2dI76d3lRRlBZbCBZml3Xos,80508
|
|
68
|
+
AutoGLM_GUI/static/assets/index-Cy8TmmHV.js,sha256=BOHPeP6BPgHKbLar3Q357uWM_mkYSpHXpZrOsGkXijg,229
|
|
69
|
+
AutoGLM_GUI/static/assets/index-UYYauTly.js,sha256=y0cmKh3RwdWH85mKmevbxyr9czFvIYGQLpdODbfOgwY,389521
|
|
57
70
|
AutoGLM_GUI/static/assets/logo-Cyfm06Ym.png,sha256=6GRUFH2KNmB4ZmnrmJ1wxpoIYEmOW-__XlmKImyAMKM,4955675
|
|
58
71
|
AutoGLM_GUI/static/assets/worker-D6BRitjy.js,sha256=RL1NIRIks9dXdDhXOHK1cCg-OELT0uv9a6u_UEHfQ0Q,173494
|
|
59
|
-
AutoGLM_GUI/static/assets/workflows-
|
|
72
|
+
AutoGLM_GUI/static/assets/workflows-Du_de-dt.js,sha256=f9FeE4WAt69qNniqvi5i71iU-PbkVxzpoCrTwNYxrys,3459
|
|
60
73
|
phone_agent/__init__.py,sha256=7sCmGiY-ePdb6L08MGG6DkOiu8goop6wq-v2SiM62tE,360
|
|
61
74
|
phone_agent/agent.py,sha256=1SgHpv70_XbujG1ElYRZbvRO5-d4l7gBgiFRBz_FIH8,8157
|
|
62
75
|
phone_agent/agent_ios.py,sha256=R7EBsoHVghEUBtI5TB7M0_btpFcb4NHquMNxktrqrJE,9338
|
|
@@ -74,9 +87,9 @@ phone_agent/config/apps.py,sha256=D9HcsGzqwJL3g1ZRS4_Iq4WjviijDDEtkBJlV4-TSjE,87
|
|
|
74
87
|
phone_agent/config/apps_harmonyos.py,sha256=z2QN6O7NPe87ta4EAPs6s4PAC74SPPXlXXz6fTkAXhY,10606
|
|
75
88
|
phone_agent/config/apps_ios.py,sha256=CrOEDnPyG7T2qF_lS3SDlXjhbJPwDKI61_yOrggernc,11481
|
|
76
89
|
phone_agent/config/i18n.py,sha256=-x8yD5ywyK7xwjoI-pOYqPlSeId_W9KkVjmKayr36m0,2501
|
|
77
|
-
phone_agent/config/prompts.py,sha256=
|
|
90
|
+
phone_agent/config/prompts.py,sha256=0XKS_LrXthPB_bAXUT3ezsyr7UlwJNR2i4FLdEuticQ,8444
|
|
78
91
|
phone_agent/config/prompts_en.py,sha256=t8C9YLailtg8kVlFtYvq3t9EdtMGE8HastTfDh5BAUM,2630
|
|
79
|
-
phone_agent/config/prompts_zh.py,sha256=
|
|
92
|
+
phone_agent/config/prompts_zh.py,sha256=oOd5wJz-_P9ZF3F8hIPPrwjXdgv0sIgH7aop94eOTKM,8603
|
|
80
93
|
phone_agent/config/timing.py,sha256=bT-5HKGovzY_95wxRGIhmHyrIIPqhWivsXg-0LWc2pM,5793
|
|
81
94
|
phone_agent/hdc/__init__.py,sha256=6Olk6ujXQovtzmRLXk5MIqbwffxleSQnoHYvCO4G1Ww,996
|
|
82
95
|
phone_agent/hdc/connection.py,sha256=TweQ417wU2M35mgddK_Xt92zn5tZ0K7vtsaQjLn_e1o,11326
|
|
@@ -90,9 +103,15 @@ phone_agent/xctest/connection.py,sha256=m2lT9aNZgknDzItPoA7KOiFaDVOPqx4Imdhl6GcH
|
|
|
90
103
|
phone_agent/xctest/device.py,sha256=sOAPMoliMIabcrtsmzuGDKnZXtitqlc0lo8RSjQta7A,13655
|
|
91
104
|
phone_agent/xctest/input.py,sha256=aMp1YCRGBtGsRMKhA9rrjxuLkri0_k3n6hisi0EBJ2o,8164
|
|
92
105
|
phone_agent/xctest/screenshot.py,sha256=H6dsQGgf38h8dvuSeigiR2Qr8NucPanIgTK8kjlV9hA,6027
|
|
106
|
+
mai_agent/base.py,sha256=hYjGQXe_qguYkGq2qVWVO_xzsLzNqayA-dox_usCCM0,4546
|
|
107
|
+
mai_agent/mai_grounding_agent.py,sha256=d1X6giinaFVnTtKwh7oFktGZCkDjUySLb22toItykxM,8664
|
|
108
|
+
mai_agent/mai_naivigation_agent.py,sha256=7oA_mjxHfUEYEz2-oLdCEIImNQvAK-V4ADIMCqPPM2s,18264
|
|
109
|
+
mai_agent/prompt.py,sha256=Zgnj5JmVhCGjgM0sB-q19q0G76OCcNdffLypmwxRdl8,7111
|
|
110
|
+
mai_agent/unified_memory.py,sha256=AqEux-0I2WUIQOaY_yCRi-MDuU1BuY6dEWgClQETnEk,2194
|
|
111
|
+
mai_agent/utils.py,sha256=oJ50FEOM13-NwPHY4ttQ0tH49GS-w2TEy1_1FMCaxLg,2304
|
|
93
112
|
scrcpy-server-v3.3.3,sha256=fnAyO6fyWWSd1KzOl6xP77roECssbZHi575hP9U1S-A,90164
|
|
94
|
-
autoglm_gui-1.
|
|
95
|
-
autoglm_gui-1.
|
|
96
|
-
autoglm_gui-1.
|
|
97
|
-
autoglm_gui-1.
|
|
98
|
-
autoglm_gui-1.
|
|
113
|
+
autoglm_gui-1.4.1.dist-info/METADATA,sha256=OCTjbmz6oXyvTATdzv7nuSF87wxvZnD3WHUDJhDKkK0,20387
|
|
114
|
+
autoglm_gui-1.4.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
115
|
+
autoglm_gui-1.4.1.dist-info/entry_points.txt,sha256=sz4rBO_kgrYmOiT0QnhCCv0b9QqBdWyCjugJgY8AEOI,58
|
|
116
|
+
autoglm_gui-1.4.1.dist-info/licenses/LICENSE,sha256=0IkSHDewdtmXnmYzTNq4U47EJYjTuhjQNpT0bZKuqWc,11342
|
|
117
|
+
autoglm_gui-1.4.1.dist-info/RECORD,,
|