Przejdź do głównej zawartości

Przepływy automatyzacji: potoki rozwoju oparte na AI

Twoje nocne zadanie podbijające zależności świeci na czerwono od trzech dni, bot „przeglądu kodu AI”, który zespół doczepił na siłę, wypisuje ogólnikowe pochwały pod każdym PR, a jedyna osoba rozumiejąca skrypt wydania właśnie poszła na urlop. Interaktywne kodowanie z AI jest świetne wewnątrz edytora — ale w momencie, gdy próbujesz to oskryptować, trafiasz na ścianę zmyślonych flag CLI i kruchego kodu sklejającego.

Cursor dostarcza prawdziwego bezgłowego agenta (agent -p) zbudowanego dokładnie do tego. Ten przewodnik pokazuje, jak wpiąć go w haki git, CI/CD i zadania cykliczne — z uruchamialnymi skryptami, a nie pseudokodem — oraz gdzie Claude Code i Codex robią to samo z poziomu terminala.

  • Hak pre-commit, który uruchamia prawdziwy przegląd AI na zmianach w staging i blokuje commit przy znalezieniu problemów
  • Zadanie GitHub Actions publikujące ustrukturyzowany przegląd PR za pomocą agent -p --output-format json
  • Skrypt zaplanowanej konserwacji, który proponuje podbicia zależności i otwiera PR
  • Te same trzy przepływy pokazane dla Cursor, Claude Code i Codex, żebyś mógł wybrać per repozytorium
  • Checklistę „Gdy to się psuje” dla rozbieganych agentów, limitów kosztów i awarii uwierzytelniania MCP

Wszystko poniżej opiera się na jednej komendzie. -p (tryb print) działa nieinteraktywnie; bez --force agent jedynie proponuje edycje, z --force je zapisuje:

Okno terminala
# Zadaj pytanie, wypisz odpowiedź, zakończ (bez zmian w plikach)
agent -p "What does this codebase do?"
# Zastosuj zmiany bezpośrednio (skrypty/CI)
agent -p --force "Refactor src/auth/token.ts to use the jose library"
# Ustrukturyzowane wyjście do parsowania
agent -p --output-format json --model gpt-5.5 \
"List the 3 riskiest changes in the current diff as a JSON array"

--output-format przyjmuje text (domyślnie), json i stream-json. W CI ustaw zmienną środowiskową CURSOR_API_KEY zamiast logować się interaktywnie.

Blokuj commity, gdy zmiany w staging mają oczywiste problemy. Hak przekazuje diff ze staging do agenta i kończy się błędem przy niezerowym kodzie wyjścia. Przepływy różnią się między narzędziami, więc oto wszystkie trzy:

#!/usr/bin/env bash
# .git/hooks/pre-commit (chmod +x)
set -euo pipefail
DIFF=$(git diff --cached --diff-filter=ACMR -U3)
[ -z "$DIFF" ] && exit 0
echo "Running Cursor pre-commit review..."
RESULT=$(printf '%s' "$DIFF" | agent -p --output-format text \
"Review this staged diff for bugs, missing error handling, and leaked secrets.
Reply with exactly 'PASS' on the first line if it is safe to commit,
otherwise 'FAIL' followed by a bulleted list of blocking issues.")
echo "$RESULT"
echo "$RESULT" | head -1 | grep -q '^PASS' || { echo "Commit blocked."; exit 1; }

Uruchom agenta na pull requestach i opublikuj wynik jako komentarz. Sprawdzony wzorzec to ograniczona autonomia: pozwól agentowi modyfikować wyłącznie katalog roboczy lub emitować tekst, a operacje git/PR pozostaw deterministycznymi krokami CI. Ten przepływ GitHub Actions przypina akcje zewnętrzne do bieżących wersji major i instaluje CLI Cursor bezpośrednio:

.github/workflows/ai-code-review.yml
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
ai-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Cursor CLI
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> "$GITHUB_PATH"
- name: Generate review
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
run: |
git diff "origin/${{ github.base_ref }}...HEAD" > pr.diff
agent -p --output-format text --model gpt-5.5 \
"Review the diff in @pr.diff. Focus on correctness, security, and
missing tests. Write concise, file-scoped feedback to review.md.
Do not modify any source files."
- name: Post review comment
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh pr comment "${{ github.event.pull_request.number }}" --body-file review.md

To samo zadanie w pozostałych dwóch narzędziach:

Okno terminala
agent -p --output-format text --model gpt-5.5 \
"Review the diff in @pr.diff for correctness, security, and missing tests.
Write file-scoped feedback to review.md. Do not modify source files."

Cotygodniowe zadanie, które proponuje podbicia zależności, uruchamia zestaw testów i otwiera PR. Trzymaj krok AI ograniczony do edycji plików, a rozgałęzianie i tworzenie PR pozostaw CI:

.github/workflows/weekly-maintenance.yml
name: Weekly Maintenance
on:
schedule:
- cron: '0 2 * * 0' # Niedziele, 02:00 UTC
permissions:
contents: write
pull-requests: write
jobs:
maintenance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Cursor CLI
run: |
curl https://cursor.com/install -fsS | bash
echo "$HOME/.cursor/bin" >> "$GITHUB_PATH"
- name: Propose safe dependency bumps
env:
CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
run: |
agent -p --force --model gpt-5.5 \
"Bump dependencies in package.json to the latest non-breaking (caret)
versions. Update the lockfile with 'npm install'. Do NOT bump across
major versions. Do NOT touch source files. Summarize changes to
CHANGES.md."
- name: Verify
run: npm ci && npm test
- name: Open PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git checkout -B chore/weekly-deps
git add -A && git commit -m "chore: weekly dependency bumps"
git push -f origin chore/weekly-deps
gh pr create --fill --title "chore: weekly dependency bumps" || true

W przypadku Claude Code zamień krok agenta na claude -p --max-budget-usd 2.00 --dangerously-skip-permissions "...", żeby run zatrzymał się sam, gdy zacznie być kosztowny. Dla Codex użyj codex exec --full-auto "..." (preset workspace-write + on-request). Rusztowanie CI wokół kroku AI jest identyczne we wszystkich trzech narzędziach.

Cursor 3.0 przedefiniował IDE jako środowisko uruchomieniowe agentów, a 3.2–3.3 wprowadziły trzy komendy ze slashem, które orkiestrują pracę równoległą bez opuszczania pola czatu. Każda pasuje do innego kształtu zadania.

Uruchom izolowany git worktree dla zmian agenta. Używaj, gdy zadanie może wyprodukować edycje, które chcesz odizolować od bieżącej gałęzi — eksperymentalne refaktoryzacje, ryzykowne migracje, cokolwiek możesz porzucić.

/worktree refactor src/auth to use the new JWT library

Cursor tworzy worktree, przełącza do niego agenta i wystawia śledzoną lokalizację, którą na końcu możesz zmergować lub odrzucić.

Uruchom to samo zadanie równolegle na wielu modelach (Composer 2.5, Opus 4.8, Fable 5, GPT-5.5), każdy we własnym worktree, a potem porównaj wyniki. Przydatne, gdy nie ufasz żadnemu pojedynczemu modelowi w czystym rozstrzygnięciu — kod wrażliwy na bezpieczeństwo, niejednoznaczne specyfikacje, zadania na jeden strzał, które wolisz zrobić dobrze za pierwszym razem. W zadaniach wymagających najwyższej inteligencji Fable 5 to najmocniejsza opcja dostępna w selektorze modeli Cursor; pełne zestawienie znajdziesz w porównaniu modeli.

/best-of-n 3 implement the rate-limit middleware described in docs/rate-limit-rfc.md

Wybierasz liczbę uruchomień (n); Cursor zwraca diffy obok siebie, uszeregowane według liczby zaliczonych testów, czystości lint i szybkiego porównania semantycznego.

Cursor dzieli zadanie na kawałki i każdy dispatchuje do asynchronicznego subagenta równolegle. Najlepsze do zadań, które naturalnie się dekomponują — refaktoryzacje obejmujące wiele plików, równoległe naprawy testów, aktualizacje wielu modułów.

/multitask migrate every import of "@old-pkg/auth" to "@new-pkg/auth" and update tests

Dostępne w Cursor 3.2+; kontrolki subagentów (maksymalna głębokość, współbieżność, limit kosztów) dodano w 3.3.

NarzędzieNajlepsze do
/worktreeJedno zadanie, edycje do odizolowania
/best-of-nPorównanie strategii modeli na tym samym zadaniu
/multitaskJedno zadanie naturalnie się dekomponujące — async subagenty równolegle
Background AgentsHostowane w chmurze, długotrwałe, działa, gdy jesteś offline

Dla powtarzalnego środowiska chmurowego scommituj .cursor/environment.json, żeby każdy agent startował z gotowym łańcuchem narzędzi i usługami:

{
"snapshot": "POPULATED_FROM_SETTINGS",
"install": "npm ci",
"start": "sudo service docker start",
"terminals": [
{ "name": "Dev Server", "command": "npm run dev" },
{ "name": "Test Runner", "command": "npm run test:watch" }
]
}

Praktyczny wzorzec: odpal trzy gałęzie ze Slacka i monitoruj je na cursor.com/agents.

@Cursor [branch=feature/auth] implement OAuth 2.0 login: Passport.js with Google
and GitHub strategies, Redis-backed sessions, RBAC, and integration tests.
@Cursor [branch=feature/payments] add Stripe subscriptions: checkout endpoints,
webhook handlers, and error handling with retries.
@Cursor [branch=feature/notifications] build the email pipeline: Resend
integration, templated emails, a Bull queue, and an unsubscribe flow.

Trzymaj każde żądanie wąskie i weryfikowalne. Mgliste „@Cursor zbuduj całą platformę” spala tokeny na iteracjach względem niejasnego celu; trzy ograniczone zadania kończą się szybciej i czyściej się recenzuje.

Serwery MCP dają agentowi pierwszoklasowy dostęp do twoich narzędzi dostarczania — GitHub, GitLab, Jenkins, Terraform, Kubernetes — dzięki czemu pojedynczy prompt może zorkiestrować wydanie zamiast zmuszać cię do sklejania dedykowanych klientów API. Konfiguracja mieszka w ~/.cursor/mcp.json (Cursor), .mcp.json (Claude Code) lub ~/.codex/config.toml (Codex); definicje serwerów są identyczne we wszystkich trzech narzędziach.

~/.cursor/mcp.json
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": { "Authorization": "Bearer ${env:GITHUB_PAT}" }
},
"gitlab": {
"type": "http",
"url": "https://gitlab.com/api/v4/mcp",
"headers": { "Authorization": "Bearer ${env:GITLAB_PAT}" }
},
"jenkins": {
"command": "npx",
"args": ["-y", "jenkins-mcp-server"],
"env": {
"JENKINS_URL": "https://jenkins.company.com",
"JENKINS_USER": "your-username",
"JENKINS_TOKEN": "your-api-token"
}
},
"terraform": {
"command": "npx",
"args": ["-y", "terraform-mcp-server"]
},
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server"],
"env": { "KUBECONFIG": "~/.kube/config" }
}
}
}

