autoglm-gui 1.3.1__py3-none-any.whl → 1.4.0__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.
@@ -1 +1 @@
1
- import{a9 as o,r as s,j as t}from"./index-CxJQuE4y.js";function n(){const e=o();return s.useEffect(()=>{e({to:"/chat"})},[e]),t.jsx("div",{className:"p-2",children:t.jsx("h3",{children:"Welcome Home!"})})}export{n as component};
1
+ import{a3 as o,r as s,j as t}from"./index-DHF1NZh0.js";function n(){const e=o();return s.useEffect(()=>{e({to:"/chat"})},[e]),t.jsx("div",{className:"p-2",children:t.jsx("h3",{children:"Welcome Home!"})})}export{n as component};
@@ -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-CxJQuE4y.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-CxJlnjzH.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};
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-DHF1NZh0.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-BfdcBs1x.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};
@@ -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-CxJQuE4y.js"></script>
15
- <link rel="stylesheet" crossorigin href="/assets/index-Z0uYCPOO.css">
14
+ <script type="module" crossorigin src="/assets/index-DHF1NZh0.js"></script>
15
+ <link rel="stylesheet" crossorigin href="/assets/index-5hCCwHA7.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="app"></div>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autoglm-gui
3
- Version: 1.3.1
3
+ Version: 1.4.0
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
@@ -24,6 +24,7 @@ Requires-Dist: fastapi>=0.124.0
24
24
  Requires-Dist: fastmcp>=2.0.0
25
25
  Requires-Dist: httpx[socks]>=0.28.1
26
26
  Requires-Dist: loguru>=0.7.3
27
+ Requires-Dist: openai-agents>=0.6.4
27
28
  Requires-Dist: openai>=2.9.0
28
29
  Requires-Dist: pillow>=11.3.0
29
30
  Requires-Dist: prometheus-client>=0.21.0
@@ -75,9 +76,9 @@ AutoGLM 手机助手的现代化 Web 图形界面 - 让 AI 自动化操作 Andro
75
76
 
76
77
  | 操作系统 | 下载链接 | 说明 |
77
78
  |---------|---------|------|
