debug: логировать хвост вердикта аналитика и извлечённый JSON (диагностика A3 phase="")
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/kamelion/ratatoskr-go/internal/core"
|
"github.com/kamelion/ratatoskr-go/internal/core"
|
||||||
@@ -11,6 +12,16 @@ import (
|
|||||||
"github.com/kamelion/ratatoskr-go/internal/storage"
|
"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 (замена для тестов).
|
// OpenCodeRunner — интерфейс для запуска opencode (замена для тестов).
|
||||||
type OpenCodeRunner interface {
|
type OpenCodeRunner interface {
|
||||||
Run(ctx context.Context, prompt, cwd, agent, sessionID string) (*opencode.Result, error)
|
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. парсим вердикт
|
// 4. парсим вердикт
|
||||||
verdict := opencode.ExtractVerdict(res.Stdout)
|
verdict := opencode.ExtractVerdict(res.Stdout)
|
||||||
|
log.Printf("analyst: verdict tail: %s", truncate(verdict, 2000))
|
||||||
obj, ok := opencode.ExtractJSON(verdict)
|
obj, ok := opencode.ExtractJSON(verdict)
|
||||||
|
if ok {
|
||||||
|
b, _ := json.Marshal(obj)
|
||||||
|
log.Printf("analyst: extracted json: %s", truncate(string(b), 1000))
|
||||||
|
}
|
||||||
if !ok {
|
if !ok {
|
||||||
return core.Decision{}, fmt.Errorf("%w: нет JSON в выводе аналитика", ErrDecodeFail)
|
return core.Decision{}, fmt.Errorf("%w: нет JSON в выводе аналитика", ErrDecodeFail)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user