pi-goal-pro
v1.3.1
Published
Persistent autonomous goals for Pi — with no-progress detection, evidence-based completion, token budgets, and auto-continuation
Downloads
939
Maintainers
Readme
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) - Возобновление сессии
Состояние привязано к ветке — при переходе на другую ветку восстанавливается состояние целей для этой ветки.
Философия дизайна
- Пользователь владеет целью — Агент не может молча изменить objective.
- Доказательства перед завершением — Агент должен верифицировать по реальным артефактам.
- Никаких бесконечных циклов — Детекция отсутствия прогресса, лимит turn-ов и бюджет токенов.
- Ввод пользователя приостанавливает — Когда ты печатаешь, автопродолжение ставится на паузу.
- Состояние привязано к ветке —
/treeв другую точку восстанавливает цели этой точки.
Разработка
Расширение в одном файле — не требует сборки. Правишь index.ts, затем /reload.
Запуск без установки:
pi -e ~/.pi/agent/extensions/pi-goal-pro/index.tsТесты:
node --test tests/Лицензия
MIT
