Агенти

From docs/uk/agents.md at cc732c3 View on GitHub

Кожен хост, який налаштовує 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 вона вирішує за версією плагіна — див. Версії плагінів і оновлення.

HostAppKindHooksMCPProxyPluginrtok plugins reached
claudeClaude CodeCLIyesyes--proxyyesmeasure, cmd, read, json_tree (off), archive, proxy, inject, guard, memory, graph, toon, compress, docs (off)
claudeClaude DesktopDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
cursorCursor CLICLIyesyes—yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
cursorCursorDesktopyesyes—yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
codexCodexCLIyesyes--proxyyesmeasure, cmd, read, json_tree (off), archive, proxy, inject, guard, memory, graph, toon, compress, docs (off)
opencodeOpenCodeCLI—yesyesyesmeasure, cmd, read, json_tree (off), archive, proxy, guard, memory, graph, toon, compress, docs (off)
opencodeOpenCode DesktopDesktop—yesyesyesmeasure, cmd, read, json_tree (off), archive, proxy, guard, memory, graph, toon, compress, docs (off)
kiloKilo Code CLICLI—yes—yesmeasure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off)
kiloKilo Code for VS CodeDesktop—yes—yesmeasure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off)
pipiCLI———yesmeasure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off)
ompoh my piCLI—yes—--yesmeasure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off)
zcodeZCodeDesktopyesyes—yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
kimiKimi CodeCLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
kimiKimi Code DesktopDesktopyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
grokGrok BuildCLI—yes—--yescmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
vscodeVS CodeDesktop—yes—--yescmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
vscodeVS Code - InsidersDesktop—yes—--yescmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
copilotCopilot CLICLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
copilotGitHub CopilotDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
commandcodeCommand Code CLICLIyesyes—yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
aideraiderCLI——--proxy—measure, json_tree (off), archive, proxy, toon, compress
windsurfWindsurfDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
zedZed CLICLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
zedZedDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
clineCline CLICLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
clineCline for VS CodeDesktopyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
geminiGemini CLICLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
codewhaleCodeWhaleCLIyesyes——measure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
mimoMiMo CodeCLI—yes—yesmeasure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off)
mimoMiMo DesktopDesktop—yes—yesmeasure, cmd, read, json_tree (off), archive, guard, memory, graph, toon, docs (off)
antigravityAntigravity CLICLI———--yesread, json_tree (off), archive, memory, graph, toon, docs (off)
antigravityAntigravityDesktop———--yesread, json_tree (off), archive, memory, graph, toon, docs (off)
devinDevin CLICLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
devinDevinDesktopyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
rooRoo CodeDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
qwenQwen CodeCLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
codebuddyCodeBuddy CodeCLIyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
codebuddyWorkBuddyDesktopyesyes—--yesmeasure, cmd, read, json_tree (off), archive, inject, guard, memory, graph, toon, docs (off)
gooseGoose CLICLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
gooseGooseDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
droidFactory DroidCLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
kiroKiro CLICLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
kiroKiro IDEDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
junieJunie CLICLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
ampAmpCLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
warpWarpDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
continueContinue CLICLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
continueContinueDesktop—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
crushCrushCLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
openhandsOpenHandsCLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
augmentAugment Auggie CLICLI—yes——read, json_tree (off), archive, memory, graph, toon, docs (off)
reasonixReasonixCLI—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 плагінівpiOpenCodeCursor
Замінити результат будь-якого інструментаtool_resultсьогодні bash; інші інструменти не задокументованолише результати MCP
Заблокувати виклик із причиною, яку читає модельtool_calltool.execute.beforebefore…Execution
Переписати повідомлення, що надсилаються моделіcontext——
Діяти під час ущільненняsession_before_compactexperimental.session.compactingpreCompact (лише спостереження)
Зареєструвати інструмент без MCPpi.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 CLItokens кожної відповіді в журналах чатупідтримується
piusage кожного запису в журналах сесійпідтримується
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.