- Мульти-провайдер: 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> |
||
|---|---|---|
| .github/workflows | ||
| docs | ||
| public | ||
| scripts | ||
| src | ||
| src-tauri | ||
| tests | ||
| .gitignore | ||
| AUDIT.md | ||
| CHANGELOG.md | ||
| env.openai.example | ||
| index.html | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| PAPA YU — Сборка и запуск.command | ||
| PAPA YU.command | ||
| README.md | ||
| start-with-openai.sh | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.d.ts | ||
| vite.config.js | ||
| vite.config.ts | ||
PAPA YU v2.4.5
Десктопное приложение для анализа проекта и автоматических исправлений (README, .gitignore, tests/, структура) с транзакционным apply, реальным undo и autoCheck с откатом.
Единственная папка проекта
Вся разработка, сборка и запуск ведутся из этой папки (например /Users/.../Desktop/papa-yu). ТЗ и спецификации лежат отдельно в папке папа-ю на рабочем столе (не переносятся). Подробнее: docs/ЕДИНАЯ_ПАПКА_ПРОЕКТА.md.
Запуск без терминала: двойной клик по PAPA YU.command (только запуск) или по PAPA YU — Сборка и запуск.command (сборка + запуск).
Требования
- Node.js 18+
- Rust 1.70+
- npm
Запуск
cd papa-yu
npm install
npm run tauri dev
Из корня проекта можно также: cd src-tauri && cargo tauri dev.
Если в окне видно «Could not fetch a valid…» — фронт не загрузился. Запускайте приложение только так: в терминале из папки проекта выполните npm run tauri dev (это поднимает и Vite, и Tauri). Не открывайте скомпилированный .app без dev-сервера, если хотите видеть интерфейс.
Сборка
npm run tauri build
v2.4.5 — что реализовано
Добавлено в v2.4.5
- Save as Project Note — кнопка в блоке Online Research сохраняет результат в domain notes проекта (distill через LLM).
- Контекст v3 — при
PAPAYU_PROTOCOL_VERSION=3FILE-блоки включают sha256 для base_sha256 в EDIT_FILE.
v2.4.4 — что реализовано
Анализ и профиль
- Анализ по пути — выбор папки или ввод пути вручную; анализ возвращает отчёт (findings, recommendations, actions, action_groups, fix_packs).
- Профиль по пути — автоматическое определение типа проекта (React/Vite, Next.js, Node, Rust, Python) и лимитов (max_actions_per_tx, timeout_sec, max_files). Профиль и лимиты отображаются в форме.
Применение и откат
- Транзакционное apply — перед применением создаётся снимок; после apply выполняется autoCheck (cargo check / npm run build и т.д.) с таймаутом из профиля. При падении проверки — автоматический откат.
- Лимиты профиля — в
apply_actions_txиrun_batchпроверяется число действий противmax_actions_per_tx; при превышении возвращается ошибка TOO_MANY_ACTIONS. Таймаут проверок задаётся из профиля. - Undo/Redo — откат последней транзакции и повтор; состояние отображается в UI.
Безопасность
- Защита путей — запрещено изменение служебных путей (.git, node_modules, target, dist и т.д.) и бинарных файлов; разрешены только текстовые расширения (см. guard в коде).
- Подтверждение — применение только при явном подтверждении пользователя (user_confirmed).
- Allowlist команд — в verify и auto_check выполняются только разрешённые команды с фиксированными аргументами (конфиг в
src-tauri/config/verify_allowlist.json). - Терминал и интернет (личное использование) — приложение может открывать ссылки в браузере (Chrome и др.) и выполнять ограниченный набор команд (git, npm, cargo и т.д.) через scope в capability
personal-automation. Подробнее:docs/SECURITY_AND_PERSONAL_AUTOMATION.md.
UX
- Папки и файлы — выбор папки, прикрепление файлов (с фильтром расширений: .ts, .tsx, .rs, .py, .json, .toml и др.), ручной ввод пути.
- История сессий — по выбранному проекту отображается список сессий (дата, количество событий); после agentic run список обновляется.
- Горячие клавиши — Ctrl+Enter (Cmd+Enter на Mac): отправить/запустить анализ; Escape: сбросить превью изменений.
- Тёмная тема — переключатель в боковой панели; выбор сохраняется в localStorage; поддержка системных настроек темы.
- Экспорт/импорт настроек — кнопки «Экспорт» и «Импорт» в боковой панели для сохранения и восстановления всех настроек (проекты, профили, сессии, папки) в JSON-файл.
Режимы
- Batch — анализ → превью → при необходимости применение с проверками (одна команда
run_batch). - Исправить автоматически (agentic run) — цикл: анализ → план → превью → применение → проверка; при неудаче проверки — откат и повтор в пределах max_attempts.
- Безопасные исправления в один клик — генерация безопасных действий по отчёту → превью → применение с проверкой.
- Предложить исправления — план по отчёту и цели: при наличии настройки LLM — вызов внешнего API (OpenAI/Ollama и др.), иначе эвристика.
LLM-планировщик (опционально)
Для кнопки «Предложить исправления» можно включить генерацию плана через OpenAI-совместимый API. Задайте переменные окружения перед запуском приложения:
PAPAYU_LLM_API_URL— URL API (обязательно), например:- OpenAI:
https://api.openai.com/v1/chat/completions - Ollama (локально):
http://localhost:11434/v1/chat/completions
- OpenAI:
PAPAYU_LLM_API_KEY— API-ключ (для OpenAI и облачных API; для Ollama можно не задавать).PAPAYU_LLM_MODEL— модель (по умолчаниюgpt-4o-mini), для Ollama — напримерllama3.2.PAPAYU_LLM_STRICT_JSON— при1/trueдобавляетresponse_format: { type: "json_schema", ... }(OpenAI Structured Outputs; Ollama может не поддерживать).
Поведение strict / best-effort:
- Если strict включён: приложение отправляет
response_formatв API; при невалидном ответе — локальная валидация схемы отклоняет и выполняется 1 авто-ретрай с repair-подсказкой («Верни ТОЛЬКО валидный JSON…»). - Если strict выключен или провайдер не поддерживает: best-effort парсинг (извлечение из markdown), затем локальная валидация схемы; при неудаче — тот же repair-ретрай.
Пример для Ollama (без ключа, локально):
export PAPAYU_LLM_API_URL="http://localhost:11434/v1/chat/completions"
export PAPAYU_LLM_MODEL="llama3.2"
npm run tauri dev
После этого кнопка «Предложить исправления» будет строить план через выбранный LLM.
Claude и синхронизация с агентом (Claude Code / Cursor): можно использовать Claude через OpenRouter (OpenAI-совместимый API): PAPAYU_LLM_API_URL=https://openrouter.ai/api/v1/chat/completions, PAPAYU_LLM_MODEL=anthropic/claude-3.5-sonnet. При PAPAYU_AGENT_SYNC=1 после каждого анализа в проекте записывается .papa-yu/agent-sync.json для чтения агентом в IDE. Подробнее: docs/CLAUDE_AND_AGENT_SYNC.md.
Если PAPAYU_LLM_API_URL не задан или пуст, используется встроенная эвристика (README, .gitignore, LICENSE, .env.example по правилам).
Online Research (опционально)
Команда research_answer_cmd: поиск через Tavily → fetch страниц (SSRF-safe) → LLM summarize с источниками. Вызов через researchAnswer(query) на фронте.
Env:
PAPAYU_ONLINE_RESEARCH=1— включить режим (по умолчанию выключен)PAPAYU_TAVILY_API_KEY— API-ключ Tavily (tavily.com)PAPAYU_ONLINE_MODEL— модель для summarize (по умолчанию из PAPAYU_LLM_MODEL)PAPAYU_ONLINE_MAX_SOURCES— макс. результатов поиска (default 5)PAPAYU_ONLINE_MAX_PAGES— макс. страниц для fetch (default 4)PAPAYU_ONLINE_PAGE_MAX_BYTES— лимит размера страницы (default 200000)PAPAYU_ONLINE_TIMEOUT_SEC— таймаут fetch (default 20)
Use as context: после online research кнопка «Use as context (once)» добавляет ответ в следующий PLAN/APPLY. Лимиты:
PAPAYU_ONLINE_CONTEXT_MAX_CHARS— макс. символов online summary (default 8000)PAPAYU_ONLINE_CONTEXT_MAX_SOURCES— макс. источников (default 10)- Online summary режется первым при превышении
PAPAYU_CONTEXT_MAX_TOTAL_CHARS.
Auto-use (X4):
PAPAYU_ONLINE_AUTO_USE_AS_CONTEXT=1— если включено, online research результат автоматически используется как контекст для повторногоproposeActionsбез участия пользователя (default 0).- Защита от циклов: максимум 1 auto-chain на один запрос (goal).
- UI: при auto-use показывается метка "Auto-used ✓"; кнопка "Disable auto-use" отключает для текущего проекта (сохраняется в localStorage).
Тренды дизайна и иконок (вкладка в модалке «Тренды и рекомендации»):
- Поиск трендовых дизайнов сайтов/приложений и иконок только из безопасных источников (allowlist доменов: Dribbble, Behance, Figma, Material, Heroicons, Lucide, shadcn, NNGroup и др.).
- Используется тот же
PAPAYU_TAVILY_API_KEY; запросы идут с параметромinclude_domains— только разрешённые домены. - Результаты показываются в списке и подмешиваются в контекст ИИ при «Предложить исправления», чтобы агент мог предлагать передовые дизайнерские решения при создании программ.
Domain notes (A1–A3)
Короткие «domain notes» на проект из online research: хранятся в .papa-yu/notes/domain_notes.json, при следующих запросах подмешиваются в prompt (с лимитами), чтобы реже ходить в Tavily и быстрее отвечать.
- Формат:
schema_version,updated_at,notes[](id, topic, tags, content_md, sources, confidence, ttl_days, usage_count, last_used_at, pinned). - Лимиты:
PAPAYU_NOTES_MAX_ITEMS=50,PAPAYU_NOTES_MAX_CHARS_PER_NOTE=800,PAPAYU_NOTES_MAX_TOTAL_CHARS=4000,PAPAYU_NOTES_TTL_DAYS=30. - Дистилляция: после online research можно сохранить заметку через LLM-сжатие (команда
distill_and_save_domain_note_cmd). - Injection: в
llm_plannerперед ONLINE_RESEARCH и CONTEXT вставляется блокPROJECT_DOMAIN_NOTES; отбор заметок по релевантности к goal (token overlap); при использовании обновляютсяusage_countиlast_used_at. - Trace:
notes_injected,notes_count,notes_chars,notes_ids. - Команды: load/save/delete/clear_expired/pin domain notes, distill_and_save_domain_note. Подробнее:
docs/IMPLEMENTATION_STATUS_ABC.md.
Weekly report proposals (B1–B2)
В еженедельном отчёте LLM может возвращать массив proposals (prompt_change, setting_change, golden_trace_add, limit_tuning, safety_rule) с полями title, why, risk, steps, expected_impact, evidence. В prompt добавлено правило: предлагать только то, что обосновано bundle + deltas. Секция «Предложения (proposals)» выводится в report_md.
Тестирование
- Юнит-тесты (Rust) — тесты для
detect_project_type,get_project_limits,is_protected_file,is_text_allowed(см.src-tauri/src/commands/get_project_profile.rsиapply_actions_tx.rs). Запуск:cd src-tauri && cargo test. - E2E сценарий — описание сценария «анализ → применение → undo» и критерии успеха см. в
docs/E2E_SCENARIO.md.
Архитектура
- Фронт: React 18, Vite 5, TypeScript; типы в
src/lib/types.ts, единый API-слой вsrc/lib/tauri.ts; компоненты PathSelector, AgenticResult, хук useUndoRedo. - Бэкенд: Tauri 2, Rust; команды в
src-tauri/src/commands/, транзакции и undo/redo вtx/, verify с таймаутом вverify.rs.
Документация
docs/LIMITS.md— границы продукта, Critical failures.docs/ARCHITECTURE.md— обзор архитектуры, модули, границы.docs/RUNBOOK.md— сборка, запуск, типовые проблемы.docs/adr/— Architecture Decision Records (Tauri, EDIT_FILE v3, SSRF).docs/TECH_MEMO_FOR_INVESTORS.md— технический memo для инвесторов.docs/BUYER_QA.md— вопросы покупателя и ответы.docs/IMPROVEMENTS.md— рекомендации по улучшениям.docs/E2E_SCENARIO.md— E2E сценарий и критерии успеха.docs/EDIT_FILE_DEBUG.md— чеклист отладки v3 EDIT_FILE.docs/INVESTMENT_READY_REPORT.md— отчёт о готовности к передаче/продаже.docs/ПРЕЗЕНТАЦИЯ_PAPA_YU.md— полномасштабная презентация программы (25 слайдов).CHANGELOG.md— история изменений по версиям.