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

Выбранный контекст и явные провайдеры

Эти функции появились в Bee 1.1.0 и доступны в текущей версии. Проверьте установленный выпуск через bee --version. Обработка выбранного ввода сама по себе не доказывает понимания исходников, выполнения тестов или снижения стоимости модели.

context packet читает явно выбранные файлы и строки одного checkout. Он не вызывает модель, не запускает базу данных и не обновляет граф. Выберите диапазон для задачи; при необходимости сначала найдите символ в графе кода. Подставьте реальные пути и строки в selection.json:

{
"selections": [
{"id":"rules","path":"AGENTS.md","required":true},
{"id":"source","path":"src/Example.cs","representation":"body",
"startLine":10,"endLine":30,"dependsOn":["rules"]}
]
}
Окно терминала
bee context packet --root /absolute/checkout --manifest selection.json --budget 8192

--budget покрывает весь UTF-8 JSON-пакет с последним переводом строки. Обязательные источники и их зависимости должны уместиться; слишком малый бюджет даёт код 5 и объяснение в stderr. Проверяйте complete, omitted, хеши исходников и диапазоны. --cache-dir DIR создаёт необязательный частный локальный кэш; хеши исходников проверяются при каждом запросе. Попадание в кэш не доказывает экономию токенов провайдера. Доступный через bee mcp serve инструмент bee_context_packet принимает тот же manifestJson; бюджет инструмента покрывает весь сериализованный ответ.

Сначала сохраните stdout/stderr исходной команды и её реальный код выхода. output reduce не перезапускает тесты, а читает относительные пути из capture.json:

{"argv":["dotnet","test"],"cwd":"/absolute/checkout","exitCode":1,
"stdoutPath":"test.stdout","stderrPath":"test.stderr","captureComplete":true}
Окно терминала
bee output reduce --manifest capture.json --store /private/raw-output --budget 8192 > reduced.json
bee output recover --packet reduced.json --out /private/recovered-run

Общий предел исходного захвата — 8 MiB. Если он обрезан, укажите captureComplete: false. Сжатая сводка предпочитает строки диагностики, сообщает пропуски и сохраняет два исходных потока в частном артефакте с хешами. Успешное сокращение не делает исходную команду успешной. recover проверяет хеши и записывает точные stdout.bin и stderr.bin в новый каталог; существующая цель отклоняется. Неудачная запись может оставить неполный каталог; доставку подтверждает только успешный receipt.

Профиль явно задаёт протокол, модель, аутентификацию, рабочий каталог и исполняемый файл native-клиента. Bee не переключает модель или способ входа молча. Пример локальной Ollama:

{"profiles":[{"id":"local-model","provider":"ollama","protocol":"OllamaChat",
"model":"your-installed-model","authMode":"None",
"workingDirectory":"/absolute/checkout","endpoint":"http://localhost:11434"}],
"aliases":{"local":"local-model"}}
Окно терминала
bee providers inspect --profiles profiles.json --profile local
bee providers run --profiles profiles.json --profile local --context selection.json --prompt-file question.txt --budget 8192
bee providers run --profiles profiles.json --profile local --context selection.json --prompt-file question.txt --stream --json

inspect проверяет лишь форму профиля; runnable: not_verified не доказывает доступ к модели. run готовит локальный пакет и один раз вызывает выбранного провайдера; при отсутствии обязательного контекста вызова нет. Receipt разделяет происхождение исходников и использование. --session-out NEW_FILE сохраняет частное состояние беседы; --session FILE продолжает при той же привязке профиля. После ошибки сохранения модельный вызов не повторяется. --budget ограничивает входной пакет, не ответ или receipt.

Для потокового ответа добавьте --stream, в скриптах также --json. JSON-поток содержит InvocationStarted, TextDelta, InvocationFinished; выводите каждый фрагмент один раз и проверяйте последний receipt и код выхода. Ctrl+C не гарантирует прекращение удалённой тарификации. Ключ API не записывают в профиль или argv: secretSource ссылается на переменную окружения или существующий vault; endpoint API требует HTTPS либо явный loopback. Native-аккаунт использует NativeAccount и явный nativeHome; проверка профиля не доказывает вход.

Поддерживаются API-протоколы OpenAiResponses, OpenAiChatCompletions, AnthropicMessages, GeminiGenerateContent, GeminiInteractions, AntigravityInteractions и OllamaChat. Потоковый API работает для OpenAI, Anthropic, Gemini и Ollama. Native-протоколы: Codex, ClaudeCode, GeminiCli, AntigravityCli; первые три поддерживают поток. Для Antigravity поток возвращает Unsupported. Поток Codex использует интерфейс app-server установленного клиента и требует NativeAccount; неподдерживаемые native-опции отклоняются до вызова.

