03 - エージェント モード: コマンドを使用してコードベースを変更する
IDE に「この Angular アプリケーションに JWT 認証を追加してください」と指示できることを想像してください。 その間、エディターはファイルの作成、サービスの書き込み、コンポーネントの更新、テストの実行、エラーの修正を行います。 コードを 1 行も修正する必要がなく、それ自体で実行されます。これはSFではありません:e エージェントモード of Cursor、2025 年の AI ネイティブ IDE エコシステムで最も革新的な機能の 1 つです。
AI を使用した単純なオートコンプリートやテキスト チャットとは異なり、エージェント モードは次のことを実現します。 人工知能をまったく新しいレベルに引き上げます。エージェントはファイル システムにアクセスできます。 ターミナルでコマンドを実行し、エラー出力を読み取り、最後まで自分で繰り返します。 タスクが正しく完了しませんでした。上級開発者があなたと並行して作業するのと同じように、 プロジェクトのコンテキストを深く理解し、複雑な複数ファイルのタスクを管理できます。
この記事では、内部アーキテクチャから実用的な機能に至るまで、エージェント モードをあらゆる側面から探っていきます。 実際のユースケースから、生産性を最大化するための高度な戦略まで。それを統合する方法を見てみましょう カーソル ルール システムについて、その制限を管理する方法、および次のような競合他社との比較について説明します。 GitHub Copilot エージェントとクロード コード。
この記事で学べること
- エージェント モードのアーキテクチャ: LLM + ツールの使用 + ファイル システム アクセスがどのように連携するか
- 質問モード、編集モード、エージェント モードの違いとそれぞれをいつ使用するか
- 適切なテンプレートを使用してエージェント モードをアクティブ化および構成する方法
- エージェントの全機能: ファイル作成、複数ファイル編集、ターミナル、Web 検索
- 完全な Angular コード例を含む実用的な使用例
- カーソル ルールがエージェントの有効性を高める仕組み
- 制限、回避策、および YOLO モードや Max モードなどの高度なモード
- GitHub Copilot Agent および Claude Code との比較
- 効果的なプロンプトとプロフェッショナルなワークフローのためのベスト プラクティス
カーソル IDE および AI ネイティブ開発シリーズの概要
| # | アイテム | 集中 |
|---|---|---|
| 1 | 完全なカーソル IDE ガイド | 完全な概要 |
| 2 | カーソルのルール | カスタム AI セットアップ |
| 3 | 現在ここにいます - エージェントモード | 高度なマルチファイル自動化 |
| 4 | プランモードとバックグラウンドエージェント | 計画と並列処理 |
| 5 | カーソルフック | ワークフローの自動化 |
| 6 | MCPとカーソル | データベースとAPIの統合 |
| 7 | カーソル AI を使用したデバッグ | 3 倍高速なデバッグ |
| 8 | カーソル vs ウィンドサーフィン vs 副操縦士 | 2026 年の機器の比較 |
| 9 | プロフェッショナルな Angular ワークフロー | カーソルを使用してプロジェクトを完了する |
エージェント モードのアーキテクチャ: 実際の仕組み
エージェント モードを効果的に使用するには、内部で何が起こっているのかを理解することが重要です。エージェントモード それは単に「より多くのコードを書く AI」ではありません。それは、大きな言語が含まれるマルチコンポーネント システムです。 モデルには以下が装備されています コンクリートツール 開発環境と対話するため。
ツール使用モデル
エージェント モードの核心とその概念 ツールの使用 (または関数呼び出し)。 LLM モデル Cursor の核心は、Claude Sonnet、GPT-4o、Gemini のいずれであっても、単にテキストを生成するだけではなく、訓練されています。 タスクを完了するためにいつ外部ツールを使用する必要があるかを認識します。 「発明する」のではなく、 ファイルの内容を確認すると、エージェントは実際にそのファイルを読み取ることができます。アウトプットを想像するのではなく、 コマンドを実行して結果を読み取ることができます。
Cursor エージェントで使用できるツールには次のものがあります。
- 読み取りファイル: 特定のファイルの内容を読み取ります
- 書き込みファイル: 新しいコンテンツでファイルを作成または上書きします
- 編集ファイル: ファイルの一部に特定の変更を適用する
- リストディレクトリ: ディレクトリ内のファイルを一覧表示します
- 検索ファイル: コードベース内のテキストまたはセマンティック パターンを検索します
- run_terminal_command: 組み込みターミナルでコマンドを実行します
- 読み取り端末出力: 端末出力を読み取ります(エラーを含む)
- ウェブ検索: ウェブ上の最新情報を検索する
- サブエージェントの作成: 特定のタスクに特化したエージェントを作成する (Cursor 2.0 以降)
エージェントループ
エージェントモードは、 反復推論サイクル:
- 観察する: コンテキスト (ファイル、プロジェクト構造、既存のエラー) を読み取ります。
- プラン: タスクを完了するために必要な手順を決定する
- それは動作します: 利用可能なツールを使用する (ファイルの作成、コマンドの実行など)
- 通貨: 出力を読み取り、エラーをチェックし、結果をチェックします
- 反復: エラーがある場合は、新しい情報を使用してステップ 1 に戻ります。
このループは、タスクとエージェントが完了するまで自律的に継続します。 ユーザーからの入力が必要なものを決定します。
コンテキストの収集: エージェントがプロジェクトをどのように理解するか
単一行のコードを記述する前に、エージェント モードはコンテキストの徹底的な分析を実行します。 カーソルはセマンティック埋め込みを使用してコードベースにインデックスを付け、エージェントがファイルを検索できるようにします。 and relevant patterns even when they are not explicitly mentioned in the prompt.これは 単純な grep とは根本的に異なります。エージェントは関係を理解します。 概念的な コードの異なる部分の間。
たとえば、エージェントに「ログイン フォームに検証を追加する」ように依頼すると、エージェントは自動的にそれを認識します。 ログイン コンポーネント、リアクティブ フォーム、既存のバリデーター、TypeScript テンプレートを確認する必要がない 潜在的に関連する単体テストもすべて指定する必要はありません。
質問モード、編集モード、エージェント モード: 基本的な違い
Cursor は、AI と対話するための 3 つの主な方法を提供しており、それぞれがさまざまなシナリオに合わせて最適化されています。 生産性を最大化するには、それぞれをいつ使用するかを理解することが重要です。
質問モード: 会話
Ask モード (次のコマンドでアクセス可能) Ctrl+L / Cmd+L) と会話モード
カーソルの。このモードでは、AI が説明や提案をしながら質問に答えます。
コードスニペットですが、 ファイルを直接変更するわけではありません。理想的なモードは次のとおりです。
- 複雑なコードやレガシーなコードを理解する
- 実装する前にアーキテクチャ上の代替案を検討する
- 特定のライブラリ、API、またはパターンについて質問する
- コードレビューを実行し、既存のコードに関するフィードバックを受け取ります
- プロジェクトの設計と構造に関するブレインストーミング
編集モード: コンテキスト編集
編集モード (次のコマンドでアクセス可能) Ctrl+K / Cmd+K) 変更を許可します
状況に応じた、ターゲットを絞ったもの。 AI は現在のファイルまたは特定の選択内容に作用し、適用します。
局所的な変換。以下のような方に最適です。
- 単一の関数またはクラスのリファクタリング
- コード変換 (例: 関数を async/await に変換)
- 既存のメソッドに JSDoc ドキュメントを追加
- 現在のファイルの特定のバグを修正する
- IDE によって提案されるクイックフィックス
エージェントモード: 完全な自動化
エージェント モード (次のコマンドでアクセス可能) Ctrl+I / Cmd+Iから「エージェント」を選択します。
ドロップダウン)、最も強力なモード。 The agent can work through 複数のファイル、
コマンドを実行し、エラーを反復処理する 複雑なタスクを独立して完了できます。 E
以下に適したモード:
- 複数のファイルを含む完全な機能を実装する
- コードベース規模でのリファクタリング (例: CommonJS から ES モジュールへの移行)
- 完全に足場を組んだプロジェクトの初期セットアップ
- ファイル間の分析が必要なバグ修正
- 既存のコンポーネントにテストを追加する
- テクノロジーの移行 (例: RxJS 6 から RxJS 7 へ)
DOMANDA: "Cosa fa questo operatore RxJS?"
→ Usa Ask Mode (informazione, nessuna modifica)
TASK: "Converti questa funzione callback in una Promise"
→ Usa Edit Mode (modifica localizzata, file singolo)
TASK: "Aggiungi autenticazione JWT all'intera applicazione"
→ Usa Agent Mode (multi-file, comandi, iterazione)
TASK: "Scrivi i test per questo componente"
→ Usa Agent Mode (crea file di test, esegue test, corregge errori)
TASK: "Spiega l'architettura del progetto"
→ Usa Ask Mode (analisi, nessuna modifica)
TASK: "Aggiungi validazione al form e aggiorna i tipi TypeScript"
→ Usa Agent Mode (modifica più file correlati)
エージェントモードのアクティブ化と構成
チャットを開いてエージェント モードを選択します
エージェント モードは、Cursor Composer ウィンドウからアクティブにします。手順は次のとおりです。
- プレス
Ctrl+I(Windows/Linux) またはCmd+I(macOS) Composer を開く - チャットの左上にあるドロップダウンで、選択します "エージェント"
- または、既存のチャットで現在のモードをクリックし、「エージェント」を選択します。
カーソル設定でエージェント モードをデフォルトとして設定することもできます。
Settings > Features > Chat > Default Mode.
適切なモデルの選択
エージェント モードは、それぞれ異なる機能を持つ複数の LLM モデルをサポートします。モデルの選択 結果の品質に大きく影響します。
CLAUDE SONNET 4.5 / CLAUDE OPUS 4
- Miglior comprensione del contesto complesso
- Eccellente per refactoring e architettura
- Ragionamento più approfondito
- Consigliato per: task complessi, codebase grandi
GPT-4O
- Ottimo bilanciamento velocità/qualità
- Buona gestione del contesto lungo
- Consigliato per: task medi, iterazioni rapide
GEMINI 2.0 FLASH
- Molto veloce
- Context window molto grande (1M token)
- Consigliato per: task con molti file, analisi di grandi codebase
CURSOR FAST (modello proprietario)
- Ottimizzato per velocità
- Consigliato per: completamenti rapidi, suggerimenti inline
YOLO モード: 自動コマンド実行
デフォルトでは、エージェント モードはターミナルでコマンドを実行する前に確認を求めます。 YOLOモード この確認プロンプトが削除され、エージェントは次のことが可能になります。 コマンドを独立して実行します。有効にするには:
Settings > Features > Chat & Composer > Allow agent to run commands automatically
YOLOモードには注意してください
YOLO モードは強力ですが、注意が必要です。常に i を設定します 許可されるコマンド
ホワイトリストの指定 (例: npm test, ng build) と拒否リスト
(例: rm -rf, git push)。屋内環境ではYOLOモードを有効にしないでください
制限を正しく構成せずに、本番環境または機密データを含むリポジトリ上で使用した場合。
最大モード: 拡張コンテキスト
最近のアップデートとともに紹介され、 マックスモード 制限を取り除く 積極的なカーソル コンテキストのプルーニング。標準モードでは、エージェントはコンテキストを削減します。 応答性を向上させるために、Max モードはモデルから利用可能な完全なコンテキストを使用します。 これにより、以下の結果が大幅に向上します。
- 多くのファイル間の依存関係を伴う大規模なコードベース
- 複数のアプリケーション層を理解する必要がある複雑なバグ
- プロジェクト内に分散されたアーキテクチャ パターンを尊重する必要があるリファクタリング
エージェントの完全な機能
ファイルの作成と編集
エージェントは、構造を完全に認識して、新しいファイルを作成したり、既存のファイルを変更したりできます。 プロジェクトの。コードを単独で生成するだけではなく、既存のファイルを読み取り、それらを理解します。 パターンを解析し、プロジェクトのスタイルと規則に一致した新しいコードを生成します。
Prompt all'agente:
"Crea un sistema di notifiche in stile toast per questa applicazione Angular.
Deve includere:
- NotificationService con metodi success(), error(), warning(), info()
- NotificationComponent standalone con animazioni CSS
- Integrazione nel AppComponent
- Modello NotificationMessage con tipo, messaggio e durata
- Test unitari per il servizio
Usa standalone components, signals per lo state, e rispetta
le convenzioni Angular del progetto (OnPush, async pipe, ecc.)"
通常、エージェント モードでは、この 1 つのプロンプトを使用して以下を作成または変更します。
src/app/core/models/notification.model.ts(新しい)src/app/core/services/notification.service.ts(新しい)src/app/shared/components/notification/notification.component.ts(新しい)src/app/shared/components/notification/notification.component.html(新しい)src/app/shared/components/notification/notification.component.css(新しい)src/app/app.component.ts(コンポーネントを含めるように変更されました)src/app/app.component.html(コンポーネントタグを追加するために編集されました)src/app/core/services/notification.service.spec.ts(新しい)
ターミナルコマンドの実行
エージェント モードでは、Cursor の組み込みターミナルでコマンドを実行し、その出力を読み取ることができます。この彼 次のことが可能になります。
- 依存関係をインストールするには
npm install - ビルドを実行して TypeScript エラーを読み取ります
- テストを実行し、合格するまで繰り返します
- リンターとフォーマッタを自動的に実行する
- Angular CLI を使用してスキャフォールディングを生成する
- プロジェクトのカスタム スクリプトを実行する
リアルタイム Web 検索
過小評価されがちな能力は、Web 上の情報を検索する能力です。 タスクの実行。エージェントは公式ドキュメントを参照したり、検索したりできます。 特定のエラーの解決策を確認したり、更新された API の正しい構文を確認したりできます。 これは、頻繁に更新されるライブラリを操作する場合に特に便利です。 Angular、RxJS、マテリアル デザイン ライブラリなどの独自の API。
エラー分析と自己修正
エージェント モードの最も強力な機能の 1 つは、次の機能です。 自己修正。 コードを生成した後、エージェントはビルドを実行します (YOLO モードがアクティブな場合、またはユーザーが承認した場合)。 TypeScript エラーまたはリンター エラーを読み取り、エラーがなくなるまでコードを変更して繰り返します。 さらにエラーが発生します。このフィードバック ループにより、移植に必要な時間が大幅に短縮されます。 ビルドエラーはゼロです。
Angular を使用した実際の使用例
ケース 1: 完全な機能を追加する (コンポーネント + サービス + テスト)
エージェント モードの最も一般的な使用例は、新機能の実装です。例を見てみましょう 具体的: ページネーション システムを Angular リストに追加します。
Implementa un sistema di paginazione per il componente UserListComponent.
Requisiti tecnici:
- Crea PaginationComponent standalone con signal-based state
- PaginationService per la logica di business (calcolo pagine, navigazione)
- UserListComponent deve accettare input() per totalItems e pageSize
- Emetti output() pageChange con il numero di pagina corrente
- Usa HttpClient per caricare i dati paginati dall'endpoint /api/users?page=&size=
- Gestisci loading state e error state con NgOptimizedImage per avatars
- Aggiungi ARIA labels per accessibility
- Test unitari per PaginationService (min 80% coverage)
- Test di integrazione per UserListComponent
Struttura file attesa:
- src/app/shared/components/pagination/pagination.component.ts
- src/app/shared/components/pagination/pagination.component.html
- src/app/shared/components/pagination/pagination.component.css
- src/app/core/services/pagination.service.ts
- src/app/features/users/user-list.component.ts (aggiorna)
エージェントが通常 PaginationService 用に生成するコードは次のとおりです。
import { Injectable, signal, computed } from '@angular/core';
export interface PaginationState {
currentPage: number;
pageSize: number;
totalItems: number;
}
@Injectable({
providedIn: 'root'
})
export class PaginationService {
private readonly _state = signal<PaginationState>({
currentPage: 1,
pageSize: 10,
totalItems: 0
});
readonly state = this._state.asReadonly();
readonly totalPages = computed(() =>
Math.ceil(this._state().totalItems / this._state().pageSize)
);
readonly hasPreviousPage = computed(() =>
this._state().currentPage > 1
);
readonly hasNextPage = computed(() =>
this._state().currentPage < this.totalPages()
);
readonly pageNumbers = computed(() => {
const total = this.totalPages();
const current = this._state().currentPage;
const range = 2;
const start = Math.max(1, current - range);
const end = Math.min(total, current + range);
return Array.from({ length: end - start + 1 }, (_, i) => start + i);
});
updateState(partial: Partial<PaginationState>): void {
this._state.update(state => ({ ...state, ...partial }));
}
goToPage(page: number): void {
const total = this.totalPages();
if (page >= 1 && page <= total) {
this._state.update(state => ({ ...state, currentPage: page }));
}
}
nextPage(): void {
if (this.hasNextPage()) {
this.goToPage(this._state().currentPage + 1);
}
}
previousPage(): void {
if (this.hasPreviousPage()) {
this.goToPage(this._state().currentPage - 1);
}
}
}
import {
Component, OnInit, input, output, inject, OnChanges, SimpleChanges
} from '@angular/core';
import { CommonModule } from '@angular/common';
import { PaginationService } from '@core/services/pagination.service';
@Component({
selector: 'app-pagination',
standalone: true,
imports: [CommonModule],
templateUrl: './pagination.component.html',
styleUrl: './pagination.component.css',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class PaginationComponent implements OnChanges {
readonly totalItems = input.required<number>();
readonly pageSize = input<number>(10);
readonly pageChange = output<number>();
private readonly paginationService = inject(PaginationService);
readonly state = this.paginationService.state;
readonly totalPages = this.paginationService.totalPages;
readonly hasPrev = this.paginationService.hasPreviousPage;
readonly hasNext = this.paginationService.hasNextPage;
readonly pageNumbers = this.paginationService.pageNumbers;
ngOnChanges(changes: SimpleChanges): void {
if (changes['totalItems'] || changes['pageSize']) {
this.paginationService.updateState({
totalItems: this.totalItems(),
pageSize: this.pageSize()
});
}
}
onPageChange(page: number): void {
this.paginationService.goToPage(page);
this.pageChange.emit(page);
}
onPrevious(): void {
this.paginationService.previousPage();
this.pageChange.emit(this.paginationService.state().currentPage);
}
onNext(): void {
this.paginationService.nextPage();
this.pageChange.emit(this.paginationService.state().currentPage);
}
}
ケース 2: ファイル間のリファクタリング
エージェント モードの最も明白な長所の 1 つは、複数のファイルにまたがるリファクタリングです。
次のシナリオを考えてみましょう。Angular プロジェクトのすべてのコンポーネントを から移行する必要があります。
ngModel リアクティブフォームへ。
Migra tutti i form dell'applicazione da Template-Driven Forms a Reactive Forms.
Analizza tutti i file in src/app/ e:
1. Identifica tutti i componenti che usano ngModel o [(ngModel)]
2. Per ogni componente trovato:
- Sostituisci ngModel con FormControl/FormGroup
- Aggiungi ReactiveFormsModule agli imports del componente
- Rimuovi FormsModule se non necessario
- Aggiorna la validazione inline con Validators
- Mantieni la stessa logica di submit
3. Aggiorna i test esistenti per usare ReactiveFormsModule
4. Verifica che la build passi dopo ogni modifica
Mantieni la retrocompatibilita dell'interfaccia utente.
Non modificare i servizi HTTP o la logica di business.
ケース 3: コンテキスト認識によるバグ修正
エージェント モードは、エラーが発生したファイルに限定されないため、バグ修正に優れています。 コンポーネントとサービス間の関係を理解して、真の根本原因を見つけます。
Ho un bug nell'applicazione: quando navigo a /users/123/settings e poi
torno indietro con il browser, il componente UserSettingsComponent
mostra i dati dell'utente precedente invece di ricaricarli.
L'errore sembra legato alla gestione del route params in combinazione
con il caching del servizio. L'errore si manifesta SOLO dopo la
prima navigazione - il refresh della pagina funziona correttamente.
Analizza:
- UserSettingsComponent e come gestisce ngOnInit/ActivatedRoute
- UserService e la sua strategia di caching
- Il routing configuration per questo modulo
- Eventuali Observable che potrebbero non essere ri-subscribed
Proponi e implementa la fix con relative spiegazioni.
このシナリオでは、エージェント モードは通常次のことを行います。
- Legge
user-settings.component.tsどれを使用しているかを特定しますngOnInitの代わりにngOnChangesotakeUntilDestroyed - Legge
user.service.tsObservable が完了し、サブスクリプション後に再発行されないことがわかります。 - Legge
app.routes.tsまたはコンポーネントが再作成されるか再利用されるかを理解するためのルーティング モジュール - 彼はその修正を提案しています。
ActivatedRoute.paramMap代わりにObservableを使用snapshot - 影響を受けるすべてのファイルに修正を展開します
- リンターを実行して、変更されたコードの正しさを検証します。
エージェント モードとカーソル ルール: 強力な相乗効果
エージェント モードはシステムと組み合わせると飛躍的に強力になります カーソルのルール。ルールはユーザーをガイドする「システム命令」として機能します。 特定のプロジェクト内でエージェントがどのように動作するかについてエージェントに相談します。ルールがなければ、 エージェントは、チームの規則に従っていない可能性のある汎用コードを生成します。 ルールが適切に構成されていれば、生成されたコードは作成されたコードと区別できません。 プロジェクトの開発専門家による。
ルールがエージェント モードに与える影響
タイプのルール Always 各セッションの開始時に注入されます
エージェントの情報を取得し、一定のコンテキストを提供します。ルール Agent Requested 彼らは来ます
エージェントが現在のタスクに関連すると判断したときに動的にロードされます。
これにより、プロジェクトのさまざまな側面に特化したルールを設定することができます。
コンテキスト ウィンドウを不必要に拡大します。
エージェント モードを使用した Angular プロジェクトのルール構成の完全な例を見てみましょう。
新しい Cursor 構造 (0.45 以降) では、ルールはディレクトリに置かれます。
.cursor/rules/ ファイルとして .mdc:
---
description: Regole fondamentali per lo sviluppo Angular in questo progetto
globs: ["src/**/*.ts", "src/**/*.html"]
alwaysApply: true
---
# Regole Angular - Sempre Attive
## Framework e Versione
- Progetto Angular 19+ con standalone components (NO NgModules)
- TypeScript strict mode abilitato
- RxJS 7.8+ (evita operatori deprecated)
## Component Guidelines
- SEMPRE OnPush change detection
- SEMPRE standalone: true
- USA signals (signal(), computed(), effect()) per lo stato locale
- USA input() e output() invece di @Input/@Output decorators
- EVITA constructor injection, usa inject()
- USA takeUntilDestroyed() per gestire le subscription
## Service Guidelines
- providedIn: 'root' per servizi globali
- USA HttpClient con typed responses HttpClient.get<T>()
- Gestisci SEMPRE gli errori con catchError
- Usa interceptors per auth headers, non logica nei servizi
## File Naming
- Components: kebab-case, es. user-profile.component.ts
- Services: kebab-case con .service.ts suffix
- Models: kebab-case con .model.ts suffix
- Separati file HTML e CSS (non inline templates/styles)
## Testing
- Usa jasmine + karma (non jest, non vitest)
- Minimo 80% coverage per i servizi
- Usa TestBed per i component tests
- Mock i servizi HTTP con HttpClientTestingModule
---
description: Pattern avanzati per Agent Mode in questo progetto Angular
globs: ["src/app/**/*.ts"]
alwaysApply: false
---
# Pattern Architetturali del Progetto
## Struttura Directory
```
src/app/
├── core/ # Servizi singleton, guards, interceptors
├── shared/ # Componenti e pipe riusabili
├── features/ # Feature modules (lazy loaded)
│ ├── auth/
│ ├── users/
│ └── dashboard/
└── models/ # Interfacce TypeScript condivise
```
## State Management
- Usa signals per state locale ai componenti
- Usa servizi con BehaviorSubject/signal per state condiviso
- NO NgRx a meno che non sia già nel progetto
## HTTP Patterns
```typescript
// PATTERN CORRETTO per le chiamate HTTP
getData(): Observable<User[]> {
return this.http.get<User[]>('/api/users').pipe(
catchError(err => {
console.error('Failed to fetch users:', err);
return throwError(() => new Error('Failed to fetch users'));
})
);
}
```
## Routing
- Usa lazy loading per tutte le feature routes
- Guards come funzioni arrow (functional guards), non classi
- Usa withComponentInputBinding() per route params come inputs
## Quando l'Agent crea un nuovo componente:
1. Verifica se esiste già un componente simile in shared/
2. Aggiungi SEMPRE all'export di un barrel file (index.ts)
3. Aggiorna il routing se il componente e una pagina
4. Genera il file di test corrispondente
---
description: Convenzioni per commit messages e PR
alwaysApply: false
---
# Commit Conventions
## Formato
<type>(<scope>): <description>
Types: feat, fix, refactor, test, docs, chore, perf
## Esempi
feat(auth): add JWT refresh token support
fix(users): resolve pagination state after navigation
refactor(shared): migrate to signal-based pagination
test(notification): add unit tests for NotificationService
## Prima di completare un task
- Verifica che non ci siano console.log rimanenti
- Controlla che tutti i TODO siano risolti o documentati
- Esegui ng build --configuration=production prima del commit
このルール設定では、エージェントが次のようなプロンプトを受信すると、 「注文リストコンポーネントを作成」すると、以下が自動的に生成されます。
- OnPush 変更検出機能を備えたスタンドアロン コンポーネント
- 地元の状態への信号
- デコレータの代わりに input()/output()
- 依存関係注入のための inject()
- サブスクリプションの takeUntilDestroyed()
- 対応するテストファイル
- バレルファイルのアップデート
これはすべて自動的に行われ、プロンプトで指定する必要はありません。
エージェント モードの制限とその克服方法
コンテキストウィンドウと大きなファイル
エージェント モードの最も一般的な制限は次のとおりです。 コンテキストウィンドウ。コードベースが 非常に大きいため、エージェントにはすべてのファイルをロードするのに十分なスペースがない可能性があります 同時に関連性があります。これにより、一貫性のない変更や損失が発生する可能性があります タスクのさまざまな部分間のコンテキストの理解。
コンテキスト ウィンドウを管理するための戦略
- 大きなタスクを分割します。 単一の巨大なタスクのプロンプトを分割するのではなく、 論理的なステップで作業します。次のステップに進む前に、各ステップを完了して確認してください。
-
明示的なコンテキストには @file を使用します。 関連ファイルを明示的に示す
と
@nomefileプロンプト内でエージェントがコンテキストに優先順位を付けるのに役立ちます。 - 最大モードをアクティブ化します。 多くのコンテキストを必要とする複雑なタスクの場合、 Max モードは、積極的な枝刈りを減らし、結果の品質を向上させます。
-
コンテキストドキュメントを作成します。 非常に大規模なプロジェクトの場合は、ファイルを作成します
ARCHITECTURE.mdoCONTEXT.md構造を要約したもの プロジェクトの。エージェントはタスクの開始時にそれらを読み取ることができます。
潜在的に破壊的なアクション
エージェント モードでは、正しくガイドされないと重要なファイルが変更または削除される可能性があります。 いくつかの重要な予防策:
-
エージェントに委任する前にコミットします。 常にコミットまたはスタッシュを作成する
重要なタスクでエージェント モードを起動する前に、変更内容を確認してください。これにより、
簡単な操作で前の状態に戻ります
git checkout. - ルールを使用して保護されたファイルを定義します。 を示すルールを追加します。 決して変更してはいけないファイル (重要な設定ファイル、 データベース移行ファイル)。
- 申請する前に確認してください: カーソルは常に差分を表示します 提案された変更を適用する前に確認してください。時間をかけて確認してください、特に 構成やデータベース スキーマなどの重要なファイル用。
推論の誤りと幻覚
他の AI システムと同様に、エージェント モードでも間違いが発生する可能性があります。存在しない API を「幻覚」させることができます。 古いバージョンのライブラリを使用したり、曖昧な要件を誤解したりする。対策:
- 具体的なプロンプト: プロンプトが具体的であればあるほど、 そして誤解の余地。ライブラリのバージョン、パターンを含む お気に入りと明示的な制約。
- Web 検索を有効にする: エージェントがドキュメントを参照できるようにする 更新されると、古い API を使用するリスクが大幅に軽減されます。
- 出力を確認します。 変更を確認せずに適用しないでください。 これは、重要なビジネス ロジックやセキュリティ コードにとって特に重要です。
レビューせずにセキュリティ コードをエージェントに委任しないでください
認証、認可、暗号化、機密管理の分野です AI は機能的には正しいが、セキュリティ上の脆弱性があるコードを生成する可能性があります。 薄い。レビュー いつも エージェントが生成したセキュリティコードを注意深く確認してください そして可能であれば、セキュリティの専門家にレビューしてもらいます。
エージェント モード vs GitHub Copilot エージェント vs クロード コード
2025 年から 2026 年のソフトウェア開発における AI エージェントの状況は競争が激しくなります。 Cursor のエージェント モードが主要な代替モードとどのように比較されるかを見てみましょう。
capacità CURSOR AGENT COPILOT AGENT CLAUDE CODE
─────────────────────────────────────────────────────────────────────
Agenti paralleli 8 (con worktrees) 1 1 (task)
File system access Si Si Si
Terminal execution Si (YOLO Mode) Limitato Si (bash)
Web search Si No Si
Codebase indexing Si (semantico) Si No (manuale)
Multi-repo support Si (worktrees) No Parziale
Context window 200K+ (Max Mode) 128K 200K (Claude 3.5)
Background agents Si No No
Cursor Rules integration Si (nativa) No CLAUDE.md
MCP support Si (nativa) Limitato Si
Prezzo $20/mese (Pro) $10/mese API usage
IDE integration Editor dedicato VS Code plugin CLI/API
Controllo sul modello Si (scelta LLM) Limitato Si (Claude)
─────────────────────────────────────────────────────────────────────
カーソルエージェント: 強み
Cursor の主な利点は次のとおりです。ネイティブ統合 IDE、エージェント間、 そしてルールの体系。エージェントは、意味的にインデックス付けされたコードベース全体にアクセスできます。 エディターでファイルを直接編集したり、内蔵ターミナルでコマンドを実行したりできます。 閉じたループでエラーを繰り返します。最大 8 つの並列エージェントを管理する機能 git worktrees (Cursor 2.0 で導入) を使用すると、実装を調べることができます 代替案も並行して。
GitHub Copilot Agent: 強み
GitHub ワークフローに直接統合された Copilot Agent は、優れた解像度を実現します スタンドアロンの GitHub の問題。 PR を直接開き、定義されたタスクに取り組むことができます 問題に含め、GitHub コード レビュー プロセスとネイティブに統合します。 すでに GitHub エコシステムで作業しているチームにとって、このワークフローは非常にシームレスです。
クロード・コード:強み
Claude Code (Anthropic の CLI ツール。API 経由でクロードにアクセスするのとは異なります) そのために輝く 柔軟性 複雑なタスクに対する深い推論。 長時間実行されるタスク、アーキテクチャ分析、および必要な状況に適しています。 実行速度ではなく、推論の質を最大限に高めることです。それは可能です ターミナル経由で任意の IDE に統合されます。
いつ何を選択するか
- カーソルエージェント: 日々の開発、機能実装、リファクタリング、 デバッグ。 IDE で統合されたエクスペリエンスを求める人にとっては最適な選択です。
- 副操縦士エージェント: GitHub 中心のチーム、自動化された問題解決、 PR ワークフロー。 GitHub レイヤーの Cursor を補完するものとして最適です。
- クロードコード: 高度な推論タスク、アーキテクチャ分析、 スクリプト自動化、IDE を変更できない環境。
エージェント モードのベスト プラクティス
1. 効果的なプロンプトの技術
エージェント モードの出力の品質は、プロンプトの品質に直接比例します。 曖昧なプロンプトでは汎用コードが生成されます。特定のプロンプトは次のようなコードを生成します プロジェクトを知り尽くした人によって書かれています。
STRUTTURA RACCOMANDATA:
[CONTESTO]
Sto lavorando su un'applicazione Angular 19 per la gestione delle risorse
umane. Il componente EmployeeListComponent attualmente mostra solo una
lista statica.
[TASK SPECIFICO]
Aggiungi funzionalità di ricerca e filtraggio alla lista dipendenti.
[REQUISITI TECNICI]
- Ricerca in tempo reale con debounce di 300ms (usa debounceTime da RxJS)
- Filtri multipli: dipartimento (select), stato (active/inactive), ruolo
- I filtri devono essere combinabili (AND logic)
- Lo stato dei filtri deve persistere nella URL come query params
- Usa signals per lo state locale, ActivatedRoute per sync con URL
[VINCOLI E LIMITAZIONI]
- Non modificare EmployeeService (ha i suoi test)
- Mantieni la compatibilità con il componente di paginazione esistente
- Non aggiungere nuove dipendenze npm
[OUTPUT ATTESO]
- Aggiorna EmployeeListComponent
- Crea EmployeeFilterComponent se necessario
- Aggiorna i test di EmployeeListComponent
---
ESEMPIO DI PROMPT INEFFICACE (da evitare):
"Aggiungi ricerca alla lista"
2. Git チェックポイントを頻繁に使用する
重要なタスクに関する各エージェント モード セッションの前に、git チェックポイントを作成します。
# Prima di lanciare Agent Mode su un task significativo
git add -A
git commit -m "chore: checkpoint prima di agent mode - feature X"
# Oppure, per un branch temporaneo di backup
git stash push -m "backup prima di agent mode"
# Dopo che l'agente ha completato
# Rivedi le modifiche
git diff HEAD
# Se soddisfatto, committa
git add -A
git commit -m "feat(users): add pagination via agent mode"
# Se qualcosa e andato storto
git checkout . # Annulla tutte le modifiche non committate
# Oppure
git stash pop # Ripristina lo stash
3. 応募前の確認
カーソルには、エージェントによって提案された変更の差分が常に表示されます。常に自分自身を連れて行く 特に次の点については、時間をかけて変更を確認してください。
- 設定ファイル (angular.json、tsconfig.json、package.json)
- 認証および認可コード
- データベース移行ファイル
- 重要なビジネス ロジック
- 環境変数と機密性の高い構成
4. タスクを繰り返して改善する
エージェント モードが単一の完璧なプロンプトで複雑なタスクを完了することを期待しないでください。 最も生産的で反復的なワークフロー:
ITERAZIONE 1: Implementazione base
Prompt: "Crea il NotificationService base con metodi success/error"
→ Rivedi, approva, committa
ITERAZIONE 2: Aggiunta feature
Prompt: "Aggiungi al NotificationService il supporto per notifiche
persistenti (che non si chiudono automaticamente) e per
la gestione della coda (max 3 notifiche visibili)"
→ Rivedi, approva, committa
ITERAZIONE 3: Test e fix
Prompt: "Scrivi i test unitari per NotificationService.
Verifica che ng test passi senza errori"
→ L'agente scrive i test, li esegue, corregge eventuali errori
→ Rivedi, approva, committa
ITERAZIONE 4: Integrazione
Prompt: "Integra NotificationService in AuthService per
mostrare una notifica di successo dopo il login
e una di errore in caso di credenziali invalide"
→ Rivedi, approva, committa
5. エージェント固有のルールを構成する
前のセクションで見たように、ルールは生産性を倍増させるものです more powerful for Agent Mode.プロジェクトのルールの適切な基盤を構築することに時間を費やしてください。 良い経験則: エージェントが「悪い」行為をしたことを修正するときはいつでも、あなたは尊重します プロジェクトの規則に、その修正をルールとして追加します。
エージェントモードによるプロフェッショナルなワークフロー
エージェント モードを使用した開発者の典型的な 1 日
エージェント モードが Angular 開発者の日常のワークフローにどのように統合されるかを見てみましょう。
09:00 - PLANNING
- Apri il backlog, seleziona la task del giorno
- Usa Ask Mode per analizzare l'impatto della task sulla codebase
Prompt: "Analizza la codebase e dimmi quali file dovro modificare
per implementare [feature X]. Identifica dipendenze e rischi."
09:15 - CHECKPOINT GIT
git checkout -b feature/user-search
git add -A && git commit -m "chore: init feature branch"
09:20 - IMPLEMENTAZIONE CON AGENT MODE
- Attiva Agent Mode
- Usa il prompt strutturato (contesto + task + vincoli)
- Lascia lavorare l'agente (5-15 minuti per feature medie)
09:40 - REVIEW E RAFFINAMENTO
- Rivedi il diff generato file per file
- Accetta le modifiche corrette, rigetta quelle problematiche
- Per modifiche parzialmente corrette, usa Edit Mode per aggiustamenti
- Chiedi chiarimenti con Ask Mode se qualcosa non e chiaro
10:00 - TESTING
Prompt Agent Mode: "Esegui ng test e correggi tutti gli errori che
trovi. Assicurati che la coverage dei file modificati sia >= 80%"
10:20 - COMMIT E PR
git add -A
git commit -m "feat(users): add real-time search with URL sync"
git push origin feature/user-search
# Apri PR su GitHub
10:30 - PROSSIMA TASK
パターン: コードレビュー支援のためのエージェントモード
それほど明白ではありませんが、エージェント モードとコード レビュー支援を非常に効果的に使用します。 PR を行う前に、エージェントに自分の作品をレビューしてもらうように依頼してください。
Fai una code review dei file che ho modificato in questo branch.
Analizza:
1. Conformità alle Angular best practices (standalone, signals, etc.)
2. Potenziali memory leaks (subscription non chiuse, reference cycles)
3. Performance (change detection, trackBy, pure pipes)
4. Security (XSS, injection, dati sensibili nei log)
5. qualità dei test (coverage, edge cases, mock appropriati)
6. Consistenza con le convenzioni del progetto
Per ogni problema trovato:
- Indica il file e la riga
- Spiega il problema
- Proponi la fix
Alla fine, dai un rating complessivo: Approved / Needs Changes / Major Issues
プランモードとの統合
特に複雑なタスクの場合は、エージェント モードと プランモード (これについては、シリーズの次の記事で説明します)。プラン モードでは、エージェントは次のことを行うことができます。 最初に構造化された作業計画を作成し、最初に確認して承認することができます 処刑を始めましょう。これは特に次の場合に役立ちます。
- 重要なフレームワークまたはライブラリの移行
- 多くのファイルに関わる横断的な機能の実装
- 重要なアーキテクチャのリファクタリング
- 新しいプロジェクトまたはモジュールの初期セットアップ
Cursor 2.0 のエージェント モード: 新しいフロンティア
2025 年後半にリリースされた Cursor 2.0 では、エージェント モードに大幅な改善が加えられました。 これらの機能は、AI ネイティブ開発の未来を表しています。
Git Worktree を使用した並列エージェント
Cursor 2.0 の最も革新的な機能は、次の内容を実行できることです。 8 つのエージェントが並行して動作する、それぞれが別個の git ワークツリー上で動作します。 各エージェントは独立して動作するため、代替実装を検討できます。 干渉することなく同時に。
重要な機能を実装するために 3 つの異なるアプローチから選択しなければならないことを想像してください。 並列エージェントを使用すると、それぞれに 3 つのエージェントを同時に起動できます。 別のアプローチを指定する別のプロンプト。 15〜20分後には3つになります。 完全な実装を比較して最適なものを選択します。
バックグラウンドエージェント
Cursor 2.0 のバックグラウンド エージェントを使用すると、長期的なタスクを委任できます 他の作業を続けている間、バックグラウンドで実行されます。エージェントを起動できる 「プロジェクト内のすべてのテストを新しいバージョンの Angular に更新する」と その間、機能の開発を続けます。エージェントは次の場合に通知します。 完了したか、入力が必要なとき。
専門のサブエージェント
エージェント モードは、特殊なサブエージェントの作成をサポートするようになりました。 「オーケストレーター」エージェント タスクの特定の部分を特殊なサブエージェントに委任できます。1 つは書き込み用です。 テストの 1 つはパフォーマンスの最適化のため、もう 1 つは文書化のためです。 サブエージェントはさまざまなモデル、ルール、ツール アクセスを使用して構成できます プリンシパルエージェントによる。
結論と次のステップ
カーソルのエージェント モードは、生産性における最も大きな飛躍の 1 つを表します 開発者は今日から利用可能です。それは「AI があなたのためにコードを書く」ということではありません。 しかし、 インテリジェントな協力者 ワークフローがスピードアップします。 技術的な複雑さを管理し、時間を解放して次のことに集中できます。 アーキテクチャ、デザイン、価値の高い意思決定。
覚えておくべき重要なポイント:
- エージェント モード = LLM + ツールの使用 + コンテキスト: それは魔法ではなくシステムです AI がコードベースと対話する具体的なツールを使用する、適切に設計されています。
- プロンプトの品質によって出力の品質が決まります。 プロンプト 具体的で文脈に応じた明示的な制約により、大幅な結果が得られます 曖昧なプロンプトよりも優れています。
- カーソル ルールは生産性の乗数です。 良いもの ルール設定により、エージェントが「汎用 AI」から「専門開発者」に変換されます。 あなたの特定のプロジェクトの。」
- 申請する前に必ず確認してください: エージェントモードはツールです 強力ではありますが、絶対ではありません。あなたの批判的かつ根本的なレビュー、特に セキュリティ コードと重要なビジネス ロジック用。
- 小さなステップで繰り返します。 最も効果的なワークフローはタスクを分割する 反復的なステップで複雑になり、各ステップでレビューとコミットが行われます。
シリーズを続ける: 次の記事
シリーズの次の記事では、詳しく説明します。 プランモードとバックグラウンドエージェント: 複雑なタスクに対して構造化された計画を使用する方法と、作業を委任する方法 Cursor 2.0 バックグラウンド エージェントに移行して生産性を最大化します。エージェントモードの場合 エンジン、プランモード、ステアリングホイール。
シリーズの関連記事
- カーソル規則(第2条): 構成について詳しくはこちら ルール システムを使用して、特定のプロジェクトでエージェント モードを強化します。
- プランモードとバックグラウンドエージェント (第 4 条): 次のステップ to automate even more complex tasks with structured planning.
- MCP とカーソル (第 6 条): エージェントモードの接続方法 モデル コンテキスト プロトコルを介してデータベース、外部 API、カスタム ツールに接続します。
- プロフェッショナル Angular ワークフロー (第 9 条): Angular プロジェクト 作成から展開まですべてカーソルエージェントモードで完全に開発されました。







