papayu/docs/CLAUDE_AND_AGENT_SYNC.md
Yuriy 65e95a458d feat: мульти-провайдер LLM, тренды дизайна, Snyk/Documatic sync, личная автоматизация
- Мульти-провайдер: 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>
2026-02-10 15:05:39 +03:00

152 lines
8.2 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.

# Claude и синхронизация с агентом (Claude Code / Cursor)
Настройка PAPA YU для работы с Claude и автоматической синхронизации состояния с IDE-агентом (Cursor, Claude Code и т.п.).
---
## 1. Использование Claude как LLM
PAPA YU вызывает **OpenAI-совместимый** API. Claude можно подключить двумя способами.
### Вариант A: OpenRouter (рекомендуется)
[OpenRouter](https://openrouter.ai/) даёт единый API для разных моделей, включая Claude. Формат запросов совпадает с OpenAI.
1. Зарегистрируйтесь на [openrouter.ai](https://openrouter.ai/).
2. Создайте API-ключ.
3. Задайте переменные окружения:
```bash
export PAPAYU_LLM_API_URL="https://openrouter.ai/api/v1/chat/completions"
export PAPAYU_LLM_API_KEY="sk-or-v1-ваш-ключ"
export PAPAYU_LLM_MODEL="anthropic/claude-3.5-sonnet"
```
Или для Claude 3 Opus:
```bash
export PAPAYU_LLM_MODEL="anthropic/claude-3-opus"
```
4. Запуск: `npm run tauri dev` (или через `start-with-openai.sh`, подставив эти переменные в `.env.openai`).
Кнопка **«Предложить исправления»** будет вызывать Claude через OpenRouter.
### Вариант B: Прямой API Anthropic
Нативный API Anthropic (Messages API) использует другой формат запросов. В текущей версии PAPA YU его поддержка не реализована — используйте OpenRouter (вариант A).
---
## 2. Мульти-провайдер: сбор от нескольких ИИ и оптимальное решение
Чтобы агент собирал ответы от **нескольких ИИ** (Claude, OpenAI и др.), анализировал их и выдавал один оптимальный план, задайте переменную **PAPAYU_LLM_PROVIDERS** — JSON-массив провайдеров.
### Формат PAPAYU_LLM_PROVIDERS
```json
[
{ "url": "https://api.openai.com/v1/chat/completions", "model": "gpt-4o-mini", "api_key": "sk-..." },
{ "url": "https://openrouter.ai/api/v1/chat/completions", "model": "anthropic/claude-3.5-sonnet", "api_key": "sk-or-v1-..." }
]
```
- **url** — OpenAI-совместимый endpoint.
- **model** — имя модели.
- **api_key** — опционально; если не указан, используется **PAPAYU_LLM_API_KEY**.
Запросы к провайдерам выполняются **параллельно**. Результаты объединяются в один план.
### Агрегация
- **Без агрегатора** (по умолчанию): планы объединяются в Rust: действия по одному пути дедуплицируются, итог — один план с объединённым списком действий.
- **С агрегатором-ИИ**: задайте **PAPAYU_LLM_AGGREGATOR_URL** (и при необходимости **PAPAYU_LLM_AGGREGATOR_KEY**, **PAPAYU_LLM_AGGREGATOR_MODEL**). ИИ-агрегатор получит все планы и вернёт один оптимальный в том же JSON-формате.
Пример (одна строка в `.env.openai`):
```bash
# Мульти-провайдер: Claude + OpenAI, без отдельного агрегатора
export PAPAYU_LLM_PROVIDERS='[{"url":"https://openrouter.ai/api/v1/chat/completions","model":"anthropic/claude-3.5-sonnet","api_key":"sk-or-v1-..."},{"url":"https://api.openai.com/v1/chat/completions","model":"gpt-4o-mini","api_key":"sk-..."}]'
# Опционально: отдельная модель для слияния планов
# PAPAYU_LLM_AGGREGATOR_URL=https://api.openai.com/v1/chat/completions
# PAPAYU_LLM_AGGREGATOR_KEY=sk-...
# PAPAYU_LLM_AGGREGATOR_MODEL=gpt-4o-mini
```
Если **PAPAYU_LLM_PROVIDERS** задан и не пустой, обычный одиночный вызов **PAPAYU_LLM_API_URL** не используется для планирования — вместо него выполняется мульти-провайдерный сценарий.
---
## 3. Автоматическая синхронизация с агентом (Claude Code / Cursor)
Идея: после каждого анализа PAPA YU записывает краткое состояние в файл проекта. Агент в IDE (Cursor, Claude Code) может читать этот файл и учитывать контекст.
### Включение записи sync-файла
Задайте переменную окружения:
```bash
export PAPAYU_AGENT_SYNC=1
```
После каждого успешного анализа в корне **проекта** (путь, который вы анализировали) создаётся или обновляется файл:
```
<путь_проекта>/.papa-yu/agent-sync.json
```
Содержимое (пример):
```json
{
"path": "/Users/you/project",
"updated_at": "2026-02-08T12:00:00Z",
"narrative": "Я проанализировал проект...",
"findings_count": 3,
"actions_count": 5
}
```
- **path** — путь к проекту.
- **updated_at** — время последнего анализа (ISO 8601).
- **narrative** — краткий человекочитаемый вывод.
- **findings_count** / **actions_count** — число находок и действий.
(При необходимости можно расширить полями `report_md_preview` и др.)
### Как использовать в Cursor / Claude Code
1. **Правило в Cursor**
В `.cursor/rules` или в настройках можно добавить правило: «Перед правками проверяй `.papa-yu/agent-sync.json` в корне проекта — там последний анализ PAPA YU (narrative, findings_count, actions_count). Учитывай это при предложениях.»
2. **Чтение из кода/скрипта**
Агент или скрипт может читать `./.papa-yu/agent-sync.json` и использовать поля для контекста или логики.
3. **Обратная связь (по желанию)**
Можно вручную создать `.papa-yu/agent-request.json` с полем `"action": "analyze"` и путём — в будущих версиях PAPA YU сможет обрабатывать такие запросы (сейчас только запись sync-файла реализована).
---
## 4. Онлайн-взаимодействие
- **LLM** уже работает онлайн: запросы к OpenRouter/OpenAI идут по HTTPS.
- **Синхронизация с агентом** — локальная: файл `.papa-yu/agent-sync.json` на диске; Cursor/Claude Code читает его локально.
- **Расширение (будущее)** — опциональный локальный HTTP-сервер в PAPA YU (например, `127.0.0.1:3939`) с эндпоинтами `POST /analyze`, `GET /report` для вызова из скриптов или агента. Пока достаточно файловой синхронизации.
---
## 5. Краткий чеклист
| Шаг | Действие |
|-----|----------|
| 1 | Задать `PAPAYU_LLM_API_URL`, `PAPAYU_LLM_API_KEY`, `PAPAYU_LLM_MODEL` (OpenRouter + Claude). |
| 2 | При необходимости задать `PAPAYU_AGENT_SYNC=1` для записи `.papa-yu/agent-sync.json`. |
| 3 | Запустить PAPA YU, выполнить анализ проекта. |
| 4 | В Cursor/Claude Code добавить правило или логику чтения `.papa-yu/agent-sync.json`. |
---
**Snyk Code и Documatic:** для дополнения анализа кода (Snyk) и структурирования архитектуры (Documatic) см. **`docs/SNYK_AND_DOCUMATIC_SYNC.md`**.
*См. также `docs/OPENAI_SETUP.md`, `env.openai.example`.*