- Мульти-провайдер: 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>
152 lines
8.2 KiB
Markdown
152 lines
8.2 KiB
Markdown
# 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`.*
|