Dotyczy OpenClaw v2026.2 | Wymagana instalacja umiejętności
coding-agent,git-workflows,test-runneroraz dostęp do repozytorium kodu projektu.
TL;DR: Przegląd kodu: Agent analizuje zmiany w PR i generuje raport. Automatyczne testy: "test-runner": {"frameworks": ["jest", "vitest"]}. Integracja CI/CD: Webhook odbiera zdarzenia z GitHub/GitLab. Zarządzanie wieloma projektami: "projects": {"frontend": {...}, "backend": {...}}. Główna komenda: openclaw agent --message "Przejrzyj ten PR".
Cel praktyczny
Budowa asystenta programistycznego AI, który potrafi:
- Automatyzować przegląd kodu
- Uruchamiać testy i raportować wyniki
- Generować dokumentację kodu
- Integrować się z pipeline’ami CI/CD
- Przełączać konteksty między projektami
Instalacja wymaganych umiejętności
# Umiejętności programistyczne
openclaw skill install coding-agent
openclaw skill install debug-pro
openclaw skill install git-workflows
openclaw skill install docker-essentials
# Umiejętności testowe
openclaw skill install test-runner
Automatyzacja przeglądu kodu
Konfiguracja przeglądu kodu
---
name: code-review-assistant
version: 1.0.0
description: Automated code review with OpenClaw
triggers:
- code review
- przegląd kodu
- 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
Scenariusz przeglądu kodu
Użytkownik: Przejrzyj ten PR
Agent: Dobrze, przeglądam PR #123...
[Pobieranie informacji o PR]
[Analiza zmian w kodzie]
[Sprawdzanie potencjalnych problemów]
## Raport z przeglądu PR #123
### Przegląd
- Gałąź: feature/user-search
- Zmiany: +156 -23
- Pliki: 8
### Znalezione problemy
**Krytyczne** (1):
- 🚨 `auth.js:45` - Ryzyko przechowywania hasła w postaci jawnej
**Ostrzeżenia** (3):
- ⚠️ `search.js:23` - Potencjalne SQL injection
- ⚠️ `user.js:78` - Nieobsłużony Promise
- ⚠️ `utils.js:12` - Przestarzałe API
**Sugestie** (5):
- 💡 Rozważ dodanie testów jednostkowych
- 💡 Użyj stałych zamiast magicznych liczb
- 💡 Sugestia dodania error boundary
- 💡 Rozważ wyodrębnienie wspólnych metod
- 💡 Sugestia dodania adnotacji typów
### Mocne strony kodu
- ✅ Dobre nazewnictwo funkcji
- ✅ Rozsądny podział na moduły
- ✅ Odpowiednie komentarze
Czy chcesz, żebym wygenerował komentarze do przeglądu?
Automatyczne testy
Konfiguracja uruchamiania testów
{
"skills": {
"test-runner": {
"frameworks": ["jest", "vitest", "pytest"],
"coverage": {
"enabled": true,
"threshold": 80
},
"reporting": {
"format": "markdown",
"output": "test-report.md"
}
}
}
}
Scenariusz testowy
Użytkownik: Uruchom testy i pokaż wyniki
Agent: Uruchamiam testy...
[Wykonywanie komendy testowej]
[Zbieranie wyników testów]
[Analiza pokrycia kodu]
## Raport z testów
### Wyniki testów
- Łącznie: 45 testów
- Zaliczone: 42 ✅
- Niezaliczone: 2 ❌
- Pominięte: 1 ⏭️
### Niezaliczone testy
**1. UserSearch.test.js**
AssertionError: expected [] to equal [{id: 1, name: ’test’}]
Sugestia: Sprawdź połączenie z bazą danych lub dane mockowe
**2. Auth.test.js**
Timeout: Async callback not invoked within 5000ms
Sugestia: Zwiększ timeout lub sprawdź logikę asynchroniczną
### Pokrycie kodu
| Plik | Instrukcje | Gałęzie | Funkcje | Linie |
|-----|-----|-----|-----|-----|
| auth.js | 85% | 78% | 90% | 85% |
| search.js | 72% | 65% | 80% | 70% |
| user.js | 90% | 85% | 95% | 90% |
| **Łącznie** | **82%** | **76%** | **88%** | **82%** |
Czy potrzebujesz, żebym naprawił niezaliczone testy?
Integracja CI/CD
Integracja z 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
});
Automatyczne wdrażanie
Użytkownik: Wdróż na staging
Agent: Wdrażam na środowisko staging...
[Pobieranie najnowszego kodu]
[Uruchamianie testów]
[Budowanie projektu]
[Wdrażanie na serwer]
## Raport z wdrożenia
### Informacje o wdrożeniu
- Środowisko: staging
- Gałąź: main
- Commit: abc1234
- Czas: 2026-02-26 15:30
### Kroki wdrożenia
1. ✅ Pobranie kodu
2. ✅ Instalacja zależności
3. ✅ Uruchomienie testów (45/45 zaliczone)
4. ✅ Budowanie projektu
5. ✅ Wdrożenie na serwer
### Sprawdzenie stanu
- API: ✅ Działa poprawnie
- Baza danych: ✅ Połączenie aktywne
- Redis: ✅ Połączenie aktywne
### Adresy dostępowe
- URL: https://staging.example.com
- API: https://api-staging.example.com
Wdrożenie zakończone sukcesem!
Zarządzanie wieloma projektami
Konfiguracja projektów
{
"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"
}
}
}
Przełączanie projektów
Użytkownik: Przełącz na projekt backend
Agent: Przełączono na projekt backend.
Informacje o aktualnym projekcie:
- Nazwa: backend
- Ścieżka: ~/projects/backend
- Technologia: Python/FastAPI
- Ostatni commit: Dodanie uwierzytelniania użytkowników
Czym mogę pomóc?
Generowanie kodu
Generowanie kodu szablonowego
Użytkownik: Utwórz CRUD API dla modelu User
Agent: Dobrze, tworzę CRUD API dla modelu User...
[Analiza istniejącej struktury kodu]
[Generowanie plików kodu]
Wygenerowano następujące pliki:
**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(): ...
Czy uruchomić testy weryfikacyjne?
## Generowanie dokumentacji
### Dokumentacja API
Użytkownik: Wygeneruj dokumentację dla tego API
Agent: Analizuję endpointy API…
[Skanowanie plików routingu] [Ekstrakcja informacji o API] [Generowanie dokumentacji]
Dokumentacja API
Moduł użytkowników
GET /users
Pobierz listę użytkowników
Parametry
| Nazwa | Typ | Wymagany | Opis |
|---|---|---|---|
| page | int | Nie | Numer strony |
| limit | int | Nie | Elementów na stronę |
Odpowiedź
{
"data": [User],
"total": int,
"page": int,
"limit": int
}
POST /users
Utwórz użytkownika
Treść żądania
{
"name": "string",
"email": "string"
}
Odpowiedź
{
"id": 1,
"name": "string",
"email": "string",
"created_at": "2026-02-26T00:00:00Z",
"updated_at": "2026-02-26T00:00:00Z"
}
Czy zapisać do docs/api.md?
## Rozwiązywanie problemów
### Problemy CI/CD
```bash
# Sprawdzenie statusu CI/CD
openclaw ci status
# Wyświetlenie logów CI/CD
openclaw ci logs --last
# Ponowne uruchomienie nieudanego zadania
openclaw ci retry
Problemy z kodem
# Analiza problemów w kodzie
openclaw analyze --project backend
# Generowanie sugestii naprawy
openclaw suggest --file auth.js
Podsumowanie
Budując asystenta programistycznego z OpenClaw:
- Przegląd kodu: automatyzacja przeglądu PR
- Uruchamianie testów: automatyczne testy i raporty
- Integracja CI/CD: automatyzacja procesu wdrażania
- Zarządzanie projektami: szybkie przełączanie kontekstu
- Generowanie kodu: tworzenie kodu szablonowego
- Generowanie dokumentacji: automatyczna dokumentacja API
Historia zmian:
- 2026-02-26: Pierwsza publikacja
Nawigacja po serii:
- ← Poprzedni: Praktyka: budowa asystenta automatyzacji biurowej
- → Następny: Praktyka: budowa centrum sterowania inteligentnym domem