78
- | 🪟 **Windows** (x64) | [📦 下载便携版 EXE](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.3.1/AutoGLM.GUI.1.3.1.exe) | 适用于 Windows 10/11,免安装 |
79
- | 🍎 **macOS** (Apple Silicon) | [📦 下载 DMG](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.3.1/AutoGLM.GUI-1.3.1-arm64.dmg) | 适用于 M 芯片 Mac |
80
- | 🐧 **Linux** (x64) | [📦 下载 AppImage](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.3.1/AutoGLM.GUI-1.3.1.AppImage) \| [deb](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.3.1/autoglm-gui_1.3.1_amd64.deb) \| [tar.gz](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.3.1/autoglm-gui-1.3.1.tar.gz) | 通用格式,支持主流发行版 |
79
+ | 🪟 **Windows** (x64) | [📦 下载便携版 EXE](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.0/AutoGLM.GUI.1.4.0.exe) | 适用于 Windows 10/11,免安装 |
80
+ | 🍎 **macOS** (Apple Silicon) | [📦 下载 DMG](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.0/AutoGLM.GUI-1.4.0-arm64.dmg) | 适用于 M 芯片 Mac |
81
+ | 🐧 **Linux** (x64) | [📦 下载 AppImage](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.0/AutoGLM.GUI-1.4.0.AppImage) \| [deb](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.0/autoglm-gui_1.4.0_amd64.deb) \| [tar.gz](https://github.com/suyiiyii/AutoGLM-GUI/releases/download/v1.4.0/autoglm-gui-1.4.0.tar.gz) | 通用格式,支持主流发行版 |
81
82
 
82
83
  </div>
83
84
 
@@ -105,27 +106,27 @@ uvx autoglm-gui
105
106
 
106
107
  ## 📸 界面预览
107
108
 
109
+ 快速跳转: [普通模式](#mode-classic) · [双模型协作(增强)](#mode-dual) · [分层代理(增强)](#mode-layered)
110
+
108
111
  ### 双模型协作架构
109
112
 
110
- **决策大模型(GLM-4.7)+ 视觉小模型(AutoGLM-Phone)** 双模型协作系统,智能规划与精准执行分离,更好地处理复杂任务
113
+ **决策大模型(如 GLM-4.7)+ 视觉小模型(AutoGLM-Phone)**:大模型负责规划与纠错,小模型负责观察与执行,适合更复杂、更长流程的任务。
111
114
 
112
- **架构特点:**
113
- - 🧠 **决策大模型**:负责任务分析、计划制定、复杂决策和内容生成
114
- - 👁️ **视觉小模型**:负责屏幕识别、定位元素和执行具体操作
115
- - 🔄 **智能协作**:大模型规划任务,小模型批量执行,异常时自动重新规划
116
- - ⚡ **三种模式**:
117
- - **DEEP**:深度思考模式,适合复杂任务,每步都详细分析
118
- - **FAST**:快速响应模式,适合简单任务,简洁高效
119
- - **TURBO**:极速模式,一次性生成操作序列,性能最优
115
+ - 🧠 **决策层**:任务理解 / 步骤规划 / 异常纠错
116
+ - 👁️ **执行层**:识别界面元素并点击/滑动/输入完成操作
117
+ - 🔄 **运行方式**:规划 → 执行 → 反馈;必要时自动重规划
120
118
 
121
- **核心优势:**
122
- - 📈 更强智能:大模型提供更深入的任务理解和规划能力
123
- - 🛡️ 异常恢复:自动检测屏幕卡死、操作失败等异常,智能重试和重新规划
124
- - 💰 成本优化:TURBO 模式大幅减少大模型调用次数,降低 API 成本
125
- - 📊 实时可见:流式展示思考过程,透明化决策逻辑
119
+ **模式选择(Thinking Mode)**:TURBO(更省更快,推荐常规流程)/ DEEP(更稳,适合复杂任务)/ FAST(更快,适合轻量任务)。
126
120
 
127
121
  <img width="879" height="849" alt="双模型协作界面" src="https://github.com/user-attachments/assets/15e5cf51-5a19-403d-9af3-46f77c2068f5" />
128
122
 
123
+ ### 分层代理
124
+
125
+ **分层代理(Layered Agent)** 是更“严格”的两层结构:**规划层**专注任务拆解与多轮推理,**执行层**专注观察与操作。规划层会通过工具调用(可在界面中看到每次调用与结果)来驱动执行层完成一个个原子子任务,便于边执行边调整策略,适合需要多轮交互/推理的高级任务。
126
+
127
+ <img width="939" height="851" alt="图片" src="https://github.com/user-attachments/assets/c054d998-726d-48ed-99e7-bb33581b3745" />
128
+
129
+
129
130
  ### 任务开始
130
131
  ![任务开始](https://github.com/user-attachments/assets/b8cb6fbc-ca5b-452c-bcf4-7d5863d4577a)
131
132
 
@@ -281,66 +282,68 @@ AutoGLM-GUI 支持同时控制多个 Android 设备:
281
282
  4. **对话** - 描述你想要做什么(例如:"去美团点一杯霸王茶姬的伯牙绝弦")
282
283
  5. **观察** - Agent 会逐步执行操作,每一步的思考过程和动作都会实时显示
283
284
 
284
- ### 🧠 双模型协作模式
285
-
286
- 双模型模式通过**决策大模型**和**视觉小模型**的协作,实现更强大的任务执行能力:
287
-
288
- #### 工作模式选择
289
-
290
- 在设备面板上,可以选择三种双模型工作模式��
291
-
292
- **1. 🚀 TURBO 模式(推荐,性能最优)**
293
- - **特点**:一次性生成完整操作序列,批量执行
294
- - **优势**:
295
- - 大模型调用次数最少,API 成本最低
296
- - 执行速度最快,适合可预测的常规任务
297
- - 自动异常检测和恢复,遇到问题自动重新规划
298
- - **适用场景**:订外卖、打车、应用内导航等流程明确的任务
299
- - **示例**:`"打开微信给张三发消息说我到了"`
300
-
301
- **2. 🎯 DEEP 模式(深度思考)**
302
- - **特点**:每步都详细分析,决策最智能
303
- - **优势**:
304
- - 处理复杂任务能力强
305
- - 每步都有完整的思考过程
306
- - 异常处理更全面
307
- - **适用场景**:需要智能决策的复杂任务
308
- - **示例**:`"在小红书上找5个关于健身的帖子并评论"`
309
-
310
- **3. ⚡ FAST 模式(快速响应)**
311
- - **特点**:简化提示词,快速决策
312
- - **优势**:
313
- - 响应速度快
314
- - 适合简单任务
315
- - **适用场景**:简单操作、明确指令
316
- - **示例**:`"打开美团"`
317
-
318
- #### 双模型配置
319
-
320
- **决策大模型配置**(需要较高智能的模型):
321
- - **推荐模型**:GLM-4.7、GPT-4、Claude 等
322
- - **智谱 BigModel**:
323
- - Base URL: `https://open.bigmodel.cn/api/paas/v4`
324
- - Model: `glm-4.7`
325
- - API Key: 你的智谱 API Key
326
-
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
333
-
334
-
335
- 假设一个任务需要 10 步操作:
336
-
337
- | 模式 | 大模型调用次数 | 说明 |
338
- |-----|--------------|------|
339
- | TURBO | 1-2 次 | 1次规划 + 异常时1次重新规划 |
340
- | DEEP | 10 次 | 每步都调用大模型决策 |
341
- | FAST | 10 次 | 每步都调用大模型(简化版) |
342
-
343
- **结论**:TURBO 模式可节省 **80-90%** 的大模型 API 成本
285
+ <a id="mode-classic"></a>
286
+ ### 🌿 普通模式(单模型 / Open AutoGLM)
287
+
288
+ 这是**开源 AutoGLM-Phone 的“原生形态”**:由一个视觉模型直接完成「理解任务 → 规划步骤 → 观察屏幕 → 执行动作」的完整闭环。
289
+
290
+ - **优点**:配置最简单,上手最快
291
+ - **适用场景**:目标明确、步骤较少的任务(例如打开应用、简单导航)
292
+
293
+ <a id="mode-dual"></a>
294
+ ### 🧠 双模型协作模式(增强)
295
+
296
+ 双模型模式通过**决策大模型(负责规划/纠错)** + **视觉小模型(负责观察/操作)**协作,提升复杂任务的稳定性与可控性。
297
+
298
+ #### 工作模式(Thinking Mode)
299
+
300
+ - **🚀 TURBO(推荐)**:大模型先生成“操作序列”,视觉模型批量执行;仅在异常时触发重规划(通常 1-2 次大模型调用)
301
+ - **🎯 DEEP**:每一步都调用大模型做决策与分析,最稳但成本/耗时更高
302
+ - **⚡ FAST**:同样逐步决策,但提示词更短、响应更快,适合轻量任务
303
+
304
+ #### 配置要点
305
+
306
+ - **决策大模型**:建议使用推理/规划能力较强的模型(如 GLM-4.7、GPT-4、Claude 等)
307
+ - **视觉小模型**:建议使用具备 GUI 观察与操作能力的模型(如 AutoGLM-Phone-9B / `autoglm-phone`)
308
+
309
+ <a id="mode-layered"></a>
310
+ ### 🧩 分层代理模式(Layered Agent,增强 / 实验性)
311
+
312
+ 分层代理模式是更“严格”的两层结构:**规划层**专注拆解与推理,**执行层**专注观察与操作,二者通过工具调用协作完成任务。
313
+
314
+ - **工作方式**:规划层(决策模型)会调用工具(如 `list_devices()` / `chat(device_id, message)`)去驱动执行层;你能在界面里看到每次工具调用与返回结果
315
+ - **执行粒度**:执行层每次只做一个“原子子任务”,并有步数上限(例如每次最多 5 步),便于规划层按反馈动态调整策略
316
+ - **适用场景**:需要多轮推理、需要“边看边问边改计划”的复杂任务(例如浏览/筛选/对比、多轮表单填写等)
317
+ - **重要限制**:执行层不负责“记笔记/保存中间信息/直接提取文本变量”;规划层需要信息时必须通过提问让执行层把屏幕内容“念出来”
318
+
319
+ ### 🎭 三种工作模式对比
320
+
321
+ AutoGLM-GUI 提供了三种不同的代理工作模式,适用于不同的使用场景:
322
+
323
+ #### 1️⃣ 经典模式(Classic Mode)
324
+ - **架构**:单一 `autoglm-phone` 视觉模型直接处理(即普通 Open AutoGLM 的体验)
325
+ - **适用场景**:简单、明确的任务
326
+ - **特点**:配置简单,适合快速上手
327
+
328
+ #### 2️⃣ 双模型协作(Dual Model)
329
+ - **架构**:决策大模型(GLM-4.7/GPT-4)+ 视觉小模型(autoglm-phone)
330
+ - **适用场景**:需要智能规划的中高复杂度任务
331
+ - **特点**:支持 TURBO/DEEP/FAST 三种思考模式,在成本、速度与稳定性之间做权衡
332
+
333
+ #### 3️⃣ 分层代理(Layered Agent)🆕 实验性功能
334
+ - **架构**:基于 Agent SDK 的分层任务执行系统
335
+ - **规划层**:决策模型作为高级智能中枢,负责任务拆解和多轮推理
336
+ - **执行层**:autoglm-phone 作为执行者,只负责观察和操作
337
+ - **适用场景**:需要多轮交互和复杂推理的高级任务
338
+ - **特点**:规划层通过工具调用驱动执行层,过程更透明、更便于调试与迭代策略
339
+
340
+ **选择建议**:
341
+ - 🚀 **常规任务(订外卖、打车)**:双模型 TURBO 模式
342
+ - 🎯 **复杂任务(浏览并评论帖子)**:双模型 DEEP 模式
343
+ - 🏗️ **需要多轮推理的任务**:分层代理模式
344
+
345
+ > 💬 **我们需要你的反馈!**
346
+ > 不同的任务场景适合不同的模式,我们正在持续优化这些模式的性能和易用性。如果你在使用过程中有任何建议、遇到问题或发现某个模式特别好用/不好用,欢迎通过 [GitHub Issues](https://github.com/suyiiyii/AutoGLM-GUI/issues) 或 [QQ 交流群](https://qm.qq.com/q/J5eAs9tn0W) 告诉我们。你的反馈将帮助我们改进产品!
344
347
 
345
348
  ### 手动控制模式
346
349
 
@@ -1,7 +1,7 @@
1
1
  AutoGLM_GUI/__init__.py,sha256=ic002QIj6sw9cyhh7e_60DFIb7omtPcF01-L6M4lllM,2176
2
2
  AutoGLM_GUI/__main__.py,sha256=ogFi2KO9kCn47ZvT5jqBzoBTnqG191TFKfEM9lcal1w,6390
3
3
  AutoGLM_GUI/config.py,sha256=SRBPcIKqR5HxrxiiwpOUAPxHvp-36igtFhDEptG_Zz4,619
4
- AutoGLM_GUI/config_manager.py,sha256=L-E8scI4QeIdVcdhjGxWfPwYOXBbFRRSTzPiR3d6E9g,22033
4
+ AutoGLM_GUI/config_manager.py,sha256=-y8ld-b9FVaFdsPQlw_1sxReM_Xs_IR6dZHCUbfW1J0,21143
5
5
  AutoGLM_GUI/device_manager.py,sha256=dAHP29a63H6GY43f715dOlJdwOz1eWa2XnPf2_SbIiY,26923
6
6
  AutoGLM_GUI/exceptions.py,sha256=dPKKuRPbsGMgUtPVZuxny8MNHswS78WzUepYtuZGZQc,3457
7
7
  AutoGLM_GUI/logger.py,sha256=wLzjbRqsHAsOtI9yB0bcUZFVzgGK6qM8330std6FjVw,2553
@@ -9,8 +9,8 @@ AutoGLM_GUI/metrics.py,sha256=l8KIGfiDlAccLOmk7nneacJMs3tlIdCFyXe3szodUE0,9442
9
9
  AutoGLM_GUI/phone_agent_manager.py,sha256=2ofFw9wdE1cs8SMo8OGbcs-J54ZGxDIOgVBYm-mT3oM,27532
10
10
  AutoGLM_GUI/phone_agent_patches.py,sha256=-RfpL9RHxOI2GyC2v8L49S0gXiK8l1cldEX3Ysrpl5c,4887
11
11
  AutoGLM_GUI/platform_utils.py,sha256=bYlQGAYYpU1ZqOUD-F-fIzpEA5z53dMFfaErsFhAvYk,2357
12
- AutoGLM_GUI/prompts.py,sha256=AoTEOIF_Ik3WtzluLIxE9sCjDnEa2bMJHmxf_q0Rpg8,4467
13
- AutoGLM_GUI/schemas.py,sha256=2ah_hfnripVTmpvSdDEeEcnDLS0pEqyY6iPeNGQQ31E,16417
12
+ AutoGLM_GUI/prompts.py,sha256=lC5UktW0KRpWKij6T0GG1OrNKV9gAfM6dUcp_tjX7mo,4814
13
+ AutoGLM_GUI/schemas.py,sha256=n_9bCYh4U5aZXYrsgNlv85ca06wCbixxE-U6Eubq3u4,15943
14
14
  AutoGLM_GUI/scrcpy_protocol.py,sha256=h6AtAGq3zMM30FWM7EYiYKJz7BDikpNCOjcKtFcRx3s,997
15
15
  AutoGLM_GUI/scrcpy_stream.py,sha256=-tGyDNaML1TnZLzTNiVUgxMTv_7TQS0CKZ35G2RuPfg,16595
16
16
  AutoGLM_GUI/server.py,sha256=GGGz7llG5rflIpO61nil8Zde12PLkv6OIzghuxwSkoI,249
@@ -29,11 +29,12 @@ AutoGLM_GUI/adb_plus/screenshot.py,sha256=pr7BpmUcGZO9rthpDeMRn4D1oAGX9aEEVL3ZnT
29
29
  AutoGLM_GUI/adb_plus/serial.py,sha256=lDbBXTIoOJ5lbFj50K5X7PZnfpKt1vRpFiWVjolfEhQ,3142
30
30
  AutoGLM_GUI/adb_plus/touch.py,sha256=7cyMon9nOd6zQvZdHK7BHWoRLLWkdK-qWfTuSFfFzJA,2301
31
31
  AutoGLM_GUI/adb_plus/version.py,sha256=u5u1N40izJceeORN9kFhyz0wq_hZtlwBXaiytfA3px8,2428
32
- AutoGLM_GUI/api/__init__.py,sha256=cfIrodErBhJja0DRjpsifVToZyAzuP9TULfbj4ZZsyk,3859
33
- AutoGLM_GUI/api/agents.py,sha256=xt1LJKSvwmyU5moqQVKx5hiYGHNhn_eCu3nlqaQ_5l8,19081
32
+ AutoGLM_GUI/api/__init__.py,sha256=YuWTvgPs9SSkH_YKGtdx2wbfcfvJtUU0sbTU-OalGMw,3923
33
+ AutoGLM_GUI/api/agents.py,sha256=JnwaBXTWj8j0P__GOLcIMJsCQ2MHXROSAg1oJUTLY34,18978
34
34
  AutoGLM_GUI/api/control.py,sha256=G-7hfdqTl5fq-UXOwE2CI_HMbfmRH1Vd589t2FTNZyY,3155
35
35
  AutoGLM_GUI/api/devices.py,sha256=AzHUwFGjaj5xaHMmDylyNy0CUGZQHwlCdE3t41azqQk,11186
36
- AutoGLM_GUI/api/dual_model.py,sha256=50OFx8X-phl7XfArDLHsL4t_cfosp5tsN5JRrUjXOiU,10336
36
+ AutoGLM_GUI/api/dual_model.py,sha256=4MERvARZX2XX46vcoMnpFcs2UKRvpZX-YLm038jtg8U,10370
37
+ AutoGLM_GUI/api/layered_agent.py,sha256=qAMkdul_XnVauBlVqq8k6tAmy3VkmgLweDH1WQODdhw,23347
37
38
  AutoGLM_GUI/api/mcp.py,sha256=5zuG81kTGcU3niD6mmsQOjxVNN15ilsmxYpEHxyTv7M,4683
38
39
  AutoGLM_GUI/api/media.py,sha256=Ioncwd68CNkYvqmeTJJ3P5I1rjWfw6PM4WPz5Ixx8vI,1631
39
40
  AutoGLM_GUI/api/metrics.py,sha256=2h5MnUiMTRAshD6nvcarLVoSlOjtlyVAGg-LRXq03vQ,941
@@ -42,21 +43,22 @@ AutoGLM_GUI/api/workflows.py,sha256=dis4k8b-xTYL99qlSYev-Qo5a7z9XdwA1xyC8fRJGLE,
42
43
  AutoGLM_GUI/dual_model/__init__.py,sha256=EQSMFAZ4NvZZywfnEJtDT9JrBJ4KuKWtGUHX4KcJIyY,1179
43
44
  AutoGLM_GUI/dual_model/decision_model.py,sha256=05_x2pTFdvlPU6s5RRyU44cvJFi58qtyrk6Bz-zIBto,21833
44
45
  AutoGLM_GUI/dual_model/dual_agent.py,sha256=HIw6Z5Ae9UH5-JEk9IPI2ry4uodvN-qdUQSIYrU0ecc,31574
45
- AutoGLM_GUI/dual_model/protocols.py,sha256=8FaqjYWoreM0730nmwfO3M8AQkQvAhvAn0mNP_5DvY0,10604
46
+ AutoGLM_GUI/dual_model/protocols.py,sha256=CZEqXUgsCoBeq7u1Ne43R031BjojGHvsZgvZqVn7Dh0,10534
46
47
  AutoGLM_GUI/dual_model/vision_model.py,sha256=Vaj-BVWVZpedUbAVr-dl-eXUQ2IHaQpo0P1AIBuTvdg,14440
48
+ AutoGLM_GUI/mai_ui_adapter/agent_wrapper.py,sha256=82rnTo0iYcv60nHdREoPc4-xn79I0HCIfHcNO3FWHjw,9254
47
49
  AutoGLM_GUI/static/favicon.ico,sha256=uB4wrcENiFaF-K4V-FzNp51XLW8GC4-ujpBDHgISfGM,781
48
- AutoGLM_GUI/static/index.html,sha256=OihSxUZbVuog-uKRlKJm7z-9ciIUzZZmD-LTOO-ylEU,761
50
+ AutoGLM_GUI/static/index.html,sha256=Up24pO96Iiv1riuUBhYTgVL_zk49em5DdqH3FW0hPvw,761
49
51
  AutoGLM_GUI/static/logo-192.png,sha256=FOXgZxFrN0ZleO0VjlCnvD5cDkd1okJPkwPDZqsflNs,35243
50
52
  AutoGLM_GUI/static/logo-512.png,sha256=HlwSg09dQ3_Jtb09Ght4l2VK3YNLZlP_941LCdpDkWk,251598
51
- AutoGLM_GUI/static/assets/about-Cj6QXqMf.js,sha256=QjkdIH7LRF252usF5VadH_7-Md7UIL_tV5tkiZsPk9g,155
52
- AutoGLM_GUI/static/assets/chat-BJeomZgh.js,sha256=oggeC1AB8J_9IGzqIsmnBYJViHItGiKxcKEWWE5xL7E,292263
53
- AutoGLM_GUI/static/assets/dialog-CxJlnjzH.js,sha256=LZyWNRMOb5-hES970WBDI84y1nLIiAeQMC9MJ2MWusE,27378
54
- AutoGLM_GUI/static/assets/index-C_B-Arvf.js,sha256=XOtu1RQ4Z8AkE1qgs0SsyHKUJFUPbUZUEZ4cxXzAnPg,229
55
- AutoGLM_GUI/static/assets/index-CxJQuE4y.js,sha256=g1vt8BZfyS7_g_MmpKnC_QpxISwX-wZanr8OFi0LBGI,385475
56
- AutoGLM_GUI/static/assets/index-Z0uYCPOO.css,sha256=VqlMaGxeOJCfsdpqbx26aK2y6mcrM6AbuKdlBFRCkT0,78175
53
+ AutoGLM_GUI/static/assets/about-DeclntHg.js,sha256=QecpNFR4smtHsdMcFTKuMtw_dqJodEnHPNNOk2WK--Q,155
54
+ AutoGLM_GUI/static/assets/chat-Iut2yhSw.js,sha256=YmIodM0eFchn_p43yBGS5h8Y9ArqGgC1hj1zNbFnE7E,316649
55
+ AutoGLM_GUI/static/assets/dialog-BfdcBs1x.js,sha256=ALMSKReQ0IPZVzIP4hLqo8Ikkd93Vnq8KklEcKRt7A4,27378
56
+ AutoGLM_GUI/static/assets/index-5hCCwHA7.css,sha256=lrUhICgckXE0lbz732Xm8oAw37J9U0fbzUsj3kKJ8O4,79591
57
+ AutoGLM_GUI/static/assets/index-DHF1NZh0.js,sha256=BBguL9SX_Kelo-GWPm7xhp5bxhr4q2HAxQ9JTRRDl8I,387094
58
+ AutoGLM_GUI/static/assets/index-zQ4KKDHt.js,sha256=0ke1LC-kHtUh4fwdtI9hoV9Q3D5Qaj_XnIGgDl7ooI0,229
57
59
  AutoGLM_GUI/static/assets/logo-Cyfm06Ym.png,sha256=6GRUFH2KNmB4ZmnrmJ1wxpoIYEmOW-__XlmKImyAMKM,4955675
58
60
  AutoGLM_GUI/static/assets/worker-D6BRitjy.js,sha256=RL1NIRIks9dXdDhXOHK1cCg-OELT0uv9a6u_UEHfQ0Q,173494
59
- AutoGLM_GUI/static/assets/workflows-BTiGCNI0.js,sha256=jfbJ5u-IRcPp6okVJjTcIOSauneXmtXTqFuHjl6TidE,3459
61
+ AutoGLM_GUI/static/assets/workflows-xiplap-r.js,sha256=2h9sp1HE0SoXjcEwdJPYXcHKua_DHgzHGRGXkJRdhO8,3459
60
62
  phone_agent/__init__.py,sha256=7sCmGiY-ePdb6L08MGG6DkOiu8goop6wq-v2SiM62tE,360
61
63
  phone_agent/agent.py,sha256=1SgHpv70_XbujG1ElYRZbvRO5-d4l7gBgiFRBz_FIH8,8157
62
64
  phone_agent/agent_ios.py,sha256=R7EBsoHVghEUBtI5TB7M0_btpFcb4NHquMNxktrqrJE,9338
@@ -74,9 +76,9 @@ phone_agent/config/apps.py,sha256=D9HcsGzqwJL3g1ZRS4_Iq4WjviijDDEtkBJlV4-TSjE,87
74
76
  phone_agent/config/apps_harmonyos.py,sha256=z2QN6O7NPe87ta4EAPs6s4PAC74SPPXlXXz6fTkAXhY,10606
75
77
  phone_agent/config/apps_ios.py,sha256=CrOEDnPyG7T2qF_lS3SDlXjhbJPwDKI61_yOrggernc,11481
76
78
  phone_agent/config/i18n.py,sha256=-x8yD5ywyK7xwjoI-pOYqPlSeId_W9KkVjmKayr36m0,2501
77
- phone_agent/config/prompts.py,sha256=547DMu849nKQKL_PO0TWMgvSaW7Qo_-DV8Hsx2fUWQ4,8091
79
+ phone_agent/config/prompts.py,sha256=0XKS_LrXthPB_bAXUT3ezsyr7UlwJNR2i4FLdEuticQ,8444
78
80
  phone_agent/config/prompts_en.py,sha256=t8C9YLailtg8kVlFtYvq3t9EdtMGE8HastTfDh5BAUM,2630
79
- phone_agent/config/prompts_zh.py,sha256=vSWo5_qlWwNHVYUxrePBiL2FmJFnQG0Jpb1NsVsVJos,8256
81
+ phone_agent/config/prompts_zh.py,sha256=oOd5wJz-_P9ZF3F8hIPPrwjXdgv0sIgH7aop94eOTKM,8603
80
82
  phone_agent/config/timing.py,sha256=bT-5HKGovzY_95wxRGIhmHyrIIPqhWivsXg-0LWc2pM,5793
81
83
  phone_agent/hdc/__init__.py,sha256=6Olk6ujXQovtzmRLXk5MIqbwffxleSQnoHYvCO4G1Ww,996
82
84
  phone_agent/hdc/connection.py,sha256=TweQ417wU2M35mgddK_Xt92zn5tZ0K7vtsaQjLn_e1o,11326
@@ -91,8 +93,8 @@ phone_agent/xctest/device.py,sha256=sOAPMoliMIabcrtsmzuGDKnZXtitqlc0lo8RSjQta7A,
91
93
  phone_agent/xctest/input.py,sha256=aMp1YCRGBtGsRMKhA9rrjxuLkri0_k3n6hisi0EBJ2o,8164
92
94
  phone_agent/xctest/screenshot.py,sha256=H6dsQGgf38h8dvuSeigiR2Qr8NucPanIgTK8kjlV9hA,6027
93
95
  scrcpy-server-v3.3.3,sha256=fnAyO6fyWWSd1KzOl6xP77roECssbZHi575hP9U1S-A,90164
94
- autoglm_gui-1.3.1.dist-info/METADATA,sha256=Lm0SPs0tzKHhGvPwpO7uNNhQ9WS6Ax6VCPU76InFyf0,16109
95
- autoglm_gui-1.3.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
96
- autoglm_gui-1.3.1.dist-info/entry_points.txt,sha256=sz4rBO_kgrYmOiT0QnhCCv0b9QqBdWyCjugJgY8AEOI,58
97
- autoglm_gui-1.3.1.dist-info/licenses/LICENSE,sha256=0IkSHDewdtmXnmYzTNq4U47EJYjTuhjQNpT0bZKuqWc,11342
98
- autoglm_gui-1.3.1.dist-info/RECORD,,
96
+ autoglm_gui-1.4.0.dist-info/METADATA,sha256=jbe8WQ1AAvaRtywV6FuuJi7NSnag8_5amjJmdEs1Zaw,18248
97
+ autoglm_gui-1.4.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
98
+ autoglm_gui-1.4.0.dist-info/entry_points.txt,sha256=sz4rBO_kgrYmOiT0QnhCCv0b9QqBdWyCjugJgY8AEOI,58
99
+ autoglm_gui-1.4.0.dist-info/licenses/LICENSE,sha256=0IkSHDewdtmXnmYzTNq4U47EJYjTuhjQNpT0bZKuqWc,11342
100
+ autoglm_gui-1.4.0.dist-info/RECORD,,
@@ -3,7 +3,12 @@
3
3
  from datetime import datetime
4
4
 
5
5
  today = datetime.today()
6
- formatted_date = today.strftime("%Y年%m月%d日")
6
+ # NOTE: Do NOT use strftime with Chinese characters in format string!
7
+ # On some Windows systems with non-UTF-8 locale (e.g., GBK/CP936),
8
+ # strftime("%Y年%m月%d日") raises UnicodeEncodeError because the C library's
9
+ # strftime uses locale encoding, not Python's UTF-8 mode.
10
+ # Use f-string instead to avoid this issue completely.
11
+ formatted_date = f"{today.year}年{today.month:02d}月{today.day:02d}日"
7
12
 
8
13
  SYSTEM_PROMPT = (
9
14
  "今天的日期是: "
@@ -5,7 +5,12 @@ from datetime import datetime
5
5
  today = datetime.today()
6
6
  weekday_names = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
7
7
  weekday = weekday_names[today.weekday()]
8
- formatted_date = today.strftime("%Y年%m月%d日") + " " + weekday
8
+ # NOTE: Do NOT use strftime with Chinese characters in format string!
9
+ # On some Windows systems with non-UTF-8 locale (e.g., GBK/CP936),
10
+ # strftime("%Y年%m月%d日") raises UnicodeEncodeError because the C library's
11
+ # strftime uses locale encoding, not Python's UTF-8 mode.
12
+ # Use f-string instead to avoid this issue completely.
13
+ formatted_date = f"{today.year}年{today.month:02d}月{today.day:02d}日 {weekday}"
9
14
 
10
15
  SYSTEM_PROMPT = (
11
16
  "今天的日期是: "