pi

Ответить
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

pi

Сообщение ya »

https://github.com/earendil-works/pi

**Pi — это минимальный agent harness (каркас агента)**, поддерживающий 15+ провайдеров, включая **Ollama** для локальных моделей. Нужна документация по конфигурации профилей.
есть пакет **pi-profiles** для управления профилями. Давайте получим ещё информацию о локальных моделях и настройке Ollama.
Теперь я понимаю полную картину. Вот решение вашей проблемы:

## Использование локальной модели в Pi на Debian

**Ошибка "профиль не создан"** указывает на то, что пи ещё не инициализирована. Вот пошаговое решение:

### 1. **Установите Pi**

На Debian запустите:

```bash
curl -fsSL https://pi.dev/install.sh | sh
```

Или через npm (требует Node.js 22.19+):

```bash
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
```

Проверьте установку:

```bash
pi --version
```

### 2. **Инициализируйте конфигурацию (создайте профиль)**

Перейдите в папку, где хотите работать, и запустите Pi:

```bash
cd ~/my-project
pi
```

При первом запуске Pi автоматически создаст конфигурационную директорию `~/.pi/agent/` с необходимыми файлами (в том числе `settings.json` и `auth.json`).

### 3. **Настройте локальную модель через `models.json`**

Если вы используете **Ollama**, отредактируйте файл `~/.pi/agent/models.json`:

```bash
nano ~/.pi/agent/models.json
```

Добавьте конфигурацию для Ollama:

```json
{
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"models": [
{ "id": "mistral:latest" },
{ "id": "neural-chat:latest" }
]
}
}
}
```

Замените `mistral:latest` и `neural-chat:latest` на модели, которые вы хотите использовать.

### 4. **Убедитесь, что Ollama запущена**

На Debian запустите Ollama:

```bash
ollama serve
```

Или проверьте, что сервис работает:

```bash
curl http://localhost:11434/api/tags
```

### 5. **Выберите модель в Pi**

Откройте Pi и введите команду:

```
/model
```

Нажимайте стрелки вверх/вниз, чтобы найти вашу модель Ollama, затем нажмите `Enter`.

---

## Альтернатива: pi-profiles (для управления несколькими профилями)

Если позже вам понадобятся **несколько независимых профилей** (например, для разных проектов с разными моделями), установите **pi-profiles**:

```bash
npm install -g pi-profiles
```

Создайте профиль:

```bash
ppi create work --own-auth
ppi use work
```

Это создаст отдельную конфигурацию в `~/.pi/profiles/work/`.

---

## Файлы конфигурации

| Файл | Назначение |
|------|-----------|
| `~/.pi/agent/settings.json` | Общие настройки (тема, модель по умолчанию) |
| `~/.pi/agent/auth.json` | Сохранённые учётные данные провайдеров |
| `~/.pi/agent/models.json` | Кастомная конфигурация моделей (Ollama, LM Studio и т.д.) |
| `~/.pi/agent/sessions/` | Сохранённые сессии |

---

Когда вы запустите Pi в следующий раз, профиль уже будет создан, и вы сможете использовать локальную модель. Какую именно локальную модель вы хотите использовать — Ollama, llama.cpp или что-то ещё?
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

Судя по документации и обсуждениям в сообществе `pi.dev`, проблема с «несозданным профилем» или отсутствием конфигурации при использовании локальных моделей на Debian (и Linux в целом) чаще всего связана с тем, что инструмент не создает необходимые файлы конфигурации автоматически при первом запуске.

Вот пошаговая инструкция, как заставить это работать:

### 1. Понимание причины
Ошибка «профиль не создан» может относиться к двум вещам:
* **Базовая конфигурация моделей:** Pi не создает файл `models.json` в папке настроек по умолчанию. Без него он «не знает», как подключиться к вашему локальному серверу (например, Ollama).
* **Расширение `pi-profile`:** Если вы установили пакет `pi-profile` для переключения ролей (researcher, coder и т.д.), он требует наличия JSON-файлов в папке `~/.pi/profiles/`.

### 2. Настройка локальной модели (Ollama и др.)
Если вы хотите использовать локальный LLM, вам нужно вручную создать или отредактировать конфигурацию провайдеров.

