Термінал для ваших агентів: перший погляд на tabstack CLI

Перекладено ШІ 0 JustSteveKing 05 серпня, 2026

Отримання структурованих даних із вебу для ваших проєктів більше не потребує написання крихких парсерів. Новий `tabstack` CLI від Mozilla автоматизує цей процес, миттєво перетворюючи будь-який URL на чистий Markdown або JSON.

Останнім часом чи не кожен мій проєкт потребує одного й того ж: надійного способу інтегрувати вебконтент у скрипт або агент. І це не має бути крихкий скрейпінг, що тримається на CSS-селекторах та чесному слові. Мені потрібен інструмент, який бере URL і повертає чистий, структурований текст, готовий до подальшої обробки. Я вже не раз писав подібні обгортки, і вони завжди виявлялися складнішими, ніж здавалося спочатку. Тому, коли Mozilla випустила tabstack CLI — єдиний бінарний файл на Go, що працює з Tabstack AI API, — я вирішив присвятити йому вечір.

Опис у README лаконічний: будь-яка взаємодія з вебом, яка потрібна вашому агенту чи стеку, доступна прямо з термінала або скрипту. Утиліта перетворює будь-який URL на чистий Markdown або структурований JSON, виконує автоматизацію браузера за допомогою природної мови та відповідає на дослідницькі запитання з посиланнями на джерела. Що мене особливо зачепило: вивід має чудовий вигляд у терміналі, але при цьому його можна одразу передавати в jq через пайп без додаткових прапорців. Це дрібниця, яка свідчить про те, що розробники самі живуть у командному рядку.

Ось мій досвід знайомства з цим інструментом.

Встановлення

Вам не потрібно встановлювати середовище виконання чи щось налаштовувати — інструмент постачається як єдиний статичний бінарний файл для macOS, Linux та Windows. Найшвидший спосіб — скористатися скриптом встановлення:

curl -fsSL https://tabstack.ai/install.sh | sh

Це завантажить потрібний файл і додасть його до вашого PATH. Якщо ви не хочете запускати скрипт із мережі напряму, є альтернативи. Якщо у вас встановлено Go, виконайте:

go install github.com/Mozilla-Ocho/tabstack-cli/cmd/tabstack@latest

Бінарний файл з’явиться в $GOPATH/bin (зазвичай це ~/go/bin). Якщо після цього оболонка не бачить tabstack, перевірте, чи додана ця директорія до PATH:

export PATH="$HOME/go/bin:$PATH"

Також можна завантажити готові файли зі сторінки Releases або клонувати репозиторій і запустити make install-local. Усі шляхи максимально прості та зрозумілі.

Розумна автентифікація

Це те, за що хочеться похвалити розробників передусім. Робота з доступами часто реалізована абияк, але тут все інакше. Ви логінитеся один раз:

tabstack auth login            # запитує ключ (введення приховане) і зберігає його в конфіг
tabstack auth status           # показує, звідки береться ключ, але не виводить його

Ключ може підтягуватися з трьох місць у строгому порядку пріоритетності:

  1. прапорець --api-key;
  2. змінна оточення TABSTACK_API_KEY;
  3. файл конфігурації $XDG_CONFIG_HOME/tabstack/config.toml (за замовчуванням ~/.config/tabstack/config.toml).

Файл конфігурації має права доступу 0600, тож він захищений від стороннього читання. Якщо ключ не знайдено, команда завершиться з кодом 2 і підказкою, замість того, щоб «виплюнути» помилку стеку. До кодів завершення ми ще повернемося — вони тут важливі.

Основа: перетворення сторінки на корисні дані

Кожна команда має передбачувану структуру: tabstack <group> <action> <target>. Коли ви це зрозумієте, робота з інструментом стане інтуїтивною.

Найперше, що я спробував — extract. У найпростішому варіанті вона перетворює сторінку на чистий Markdown:

tabstack extract markdown https://example.com --metadata

Прапорець --metadata додає заголовок, автора та іншу супутню інформацію. Але справжня магія — це структурований витяг даних у JSON за заданою схемою:

tabstack extract json https://example.com --schema @schema.json
tabstack extract json https://example.com --schema '{"type":"object","properties":{"title":{"type":"string"}}}'

Синтаксис @schema.json дозволяє зчитувати схему з файлу. Це працює для всіх вхідних прапорців: можна передати рядок, вказати шлях до файлу через @ або зчитати зі stdin через - (як у curl -d). Наприклад:

echo '{"type":"object"}' | tabstack extract json https://example.com --schema -

