42 lines
1.4 KiB
Go
42 lines
1.4 KiB
Go
package worker
|
||
|
||
import (
|
||
"strings"
|
||
"text/template"
|
||
)
|
||
|
||
// devPromptTemplate — промпт для dev-агента при запуске задачи.
|
||
var devPromptTemplate = template.Must(template.New("dev").Parse(`Ты — dev-агент, реализуешь задачу в репозитории.
|
||
|
||
**Задача:**
|
||
{{if .Title}}Название: {{.Title}}{{end}}
|
||
{{if .Goal}}Цель: {{.Goal}}{{end}}
|
||
{{if .Why}}Зачем: {{.Why}}{{end}}
|
||
{{if .Repo}}Репозиторий: {{.Repo}}{{end}}
|
||
{{if .AC}}Критерии готовности:
|
||
{{.AC}}{{end}}
|
||
|
||
**Инструкции:**
|
||
1. Напиши код, реализующий задачу.
|
||
2. Убедись, что все acceptance criteria выполнены.
|
||
3. В процессе работы пользуйся встроенными инструментами opencode (чтение файлов, поиск, редактирование).
|
||
4. По окончании работы верни краткий отчёт о том, что сделано.
|
||
`))
|
||
|
||
// DevPromptData — данные для рендера dev-промпта.
|
||
type DevPromptData struct {
|
||
Title string
|
||
Goal string
|
||
Repo string
|
||
Why string
|
||
AC string
|
||
}
|
||
|
||
// RenderDevPrompt собирает промпт для dev-агента.
|
||
func RenderDevPrompt(data DevPromptData) (string, error) {
|
||
var buf strings.Builder
|
||
if err := devPromptTemplate.Execute(&buf, data); err != nil {
|
||
return "", err
|
||
}
|
||
return buf.String(), nil
|
||
} |