- 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)
32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
# 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-<sha7> -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. |