diff --git a/internal/analyst/analyst.go b/internal/analyst/analyst.go index e019aaa..417c6f8 100644 --- a/internal/analyst/analyst.go +++ b/internal/analyst/analyst.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "log" "strings" "github.com/kamelion/ratatoskr-go/internal/core" @@ -11,6 +12,16 @@ import ( "github.com/kamelion/ratatoskr-go/internal/storage" ) +func truncate(s string, n int) string { + if len(s) <= n { + return s + } + if n <= 0 { + return "" + } + return s[len(s)-n:] +} + // OpenCodeRunner — интерфейс для запуска opencode (замена для тестов). type OpenCodeRunner interface { Run(ctx context.Context, prompt, cwd, agent, sessionID string) (*opencode.Result, error) @@ -80,7 +91,12 @@ func (a *Analyst) Decide(ctx context.Context, history []core.Message, draft stor // 4. парсим вердикт verdict := opencode.ExtractVerdict(res.Stdout) + log.Printf("analyst: verdict tail: %s", truncate(verdict, 2000)) obj, ok := opencode.ExtractJSON(verdict) + if ok { + b, _ := json.Marshal(obj) + log.Printf("analyst: extracted json: %s", truncate(string(b), 1000)) + } if !ok { return core.Decision{}, fmt.Errorf("%w: нет JSON в выводе аналитика", ErrDecodeFail) }