Агенти
Кожен хост, який налаштовує rtok agents install <host>, для кожного застосунку: що rtok у нього записує і які плагіни rtok після цього досягають цього застосунку.
- Хуки, MCP, Проксі, Плагін — чотири модулі, які може містити встановлення.
yesозначає, що модуль записує звичайне встановлення; прапорець (--proxy,--yes) означає, що модуль записується лише з цим прапорцем;—означає, що хост не має способу його прийняти. README хоста (посилання в стовпці «Хост») пояснює причину кожного—. - MCP — це запис
rtokу власному файлі конфігурації застосунку (D33): встановлення й оновлення завжди його записують, прибирає його лишеremove, і плагін ніколи його не замінює. Запис запускаєrtok mcp --host <id>(id хоста з цієї таблиці), щоб процес MCP знав свій хост;agents updateдодає--hostдо запису, який записав старіший rtok без нього, аremoveдосі прибирає обидві форми. - Плагін — це каталог із
plugins/<host>/, на який rtok створює посилання в хості (Cursor і ZCode: хуки; OpenCode і pi: шлях виклику bash). Там, де застосунок показав би сервер плагіна поруч із записом у конфігурації (Claude Code і Desktop, Cursor, Copilot, Codex, VS Code, ZCode, Kimi, Grok), плагін rtok не постачає MCP-сервера; розширення Gemini зберігає свій, і його перевизначає запис уsettings.json. - Охоплені плагіни rtok перелічує кожен плагін каталогу, що має принаймні один інтерфейс (хук, шлях виклику bash, MCP, проксі), який може нести один із модулів вище. Плагіни
(off)типово вимкнені й потребують[plugins.<id>] enabled = true.
Перевірте, що встановлено на цій машині, командою rtok agents list; rtok doctor повідомляє про ті самі модулі й попереджає, коли конфігурація встановленого хоста не має запису MCP rtok або має застарілий, і називає команду rtok agents install <host> (з --cli або --desktop), яка його запише.
rtok doctor також повідомляє про зламані хуки, дубльовані хуки та дубльовані записи MCP у файлах конфігурації хостів. rtok doctor --fix їх прибирає. У терміналі він відкриває чек-лист усіх елементів, які можна прибрати: цифра вмикає або вимикає елемент, k N залишає натомість копію N дубліката, d показує diff кожного файлу, y просить останнє підтвердження й записує (після резервної копії в _backup/), q виходить. Елементи в спільному файлі проєкту спочатку не позначені, бо зміна дійде до ваших колег. Без термінала --fix виводить diff і нічого не записує; --fix --yes записує типовий вибір без запитань; --only broken-hooks|duplicate-hooks|duplicate-mcp (можна повторювати) обмежує набір, а --agent <host> обмежує одним хостом. Залишена копія дубліката, власні файли плагіна та власні записи rtok ніколи не видаляються, а кожен байт поза видаленими записами лишається як був. Запис rtok, який пише встановлення, завжди лишається збереженою копією. Таке саме ім'я rtok в іншій області та копія плагіна (розширення Gemini) виводяться лише як відомості, бо хост сам об'єднує або перекриває їх (для копії плагіна rtok agents update <host> оновлює плагін); до видалення пропонується лише написана вручну копія під іншим іменем, яка теж запускає rtok mcp, наприклад rtok-mcp. На вкладці Doctor у rtok tui той самий список: f відкриває його, Space перемикає запис, k залишає цю копію, Enter просить підтвердження, y записує; будь-яка інша клавіша скасовує.
Після оновлення rtok команда rtok agents update оновлює кожен встановлений хост; для Claude Code вона вирішує за версією плагіна — див. Версії плагінів і оновлення.
| Host | App | Kind | Hooks | MCP | Proxy | Plugin | rtok plugins reached |
|---|---|---|---|---|---|---|---|
claude | Claude Code | CLI | yes | yes | --proxy | yes | measure, cmd, read, json_tree (off), archive, proxy, inject, guard, memory, graph, toon, compress, docs (off) |
claude | Claude Desktop | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
cursor | Cursor CLI | CLI | yes | yes | — | yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
cursor | Cursor | Desktop | yes | yes | — | yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
codex | Codex | CLI | yes | yes | --proxy | yes | measure, cmd, read, json_tree (off), archive, proxy, inject, guard, memory, graph, toon, compress, docs (off) |
opencode | OpenCode | CLI | — | yes | yes | yes | measure, cmd, read, json_tree (off), archive, proxy, guard, memory, graph, toon, compress, docs (off) |
opencode | OpenCode Desktop | Desktop | — | yes | yes | yes | measure, cmd, read, json_tree (off), archive, proxy, guard, memory, graph, toon, compress, docs (off) |
kilo | Kilo Code CLI | CLI | — | yes | — | yes | measure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off) |
kilo | Kilo Code for VS Code | Desktop | — | yes | — | yes | measure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off) |
pi | pi | CLI | — | — | — | yes | measure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off) |
omp | oh my pi | CLI | — | yes | — | --yes | measure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off) |
zcode | ZCode | Desktop | yes | yes | — | yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
kimi | Kimi Code | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
kimi | Kimi Code Desktop | Desktop | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
grok | Grok Build | CLI | — | yes | — | --yes | cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
vscode | VS Code | Desktop | — | yes | — | --yes | cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
vscode | VS Code - Insiders | Desktop | — | yes | — | --yes | cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
copilot | Copilot CLI | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
copilot | GitHub Copilot | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
commandcode | Command Code CLI | CLI | yes | yes | — | yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
aider | aider | CLI | — | — | --proxy | — | measure, json_tree (off), archive, proxy, toon, compress |
windsurf | Windsurf | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
zed | Zed CLI | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
zed | Zed | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
cline | Cline CLI | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
cline | Cline for VS Code | Desktop | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
gemini | Gemini CLI | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
codewhale | CodeWhale | CLI | yes | yes | — | — | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
mimo | MiMo Code | CLI | — | yes | — | yes | measure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off) |
mimo | MiMo Desktop | Desktop | — | yes | — | yes | measure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off) |
antigravity | Antigravity CLI | CLI | — | — | — | --yes | read, json_tree (off), archive, memory, graph, toon, docs (off) |
antigravity | Antigravity | Desktop | — | — | — | --yes | read, json_tree (off), archive, memory, graph, toon, docs (off) |
devin | Devin CLI | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
devin | Devin | Desktop | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
roo | Roo Code | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
qwen | Qwen Code | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
codebuddy | CodeBuddy Code | CLI | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
codebuddy | WorkBuddy | Desktop | yes | yes | — | --yes | measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off) |
goose | Goose CLI | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
goose | Goose | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
droid | Factory Droid | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
kiro | Kiro CLI | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
kiro | Kiro IDE | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
junie | Junie CLI | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
amp | Amp | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
warp | Warp | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
continue | Continue CLI | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
continue | Continue | Desktop | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
crush | Crush | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
openhands | OpenHands | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
augment | Augment Auggie CLI | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
reasonix | Reasonix | CLI | — | yes | — | — | read, json_tree (off), archive, memory, graph, toon, docs (off) |
Таблицю генерує з коду хостів (src/agents/<host>/mod.rs і каталогу плагінів) тест tests/agents_doc.rs, який падає, коли вона застаріла. Після зміни хоста, додавання нового чи зміни інтерфейсів плагіна згенеруйте її заново:
RTOK_BLESS=1 mise exec -- cargo test --test agents_doc
Стовпець Охоплені плагіни rtok обчислюється з оголошених інтерфейсів: плагін потрапляє до переліку, коли
хост підтримує інтерфейс, на якому відповідає плагін. Це не доводить, що кожну подію, потрібну
плагіну, зареєстровано на цьому хості, — перевірка цього для кожного хоста — це задача T70.7 у plan.md.
Claude Code також отримує хук PreToolUse на Skill (T62.1). Він нічого не робить, доки не задано [plugins.guard] skills = true; тоді SKILL.md, більший за skill_max_bytes, архівується, а виклик відхиляється з картою заголовків файлу і вказівником rtok expand <id>. Skill, оброблений у такий спосіб, не застосовує свого frontmatter, тож skills, що містять allowed-tools, model, context або agent, завжди завантажуються повністю.
Чого досягає плагін хоста, але не досягають власні інтерфейси rtok
rtok має три власні інтерфейси (хук, MCP, проксі), і кожен має жорстку межу:
- Хук PostToolUse не може змінити результат інструмента, лише додати контекст. Саме тому в Claude Code
скорочується лише
Bash— його переписують наrtok runдо виконання. РезультатRead,Grepчи стороннього MCP потрапляє в контекст цілком. - Жива зона
archiveпрацює всерединіrtok proxy. Хост без налаштування base URL ніколи не скорочує старий результат інструмента, хоч би як довго тривала сесія. - Хост без подій хуків не досягає жодного плагіна хуків, тож
injectне має шляху всередину.guardдосягає pi і OpenCode черезrtok guard checkу плагіні, на який створено посилання (T70.5).
Плагін хоста — каталог у plugins/<host>/, на який створює посилання rtok agents install <host>, —
працює всередині процесу хоста й не обмежений цими межами. Там, де API плагінів хоста
багатший за його API хуків, плагін — єдиний шлях до цієї можливості. Задокументовані можливості API,
оглянуті 2026-09-18 (research.md §15):
| Що пропонує API плагінів | pi | OpenCode | Cursor |
|---|---|---|---|
| Замінити результат будь-якого інструмента | tool_result | сьогодні bash; інші інструменти не задокументовано | лише результати MCP |
| Заблокувати виклик із причиною, яку читає модель | tool_call | tool.execute.before | before…Execution |
| Переписати повідомлення, що надсилаються моделі | context | — | — |
| Діяти під час ущільнення | session_before_compact | experimental.session.compacting | preCompact (лише спостереження) |
| Зареєструвати інструмент без MCP | pi.registerTool | — | — |
Два наслідки визначають відкриту роботу в plan.md: на pi вся жива зона archive може працювати
без проксі (T70.2), а результати MCP, які хост запустив сам, можна скорочувати там, де
це дозволяє API плагінів (T70.4), — ні те, ні інше недосяжне з rtok mcp, rtok hook чи rtok proxy.
Плагіни Claude Code і ZCode несуть ті самі події хуків, що й їхні файли налаштувань, без багатшого
API; Codex, Claude Desktop, Windsurf, Zed, Kimi і Copilot не мають каталогу плагінів. Для всіх
них проксі лишається єдиним шляхом.
Кожна з цих задач починається з повторної перевірки API хоста за його поточною документацією: таблиця вище — це огляд документації постачальників, а не вимірювання.
Які хости читає rtok agents usage
rtok agents usage --source logs підсумовує токени з власних файлів сесій кожного хоста (каталоги — це [agents.usage.dirs] у docs/config.md, а research.md, розділ 30, наводить джерело кожного формату).
| Хост | Що читає | Статус |
|---|---|---|
| Claude Code, Codex | транскрипти під [stats] | підтримується |
| OpenCode, Kilo | рядки message у SQLite-файлі хоста, відкритому лише для читання | підтримується |
| Copilot CLI | підсумки за моделями кожної завершеної сесії | підтримується, за сесіями |
| Gemini CLI | tokens кожної відповіді в журналах чату | підтримується |
| pi | usage кожного запису в журналах сесій | підтримується |
| Kimi Code | рядки usage.record у wire-журналі кожного агента | підтримується |
| Droid | нічого: поля токенів у його файлі налаштувань не задокументовані | unsupported |
| Grok | нічого: xAI документує grok usage, який rtok не запускає, а не файли | unsupported |
| ZCode | нічого: записи сесій не задокументовані | unsupported |
| Antigravity | нічого: його локальні дані не задокументовані | unsupported |
Хост unsupported, у чиєму каталозі є файли, названо в розділі skipped звіту, тож відсутній агент видно, а не мовчки враховано як нуль.
Застарілі плагіни
rtok agents outdated перелічує лише хости, де встановлено плагін rtok і його версія
старша за запущений бінарник rtok (пріоритет SemVer; метадані збірки того самого релізу
вважаються актуальними). Хости, що актуальні, не встановлені або новіші, пропускаються. rtok agents update --check виводить той самий звіт.
rtok agents outdated # кожен хост із таблиці вище
rtok agents outdated claude,cursor
rtok agents outdated --json
rtok agents outdated --exit-code # код виходу 10, коли щось застаріло (CI)
Коли кожен встановлений плагін відповідає бінарнику, команда виводить, скільки їх установлено, і
версію rtok; коли не встановлено жодного, вона виводить no rtok plugins installed. Перевірка
лише локальна (квитанція, файл версії, записи хоста) — без мережі й без CLI хоста.
Детальніше в Версії плагінів: Перелік застарілих плагінів.
Сміття
rtok agents junk list показує для rtok і кожного встановленого хоста його теки з розмірами, види сміття всередині них і скільки звільнить rtok agents junk clear. clear — пробний прогін до --yes.
Обидві команди друкують елементи, з яких складено підсумки, щоб точний набір можна було перевірити до видалення. Елемент — один рядок: шлях (посилання в терміналі, що їх підтримує, з ~ для домашньої теки), розмір, коли його востаннє використовували (найновіший файл усередині, наприклад 3 weeks ago (2026-09-09 14:02)), чому це сміття і, якщо елемент не буде очищено, чому (review kind: add --include review, agent running).
--items N|allзадає, скільки елементів показувати для кожного виду (за замовчуванням 10, потім+N more (розмір));--items 0друкує лише підсумки.--sort size|last-used|pathвпорядковує елементи всередині виду: спершу найбільші (за замовчуванням), спершу найдавніше невикористані або за шляхом. Елемент із нечитабельним часом вважається свіжим і йде останнім. Самі агенти завжди йдуть за місцем, яке звільнитьclear, від більшого до меншого.--min-size РОЗМІРховає дрібніші елементи. Уclearвін ще й звужує план, тож видаляється рівно те, що показав пробний прогін.--jsonзавжди містить усі елементи:path,size_bytes,last_used(секунди Unix абоnull),reason,will_clearі, якщо елемент не очищується,skip_reason.
rtok doctor додає рядок junk із місцем, яке clear звільнить за замовчуванням, і вказує на rtok agents junk list, якщо його понад гігабайт. Сторінка Hosts у rtok web і rtok tui показує той самий список.
На сторінці Hosts у rtok web список виглядає як картка junk: за кожним агентом і видом — кількість елементів і розміри, а також рядки Freed by clear і Freed with --include review. Кнопка Clear safe junk запускає пробний прогін clear за safe-видами всіх агентів (ніколи не за видами review, explicit і never і ніколи не в кошик), показує, що буде видалено, і нічого не видаляє, доки ви не натиснете Confirm. Видаляються лише показані вам елементи, і кожен перевіряється знову перед видаленням, тож файли працюючого агента, змінена тека, симлінк і захищений файл залишаються й потрапляють у звіт. На вкладці Hosts у rtok tui клавіша c показує той самий пробний прогін, а y видаляє перелічене; будь-яка інша клавіша відмовляється й залишає всі файли як були. Результат закінчується рядком Freed X of Y planned.