1. Перейдите в директорию настроек: `cd ~/.pi/agent/` (или `~/.pi/` в зависимости от версии).
2. Найдите или создайте файл **`models.json`**.
3. Добавьте туда настройки вашего локального провайдера. Для Ollama это обычно выглядит так (упрощенно):
```json
{
"providers": {
"ollama": {
"endpoint": "http://localhost:11434/v1",
"api_key": "ollama"
}
},
"models": {
"local-model": {
"provider": "ollama",
"model": "llama3"
}
}
}
```
*(Замените `llama3` на имя модели, которую вы скачали в Ollama)*.

### 3. Решение проблемы с профилями (`pi-profile`)
Если вы используете расширение `pi-profile` и видите ошибку профиля:

1. **Установите расширение** (если еще не сделали):
```bash
pi install npm:pi-profile
```
2. **Создайте папку для профилей**, так как она не создается автоматически:
```bash
mkdir -p ~/.pi/profiles/
```
3. **Создайте ваш первый профиль**. Вы можете сделать это интерактивно внутри Pi:
- Запустите `pi`.
- Введите команду `/profile create`. Следуйте инструкциям ИИ для создания профиля.
- Или создайте файл вручную: `~/.pi/profiles/default.json` с описанием модели и системного промпта.

### 4. Запуск и проверка
После создания файлов:
1. Запустите Pi в нужной папке проекта: `pi`.
2. Выберите вашу локальную модель командой `/model`.
3. Если используете профиль: `/profile default`.

**Краткий итог для Debian:**
Если Pi «жалуется», что чего-то нет — скорее всего, он просто не создал папку или JSON-файл в `~/.pi/`. Создайте их вручную:
- Конфиг моделей $\rightarrow$ `~/.pi/agent/models.json`
- Профили $\rightarrow$ `~/.pi/profiles/<имя>.json`
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

Ваша проблема больше не связана с профилем — теперь это **конфликт расширений**.

Ошибка прямо говорит: `Tool "web_search" conflicts`. У вас установлены два разных расширения для поиска в сети (`@ollama/pi-web-search` и `pi-web-access`), и оба они пытаются зарегистрировать инструмент с одинаковым названием `web_search`. Pi не может запустить два разных инструмента с одним именем.

### Как это исправить (3 способа):

#### Способ 1: Быстрый запуск без расширений (для проверки)
Если вам нужно просто запустить Pi прямо сейчас, используйте флаг, который предложила сама программа:
```bash
pi -ne
```
Это запустит Pi в «чистом» режиме без загрузки всех плагинов.

#### Способ 2: Удаление конфликтующего расширения (рекомендуется)
Вам нужно оставить только один инструмент поиска. Скорее всего, `@ollama/pi-web-search` и `pi-web-access` делают одно и то же. Лучше оставить один из них.

Попробуйте удалить одно из них через терминал:
```bash
pi uninstall npm:@ollama/pi-web-search
```
Или, если хотите оставить поиск от Ollama:
```bash
pi uninstall npm:pi-web-access
```
После этого попробуйте запустить `pi` снова.

#### Способ 3: Ручная очистка (если `uninstall` не сработал)
Если команда `uninstall` выдает ошибку, удалите папку с модулем вручную:
1. Перейдите в папку расширений:
```bash
cd /home/gt/.pi/agent/npm/node_modules/
```
2. Удалите одну из конфликтующих папок:
```bash
rm -rf @ollama/pi-web-search
# ИЛИ
rm -rf pi-web-access
```

### Почему это произошло?
Вы, вероятно, устанавливали разные пакеты для обеспечения доступа ИИ к интернету. В архитектуре Pi каждый плагин регистрирует свои "инструменты" (tools). Когда два плагина говорят: «Я теперь отвечаю за функцию `web_search`», возникает критический сбой при запуске.

**После того как решите конфликт расширений**, возвращайтесь к выбору модели в меню (где вы видите `sysadmin:latest`), и Pi должен запуститься нормально.
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

Ваша проблема больше не связана с профилем — теперь это **конфликт расширений**.

Ошибка прямо говорит: `Tool "web_search" conflicts`. У вас установлены два разных расширения для поиска в сети (`@ollama/pi-web-search` и `pi-web-access`), и оба они пытаются зарегистрировать инструмент с одинаковым названием `web_search`. Pi не может запустить два разных инструмента с одним именем.

### Как это исправить (3 способа):

#### Способ 1: Быстрый запуск без расширений (для проверки)
Если вам нужно просто запустить Pi прямо сейчас, используйте флаг, который предложила сама программа:
```bash
pi -ne
```
Это запустит Pi в «чистом» режиме без загрузки всех плагинов.

