Tau — минималистичный терминальный кодинг-агент на Python
📂 Исходный код на GitHubМинималистичный, читаемый терминальный кодинг-агент и одновременно учебный пример того, как строятся кодинг-агенты. Событийно-ориентированная архитектура, разделение на переносимое ядро и фронтенды.
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