4de6a4241a95cc3ff50a4cb651dba89e050f93e9
All checks were successful
CI / test (push) Successful in 43s
CI / build-and-package (amd64, darwin) (push) Successful in 40s
CI / build-and-package (amd64, linux) (push) Successful in 39s
CI / build-and-package (amd64, windows) (push) Successful in 39s
CI / build-and-package (arm64, darwin) (push) Successful in 36s
CI / build-and-package (arm64, linux) (push) Successful in 39s
- update.base_url (env UPDATE_BASE_URL) — хост обновления, БЕЗ фоллбэка на git.base_url: пустое значение отключает update. - Убран git.token из пути обновления: теперь отдельный токен. - Токен read:package вшивается при сборке (-X main.updateToken из секрета TC_UPDATE_TOKEN), приоритет над update.token из конфига. - Обновлены app.New (сигнатура), main, Makefile, CI, config.example, тесты.
Ratatoskr-go
Ratatoskr на Go — оркестратор в единый статический бинарь + субагенты через opencode как внешний процесс. Переезд с 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
Сборка
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) — см.
дизайн в вики. Запуск после внедрения:
go test ./... для детерминированных уровней A+B.
Description
Languages
Go
98.4%
PowerShell
1.4%
Makefile
0.2%