#### Способ 2: Удаление конфликтующего расширения (рекомендуется)
Вам нужно оставить только один инструмент поиска. Скорее всего, `@ollama/pi-web-search` и `pi-web-access` делают одно и то же. Лучше оставить один из них.

Попробуйте удалить одно из них через терминал:
```bash
pi uninstall npm:@ollama/pi-web-search
```
Или, если хотите оставить поиск от Ollama:
```bash
pi uninstall npm:pi-web-access
```
После этого попробуйте запустить `pi` снова.

#### Способ 3: Ручная очистка (если `uninstall` не сработал)
Если команда `uninstall` выдает ошибку, удалите папку с модулем вручную:
1. Перейдите в папку расширений:
```bash
cd /home/gt/.pi/agent/npm/node_modules/
```
2. Удалите одну из конфликтующих папок:
```bash
rm -rf @ollama/pi-web-search
# ИЛИ
rm -rf pi-web-access
```

### Почему это произошло?
Вы, вероятно, устанавливали разные пакеты для обеспечения доступа ИИ к интернету. В архитектуре Pi каждый плагин регистрирует свои "инструменты" (tools). Когда два плагина говорят: «Я теперь отвечаю за функцию `web_search`», возникает критический сбой при запуске.

**После того как решите конфликт расширений**, возвращайтесь к выбору модели в меню (где вы видите `sysadmin:latest`), и Pi должен запуститься нормально.
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

Судя по логам, происходит «зацикливание»: при каждом запуске Pi пытается автоматически установить `@ollama/pi-web-search`, который тут же вступает в конфликт с уже установленным `pi-web-access`.

Вы пытаетесь запустить Pi через **меню выбора (Ollama menu)**, и этот скрипт запуска, вероятно, прописан так, что он принудительно устанавливает пакет поиска перед стартом.

### Решение: Полная очистка конфликтующего модуля

Так как автоматика продолжает устанавливать конфликтный пакет, самый надежный способ — удалить `pi-web-access` полностью, чтобы оставить только тот поиск, который Pi хочет установить сам.

**Выполните эти команды в терминале Debian:**

1. **Принудительно удалите старый пакет поиска:**
```bash
rm -rf /home/gt/.pi/agent/npm/node_modules/pi-web-access
```

2. **Очистите кэш npm внутри Pi (на всякий случай):**
```bash
rm -rf /home/gt/.pi/agent/npm/node_modules/.cache
```

3. **Попробуйте запустить Pi снова через меню.**

---

### Что произойдет теперь:
1. Меню запустит Pi.
2. Pi увидит, что `@ollama/pi-web-search` нужно установить $\rightarrow$ установит его.
3. Поскольку мы удалили `pi-web-access`, **конфликта имен (`web_search`) больше не будет**.
4. Pi успешно запустится.

**Если вы всё же хотите использовать именно `pi-web-access`, а не версию от Ollama:**
Вам придется запускать Pi не через это меню, а напрямую из терминала командой `pi`, предварительно удалив `@ollama/pi-web-search`, чтобы авто-инсталлер его не вернул. Но проще всего оставить тот поиск, который Pi устанавливает по умолчанию.
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

## Настройка Pi как локального системного администратора на RTX 3060

**Pi** — это фреймворк для AI-агентов с поддержкой различных LLM-провайдеров. Чтобы сделать из него локального сисадмина, вам нужно:

---

## Выбор и установка локальной модели

### Подходящие модели для RTX 3060 (12GB VRAM)

| Модель | Размер | VRAM | Рекомендация |
|--------|--------|------|--------------|
| **Llama 2 13B** | ~7GB в fp16 | 10-12GB | Хороший баланс скорости и качества |
| **Mistral 7B** | ~4GB в fp16 | 8-10GB | Быстрая, отличное качество |
| **Neural Chat 7B** | ~4GB в fp16 | 8-10GB | Оптимизирована для диалогов |
| **Code Llama 13B** | ~7GB в fp16 | 10-12GB | Для системных скриптов |
| **Llama 2 7B** | ~3.5GB в fp16 | 6-8GB | Компактная, быстрая |

**Рекомендация**: начните с **Mistral 7B** или **Llama 2 13B** через **Ollama** или **LM Studio**.

---

## Способ 1: Через Ollama (рекомендуется)

### Установка Ollama
```bash
# На Linux:
curl https://ollama.ai/install.sh | sh

# На macOS: скачайте с https://ollama.ai
# На Windows: скачайте установщик
```

### Запуск модели локально
```bash
ollama pull mistral # или llama2:13b
ollama serve
```

