GUI Agent 企业内网落地:看懂屏幕前先锁好三道权限
GUI Agent ä¼ä¸å ç½è½å°ï¼çæå±å¹åå é好ä¸éæé
ç¨æ·191729127083 2026-08-21 0 é 读10åéæè¦ï¼æ¬æé¢åä¼ä¸ IT ä¸å®å ¨æ¶æå¸ï¼æè§£ GUI æºè½ä½ï¼è½çæå±å¹ã模æç¹å»çè®¡ç®æºä½¿ç¨å Agentï¼æ¥å ¥å ç½åçæéæ²»çãåºäº 2026-08-20 é¿é Qwen-UI-Agent 弿ºåå¸ï¼éå±ç»åº"éå®è¿è¡ç¯å¢ / æå°æéææ / ææå¨ä½å®¡æ¹"ä¸éé¸ï¼å¹¶é 3 段å¯è¿è¡ä»£ç ï¼Python 3.11 + YAML çç¥ï¼ä¸ä¸å¼ ä¼ä¸æ¹æ¡å¯¹æ¯è¡¨ãé忣å¨è¯ä¼°æ¡é¢ AgentãComputer Use ç±»å·¥å ·è½å°çææ¯è´è´£äººã
ä¸ã为ä»ä¹ GUI Agent è¿å ç½æ¯ä¸ªæ°å½é¢
8 æ 20 æ¥ï¼é¿éåé®åå¸ Qwen-UI-Agentï¼arXiv 2607.28227ï¼ï¼ä¸ä¸ªä»¥çå®è®¾å¤ä¸ºä¸å¿ç GUI æºè½ä½åºåº§æ¨¡åãå®è¦çç§»å¨ç«¯ãPC æ¡é¢ãç½é¡µå深度æç´¢ï¼å¨çæºåºå MobileWorld-Real 䏿¿å° 92.2%ãAndroidDaily 97.5%ãOSWorld-Verified 79.5%ï¼å¼æº GUI Agent ç¬¬ä¸æ¬¡å¨çæº benchmark ä¸å ¨é¢åè¶ éæºæè°ã
è¿æå³çä¸ä»¶äºï¼è®©æ¨¡å"çæå±å¹ã模æäººæä½"å·²ç»ä» demo åæå¯é¨ç½²è½åãä½å®ä¹æä¼ä¸å®å ¨æ¨¡åæ¨å°ä¸ä¸ªä¹å没认çé¢å¯¹çä½ç½®ââ
ä¼ ç» API Agent åªè½è°ä½ æ¾å¼ææçæ¥å£ï¼è¾¹çæ¸ æ°ãGUI Agent ä¸ä¸æ ·ï¼å®è½è¯»å±å¹ä¸æææå¼ççªå£ï¼è½ç¹çé¢ä¸æææé®ï¼è½å¡«ææè¾å ¥æ¡ãæ¢å¥è¯è¯´ï¼å®ç»§æ¿äºäººç±»æä½åè½çå°åè½åå°çä¸åï¼å´ä¸åäººç±»é£æ ·ä¼è¢«"è¿ä¸ªæé®ä¸è½ä¹±ç¹"çç´è§æ¦ä½ã
æ¬æè¦è§£å³çï¼å°±æ¯ä¸å¥è¯ï¼å¨è®©æ¨¡åçæå±å¹ä¹åï¼å ææéé好ãä¸é¢ç»åºå¯è½å°ç"ä¸éé¸"æ¡æ¶ã
äºãGUI Agent æ¯ API Agent å±é©å¨åª
2.1 é£é©æ¬è´¨ï¼ä»"ç»å»ºè®®"åæ"æ¹ç³»ç»"
ææ¬å婿åªç»å»ºè®®ï¼äººä»ç¶æ¯æåå³çè ï¼é£é©åçå¨"说éè¯"ã䏿¦ Agent è½æä½ UIï¼å®ä¼å¨æ§ä¹ä¸èªå·±åä¸è¿ä¸²å³çï¼éåªä¸ªè´¦å·ã确认åªä¸ªå¯¹è¯æ¡ãæè¦å彿ä»ä¹ææãä¸ä¸ªå¤±è¯¯å°±æ¯å³æ¶åæââå æ°æ®ãé仿¬¾ãæ¹æéãæ³é²ä¸ªäººä¿¡æ¯ã
2.2 ä¸ç±»çå®å¨è
- UI é鱼欺éªï¼æ Agent å¼å°ä¸ä¸ªä»¿åçç»å½/审æ¹/设置页é¢ï¼å®å½ä½å¯ä¿¡é¡µé¢ç §å¸¸æä½ã
- ç ´åæ§ç¹å»ï¼å¨ workflow é诱导 Agent èµ°é忝ï¼ç¡®è®¤ä¸ä¸ªéæ¯æ§å¯¹è¯æ¡ï¼æå¯¼åºéè¯¯æ°æ®éã
- éé»å¤æ³ï¼Agent ææææä»¶ãåè¯ãå¯é¥è¯»å°åè½ç´æ¥åå¾å¤é¨ç«¯ç¹ï¼è¿ç¨æ æç´å°æå®³åçã
è¿ä¸ç±»å¨èå ±åç¹æ¯ï¼æ¶æè¾å ¥è½åæ¶å¡é Agent"ç¸ä¿¡ä»ä¹"å"ç¹ä»ä¹"ï¼åæå¨å¨ä½å®æåææ´é²ã
2.3 æå°æéåºçº¿ï¼ä»é¶èµ·æ¥ï¼æéææ
å®å ¨å¢éç»æ¡é¢ Agent çå ±è¯æ¯ââä¸è¦æå®å½äººç±»ç¨æ·ï¼ç»å®"é¶æéåºçº¿"ï¼åªæç¨æ·æç¡®è¯·æ±æé¡¹è½åæ¶æä¸´æ¶æäºï¼ä¸ææ¶éãæèå´ãé¿æéæåè¯æ¯æå¤§é·åºï¼ä¸å¾æ¢æä¸´æ¶ãåéç令çã
ä¸ãGUI æºè½ä½ä¸éé¸ï¼å½åæ¡æ¶ï¼
æä¸é¢çååè½æä¸å±å¼ºå¶æ§å¶ï¼Agent 卿¯éé¸åé½è¿ä¸éçç¥ï¼è䏿¯é 模å"èªå·±è®°å¾å«ä¹±æ¥"ã
3.1 第ä¸é¸ï¼éå®è¿è¡ç¯å¢ï¼æ²ç®±ä¸é离ï¼
æ²ç®±å¿ é¡»æ¯å¼ºå¶çåºç¡è®¾æ½å±æ§ï¼ä¸æ¯åç»æ¨¡åçæç¤ºè¯ãOS å±ç¨ä¸æ¬¡æ§ã强éç¯å¢ï¼ä¸æä¸»æºåè¯ãæ æä¹ ç¶æï¼æµè§å¨å±ç¨ç¬ç« profileãä¸åå¯ç ãéå¶ä¸è½½ï¼ç½ç»å±é»è®¤åªå 许ç½åååºå£ï¼å é¨å¯è¾¾æ§èµ°åæ§ç½å ³ã
3.2 第äºé¸ï¼æå°æéææï¼ä¸´æ¶ scoped tokenï¼
Agent å¯å¨æ¶åªæè¯»æ®éçé¢ãåæ®é导èªçæå°æéãè¦è¯»æä¸ªç®å½ãåæä¸ªè¯·æ±ï¼å ååè¯ä»£çç³è¯·ä¸ä¸ª scope å°å ·ä½è·¯å¾ãTTL ä» åæ¬¡ä¼è¯ç临æ¶ä»¤çãä¸ç¨éé 符æä»¶ç³»ç»æéï¼ä¸ç¨é¿æå¯é¥ã
3.3 第ä¸é¸ï¼ææå¨ä½å®¡æ¹ï¼äººç¡®è®¤ææ¾è¡ï¼
æ¯ä»ãæ°æ®å é¤ãæéæäºã对å¤åéï¼é®ä»¶/æ¶æ¯ï¼è¿ç±»é«é£é©å¨ä½ï¼é»è®¤è¿å ¥å®¡æ¹ç½å ³ï¼æªè·æç¡®ç¡®è®¤ä¸å¾æ¦æªãå¯å step-up 认è¯ï¼MFAï¼ï¼é«ç级å¨ä½è¦æ±ä¸å¡è´è´£äººçè³å®å ¨+ä¸å¡åç¾ã
åãè½å°å®æï¼ç¨æ¬å°çç¥ä»£çéæé
éè¦æä¸éé¸åæå¼ç®±å³ç¨ç»ä»¶çä¼ä¸ï¼å¯å ³æ³¨ç¯æ Claw è¿ç±»æ¬å°åé¨ç½²ï¼æ¨çä¸çç¥ç½å ³é½å¨å ç½ï¼æ°æ®ä¸åºåï¼ãä¸é¢ä¸æ®µä»£ç æ¼ç¤º"ä¸éé¸"å¦ä½å·¥ç¨åãæ ¸å¿ææ³ï¼å¨ Agent ä¸ç³»ç»ä¹é´æä¸ä¸ªç»ä¸çç¥ç½å ³ï¼Tool Gatewayï¼ï¼æææä»¶è¯»åãç½ç»åºå£ãææå¨ä½é½å è¿çç¥ï¼è䏿¯è®© Agent èªå·±å³å®è°åªä¸ªå½ä»¤ã
4.1 ç¯å¢åå¤
# è¿è¡ç¯å¢ï¼Python 3.11 + FastAPI 0.110 + PyJWT 2.8
python3 --version # Python 3.11.x
pip install fastapi==0.110 uvicorn==0.29 pyjwt==2.8
uvicorn gui_agent_policy_proxy:app --port 8080
# 颿è¾åºï¼Uvicorn running on http://127.0.0.1:8080
4.2 ç¨ Tool Gateway ç»ä¸æ¦æªæä»¶ä¸ç½ç»
# gui_agent_policy_proxy.py ââ å¨ Agent ä¸ç³»ç»ä¹é´æå
¥ç»ä¸çç¥ç½å
³
# è¿è¡ç¯å¢ï¼Python 3.11 + FastAPI 0.110
from fastapi import FastAPI, Request
app = FastAPI()
# å
许çå¤ç½åºå£ç½ååï¼ç½ç»å±æå°æéï¼
ALLOWED_EGRESS = {"api.model-provider.internal", "telemetry.internal"}
def is_sensitive_write(path: str) -> bool:
# ææç®å½ï¼åè¯ãå¯é¥ãçäº§æ°æ®
blocked = ("/etc/", "/root/.ssh", "/secrets", "/data/prod")
return any(path.startswith(p) for p in blocked)
@app.post("/tool/file_write")
async def file_write(req: Request):
body = await req.json()
path = body.get("path", "")
if is_sensitive_write(path):
return {"allowed": False, "reason": "åå
¥è¢«æï¼å½ä¸ææç®å½çç¥"}
if not path.startswith("/sandbox/workspace"):
return {"allowed": False, "reason": "ä»
å
许åå
¥ /sandbox/workspace"}
return {"allowed": True}
@app.post("/tool/http")
async def http_out(req: Request):
body = await req.json()
host = body.get("host", "")
if host not in ALLOWED_EGRESS:
return {"allowed": False, "reason": f"å¤ç½åºå£è¢«æï¼{host} ä¸å¨ç½åå"}
return {"allowed": True}
# 颿è¾åºï¼å½ä¸ææç®å½æ¶ï¼ï¼
# {"allowed": false, "reason": "åå
¥è¢«æï¼å½ä¸ææç®å½çç¥"}
4.3 ç¨ä¸´æ¶ scoped token å®ç°æå°æéæä»¶è®¿é®
# issue_scoped_token.py ââ ä¸ºåæ¬¡ GUI ä»»å¡ç¾å临æ¶ãåéæä»¶è®¿é®ä»¤ç
# è¿è¡ç¯å¢ï¼Python 3.11 + PyJWT 2.8
import jwt, time, secrets
SECRET = secrets.token_hex(16) # ç产ç¯å¢ç¨ KMS æç®¡ï¼å¿ç¡¬ç¼ç
def issue_token(agent_id: str, path: str, ttl: int = 600) -> str:
"""为æå® agent 卿å®ç®å½ç¾å 10 åéææçåªè¯»ä»¤ç"""
payload = {
"agent_id": agent_id,
"scope": {"paths": [path], "access": ["read"]},
"aud": "file-service.internal",
"iat": int(time.time()),
"exp": int(time.time()) + ttl,
"jti": secrets.token_urlsafe(8),
}
return jwt.encode(payload, SECRET, algorithm="HS256")
# 使ç¨ï¼agent 读å /Projects/Q1 åå
ç³è¯·ä»¤çï¼èéææé¿æå¯é¥
token = issue_token("gui-agent-01", "/Projects/Q1")
print(token[:32], "...")
# 颿è¾åºï¼eyJhbGciOiJIUzI1NiI... ï¼åç¼ç¤ºä¾ï¼æ¯æ¬¡ jti ä¸åï¼
4.4 ç¨å®¡æ¹ç½å ³æ¦ææå¨ä½
# approve_policy.yaml ââ ææå¨ä½å®¡æ¹ç½å
³é
ç½®ï¼ä¼ä¸è½å°ç¨ï¼
# çæ¬ï¼policy-gateway v1.2
risk_tiers:
low: { auto_approve: true, require_mfa: false }
medium: { auto_approve: false, require_mfa: true, approver: "ä¸å¡è´è´£äºº" }
high: { auto_approve: false, require_mfa: true, approver: "å®å
¨+ä¸å¡åç¾" }
sensitive_actions:
- name: payment_submit # æ¯ä»æäº¤
tier: high
block_on_unconfirmed: true
- name: data_delete # æ°æ®å é¤
tier: high
block_on_unconfirmed: true
- name: permission_grant # æéæäº
tier: high
block_on_unconfirmed: true
- name: external_send # 对å¤åéï¼é®ä»¶/æ¶æ¯ï¼
tier: medium
block_on_unconfirmed: true
# å
åºï¼æªå¨ç½ååçå¨ä½ä¸å¾æ¦æª
default_action: deny
äºãä¼ä¸æ¹æ¡å¯¹æ¯ï¼æä¸éé¸åæè°çé»è®¤
ä¸é¢ä»"ä¸é鏿¯å¦å¼ç®±å³ç¨"è§åº¦å¯¹æ¯ä¸ç±»è·¯å¾ãä¼ä¸æ¬å°åé¨ç½²ï¼å¦ç¯æ Clawï¼ææ¨çåçç¥ç½å ³é½æ¾å¨å ç½ï¼éåæ°æ®ä¸åºåçé«å®å ¨åºæ¯ã
| æ¹æ¡ | é¨ç½²ä½ç½® | å±å¹çè§£ï¼MobileWorld-Realï¼ | è¿è¡ç¯å¢éå® | æå°æéææ | ææå¨ä½å®¡æ¹ | éç¨åºæ¯ |
|---|---|---|---|---|---|---|
| 弿º Qwen-UI-Agent | éèªå»ºæ¨çé群 | 92.2% | éèªè¡å æ²ç®± / å®¹å¨ | éèªå»ºä»¤ç代ç | éèªå»ºå®¡æ¹ç½å ³ | ç åèªç ã坿§ç¯å¢ |
| å䏿¡é¢ Agentï¼Cowork ç±»ï¼ | äºç«¯ / æ¡é¢å®¢æ·ç«¯ | ååèªç ï¼æªå ¬å¼ | å¹³å°æç®¡é¨åé离 | é¨åæ¯æä¸´æ¶åè¯ | é¨åæ¯æ | 个人 / å°å¢éææ |
| ç¯æ Claw æ¬å°åé¨ç½² | å®å ¨æ¬å°ï¼æ°æ®ä¸åºå | æ¯æ GUI + CLI æ··åå¨ä½ | å ç½® Tool Gateway çç¥æ¦æª | å ç½® scoped token ç¾å | å 置审æ¹é¨ + ä¸é®æ¥å | ä¼ä¸å ç½é«å®å ¨è½å° |
å ãçå®è¸©åä¸é¿å Q&A
6.1 é¨ç½²ä¸æå®¹æç¿»è½¦çç¹
æ GUI Agent ç´æ¥è£ å¨æå ¨å¥åè¯çåå ¬æºä¸æ¯å¤´å·é·åºââæ¨¡å䏿¦è¢«è¯±å¯¼ï¼çäºææ´å°æºå¨çæéæ±æè®©äººãæ£ç¡®åæ³æ¯å 建é离ç¯å¢ï¼åè°è½åã
6.2 é«é¢é®çï¼Q&Aï¼
Q1ï¼æ²ç®±ç¨å®¹å¨å°±å¤äºåï¼ A1ï¼ä¸å¤ãæ²ç®±ä¸è½åªåçå¨"æ Agent æ¾è¿å®¹å¨"ãAgent çå¯ä½ç¨è·¯å¾å¾å¤ï¼Shellãæä»¶ãæµè§å¨ãHTTPãMCP å·¥å ·ãæ¶æ¯ééãç¯å¢åéãåè¯ãæ¥å¿ãé ç½®ââåªè¦æä¸æ¡æ²¡çº³å ¥çç¥ï¼æ»å»è å°±è½ä»é£éç»åºå»ã容卿¯åºåº§ï¼ä¸é¢è¿è¦å ç½ç»ç½åååå·¥å ·ç½å ³ã
Q2ï¼ä¸´æ¶ä»¤ç TTL 设å¤é¿åéï¼ A2ï¼æåæ¬¡ä»»å¡ç²åº¦ï¼é常 10â30 åéï¼ä¸ scope 精确å°å ·ä½è·¯å¾ãä¸è¦å"å ¨å¤©ææ"ç令çï¼ä¹ä¸è¦ç¨éé 符路å¾ã令çå°æèªå¨å¤±æï¼æªç¨æéèªå¨åæ¶ï¼è¿æ¯é²æéç¬åçå ³é®ã
Q3ï¼ææå¨ä½å®¡æ¹ä¼ä¸ä¼ææçæå®ï¼ A3ï¼ç¨é£é©å级ãä½é£é©ï¼è¯»å ¬å¼ææ¡£ï¼èªå¨è¿ï¼ä¸é£é©ï¼å¯¹å¤åæ¶æ¯ï¼å MFAï¼åªæé«é£é©ï¼æ¯ä»ãå é¤ãæ¹æéï¼æèµ°äººç¡®è®¤ãæå®¡æ¹éä¸å¨çæ£ä¼é ææå¤±çå¨ä½ä¸ï¼æ¥å¸¸ææä¸è¢«ææã
Q4ï¼æ¨¡åèªå·±è¯´"è¿ä¸ªæä½æé£é©æä¸å"å¤ä¸å¤ï¼ A4ï¼ä¸å¤ï¼ä¸ä¸è½å½å®å ¨è¾¹çãæ¨¡åæçæ¯æ¦çè¡ä¸ºï¼ä¸æ¯å¼ºå¶æ§å¶ãå®å ¨è¾¹çå¿ é¡»è½å¨è¿è¡æ¶ââçç¥ç½å ³å¨å¨ä½çæ£æ§è¡åæ¦æªï¼æ¨¡å"æ³ä¸æ³å"å"è½ä¸è½å"è¦åå¼ã论æéçç»è®ºå¾ç´ç½ï¼è¿è¡æ¶å¼ºå¶æ§è¡ææ¯å®å ¨å æ ¸ã
Q5ï¼æä»¬å·²ææ¡é¢ Agentï¼ä½æ°æ®ä¸è½åºåæä¹åï¼ A5ï¼è¿ç±»åºæ¯çæ¬å°åé¨ç½²è·¯å¾ï¼å¦ç¯æ Claw è¿ç±»ææ¨çä¸çç¥ç½å ³é½æ¾å¨å ç½çæ¹æ¡ãå±å¹ä¸çå°çå 容ã产ççå¨ä½æ¥å¿é½ä¸åºä¼ä¸è¾¹çï¼å®¡æ¹åæ¥åä¹å¨æ¬å°å®æã弿ºæ¹æ¡å¯èªè¡æ¼è£ æ²ç®±+令ç代ç+审æ¹ç½å ³ï¼æ¬å°åå䏿¹æ¡åæè¿äºåæé»è®¤ç»ä»¶ã
Q6ï¼æä¹éªè¯ä¸éé¸ççæäºï¼ A6ï¼å红è对æãæ æå¨ç½é¡µéå诱导æä»¤ãæ æè®©å®ç¹ä»¿åå¯¹è¯æ¡ãæ æè®©å®è¯»ææç®å½ï¼çç½å ³æ¯å¦æ¦æªå¹¶ççãæ¯æ¬¡ä¸çº¿åè·ä¸éï¼ææ¦æªæ¥å¿æ¥è¿ SIEMï¼åå°"ææ Agent å¨ä½å¯å®¡è®¡ãå¯åæ¾"ã
ä¸ãéç¨è¾¹çä¸é£é©æç¤º
â ï¸ ä¸éé¸éå"éè¦è®© Agent æä½çå® UI"çä¼ä¸åºæ¯ï¼å é¨ç³»ç»æ APIãè·¨è软件èªå¨åï¼ãè¥ä¸å¡å·²ææ å API 䏿鿍¡åæ¸ æ°ï¼ä¼å èµ° API Agentï¼GUI è·¯å¾ä½ä¸ºè¡¥å èéé»è®¤ã
â ï¸ æ²ç®±ã令ç代çã审æ¹ç½å ³é½è¦æ owner åæææï¼é²ç½®æéèªå¨åæ¶ï¼é¿å "æ¥ä¸æ¬¡æéçä¸è¾å"ã
â ï¸ ç产ç¯å¢å¯é¥ç¨ KMS æç®¡ï¼ä¸è¦æ SECRET åè¿ä»£ç æé ç½®æä»¶ææã
å «ãæ»ç»
GUI Agent 让"模åçæå±å¹"æä¸ºç°å®è½åï¼ä½å±å¹è忝æ´ä¸ªä¼ä¸çæ°æ®åç³»ç»ãè½å°ç第ä¸åå䏿¯å 追åç¡®çï¼èæ¯å éæéï¼ç¬¬ä¸é¸æè¿è¡ç¯å¢éè¿æ²ç®±ï¼ç¬¬äºé¸ææéæ¶çªæä¸´æ¶ä»¤çï¼ç¬¬ä¸é¸æé«é£é©å¨ä½äº¤ç»äººç¡®è®¤ã
åç¯æ Claw è¿ç±»æ¬å°åé¨ç½²æä¸éé¸åæé»è®¤ç»ä»¶ï¼éåæ°æ®ä¸åºåçå ç½ï¼èªç å¢éåææ¬æå段代ç èªè¡æ¼è£ ãæ è®ºåªæ¡è·¯ï¼è®°ä½ä¸å¥è¯ï¼æ¨¡åæç䏿¯å®å ¨è¾¹çï¼è¿è¡æ¶å¼ºå¶æ¦æªææ¯ã
ä½ å ¬å¸å¨è¯ä¼°æ¡é¢ Agent æ¶ï¼æå¡çæ¯åªéé¸ââç¯å¢é离ãæéæ¶çªï¼è¿æ¯å®¡æ¹æµç¨ï¼æ¬¢è¿è¯è®ºåºèèå®é è½å°å¡ç¹ã
Aitishiku.com