Files
ratatoskr-go/internal/agents/agents.go
Hermes 9c5f38698c
All checks were successful
CI / test (push) Successful in 56s
CI / build-and-package (amd64, linux) (push) Successful in 42s
CI / build-and-package (amd64, windows) (push) Successful in 40s
fix: idle-таймер сбрасывается по live-стриму LLM + дефолт 5м; агенты opencode в agents/ с mode: primary
- opencode ищет кастомных агентов в поддиректории agents/ (как .opencode),
  а не в корне OPENCODE_CONFIG_DIR → распаковка теперь в <dir>/agents/*.md
- markdown-агентам добавлен mode: primary (иначе subagent по умолчанию)
- idle-детекция сбрасывает таймер при live-строках (text/tool/agent/reasoning),
  а не только по росту БД → «LLM думает и стримит» не считается зависанием
- дефолт idle_timeout поднят с 2м до 5м
2026-08-17 10:57:19 +05:00

40 lines
1.7 KiB
Go
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.
// Package agents — встроенные агенты opencode (analyst, dev, ...).
//
// Агенты зашиты в бинарь через go:embed и распаковываются при запуске
// в каталог OPENCODE_CONFIG_DIR (по умолчанию ./agents рядом с бинарём),
// чтобы opencode находил их независимо от того, где запущен ratatoskr.
//
// opencode сканирует OPENCODE_CONFIG_DIR как каталог .opencode: агенты
// ищутся в поддиректории agents/ (мн.ч.), а не в корне. Поэтому распаковка
// идёт в <dir>/agents/*.md.
package agents
import (
"embed"
"path/filepath"
)
//go:embed *.md
var FS embed.FS
// Names — имена распаковываемых агентов (файлы *.md, без .md).
//
// Держим в курсе: если добавить файл в каталог, он автоматически попадёт
// в FS, но для детерминированной распаковки список лучше дополнять здесь.
var Names = []string{"analyst", "dev", "reviewer"}
// WriteTo распаковывает всех встроенных агентов в каталог dir/agents
// (создаёт его). Файлы перезаписываются — встроенная копия всегда актуальна.
func WriteTo(dir string) error {
agentsDir := filepath.Join(dir, "agents")
for _, name := range Names {
data, err := FS.ReadFile(name + ".md")
if err != nil {
return err
}
if err := writeFile(agentsDir, name+".md", data); err != nil {
return err
}
}
return nil
}