Для 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".
Цель практики
Создать ассистента, который может:
- Автоматизировать код-ревью
- Запускать тесты и отчитываться о результатах
- Генерировать документацию к коду
- Интегрироваться с CI/CD-конвейером
- Переключаться между контекстами нескольких проектов
Установка необходимых навыков
# Навыки для программирования
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: первая публикация
Навигация по серии:
- ← Предыдущая: Практика: ассистент для офисной автоматизации
- → Следующая: Практика: создание центра управления умным домом