fix(opencode): reasoning-fallback в вердикте + API-логи в debug-уровень
- verdict(): если в завершённом assistant-сообщении нет text-парта, но есть reasoning — вердикт собирается из reasoning (fallback), а не падает с 'нет text-части в ответе'. Решает сбой dev/reviewer/postmortem на моделях, отвечающих только thinking (например, через прокси tokentool). - Отладочные логи API-вызовов (запрос/ответ) помечены маркером 'debug', чтобы в панели «Логи» они классифицировались как debug, а не info.
This commit is contained in:
@@ -216,10 +216,13 @@ func (r *Runner) verdict(model *ModelRef, cur *v2Message, msgs []v2Message, sinc
|
||||
if cur.Error != nil && cur.Error.Message != "" {
|
||||
return nil, &ClientErr{Op: "prompt", Err: errors.New(cur.Error.Message)}
|
||||
}
|
||||
texts := assistantText(msgs, since)
|
||||
texts, usedReasoning := assistantVerdict(msgs, since)
|
||||
if len(texts) == 0 {
|
||||
return nil, &ClientErr{Op: "prompt", Err: errors.New("нет text-части в ответе")}
|
||||
}
|
||||
if usedReasoning {
|
||||
r.logf("WARN opencode: в ответе нет text-части — использую reasoning-парты как вердикт")
|
||||
}
|
||||
vd := stripFence(strings.Join(texts, "\n"))
|
||||
r.logf("opencode вердикт готов (%d байт)", len(vd))
|
||||
return &Result{RC: 0, Stdout: vd, SessionID: sid}, nil
|
||||
|
||||
Reference in New Issue
Block a user