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 или что-то ещё?
pi
Re: pi
Судя по документации и обсуждениям в сообществе `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`
Вот пошаговая инструкция, как заставить это работать:
### 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`
Re: pi
Ваша проблема больше не связана с профилем — теперь это **конфликт расширений**.
Ошибка прямо говорит: `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 должен запуститься нормально.
Ошибка прямо говорит: `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 должен запуститься нормально.
Re: pi
Ваша проблема больше не связана с профилем — теперь это **конфликт расширений**.
Ошибка прямо говорит: `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 должен запуститься нормально.
Ошибка прямо говорит: `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 должен запуститься нормально.
Re: pi
Судя по логам, происходит «зацикливание»: при каждом запуске 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 устанавливает по умолчанию.
Вы пытаетесь запустить 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 устанавливает по умолчанию.
Re: pi
## Настройка 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.
**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.
Re: pi
Ошибка `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` может стать фатальной.
Это хорошая новость: вам не нужно запускать сервер вручную, он уже работает.
### Что делать сейчас:
**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` может стать фатальной.
Re: pi
Ошибка `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` (или выбор этой модели в интерфейсе)
**заработает**, и нейросеть сразу будет вести себя как системный администратор, потому что эта роль теперь «зашита» в саму модель.
В 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` (или выбор этой модели в интерфейсе)
**заработает**, и нейросеть сразу будет вести себя как системный администратор, потому что эта роль теперь «зашита» в саму модель.