feat(opencode): рабочий serve для dev стартует из папки репозитория; пул покрывает внешним сервером подкаталоги
This commit is contained in:
@@ -201,7 +201,12 @@ func (w *Worker) pollAndDispatch(ctx context.Context) error {
|
||||
func (w *Worker) runTask(ctx context.Context, task *storage.Task) (err error) {
|
||||
// 0. постмортем-анализ: если задача завершилась failed/timeout — после
|
||||
// выхода из runTask (всех путей) запускаем анализ сессий dev/reviewer.
|
||||
defer w.postMortemAfter(ctx, task, &err)
|
||||
// projectDir (каталог основного репозитория) объявляем заранее — defer
|
||||
// захватывает переменную, её значение подставится к моменту возврата.
|
||||
var projectDir string
|
||||
defer func() {
|
||||
w.postMortemAfter(ctx, task, projectDir, &err)
|
||||
}()
|
||||
|
||||
// 1. проверяем статус
|
||||
if task.Status != storage.StatusApproved {
|
||||
@@ -241,8 +246,12 @@ func (w *Worker) runTask(ctx context.Context, task *storage.Task) (err error) {
|
||||
}
|
||||
}
|
||||
|
||||
// 3. cwd — общий каталог (вариант A: один dev видит все репозитории).
|
||||
cwd := w.Worktree
|
||||
// 3. cwd — папка основного репозитория: сервер opencode для работы стартует
|
||||
// из самого репозитория (подхватывает .serena, экономит токены на поиск
|
||||
// файлов из корня worktree). Служебный root-сервер в worktree остаётся
|
||||
// для аналитика; пул поднимает свой serve на каждый репозиторий работы.
|
||||
cwd := w.repoDirOf(repos[0])
|
||||
projectDir = cwd
|
||||
|
||||
// Цикл dev → review, до maxReviewIterations.
|
||||
var feedback []string
|
||||
@@ -253,6 +262,8 @@ func (w *Worker) runTask(ctx context.Context, task *storage.Task) (err error) {
|
||||
Title: task.Title,
|
||||
Goal: task.Goal,
|
||||
Repos: repos,
|
||||
Primary: repos[0],
|
||||
Others: repos[1:],
|
||||
Why: task.Why,
|
||||
AC: task.AC,
|
||||
Steps: task.Steps,
|
||||
|
||||
Reference in New Issue
Block a user