fix(opencode): выбор модели — только глобальный конфиг opencode; агент передаётся в сессию
- CreateSession(ctx, agent) шлёт {agent} в POST /api/session, модель не выбираем
- удалён internal/opencode/config.go (ReadModelRef/JSONC-стрип) и его тесты
- runner.go больше не читает конфиг opencode и не хардпинит модель
- тесты и README обновлены
This commit is contained in:
19
README.md
19
README.md
@@ -138,18 +138,13 @@ update:
|
||||
|
||||
Что делает обёртка (`internal/opencode`):
|
||||
|
||||
- **Хардпин модели.** При создании сессии в конфиге opencode ищется top-level
|
||||
`"model"` (`internal/opencode/config.go`) и передаётся в `POST /api/session`
|
||||
как `{"model":{providerID,id}}`. Это убирает зависимость от fallback-логики
|
||||
opencode (которая молча выбирает «дефолтную» запись, если модель не задана).
|
||||
- **Весь код резолва модели устойчив к этому классу проблем (класс O5 WARN):**
|
||||
- если конфиг не читается / в нём нет `model` — в логи пишется warning;
|
||||
- фактическая модель ответа (из финального assistant-сообщения) сравнивается
|
||||
с ожидаемой; расхождение логируется как warning;
|
||||
- конфиг, написанный по **старой v1-схеме** (`provider.X.npm` / `options`),
|
||||
молча игнорируется v2 — обёртка этого не «чинит» сама, но предупреждает.
|
||||
Правильный v2-вид провайдера — `api: { type:"aisdk", package, url }` и
|
||||
`request.headers` вместо `options.headers`.
|
||||
- **Модель — только глобальный конфиг opencode.** ratatoskr модель не выбирает
|
||||
и про неё не знает: opencode сам берёт модель по умолчанию из своего
|
||||
глобального конфига (`~/.config/opencode/opencode.jsonc`). Наш код конфиг
|
||||
opencode не читает.
|
||||
- **Свой агент.** При создании сессии в `POST /api/session` передаётся имя
|
||||
встроенного агента ratatoskr (analyst/dev/reviewer/chat/postmortem), который
|
||||
распаковывается в каталог `OPENCODE_CONFIG_DIR` (см. `internal/agents`).
|
||||
- **Поллинг вердикта.** Промпт отправляется неблокирующе (`POST .../prompt` →
|
||||
durable admit), вердикт собирается из новых assistant-сообщений
|
||||
(`GET .../message`); завершение ответа — сессия ушла из активных дренажей
|
||||
|
||||
Reference in New Issue
Block a user