Z podłączonymi tymi serwerami wydanie staje się jednym promptem:

Cut release v2.1.0:
- GitHub MCP: generate a changelog from commits since the last tag and create a draft release
- Jenkins MCP: trigger the build-and-test job and wait for it to go green
- Kubernetes MCP: roll out the new image and watch pod health
- If health checks fail, pause the rollout and report which pods are unhealthy

To jest „przed/po”, które kupuje ci MCP: zamiast skryptu na kilkaset linii żonglującego czterema klientami API, agent czyta na żywo stan z każdego serwera i decyduje o następnym kroku. Kompromis względem Agent Skill (lżejszego, jednozadaniowego rozszerzenia instalowanego przez npx skills add <owner/repo>) to głębia: po MCP sięgaj, gdy potrzebujesz trwałego, stanowego połączenia z narzędziem; po skill — gdy chcesz tylko nauczyć agenta jednej skoncentrowanej umiejętności.

Automatyzacja powinna wzmacniać twój osąd, a nie go zastępować. Zacznij od kontroli tylko do odczytu (recenzent pre-commit, który jedynie ostrzega), przejdź do operacji zapisu za bramką CI i trzymaj człowieka przy każdym nieodwracalnym kroku — wdrożeniach, force-pushach i wszystkim, co dotyka danych produkcyjnych.