mergegate/MIYABI.md
2026-04-10 14:50:57 +09:00

290 lines
5.4 KiB
Markdown

# Miyabi CLI - 開発者ガイド
Rust製のClaude API統合ターミナルUIアシスタント
## 概要
Miyabi CLIはAnthropic Claude APIと連携した高機能ターミナルUIアシスタントです。
## 主要機能
### TUI (Terminal User Interface)
- リアルタイムMarkdownレンダリング
- シンタックスハイライト
- Vimキーバインド対応
- コマンドパレット (Ctrl+P)
- セッション管理
### セッション管理
- 自動保存 (設定可能)
- JSON/Markdownエクスポート
- セッション再開機能
### 設定システム
- TOML設定ファイル (~/.miyabi/config.toml)
- 環境変数オーバーライド
- CLIオプション
### 組み込みツール
- Bash実行
- ファイル読み書き
- Glob/Grep検索
- コード編集
## クイックスタート
```bash
# ビルド
cargo build --release
# 起動
./target/release/miyabi
```
## 使い方
### 基本コマンド
```bash
# TUI起動
miyabi
# バージョン確認
miyabi version
# ヘルプ
miyabi --help
# ステータス確認
miyabi status
```
### CLIオプション
```bash
# モデル指定
miyabi --model claude-sonnet-4-5-20250929
# トークン数指定
miyabi --max-tokens 16384
# 設定ファイル指定
miyabi --config path/to/config.toml
# セッション再開
miyabi --session <session-id>
# 拡張思考モード
miyabi --thinking
```
### セッション操作
```bash
# 一覧表示
miyabi sessions
# Markdownエクスポート
miyabi sessions -m <id>
# JSONエクスポート
miyabi sessions -e <id>
# 削除
miyabi sessions -d <id>
```
### Agentモード
```bash
# 基本実行
miyabi agent "Pythonでhello worldを作成"
# オプション付き
miyabi agent "リファクタリング" \
--max-iterations 20 \
--auto-approve \
--system "あなたはRustエキスパートです"
```
## 設定
### 設定ファイル
`~/.miyabi/config.toml`:
```toml
[api]
api_key = "sk-ant-..."
model = "claude-sonnet-4-5-20250929"
max_tokens = 8192
timeout_secs = 120
max_retries = 3
thinking = false
system_prompt = "You are a helpful assistant"
[ui]
theme = "tokyo-night"
vim_mode = false
show_sidebar = false
show_status_bar = true
show_breadcrumb = true
show_line_numbers = true
[session]
auto_save = true
auto_save_interval = 30
max_sessions = 100
[tools]
enable_bash = true
enable_file_tools = true
enable_search_tools = true
auto_approve_low_risk = false
bash_timeout = 120
```
### 環境変数
```bash
export ANTHROPIC_API_KEY="your-key"
export MIYABI_MODEL="claude-sonnet-4-5-20250929"
export MIYABI_MAX_TOKENS="8192"
export MIYABI_THINKING="true"
```
## TUIキーバインド
| キー | 動作 |
|------|------|
| Enter | メッセージ送信 |
| Ctrl+P | コマンドパレット |
| F1 | ヘルプ |
| Esc | キャンセル/閉じる |
| Ctrl+C | 終了 |
| j/k | スクロール |
| Page Up/Down | ページスクロール |
| Tab | フォーカス切り替え |
## Core Library機能
### プロジェクトルール (.miyabirules)
プロジェクトルートに`.miyabirules`ファイルを配置:
```yaml
version: 1
rules:
- name: "no-unwrap"
pattern: ".unwrap()"
suggestion: "?演算子を使用してください"
file_extensions: ["rs"]
severity: "warning"
agent_preferences:
codegen:
style: "functional"
error_handling: "result"
```
### フィーチャーフラグ
```rust
use miyabi_core::FeatureFlagManager;
let flags = FeatureFlagManager::new();
flags.set_flag("new_feature", true);
if flags.is_enabled("new_feature") {
// 新機能を使用
}
```
### プラグインシステム
カスタムプラグインで機能拡張:
```rust
use miyabi_core::{Plugin, PluginManager, PluginMetadata};
struct MyPlugin;
impl Plugin for MyPlugin {
fn metadata(&self) -> PluginMetadata {
PluginMetadata {
name: "my-plugin".to_string(),
version: "1.0.0".to_string(),
description: Some("カスタムプラグイン".to_string()),
author: None,
}
}
// ...
}
let manager = PluginManager::new();
manager.register(Box::new(MyPlugin))?;
```
### キャッシュシステム
LLMレスポンスのキャッシュ:
```rust
use miyabi_core::{create_llm_cache, LLMCacheKey};
let cache = create_llm_cache(); // 1時間TTL
let key = LLMCacheKey::new("prompt", "model", Some(0.7));
cache.insert(key.clone(), "response".to_string()).await;
```
### Circuit Breaker
障害時の自動遮断:
```rust
use miyabi_core::CircuitBreaker;
let breaker = CircuitBreaker::default();
let result = breaker.call(|| {
Box::pin(async { api_call().await })
}).await;
```
## プロジェクト構造
```
miyabi-cli-standalone/
├── crates/
│ ├── miyabi-cli/ # CLIエントリーポイント
│ ├── miyabi-core/ # コアライブラリ
│ └── miyabi-tui/ # TUI実装
├── .miyabi/ # ローカル設定
│ ├── config.toml # 設定ファイル
│ ├── sessions/ # 保存セッション
│ ├── commands/ # カスタムコマンド
│ └── templates/ # テンプレート
├── Cargo.toml
├── README.md
└── MIYABI.md # このファイル
```
## 開発
```bash
# ビルド
cargo build --release
# テスト
cargo test --all
# Lint
cargo clippy --all-targets -- -D warnings
cargo fmt --all --check
# 実行
cargo run -p mergegate-cli --bin mergegate
```
## ライセンス
MIT License