README
¶
vibe-local-go
Go言語で実装されたローカルAIコーディングエージェント
バージョン: 1.1.0
概要
vibe-local-goはGo言語で書かれた、オフラインで動作するAIコーディングエージェントです。ローカルLLM(Ollama)と直接通信し、コード生成、ファイル操作、コマンド実行などのタスクを支援します。
特徴
-
マルチプロバイダー対応: Ollama(ローカル)+ 14個のクラウドLLM(OpenAI, Anthropic, Google, DeepSeek, Mistral, Groq, OpenRouter等)
-
ワンバイナリ: Goコンパイルによる静的バイナリ、依存関係ゼロ
-
高速起動: Go言語による最適化、~50msで起動
-
10の内蔵ツール: Bash, Read, Write, Edit, Glob, Grep, WebFetch, WebSearch, NotebookEdit, ParallelAgents
-
プロバイダー管理: 登録済みプロバイダーの切替・追加・編集・削除
-
モデル自動管理: セットアップ時にモデル存在チェック+自動ダウンロード提案(プログレスバー付き)
-
セッション管理: JSONLによる永続化、セッション復旧機能
-
自動モデル選択: RAM容量に応じて最適なモデルを推奨
-
柔軟な認証: APIキー + 環境変数対応、再設定フロー搭載
-
セキュリティ: パーミッション管理、パス検証、環境変数サニタイズ
インストール
前提条件
-
ローカルLLM (以下いずれか):
-
Ollama: Ollama公式サイト からインストール
-
LM Studio: LM Studio (デフォルト: http://localhost:1234/v1)
-
Llama.app: Llama / Llama-server (デフォルト: http://localhost:8080/v1)
-
-
または
-
クラウドLLMのAPIキー:
- OpenAI, Anthropic, Google Gemini, DeepSeek, Mistral, Groq, OpenRouter, Z.AI, など計14社対応
方法 1: ワンコマンドインストール(推奨)
curl -fsSL https://raw.githubusercontent.com/zephel01/vibe-local-go/main/scripts/install-go.sh | bash
特徴:
- 自動OS/CPU検出
- GitHub Release から最新バイナリをダウンロード
- PATH 自動設定
- 所要時間: 5-10秒
方法 2: バイナリの手動ダウンロード
GitHub Releases から対応プラットフォーム用バイナリをダウンロード:
# ダウンロード(例: macOS Apple Silicon)
curl -fsSL https://github.com/zephel01/vibe-local-go/releases/download/v1.1.0/vibe-darwin-arm64.tar.gz -o vibe.tar.gz
# 解凍
tar xzf vibe.tar.gz
# PATH に追加
mv vibe ~/.local/bin/
chmod +x ~/.local/bin/vibe
対応プラットフォーム:
| OS | Architecture | ファイル |
|---|---|---|
| macOS | Apple Silicon (arm64) | vibe-darwin-arm64.tar.gz |
| macOS | Intel (amd64) | vibe-darwin-amd64.tar.gz |
| Linux | x86_64 (amd64) | vibe-linux-amd64.tar.gz |
| Linux | ARM64 (aarch64) | vibe-linux-arm64.tar.gz |
| Linux | RISC-V (riscv64) | vibe-linux-riscv64.tar.gz |
| Windows | x86_64 (amd64) | vibe-windows-amd64.zip |
方法 3: ソースからビルド
要件: Go 1.26+
git clone https://github.com/zephel01/vibe-local-go.git
cd vibe-local-go
# ローカル環境用ビルド
make build
./dist/vibe --version
# または全プラットフォーム用ビルド
make build-all
make release
# インストール
make install
Makefile コマンド:
make build # ローカル環境用ビルド
make build-all # 6プラットフォーム対応
make release # tar.gz/zip 圧縮
make test # ユニットテスト実行
make lint # コード検査
make clean # ビルド成果物削除
make help # ヘルプ表示
クイックスタート
オプション A: ローカルLLM (Ollama)
1. Ollamaを起動
# macOS
open -a Ollama
# Linux / Windows
ollama serve
2. モデルをダウンロード
# 推奨モデル(16GB RAMの場合)
ollama pull qwen3:8b
# 32GB以上RAMの場合
ollama pull qwen3-coder:30b
3. vibeを起動
vibe
オプション B: クラウドLLM (OpenAI, Google Gemini, など)
1. APIキーを環境変数に設定
# OpenAI
export OPENAI_API_KEY="sk-..."
# Google Gemini
export GEMINI_API_KEY="AIzaSy..."
# Z.AI / Zhipu
export ZAI_API_KEY="your-key"
# その他対応プロバイダー
# ANTHROPIC_API_KEY, DEEPSEEK_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY等
2. vibeを起動
vibe
自動検出されるか、プロバイダー管理メニューで選択してください。
オプション C: 複数プロバイダーを登録
vibe
起動後、対話モードで以下を実行:
/provider
メニューから「A. プロバイダーを追加」を選択してクラウドLLMを追加できます。
対話モードで使う
> PythonでHello Worldを書いて
使い方
対話モード
デフォルトの対話モードでは、AIとチャットしながらコードを生成・実行できます。
vibe
ワンショットモード
1回だけ質問して終了するモードです。
vibe -p "Pythonでじゃんけんゲームを作って"
セッション復旧
前回のセッションを再開できます。
# 直近のセッションを復旧
vibe --resume last
# 特定のセッションを復旧
vibe --resume sess_1234567890
# セッション一覧を表示
vibe --list-sessions
コマンドラインオプション
| オプション | 短縮 | 説明 |
|---|---|---|
--provider <name> |
LLMプロバイダー名(ollama, openai, anthropic, google, zai, zhipu 等) | |
--api-key <key> |
クラウドプロバイダーのAPIキー | |
--model <name> |
-m |
使用するLLMモデル名 |
--host <url> |
ローカルプロバイダーのAPIエンドポイントURL(デフォルト: http://localhost:11434) | |
-p <prompt> |
ワンショットモード(プロンプトを指定して実行) | |
-y |
全ツール実行を自動許可(上級者向け、自己責任) | |
--resume <id> |
セッションを復旧(last またはセッションID) |
|
--session-id <id> |
特定のセッションIDを指定して開始 | |
--list-sessions |
保存済みセッション一覧を表示 | |
--max-tokens <n> |
最大出力トークン数(デフォルト: 8192) | |
--temperature <f> |
サンプリング温度(デフォルト: 0.7) | |
--context-window <n> |
コンテキストウィンドウサイズ(デフォルト: 32768) | |
--version |
バージョンを表示 |
例
# ローカルLLM(Ollama)
vibe --provider ollama --model qwen3:8b
# クラウドLLM(OpenAI)
vibe --provider openai --api-key sk-... --model gpt-4.1
# クラウドLLM(Google Gemini)
vibe --provider google --api-key AIzaSy... --model gemini-2.5-flash
# クラウドLLM(Z.AI 国際版)
vibe --provider zai --api-key your-key --model glm-4.7
# ワンショット
vibe -p "現在のディレクトリのファイルを一覧にして"
# 自動許可モード
vibe -y
# 直近セッションを復旧
vibe --resume last
# トークン数を調整
vibe --max-tokens 4096 --temperature 0.5
対話コマンド
対話モード中に使用できるスラッシュコマンド:
| コマンド | 説明 |
|---|---|
/help |
ヘルプを表示 |
/exit, /quit, /q |
終了(セッションは自動保存) |
/clear |
会話履歴をクリア |
/status |
セッション情報(トークン数、モデル、CWD)を表示 |
/save |
現在のセッションを保存 |
/tokens |
詳細なトークン使用量を表示 |
/config |
現在の設定を表示 |
/config save |
現在の設定をconfig.jsonに保存 |
/provider |
プロバイダー管理メニュー(一覧・切替・追加・編集・削除) |
/provider add |
新しいプロバイダーを追加 |
/provider <name> |
指定プロバイダーに切替(例: /provider openai) |
/provider edit |
登録済みプロバイダーを編集(APIキー・モデル等) |
/provider delete |
登録済みプロバイダーを削除 |
/models |
利用可能なモデル一覧を表示(ローカルプロバイダーのみ) |
/sandbox [on|off] |
サンドボックスモードの切替 |
/watch start [pattern] |
ファイル監視を開始(例: *.go, src/**/*.ts) |
/watch stop |
ファイル監視を停止 |
/watch status |
監視状態と検知ファイル数を表示 |
サポートプロバイダー一覧
ローカルLLM
| プロバイダー | デフォルトホスト | 対応モデル形式 |
|---|---|---|
| Ollama | http://localhost:11434 | model:size (e.g., qwen3:8b) |
| LM Studio | http://localhost:1234/v1 | OpenAI互換モデル |
| Llama.app / Llama-server | http://localhost:8080/v1 | OpenAI互換モデル |
クラウドLLM(APIキー必須)
| プロバイダー | 環境変数 | 主要モデル |
|---|---|---|
| OpenRouter | OPENROUTER_API_KEY |
gemini-2.5-flash, claude-sonnet-4 |
| OpenAI | OPENAI_API_KEY |
gpt-4.1, gpt-4.1-mini, o3 |
| Anthropic | ANTHROPIC_API_KEY |
claude-sonnet-4, claude-opus-4 |
| Google Gemini | GEMINI_API_KEY |
gemini-2.5-flash, gemini-2.5-pro |
| DeepSeek | DEEPSEEK_API_KEY |
deepseek-chat, deepseek-reasoner |
| Mistral | MISTRAL_API_KEY |
mistral-large-latest, codestral-latest |
| Groq | GROQ_API_KEY |
llama-3.3-70b-versatile |
| Together AI | TOGETHER_API_KEY |
Llama-3.3-70B, Qwen2.5-72B |
| Fireworks AI | FIREWORKS_API_KEY |
llama-v3p3-70b-instruct |
| Perplexity | PERPLEXITY_API_KEY |
sonar-pro (検索特化) |
| Cohere | COHERE_API_KEY |
command-a-03-2025 (RAG特化) |
| Z.AI(国際版) | ZAI_API_KEY |
glm-4.7 (Zhipu AIの国際サービス) |
| Z.AI Coding Plan | ZAI_API_KEY |
glm-4.7 (Coding専用エンドポイント) |
| 智谱AI(中国版) | ZHIPU_API_KEY |
glm-4.7 (Zhipu AI本体) |
| Moonshot(Kimi) | MOONSHOT_API_KEY |
kimi-k2-instruct, kimi-k2.5 |
ローカルLLMの推奨モデル
システムRAM容量に基づいて、以下のモデルが推奨されます:
| RAM容量 | 推奨モデル | 備考 |
|---|---|---|
| 256GB+ | qwen3:72b | 最高品質、処理は遅め |
| 96GB+ | qwen3:32b | 高品質、実用的な速度 |
| 32GB+ | qwen3-coder:30b | 高品質と速度のバランス |
| 16GB+ | qwen3:8b | 十分な品質、高速 |
| 8GB+ | qwen3:4b | 軽量、非常に高速 |
| 4GB+ | qwen3:1.7b | 最小限、瞬時に実行 |
注: --model オプションで任意のモデルを指定できます。利用可能なモデルは /models コマンドまたは ollama search <名前> で検索できます。
内蔵ツール
現在、以下の10のツールが実装されています:
| ツール | 説明 | パーミッション |
|---|---|---|
| bash | シェルコマンド実行(バックグラウンド対応、エラーヒント付き) | 要確認 |
| read_file | ファイル読み込み(テキスト、画像、Jupyter、PDF対応) | 安全 |
| write_file | ファイル書き込み(アトミック) | 要確認 |
| edit_file | ファイル編集(文字列置換、diff生成) | 要確認 |
| glob | ファイルパターン検索(ファイル推定ヒント付き) | 安全 |
| grep | テキストパターン検索(正規表現) | 安全 |
| web_fetch | Webページ取得(HTML→テキスト変換) | 安全 |
| web_search | DuckDuckGo検索 | 安全 |
| notebook_edit | Jupyter Notebookセル編集(replace/insert/delete) | 要確認 |
| parallel_agents | 並列サブエージェント実行(最大4並列) | 安全 |
パーミッションについて
-
安全ツール: 確認なしで実行
-
要確認ツール: 実行前に
y/nで確認
アーキテクチャ
┌──────────────────────────────────────────────┐
│ CLI Entry Point (cmd/vibe/main.go) │
└──────────────────┬─────────────────────────┘
│
┌──────────────┼──────────────┬──────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌────────┐ ┌────────────┐ ┌──────────┐ ┌──────────┐
│ Agent │ │ Config │ │ Security │ │ Session │
└───┬────┘ └──────┬─────┘ └──────────┘ └────┬─────┘
│ │ │
│ ┌──────────────────────────────────┘
│ │
▼ ▼
┌──────────────────────────┐
│ Provider Abstraction │
├──────────────────────────┤
│ ├─ LLMProvider (interface)
│ ├─ CloudProvider (OpenAI-compat)
│ ├─ OllamaProvider
│ ├─ OpenRouterProvider
│ └─ LocalProviders (LM Studio, Llama.app)
└───┬──────────────────────┘
│
├────────────┬────────────┬─────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌──────┐ ┌──────────┐ ┌──────────┐ ┌─────────────┐
│Local │ │ Cloud 14 │ │ Tool │ │ Command │
│ LLMs │ │ Providers│ │(10 tools) │ │ Handler │
└──────┘ └──────────┘ └───────────┘ └─────────────┘
│
┌──────┴──────┐
│ Watcher │
│(File Watch) │
└─────────────┘
ポイント:
-
LLMProvider: すべてのLLMバックエンドの共通インターフェース
-
OpenAICompatProvider: OpenAI形式のAPIを実装するプロバイダーの基盤
-
CloudProvider Factory: APIキー + モデル名からプロバイダーを動的作成
-
LocalProvider Manager: Ollama/LM Studio/Llama.appの複数ローカルプロバイダーに対応
-
Config System: マルチプロバイダーをJSONで永続化
ディレクトリ構造
vibe-local-go/
├── cmd/
│ └── vibe/ # エントリーポイント (main.go)
└── internal/
├── agent/ # エージェントループ、ディスパッチャー
├── config/ # 設定管理、モデル推奨
├── llm/ # LLMクライアント、ストリーミング
├── security/ # パーミッション管理、パス検証
├── session/ # セッション管理、永続化
├── tool/ # 内蔵ツール (10種)
├── ui/ # TUI、コマンドハンドラー
└── watcher/ # ファイル監視、変更通知インジェクター
設定
設定ファイル
~/.config/vibe-local-go/config.json
設定形式(JSON)
{
"PROVIDER": "zai",
"MODEL": "glm-4.7",
"MAX_TOKENS": 8192,
"TEMPERATURE": 0.7,
"CONTEXT_WINDOW": 32768,
"PROVIDERS": {
"ollama": {
"type": "ollama",
"host": "http://localhost:11434",
"model": "qwen3:8b"
},
"zai": {
"type": "zai",
"api_key": "your-key",
"model": "glm-4.7"
},
"openai": {
"type": "openai",
"api_key": "sk-...",
"model": "gpt-4.1"
}
}
}
環境変数(プロバイダーのAPIキー)
| 変数 | 説明 |
|---|---|
OPENROUTER_API_KEY |
OpenRouter APIキー |
OPENAI_API_KEY |
OpenAI APIキー |
ANTHROPIC_API_KEY |
Anthropic APIキー |
GEMINI_API_KEY |
Google Gemini APIキー |
DEEPSEEK_API_KEY |
DeepSeek APIキー |
MISTRAL_API_KEY |
Mistral APIキー |
GROQ_API_KEY |
Groq APIキー |
TOGETHER_API_KEY |
Together AI APIキー |
FIREWORKS_API_KEY |
Fireworks AI APIキー |
PERPLEXITY_API_KEY |
Perplexity APIキー |
COHERE_API_KEY |
Cohere APIキー |
ZAI_API_KEY |
Z.AI / Z.AI Coding Plan APIキー |
ZHIPU_API_KEY |
智谱AI (中国版) APIキー |
MOONSHOT_API_KEY |
Moonshot (Kimi) APIキー |
OLLAMA_HOST |
Ollama APIエンドポイントURL |
VIBE_LOCAL_DEBUG |
1 でデバッグログ有効化 |
セキュリティ
⚠️ 重要
vibe-local-go はAIがコマンドを実行するため、危険な操作のリスクがあります。
安全な使用方法
-
初回は必ず
n(確認モード)を選択- 各ツール実行前に確認が表示されます
- 内容を理解できない場合は
nで拒否
-
危険なキーワードに注意
sudoで始まるコマンド(システム全体への影響)rm -rf/dd/mkfs(破壊的操作)chmod/chown(権限変更)>で設定ファイル上書き
-
重要なフォルダでは使わない
- 新しい空フォルダで練習
-
Ctrl+Cでいつでも停止
# 推奨(安全)
vibe
# 上級者のみ(自己責任)
vibe -y
組み込みセキュリティ
-
パーミッション管理: 安全ツール/要確認ツールの分類
-
パス検証: シンボリックリンク保護、パストラバーサル防止
-
環境変数サニタイズ: トークン/パスワードの除外
-
最大反復制限: 50回で自動停止
-
Graceful Shutdown: Ctrl+C で安全に終了
開発
テスト
# 全テスト実行
go test ./... -v
# 特定パッケージのテスト
go test ./internal/agent -v
ビルド
# ローカルビルド
go build -o vibe-local-go ./cmd/vibe
# クロスコンパイル
GOOS=darwin GOARCH=arm64 go build -o vibe-local-go-darwin-arm64 ./cmd/vibe
GOOS=linux GOARCH=amd64 go build -o vibe-local-go-linux-amd64 ./cmd/vibe
コードスタイル
# フォーマット
gofmt -w .
# 静的解析
go vet ./...
トラブルシューティング
"接続エラー(ローカルLLM)"
症状: 接続エラー: health check failed with status...
対策:
-
Ollamaが起動しているか確認
ollama ps -
Ollamaを起動
# macOS open -a Ollama # Linux / Windows ollama serve -
リトライ/再設定メニュー
- エラー表示後、
1. リトライを選択 2. プロバイダーを再設定でクラウド/ローカルを選んで別のプロバイダーに切替3. 終了で終了
- エラー表示後、
"接続エラー(クラウドLLM)"
症状: 接続エラー: health check failed with status 401
対策:
-
APIキーが正しいか確認
# 環境変数に設定済みか確認 echo $OPENAI_API_KEY -
APIキーを更新
/provider editメニューから編集対象を選択してAPIキーを変更
-
新規プロバイダーを追加
/provider add
"モデルが見つかりません"
症状: モデル 'xxx' が見つかりません
対策:
vibeの起動時に自動でモデル存在チェックが行われ、未ダウンロードのモデルは以下の選択肢が表示されます:
- 利用可能なモデルから選択 — ダウンロード済みモデルの一覧から選ぶ
- 指定したモデルをダウンロード — プログレスバー付きでダウンロード
- クラウドプロバイダーに切替 — クラウドLLMを使用
また、プロバイダー追加・編集時に手動入力したモデル名も自動チェックされ、 未ダウンロードの場合はその場でダウンロードを提案します。
手動でダウンロードする場合:
ollama pull qwen3:8b # モデルをダウンロード
ollama search qwen3 # モデルを検索
/models # 利用可能なモデル一覧
"コマンドが見つかりません"
# バイナリがPATHにあるか確認
which vibe
# インストールスクリプトで再インストール(推奨)
curl -fsSL https://raw.githubusercontent.com/zephel01/vibe-local-go/main/scripts/install-go.sh | bash
# 手動再インストール(macOS Apple Siliconの場合)
curl -fsSL https://github.com/zephel01/vibe-local-go/releases/download/v1.1.0/vibe-darwin-arm64.tar.gz | tar xz
mv vibe ~/.local/bin/
chmod +x ~/.local/bin/vibe
"APIキーが保存されない"
原因: config.jsonが未作成の状態
対策:
# 現在の設定をconfig.jsonに保存
/config save
これで ~/.config/vibe-local-go/config.json に設定が永続化されます。
機能一覧
実装済み
- ✅ マルチプロバイダー対応(ローカル + クラウド14社)
- ✅ プロバイダー管理(追加・切替・編集・削除)
- ✅ 10の内蔵ツール(Bash, Read, Write, Edit, Glob, Grep, WebFetch, WebSearch, NotebookEdit, ParallelAgents)
- ✅ セッション管理と永続化
- ✅ 環境変数ベースのAPIキー設定
- ✅ config.json による設定永続化
- ✅ ローカルモデルの自動検出(Ollama, LM Studio, Llama.app)
- ✅ クラウドプロバイダーの自動検出
- ✅ 接続エラー時のリトライ/再設定フロー(クラウド/ローカル両方対応)
- ✅ マルチホスト対応(Ollama, LM Studio, Llama.app)
- ✅ プロバイダー編集(APIキー・モデル変更)
- ✅ モデル存在チェック+自動ダウンロード提案(セットアップ・編集・起動時)
- ✅ ダウンロード進捗表示(プログレスバー付き ollama pull)
- ✅ Agent Skills(グローバル/プロジェクトスキル管理、
/skillsコマンド) - ✅ MCP Client(Model Context Protocol、外部ツールサーバー連携、
/mcpコマンド) - ✅ Plan/Act モード(
/plan [on|off]、書き込み禁止による安全な計画フェーズ) - ✅ Git Checkpoint(
/checkpoint、git stash ベースの作業復元) - ✅ Auto Test(ファイル変更後の自動テスト実行、
/autotest [on|off]) - ✅ ESC 割り込み(エージェント実行の中断)
- ✅ ステータス行(経過時間・トークン数のリアルタイム表示)
- ✅ クロスプラットフォームビルド(Makefile + GitHub Actions、6プラットフォーム対応)
- ✅ ワンコマンドインストール(
install-go.sh) - ✅ Jupyter Notebook 編集ツール(NotebookEdit: replace/insert/delete)
- ✅ PDF テキスト抽出(file_read ツールで .pdf 自動対応、Pure Go実装)
- ✅ ファイル監視(
/watchコマンド、ポーリングベース、外部依存なし) - ✅ 並列サブエージェント(最大4並列、書き込み競合検知、進捗表示)
開発中
- 🔄 Anthropic Messages API 専用実装(native messages API 変換)
- 🔄 ProviderChain フォールバック(プロバイダー障害時の自動切り替え)
- 🔄 ゼロコンフィグ自動初期化(スマートプロバイダー選択フロー)
未実装
- ❌ タスク管理ツール(TodoWrite / TodoRead)
- ❌ ユーザー質問ツール(AskUserQuestion)
- ❌ 多言語対応 UI(ja / en / zh の自動切り替え)
- ❌ コスト・レート制限(クラウドAPI使用量管理)
- ❌ セットアップガイド(プロバイダー未検出時の案内)
依存関係
-
Go 1.26+: ビルドに必要
-
LLM プロバイダー (以下いずれか):
- Ollama / LM Studio / Llama-server(ローカル)
- クラウドLLM APIキー(OpenAI, Anthropic, Google など)
-
外部ライブラリ: なし(Go標準ライブラリのみ)
ライセンス
MIT License
貢献
問題報告やプルリクエストを歓迎します。
関連プロジェクト
-
Ollama - ローカルLLMランタイム
-
vibe-local (Python版) - 元のPython実装