Skip to main content

Cline

Overview

Clineとはプログラミングの作業をサポートしてくれる、VSCodeなどのエディター上で機能する拡張機能。
ユーザーの要望に対し、Clineが適切な処理を加えてClaudeやChatGPTといったAIアシスタントと対話することで自動で作業を行う。
Clineが現時点で他のツールより画期的と言われる所以はClineとAIアシスタントがなるべく人間を介さず、自動的に実行→修正のループを行うところ。
今はAIが文章を返し終わるまでのタイムラグがあるため、この修正ループはある程度の時間を要しますが、それでも人間が行うよりずっと速く修正を行うことができる。

tip

使用しているモデルはclaude

Clineとは

ユーザーの要望に対し、Clineが適切な処理を加えてClaudeChatGPTといったAIアシスタントと対話することで以下のことを自動で行う。

  • コード生成・編集: プロジェクト上のフォルダー構造を読み取り、適切なファイルを生成・編集
  • バグ修正: コードの不具合を自動的に見つけて修正
  • ターミナル操作: ターミナルを使用したコマンドの実行
  • ブラウザ操作: Webアプリの動作確認などのために、ブラウザを自動で操作し、UIの確認やエラーのチェック

実行フロー

Image from Gyazo

tip

Clineが現時点で他のツールより画期的と言われる所以は、ClineとAIアシスタントがなるべく人間を介さず、自動的に実行→修正のループを行うところ この実行フローから分かる通り、コードの修正といったユーザーの要望を満たすための「思考」をまかなっているのがChatGPTClaudeといったAIアシスタント。
Clineはユーザーの代わりにコンテキスト情報の追加やツールの使用を行ったり、適切な指示をAIアシスタントから引き出せるようにプロンプトを追加したりなどの処理を行っている。

Plan Mode

Clineに実装を任せても意図通りの成果物が出来ず、大量の手戻りが発生しがち。
そこで重要になってくるのが「Plan Mode」という動作モード。

Cline は「Plan Mode」と「Act Mode」という二つの動作モードに分かれていて、「Plan Mode」は実行前の計画を行うモードになる。

tip

効率化のために

このような対話を効率化するために、事前にコンテキストを与えておくのが.clinerulesファイルや Memory Bank

  • .clinerules
    • プロジェクトのルールや方針を定義するファイル
    • .clinerules
  • Memory Bank

Memory Bank

Memory Bank リファレンス

Cline Memory Bankは、AIコーディングアシスタントにおいてプロジェクトの文脈(コンテキスト)を長期に維持するための仕組み。
Clineは通常、セッションごとに内部記憶がリセットされる。
その弱点を補うためにMemory Bankではプロジェクトに関する情報をファイル群として保存し、次の対話時にそれらを読み込むことで前回までの内容を正確に把握する。

tip

Memory Bankの最大の特徴はセッションを超えてコンテキストを保持できる点。
Clineは新たなタスクを始める際に、必ずMemory Bank内のファイルをすべて読み込み、過去の会話や作業内容を把握した上で作業を再開する。
これにより「前回どこまでやったか」を毎回説明し直す必要がなく、長期的なプロジェクトでもスムーズに対話を続行できる。

note

メモリバンクファイルは、プロジェクト内で作成するシンプルなマークダウンファイル。
隠しファイルや特殊ファイルではなくリポジトリに保存され、あなたとClineの両方がアクセスできる通常のドキュメント。

.clineignore

.clineignore リファレンス

チェックポイント

チェックポイントはタスクの各ステップの後に、ワークスペースのスナップショットを自動的に保存する。
この機能により変更を追跡し、必要に応じてロールバックし自信を持ってコードをテストすることができる。

tip

例えば、ある機能の開発中にClineが複数のファイルに変更を加えた場合、それぞれの変更ごとにチェックポイントが作成される。
つまり各変更を確認し、必要に応じてメインのGitリポジトリに影響を与えることなく任意の時点までロールバックできるということ。

Cline rules

Clineルールを使用すると、Clineにシステムレベルのガイダンスを提供できます。これは、プロジェクト全体、あるいはすべての会話全体にわたって、コンテキストや設定を永続的に取り込む手段と考えてください。

Resource