omp packages

pi-goal-pro1.3.1

Persistent autonomous goals for Pi — with no-progress detection, evidence-based completion, token budgets, and auto-continuation

izzzzzi Published 4 months ago MIT ~227 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

pi extension npm CI MIT

pi-goal-pro 🎯

Персистентные автономные цели для Pi — с детекцией отсутствия прогресса, завершением на основе доказательств, бюджетом токенов и автопродолжением.

Задай долгоживущую цель — и агент будет работать автономно, пока не закончит, не будет приостановлен или не упрётся в ограничение. Без необходимости повторять промпт каждый turn.

/goal Переписать auth модуль на JWT с нормальной обработкой ошибок

Можно отойти от клавиатуры. Агент продолжает сам. Когда закончит — отчитается с доказательствами.


Установка

pi install npm:pi-goal-pro

Или вручную:

mkdir -p ~/.pi/agent/extensions/pi-goal-pro
cp ./index.ts ~/.pi/agent/extensions/pi-goal-pro/

Перезагрузить Pi:

/reload

Проверить что загрузилось:

/goal status

Быстрый старт

Задай цель — агент начнёт работать:

/goal Добавить retry логику в API клиент с экспоненциальной задержкой

Агент начинает немедленно. Статус в футере:

🎯 goal active (1.2K/50K)    ← статус в футере

Управление жизненным циклом:

/goal status        # Показать текущее состояние
/goal pause         # Приостановить активную цель
/goal resume        # Возобновить приостановленную
/goal clear         # Удалить все цели

Возможности

🎯 Установка цели

/goal Переписать auth модуль

# С бюджетом токенов (автопауза при превышении):
/goal Переписать auth модуль --tokens 100k

# С лимитом авто-продолжений:
/goal Переписать auth модуль --max-turns 10

🤖 Инструменты агента

Когда цель активна, агент получает два инструмента:

get_goal — прочитать состояние цели:

{
  "active": {
    "objective": "Переписать auth модуль на JWT",
    "status": "active",
    "tokens_used": 12400,
    "token_budget": 50000,
    "remaining_tokens": 37600,
    "time_used_seconds": 89,
    "auto_turns": 3,
    "max_auto_turns": 25
  }
}

update_goal — завершить цель или признать недостижимой:

// Завершено — нужно подтверждение
update_goal({
  status: "complete",
  evidence: "JWT middleware реализован, 12 тестов проходят, CI без регрессий"
})

// Недостижимо — нужно объяснение
update_goal({
  status: "unmet",
  blocker: "Заблокировано решением по JWT библиотеке — ожидание security review"
})

🔄 Автопродолжение

После каждого turn агента расширение автоматически отправляет continuation prompt, если:

  • Цель всё ещё active
  • Предыдущий turn был goal-driven
  • Пользователь ничего не вводил (ввод приостанавливает автопродолжение)
  • Не достигнуты лимиты

🛡️ Детекция отсутствия прогресса

Если агент генерирует очень мало выходных токенов (по умолчанию <50) 2 раза подряд, цель автоматически приостанавливается:

⏸ Goal paused (no progress for 2 turns). Use /goal resume to continue.

Это предотвращает бесконечные циклы, когда агент просто подтверждает получение без реального прогресса.

💰 Бюджет токенов

Установи бюджет с --tokens:

/goal Написать документацию для всех API эндпоинтов --tokens 100k

Когда бюджет исчерпан, цель приостанавливается с wrap-up промптом — агент подводит итог.

📋 Завершение с доказательствами

Агент обязан предоставить конкретные доказательства перед отметкой цели как выполненной. Это предотвращает преждевременные "done" и гарантирует верификацию по реальным файлам, тестам и выводам команд.


Команды

Команда Описание
/goal <objective> Установить новую цель
/goal <text> --tokens N Цель с бюджетом токенов
/goal <text> --max-turns N Цель с лимитом авто-продолжений
/goal status Показать состояние
/goal pause Приостановить
/goal resume Возобновить
/goal clear Удалить все
/goal help Справка

Как это работает

/goal Переписать auth модуль
        │
        ▼
  ✓ Цель создана, сохранена в session entry
  ✓ Агент получил get_goal + update_goal
  ✓ Первое продолжение запущено немедленно
        │
        ▼
  ┌── Цикл автопродолжения ───────────────────┐
  │                                           │
  │  turn_start → turn_end → agent_end        │
  │                              │            │
  │                    ┌─────────┴─────────┐  │
  │                    │ Цель активна?     │  │
  │                    │ Нет прогресса?    │  │
  │                    │ Пользователь ввёл?│  │
  │                    │ Бюджет исчерпан?  │  │
  │                    │ Лимит turn-ов?    │  │
  │                    └─────────┬─────────┘  │
  │                              │            │
  │                    ┌─────────┴──────────┐ │
  │                    │ Да → continuation  │ │
  │                    │ Нет → stop/pause   │ │
  │                    └────────────────────┘ │
  │                                           │
  └───────────────────────────────────────────┘
        │
        ▼
  Агент вызывает update_goal({ status: "complete", evidence })
  → Цель архивирована, агент остановлен

Сохранение состояния

Состояние цели хранится в session entry (custom type pi-goal-pro). Оно переживает:

  • Перезагрузку сессии (/reload)
  • Компактизацию (compaction)
  • Навигацию по дереву сессии (/tree)
  • Возобновление сессии

Состояние привязано к ветке — при переходе на другую ветку восстанавливается состояние целей для этой ветки.


Философия дизайна

  1. Пользователь владеет целью — Агент не может молча изменить objective.
  2. Доказательства перед завершением — Агент должен верифицировать по реальным артефактам.
  3. Никаких бесконечных циклов — Детекция отсутствия прогресса, лимит turn-ов и бюджет токенов.
  4. Ввод пользователя приостанавливает — Когда ты печатаешь, автопродолжение ставится на паузу.
  5. Состояние привязано к ветке — /tree в другую точку восстанавливает цели этой точки.

Разработка

Расширение в одном файле — не требует сборки. Правишь index.ts, затем /reload.

Запуск без установки:

pi -e ~/.pi/agent/extensions/pi-goal-pro/index.ts

Тесты:

node --test tests/

Лицензия

MIT