feat(analyst): этапы задачи — аналитик раскладывает на steps с критериями готовности, dev идёт по ним
This commit is contained in:
@@ -3,6 +3,8 @@ package analyst
|
||||
import (
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/kamelion/ratatoskr-go/internal/storage"
|
||||
)
|
||||
|
||||
// promptTemplate — шаблон промпта для аналитика (opencode analyst-agent).
|
||||
@@ -23,6 +25,7 @@ var promptTemplate = template.Must(template.New("analyst").Parse(`Ты — ан
|
||||
| repos | список репозиториев (имена на git-хосте; для связанных — все сразу) |
|
||||
| why | зачем это нужно, контекст |
|
||||
| ac | acceptance criteria — конкретный результат, что считается готовым |
|
||||
| steps | (опционально) разбиение задачи на этапы: список {title, ac} с критерием готовности каждого этапа |
|
||||
|
||||
Изменяй в JSON только те поля, которые надо поменять; что менять не надо — пустой строкой.
|
||||
|
||||
@@ -51,6 +54,12 @@ var promptTemplate = template.Must(template.New("analyst").Parse(`Ты — ан
|
||||
{{- else}} repos: (не задано){{end}}
|
||||
{{if .Why}} why: {{.Why}}{{else}} why: (не задано){{end}}
|
||||
{{if .AC}} ac: {{.AC}}{{else}} ac: (не задано){{end}}
|
||||
{{if .Steps}}
|
||||
steps:
|
||||
{{- range .Steps}}
|
||||
- {{.Title}}{{if .AC}} → {{.AC}}{{end}}
|
||||
{{- end}}
|
||||
{{- else}} steps: (не задано){{end}}
|
||||
|
||||
**Ответь строго JSON-объектом, без лишнего текста:**
|
||||
{
|
||||
@@ -60,6 +69,7 @@ var promptTemplate = template.Must(template.New("analyst").Parse(`Ты — ан
|
||||
"repos": ["имя_репо_1", "имя_репо_2"],
|
||||
"why": "зачем (только если меняешь)",
|
||||
"ac": "критерии (только если меняешь)",
|
||||
"steps": [{"title": "этап 1", "ac": "критерий этапа 1"}],
|
||||
"questions": ["вопрос 1", "вопрос 2"],
|
||||
"chat_reply": "твой ответ пользователю (на русском, естественно)",
|
||||
"abort_reason": "если phase=abort — причина"
|
||||
@@ -73,6 +83,7 @@ type TemplateData struct {
|
||||
Repos []string
|
||||
Why string
|
||||
AC string
|
||||
Steps []storage.Step
|
||||
History string // отформатированная переписка
|
||||
Force bool
|
||||
}
|
||||
@@ -84,4 +95,4 @@ func RenderPrompt(data TemplateData) (string, error) {
|
||||
return "", err
|
||||
}
|
||||
return buf.String(), nil
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user