Используйте authMode: "ApiKey" вместе с secretSource: {"kind":"environment","name":"VARIABLE"} либо существующей ссылкой vault. Предел maxInputBytes профиля по умолчанию 1 MiB, максимум 16 MiB; он также покрывает весь сериализованный файл продолжения сессии. savedPath: null означает, что файл не сохранён. Файл сессии содержит данные беседы и должен быть частным. Для стандартного аккаунта native Claude Code явно выберите nativeHomeMode: "Default" и настоящий стандартный путь ~/.claude; Explicit использует отдельное пространство конфигурации. Просмотр профиля не доказывает вход или право на модель.

worker summarize делает отдельный вызов модели; сводка теряет детали. Вход ограничен --context-budget, весь JSON-ответ worker — --budget. Проверяйте context.complete, selectionComplete и пропуски. Native-сводка требует --allow-native-authority; разрешения native-клиента остаются в силе. Сводка управляемого агента отклоняется, поскольку его полномочия не проверены.

Окно терминала
bee worker summarize --profiles profiles.json --profile local --context selection.json --prompt-file summary-request.txt --context-budget 8192 --budget 6000
bee worker generate --profiles profiles.json --profile local --context selection.json --prompt-file generation-request.txt --store /private/worker-artifacts --target src/Example.cs --expected-sha256 TARGET_SHA --budget 16384 --diff-budget 4096
bee worker apply --store /private/worker-artifacts --root /absolute/checkout --target src/Example.cs --expected-sha256 TARGET_SHA --artifact ARTIFACT_ID --candidate-sha256 CANDIDATE_SHA

worker generate создаёт кандидата только с API-профилем без инструментов. Модель должна вернуть JSON-объект с единственной строкой content. Результат сохраняется в частном хранилище, целевой файл не меняется. Проверьте кандидата целиком и передайте artifact.id и candidateSha256 из receipt в apply. apply проверяет хеши исходника/цели/кандидата и не вызывает модель; гарантии файловой compare-and-swap нет. Для нового файла используйте --expected-sha256 absent в обоих шагах. Предел кандидата — 256 KiB, инструкции — 64 KiB, diff — 16 KiB. Пустой или ошибочный stdout не доказывает нулевое использование модели.

bee context claude-hook-config --root /absolute/checkout печатает необязательный фрагмент настроек Claude Code; ничего не устанавливает и не меняет. Hook направляет неограниченный Read исходника размером от 32 KiB к явному выбору контекста, не обходя разрешения хоста. Общий hook замены вывода для Codex/Hermes не заявлен; используйте CLI/MCP пакеты явно. Расширенный CLI и справочник команд описывают другие операции.

Бюджет пакета охватывает весь UTF-8 JSON и завершающий перевод строки. Обязательный выбор вместе с зависимостями должен поместиться целиком. Если не помещаются даже метаданные, stdout пуст, код выхода 5, а stderr предлагает сузить выбор. Проверяйте complete, omitted, реальные диапазоны строк и хеши источников. Локальная оценка токенов не равна тарификации провайдера; текст исходников не даёт права исполнять команды.

Необязательный –cache-dir /private/bee-context-cache сохраняет выбранный текст в частном локальном кэше. Bee проверяет исходные хеши при каждом запросе; попадание в кэш не доказывает снижения расходов провайдера. Удаление каталога сбрасывает кэш. Квитанция кэша идёт в stderr и не входит в бюджет stdout. Без опции кэш не пишется; MCP-инструмент оставляет его выключенным ради договора чтения без записи.

MCP-инструмент bee_context_packet получает тот же выбор через manifestJson; корень — checkout при запуске сервера. budgetBytes имеет диапазон 512–262144 и ограничивает весь сериализованный результат инструмента, включая JSON-экранирование и метаданные, без JSON-RPC обрамления. Собственный budgetBytes пакета — меньший содержательный предел. Локальному инструменту не нужны инициализация Bee и авторизация. Справочник MCP охватывает остальные инструменты.

Пути в capture.json относительны к манифесту. Общий исходный захват ограничен 8 MiB; для усечённого захвата выставьте captureComplete: false. Сокращение предпочитает диагностические блоки, сообщает пропущенные строки и хранит два сырых потока отдельно в частном хешированном артефакте. Если хранение не удалось, оставьте исходные файлы. Успешное сокращение не превращает ошибочный код исходной команды в успех.

