Живое демо: общение с ИИ, генерация полных скриптов за один шаг
В этой главе представлено полное описание реального процесса от «высказывания требований на естественном языке» до «получения готового к запуску скрипта» с подробным описанием каждого шага.
Сценарий демонстрации
Бизнес-контекст: У вас есть 20 аккаунтов продавцов Amazon, и вам нужно каждый день проверять количество заказов в статусе "Pending" (Ожидающие) в каждом аккаунте, сводя данные в отчет Excel для вашей команды.
Традиционный метод: Вручную заходить в каждый аккаунт один за другим, записывать количество заказов и заполнять Excel. Это занимает около 2 часов.
Использование ИИ + Mbbrowser: Опишите требования, ИИ сгенерирует скрипт, а скрипт сделает все остальное. Общее время — 15 минут (включая настройку).
Шаг 1: Подготовка (5 минут)
NOTE
Предполагается, что вы выполнили следующие настройки из предыдущих глав:
- ✅ Установлен Cursor или Antigravity.
- ✅ Пакет правил Mbbrowser Rules загружен в Cursor.
- ✅ Mbbrowser ApiServer запущен (
http://127.0.0.1:8186). - ✅ Ваши аккаунты Amazon уже авторизованы в средах Mbbrowser (Cookies сохранены).
Подготовьте файл sessions.txt
В папке вашего проекта создайте файл sessions.txt и впишите все ID сред, с которыми вы хотите работать:
a1b2c3d4e5f6789012345678901234ab
b2c3d4e5f67890123456789012345bcd
c3d4e5f678901234567890123456cde
... (один Session_ID в строке, всего 20 строк)Шаг 2: Ввод требований в Cursor (30 секунд)
Нажмите Ctrl + L, чтобы открыть Cursor Chat, и введите следующее:
У меня есть файл sessions.txt со списком Session_ID для 20 аккаунтов Mbbrowser, по одному в строке.
В этих средах уже выполнен вход в аккаунты Amazon.
Пожалуйста, помоги мне сгенерировать скрипт на Python со следующими функциями:
1. Прочитать все Session_ID из sessions.txt.
2. Пакетно открыть все среды (до 10 одновременно).
3. После того как управление средой перейдет к Playwright:
a. Подождать загрузки страницы (среды обычно остаются на последней закрытой странице).
b. Перейти на https://www.amazon.com/gp/orders-v2/list (страница заказов продавца Amazon).
c. Подождать появления элемента .a-row.shipment (сигнализирует о загрузке списка заказов).
d. Посчитать количество элементов .shipment-status-buyerPending на странице (это заказы "Pending").
e. Записать первые 8 символов Session_ID + количество ожидающих заказов в результаты.
4. Закрыть все среды после завершения всех операций.
5. Сохранить результаты в файл amazon_orders_[сегодняшняя дата].xlsx,
Колонки: Env ID (первые 8 симв.), Pending Order Count, Check Time, Status.
Сохраняй скриншоты в папку errors/, если возникнут исключения, и записывай "Check Failed" в таблицу результатов.Шаг 3: ИИ генерирует код (ок. 30 секунд)
После получения запроса ИИ Cursor сгенерирует полный код. Результат должен выглядеть примерно так:
"""
Скрипт проверки заказов Mbbrowser + Amazon
Автоматически проверяет количество ожидающих заказов во всех средах.
"""
import threading
import datetime
from pathlib import Path
from concurrent.futures import ThreadPoolExecutor, as_completed
import requests
import openpyxl
from playwright.sync_api import sync_playwright, TimeoutError as PWTimeout
# ==============================
# Конфигурация (измените при необходимости)
# ==============================
APISERVER = "http://127.0.0.1:8186"
SESSIONS_FILE = "sessions.txt"
MAX_WORKERS = 10 # Максимальная конкурентность
ERRORS_DIR = Path("errors")
ERRORS_DIR.mkdir(exist_ok=True)
results_lock = threading.Lock()
results = []
# ==============================
# Обертка APIServer
# ==============================
def start_env(session_id: str) -> dict | None:
try:
resp = requests.post(
f"{APISERVER}/api/v1/browser/start",
json={"Session_ID": [session_id], "isHeadless": False},
timeout=30
)
data = resp.json()
if data["code"] == 0:
return data["data"]["listid"][0]
except Exception as e:
print(f"[{session_id[:8]}] Ошибка APIServer: {e}")
return None
def stop_env(session_id: str):
try:
requests.post(
f"{APISERVER}/api/v1/browser/stop",
json={"Session_ID": session_id},
timeout=10
)
except Exception:
pass
# ==============================
# Задача для одного аккаунта
# ==============================
def check_orders(session_id: str):
now = datetime.datetime.now().strftime("%H:%M:%S")
env_short = session_id[:8]
env_data = start_env(session_id)
if not env_data:
with results_lock:
results.append({
"env_id": env_short,
"pending_orders": "N/A",
"check_time": now,
"status": "Ошибка открытия среды"
})
return
port = env_data.get("browser_CDP_Port")
ws = f"ws://127.0.0.1:{port}/json/version"
pw = sync_playwright().start()
try:
browser = pw.chromium.connect_over_cdp(ws)
context = browser.contexts[0]
page = context.pages[0] if context.pages else context.new_page()
# Переход на страницу заказов Amazon
page.goto(
"https://www.amazon.com/gp/orders-v2/list",
wait_until="domcontentloaded",
timeout=20000
)
# Ожидание загрузки списка заказов
page.wait_for_selector(".a-row.shipment", timeout=15000)
# Подсчет ожидающих заказов
pending = page.locator(".shipment-status-buyerPending").count()
print(f"[{env_short}] ✅ Ожидающих заказов: {pending}")
with results_lock:
results.append({
"env_id": env_short,
"pending_orders": pending,
"check_time": now,
"status": "Success"
})
browser.close()
except PWTimeout:
page.screenshot(path=str(ERRORS_DIR / f"{env_short}_timeout.png"))
with results_lock:
results.append({
"env_id": env_short,
"pending_orders": "N/A",
"check_time": now,
"status": "Таймаут страницы"
})
except Exception as e:
try:
page.screenshot(path=str(ERRORS_DIR / f"{env_short}_error.png"))
except Exception:
pass
with results_lock:
results.append({
"env_id": env_short,
"pending_orders": "N/A",
"check_time": now,
"status": f"Exception: {str(e)[:50]}"
})
finally:
try:
pw.stop()
except Exception:
pass
stop_env(session_id)
# ==============================
# Основная программа
# ==============================
def main():
# Чтение списка Session_ID
session_ids = [
line.strip()
for line in Path(SESSIONS_FILE).read_text().splitlines()
if line.strip()
]
print(f"📋 Всего {len(session_ids)} аккаунтов, макс. конкурентность {MAX_WORKERS}")
# Параллельное выполнение
with ThreadPoolExecutor(max_workers=MAX_WORKERS) as pool:
futures = {pool.submit(check_orders, sid): sid for sid in session_ids}
for future in as_completed(futures):
sid = futures[future]
try:
future.result()
except Exception as e:
print(f"[{sid[:8]}] Необработанное исключение: {e}")
# Сохранение отчета Excel
today = datetime.date.today().strftime("%Y%m%d")
filename = f"amazon_orders_{today}.xlsx"
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Результаты проверки заказов"
ws.append(["Env ID (первые 8)", "Pending Orders", "Check Time", "Status"])
for r in results:
ws.append([r["env_id"], r["pending_orders"], r["check_time"], r["status"]])
wb.save(filename)
# Сводный отчет
success = sum(1 for r in results if r["status"] == "Success")
print(f"\n{'='*40}")
print(f"✅ Успешно: {success} / {len(results)}")
print(f"📄 Отчет сохранен в: {filename}")
print(f"❌ Скриншоты ошибок в папке: errors/")
if __name__ == "__main__":
main()Шаг 4: Установка зависимостей и запуск (2 минуты)
После генерации кода ИИ обычно советует, какие зависимости нужно установить:
pip install playwright requests openpyxlЗатем запустите напрямую:
python check_amazon_orders.pyОжидаемый вывод
📋 Всего 20 аккаунтов, макс. конкурентность 10
[a1b2c3d4] ✅ Ожидающих заказов: 3
[b2c3d4e5] ✅ Ожидающих заказов: 0
[c3d4e5f6] ✅ Ожидающих заказов: 7
...
========================================
✅ Успешно: 18 / 20
📄 Отчет сохранен в: amazon_orders_20260226.xlsx
❌ Скриншоты ошибок в папке: errors/Общие проблемы и советы по исправлению через ИИ
«Скрипт работает, но не находит элементы заказов»
Выберите соответствующий код и нажмите Ctrl + K. Введите:
Селектор на странице Amazon изменился. Актуальный селектор строки заказа — .order-info, а селектор статуса ожидания — .order-status-pending. Пожалуйста, обнови код.«Добавь функцию: также собирай детали заказов»
Продолжите разговор в чате:
На основе приведенного выше кода, после сбора количества заказов, пожалуйста, также собери ID заказа (.a-fixed-right-grid-col .a-link-normal) и ожидаемую дату отправки (.expected-ship-date) для каждого ожидающего заказа и запиши их в Excel.«Конкурентность слишком высокая, возникают сбои; нужно ограничение скорости»
На основе ThreadPoolExecutor добавь 3-секундное ожидание перед запуском каждой новой задачи, чтобы избежать проблем с памятью из-за одновременного открытия слишком большого количества сред.Резюме: лучшие практики написания скриптов через ИИ
[ Подготовка ]
1. Пакет Rules внедрен → ИИ понимает все интерфейсы Mbbrowser.
2. Подтвердите, что APISERVER запущен.
[ Описание требований ]
Чем конкретнее, тем лучше:
✅ "Перейди на https://xxx, подожди появления элемента #main-content, нажми .order-btn, подожди всплывающего окна успеха."
❌ "Помоги мне управлять заказами."
[ Генерация ]
Обычно 80% кода пригодно к использованию сразу. Исправьте мелкие недочеты через уточняющие вопросы в чате.
[ Итеративная оптимизация ]
"Добавь функцию xx на основе этого" → ИИ внесет изменения без переписывания всего кода.IMPORTANT
Важное напоминание: В коде, сгенерированном ИИ, иногда могут возникать небольшие ошибки. Всегда проводите тест на 1-2 тестовых аккаунтах перед масштабным развертыванием. Переходите ко всем аккаунтам только после проверки.
TIP
🎉 Поздравляем! Теперь вы владеете полным набором методов генерации скриптов автоматизации для Mbbrowser с помощью моделей ИИ.
Возникли проблемы? Обратитесь к соответствующим главам:
- Несовпадение интерфейсов? → Пакет правил (Rules) для подтверждения использования APISERVER.
- Нет идей для скрипта? → Пакет навыков (Skills), чтобы найти шаблоны на основе сценариев.
