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— только «руки»: чтение состояния, клики по кнопкам, артефакты, прогон записанных сценариев. Логика «куда кликать дальше» живёт в скилле (.claude/skills/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 |
Дальше — по скиллу .claude/skills/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.0
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.0.tar.gz | 20.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tg_use-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.5 kB
Release files / tg_use-0.1.0.tar.gz
| Download URL | tg_use-0.1.0.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af63abf0d153afebbe9bd504f2b7c16f4804a2ce7c8a3af3f993d2089e9b89b8
|
|
BLAKE2b-256 checksum How to use checksums |
0593b3b0d6474f2298e2eef922c5c5d050543146dcd71f310d8ae0cd98728da0
|
| 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.0-py3-none-any.whl
| Download URL | tg_use-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b2420f2e69e845ff88b62191180e665b8aba79274c5f5576f155273a390e3ebe
|
|
BLAKE2b-256 checksum How to use checksums |
bf3b1c7495294873da460a290738917262f40c96b0f3b06f9988a376ad40730a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|