tg-use
tg-use — тестировщик/копировщик Telegram-ботов через web.telegram.org (клиент /k/).
CLI-«руки» + скилл для агент-харнесов: мозг — модель харнеса, CLI обращений к
внешним моделям не содержит вовсе.
Два режима работы browser-use
browser-use умеет работать двумя способами, и разница принципиальная:
- Browser Harness CLI + скилл — наш путь, рекомендуемый. Браузер подключается
к харнесу (Claude Code, Codex, OpenCode…), и решения принимает модель харнеса.
Наш
tg-use.py— только «руки»: чтение состояния, клики по кнопкам, артефакты, прогон записанных сценариев. Логика «куда кликать дальше» живёт в скилле (tg_use/SKILL.md— источник истины: он же в колесе и в плагине), а не в коде. - Встроенный агент
Agent(task=..., llm=...)со своим LLM-циклом — в этом проекте так не делаем. Этот режим дублирует мозг харнеса вторым (медленным и ломким) контуром: ключи, endpoint'ы, таймауты, fallback-модели. Был использован в v1 до 2026-09-20 и отвергнут владельцем вместе с z.ai-конфигом.
Правило: использовать browser-use skill install, а не писать своего агента.
В CLI нет ни одного обращения к внешней модели — проверяется test_skeleton.py.
Установка
Из клона:
pip3 install -r requirements.txt # в прокси-окружении: env -u ALL_PROXY -u all_proxy pip3 ...
python3 -m playwright install chromium
browser-use skill install # подключить браузер к харнесу
Из PyPI (Python ≥3.11): pipx install tg-use — те же команды без python3 tg-use.py:
tg-use login, tg-use open <@bot>, tg-use state, …; tg-use skill-install
ставит скилл агенту (команды в нём переписываются на tg-use).
Логин
python3 tg-use.py login # откроется окно с QR — отсканируй телефоном один раз
Сессия сохраняется в ~/.tg-use-agent-profile (= пароль от аккаунта) — повторный
запуск подхватит её без QR. При первом запуске macOS спросит доступ к «Chromium
Safe Storage»: вводи пароль входа и жми «Разрешать всегда» — это шифрование
cookies, без него сессия не переживёт перезапуск.
Browser Harness из коробки цепляется к обычному Chrome с его родным профилем и
наш изолированный профиль не даёт, поэтому профильный запуск остаётся за CLI:
login держит Chromium на нашем профиле и пишет его адрес в ~/.tg-use-cdp;
state/click/save/test подключаются к этому живому браузеру. Харнес может
работать с тем же окном через browser-use (BU_CDP_URL=$(cat ~/.tg-use-cdp)).
Команды (руки; «куда кликать дальше» решает харнес)
| Команда | Что делает |
|---|---|
tg-use.py login |
headed-браузер с persistent-профилем; адрес → ~/.tg-use-cdp |
tg-use.py open <@bot> |
открыть чат бота: поиск webk по username + клик по результату, guard по peer-id в hash; без отправок |
tg-use.py state |
JSON: текст последнего сообщения бота + подписи кнопок |
tg-use.py click "<label>" |
нажать inline-кнопку, вернуть новое состояние; отсутствие кнопки/реакции = ошибка (exit 1) |
tg-use.py save [--from id --button label] [--bot @name] |
дописать состояние/ребро в artifacts/flow.json + artifacts/flow.md (Mermaid) |
tg-use.py test scenario.json |
шаги {"do": {"send"/"click"}, "expect": {"contains"/"regex"}} → artifacts/report.json; падение = exit 1 |
Дальше — по скиллу tg_use/SKILL.md: малый обход (глубина ≤2,
до ~5 состояний) и прогон сценариев. Безопасность: темп 2–3 c между действиями,
только диалоги с ботами, скраб токенов в выводе, PNG не сохраняем.
Тесты и категории
Граница категорий — цена ошибки. unit: offline-скрипты, безопасный дефолт —
python3 test_skeleton.py && python3 test_crawl.py && python3 test_hands.py.
state/open — live_read (чтение/открытие чата без отправок); click/save —
live_write (обратимые действия в диалоге с ботом); test/login —
live_write_danger (необратимая отправка боту / полный доступ к аккаунту).
Гейты — в .claude/settings.json: владелец 2026-09-20 разрешил все подкоманды
целиком (Bash(python3 tg-use.py:*)), категории остались описанием цены ошибки,
а не спросом харнеса.
Metadata
Release files for tg-use 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tg_use-0.1.1.tar.gz | 23.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tg_use-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.3 kB
Release files / tg_use-0.1.1.tar.gz
| Download URL | tg_use-0.1.1.tar.gz |
|---|---|
| Size | 23.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84181445e7fb3c2aa68876c5511e10ba749e99ec78bd77290d87b52f2898bb63
|
|
BLAKE2b-256 checksum How to use checksums |
ccb530cb5d1f443fc03197f7c143c1550a989f649d74467370ac4e1c7f0df7c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / tg_use-0.1.1-py3-none-any.whl
| Download URL | tg_use-0.1.1-py3-none-any.whl |
|---|---|
| Size | 22.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e3bbf5e6c616ec64112399c81a6daa126912034826d7c03edacd1beadeee6b52
|
|
BLAKE2b-256 checksum How to use checksums |
5c2208c4beacd67dde0ffdc2a37de83d94fc86f1b2097ddfad68ce33900e49d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|