Skip to content

AgentProxy 1.7

Latest

Choose a tag to compare

@aokazantsev aokazantsev released this 02 Nov 16:27
· 6 commits to main since this release
  • Несколько Android-устройств разделяются: device_proxy enable даёт каждому устройству свой порт на ПК (pc_port в ответе, закреплён за serial, все порты — device_ports в proxy_status; запоминаются 32 устройства, новое вытесняет то, которое включали давнее всех). Телефон по-прежнему смотрит на 127.0.0.1 и порт прокси, а adb reverse ведёт его на его порт ПК. Устройство, подключённое прежней версией, держит adb reverse на общий порт: его запросы идут без устройства, а status отвечает ready: false и pc_port: null с подсказкой, что у устройства ещё нет своего порта, — повторить enable.
  • Каждый запрос в истории несёт device — serial устройства; у запросов самого ПК и устройств, подключённых на общий порт руками, — null. Фильтр device есть у list_flows, wait_for_flow и wait_for_event; list_events и wait_for_event с device отказывают по потоку другого устройства; check_connection с serial считает трафик и отказы только этого устройства; монитор фильтрует по устройству.
  • Правило с полем device (add_rule, update_rule) подменяет ответы только этому устройству; без него — всем устройствам и ПК, как раньше. Ответ add_rule подсказывает, если у устройства ещё нет своего порта или правило без device при нескольких устройствах. Перенос правила с одного устройства на другое снимает его с уже открытых потоков и соединений, ответ, который правило cut ещё не оборвало, не обрывается; правило без device, суженное до одного устройства, действует на новые запросы, а открытые потоки и соединения остальных держит до их закрытия; снятие device открытое не трогает.
  • clear_flows с device чистит историю одного устройства, delete_rule с all: true и device удаляет только правила этого устройства (HTTP: DELETE /api/flows?device=<serial> и DELETE /api/rules?device=<serial>; другие параметры и тело у них теперь — отказ 400). Пустой device — отказ, а не «все устройства».
  • При нескольких устройствах — всегда передавать serial в device_proxy и device в чтение истории и правила: иначе видны чужие запросы, а правило меняет ответы чужому устройству (скилл, раздел «Несколько устройств»).
  • Пауза на время Charles снимает и возвращает прокси каждому устройству на его порт.
  • Совет при зависшем adb — adb -s <serial> reconnect вместо adb kill-server, который рвёт связь со всеми устройствами.
  • wait_for_flow и wait_for_event ждут не дольше 55 секунд, по умолчанию 50: клиент MCP обрывает вызов примерно через 60 секунд с ошибкой «The operation timed out», и ответ «ничего не пришло» до него не доходил. Больше 55 — отказ, он называет предел; то же у HTTP /api/flows/wait и /api/events/wait. Ждать дольше — повторить вызов с курсором из ответа timed_out: у wait_for_flow — since_seq = last_seq, у wait_for_event с flow — тот же flow и since_n; тогда запрос или событие, пришедшие между вызовами, не теряются. Без flow события между вызовами видны только в list_events.