Tau — минималистичный терминальный кодинг-агент на Python

· 2 мин чтения
coding-agent terminal python tutorial agent-harness ai-coding
📂 Исходный код на GitHub

Минималистичный, читаемый терминальный кодинг-агент и одновременно учебный пример того, как строятся кодинг-агенты. Событийно-ориентированная архитектура, разделение на переносимое ядро и фронтенды.

Tau — минималистичный терминальный кодинг-агент на Python

Tau — минималистичный кодинг-агент, который живёт в терминале. Вы пишете запросы вроде «объясни этот репозиторий», «добавь тесты» или «почини этот стектрейс», а Tau читает файлы, редактирует код, запускает команды и сохраняет историю сессий. Это одновременно рабочий инструмент и учебный проект, показывающий, как устроены кодинг-агенты изнутри.

Архитектура

Tau состоит из трёх слоёв:

tau_coding  →  tau_agent  →  tau_ai

tau_ai — переводит API разных провайдеров в единый событийный поток Tau. Никакой бизнес-логики, только адаптеры.

tau_agent — переносимое ядро: сообщения, инструменты, события, цикл агента (AgentHarness), примитивы сессий. Ничего не знает о CLI, Textual или Rich.

tau_coding — оборачивает ядро в реальное кодинг-приложение: CLI, TUI, инструменты для работы с файлами и shell, конфигурация провайдеров, инструкции проекта, навыки и сессии на диске.

Ключевое разделение:

AgentHarness = переносимое ядро
CodingSession = окружение кодинг-агента
TUI = один из возможных фронтендов

Ядро не зависит от Textual, Rich, локальных конфигов, slash-команд или рендеринга. Фронтенды потребляют события.

Установка

Tau опубликован на PyPI как пакет tau-ai. Требуется Python 3.12+.

uv tool install tau-ai
tau --version

Альтернативы:

pipx install tau-ai
# или
python -m pip install tau-ai

Для локальной разработки:

git clone https://github.com/alejandro-ao/tau.git
cd tau
uv sync --dev
uv run tau --version

Editable-установка для глобального доступа:

uv tool install --editable --force .

Быстрый старт

Запустите Tau из папки проекта:

cd my-project
tau

Введите запрос:

объясни, что делает этот проект

One-shot режим для скриптов:

tau -p "суммируй архитектуру"
tau --cwd /path/to/project -p "найди точку входа CLI"

Tau требует модельного провайдера. Подключите через /login:

/login
/login openai
/login openai-codex
/model

Поддерживаются OpenAI, Anthropic, OpenAI Codex, OpenRouter, Hugging Face и любые OpenAI-совместимые эндпоинты, включая локальные модели. Встроенный каталог моделей находится в src/tau_coding/data/catalog.toml. Добавляйте свои провайдеры через ~/.tau/catalog.toml с той же схемой — без изменений кода.

Возможности

  • Интерактивный Textual TUI и неинтерактивный print-режим.
  • Встроенные кодинг-инструменты: read, write, edit, bash.
  • Долговременные JSONL-сессии в ~/.tau/sessions/ с возможностью возобновления и ветвления.
  • Slash-команды: логин, выбор модели, управление сессиями, компактизация, экспорт, тема и другие.
  • Инструкции проекта из AGENTS.md, .tau/ и .agents/.
  • Пользовательские навыки и шаблоны промптов.
  • Учёт контекста, ручная и автоматическая компактизация.
  • Провайдер-нейтральный рендеринг событий для Rich, plain text, JSON, транскриптов и кастомных фронтендов.

Философия

Tau придерживается нескольких принципов:

  • Тонкие слои вместо магии. Каждый пакет делает одно дело и читается независимо.
  • События — это контракт. Провайдеры, рендереры, TUI и кастомные фронтенды встречаются на типизированном событийном потоке.
  • Ядро остаётся переносимым. AgentHarness не зависит от CLI, Textual, Rich или файловой структуры Tau.
  • Инструменты — обычные типизированные функции. Инструмент = схема + async-исполнитель, возвращающий структурированный результат.
  • Сессии долговременны и инспектируемы. История — append-only JSONL; активный контекст сжимается без перезаписи.
  • Документация следует за реализацией. Публичная документация объясняет результат; dev-notes/ сохраняет журнал сборки по фазам.

Использование как библиотека

from tau_agent import AgentHarness, AgentHarnessConfig

harness = AgentHarness(
    AgentHarnessConfig(
        provider=provider,
        model="my-model",
        system="You are a helpful coding agent.",
        tools=tools,
    )
)

async for event in harness.prompt("Explain this package"):
    print(event)

Поскольку AgentHarness генерирует события вместо прямого рендеринга UI, одно и то же ядро может управлять встроенным TUI, print-режимом или фронтендом, который вы построите сами.

Разработка и тестирование

uv sync --dev
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run mypy

Запуск из исходников:

uv run tau
uv run tau -p "explain this repo"

Сайт документации на Hugo:

cd website
hugo server -D

Документация публикуется на https://twotimespi.dev/. План развития отслеживается в GitHub issue #1.

Tau выпущен под лицензией MIT.

Источник: https://github.com/huggingface/tau