Приємно, коли розробники один раз створюють зручну логіку аргументів і застосовують її всюди.

Generate: видобуток з інтерпретацією

Якщо extract просто витягує те, що є на сторінці, то generate використовує AI для трансформації контенту. Ви надаєте інструкції разом зі схемою:

tabstack generate json https://example.com \
  --instructions "Summarise the article and list the key points." \
  --schema @schema.json

Моя логіка така: extract json потрібен для отримання фактичних даних, а generate json — коли треба щось підсумувати, класифікувати або переструктурувати за допомогою моделі. Розподіл на два окремі дієслова — правильне рішення: це вберігає від використання «важкого» AI там, де достатньо звичайного парсингу.

Агенти: автоматизація та дослідження

Тут tabstack перетворюється з простого парсера на щось значно цікавіше. Команди групи agent виконуються на стороні сервера і стрімлять прогрес у реальному часі.

Автоматизація браузера розуміє запити людською мовою:

tabstack agent automate "Find the pricing for the Pro plan" --url https://example.com

Функція research шукає інформацію в мережі, аналізує її та видає звіт із нумерованими посиланнями на джерела:

tabstack agent research "What are the latest developments in quantum computing?" --mode balanced

Цікава особливість — інтерактивна автоматизація. Ви можете запустити процес, який зупиниться і запитає вашого введення:

tabstack agent automate "Log in and download the latest invoice" --url https://example.com --interactive

При зупинці ви отримуєте ID запиту і відповідаєте на нього окремою командою:

tabstack agent input <request-id> --data '{"fields":[{"ref":"field1","value":"yes"}]}'

Це елегантний спосіб залучити людину до процесу (human-in-the-loop) лише тоді, коли це справді необхідно.

Зручність для скриптів

Ось дизайнерське рішення, про яке варто знати: вивід автоматично стає «чистим» JSON, якщо ви передаєте його в іншу програму через пайп. Ніяких зайвих прапорців:

tabstack extract markdown https://example.com | jq .

Ви можете примусово задати режим через -o pretty або -o json, а також вимкнути кольори через --no-color. Команди automate та research у режимі JSON видають NDJSON (по одному об’єкту на рядок), що дозволяє обробляти події миттєво.

Окремої уваги варті коди завершення:

Код Значення
0 успіх
1 помилка виконання або мережі
2 помилка використання, невірні дані або відсутність конфігурації
3 помилка API або невдача виконання завдання

Це дозволяє створювати надійні shell-скрипти, які розуміють різницю між мережевим збоєм та невірним аргументом.

Серед інших корисних опцій: --effort (регулює швидкість та ретельність рендерингу), --geo GB (маршрутизація через конкретну країну) та --nocache (ігнорування кешу).

Створено і для агентів

У репозиторії є файл AGENTS.md, який показує вектор розвитку проєкту. CLI розроблено так, щоб ним могли керувати не лише люди, а й LLM-агенти. Цей файл описує всі команди та коди у форматі, зручному для «споживання» машинами. Якщо ви підключаєте tabstack до Claude Code або власної системи, просто вкажіть агенту на цей файл.

Передбачуваний CLI з машинно-читаним виводом — це саме той інструмент, який агент може використовувати безпечно. Те, що робить утиліту зручною для мене в терміналі, робить її придатною і для моделі в циклі керування.

Чи варто це використовувати?

Так. Проблема доступу до вебданих виникає постійно. tabstack CLI розв'язує всі супутні питання: від керування ключами до зрозумілих помилок. Це єдиний бінарний файл, версія 1.0.0, ліцензія MIT та підтримка від Mozilla. Це не просто чийсь експеримент на вихідні, а надійний інструмент для вашого пайплайну.

Якщо вашому стеку чи агентам потрібно «читати» інтернет — спробуйте tabstack. Почніть із tabstack auth login, і ви швидко зрозумієте всі переваги.

Маю передчуття, що найцікавіше — не в самому витягуванні даних, а в тому, куди ви спрямуєте цей потік далі. Але про це — у наступному матеріалі.

Популярні

Інше, що варто прочитати

26 Оновлено 26 червня, 2026

Створення MCP-серверів на PHP

Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту

13 Оновлено 26 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

14 Оновлено 26 червня, 2026

Локальні моделі та їх скоупи в Laravel за допомогою атрибута Scope

В Laravel 12 ми отримали можливість використовувати новий підхід для визначення локальних скоупів у моделях Eloquent. Дізнайтеся, як новий атрибут #[Scope] спрощує цей процес і зберігає ваші назви методів незмінними