AI エージェントのセットアップ
[TOC]
コンテキスト
データチームには AI 支援開発の標準的なアプローチがありません。このガイドはそのギャップを埋めます。これは複数のチームメイトの間ですでにうまく機能してきた内容に基づいており、ゼロから自分で考え出すのではなく、全員がしっかりとした出発点を持てるようにします。
このガイドは以下のセットアップを扱います。
- OpenCode — ターミナルベースの AI コーディングエージェント
- Snowflake/dbt MCP サーバー(任意ですが、強く推奨します)
- MacWhisper — 音声ベースのプロンプト入力(任意)
OpenCode のセットアップ
より包括的なガイドは内部ハンドブックにあります。以下の手順は、データチームに特化した簡略版です。
ステップ 1: OpenCode のインストール
curl -fsSL https://opencode.ai/install | bash
ステップ 2: インストールの確認
OpenCode が PATH で利用可能であることを確認します。
which opencode
which opencode が何も返さない場合、次を実行して OpenCode を PATH に追加します。
echo 'export PATH=~/.opencode/bin:$PATH' >> ~/.zshrc && source ~/.zshrc
次に、インストールを確認します。
opencode --version
インストールされたバージョン番号が表示されるはずです。
ステップ 3: analytics リポジトリから OpenCode を起動
jump analytics
opencode
ステップ 4: GitLab Duo を AI プロバイダーとして設定
GitLab Duo は OAuth を使用します。作成や管理が必要なトークンはありません。
- OpenCode 内で
/connectを実行し、GitLab Duo を選択します - OpenCode が OAuth フローを完了するためにブラウザを開きます
@gitlab.comアカウントでサインインし、アプリを承認します- 自動的に OpenCode にリダイレクトされます
ステップ 4.5: 接続のテスト
接続したら、hi と入力して OpenCode が応答することを確認してテストします。
ステップ 5: Golden Config の適用
OpenCode Golden Path の設定を適用します。
注:
opencode.jsonではなく~/.config/opencode/opencode.jsoncを使用してください。.jsonc拡張子はコメントを許可するため、設定に注釈を付けるのに便利です。
ステップ 6: plan をデフォルトエージェントに設定
~/.config/opencode/config.json(これはステップ 5 の opencode.jsonc Golden Config とは別のファイルです)を開き、default_agent を追加します。
{
"$schema": "https://opencode.ai/config.json",
...
"default_agent": "plan"
}
これにより、デフォルトでより安全で慎重なモードに留まります。実行する準備ができたら、明示的に Build に切り替えます。
ステップ 7: Agent Usage Guide の確認
OpenCode の使用を開始する前に、Agent Usage Guide を確認して、以下を理解してください。
- エージェントと MCP の仕組み
- 設定のベストプラクティス(グローバル対プロジェクトレベル)
- Plan モードと Build モードの使い分け
- プロンプト入力のベストプラクティスとコンテキスト管理
- 利用可能なスキルとエージェント
ビデオリソース
GitLab Unfiltered アカウントの使用が必要です。
- OpenCode Setup Tutorial(3 分 30 秒)
- OpenCode Demo(5 分 30 秒)
MCP サーバーのセットアップ
Snowflake MCP サーバー(任意ですが強く推奨)
OpenCode を Snowflake MCP に接続すると、LLM エージェントが OpenCode セッション中に Snowflake を直接クエリできるようになります。
セットアップするには、setup_mcp_analytics.sh スクリプトを次のコマンドで実行します。
jump analytics
git checkout master && git pull && ./admin/setup_mcp_analytics.sh
スクリプトは GitLab のユーザー名と analytics リポジトリのパスの入力を求めます。
重要: スクリプトはコンピューターのログインパスワードの入力を求め、キーチェーンアクセスを要求します。パスワードを入力し、プロンプトが表示されたら 「常に許可」 をクリックしてください。
接続を確認します。
OpenCode を起動し(jump analytics && opencode)、hi と入力して、インターフェースの右側を確認します。Snowflake MCP の名前が「接続済み」を示す緑色のドットとともに表示されているはずです。
作成される内容の詳細
スクリプトは 2 つのファイルを生成します。
~/.config/mcp/snowflake-mcp/snowflake_mcp_config.yml
どの Snowflake ツールグループを有効にするか、どの SQL ステートメントタイプを許可するかを制御します。デフォルトでは、オブジェクトの検査とクエリの実行を有効にし、破壊的な操作(Drop、Delete)を無効にします。
~/.config/mcp/snowflake-mcp/snowflake_mcp.env
SNOWFLAKE_USER=<your GitLab email>
SNOWFLAKE_ACCOUNT=gitlab
SNOWFLAKE_ROLE=<the portion of your email before the @>
dbt MCP サーバー
上記の setup_snowflake_mcp.sh を実行した場合、これはすでに設定されています。スクリプトは次の環境変数を ~/.zshrc に追加します。
# Analytics MCP Environment Variables
export ANALYTICS_DIR="~/repos/analytics/"
export DBT_PROJECT_DIR="$ANALYTICS_DIR/transform/snowflake-dbt"
export DBT_PATH="$DBT_PROJECT_DIR/.venv/bin/dbt"
唯一の他の前提条件は、dbt virtualenv がセットアップされていることです。確認またはセットアップするには:
jump analytics
make run-dbt
ls .venv/bin/dbt # Should show the dbt executable
ls .venv/bin/dbt がファイルパスを返せば、準備完了です。
接続を確認します。
OpenCode を起動し(jump analytics && opencode)、hi と入力して、インターフェースの右側を確認します。dbt MCP の名前が「接続済み」を示す緑色のドットとともに表示されているはずです。
音声プロンプト入力のための MacWhisper(任意)
詳細なプロンプトを打ち込むのは遅いものです。MacWhisper は macOS の音声テキスト変換アプリで、コンテキストを説明したり問題を声に出して考えたりするのをはるかに速くします。特に、入力するより考える時間の方が短くなるような長いプロンプトに有効です。
組み込みの macOS Dictation アプリよりも目に見えて正確で、クラウドベースの文字起こしとは異なり完全にデバイス上で動作するため、データがマシンの外に出ることはありません。
スキルのセットアップ
スキルは、エージェントが自動的に呼び出せる再利用可能なワークフローと規約を提供します。利用可能なすべてのデータチームのスキルを使用するには:
- 上記の OpenCode セットアップ手順を完了します
- 上記の MCP セットアップ手順(Snowflake/dbt)を完了します
- セットアップ手順に従って、
data-team-agentic-skillsリポジトリをクローンしてシンボリックリンクします
OpenCode プラグイン
OpenCode Notify
OpenCode Notifierは、OpenCode が何らかの入力を求めたときに macOS のネイティブシステム通知を送信するプラグインです。
インストール手順
opencode-notifierプラグインを~/.config/opencode/opencode.jsoncに追加します。次のようになります。{ "$schema": "https://opencode.ai/config.json", "share": "disabled", "autoupdate": true, "plugin": ["@mohak34/opencode-notifier@latest"],任意(ただし推奨): デフォルトでは、このプラグインはすべてのイベントを通知するため、すぐに煩わしくなります。通知をトリガーするイベントをカスタマイズするには、
~/.config/opencode/opencode-notifier.jsonファイルを作成し、次の設定を貼り付けます。
opencode-notifier.json の設定
{
"sound": true,
"notification": true,
"bell": false,
"timeout": 5,
"showProjectName": true,
"showFullPath": false,
"showSessionTitle": false,
"showIcon": true,
"customIconPath": null,
"suppressWhenFocused": true,
"enableOnDesktop": false,
"notificationSystem": "osascript",
"suppressGhosttySound": false,
"linux": {
"grouping": false
},
"minDuration": 0,
"command": {
"enabled": false,
"path": "/path/to/command",
"args": [
"--event",
"{event}",
"--message",
"{message}"
],
"minDuration": 0
},
"events": {
"permission": {
"sound": true,
"notification": true,
"command": true,
"bell": false
},
"complete": {
"sound": false,
"notification": false,
"command": true,
"bell": false
},
"subagent_complete": {
"sound": false,
"notification": false,
"command": true,
"bell": false
},
"error": {
"sound": false,
"notification": true,
"command": true,
"bell": false
},
"question": {
"sound": true,
"notification": true,
"command": true,
"bell": false
},
"user_cancelled": {
"sound": false,
"notification": false,
"command": true,
"bell": false
},
"plan_exit": {
"sound": false,
"notification": false,
"command": true,
"bell": false
},
"session_started": {
"sound": false,
"notification": false,
"command": true,
"bell": false
},
"user_message": {
"sound": false,
"notification": false,
"command": true,
"bell": false
},
"client_connected": {
"sound": false,
"notification": false,
"command": true,
"bell": false
}
},
"messages": {
"permission": "Session needs permission: {sessionTitle}",
"complete": "Session has finished: {sessionTitle}",
"subagent_complete": "Subagent task completed: {sessionTitle}",
"error": "Session encountered an error: {sessionTitle}",
"question": "Session has a question: {sessionTitle}",
"user_cancelled": "Session was cancelled by user: {sessionTitle}",
"plan_exit": "Plan ready for review: {sessionTitle}",
"session_started": "Session started: {sessionTitle}",
"user_message": "User sent a message: {sessionTitle}",
"client_connected": "OpenCode connected"
},
"sounds": {
"permission": null,
"complete": null,
"subagent_complete": null,
"error": null,
"question": null,
"user_cancelled": null,
"plan_exit": null,
"session_started": null,
"user_message": null,
"client_connected": null
},
"volumes": {
"permission": 0.5,
"complete": 1,
"subagent_complete": 1,
"error": 1,
"question": 0.5,
"user_cancelled": 1,
"plan_exit": 1,
"session_started": 1,
"user_message": 1,
"client_connected": 1
}
}
opencode-notifierプラグインを読み込むため、OpenCode を再起動します。- 検証: 権限プロンプトをトリガーします(例: OpenCode に
rm ~/Downloads/some-file.csvの実行を依頼します)。音が鳴り、画面右上に通知バナーが表示されるはずです。タスク完了時には通知されないはずです。
c955a93f)