Files
pi-auto-reinject/BACKLOG.md
T
grayhook ab4c133a9c BACKLOG: close B-001 (LLM available), open B-002 reinject E2E.
LiteLLM works via pi-provider-litellm; remaining gap is skill
registration for planReinject when skills load only via --skill CLI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 14:05:19 +07:00

69 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BACKLOG — pi-skill-reinject
Журнал **открытых** ограничений и сбоев при разработке, ручном тесте с `pi`, интеграции с [pi-auto-compact](https://github.com/capyup/pi-auto-compact) или неясностях API Pi.
Не путать с [`TODO.md`](./TODO.md): там план разработки; здесь — наблюдения из runtime, которые потом закрывают пачкой (правка кода, документация, issue upstream Pi).
Правило для агентов: [`.cursor/rules/dev-backlog.mdc`](./.cursor/rules/dev-backlog.mdc).
---
## Когда добавлять пункт
- Поведение Pi / extension API не совпало с [`SPEC.md`](./SPEC.md) или [документацией Pi](https://github.com/earendil-works/pi/blob/main/packages/coding-agent/docs/extensions.md).
- Ошибка или гонка при совместной работе с pi-auto-compact (`sendUserMessage`, `before_agent_start`, follow-up).
- Ручной E2E не воспроизводится стабильно; обходной путь есть, но хрупкий.
- Неясность в публичном API (события без `reason`, формат entries, settings merge).
- Пришлось дублировать приватную логику Pi — зафиксировать риск и желаемый upstream.
**Не добавлять:** ожидаемое «extension выключен по умолчанию»; отсутствие установленного `pi`; разовый сбой без воспроизведения; пункты из плана фаз (это `TODO.md`).
---
## Формат пункта
Следующий свободный id: **`B-###`** (смотреть заголовки ниже, увеличивать номер).
```markdown
### 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; блок перенести в [Закрыто](#закрыто).
---
## Открыто
### B-002 · open · e2e · 2026-06-17
- **Сценарий:** Manual E2E §12.2 п.25, §12.3 п.37, §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` (`loadSkills` → 0 skills без discovery), `src/kept.ts` (`filterSkillsNeedingReinject`), `src/commands.ts` (`getRegisteredSkills()` без `resolveRegisteredSkills`), `before_agent_start` cache `registeredSkills`
- **Факт:** на машине с LiteLLM (`pi-provider-litellm`, `Eltex-Coder-Senior`) RPC smoke: команды OK, `/skill:fup-blame-commits` + `--skill ~/.cursor/skills/fup-blame-commits` → skill-блок в messages OK, ручной `/compact` → reinject нет (ожидаемо). Auto compact (RPC `compact`) + follow-up prompt → суффикса `[skill-reinject] Re-applied…` нет; `/skill-reinject now` после turn → новых inject-сообщений нет. `loadSkills({ includeDefaults: true })` в репо возвращает `[]`; skills лежат в `~/.cursor/skills`, не в путях discovery Pi
- **Обход:** для ручного E2E — skill в каталоге discovery Pi (`~/.pi/agent/skills`, project skills) или убедиться, что `before_agent_start` заполняет `systemPromptOptions.skills` для `--skill` CLI
- **Критерий закрытия:** (1) RPC или TUI: `/skill-reinject on``/skill:name` → auto compaction → на следующем turn в контексте reinject с суффиксом или skill-блок вне kept window; (2) `/skill-reinject now` добавляет блоки для tracked skill; (3) с pi-auto-compact: defer, нет `Agent is already processing`, continue после compact (§12.3 п.45); (4) unit/E2E не регрессят
- **Предложение:** в `commands.ts` / `reinjectNow` использовать `resolveRegisteredSkills(ctx.cwd, registeredSkills)`; рассмотреть reinject по `state.skills` + `filePath` tracked, если skill ещё на диске, без жёсткой привязки к `resourceLoader`; README — явно про `--skill` vs discovery paths
_Новые пункты — ниже (следующий id: **B-003**)._
---
## Закрыто
### 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 model `Eltex-Coder-Senior` в `settings.json`
- **Закрытие:** LLM доступен; частичный RPC smoke пройден (коммиты phase 13). Оставшиеся E2E-дыры — B-002