TokenOps — скилл
Скилл встраивает в Python-агента лимит расходов на весь прогон: проверка перед каждым вызовом модели останавливает лишние траты.
- 84 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Скилл правит код вызова модели в вашем проекте, а политики могут менять следующий запрос агента
- Общий бюджет требует ключа панели управления с правами чтения и записи событий
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/tokenopsОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скилл правит код вызова модели в вашем проекте, а политики могут менять следующий запрос агента
- Общий бюджет требует ключа панели управления с правами чтения и записи событий
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
TokenOps ставит один бюджет на весь рабочий процесс агента, а не на отдельный запрос. Скилл `integrate-tokenops` открывает ассистент, и тот оборачивает вызов модели функцией `wrap_complete` внутри `tokenops_run`. Перед каждым обращением к модели проверяется, сколько прогон уже потратил. Когда лимит исчерпан, поднимается исключение `Halt`, а соседние процессы того же прогона получают отказ. В пакет входят десять готовых политик: бюджет по стоимости, проверка худшего случая до вызова, лимит шагов, лимит времени, обрезка вывода инструментов и уплотнение контекста. Политика способна остановить прогон или изменить следующий вызов. Для одного скрипта хватает примерно десяти строк без сервера. Если нужно общее ограничение для нескольких процессов, подключается отдельная панель управления AgentPlane, и бюджет хранится в ней.
Для кого. Разработчикам мультиагентных систем на Python, у которых один зависший цикл способен сжечь бюджет на вызовах модели.
Подходит, если
- Агент на LangChain или своем цикле ходит в модель десятки раз за задачу, и нужен потолок стоимости на весь прогон
- Несколько агентов в одном конвейере должны делить общий бюджет, даже если каждый работает отдельным процессом
- Зациклившийся агент должен остановиться до следующего платного вызова, а не после счета
- Нужно увидеть, сколько потратил каждый агент, на панели AgentPlane
Не подходит, если
- Нужен шлюз маршрутизации запросов между провайдерами: LLM-шлюз TokenOps не заменяет, он работает рядом
- Нужна трассировка и запись прогона для разбора: этим занимаются Chronicle и инструменты наблюдения
- Агент написан не на Python: готовая интеграция есть только для него
Пример запроса к агенту
Подключи TokenOps к этому агенту: общий лимит два доллара на прогон, остановка при исчерпании и показ, что проверить.Ограничения
Нужен Python 3.10 или новее. Единственное обязательное изменение в коде агента: вместо функции вызова модели ему передают `governed`, поэтому вызов модели должен быть подменяемым. Политика `cost_budget` служит запасной и может превысить лимит на один вызов, для точной остановки включают `pre_call_worst_case`. Своего сервера, базы и интерфейса у TokenOps нет: общий бюджет для нескольких процессов требует запущенной панели управления AgentPlane и ключа `CONTROL_PLANE_API_KEY`. Локального запасного хранилища для общего бюджета нет.
Как отключить. Верните в агента исходную функцию вызова модели вместо `governed` и удалите вызов `tokenops_run`. Пакет снимается командой `pip uninstall agent-tokenops`, папку скилла `integrate-tokenops` удалите из `.claude/skills/` проекта.
Частые вопросы
Как поставить TokenOps в Claude Code?
Склонируйте репозиторий и в Claude Code вызовите `/integrate-tokenops`. Скилл прочитает проект, найдет вызов модели и предложит правку. В Cursor и других ассистентах вставьте ссылку на SKILL.md с просьбой интегрировать TokenOps.
Нужен ли сервер для работы?
Нет, если агент один. Режим одного процесса работает без сервера и ключей: `python -m tokenops.demo` показывает его на встроенном примере. Сервер AgentPlane нужен только для общего бюджета нескольких процессов.
Чем TokenOps отличается от LLM-шлюза?
Шлюз следит за запросом, TokenOps за прогоном целиком. Он считает траты всех шагов и инструментов одного рабочего процесса и работает рядом со шлюзом.
Что делает пакет при остановке?
Поднимает исключение `Halt`. Его можно пропустить наружу или поймать и вернуть частичный результат. Прогон помечается остановленным, поэтому следующие вызовы из других процессов тоже отклоняются.
Какие политики входят в пакет?
Среди политик в `docs/policies/`: бюджет по стоимости, проверка худшего случая, лимит шагов, лимит времени, лимит вывода инструментов, обрезка вывода, уплотнение контекста, защита от разбегания вывода, контроль прогресса и исправление вызовов инструментов. Свои политики добавляются отдельно.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыПлагин от Microsoft Research и UC Berkeley снижает стоимость сессий Claude Code, Codex и Copilot CLI по опыту прошлых сессий
Скилл экономии токенов для кодовых агентов: короткий код, сжатые ответы и компактная передача данных между агентами
Token Savior индексирует код по символам, хранит память между сессиями и переписывает шумные команды Bash, чтобы агент тратил меньше токенов
Один агент запускает других в фоне: Claude Code, Codex, Copilot CLI, Grok Build и Pi, с выбором модели под каждый этап.
Скилл и хуки, которые удерживают кодового агента в рамках задачи и убирают лишнюю защиту, ненужные контрольные суммы и расползание объема
Paritok — прокси между кодинг-агентом и API модели, который сжимает запросы и сокращает счет за входные токены.
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| TokenOps (эта карточка) | нет | 84 | |
| Flightdeck | нет | 264 | показывает расход и контекст сессии Claude Code на панели, но не ограничивает расходы агента в вашем коде |
| AI Observer | нет | 292 | локальная панель наблюдения за расходом CLI-агентов без остановки прогона |
Коротко о README
Автор обещает сократить лишние траты агентов до 65 процентов. Описание ведет от установки скилла к ручной интеграции в десять строк, затем к таблице задач и сравнению с LLM-шлюзами и Langfuse. Отдельный раздел объясняет разделение ролей: панель управления хранит настройки и общий реестр трат, Chronicle отвечает за трассу, TokenOps принимает решения.
Бейдж для README
Исходный SKILL.md
--- name: integrate-tokenops description: >- Add TokenOps run-aware token governance to a Python agent or multi-agent system: put a spend cap on a whole workflow, halt or steer a run before the next LLM call, and attribute cost per agent. Use when the user wants to cap agent spend, stop a runaway agent, budget a multi-agent run, or mentions TokenOps, tokenops_run, wrap_complete, crossing hooks, the control plane, or CONTROL_PLANE_URL. Works for a single script, a LangChain or LangGraph agent, and FastAPI / A2A multi-agent stacks. --- # Integrate TokenOps Wire a spend cap and in-path enforcement into an agent stack. Pick the smallest tier that covers the user's setup. Do not jump to Tier 3 because the project looks big. Most integrations start and stay at Tier 1. | Tier | Use when | Adds | |---|---|---| | **1. One process** | A script, notebook, or single agent | ~10 lines, no server | | **2. Shared control plane** | Several agent processes must share one budget, or you want the halt and spend visible | A running control plane and `CONTROL_PLANE_URL` | | **3. Instrumented app** | FastAPI / A2A, the trace must flow across HTTP hops | `instrument_app` + Chronicle propagation | Install: `pip install agent-tokenops` (Python 3.10+). It depends on `agent-chronicle>=1.1`. Runnable reference: `python -m tokenops.demo` (Tier 1, ships in the package). --- ## The one thing to understand first TokenOps governs a **run**, not a request. A run is one whole workflow, and it is a [Chronicle](https://github.com/theagentplane/chronicle) **trace**: the only identifier is `trace_id`. Every model call and tool call in the run shares one trace and one ledger, so a research to summarize to review pipeline stays inside a single budget even when each step is a separate process. Four moving parts: - **`tokenops_run(...)`** joins the Chronicle trace (or starts one), builds the run's attribution, loads governance, and hands back a `bound` handle. - **`wrap_complete(...)`** wraps the function that calls the model. Detect,