Files
ratatoskr-go/README.md
Hermes 53cf901707
All checks were successful
build-test / build (push) Successful in 47s
ratatoskr-go: стартовый каркас (Go-бинарь, CI, structure)
2026-08-14 08:53:57 +05:00

49 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ratatoskr-go
Ratatoskr на Go — **оркестратор в единый статический бинарь** + субагенты через
[opencode](https://opencode.ai) как внешний процесс. Переезд с Python-версии.
## Почему Go
Агентный конвейер — это клей (HTTP/JSON к LLM, SQLite, Gitea API, Telegram), а не
горячие вычисления. Цель — **один статический бинарь без runtime-зависимостей**
(CGO_ENABLED=0), который решает проблему доставки/деплоя. Go: горизонт
HTTP/JSON + goroutine-параллелизм research/feedback/notify + SQLite без CGO
(`modernc.org/sqlite`).
## Структура
```
cmd/ratatoskr/ # точка входа, сборка бинаря
internal/
app/ # компоновка (composition root), конфиг, DI
dialog/ # state-machine диалога: collect→confirm→created
decide/ # аналитик: промпт + разбор JSON-решения (opencode agent)
research/ # исследователь: FACTS о репозитории
feedback/ # feedback: транскрипт→proposals (opencode agent)
opencode/ # обёртка запуска opencode-процесса, парсинг вердикта
gitea/ # Gitea API-клиент: issues, labels, PR, webhook
webhook/ # digest-ответы и статус в Telegram
issue/ # issue: формирование тела задачи, task-tag
```
## Сборка
```bash
go build -o bin/ratatoskr ./cmd/ratatoskr # обычная
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-o bin/ratatoskr-linux-amd64 ./cmd/ratatoskr # статический бинарь
```
## Контракты (не ломать)
- `process_turn` всегда возвращает **3 значения**: `(reply, action, session)`.
- `decide_fn` возвращает кортеж/структуру `(decision, err)`.
- `/proposal` передаёт аналитику **полный комплект**, а не digest.
- Вердикты агентов — строгий JSON; `_extract_json` устойчив к мусору.
## Eval
Eval-suite (парсинг A / контракты B / качество C) — см.
[дизайн в вики](../wiki/concepts/ratatoskr-evals.md). Запуск после внедрения:
`go test ./...` для детерминированных уровней A+B.