Назад

17. OpenClaw на практике: создание ИИ-ассистента для программирования

В статье показано, как создать ИИ-ассистента для программирования с помощью OpenClaw, интегрировать инструменты Claude Code, Codex и другие, реализовать код-ревью, автоматическое тестирование, интеграцию CI/CD и повысить эффективность разработки.

Для OpenClaw v2026.2 | Необходимо установить навыки coding-agent, git-workflows, test-runner и иметь доступ к репозиторию кода.

TL;DR: Код-ревью: Agent анализирует изменения PR и генерирует отчёт. Автоматическое тестирование: "test-runner": {"frameworks": ["jest", "vitest"]}. Интеграция CI/CD: Webhook принимает события GitHub/GitLab. Мультипроектное управление: "projects": {"frontend": {...}, "backend": {...}}. Основная команда: openclaw agent --message "Проверь этот PR".

Цель практики

Создать ассистента, который может:

  1. Автоматизировать код-ревью
  2. Запускать тесты и отчитываться о результатах
  3. Генерировать документацию к коду
  4. Интегрироваться с CI/CD-конвейером
  5. Переключаться между контекстами нескольких проектов

Установка необходимых навыков

# Навыки для программирования
openclaw skill install coding-agent
openclaw skill install debug-pro
openclaw skill install git-workflows
openclaw skill install docker-essentials

# Навык тестирования
openclaw skill install test-runner

Автоматизация код-ревью

Настройка код-ревью

---
name: code-review-assistant
version: 1.0.0
description: Automated code review with OpenClaw
triggers:
  - code review
  - код-ревью
  - review
  - PR review
---

# Code Review Assistant

Automate code review for pull requests.

## Features

- Review code changes
- Check for common issues
- Suggest improvements
- Generate review comments

## Review Checklist

1. **Code Quality**
   - Naming conventions
   - Code structure
   - Error handling

2. **Security**
   - SQL injection
   - XSS vulnerabilities
   - Secret exposure

3. **Performance**
   - N+1 queries
   - Memory leaks
   - Inefficient algorithms

4. **Best Practices**
   - DRY principle
   - SOLID principles
   - Design patterns

Сценарий код-ревью

Пользователь: Проверь этот PR

Agent: Хорошо, проверяю PR #123...

[Получение информации о PR]
[Анализ изменений кода]
[Проверка потенциальных проблем]

## Отчёт по PR #123

### Обзор
- Ветка: feature/user-search
- Изменения: +156 -23
- Файлов: 8

### Найденные проблемы

**Критичные** (1):
- 🚨 `auth.js:45` — риск хранения пароля в открытом виде

**Предупреждения** (3):
- ⚠️ `search.js:23` — потенциальная SQL-инъекция
- ⚠️ `user.js:78` — необработанный Promise
- ⚠️ `utils.js:12` — устаревший API

**Рекомендации** (5):
- 💡 Рекомендуется добавить модульные тесты
- 💡 Использовать константы вместо магических чисел
- 💡 Рекомендуется добавить граничные обработки ошибок
- 💡 Рекомендуется выделить общие методы
- 💡 Рекомендуется добавить аннотации типов

### Отмечено положительно
- ✅ Хорошее именование функций
- ✅ Разумное разделение модулей
- ✅ Подходящие комментарии

Сгенерировать комментарии к ревью?

Автоматическое тестирование

Настройка запуска тестов

{
  "skills": {
    "test-runner": {
      "frameworks": ["jest", "vitest", "pytest"],
      "coverage": {
        "enabled": true,
        "threshold": 80
      },
      "reporting": {
        "format": "markdown",
        "output": "test-report.md"
      }
    }
  }
}

Сценарий тестирования

Пользователь: Запусти тесты и выдай отчёт

Agent: Запускаю тесты...

[Выполнение тестовых команд]
[Сбор результатов]
[Анализ покрытия]

## Отчёт о тестировании

### Результаты
- Всего: 45 тестов
- Пройдено: 42 ✅
- Провалено: 2 ❌
- Пропущено: 1 ⏭️

### Проваленные тесты

**1. UserSearch.test.js**

AssertionError: expected [] to equal [{id: 1, name: ’test’}]

Рекомендация: проверьте подключение к БД или mock-данные

**2. Auth.test.js**

Timeout: Async callback not invoked within 5000ms

Рекомендация: увеличьте таймаут или проверьте асинхронную логику

### Покрытие

| Файл | Операторы | Ветви | Функции | Строки |
|-----|-----|-----|-----|-----|
| auth.js | 85% | 78% | 90% | 85% |
| search.js | 72% | 65% | 80% | 70% |
| user.js | 90% | 85% | 95% | 90% |
| **Итого** | **82%** | **76%** | **88%** | **82%** |

Помочь исправить проваленные тесты?

Интеграция CI/CD

Интеграция с GitHub Actions