Ollama запустится на `http://localhost:11434`.

---

## Способ 2: LM Studio

**LM Studio** — графический интерфейс, проще для новичков:
1. Скачайте с https://lmstudio.ai
2. Загрузите модель (Mistral 7B рекомендуется)
3. Запустите локальный сервер на портах 8000 или 1234

---

## Настройка Pi для работы с локальной моделью

### Установка Pi
```bash
curl -fsSL https://pi.dev/install.sh | sh
# или
npm install -g @earendil-works/pi-coding-agent
```

### Конфигурация для локального LLM

Pi может работать с OpenAI-совместимыми API. Создайте конфиг **`~/.pi/config.json`**:

```json
{
"provider": "openai-compatible",
"apiKey": "local",
"baseUrl": "http://localhost:11434/v1",
"model": "mistral"
}
```

**Для LM Studio** замените `baseUrl` на `http://localhost:8000/v1`.

---

## Создание расширения для системного администратора

### Структура скиллов

Создайте файл **`~/.pi/skills/sysadmin.ts`**:

```typescript
import { Tool } from '@earendil-works/pi-agent-core';
import { exec } from 'child_process';
import { promisify } from 'util';

const execAsync = promisify(exec);

export const sysadminTools: Tool[] = [
{
name: 'run_command',
description: 'Выполняет системную команду (bash/cmd)',
parameters: {
command: { type: 'string', description: 'Команда для выполнения' }
},
async execute(params) {
try {
const { stdout, stderr } = await execAsync(params.command);
return { success: true, output: stdout, error: stderr };
} catch (error) {
return { success: false, error: error.message };
}
}
},
{
name: 'check_system_status',
description: 'Проверяет статус системы (CPU, память, диск)',
async execute() {
const { stdout } = await execAsync('uname -a');
return { system_info: stdout };
}
},
{
name: 'manage_processes',
description: 'Просмотр и управление процессами',
parameters: {
action: { type: 'string', enum: ['list', 'kill'], description: 'Действие' },
processName: { type: 'string' }
},
async execute(params) {
if (params.action === 'list') {
const { stdout } = await execAsync(`ps aux | grep ${params.processName}`);
return { processes: stdout };
}
}
}
];
```

---

## Запуск Pi с локальной моделью

```bash
# Убедитесь, что Ollama или LM Studio работает:
ollama serve # в отдельном терминале

# Запустите Pi:
cd /path/to/project
pi

# Или интерактивно:
pi --interactive
```

**Задайте сисадмину задачу:**
```
> Check system disk usage and list large files
> Restart the nginx service
> Generate a security report
```

---

## Оптимизация для RTX 3060

### Параметры для ускорения:

```bash
# В Ollama укажите GPU:
CUDA_VISIBLE_DEVICES=0 ollama serve

# Quantization (если нужна скорость):
ollama pull mistral:latest-q4 # 4-bit квантизация, намного быстрее
```

### Рекомендуемые настройки
- **Mistral 7B Q4**: ~3.5GB VRAM, достаточно быстро для интерактивного использования
- **Llama2 13B Q4**: ~6GB VRAM, хороший баланс

---

## Дополнительно

**AGENTS.md** в репозитории содержит правила для написания кастомных агентов. Вы можете создать специализированный агент, наследуя встроенные возможности Pi и добавляя системные скиллы.

Для более сложных случаев (контейнеризация, санд-бокс) смотрите `packages/coding-agent/docs/containerization.md` — это важно, если агент будет получать команды от пользователей.

**Начните с Mistral 7B через Ollama** — это минимальная настройка, которая сработает прямо из коробки на RTX 3060.
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

Ошибка `address already in use` означает, что Ollama **уже запущена** в фоновом режиме как системная служба (systemd), поэтому команда `ollama serve` не может занять тот же самый порт (11434).

Это хорошая новость: вам не нужно запускать сервер вручную, он уже работает.

### Что делать сейчас:

**1. Проверьте, работает ли Ollama**
Просто введите команду:
```bash
ollama list
```
Если вы видите список моделей (или пустой список, но без ошибки подключения), значит, сервер активен.

**2. Если вы всё же хотите перезапустить сервер вручную**
Если вам нужно изменить настройки сервера или вы хотите видеть логи в реальном времени, сначала остановите фоновую службу:
```bash
sudo systemctl stop ollama
```
После этого команда `ollama serve` заработает.

