ca97660bac
Document root cause and fix strategy from lost-reinject.jsonl analysis. Add B-003 to BACKLOG; ignore *.ndjson and *.jsonl session dumps. Co-authored-by: Cursor <cursoragent@cursor.com>
6.2 KiB
6.2 KiB
BACKLOG — pi-skill-reinject
Журнал открытых ограничений и сбоев при разработке, ручном тесте с pi, интеграции с pi-auto-compact или неясностях API Pi.
Не путать с TODO.md: там план разработки; здесь — наблюдения из runtime, которые потом закрывают пачкой (правка кода, документация, issue upstream Pi).
Правило для агентов: .cursor/rules/dev-backlog.mdc.
Когда добавлять пункт
- Поведение Pi / extension API не совпало с
SPEC.mdили документацией Pi. - Ошибка или гонка при совместной работе с pi-auto-compact (
sendUserMessage,before_agent_start, follow-up). - Ручной E2E не воспроизводится стабильно; обходной путь есть, но хрупкий.
- Неясность в публичном API (события без
reason, формат entries, settings merge). - Пришлось дублировать приватную логику Pi — зафиксировать риск и желаемый upstream.
Не добавлять: ожидаемое «extension выключен по умолчанию»; отсутствие установленного pi; разовый сбой без воспроизведения; пункты из плана фаз (это TODO.md).
Формат пункта
Следующий свободный id: B-### (смотреть заголовки ниже, увеличивать номер).
### B-001 · open · pi-api · 2026-06-17
- **Сценарий:** что пытались сделать
- **Проблема:** одно предложение — в чём затык
- **Место:** `session_compact` / `before_agent_start` / pi-auto-compact / `src/…`
- **Факт:** текст ошибки, неожиданное поведение, расхождение с SPEC
- **Обход:** что сработало (или «нет»)
- **Предложение:** правка в extension / SPEC / issue в Pi / pi-auto-compact
При закрытии: статус open → done, дата закрытия, ссылка на коммит/issue; блок перенести в Закрыто.
Открыто
Новые пункты — ниже (следующий id: B-004).
B-003 · open · e2e · 2026-06-18
- Сценарий: Длинная сессия
gitlab-mr-review+ pi-auto-compact; auto compaction в ходе Phase 6 review (issue #480334) - Проблема: Второй подряд auto compaction не re-inject'ит tracked skill;
/skill-reinjectstatus показываетlast compaction: none - Место:
session_before_compact/session_compact/ defer +before_agent_start; артефактlost-reinject.jsonl - Факт: Compaction #1 (07:25:03):
lastCompactionSource: auto,skill-reinject:injectесть, follow-up «Auto-compact ran before this turn». Compaction #2 (+11s, mid-turn послеls):lastCompactionSource: null, inject нет, агент продолжил без user-prompt. Skillgitlab-mr-reviewвне kept window (оригинальный block доfirstKeptEntryId; reinject —custom_message, не user) - Обход:
/skill-reinject now(не проверялось в этом прогоне) - Предложение: Phase 15 в
TODO.md— fallback детекции source наsession_compact+ mid-turn доставка defer внеbefore_agent_start+ kept-window учитываетskill-reinject:inject
Закрыто
B-002 · done · e2e · 2026-06-17 (закрыт 2026-06-17)
- Сценарий: Manual E2E §12.2 п.2–5, §12.3 п.3–7, §13 п.3/9/10 — auto compaction → re-inject tracked skills;
/skill-reinject nowкак контроль - Проблема: skill из
--skill /path/to/SKILL.mdразворачивается в контекст, но не попадает вresourceLoader→planReinject/reinjectNowотфильтровывают его (filterSkillsNeedingReinjectтребуетregisteredNames.has(name)) - Место:
src/skills-registry.ts,src/kept.ts,src/reinject.ts,before_agent_start - Факт: pre-fix RPC:
registeredмог быть пуст приloadSkillsfallback; skill вне kept + пустой registry →planned=[]. Post-fix: defer plan без registry на compact, consume/build loose fallback поtracked.filePath,requireRegistered(default false) - Закрытие: Phase 14 commits (
aca68e7…e3873d7); unit regression 84 tests;docs/e2e-b002-post-fix.md— short RPC session держит skill в kept (reinject не нужен); полный compact→reinject RPC требует длинной сессии - Предложение: (реализовано)
planDeferredReinject,filterPendingReinjectForConsume, loosebuildReinjectBlocks/reinjectNow, READMErequireRegistered
B-001 · done · e2e · 2026-06-17 (закрыт 2026-06-17)
- Сценарий: Manual E2E §12.2 / §12.3 — блокировка из‑за отсутствия LLM
- Проблема: в среде агента не было доступного LLM
- Место:
pi --mode rpc/ compaction - Факт: изначально нет API key;
pi-llama-cpp→192.168.1.159:8080недоступен. После настройки:pi-provider-litellm,~/.pi/agent/litellm-models.json,auth.json;pi --list-models→Eltex-Coder-Senior,Eltex-Kimi; compaction и agent turn работают - Обход: LiteLLM proxy (
llm2.eltex.loc:4000), default modelEltex-Coder-Seniorвsettings.json - Закрытие: LLM доступен; частичный RPC smoke пройден (коммиты phase 13). Оставшиеся E2E-дыры — B-002