Диагностика выбранного контекста
Требуется Bee 1.0.0-beta.16 или новее с командой context doctor. Проверьте поддержку командой bee context doctor --help.
Агент может проверить размер и доступность выбранных правил и файлов контекста до добавления их содержимого в запрос. Doctor также считает поддерживаемые объявления инструментов и хуков, не запуская их. Для поиска кандидатов на дублирование Markdown используйте отдельную команду context audit. Ни одна из команд не изменяет правила и не решает, какие обязательства можно удалить.
Попробуйте временный пример
Заголовок раздела «Попробуйте временный пример»Выполните в Bash или zsh. Подготовка создаёт синтетические файлы вне рабочего дерева и пустой частный профиль Bee. pwd -P определяет физический каталог: в macOS путь через /tmp или /var может содержать символическую ссылку, которую чтение отклоняет. Пример команды в mcp.json намеренно вымышленный.
demo_dir="$(mktemp -d "${TMPDIR:-/tmp}/bee-doctor-demo.XXXXXX")"demo_dir="$(cd "$demo_dir" && pwd -P)"mkdir "$demo_dir/profile"printf '# Review 🐝\nRead selected files, keep required checks, and ask for review before changing any shared rule.\n' > "$demo_dir/rules.md"cp "$demo_dir/rules.md" "$demo_dir/comparison.md"cat > "$demo_dir/mcp.json" <<'JSON'{"mcpServers":{"example":{"command":"bee-docs-example-only","args":["DEMO"],"env":{"EXAMPLE_MODE":"demo"}}}}JSONcat > "$demo_dir/manifest.json" <<JSON{ "schemaVersion": 1, "snapshotId": "doctor-demo", "rootPath": "$demo_dir", "inputs": [ {"id": "rules", "path": "rules.md", "dialect": "markdown-atx-v1"}, {"id": "tools", "path": "mcp.json", "dialect": "mcp-servers-json-v1"} ]}JSONchmod 444 "$demo_dir/rules.md" "$demo_dir/comparison.md" "$demo_dir/mcp.json" "$demo_dir/manifest.json"printf '%s\n' "$demo_dir"Подготовка записывает только демонстрационные файлы. Следующие команды Bee читают их; права файлов разрешают только чтение. Манифест doctor не выбирает comparison.md.
BEE_HOME="$demo_dir/profile" bee context doctor --helpBEE_HOME="$demo_dir/profile" bee context doctor --manifest "$demo_dir/manifest.json" --json --budget 16384Обе команды завершаются с кодом 0. Отчёт содержит строку read для rules с одним разделом и строку declared для tools с одним MCP-сервером и одной записью окружения. Markdown-файл содержит 109 байт UTF-8, 107 кодовые единицы UTF-16 и оценку 27 токенов. Эмодзи пчелы — один видимый символ, но занимает четыре байта UTF-8 и две единицы UTF-16. Содержимое файлов, заголовки, строки команд и значения окружения в отчёт не попадают.
Выберите источник явно
Заголовок раздела «Выберите источник явно»--manifest принимает абсолютный путь к обычному JSON-файлу в UTF-8. rootPath — абсолютный физический каталог; path каждого входа задаётся относительно него. У doctor нет параметра --root. Команда не обнаруживает дополнительные файлы, не открывает новые пути через dependsOn и не ищет частные журналы. Исключённый из списка файл остаётся неизмеренным.
Манифест требует schemaVersion: 1, snapshotId и 1–64 входа с уникальными ID и путями. Необязательный dependsOn ссылается на выбранные ID и не должен создавать циклы; порядок загрузки он не доказывает. Необязательный source со строгой схемой описывает происхождение, заявленное вызывающей стороной. sourceBinding: caller_declared_not_verified_against_files не является проверенным источником или квитанцией доставки; не добавляйте source, если нужного объявления нет.
| Диалект | Что наблюдается |
|---|---|
markdown-atx-v1 |
Размеры .md и число физических разделов ATX; заголовки внутри блоков кода не создают разделы |
mcp-servers-json-v1 |
Объект .json, содержащий только mcpServers; поддерживаемые объявления команд/URL, число записей окружения и заголовков, включая отключённые объявления |
claude-hooks-json-v1 |
Объект .json, содержащий только hooks; командные хуки для SessionStart, UserPromptSubmit и PreToolUse |
Это ограниченные схемы, а не универсальное чтение настроек любой среды. Неизвестный диалект даёт unsupported_dialect, неподдерживаемая форма конфигурации — unsupported_config. Ошибочный JSON, повторяющиеся после декодирования имена свойств и некорректный Unicode отклоняются. Выбирайте подходящие файлы инструкций: распространённые имена файлов учётных данных запрещены, но doctor не является универсальным детектором секретов. ID и выбранные пути видны в выводе.
Прочитайте результаты до действий
Заголовок раздела «Прочитайте результаты до действий»Проверьте status и errorCode каждого входа. Для отсутствующего или отклонённого файла единицы неизвестны: null, а не ноль. Доступные строки сохраняются, но если хотя бы одна выбранная строка недоступна, declaredDiskTotals равен null. Пустой выбор недопустим. Частичные наблюдения не означают полную инвентаризацию.
configuration.inclusion: declared_not_loaded считает объявления; это не доказывает выполнение или доставку модели. Даже отдельно доказанная доставка не подтверждает соблюдение правил моделью. utf16-ceil-div4 версии 1 оценивает каждый файл как ceil(единицы UTF-16 / 4) и складывает эти оценки. Это не фактическое потребление провайдера, счёт или доказанная экономия. Неатрибутированный остаток потребления неизвестен; этот CLI не прикрепляет журнал использования.
Ограничьте вывод и обработайте коды выхода
Заголовок раздела «Ограничьте вывод и обработайте коды выхода»Вывод — один JSON-документ с завершающим переводом строки, даже без --json. --budget принимает 512–262144 байта UTF-8, включая последний перевод строки; значение по умолчанию — 262144. Считайте закодированные байты, а не видимые символы или единицы UTF-16. Это ограничение размера вывода, не жёсткий лимит токенов.
BEE_HOME="$demo_dir/profile" bee context doctor --manifest "$demo_dir/manifest.json" --budget 512Для этого примера код 5 сопровождается errorCode: output_limit. Doctor заменяет слишком большой отчёт небольшим полным документом ошибки; строки не исключаются молча, JSON не обрезается, параметра --limit нет. Увеличьте бюджет в допустимом диапазоне или явно выберите меньше входов. Ошибка записи в поток передаётся вызывающей стороне без повторной публикации JSON.
| Код | Значение и следующий шаг |
|---|---|
0 |
Справка или полные наблюдения; проверьте единицы и ограничения |
4 |
Ошибка использования; проверьте манифест, точные флаги, повторы и диапазон бюджета |
5 |
Неверные, отсутствующие, неподдерживаемые или отклонённые данные, отмена либо лимит вывода; прочитайте код ошибки и исправьте выбор |
Команда должна начинаться точно с context doctor. Флаги не повторяются; --json не принимает значение. Начальный флаг или -- не преобразуется в маршрут doctor.
Ограничения чтения: 64 входа, 262144 байта на файл, суммарно 1048576 выбранных байт, 64 раздела на Markdown-файл и глубина JSON 16. Переход к родительскому каталогу, символические ссылки/reparse points, hardlinks и необычные типы файлов отклоняются. Удерживаемые дескрипторы и повторные проверки обнаруживают изменения, однако checked_unchanged_not_atomic не обещает атомарный снимок.
Срок 10 секунд использует кооперативную отмену: она проверяется при чтении, разборе и верификации. Отмена не может принудительно прервать заблокированный синхронный вызов файловой системы и не ограничивает заблокированный поток вывода. Выход процесса ровно за десять секунд не гарантируется.
Затем исследуйте кандидатов на дублирование
Заголовок раздела «Затем исследуйте кандидатов на дублирование»BEE_HOME="$demo_dir/profile" bee context audit --help --jsonBEE_HOME="$demo_dir/profile" bee context audit --from "$demo_dir/rules.md" --against "$demo_dir/comparison.md" --root "$demo_dir" --jsonMarkdown-файлы одинаковы, поэтому audit выдаёт полный отчёт с кандидатами и код 1. Для audit код 0 означает полный результат без кандидатов, 4 — неверное использование, 5 — неполный результат. Прежде чем считать отчёт исчерпывающим, проверьте omittedFindings и sourceInventory.omittedSections. Кандидат на дублирование — основание для проверки, не разрешение удалить правило. См. context audit и ограничения.
Для счётчиков, сообщённых провайдером, используйте bee budget --measured с явно выбранным поддерживаемым журналом сессии; оценки doctor их не заменяют. Разделяйте потоки response/history и отсутствующие свидетельства. Этот набор возможностей не включает предварительный просмотр, импорт, применение или восстановление правил. Он не изменяет правила автоматически и не запускает агентов, хуки или объявленные инструменты.