- Мульти-провайдер: PAPAYU_LLM_PROVIDERS — сбор планов от нескольких ИИ (Claude, OpenAI), агрегация - Тренды дизайна и иконок: вкладка в модалке, поиск по безопасным доменам (Tavily include_domains) - Snyk Code: PAPAYU_SNYK_SYNC, REST API issues → snyk_findings в agent-sync - Documatic: architecture_summary из .papa-yu/architecture.md в agent-sync - Личная автоматизация: capability personal-automation (терминал git/npm/cargo, открытие URL) - agent_sync расширен: snyk_findings, architecture_summary; analyze_project_cmd и run_batch пишут sync - Документация: SNYK_AND_DOCUMATIC_SYNC.md, SECURITY_AND_PERSONAL_AUTOMATION.md, обновлён CLAUDE_AND_AGENT_SYNC Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
2.6 KiB
Markdown
75 lines
2.6 KiB
Markdown
# План Protocol v3
|
||
|
||
**Реализовано (v2.4.5).** `PAPAYU_PROTOCOL_VERSION=3` включает EDIT_FILE. v2 решает «перезапись файла» через PATCH_FILE, но патчи всё ещё бывают хрупкими — v3 EDIT_FILE даёт якорные правки anchor/before/after.
|
||
|
||
---
|
||
|
||
## Вариант v3-A (рекомендуемый): EDIT_FILE с операциями
|
||
|
||
Новый action:
|
||
|
||
```json
|
||
{
|
||
"kind": "EDIT_FILE",
|
||
"path": "src/foo.py",
|
||
"base_sha256": "...",
|
||
"edits": [
|
||
{
|
||
"op": "replace",
|
||
"anchor": "def parse(",
|
||
"before": "return value.strip()",
|
||
"after": "if value is None:\n return \"\"\nreturn value.strip()"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
**Плюсы:**
|
||
|
||
- Устойчивее к line drift (якорь по содержимому, не по номерам строк)
|
||
- Проще валидировать «что именно поменялось»
|
||
- Меньше риска ERR_PATCH_APPLY_FAILED
|
||
|
||
**Минусы:**
|
||
|
||
- Нужен свой «якорный» редактор
|
||
- Якорь должен быть уникальным в файле
|
||
|
||
**MVP для v3:**
|
||
|
||
- Оставить PATCH_FILE как fallback
|
||
- Добавить EDIT_FILE только для текстовых файлов
|
||
- Engine: «найди anchor → проверь before → замени на after»
|
||
- base_sha256 остаётся обязательным
|
||
|
||
---
|
||
|
||
## Вариант v3-B: AST-level edits (язык-специфично)
|
||
|
||
Для Python/TS можно делать по AST (insert/delete/replace узлов). Плюсы: максимальная точность. Минусы: значительно больше работы, сложнее поддерживать, нужно знать язык.
|
||
|
||
---
|
||
|
||
## Совместимость v1/v2/v3
|
||
|
||
- v1: UPDATE_FILE, CREATE_FILE, …
|
||
- v2: + PATCH_FILE, base_sha256
|
||
- v3: + EDIT_FILE (якорные операции), PATCH_FILE как fallback
|
||
|
||
Выбор активного протокола по env. v3 совместим с v2 (EDIT_FILE — расширение).
|
||
|
||
---
|
||
|
||
## Когда включать v3 (gates по weekly report)
|
||
|
||
Включать v3 для проекта, если за последнюю неделю:
|
||
|
||
- `fallback_by_reason.ERR_PATCH_APPLY_FAILED >= 3` **или**
|
||
- группа ошибок PATCH растёт week-over-week **и**
|
||
- `repair_success_rate` по patch падает
|
||
|
||
**Не включать / откатить v3**, если:
|
||
|
||
- много `ERR_NON_UTF8_FILE` (v3 не поможет)
|
||
- проект содержит много автогенерённых файлов или бинарных артефактов
|