Files
ratatoskr-go/.serena/memories/tech_stack.md
ki.sagidullin 9f64be4ea5
Some checks failed
CI / test (pull_request) Failing after 32s
CI / build-and-package (amd64, linux) (pull_request) Successful in 42s
CI / build-and-package (amd64, windows) (pull_request) Successful in 42s
feat(opencode): переход на v2 HTTP API opencode (хардпин модели, поллинг вердикта)
- client.go: эндпоинты /api/* (create+model, prompt-admit, message, active, interrupt)
- runner.go: неблокирующий prompt + поллинг новых assistant-сообщений;
  завершение = сессия ушла из активных дренажей + стабильное финальное сообщение
- config.go: чтение top-level model из opencode.jsonc (JSONC-стрип) + хардпин в сессию
- server.go: healthcheck /api/health, MinVersion=1.18.18, понятная ошибка для старого бинаря
- класс O5 WARN: устойчивость к v1-конфигу провайдера (npm/options игнорируются v2)
- README: раздел интеграции, минимальная версия opencode, предупреждения
- .serena: актуализация памяти (core, tech_stack)
2026-08-19 08:29:11 +05:00

2.1 KiB
Raw Permalink Blame History

tech_stack

Язык / рантайм

  • Go 1.25.0 (go.mod go 1.25.0). Модуль github.com/kamelion/ratatoskr-go.
  • Сборка: статический бинарь, CGO_ENABLED=0. Локальный Go-тулчейн на хосте: export PATH=/opt/data/.local/go/bin:$PATH (go1.25.0 linux/amd64).

Основные зависимости (go.mod)

  • gopkg.in/yaml.v3 v3.0.1 — парсинг config.yaml.
  • modernc.org/sqlite v1.56.0 — SQLite без CGO (чистый Go).
  • (indirect) google/uuid, go-humanize, mattn/go-isatty, x/sys, modernc.org/libc/mathutil/memory.

Внешние процессы

  • opencode (opencode.ai) — внешний процесс для субагентов (analyst/dev/reviewer). Управляется через internal/opencode (Runner, LiveRegistry). Настраивается в конфиге (opencode.bin / config / config_dir / hard_timeout / idle_timeout / poll_ms). Требуемая версия opencode: >= 1.18.18 (v2 HTTP API /api/*; хардпин model из конфига — internal/opencode/config.go, классы O1/O5). Подробно — mem:core.

Сборка / Makefile

  • make build — go build -ldflags="-s -w -X main.version=commit- -X main.updateToken=..." -o ratatoskr ./cmd/ratatoskr/.
  • make test — go test ./... -v -count=1 -timeout 120s.
  • make vet — go vet ./... make fmt — go fmt ./...
  • make run — build + ./ratatoskr -config config.yaml.
  • make cross — кросс-сборка linux/amd64 + windows/amd64 (ratatoskr-windows-amd64.exe — Windows-машина Камиля).
  • GIT_SHA вшивается в main.version; UPDATE_TOKEN — в main.updateToken (секрет только у CI).

CI (.gitea/workflows/ci.yaml)

  • Job test: go test ./... + go vet ./....
  • Job build-and-package (matrix linux/amd64+windows/amd64): собирает и публикует в Gitea Packages на main в версию commit-<sha7>/ + companion-файлы .version/.sha256.
  • Секреты: TC_GITEA_TOKEN (write:packages), TC_UPDATE_TOKEN (read:package), GIT_MAIN_URL.