# .github/workflows/openclaw-review.yml
name: OpenClaw Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup OpenClaw
        run: npm install -g openclaw@latest
        
      - name: Run Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          openclaw agent --message "Review PR #${{ github.event.pull_request.number }}" \
            --output review-comment.md
            
      - name: Post Comment
        uses: actions/github-script@v6
        with:
          script: |
            const fs = require('fs');
            const comment = fs.readFileSync('review-comment.md', 'utf8');
            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: comment
            });

Автоматическое развёртывание

Пользователь: Развернуть на staging

Agent: Выполняю развёртывание на staging-окружение...

[Получение последнего кода]
[Запуск тестов]
[Сборка проекта]
[Развёртывание на сервере]

## Отчёт о развёртывании

### Информация
- Окружение: staging
- Ветка: main
- Коммит: abc1234
- Время: 2026-02-26 15:30

### Шаги развёртывания
1. ✅ Получение кода
2. ✅ Установка зависимостей
3. ✅ Запуск тестов (45/45 пройдено)
4. ✅ Сборка проекта
5. ✅ Развёртывание на сервере

### Проверка работоспособности
- API: ✅ Работает
- База данных: ✅ Подключение в норме
- Redis: ✅ Подключение в норме

### Адреса доступа
- URL: https://staging.example.com
- API: https://api-staging.example.com

Развёртывание выполнено успешно!

Мультипроектное управление

Конфигурация проектов

{
  "projects": {
    "frontend": {
      "path": "~/projects/frontend",
      "skills": ["coding-agent", "test-runner"],
      "context": "AGENTS.md"
    },
    "backend": {
      "path": "~/projects/backend",
      "skills": ["coding-agent", "docker-essentials"],
      "context": "AGENTS.md"
    },
    "mobile": {
      "path": "~/projects/mobile",
      "skills": ["coding-agent"],
      "context": "AGENTS.md"
    }
  }
}

Переключение проектов

Пользователь: Переключись на проект backend

Agent: Переключился на проект backend.

Информация о текущем проекте:
- Название: backend
- Путь: ~/projects/backend
- Технологии: Python/FastAPI
- Последний коммит: Добавление аутентификации пользователей

Чем могу помочь?

Генерация кода

Генерация шаблонного кода

Пользователь: Создай CRUD API для модели User

Agent: Хорошо, создаю CRUD API для модели User...

[Анализ существующей структуры кода]
[Генерация файлов кода]

Созданы следующие файлы:

**1. models/user.py**
```python
from pydantic import BaseModel
from datetime import datetime

class User(BaseModel):
    id: int
    name: str
    email: str
    created_at: datetime
    updated_at: datetime

class UserCreate(BaseModel):
    name: str
    email: str

class UserUpdate(BaseModel):
    name: str | None = None
    email: str | None = None

2. routers/users.py

from fastapi import APIRouter, HTTPException
from models.user import User, UserCreate, UserUpdate

router = APIRouter(prefix="/users", tags=["users"])

@router.get("/", response_model=list[User])
async def list_users(): ...

@router.get("/{user_id}", response_model=User)
async def get_user(user_id: int): ...

@router.post("/", response_model=User)
async def create_user(user: UserCreate): ...

@router.put("/{user_id}", response_model=User)
async def update_user(user_id: int, user: UserUpdate): ...

@router.delete("/{user_id}")
async def delete_user(user_id: int): ...

3. tests/test_users.py

from fastapi.testclient import TestClient

def test_list_users(): ...
def test_create_user(): ...
def test_update_user(): ...
def test_delete_user(): ...

Запустить тесты для проверки?


## Генерация документации

### Документация API

Пользователь: Сгенерируй документацию для этого API

Agent: Анализирую конечные точки API…

[Сканирование файлов маршрутов] [Извлечение информации API] [Генерация документации]

Документация API

Модуль пользователей

GET /users

Получение списка пользователей

Параметры

Название Тип Обязательный Описание
page int Нет Номер страницы
limit int Нет Количество на странице

Ответ

{
  "data": [User],
  "total": int,
  "page": int,
  "limit": int
}

POST /users

Создание пользователя

Тело запроса

{
  "name": "string",
  "email": "string"
}

Ответ

{
  "id": 1,
  "name": "string",
  "email": "string",
  "created_at": "2026-02-26T00:00:00Z",
  "updated_at": "2026-02-26T00:00:00Z"
}

Сохранить в docs/api.md?


## Устранение неполадок

### Проблемы CI/CD

```bash
# Проверка статуса CI/CD
openclaw ci status

# Просмотр логов CI/CD
openclaw ci logs --last

# Повторный запуск проваленного задания
openclaw ci retry

Проблемы с кодом

# Анализ проблем в коде
openclaw analyze --project backend

# Генерация рекомендаций по исправлению
openclaw suggest --file auth.js

Итоги

Ассистент для программирования на базе OpenClaw обеспечивает:

  • Код-ревью: автоматизированная проверка PR
  • Тестирование: автоматический запуск тестов и отчёты
  • Интеграция CI/CD: автоматизация процесса развёртывания
  • Мультипроектное управление: быстрое переключение контекста
  • Генерация кода: создание шаблонного кода
  • Генерация документации: автоматическое создание документации API

История изменений:

  • 2026-02-26: первая публикация

Навигация по серии: