Перейти к содержимому

Диагностика выбранного контекста

Требуется 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"}}}}
JSON
cat > "$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"}
]
}
JSON
chmod 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 --help
BEE_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 --json
BEE_HOME="$demo_dir/profile" bee context audit --from "$demo_dir/rules.md" --against "$demo_dir/comparison.md" --root "$demo_dir" --json

Markdown-файлы одинаковы, поэтому audit выдаёт полный отчёт с кандидатами и код 1. Для audit код 0 означает полный результат без кандидатов, 4 — неверное использование, 5 — неполный результат. Прежде чем считать отчёт исчерпывающим, проверьте omittedFindings и sourceInventory.omittedSections. Кандидат на дублирование — основание для проверки, не разрешение удалить правило. См. context audit и ограничения.

Для счётчиков, сообщённых провайдером, используйте bee budget --measured с явно выбранным поддерживаемым журналом сессии; оценки doctor их не заменяют. Разделяйте потоки response/history и отсутствующие свидетельства. Этот набор возможностей не включает предварительный просмотр, импорт, применение или восстановление правил. Он не изменяет правила автоматически и не запускает агентов, хуки или объявленные инструменты.