hhhhhalf commited on
Commit
2087b8a
·
verified ·
1 Parent(s): 0ec9482

Add model card

Browse files
Files changed (1) hide show
  1. README.md +182 -0
README.md ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: mlx
3
+ pipeline_tag: image-text-to-text
4
+ license: apache-2.0
5
+ language:
6
+ - en
7
+ - zh
8
+ tags:
9
+ - vla
10
+ - cua
11
+ - computer-use
12
+ - qwen3-vl
13
+ - mlx
14
+ - 8bit
15
+ - quantized
16
+ base_model: Qwen/Qwen3-VL-4B
17
+ ---
18
+
19
+ # Mano-CUA-4B-Thinking-1.1-MLX-8bit
20
+
21
+ **Mano-CUA** is the Computer Use Agent model under the [Mano](https://github.com/Mininglamp-AI/Mano-P) open-source model series. It is a GUI-VLA (Visual Language Agent) model designed specifically for edge devices, capable of autonomously completing complex desktop GUI operations through visual understanding.
22
+
23
+ This is the **MLX 8-bit quantized** version, optimized for Apple Silicon (Mac mini / MacBook). For the full-precision fp16 version, see [Mano-CUA-4B-Thinking-1.1](https://huggingface.co/Mininglamp-2718/Mano-CUA-4B-Thinking-1.1).
24
+
25
+ ## Main Capabilities
26
+
27
+ - **Complex GUI Automation**: Autonomously complete complex interface operations containing hundreds of interactive elements
28
+ - **Cross-System Data Integration**: Extract and integrate multi-source data through pure visual interaction without API interfaces
29
+ - **Long-Task Planning Execution**: Support enterprise-level business process automation of dozens to hundreds of steps
30
+ - **Intelligent Report Generation**: Automatically generate structured documents such as data analysis reports and work summaries
31
+
32
+
33
+ ## Technical Background
34
+
35
+ Mano-CUA builds upon the complete technical framework of the Mano project (see [Mano Technical Report](https://arxiv.org/abs/2509.17336)), employing the Mano-Action bidirectional self-reinforcement learning method, three-stage progressive training (SFT → Offline Reinforcement Learning → Online Reinforcement Learning), "think-act-verify" loop reasoning mechanism, and a closed-loop data circulation system to achieve high-precision GUI understanding and operation capabilities. The edge version is optimized through mixed-precision quantization, visual token pruning, and edge inference adaptation, enabling large-scale parameter models to run efficiently on edge devices like Mac mini/MacBook/computing sticks.
36
+
37
+
38
+ ## Quick Start
39
+
40
+ ### Requirements
41
+
42
+ - macOS with Apple Silicon (M1+)
43
+ - Python >= 3.12
44
+
45
+ ### Installation
46
+
47
+ **With Cider (recommended, includes W8A8 acceleration on M5+):**
48
+
49
+ ```bash
50
+ pip install mlx-vlm
51
+ pip install git+https://github.com/Mininglamp-AI/cider.git
52
+ ```
53
+
54
+ **Without Cider:**
55
+
56
+ ```bash
57
+ pip install mlx-vlm
58
+ ```
59
+
60
+ ### Single-Step Demo
61
+
62
+ ```python
63
+ import mlx_vlm as pm
64
+ from vlm_service import custom_generate
65
+ from PIL import Image
66
+
67
+ # 1. Load model
68
+ model, processor = pm.load("Mininglamp-2718/Mano-CUA-4B-Thinking-1.1-MLX-8bit")
69
+
70
+ # 2. Load a screenshot
71
+ img = Image.open("screenshot.png")
72
+ ratio = 1280 / img.width
73
+ img = img.resize((1280, int(img.height * ratio)), Image.LANCZOS)
74
+
75
+ # 3. Build prompt
76
+ task = "Click the search bar and type hello"
77
+
78
+ prompt_text = f"""You are a GUI agent. You are given a task and your action history, with screenshots. You need to perform the next action to complete the task.
79
+
80
+ ## Output Format
81
+ <action>action</action>
82
+
83
+ ## Action Space
84
+ open_app(app_name='') # Open an application by name.
85
+ open_url(url='') # Open a URL in the browser.
86
+ click(start_box='<|box_start|>(x1,y1)<|box_end|>')
87
+ type(content='') # type the content.
88
+ hotkey(key='') # Trigger a keyboard shortcut.
89
+ scroll(start_box='<|box_start|>(x1,y1)<|box_end|>', direction='down or up or right or left', amount='scroll_amount')
90
+ drag(start_box='<|box_start|>(x1,y1)<|box_end|>', end_box='<|box_start|>(x3,y3)<|box_end|>')
91
+ wait(duration='') # Sleep for specified duration (in seconds).
92
+ finish() # The task is completed.
93
+ stop(reason='') # If the item can not found in the image, give the reason
94
+
95
+ ## User Instruction
96
+ {task}"""
97
+
98
+ messages = [
99
+ {"role": "system", "content": "You are a helpful assistant."},
100
+ {"role": "user", "content": prompt_text},
101
+ ]
102
+ prompt = processor.tokenizer.apply_chat_template(
103
+ messages, tokenize=False, add_generation_prompt=True
104
+ )
105
+ prompt = prompt.replace("<image>", "<|vision_start|><|image_pad|><|vision_end|>")
106
+
107
+ # 4. Run inference
108
+ result = custom_generate(
109
+ model, processor, prompt,
110
+ [img],
111
+ max_tokens=512,
112
+ temperature=0.0,
113
+ prefill_step_size=2048,
114
+ )
115
+
116
+ print(f"Tokens: {result.generation_tokens}, Speed: {result.generation_tps:.1f} tok/s")
117
+ print(result.text)
118
+ ```
119
+
120
+ ### Output Format
121
+
122
+ The model outputs structured XML:
123
+
124
+ ```xml
125
+ <think>The search bar is at the top of the page...</think>
126
+ <action_desp>Click the search bar to focus it</action_desp>
127
+ <action>click(start_box='<|box_start|>(500,38)<|box_end|>')</action>
128
+ ```
129
+
130
+ Coordinates are normalized to `[0, 1000]` range. To convert to pixel coordinates:
131
+
132
+ ```python
133
+ pixel_x = int(x / 1000 * screen_width)
134
+ pixel_y = int(y / 1000 * screen_height)
135
+ ```
136
+
137
+ ### W8A8 Acceleration (M5+ only)
138
+
139
+ On Apple M5 or later, enable INT8 acceleration for ~15-19% faster prefill:
140
+
141
+ ```python
142
+ from cider import convert_model, is_available
143
+
144
+ if is_available():
145
+ convert_model(model.language_model)
146
+ ```
147
+
148
+
149
+ ## Full Action Space
150
+
151
+ | Action | Syntax | Description |
152
+ | ------------ | ------------------------------------------------------------ | -------------------------- |
153
+ | open_app | `open_app(app_name='')` | Open an application |
154
+ | open_url | `open_url(url='')` | Open a URL |
155
+ | click | `click(start_box='<\|box_start\|>(x,y)<\|box_end\|>')` | Left click |
156
+ | doubleclick | `doubleclick(start_box='<\|box_start\|>(x,y)<\|box_end\|>')` | Double click |
157
+ | triple_click | `triple_click(start_box='<\|box_start\|>(x,y)<\|box_end\|>')` | Triple click (select line) |
158
+ | right_single | `right_single(start_box='<\|box_start\|>(x,y)<\|box_end\|>')` | Right click |
159
+ | hover | `hover(start_box='<\|box_start\|>(x,y)<\|box_end\|>')` | Mouse hover |
160
+ | type | `type(content='text')` | Type text |
161
+ | hotkey | `hotkey(key='cmd+c')` | Keyboard shortcut |
162
+ | hotkey_click | `hotkey_click(start_box='<\|box_start\|>(x,y)<\|box_end\|>', key='shift')` | Modifier + click |
163
+ | scroll | `scroll(start_box='<\|box_start\|>(x,y)<\|box_end\|>', direction='down', amount='3')` | Scroll |
164
+ | drag | `drag(start_box='<\|box_start\|>(x1,y1)<\|box_end\|>', end_box='<\|box_start\|>(x2,y2)<\|box_end\|>')` | Drag and drop |
165
+ | wait | `wait(duration='2')` | Wait (seconds) |
166
+ | finish | `finish()` | Task completed |
167
+ | stop | `stop(reason='...')` | Task infeasible |
168
+ | call_user | `call_user()` | Request human help |
169
+
170
+
171
+ ## Other Versions
172
+
173
+ | Version | Repo | Description |
174
+ |---------|------|-------------|
175
+ | fp16 | [Mano-CUA-4B-Thinking-1.1](https://huggingface.co/Mininglamp-2718/Mano-CUA-4B-Thinking-1.1) | Full precision, for archival / re-quantization / GPU inference |
176
+ | MLX-8bit (this) | [Mano-CUA-4B-Thinking-1.1-MLX-8bit](https://huggingface.co/Mininglamp-2718/Mano-CUA-4B-Thinking-1.1-MLX-8bit) | MLX 8-bit quantized, recommended for Apple Silicon local inference |
177
+
178
+
179
+ ## Contact
180
+
181
+ - Website: [https://github.com/Mininglamp-AI/Mano-P](https://github.com/Mininglamp-AI/Mano-P)
182
+ - Email: model@mininglamp.com