output recover сверяет артефакт и хеши обоих потоков до записи stdout.bin и stderr.bin в новый каталог; существующую цель отклоняет. Квитанция сохраняет исходные exitCode, signal, captureComplete; файлы могут содержать любые байты. Ошибка записи способна оставить неполный каталог: доставку подтверждает только успешная квитанция. Восстановите сырой поток, если диагностический блок не поместился.

Вызов провайдера — явное действие с возможными расходами либо активностью native-инструмента. Профиль фиксирует протокол, модель, аутентификацию, рабочий каталог; для native-клиента также программу и домашний каталог аккаунта. Bee не переключает молча провайдера, модель, аккаунт или платный API. providers inspect проверяет структуру: runnable not_verified не доказывает вход либо доступ к модели. Нужен успешный providers run и его квитанция.

Пример API-профиля; модель и право аккаунта проверьте в своём окружении:

{
"profiles": [{
"id": "openai-api", "provider": "openai", "protocol": "OpenAiResponses",
"model": "gpt-6", "authMode": "ApiKey",
"secretSource": { "kind": "environment", "name": "TOOL_OPENAI" },
"workingDirectory": "/absolute/checkout",
"endpoint": "https://api.openai.com/v1/",
"maxInputBytes": 1048576, "maxOutputBytes": 1048576,
"maxOutputTokens": 4096, "timeout": "00:05:00"
}]
}

secretSource ссылается на существующую переменную environment или запись vault; значение секрета нельзя помещать в профиль или argv. Vault использует текущую личность, не создаёт и не меняет ключи. API endpoint должен быть HTTPS, кроме явно выбранного loopback. API-протоколы: OpenAiResponses, OpenAiChatCompletions, AnthropicMessages, GeminiGenerateContent, GeminiInteractions, AntigravityInteractions, OllamaChat. Управляемый AntigravityInteractions требует также managedAgent — это личность агента, а model обозначает запрошенную модель. Сессии API работают через Microsoft Agent Framework; его цикл инструментов не поддерживается.

Native Codex должен ссылаться на реальную программу и текущий домашний каталог аккаунта, не на alias оболочки:

{
"profiles": [{
"id": "codex-account", "provider": "openai", "protocol": "Codex",
"model": "gpt-6", "authMode": "NativeAccount",
"workingDirectory": "/absolute/checkout",
"executable": "/absolute/path/to/codex",
"nativeHome": "/absolute/private/codex-home",
"arguments": ["--sandbox", "read-only", "--config", "model_reasoning_effort=\"xhigh\""]
}],
"aliases": { "codex-external": "codex-account" }
}

Native-протоколы: Codex, ClaudeCode, GeminiCli, AntigravityCli. Адаптер сам управляет моделью, входом, форматом вывода и продолжением; принимает только узкий проверенный набор дополнительных флагов. Не кладите login, секрет или переопределение модели в arguments. Ошибки доверия и разрешений остаются ошибками: Bee не входит в аккаунт, не меняет trust-настройки и не переходит к платному API. Выбор нестандартного home для AntigravityCli пока не поддержан.

У стандартного аккаунта Claude Code отдельное пространство native-keychain. Для существующего стандартного аккаунта укажите настоящий домашний путь текущего пользователя явно:

{
"profiles": [{
"id": "claude-default-account", "provider": "anthropic", "protocol": "ClaudeCode",
"model": "your-entitled-model", "authMode": "NativeAccount",
"workingDirectory": "/absolute/checkout",
"executable": "/absolute/path/to/claude",
"nativeHome": "/absolute/your-home/.claude", "nativeHomeMode": "Default",
"arguments": ["--permission-mode", "plan", "--tools", ""]
}]
}

Bee сверяет путь с фактическим стандартным каталогом пользователя, прежде чем убрать Claude config overrides для дочернего процесса. Стандартный nativeHomeMode Explicit выбирает отдельное override-пространство даже при одинаковом тексте пути. После ошибки входа режим автоматически не меняется. Старые профили сохраняют свою привязку; Default поддерживается пока только для ClaudeCode native-аккаунта.

Окно терминала
bee providers run --profiles profiles.json --profile openai-api \
--context selection.json --prompt-file question.txt --stream
bee providers run --profiles profiles.json --profile openai-api \
--context selection.json --prompt-file question.txt --stream --json

JSON-поток даёт InvocationStarted, ноль или более TextDelta и InvocationFinished. Показывайте каждый textDelta один раз: финальный receipt не дублирует текст модели. Частичный текст предварителен; проверьте финальную квитанцию и код процесса. Ошибка ввода может завершиться до вызова провайдера. Без –stream остаётся единственный JSON receipt. Ctrl+C не гарантирует остановки удалённой генерации либо тарификации.

