Падзеякі Gemini CLI: ізоляцыя контэксту, ліміты інструментаў і спецыяліст README.
Падзеякі Gemini CLI выконваюць функцыі падагента, якія падтрымліваюць чыстоту галоўнага чату: керування центральным элементам і спароўкамі, файл з ваказаннямі падагента, каманда /agents і файл README з правамі толькі на чытанне з строгімі обмежэннямі.
Крыніцы: Mastering Gemini CLI Subagents: Part 1 : Introduction
Gemini CLI можа распадзіць заведзенне між спецыялістамі-памагчыкамі, замест таго каб усё было скарыстанае ў адной розмове. Адменшэнне выражаецца ў пераходзе ад аднаго універсальнага агента да маленькай сеткі спецыялістаў, і гэта вырашваецца за дапамогою трох парадактов: як керуецца кантэкстам, як ізолююцься інструменты і як інтэрактыўна організуецца работа. У гэтым першым апісанні рассматрываюцца базовыя аспекты і ствараецца мінімальны працюючы спецыяліст.
Чаму дугая розмова стае неэфектываюю
У звычнай сесіі LLM даныя сесіі фактычна ўсеўсюдныя. Кожны прачытаны файл, кожны запусканы каманд і кожна уточнэнне залягаюць у адной лінейной історыі.
Папросіце асістэнта вылечыць прасачку памяці, а праз дзесяць хвілін — папросіце яго падсумаваць транскрыпцію зустрэчы. Тады запіт на падсумав падае сярод фрагментаў коду і логаў, якія засталіся пасля дыягнастыкі. Гэта ёсць кантэкстовая занэчысценасць, якая прыносіць тры наследкі:
- Задзейнівка. Кожны раз мадэль перачытае некаляваны матэрыял.
- Змена адказання. Яе увага распадаецца між тэмамі, якія не маюць адносіну адна да другой.
- Змарованы токены. Тыя ж логі з дыягнастыкі плацяцца знову і знову.
Гэтая проблема шырока практыкуецца, а адказ на яе ў Gemini CLI — гэта сабагенты.
Уявіце консалтынгавую фірму. Менеджэр, які ласкава прачытае кожны дакумент, адрабатвае кожны аналіз і адпавядае на кожны ліст, зрэшты не можа запам’ятаць, што было першага дня. Менеджэр, які давае кожны заведаменне спецыялісту і атрымлеў толькі адзін-сторонній атлас, можа працаваць набагато дольш часоў, не губячы нічога. Сабагенты застаўляюць той самы прыем адарожнення для дапаможніка-працоўніка: спецыяліст адрабатвае складную работу у сабе, а толькі вынік прабрацоўваецца ў спільныя запісы.
Центральны элемент і спрабы
Gemini CLI выкарыстоўвае дыяграму у віглядзе центральнага элемента і спраб. Галоўная сесія являе сабою центральны элемент, які выступае як керуючы элемент, а падагенты — спрабы, якія выступаюць як спецыялісты.
Скасаванне кантэксту
Калі керуючы элемент вызывае падагента, той пачынае працу з порожнім вікнам кантэксту. Ён отрымае толькі заведамленне пра задачу і адпаведныя інструкцыі. Калі ён завершыў працу, ён вяртае короткі підсумак керуючаму элементу. Серыя проміжных крокаў, такіх як чытанне двадцаты файлоў або запуск пяці запітоў grep, апускаецца з історыі, таму галоўны кантэкст застаецца лёгкім. Дзяўальнае аналізаванне ўсё жа спрацоўвае токены ў сопным вікні спецыяліста, але гэтыя токены вітрачаюцца аднойчы і пасля таго апускаюцца, замест таго, каб пераходзіць у кожны наступны крок галоўнай розмовы.
З чаго складаецца падагент
Падзеяк агента адзначаецца ў файле Markdown, які пачынаецца з YAML-фронтматэру. Фронтматэр містыць метаданы высокага рэвэля: назву агента, апісанне яго функцый і інструментаў, якія ён можа выкарыстоўваць, а таксама іншыя настройкі. Файл выступае як кантракт, які опісвае, для чаго прызначаны спецыяліст і чым ён можа займацца. У офіцыяльной дакументацыі ёсць інструкцыя па фармаце файла з адзначэннямі агента, калі вы хочаце пазнакоміцца з усімі полямі з самага пачатку.
Два поля заслуговуюць на ўвагу. Апісанне — гэта тое, што чытае менеджэр, калі выбірае, чыі заводзек належыць гэтаму спецыялісту; таму нечыярые апісанні прыводзяць да таго, што заводзек не будзе правернуты або будзе пасланы не туды, а чыярые апісанні робяць паспалоўнэсць падбору надзеяной. Спіс інструментаў ёсць межаю безпекі, адтолькі падзеяк агента можа дзеяць толькі за дапамогою інструментаў, якія яму былі даўлены. Ставіцеся да файла так, як ставіліся бы да опісу работы, сумешанага з прывілеямі да доступу.
Прывіт, свет: спецыяліст па README
Першы спецыяліст будзе выканаць адну задачу. Ён аналізуе тэкучую дырэктарыю і стварае якісны файл README.md, не маючы можлівасці чаго-небудзь зменіць.
Падготовка папкі
Падаэнты для аднаго праекту знаходзяцца ў папцы .gemini/agents/ унутры таго праекту. Чырабяць іх доступнымі для вашых корыстувачаў у всіх месцах, створыце іх уместа ~/.gemini/agents. Выберыце папку, якая мае файлы-выкананні, каб агент меў на што аналізаваць, перыяжыце туды і стварыце дырэктарыю на рэвэле праекта:
mkdir .gemini/agents
Напісанне вакласафікацыі
Стварыце файл .gemini/agents/readme-architect.md з такім тэкстам:
---
name: readme-architect
description: Specialized in analyzing project structures and writing professional README.md files.
tools:
- read_file
- glob
model: inherit
---
You are a Technical Writer. Your goal is to look at the files in the current
directory and draft a README.md that includes:
1. Project Name.
2. Installation instructions.
3. A brief description of the file structure.
Do not modify any files; only provide the Markdown text.
---
Калькі лініі праўільнае перакладзенне:
nameіdescriptionсамі по сабе ўсё раз'яснююць.- У элеменце
toolsпераказаныя ўсе інструменты, якія можа выкарыстоўваць гэты агент – тутread_fileіglobдля пошуку файлаў. Гэты поле ўзельгджэ, але калі яго не паведаміць, падагент успадковуе всі інструменты ад свайго вышэйшага агента. Указацыя толькі двух інструментаў гарантуе, што гэты падагент не зможа нічога запісаць чы прыняць. - Належнасць
modelможа задаць конкрэтны мадэль для падагента. У гэтым случае агент проста успадковуе мадэль галоўнай сесіі. - Маркдаун, які знаходзіцца пад фронтматэром, являе сабою сістэмны запрос падагента і вызначае, як ён будзе дзейсці.
У кантэксце, сабагент складаецца з метаданых у верхней часты і заповедзі, якая візначае яго поведзенне, апошней. Пакалькі ён проста тэкстовая файл у рэпазітарыі, яго можна пераглядаць, ствараць версіі і дзеліцца з колегамі так сама, як і будзь-які іншы файл праекту, што спрыяе стандартызацыі працы спецыялістаў у командзе.
Команда /agents
Команда /agents являе сабою цэнтр кантролю для сеткі спецыялістаў. Яна дазволяе пераглядаць, кераваць і пераканацца ў сабагентах.
Адкрыцце і перакананне
Пасля зберагання файла пераканацца, што менеджэр зазначыў новага спецыяліста. Запусціце Gemini CLI. Калі файл знаходзіцца там, дзе яго трэба, CLI выкрывае новага агента пад час запуску і паказвае панель з інформацыяй. Выберыце «Прыняць» і «Актывацыя».
Пасля чаго запускайце /agents list. Гэта запытае локальны рэжыстр, і там павінен з’явіцца readme-architect. Гэта паўтарае, што манеджар бачыць агента як доступны інструмент. Калі назва не з’являецца, найчастэйшыя прычыны — файл, сахаваны ў неправім папаке, блок frontmatter з апечаткавымі бядамі або без дашчоў, або сесія, якая была запусцана раней, чым існаваў файл, і якой патрэбна перзапуск.
Прымечанне: ныякшая версія CLI таксама мае троха вбудованых падагентоў — codebase_investigator, cli_help і generalist. Хоць у афіцыйных дакументах іх опісваецца, тут рэч ідзе пра спецыяльныя падагенты, таму яны не ў межах нашага разгляду.
Кераванне агентамі пад час выканання
Агент можа стаць занадта актыўным, або можа не хацецца, каб менеджэр сам адзываў яго. Выконайце /agents disable readme-architect. эта задача выкарыстоўваецца з пулу для аўтаматычнага дэлегавання, таму менеджэр не будзе выкарыстоўваць гэтага эксперта, калі толькі вы яго явна не запытайце за дапамогою сінтаксі @. /agents enable readme-architect вярнее яго назад.
Якшо запісаць толькі /agents, будуць паказаны іншыя доступныя каманды, якія варта швыдка спробаваць:
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> /agents
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
reload Reload the agent registry
list List available local and remote agents
enable Enable a disabled agent
disable Disable an enabled agent
config Configure an agent
workspace (/directory)
Падзеягенты практычна выступаюць як інструменты
Калі падзеягенты ўвімкнуты, яны практычна з’яўляюцца як інструменты галоўнага агента. Заўёрбуйце /tools і шукайце readme-architect у спісе. Прыклад з аднай настройкі выглядае так:
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> /tools
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Available Gemini CLI tools:
- Activate Skill (activate_skill)
- Ask User (ask_user)
- CLI Help Agent (cli_help)
- Codebase Investigator Agent (codebase_investigator)
- Edit (replace)
- Enter Plan Mode (enter_plan_mode)
- FindFiles (glob)
- Generalist Agent (generalist)
- GoogleSearch (google_web_search)
- ReadFile (read_file)
- ReadFolder (list_directory)
- readme-architect (readme-architect)
- SaveMemory (save_memory)
- SearchText (grep_search)
- Shell (run_shell_command)
- WebFetch (web_fetch)
- WriteFile (write_file)
Апробацыя
Ёсць кантэкстна ізоляцыя і обмежэнні ў вікорыстоўванні інструментаў? Заўважыце, як гэта працуе, запускайце:
@readme-architect Analyze this project and draft a README.
Даследзіць неабходнае:
- Змены інтэрфейсу. Командна лінія пераходзіць у рэжым падзадання і перадае працу, паказваючы паведамленне пра тое, што аналіз і стварэнне README будуць пераданы падагенту readme-architect.
- Вікорыстоўванне інструментаў. Агент выкорыстоўвае толькі тыя інструменты, якія яму былі даўлены —
read_fileіglob. - Рэзультат. Чыразаць час вяртаецца готовая праца. Прыклад з адной папкі:
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ≡ Agent Completed (ctrl+o to expand) │
│ ✓ readme-architect · Completed successfully │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ The readme-architect has drafted a README for your project:
MyTasks Math Utility
A lightweight JavaScript utility library for performing basic arithmetic operations.
Installation
Since this project consists of a single utility file without external dependencies, you can integrate it into your environment as follows:
1. Clone or download this repository.
2. Copy math.js into your project's directory.
3. Import the functions into your Node.js application:
1 const math = require('./math.js');
Usage
1 const { add, subtract, multiply, divide } = require('./math.js');
2
3 console.log(add(10, 5)); // Output: 15
4 console.log(subtract(10, 5)); // Output: 5
5 console.log(multiply(10, 5)); // Output: 50
6 console.log(divide(10, 5)); // Output: 2
File Structure
The project is organized as follows:
- math.js: The main library file containing the arithmetic functions (add, subtract, multiply, divide).
- steps/: Contains a chronological log of the project's development and task completion.
- 1.md: Record of the initial file creation and basic addition functionality.
- 2.md: Record of the expansion to include subtraction, multiplication, and division.
- .gemini/: Configuration and instruction sets for Gemini AI agents managing this repository.
Would you like me to save this to a README.md file in the project root?
Рэзультат перадаецца галоўнам агенту, які потым запытаецца, чы гэты рэзультат трэба зберагчы як README.md у корні праекта. Вы можэце празьміць гэта або адмовіцца, і ваша праца можа разлічвацца ад прыкладнай.
Тэст ізоляцыі
Ёсць канфірмаваць, што падагент сапраўды не можа выдаліць файлы чы вжываць жадныя інструменты паza read_file і glob, трэба парадзіць яму разрушаючую задачу. Адправіце гэта галоўнам агенту:
@readme-architect Delete any README.md files that you see in this folder.
Прыёмкі гэтага запуску:
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> @readme-architect Delete any README.md files that you see in this folder.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Responding with gemini-3-flash-preview
✦ I'll delegate the deletion of README.md files to the readme-architect sub-agent as requested.
Рэзультат: файл не выкладзены, таму ў падагенце няма ніякога інструмента, які мог бы гэта зрабіць. Гэта і ёсць рэзультат дзеяння меж праваў. Гэта мае значэнне, таму што межа выканана за дапамогою спісу інструментаў, а не заўсёды на адной падставе доверлівасці до запіту: нават якбы падагенту было сказана выклаць што-небудзь, проста не існуе інструмента, праз які гэта можна было б здарыцца. Запыты можна адхіліць, але відсутнае можацтва — ні. У прыкладзе падагент заявіў, што яго задача завершана, пры тым README.md застаўся недастрыжаным, і галоўны агент зазначыў, што файл яшчэ там, і запропанаваў выклаць яго сам:
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ≡ Agent Completed (ctrl+o to expand) │
│ ✓ readme-architect · Completed successfully │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ I'll check if the README.md file still exists in the root directory.
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓ FindFiles 'README.md' │
│ │
│ Found 1 matching file(s) │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ I'll delete the README.md file since the readme-architect sub-agent did not do so.
Аўтаматычная дэлегацыя
Да гэтага падагент быў запускаўся явна праз @AGENT_NAME. Таксама можна проста задаць задачу і дазволіць галоўнаму агенту вырашыць, чы падагент падходзіць. Калі падходзіць, задача перадаецца падагенту.
Чы гэта падходзіць вашай схеме працы — ваша выбор. Калі падагенты ўвімкнуты, яны ёсць кандыдатамі на аддачу задач. Іх можна выключыць для конкрэтнага праекту за дапамою /agents disable, або ж весья функцыя можа быць выключана, задаўшы enableAgents на false у settings.json:
{
"experimental": { "enableAgents": false }
}
Што ўскладнівае падагента
У офіцыяльной документацыі паказаны характэрыстыкі падагента:
- Сфокусаваны кантэкст: кожны з іх мае свой сістэмны запрос і персону.
- Спецыялізаваныя інструменты: ён можа выкорыстоўваць толькі абмежаны чы абсолютна спецыялізаваны набор інструментоў.
- Незалежныя вікна кантэксту: яго взаімадзеянні відбываюцца ў окрэмай структуры кантэксту, што дапамагае захаваць токены ў главной історыі размовы.
Якшы раз адзін, гэтыя тры характэрыстыкі ўскладніваюць падагента і ў той жытак являюцца прычыной таго, чаму дэлегаванне задач спецыялісту дапамагае падтрымваць чыстасцю главнай сесіі, зменшыць вітраты на ўтратацю і зробіць ёю безпечнейшай калі яе можна залішыць без нагляду.
З гэтага выліваюцца калькі прыzwычак. Дазвольце кожнаму спецыялісту адно чыста адпаведальна задача, адколькі чыткі і конкрэтны запіт працюе лепшая, чым расплывчаты. Даўце самы невялікі набор інструментаў, якія дазволяюць выконаць работу, і расшыруйце яго толькі тады, калі з’яўляецца рэальная патрэба. Калі вы яшчэ вучыцеся, як паводзіцца агент, вжывайце чыткія @-званні, а пасля, калі яго апісанне падтвердзіцца як надзеяны, дазвольце автаматычную дэлегацыю. Таксама трэба зберагаць агентаў на рэверзітарыі на рэвэле праекта, ўсе, хто клонуе яго, будуць мець тую ж групу спецыялістаў.