**3. Загрузите модель (если еще не сделали этого)**
Поскольку сервер уже запущен, просто скачайте модель для сисадмина (например, Qwen 2.5 Coder):
```bash
ollama pull qwen2.5-coder:7b
```

### Как теперь связать это с `pi`

Теперь, когда сервер Ollama работает на `127.0.0.1:11434`, вам нужно настроить `pi`, чтобы он отправлял запросы туда, а не в OpenAI.

В `pi` конфигурация обычно хранится в файле `.pi/config.json` или задается через переменные окружения. Попробуйте следующее:

1. **Проверьте доступность API** через `curl` (просто чтобы убедиться, что связь есть):
```bash
curl http://localhost:11434/v1/models
```
(Вы должны получить JSON со списком моделей).

2. **Настройте `pi`**. Если вы используете `pi` через CLI, попробуйте создать/отредактировать конфиг. В последних версиях `pi` поддерживает кастомные эндпоинты. Вам нужно указать:
* **Base URL:** `http://localhost:11434/v1`
* **API Key:** `ollama` (любое слово, так как Ollama его игнорирует, но `pi` может требовать заполнения поля).
* **Model:** `qwen2.5-coder:7b` (точное имя модели из `ollama list`).

**Важный совет по вашей ситуации:**
Так как вы находитесь в терминале (`gt@ollama:~/pi$`), будьте очень осторожны. Если вы дадите `pi` доступ к этому терминалу, он будет иметь права пользователя `gt`.
**Ни в коем случае не запускайте `pi` через `sudo`**, иначе модель получит полный контроль над вашей системой, и любая галлюцинация в команде `rm` или `chmod` может стать фатальной.
ya
^-^
Сообщения: 3431
Зарегистрирован: 16 дек 2021, 19:56

Re: pi

Сообщение ya »

Ошибка `404: model 'sysadmin:latest' not found` возникла потому, что **Ollama не знает, что такое `sysadmin:latest`**.

В Ollama имя модели — это не «роль» или «профессия», а конкретный технический идентификатор скачанного файла с весами нейросети. Вы попытались запустить `pi` с моделью, которой физически не существует в вашем локальном хранилище Ollama.

У вас есть два пути: быстрый и «правильный».

### Способ 1: Быстрый (использовать существующую модель)
Если вы уже скачали модель (например, `qwen2.5-coder:7b`), просто укажите её имя при запуске `pi` или в настройках.

Вместо `sysadmin:latest` используйте:
`qwen2.5-coder:7b` (или ту, которую вы скачали через `ollama pull`).

---

### Способ 2: «Правильный» (создать модель `sysadmin` в Ollama)
Чтобы команда `sysadmin:latest` заработала, вам нужно создать в Ollama **кастомную модель**. Это делается через так называемый `Modelfile`, где вы берете базовую умную модель и «вшиваете» в неё системный промпт администратора.

Вот как это сделать за 1 минуту:

1. **Создайте файл с инструкциями.** В терминале введите:
```bash
nano Modelfile
```

2. **Вставьте туда следующее содержимое** (замените `qwen2.5-coder:7b` на ту модель, которая у вас установлена):
```dockerfile
FROM qwen2.5-coder:7b

# Устанавливаем температуру (0.2 делает ответы более точными и менее «творческими»)
PARAMETER temperature 0.2

# Определяем личность системного администратора
SYSTEM """
Ты — экспертный системный администратор Linux.
Твоя задача: помогать пользователю в управлении сервером, написании Bash/Python скриптов и диагностике ошибок.
- Всегда проверяй текущее состояние системы перед тем, как предлагать команду изменения.
- Пиши только безопасные и проверенные команды.
- Если команда опасна (например, rm -rf или изменение прав), обязательно предупреди об этом.
- Ответы должны быть краткими, технически точными и по делу.
"""
```
*(Нажмите `Ctrl+O`, `Enter`, `Ctrl+X`, чтобы сохранить и выйти)*.

3. **Соберите модель в Ollama.** Теперь создайте модель с именем `sysadmin` на основе этого файла:
```bash
ollama create sysadmin -f Modelfile
```

4. **Проверьте, что она появилась в списке:**
```bash
ollama list
```
Теперь в списке должна появиться модель `sysadmin:latest`.

### Теперь запускайте `pi` снова
Теперь, когда модель с таким именем реально существует в Ollama, команда:
`pi --model sysadmin:latest` (или выбор этой модели в интерфейсе)
**заработает**, и нейросеть сразу будет вести себя как системный администратор, потому что эта роль теперь «зашита» в саму модель.
Ответить