Поток API реализован для OpenAiResponses, OpenAiChatCompletions, AnthropicMessages, GeminiGenerateContent, GeminiInteractions, OllamaChat. Native-поток — для ClaudeCode, GeminiCli, Codex. AntigravityCli и AntigravityInteractions возвращают Unsupported. Поток Codex использует установленный app-server и NativeAccount, переносит явные –sandbox и -c/–config model_reasoning_effort, а несохраняемые флаги отклоняет до вызова. Без потока Codex использует exec. inspect показывает заявленную возможность протокола; настоящий клиент/аккаунт подтвердите запуском.

–session-out NEW_FILE сохраняет частный файл продолжения; –session FILE загружает его только при прежней привязке профиля. Существующий файл не перезаписывается. maxInputBytes по умолчанию 1 MiB, максимум 16 MiB, также ограничивает весь сериализованный файл сессии вместе с оболочкой и JSON-экранированием. У манифестов отдельный предел 256 KiB. Если сохранение не удалось после вызова, Bee не вызывает модель повторно: реальный текст, использование и call ID остаются в receipt. savedPath null означает отсутствие доставки, returnedWithSuccessfulTurn различает продолжение удачного/неудачного хода. –cache-dir отмечает лишь локальное сокращение в localCache.status; провайдер всё равно вызывается. run –budget ограничивает входной пакет, не модельный ответ.

У worker summarize проверяйте context.complete, selectionComplete, пропущенные строки/элементы и summaryOmittedBytes. Локальная оценка токенов не покрывает инструкцию worker, обрамление, вывод либо счёт провайдера. Native-сводке нужен –allow-native-authority; действующие разрешения клиента на инструменты/запись сохраняются, Bee не создаёт read-only sandbox. Сводка управляемого AntigravityInteractions отклоняется до вызова из-за непроверенных прав инструментов. Неудачные вспомогательные вызовы тоже входят в общий расход.

Сначала вычислите SHA-256 цели и замените TARGET_SHA настоящим хешем в нижнем регистре:

Окно терминала
shasum -a 256 src/Example.cs
bee worker generate --profiles profiles.json --profile local \
--context selection.json --prompt-file generation-request.txt \
--store /private/worker-artifacts --target src/Example.cs \
--expected-sha256 TARGET_SHA --budget 16384 --diff-budget 4096

Файл инструкции описывает желаемое содержимое. Модель должна вернуть один JSON-объект только со строковым полем content. Bee сохраняет частного кандидата, выдаёт манифест/хеш и ограниченный фрагмент diff; цель не меняется. Просмотрите полный artifact.candidatePath: diff не является исполняемым patch. Генерация через native или управляемого агента не поддержана, поскольку права на инструменты/запись здесь нельзя ограничить; используйте API-профиль без инструментов.

Передайте artifact.id и artifact.candidateSha256 из receipt в apply с тем же первоначальным хешем цели. Для нового файла в обоих шагах используйте –expected-sha256 absent; родительские каталоги должны существовать. apply проверяет хеши источника, цели и кандидата, отказывает при изменении, модель не вызывает. Проверка snapshot и атомарная замена не гарантируют файловый compare-and-swap. Кандидат до 256 KiB, CLI-инструкция до 64 KiB, diff до 16 KiB, stdout worker до 1 MiB. Когда квитанция после вызова не помещается в stdout, stderr сохраняет ссылки на вызов и артефакт; пустой stdout не значит нулевого расхода. В Unix непубличное хранилище обязательно; приватность Windows ACL отдельно не подтверждена.

Вставляйте Claude settings-фрагмент в нужный проект лишь после проверки. Для неограниченного Read исходника от 32 KiB hook смотрит только метаданные; до разрешения хоста не читает и не внедряет исходный текст. Явные offset/limit, документы и файлы инструкций сохраняют обычный поток разрешений. Ошибка маршрутизации его не ломает. Срок команды и выводимый timeout хоста — две секунды; hook не вызывает модель и не строит граф.

Хост Путь Граница
Claude Code Необязательная маршрутизация PreToolUse плюс CLI/MCP Следующий вызов инструмента делается отдельно; фрагмент рассчитан на POSIX shell.
Codex Явные CLI/MCP пакеты Общий hook подмены результата не заявлен.
Hermes Явные CLI/MCP пакеты Существующий retained-context работает отдельно; общий interception не установлен.