---
title: "Окружења за агенте"
description: "Сесија покреће једно окружење за агенте, стандардни harness или експериментални harness. На овој страници је наведено како пројекат бира једно од њих и шта свако од њих подржава."
---

Харнес је окружење за извршавање агента унутар изолованог окружења сесије. Покреће циклус модела,
позива алате и прави транскрипт. Beeuni има два: **стандардни harness**
(подразумевани) и **експериментални harness**. Сесија покреће тачно један.

Оба харнеса читају исти пројекат: `beeuni.yaml`, агентске датотеке у
`agents/`, вештине у `skills/`, коренски `AGENTS.md` и `memory/`. Клијенти (веб, CLI, TUI, мобилна апликација, SDK) читају оба преко истог API-ја сесија.
Разликују се по функцијама сесије у
[матрици](#what-each-harness-supports) испод и датотекама које сваки харнес чита за сопствену конфигурацију.

<a id="how-a-session-selects-its-harness"></a>

## Како сесија бира харнес

Beeuni одлучује када се сесија покреће, поново покреће или наставља. Покренута сесија
задржава свој харнес до тада.

| Правило, редом | Харнес |
| --- | --- |
| Заставица `llm_gateway` пројекта је искључена | стандардни harness |
| Заставица `pi_harness` пројекта је укључена | експериментални harness |
| `beeuni.yaml` поставља `runtime: pi` | експериментални harness |
| Све остало | стандардни harness |

- експериментални harness позива моделе само преко Beeuni LLM мрежног пролаза. Пројекат са искљученим `llm_gateway` покреће стандардни harness, без обзира на то шта кажу заставица или манифест.
  Погледајте [Модели](/docs/sr/project/models).
- `runtime` је кључ манифеста `beeuni_version: 2`. Наслеђени пројекат `beeuni.toml` не може да га постави. Погледајте [референцу манифеста](/docs/sr/project/manifest).
- `pi_harness` је заставица функције за сваки пројекат, подразумевано искључена. Погледајте
  [Заставице функција](/docs/sr/feature-flags).

Да бисте видели који харнес сесија покреће, прочитајте `harness.id` у одговору `GET /beeuni/health` демона песковника: `opencode` или `pi`.

<a id="what-each-harness-supports"></a>

## Шта сваки харнес подржава

Харнес наводи опционе функције сесије које пружа у низу `capabilities` у `GET /beeuni/health`.
Клијент скрива контролу када у `capabilities` сесије недостаје њен ID. Провера у SDK-у је
`runtimeSupports`.

<a id="both-harnesses"></a>

### Оба харнеса

| Функција | стандардни harness | експериментални harness |
| --- | --- | --- |
| Размене порука, стримовање, заустављање | Да | Да |
| Агент `.md`: упит, `model`, `variant`, `mode`, `permission`, `temperature`, `top_p`, `steps` | Да | Да. експериментални harness не примењује `options` (опције добављача). |
| [Приступ алатима](/docs/sr/project/tools#who-may-use-which-tool) по агенту (`agents.<name>.tools` у `beeuni.yaml`: `all`, `none`, листа, `exclude`) | Да | Да |
| Правила `permission` по агенту и захтеви за дозволу | Да | Да |
| Питања (алат `question`) | Да | Да |
| Коренска датотека правила `AGENTS.md` пројекта или `CLAUDE.md` ако корен нема `AGENTS.md` | Да. стандардни harness такође чита датотеку у надређеним директоријумима директоријума `/workspace` и чита `/workspace` док примењује издање конфигурације. | Да, само коренску датотеку. Она је део системског упита сесије и сваког подагента. [Када су издања конфигурације укључена](#agentsmd-on-pi), експериментални harness чита копију издања. |
| Подагенти (алат `task`), `session.subagents` | Да | Да: `general`, `explore` (само за читање) и сваки агент пројекта са `mode: subagent` или `all`. Подагент не може да покрене други подагент. |
| Вештине (`skills/` и управљане вештине `beeuni-*`), уз дозволу `skills` агента | Да. Агент учитава вештину алатом `skill`. | Да. Системски упит наводи сваку одобрену вештину; агент чита датотеку. |
| [Beeuni алати](/docs/sr/project/tools#beeuni-tools-in-beeuniyaml): `web_search`, `image_search`, `scrape_webpage`, `memory`, `show`. Свих пет ако у `beeuni.yaml` нема кључа `tools:`; ако га има, они које он наводи као `beeuni:<name>` | Да | Да |
| [Алати пројекта](/docs/sr/project/tools) (`tools:` у `beeuni.yaml`) | Да | Да |
| [Издања конфигурације](/docs/sr/work/runtime#config-convergence), `config.release.v1` | Да | Да |
| Сажимање (резимирање) разговора на захтев и аутоматски када се приближи прозору контекста модела, `session.compact` | Да | Да. Ако захтев моделу премаши прозор, разговор се сажима и захтев се једном поново шаље. |
| Команде пројекта са косом цртом, `session.commands` | Да, из `commands/` у директоријуму конфигурације стандардни harness-а. | Да, из шаблона упита у `prompts/` у директоријуму конфигурације експериментални harness-ја и у пакетима експериментални harness-ја. експериментални harness не чита `commands/` стандардни harness-а. |
| Терминал у песковнику (PTY) | Да | Да |
| Алати `bash`, `read`, `write`, `edit`, `glob`, `grep`; [тајне](/docs/sr/project/secrets) у љусци; CLI `beeuni` | Да | Да |

Beeuni алати и алати пројекта су [независни од харнеса](/docs/sr/project/tools):
демон песковника покреће по један модул за сваки алат у оба харнеса, са истим
називима, аргументима и излазом. експериментални harness их позива у процесу демона; стандардни harness
их позива преко додатка који демон уписује. Оба харнеса добијају исту листу: Beeuni алат који кључ `tools:` пројекта не наводи није доступан ни у једном. Пројекат који још има копије Beeuni алата у `harnesses/opencode/tools/` задржава те копије у стандардни harness-у док их не избрише.

Веб алати користе кључеве дозвола `websearch` (`web_search`, `image_search`) и `webfetch` (`scrape_webpage`) у оба харнеса. У стандардни harness-у ови алати не могу да затраже дозволу: правило `ask` их одбија. У експериментални harness-ју правило `ask` покреће захтев за дозволу. У експериментални harness-ју команда `memory` која мења датотеку прати `edit`, а `view` прати `read`; у стандардни harness-у алат контролише само правило `memory`.

<a id="agentsmd-on-pi"></a>

### `AGENTS.md` у експериментални harness-ју

експериментални harness додаје коренски `AGENTS.md` пројекта у системски упит као један одељак,
`<project_instructions path="AGENTS.md">`, после упита агента. Ако корен нема `AGENTS.md`, уместо тога се користи `CLAUDE.md`, као у стандардни harness-у. експериментални harness не чита ниједан `AGENTS.md` у поддиректоријуму или надређеном директоријуму.

- **Извор.** Када су [издања конфигурације](/docs/sr/work/runtime#config-convergence) искључена, експериментални harness чита `/workspace/AGENTS.md`. Када су укључена, експериментални harness чита копију из издања, а никада ону у `/workspace`: измена у `/workspace` стиже до сесије након што се споји у основну грану. Када су укључена, али нема издања за послуживање (`config.source: image-default`), експериментални harness не чита ниједан `AGENTS.md`, као што не чита ниједну вештину пројекта.
- **Када.** експериментални harness чита датотеку при покретању окружења за извршавање, поновном учитавању конфигурације (ново издање, `/beeuni/env` push) и након освежавања спремишта. Не чита је пре сваке размене. Ново издање стиже у наредну размену без поновног покретања; размена која је у току задржава стару датотеку.
- **Прескакање.** Празна датотека, датотека која није обична датотека и симболичка веза која води ван спремишта не додају ништа. За последња два случаја у евиденцију демона уписује се једно упозорење.
- **Провера.** `harness.details.agentsMd` у `GET /beeuni/health` демона наводи датотеку коју је експериментални harness учитао: `source` (`release` или `workspace`), `path`, `bytes` и `sha` (првих 12 хексадецималних знакова њеног sha256). Вредност је `null` када експериментални harness није учитао ниједну.

<a id="opencode-only-today"></a>

### За сада само стандардни harness

| Функција | Могућност | стандардни harness | експериментални harness |
| --- | --- | --- | --- |
| Враћање на поруку и њено обнављање. Измена и поновно слање користе враћање уназад. | `session.rewind` | Да | Не |
| MCP сервери (`mcp` у `opencode.jsonc`) | `session.mcp` | Да | Не постоји MCP клијент. [Конектори](/docs/sr/connect/connectors) раде у оба харнеса преко CLI-ја `beeuni connectors`. |
| Листа задатака (алат `todowrite`) и картица плана | `session.todo` | Да | Не. Картица плана остаје празна. |
| Повезивање сопственог клијента терминала харнеса (`beeuni connect`, TUI `Alt+o`) | `session.attach` | Да | Не. Погледајте [TUI](/docs/sr/cli#sessions). |
| Документ конфигурације окружења за извршавање (`/global/config`) | `session.config` | Да | Не. Агенти и модели долазе из пројекта у оба харнеса. |
| Рачвање сесије на поруци | `session.fork` | Да | Не |
| Команда љуске покренута као размена | `session.shell` | Да | Не |
| Добављачи модела без LLM мрежног пролаза | — | Да | Не. експериментални harness захтева укључен `llm_gateway`. |

експериментални harness сесија на захтев за функцију коју не пружа одговара са
`501 feature_not_supported`, или са `404` ако нема тражени документ
(`/global/config`). Не игнорише захтев.

<a id="harness-configuration-files"></a>

## Датотеке конфигурације харнеса

Сваки харнес има један директоријум за датотеке које чита само тај харнес.

| | стандардни harness | експериментални harness |
| --- | --- | --- |
| Директоријум | `harnesses/opencode/` или `opencode.config_dir` | `harnesses/pi/` или `pi.config_dir` |
| Наслеђени директоријум | `.beeuni/opencode/` | `.beeuni/pi/` |
| Садржај | `opencode.jsonc`, `plugins/`, `tools/`, `commands/` | `settings.json`, `extensions/`, `skills/`, `prompts/` |
| Проширења | Додаци и алати само за стандардни harness у том директоријуму | [експериментални harness пакети](/docs/sr/project/manifest#harnesses) у `harnesses.pi.packages` и датотеке проширења у `extensions/` |

експериментални harness сесија не чита `opencode.jsonc`, `plugins/`, `tools/` нити `commands/`. стандардни harness сесија не чита директоријум експериментални harness-ја. Алат који су потребан оба харнеса је [алат пројекта](/docs/sr/project/tools), наведен у `beeuni.yaml`, а не датотека у неком од тих директоријума.

експериментални harness пакети долазе са packages. Пакет може да дода алате које експериментални harness нема, на пример MCP адаптер или алат за задатке. Beeuni учитава пакет, али не тестира пакете трећих страна.
