Hermes bd3d825738
All checks were successful
CI / test (push) Successful in 46s
CI / build-and-package (amd64, darwin) (push) Successful in 36s
CI / build-and-package (amd64, linux) (push) Successful in 37s
CI / build-and-package (amd64, windows) (push) Successful in 44s
CI / build-and-package (arm64, darwin) (push) Successful in 35s
CI / build-and-package (arm64, linux) (push) Successful in 36s
feat: множественные репозитории (Repos) и клонирование в воркере
- Task.Repos []string (XML-колонка repos, обратная совместимость с repo)
- config: блок git {base_url, token}
- аналитик: ответ repos[], шаблон показывает список
- core: propose без repos → возврат в сбор (E1)
- worker вариант A: один dev из общего cwd, prepareRepos клонирует
  недостающие репо (git clone), validateRepoName (E3), ErrRepoNotGit (E4)
- ошибки E1-E4 в worker/errors.go
2026-08-16 09:18:15 +05:00

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
No description provided
Readme 1.6 MiB
Languages
Go 98.4%
PowerShell 1.4%
Makefile 0.2%